Size: a a a

ClickHouse не тормозит

2021 March 21

IG

Ilya Golshtein in ClickHouse не тормозит
С помощью mat view, наверное, можно сделать что-то вроде цикла, т.е. чтобы данные вставлялись туда, откуда они будут читаться?
источник
2021 March 22

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ilya Golshtein
С помощью mat view, наверное, можно сделать что-то вроде цикла, т.е. чтобы данные вставлялись туда, откуда они будут читаться?
там сразу будет stackoverflow из-за рекурсии.

distributed таблицы повторяют инсерты до бесконечности при ошибке, при этом фейлится может только часть инсерта
https://github.com/ClickHouse/ClickHouse/issues/12530#issuecomment-658902526
источник

РА

Романов Александр... in ClickHouse не тормозит
товарищи, подскажите плиз что я хочу?
у меня есть одна база на КХ, она продовая, и аналитиков я туда пускать не хочу.
мне нужна еще одна база с данными как на проде. они могт отставать на сутки.
куда мне смотреть? в сторону etl? или мб есть хитрая репликация? объем почти терабайт за год, дальше будет только больше.
источник

DD

Dig Diver in ClickHouse не тормозит
Добрый день. Помогите понять логику windowFunnel
Есть запрос

select event, count() from events
WHERE (eventDate >= '2021-03-19 00:00:00') AND (eventDate <= '2021-03-19 23:59:59')
group by event


Результат:

CopySpamClick 273
Signup  151
Purchase  67

Теперь пытаюсь построить воронку
   SELECT
   level,
   count() AS c
FROM
(
   SELECT
       visitorId,
       windowFunnel(6048000000000000)(eventDate,  event = 'CopySpamClick' , event = 'Signup', event = 'Purchase') AS level
   FROM events
   WHERE (eventDate >= '2021-03-18 00:00:00') AND (eventDate <= '2021-03-19 23:59:59')
   GROUP BY visitorId
)
GROUP BY level
ORDER BY level ASC


Результат

0  468
1  225
2  21
3  1

Не понятно, почему 4 шага, когда в условии только 3
И что за число в 0-м шаге.
источник

K

Kid in ClickHouse не тормозит
Романов Александр
товарищи, подскажите плиз что я хочу?
у меня есть одна база на КХ, она продовая, и аналитиков я туда пускать не хочу.
мне нужна еще одна база с данными как на проде. они могт отставать на сутки.
куда мне смотреть? в сторону etl? или мб есть хитрая репликация? объем почти терабайт за год, дальше будет только больше.
есть же обычная репликация, практически без отставания, Replicated.
источник

S

Slach in ClickHouse не тормозит
Kid
есть же обычная репликация, практически без отставания, Replicated.
зачем то надо отставание на сутки
источник

S

Slach in ClickHouse не тормозит
Романов Александр
товарищи, подскажите плиз что я хочу?
у меня есть одна база на КХ, она продовая, и аналитиков я туда пускать не хочу.
мне нужна еще одна база с данными как на проде. они могт отставать на сутки.
куда мне смотреть? в сторону etl? или мб есть хитрая репликация? объем почти терабайт за год, дальше будет только больше.
INSERT ... SELECT .. FROM remote() WHERE date <= now() - INTERVAL 24 HOUR
в cron
но вы явно хотите чего то странного
почему не пустить аналитиков в прод? чем они вам не угодили?
источник

РА

Романов Александр... in ClickHouse не тормозит
Slach
INSERT ... SELECT .. FROM remote() WHERE date <= now() - INTERVAL 24 HOUR
в cron
но вы явно хотите чего то странного
почему не пустить аналитиков в прод? чем они вам не угодили?
не привык я к аналитикам в проде.
если я хочу что-то странное, то это не правильно. глобально - мне нужно дать им доступ к данных, но чтобы они не поломали базу
источник

РА

Романов Александр... in ClickHouse не тормозит
у меня при малейших действих кроме инсерта из приложения сразу взлетает LA и это совсем не хорошо
источник

ИШ

Илья Шадрин... in ClickHouse не тормозит
Вообще нормальная практика, у нас был разраб который укладывал CH селектом с join. "а что тут такого, в тестах работало" где на тесте было дай бог 100 гб, а на проде 20 тб
источник

ИШ

Илья Шадрин... in ClickHouse не тормозит
а аналитики и того, простите меня, глупее в этом плане. Им дали инструмент где есть join вот они и будут джойнить
источник

V

Vladimir in ClickHouse не тормозит
Dig Diver
Добрый день. Помогите понять логику windowFunnel
Есть запрос

select event, count() from events
WHERE (eventDate >= '2021-03-19 00:00:00') AND (eventDate <= '2021-03-19 23:59:59')
group by event


Результат:

CopySpamClick 273
Signup  151
Purchase  67

