
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] │вроде одномерный

Tima
17.01.2018
15:18:11
подскажите, пож, по функционированию 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----------------
Как с этим бороться? :)
Скорее всего как-то так
SELECT 1 AS a, arrayConcat(Mas) AS Gl_MAS
FROM test_mas GROUP BY a

Google

Natalya
17.01.2018
15:19:43
┌─Gl_MAS──┬─maxArray(arrayConcat(Mas))─┐
│ [72,36] │ 72 │
│ [857] │ 857 │
│ [50] │ 50 │
│ [127] │ 127 │
└─────────┴────────────────────────────┘


Tima
17.01.2018
15:22:27
подскажите, пож, по функционированию 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----------------
Как с этим бороться? :)
По вашу примеру данных, покажите как должен выглядеть результат запроса

Natalya
17.01.2018
15:24:02
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 ?


Tima
17.01.2018
15:27:34
SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res
--res-----------¬
¦ [1,2,3,4,5,6] ¦
L----------------
SELECT groupArray(arrayJoin(a)) FROM (SELECT arrayJoin(arr) AS a FROM (SELECT [[1, 2], [3, 4], [5, 6]] AS arr))
groupArrayArray ?
SELECT groupArrayArray(a) FROM (SELECT arrayJoin(arr) AS a FROM (SELECT [[1, 2], [3, 4], [5, 6]] AS arr))
подскажите, пож, по функционированию 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----------------
Как с этим бороться? :)
SELECT groupArrayArray(Mas) AS Gl_MAS
FROM test_mas


Natalya
17.01.2018
15:29:27

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

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

Artem
17.01.2018
15:39:42

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

Alexey
17.01.2018
16:07:45

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

Alexey
17.01.2018
16:13:09

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

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

Evgenii
17.01.2018
16:18:51
Базовый образ убунта 16.04 как раз

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

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?