@clickhouse_ru

Страница 392 из 723
Aliaksandr
17.01.2018
13:32:28
Мы выбрали енам и теперь мучаемся

Zo zo
17.01.2018
13:33:11
сейчас мы это все держим в постгресе и есть пачка репортов типа SELECT count(id) AS hits, count(CASE WHEN clicked THEN 1 ELSE null END) AS clicks, ....

это для нас один их частых кейсов - получить хиты и клики по какому-то фильтру/группировке

Aliaksandr
17.01.2018
13:34:28
Гляньте на *If функции в кликхаусе. Он решают вопрос с джойнами в таких запросах

Google
Zo zo
17.01.2018
13:35:59
хм, да - вполне может подойти, спасибо! и за uint8 вместо enum спаисбо, грабли не люблю ?

Aliaksandr
17.01.2018
13:35:59
Типа countIf(Event='Hit') hits, countIf(Event='Click') clicks

Gennady
17.01.2018
14:27:28
Всем привет! а кто-то использовал clickhouse как в консалтинге?

Artem
17.01.2018
14:55:58
Уоллеги записываю в конфиг файл вот эту настройку max_bytes_before_external_group_by сразу за <mark_cache_size> Но оно не применяется :) select * from settings where name='max_bytes_before_external_group_by' SELECT * FROM settings WHERE name = 'max_bytes_before_external_group_by' ┌─name───────────────────────────────┬─value─┬─changed─┐ │ max_bytes_before_external_group_by │ 0 │ 0 │ └────────────────────────────────────┴───────┴─────────┘ Подскажите в какой раздел конфига ее записывать?

Vladimir
17.01.2018
14:57:33
Всем привет, Position 3 is out of bound in Block::safeGetByPosition(), max position = 2, there are columns: toDayOfMonth(time_slot), toMonth(time_slot), toYear(time_slot) стала появлятся такая ошибка при запросе после переезда на другой кластер, о чем может это говорить? Проблема не похоже на ошибку синтаксиса запроса. Кто-нибудь может сталкивался?

Vitaliy
17.01.2018
15:00:19
@garikanet Я могу объяснить появление дублей, если у вас в логе помимо ошибок "There is no column with name D" еще будут "Unexpected error while adding block". У вас есть такие? Да, и т.к. вы вставляете напрямую, Distributed таблица тут ни при чем.

Natalya
17.01.2018
15:01:12
после <max_memory_usage>

<!-- Maximum memory usage for processing single query, in bytes. --> <max_memory_usage>35000000000</max_memory_usage>s <max_bytes_before_external_group_by>30000000000</max_bytes_before_external_group_by> <max_bytes_before_external_sort>25000000000</max_bytes_before_external_sort>

SELECT * FROM system.settings WHERE name = 'max_bytes_before_external_group_by' ┌─name───────────────────────────────┬─value──────┬─changed─┐ │ max_bytes_before_external_group_by │ 3000000000 │ 1 │ └────────────────────────────────────┴────────────┴─────────┘

подскажите, пож, по функционированию arrayConcat. Есть выборка: --Operation--------------------------T-Mas-----¬ ¦ #getAppointmentReceptionsByPatient ¦ [857] ¦ ¦ #getAvailableResourceScheduleInfo ¦ [127] ¦ ¦ #getDoctorsInfo ¦ [50] ¦ ¦ #getReferralsInfo ¦ [72,36] ¦ L------------------------------------+---------- Пытаюсь слить массивы в один: SELECT arrayConcat(Mas) AS Gl_MAS FROM test_mas ┌─Gl_MAS──┐ │ [72,36] │ │ [857] │ │ [50] │ │ [127] │ └─────────┘ Насколько я понимаю, получается многомерный массив, хотя в идеале должен быть один, как в примере: SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res --res-----------¬ ¦ [1,2,3,4,5,6] ¦ L---------------- Как с этим бороться? :)

papa
17.01.2018
15:16:58
SELECT arrayConcat(Mas) AS Gl_MAS FROM test_mas ┌─Gl_MAS──┐ │ [72,36] │вроде одномерный

Google
Natalya
17.01.2018
15:19:43
SELECT arrayConcat(Mas) AS Gl_MAS FROM test_mas ┌─Gl_MAS──┐ │ [72,36] │вроде одномерный
К сожалению многомерный, функции работы с массивами применяются к каждой строке