Теперь пытаюсь построить воронку
   SELECT
   level,
   count() AS c
FROM
(
   SELECT
       visitorId,
       windowFunnel(6048000000000000)(eventDate,  event = 'CopySpamClick' , event = 'Signup', event = 'Purchase') AS level
   FROM events
   WHERE (eventDate >= '2021-03-18 00:00:00') AND (eventDate <= '2021-03-19 23:59:59')
   GROUP BY visitorId
)
GROUP BY level
ORDER BY level ASC


Результат

0  468
1  225
2  21
3  1

Не понятно, почему 4 шага, когда в условии только 3
И что за число в 0-м шаге.
windowFunnel возвращает длину найденной цепочки. Т.е. в результате 468 visiotor, у которых level = 0 (для которых не было события CopySpamClick ), 255 попавших в CopySpamClick, 21 - CopySpamClick и Signup, и один для которого нашлась вся цепочка.
источник

c

critskiy in ClickHouse не тормозит
Романов Александр
не привык я к аналитикам в проде.
если я хочу что-то странное, то это не правильно. глобально - мне нужно дать им доступ к данных, но чтобы они не поломали базу
Ээээ, конечно звучит немного абсурдно, но имхо: 1) попробовать настроить роли/права; 2) а точно проблема в аналитиках? :)
источник

РА

Романов Александр... in ClickHouse не тормозит
critskiy
Ээээ, конечно звучит немного абсурдно, но имхо: 1) попробовать настроить роли/права; 2) а точно проблема в аналитиках? :)
1)  согласен
2)  мб у меня что-то с конфигом не то. сам сервер точно нормальный.
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
это речь про summingMT ?
а кто сказал что записи из партиции в партицию смогут перепрыгнуть?
вы хакнули - сломали себе таблицу похоже

это все делается через TTL group by

современный КХ такое не позволяет

create table t1(A Int64, D Date TTL D + interval 1 day, V Float64)
Engine=SummingMergeTree
partition by D
order by A
DB::Exception: Trying to set TTL for key column D.
Я в вопросе этого не указал:( - нет, там не SummingMergeTree, a просто ReplicatedMergeTree.
За предыдущие дни в свёрнутых до 1 парта партициях (слияния форсировались ночными optimize final) иногда оставалась часть записей с не до конца очищенными COLUMN TTL столбцами (сутки: ( ...+ toIntervalDay(1))).

Но поскольку у меня уже не поддерживаемая версия 20.10.7.4 и в любом случае надо на 21.3 переезжать, я в итоге перестал с этим эффектом разбираться. Вместо OPTIMIZE FINAL пока использую аккуратные MATERIALIZE TTL IN PARTITION.
источник

DD

Dig Diver in ClickHouse не тормозит
Vladimir
windowFunnel возвращает длину найденной цепочки. Т.е. в результате 468 visiotor, у которых level = 0 (для которых не было события CopySpamClick ), 255 попавших в CopySpamClick, 21 - CopySpamClick и Signup, и один для которого нашлась вся цепочка.
Спасибо, теперь понятно.
источник

АВ

Алексей Веселов... in ClickHouse не тормозит
Всем привет, подскажите плз, как преобразовать массив, полученный через splitByString() в массив из чисел
SELECT
   splitByString(',', '6,8') AS value

Чтобы далее можно было применить arrayDifference()
SELECT
   arrayDifference(splitByString(',', '6,8')) AS value

Чтобы не вылазила ошибка как на скрине
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Алексей Веселов
Всем привет, подскажите плз, как преобразовать массив, полученный через splitByString() в массив из чисел
SELECT
   splitByString(',', '6,8') AS value

Чтобы далее можно было применить arrayDifference()
SELECT
   arrayDifference(splitByString(',', '6,8')) AS value

Чтобы не вылазила ошибка как на скрине
Можно попробовать так: arrayMap(x -> toInt32OrZero(x), splitByString(',', '6,8'))
если синтаксис верно помню
источник

АВ

Алексей Веселов... in ClickHouse не тормозит
Алексей Веселов
Всем привет, подскажите плз, как преобразовать массив, полученный через splitByString() в массив из чисел
SELECT
   splitByString(',', '6,8') AS value

Чтобы далее можно было применить arrayDifference()
SELECT
   arrayDifference(splitByString(',', '6,8')) AS value

Чтобы не вылазила ошибка как на скрине
пардон, ужа сам справился)
SELECT
   arrayDifference(arrayMap(x -> toInt64(x), splitByString(',', '6,8'))) AS value
источник

АВ

Алексей Веселов... in ClickHouse не тормозит
Alexey Sokolov
Можно попробовать так: arrayMap(x -> toInt32OrZero(x), splitByString(',', '6,8'))
если синтаксис верно помню
да именно так и сделал, спасибо большое!)
источник