
Egor
23.06.2017
07:25:27
/stat@combot

Combot
23.06.2017
07:25:27
combot.org/chat/-1001080295593

Aleksandr
23.06.2017
09:24:59
А есть какой-то другой, более быстрый метод импорта данных, помимо того что описан в tutorial?
xz -v -c -d < ontime.csv.xz | clickhouse-client --query="INSERT INTO ontime FORMAT CSV"

Andrey
23.06.2017
09:35:14

Google

Aleksandr
23.06.2017
09:35:50
только описания нет https://clickhouse.yandex/docs/en/formats/native.html )
детального

Andrey
23.06.2017
09:36:31
ну для его использования надо будет ней загружатор писать. На сколько я знаю есть драйверы под go и c++

Aleksandr
23.06.2017
09:38:01
у нас задача - выгрузить данные из hive, и заимпортить их в кликхаус, было бы круто если бы был загружатор для parquet

Andrey
23.06.2017
09:39:31
не, коробочного нет. Есть кстати драйвер для Spark. https://github.com/DmitryBe/clickhouse-spark-connector

Aleksandr
23.06.2017
09:41:02
посмотрим сейчас
спасибо!

Roman
23.06.2017
10:15:37
Всем привет! Добавил графана-дашборд для отображения информации из таблицы query_log в КХ https://grafana.com/dashboards/2515

Александр
23.06.2017
10:16:09
Полезная штука! Спасибо!

Bulat
23.06.2017
10:32:28
а можно через http интерфейс указать дефолтный формат для вывода данных, вместо того чтобы писать его в каждом запросе ?

Andrey
23.06.2017
10:40:25
Пробуйте аргументом в гет запросе

Nikita
23.06.2017
10:40:44
ага, default_format называется

Bulat
23.06.2017
10:41:38
спасибо

Oleg
23.06.2017
11:15:40
Добрый день! Может кто знает способ получить в выборке из news элементы которых нет в news. Т.е. left join значений в запросе на таблицу.
Пытался как-то так, не выходит..
SELECT arrayJoin([300, 325]) AS newsId ALL LEFT JOIN (SELECT newsId FROM news WHERE date='2017-06-22' GROUP BY newsId) USING newsId

Google

Vladimir
23.06.2017
11:27:45

Oleg
23.06.2017
11:30:57
Вот так заработало. Выглядит так себе. Может есть вариант попроще..
SELECT newsId, views FROM
(SELECT arrayJoin([toUInt32(300), toUInt32(325), toUInt32(1021170)]) as newsId)
ALL LEFT JOIN (SELECT newsId, sum(views) views FROM news WHERE date='2017-06-22' GROUP BY newsId) USING newsId;

Andrey
23.06.2017
11:56:52
Ребят, а можно ли искать вхождение нескольких элементов в массиве по порядку?
например есть массивы из 3 чисел, нужно найти все в которых входит массив [1,2]

Александр
23.06.2017
11:58:31
Блин, после кх не могу состряпать запрос в mysql без подзапросов и пр фигни что бы он быстро работал ))))

Andrey
23.06.2017
11:58:56

Александр
23.06.2017
11:59:18
А порядок прям обязателен?
Можно попробовать сделать arrayMap какой нибудь и потом сравнить массивы

Andrey
23.06.2017
12:04:23
да, вот к примеру есть массивы:
1) [1,2,3]
2) [5,6,2]
3) [5,1,2]
4) [3,2,1]
нужно найти все в которых есть [1,2], в результате хоче получить варианты с номерами 1 и 3.

Almaz
23.06.2017
12:04:50
не сюда )

Andrey
23.06.2017
12:05:26
не сюда )
в telegram есть delete, это же не clickhouse)

Александр
23.06.2017
12:05:28
да, вот к примеру есть массивы:
1) [1,2,3]
2) [5,6,2]
3) [5,1,2]
4) [3,2,1]
нужно найти все в которых есть [1,2], в результате хоче получить варианты с номерами 1 и 3.
Самому интересно. А массив который искать надо приходит извне?

Andrey
23.06.2017
12:05:51

Almaz
23.06.2017
12:06:09

Александр
23.06.2017
12:15:02
CREATE TABLE test
(
col String,
haystack Array(UInt16)
) ENGINE = Memory
insert into test (col, haystack) VALUES ('row 1', array(1,2,3)), ('row 2', array(5,6,2)), ('row 3', array(5,1,2)), ('row 4', array(3,2,1))
SELECT
col,
[toUInt16(1), toUInt16(2)] = arrayMap(x -> toUInt16(x), arrayFilter(x -> has([1, 2], x), haystack)) AS result
FROM test
WHERE result = 1
┌─col───┬─result─┐
│ row 1 │ 1 │
│ row 3 │ 1 │
└───────┴────────┘
Впринципе массив можно как извне (захардкодить) в запросе, так и из колонки брать

Andrey
23.06.2017
12:16:58
тюююю, это же прекрасно

Google

Александр
23.06.2017
12:17:22
Только там с типами значений внутри массива надо по хорошему поиграться

Andrey
23.06.2017
12:18:54
осталось понять на сколько это эффективно работает

Александр
23.06.2017
12:19:12
Ну тут только тестировать

papa
23.06.2017
12:19:17

Александр
23.06.2017
12:19:39
1,3,2 ?
Должно получиться только 1,3
Аааа прошу прощения _ я думал вы про результат