┌─Gl_MAS──┬─maxArray(arrayConcat(Mas))─┐ │ [72,36] │ 72 │ │ [857] │ 857 │ │ [50] │ 50 │ │ [127] │ 127 │ └─────────┴────────────────────────────┘

Скорее всего как-то так SELECT 1 AS a, arrayConcat(Mas) AS Gl_MAS FROM test_mas GROUP BY a
┌─a─┬─Gl_MAS──┐ │ 1 │ [72,36] │ │ 1 │ [857] │ │ 1 │ [50] │ │ 1 │ [127] │ └───┴─────────┘

Natalya
17.01.2018
15:24:02
По вашу примеру данных, покажите как должен выглядеть результат запроса
в результате я хочу получить один одномерный массив, состоящий из всех элементов, типа [72,36,857,50,127]

SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res --res-----------¬ ¦ [1,2,3,4,5,6] ¦ L----------------

вот такого типа

papa
17.01.2018
15:26:46
groupArrayArray ?

Natalya
17.01.2018
15:29:27
groupArrayArray ?
спасибо большое

SELECT groupArrayArray(Mas) AS Gl_MAS FROM test_mas
Спасибо, так работает. интересно почему arrayConcat так странно себя ведет

Tima
17.01.2018
15:34:00
arrayConcat скорее для конактенации колонок одной записи

papa
17.01.2018
15:34:15
arrayConcat - это не агрегатная функция, его аргументаями являются условно говоря разные столбцы одной строки, а groupArray - это агрегатная функция, ее аргументами являются разные строки одного столбца

когда вы говорите что у вас двумерный массив а при этом у вас столбец с массивами, это не совсем верно, по крайней мере с точки зрения ClickHouse. это разные ситуации и их надо обрабатывать по-разному.

Natalya
17.01.2018
15:41:13
Tima @orantius спасибо за помощь :)

Alexandr
17.01.2018
15:41:53
есть ли способ перелить данные из SummingMergeTree в AggregatingMergeTree? Числовые колонки в sumState, без проблем получается, а вот countState пока никак - не пойму как завернуть.

Dmitry
17.01.2018
15:44:22
Так, ну теперь я не удержусь поделиться вчерашней находкой про SummingMergeTree: https://github.com/yandex/ClickHouse/issues/1776

Google
Artem
17.01.2018
15:48:15
Еще вопрос по конфигу килобайт это 1000 или 1024 байт?

Alexey
17.01.2018
15:53:59
по идее 1000, 1024 это кибибайт, KiB

если я ничего не путаю

strange
17.01.2018
15:59:10
@Shegloff леха бу :)

Alexey
17.01.2018
16:00:08
?

Alexey
17.01.2018
16:05:43
Настройка skip_unavailable_shards = 1

Да, у нас 54327 на проде.

Igor
17.01.2018
16:06:50
Roman
17.01.2018
16:12:23
Алексей, в github сегодня появилось 2 stable релиза, но в changelog ничего нет. Где бы почитать, что там нового?

Alexey
17.01.2018
16:13:09
Так, ну теперь я не удержусь поделиться вчерашней находкой про SummingMergeTree: https://github.com/yandex/ClickHouse/issues/1776
Забавная ошибка. Как раз недавно делали исправления, которые решают многие проблемы такого рода. Например, сейчас в коде написано: if (!column.type->isSummable()) а значит, такой проблемы быть не должно. Можете проверить на свежей версии.

Dmitry
17.01.2018
16:13:45
У нас последний стабильный релиз. Ставить из мастера не будем)

Alexey
17.01.2018
16:13:46
Dmitry
17.01.2018
16:14:09
А, вот оно чо, свежие релизы!

Evgenii
17.01.2018
16:14:50
В докере не ставиться последний релиз

Alexandr
17.01.2018
16:17:40
Это довольно сложно. Для этого нужно понимать, во что сериализуются состояния агрегатных функций и преобразовать бинарный дамп таблицы в точно такой формат.
точно нет простого способа? Числа в sumState и в sumIfState можно вот так преобразовать: SELECT sumIfMerge(n) FROM ( SELECT sumIfState(777, 1) AS n ) ┌─sumIfMerge(n)─┐ │ 777 │ └───────────────┘ 1 rows in set. Elapsed: 0.003 sec. Но с count / countIf сложнее, т.к. параметром не передашь "count": SELECT countIfMerge(n) FROM ( SELECT countIfState(777, 1) AS n ) ┌─countIfMerge(n)─┐ │ 1 │ └─────────────────┘ 1 rows in set. Elapsed: 0.002 sec.

