Size: a a a

ClickHouse не тормозит

2021 February 23

FN

Fred Navruzov in ClickHouse не тормозит
порядка 100 может быть (но по факту в рамках группировки 1-10)
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dmitry Titov
anyHeavy но неточное
А сколько уникальных вариантов то?
sumMap([key],[1]) и потом с помощью array фунций выбрать максимальное еще можно

Еще есть topK, возможно он будет давать точные результаты в случае кол-ва уников < K
источник

FN

Fred Navruzov in ClickHouse не тормозит
Спасибо, буду пробовать!
источник

MS

Maxim Surkiz in ClickHouse не тормозит
Привет! Есть Кафка и кх который читает данные из топика. Иногда сообщения в топике не соответствуют формату таблицы в кх и соответственно не загружаются в клик. Хочется такие случаи выявлять.
Какие можете посоветовать инструменты для мониторинга, кроме очевидного грепанья логов или можно ли именно эти ошибки перенаправить в отдельный лог, что бы отделить от всего потока логов кх?
источник

FN

Fred Navruzov in ClickHouse не тормозит
Господа, уточните, так ли работает?
если на основе таблицы делается агрегатный materialized view через populate, то вью будет содержать все данные таблицы, но автоматически обновит свои данные ТОЛЬКО при инсерте новых данных в изначальную таблицу? т.е. если в изначальной таблице поменяются старые данные (вдруг), то вью этого не отобразит?

и второй вопрос - (я предполагаю, что можно) можно ли на основе mat.view делать еще 1 mat.view, таким образом навешивая несколько последовательных триггеров на инсерт данных в изначальную таблицу - все они будут обновляться при вставке в изначальную?
источник

S

Slach in ClickHouse не тормозит
Fred Navruzov
Господа, уточните, так ли работает?
если на основе таблицы делается агрегатный materialized view через populate, то вью будет содержать все данные таблицы, но автоматически обновит свои данные ТОЛЬКО при инсерте новых данных в изначальную таблицу? т.е. если в изначальной таблице поменяются старые данные (вдруг), то вью этого не отобразит?

и второй вопрос - (я предполагаю, что можно) можно ли на основе mat.view делать еще 1 mat.view, таким образом навешивая несколько последовательных триггеров на инсерт данных в изначальную таблицу - все они будут обновляться при вставке в изначальную?
1) Автоматически он будет группировать данные при вставке
новых блоков
и будет группировать данные далее в фоне при background merge для одинаковых значений ORDER BY  \ PRIMARY KEY

запрос к такому view должен содержать group by для  аггрегации финальной

2) да, каскадные MV можно делать, но там транзакционной целостности нет, то есть данные вставятся в исходную таблицу, но могут не обновиться к MV и всех каскадных MV от него зависящих
источник

FN

Fred Navruzov in ClickHouse не тормозит
Спасибо!
могут не обновиться к MV и всех каскадных MV от него зависящих
а это нужно трактовать как "могут не обновиться сразу/очень быстро" или "могут не обновиться вообще никогда"?
скажем, если вставка небольшими порциями раз в час (тысячи записей максимум) и таблица небольшая, то есть ли шанс, что за час все обновится (абстрактный пример без деталей, но все же)
источник

S

Slach in ClickHouse не тормозит
Fred Navruzov
Спасибо!
могут не обновиться к MV и всех каскадных MV от него зависящих
а это нужно трактовать как "могут не обновиться сразу/очень быстро" или "могут не обновиться вообще никогда"?
скажем, если вставка небольшими порциями раз в час (тысячи записей максимум) и таблица небольшая, то есть ли шанс, что за час все обновится (абстрактный пример без деталей, но все же)
если я не ошибаюсь то порядок такой

идет в вставка  формируется INSERT BLOCK
вставка идет в таблицу1
INSERT BLOCK передается MV1, формируется INSERT BLOCK с данными для MV1 идет физическая вставка в MV1
юзеру отсылается OK

INSERT BLOCK асинхронно передается на вход в MV2
формируется новый INSERT BLOCK для вставки в MV2
идет физическая вставка в MV2
этих операций юзер не видит
если тут какая нибудь ошибка в SELECT ... или место кончилось ... то юзер об этом не узнает
источник

FN

Fred Navruzov in ClickHouse не тормозит
Спасибо, стало понятнее!
источник

S

Slach in ClickHouse не тормозит
Maxim Surkiz
Привет! Есть Кафка и кх который читает данные из топика. Иногда сообщения в топике не соответствуют формату таблицы в кх и соответственно не загружаются в клик. Хочется такие случаи выявлять.
Какие можете посоветовать инструменты для мониторинга, кроме очевидного грепанья логов или можно ли именно эти ошибки перенаправить в отдельный лог, что бы отделить от всего потока логов кх?
что-то похоже что оно только skip делать умеет
источник

