Size: a a a

ClickHouse не тормозит

2021 January 23

M

Mishanya in ClickHouse не тормозит
Реплейкетед таблица или обычная ?
источник

MF

Mikhail Fadeev in ClickHouse не тормозит
Реплекейтед, но insert напрямую к ноде идёт
источник

M

Mishanya in ClickHouse не тормозит
Mikhail Fadeev
Реплекейтед, но insert напрямую к ноде идёт
Ну если вы выбираете из реплики, точне из дистрибутед таблицы потом, то есть шанс попасть на другую реплику где данные ещё не скачались. Есть какая-то настройка про то, какую реплику выбирать на основе отставания
источник

MF

Mikhail Fadeev in ClickHouse не тормозит
Да изначально была такая проблема, но сейчас вся работа идёт только с одной репликой, и insert и select напрямую к ней направлены
источник

D

Dj in ClickHouse не тормозит
Mikhail Fadeev
Да изначально была такая проблема, но сейчас вся работа идёт только с одной репликой, и insert и select напрямую к ней направлены
не должно быть такого если и инсерт и селект напрямую в ноду идут.
источник

MF

Mikhail Fadeev in ClickHouse не тормозит
Dj
не должно быть такого если и инсерт и селект напрямую в ноду идут.
Согласен, но к сожалению столкнулись с такой проблемой
источник

D

Dj in ClickHouse не тормозит
Mikhail Fadeev
Согласен, но к сожалению столкнулись с такой проблемой
Проверьте на не replicated таблице репродюсится?
источник

D

Dj in ClickHouse не тормозит
Mikhail Fadeev
Согласен, но к сожалению столкнулись с такой проблемой
Если все как вы описали то баг
источник

MF

Mikhail Fadeev in ClickHouse не тормозит
Dj
Проверьте на не replicated таблице репродюсится?
Хорошо, попробую
источник

SC

Sergey Churin in ClickHouse не тормозит
Ivan
Други, помогите плз) Есть таблица с логами заходов пользователей(1 запись = 1 действие). Нужно сгруппировать по дате и посчитать кол-во активных пользователей по датам. Активный - это тот кто заходил хотябы раз за 2 недели, тоесть есть хотя бы одна запись) Как на клике это лучше всего посчитать?
Решение нашлось? Недавно делал подобное, вот адаптация под ваше условие на примере песочницы на сайте КХ:
SELECT
date,
countIf(arrayExists(x -> (x BETWEEN date - 13 and date), userDates)) as value
FROM (
   SELECT groupUniqArray(EventDate) as userDates
   FROM `hits_100m_obfuscated`
   WHERE EventDate BETWEEN toDate('2013-06-25') - 13 and toDate('2013-08-15')
   GROUP BY CounterID
) ARRAY JOIN
   arrayMap(
       x -> (toDate('2013-06-25') + x),
       range(toUInt32(dateDiff('day', toDate('2013-06-25'), toDate('2013-08-15'))) + 1)
   ) as date
GROUP BY date;
Подходит, если юзеров и дат не слишком много. Буду рад увидеть другое решение, так как это кажется явно не оптимальным. Хотя в песочнице даже для UserID вместо CounterID отрабатывает.
источник

A

Alexandr in ClickHouse не тормозит
Mishanya
Да, сделать селф джоин через подзапрос с макс версией
Ну я так и сделал, но может кто то это через MV делал
источник

I

Ivan in ClickHouse не тормозит
Sergey Churin
Решение нашлось? Недавно делал подобное, вот адаптация под ваше условие на примере песочницы на сайте КХ:
SELECT
date,
countIf(arrayExists(x -> (x BETWEEN date - 13 and date), userDates)) as value
FROM (
   SELECT groupUniqArray(EventDate) as userDates
   FROM `hits_100m_obfuscated`
   WHERE EventDate BETWEEN toDate('2013-06-25') - 13 and toDate('2013-08-15')
   GROUP BY CounterID
) ARRAY JOIN
   arrayMap(
       x -> (toDate('2013-06-25') + x),
       range(toUInt32(dateDiff('day', toDate('2013-06-25'), toDate('2013-08-15'))) + 1)
   ) as date
GROUP BY date;
Подходит, если юзеров и дат не слишком много. Буду рад увидеть другое решение, так как это кажется явно не оптимальным. Хотя в песочнице даже для UserID вместо CounterID отрабатывает.
Да, нашлось, спасибо) Тоже не претендую на идеал, но работает и пока довольно быстро) Окно изменил на 30 дней)
SELECT
     Date
   , any(arrayUniq(arrayFlatten(arrayMap(x -> neighbor(Seller_ID, - x * 30), range(30))))) as user
FROM
   (
   SELECT
         toDate(server_timestamp) AS Date
       , groupUniqArray(company_id) AS Seller_ID
   FROM event_tracker.tracker_event_sc_fe_ui_event
   WHERE Date >= '2020-11-12'
   GROUP BY Date
   ORDER BY Date
   )
GROUP BY Date
HAVING Date >= '2020-12-12'
источник

AM

Alex Moshinets in ClickHouse не тормозит
Alexandr
Ну я так и сделал, но может кто то это через MV делал
Можно подробнее, пример запроса? Я сейчас с такой проблемой столкнулся, хочу увидеть решение через селф
источник

A

Alexandr in ClickHouse не тормозит
Alex Moshinets
Можно подробнее, пример запроса? Я сейчас с такой проблемой столкнулся, хочу увидеть решение через селф
Select * from table PREWHERE (uniq, ver) in (select uniq, max(ver) from table group by uniq)
источник

A

Alexandr in ClickHouse не тормозит
Засунуть это бы ещё в MV....
источник

AM

Alex Moshinets in ClickHouse не тормозит
Спасибо 👀😌
источник

A

Alexandr in ClickHouse не тормозит
Но не понятно как обойтись без Replace таблицы, поскольку не знаешь какой будет финальный ver
источник

A

Alexandr in ClickHouse не тормозит
Но и с prewere in, уже в 5 ра быстрее
источник

M

Mishanya in ClickHouse не тормозит
Alexandr
Select * from table PREWHERE (uniq, ver) in (select uniq, max(ver) from table group by uniq)
Я бы in переписал на join
источник

M

Mishanya in ClickHouse не тормозит
Хотя в вашем варианте может быть тоже самое получится, надо потестить
источник