Alexey
17.01.2018
16:17:57
Говорят, что не ставится на неких обрезанных образах 16.04, где нет systemd (обычно есть). С другой стороны, нам вообще не нужен systemd и его добавили просто так. @proller сделал проверку https://github.com/yandex/ClickHouse/pull/1783/files - сейчас добавим.

Google
strange
17.01.2018
16:21:18
не ставится или не стартует как сервис? (это разные вещи)

удивительно было бы от докера ожидать нормальной работы с системд, надеюсь никто и не ожидал

Vitaliy
17.01.2018
16:22:02
Привет У меня проблемка вылезла - кликхаус не пишет в /var/log/clickhouse-server/clickhouse-server.log а пишет в сислог

как это можна пофиксить?

54336 версия

prll
17.01.2018
16:23:34
systemd ?

Vitaliy
17.01.2018
16:24:21
да

Evgenii
17.01.2018
16:33:25
не ставится или не стартует как сервис? (это разные вещи)
Не ставится из репы так как в пост инсталляции скрипте идёт обращение к системд которого внутри докера нет

strange
17.01.2018
16:34:11
(временно подсунуть фальшивый системд)

Evgenii
17.01.2018
16:34:25
да
Алексей выше написал, что будет проверка на наличие системд

Anton
17.01.2018
16:36:16
(временно подсунуть фальшивый системд)
Бвахахаха. Присунуть фэйковый systemd внутрь докера я пытаюсь уже второй месяц :)

prll
17.01.2018
16:37:50
проблема с установкой на ubuntu 16.10 будет решена в следующем релизе - https://github.com/yandex/ClickHouse/commit/87e7fb48d229ac498e4ae602315115edb500948e

Evgenii
17.01.2018
16:38:31
Спасибо

Vitaliy
17.01.2018
17:47:07
а что делать с сислогом?

Alexey
17.01.2018
18:07:06
а что делать с сислогом?
Это получилось по глупости, мы это отменим.

molo4ko
17.01.2018
18:36:17
если есть таблица x, y, как оптимальнее всего выбрать x, такие, что для массива a все его значения встречаются среди значений y для данного x? пример: x y 1 0 1 1 2 0 2 4 2 10 запрос на этой таблице с массивом [0, 1] вернет 1, а с массивом [4,10] - 2

соответственно, [0] => 1, 2

papa
17.01.2018
18:38:20
select x from table where y in a group by x having count()=2 ?

или вам принципиально чтобы a был массив?

Google
papa
17.01.2018
18:41:16
если могут быть повторы, то uniq(y)=2

molo4ko
17.01.2018
18:44:09
нет, массив не принципиален, можно будет построить селектом фейковую таблицу для джойна. более важно, чтобы можно было добавлять эти параметры через OR, вроде такого: для набора аргументов (>= 1 массива), мы выбираем все x, для которых "по-массивно" OR, а сочетание - через AND: 1 0 1 1 1 2 1 3 2 0 2 100 2 2 3 400 для набора параметров [[0, 2], [1, 3]], следует понимать как "выбрать все Х, у которых есть У, для которых y in (0, 2) И y in (1,3)"

возможно, я слишком много хочу

вот это: "y in (0, 2) И y in (1,3" псевдокод, понятно

papa
17.01.2018
18:47:10
то есть у вас есть несколько массивов ys1 ys2, и пусть y(x) это groupUniqArray(y) group by x, тогда вам нужны x : y(x) содержит ys1 или y(x) содержит ys2 , да?

Константин
17.01.2018
18:50:40
Добрый вечер, скажите, а встроенные словари доступны только команде Яндекса?

простым смертным они не доступны?

Alexey
17.01.2018
18:51:46
Можно самому создать данные для встроенных словарей и использовать их, но оригинальные данные недоступны.

molo4ko
17.01.2018
18:52:19
papa да, я пытаюсь что-то слепить из HOF, но пока не очень

papa
17.01.2018
18:54:02
а может делать uniqIf(y,y in ys1), uniqIf(y,y in ys2) ..

Константин
17.01.2018
18:55:16
@milovidov_an а есть инструкция по тому, как сформировать внутренние словари?

papa
17.01.2018
18:55:33
для маленьких кардинальностей y и больших x можно uniqUpTo попробовать.

molo4ko
17.01.2018
18:57:49
uniqIf?

Страница 392 из 723