papa
23.06.2017
12:20:21
насколько я понимаю нужны элементы подряд, а не подпоследовательность

Александр
23.06.2017
12:20:36
Добавил строчку
Не, там надо проверить наличие элементов в последовательности
Неважно что между ними еще
с 1,3,2 тоже работает

Andrey
23.06.2017
12:21:17

papa
23.06.2017
12:21:32
position(arrayStringConcat(arrayMap(v->toString(v),x),'_'), '1_2') > 0

Andrey
23.06.2017
12:21:46

papa
23.06.2017
12:21:47
не то чтобы аналог, но в качестве шутки пойдет.

Александр
23.06.2017
12:22:00

Andrey
23.06.2017
12:22:35
просто like имхо не оптимально вообще

papa
23.06.2017
12:24:07
подстрка это хотя бы линейно, а лямбды с поиском нужных индексов сразу квадрат даст. но вообще конечно для таких вещей, если они нужны, нужны подходящие функции.

Александр
23.06.2017
12:29:53
Можно попробовать массив в строку загнать и там через match, но это регулярка...

Google

papa
23.06.2017
12:33:12
можно кнута-морриса-пратта реализовать на массивах чего угодно вместо массивов символов и делать positionArray

Andrey
23.06.2017
12:53:14

Roman
23.06.2017
14:06:07
Добрый день.
Не нашел функцию, которая бы могла выдернуть из строки вида GET-параметров URL'a какой-то конкретный параметр.
Исходя из специфики кликхауса может быть вполне полезно. Нет ли такого?
типа строки param1=v1¶m2=v2&...

Александр
23.06.2017
14:09:39
https://clickhouse.yandex/docs/ru/functions/url_functions.html#extracturlparameternames-url
Не подошла?
А потом сделать concat на массив
Если надо
Вру, не ту скинул

Roman
23.06.2017
14:10:25
extractURLParameter(URL, name)
оо

Александр
23.06.2017
14:10:31
https://clickhouse.yandex/docs/ru/functions/url_functions.html#extracturlparameters-url

Roman
23.06.2017
14:10:31
что-то я мимо просмотрел
Спасибо!

Igor
23.06.2017
14:12:59
Добрый вечер, CH стал выдавать забавные ошибки:
select count() from key_events where app_type = 0
SELECT count()
FROM key_events
WHERE app_type = 0
Received exception from server:
Code: 10. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Not found column image_ids in block. There are only columns: app_type.
0 rows in set. Elapsed: 0.055 sec.
app_type : UInt8
image_ids : есть в другой таблице, но не в этой
Одним словом ошибка забавная

Александр
23.06.2017
14:14:44
Но у вас как я понял другая ситуация. У вас впринципе нет такой колонки в таблице ))


Igor
23.06.2017
14:16:40
по версии сейчас отпишиусь
по поводу колонки, колонка такая есть

Google

Igor
23.06.2017
14:17:41
select app_type from page_visit limit 1 - работает

Александр
23.06.2017
14:17:44
я имею ввиду колонки image_ids нет в таблице key_events

Igor
23.06.2017
14:17:59
да, она есть в другой таблице

Александр
23.06.2017
14:18:58
Просто в запросе select count() from key_events where app_type = 0 колонка не упоминается и почему вообще CH решил, что она где то упоминается в запроса достаточно странно

Igor
23.06.2017
14:19:42
это да, только маленький апейт, таблица page_visit, я опечатался, все остальное остается верным

Александр
23.06.2017
14:20:01
А там изначально такой колонки не было?

Igor
23.06.2017
14:20:02
кстати єто работает:
select app_type from page_visit where app_type=0 limit 1;
нет, эта колонка была и есть только в таблице tag_events

Александр
23.06.2017
14:20:55
Тогда предлагаю завести issue в трекере гита )

Igor
23.06.2017
14:21:25
так и сделаю)
по поводу версии: ClickHouse server version 1.1.54231.
если кому будет интерестно:
select count() from page_visit where app_type = 0 - ошибка
select count() from page_visit where app_type = 1 - выполняется

Maksim
23.06.2017
17:07:32
Добрый вечер. Может кто нибудь пояснит принцип работы materialized view? (и подойдет ли это мне, и если нет, то что подойдет..?)
Задача: нужно при вставке в сырую таблицу осуществить авто вставку в другую таблицу части данных в запросе.
Пример: вставляем в сырую таблицу запись - user_id 100 | shows 50 | clicks 10
нужно автоматом вставить такую же запись в другом представлении в таблицу например sum merge
user_id 100 | shows 50
где только просмотры пользователя суммируются
Помогите плиз)

Alexander
23.06.2017
17:08:41
у меня materialized view превратили сервера в тыкву, выжрав всю память при вставках :)

Maksim
23.06.2017
17:08:41
Другими словами есть таблица свалка. в которую сваливаем около 45 столбцов данных, нужно разбить эту таблицу на несколько маленький специализированных

Alexander
23.06.2017
17:08:53
но там у меня всякие разные агрегации были

Maksim
23.06.2017
17:09:50
всю память? при каком количество вставок в секунду? и в какое количество таблиц он дублирован данные?
и сколько памяти
))
вопрос целесообразности - либо 10 insert в разном виде либо 1 insert который превратит их в 10