AC

Artur Chobanyan in ClickHouse не тормозит
А почему поменяли Твиттер? Раньше же Маск был
источник

AC

Artur Chobanyan in ClickHouse не тормозит
Maxim Surkiz
Привет! Есть Кафка и кх который читает данные из топика. Иногда сообщения в топике не соответствуют формату таблицы в кх и соответственно не загружаются в клик. Хочется такие случаи выявлять.
Какие можете посоветовать инструменты для мониторинга, кроме очевидного грепанья логов или можно ли именно эти ошибки перенаправить в отдельный лог, что бы отделить от всего потока логов кх?
Проверять сообщение до того как попадает в кафку
источник

AC

Artur Chobanyan in ClickHouse не тормозит
Сделайте валидацию на стороне приложения и все
источник

FN

Fred Navruzov in ClickHouse не тормозит
ребята, помогите пожалуйста, вопрос по таймзонам и временнОй фильтрации
есть таблица, в ней есть колонка time_local - String с локальным временем (локальная для указанной таймзоны, пример "2021-02-19 18:00:00" - 6 часов по Киеву) и колонка time_local_tz - String с с таймзонами (пример "Europe/Kiev" )

конечная цель - отфильтровать запросом "исторические данные" = взять все данные за прошедший час и ранее = для которых локальное время < toStartOfHour( now(time_local_tz) )
т.е. если сейчас в киеве 13:50 локальное время, то должны по киеву в запрос попасть строки включительно по "2021-02-23 13:00:00" в колонке time_local. Аналогично для каждой строки со своей таймзоной

но я так понимаю, что векторизированно колонку time_local_tz в now() не передать, now(time_local_tz) не прокатит,  только скаляры)? как мне для каждой строки вычислить правильный now_local() ?
возможно есть более простые/быстрые/правильные способы, как достичь конечной цели
источник

YY

Yuriy Yurkiv in ClickHouse не тормозит
Добрый день. Подскажите пожалуйста:
есть таблица
user_id, ... , paid, session_id, date, ...
нужно вычислить количество бесплатных сессий до самой первой оплаты для каждого пользователя
источник

S

Slach in ClickHouse не тормозит
Fred Navruzov
ребята, помогите пожалуйста, вопрос по таймзонам и временнОй фильтрации
есть таблица, в ней есть колонка time_local - String с локальным временем (локальная для указанной таймзоны, пример "2021-02-19 18:00:00" - 6 часов по Киеву) и колонка time_local_tz - String с с таймзонами (пример "Europe/Kiev" )

конечная цель - отфильтровать запросом "исторические данные" = взять все данные за прошедший час и ранее = для которых локальное время < toStartOfHour( now(time_local_tz) )
т.е. если сейчас в киеве 13:50 локальное время, то должны по киеву в запрос попасть строки включительно по "2021-02-23 13:00:00" в колонке time_local. Аналогично для каждой строки со своей таймзоной

но я так понимаю, что векторизированно колонку time_local_tz в now() не передать, now(time_local_tz) не прокатит,  только скаляры)? как мне для каждой строки вычислить правильный now_local() ?
возможно есть более простые/быстрые/правильные способы, как достичь конечной цели
дык это
parseDateTimeBestEffort(time_local, time_local_tz) < toStartOfHour(now())

просто возьмите
должно работать
источник

FN

Fred Navruzov in ClickHouse не тормозит
красота, сейчас попробую!
источник

FN

Fred Navruzov in ClickHouse не тормозит
Slach
дык это
parseDateTimeBestEffort(time_local, time_local_tz) < toStartOfHour(now())

просто возьмите
должно работать
Code: 43, e.displayText() = DB::Exception: Illegal type Array(String) of 2nd argument of function parseDateTimeBestEffort: While processing dt AS dt_local, toString(dt) AS time_local_str, tz_id AS time_local_tz, parseDateTimeBestEffort(time_local_str, time_local_tz) AS utc_maybe (version 21.1.2.15 (official build))

я так понял, таки ругается на векторизированный аргумент (колонка с таймзоной)?
вызываю как
parseDateTimeBestEffort(time_local_str, time_local_tz)
, где оба аргумента - колонки типа string
источник

S

Slach in ClickHouse не тормозит
нет, ругается на то что у вас колонка с timezone хранится как массив строк
а функция ожидает строку
источник

S

Slach in ClickHouse не тормозит
toTypeName(time_local_str), toTypeName(time_local_tz)
посмотрите
источник