Size: a a a

ClickHouse не тормозит

2020 September 02

S

Slach in ClickHouse не тормозит
Народ. пытаюсь тут сгенерировать рандомные данные для Nested структур

DROP TABLE IF EXISTS default.test_array_join_nested;
CREATE TABLE IF NOT EXISTS default.test_array_join_nested(
   d DateTime,
   JobName LowCardinality(String),
   Metrics Nested (
       Name LowCardinality(String),
       Value UInt64
   )
) ENGINE = MergeTree() ORDER BY (d);

INSERT INTO default.test_array_join_nested(d, JobName, Metrics.Name, Metrics.Value)
SELECT toDateTime(now()-(number*10)) AS d,
         if(number%2,'Job2','Job1') AS JobName,
         (SELECT groupArray(if( rand() % 2,'metric1','metric2')) FROM numbers(10)) AS metrics_name,
        (SELECT groupArray(rand() % (number + 10)) FROM numbers(10)) AS metrics_value FROM numbers(1000);


может кто нибудь подскажет как сделать так чтобы subqueries не выдавали константных выражений?
источник

A

Akim in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а 5 хостов ZK это чтобы было больнее и тормознее? Рекомендация ровно 3, всегда и везде и для чего угодно.

пинг сколько между зк и КХ (примерно)?
5 для резервирования. А почему использовать необходимо именно 3, чем 5 хостов хуже?
Пинг от 3 до 20 мс примерно, в зависимости от хоста
источник

D

Dj in ClickHouse не тормозит
Artem
Что такое background threads? В последних версиях такой настройки нет.
background_pool_size
источник

MP

Maxim Petrovsky in ClickHouse не тормозит
Всем привет! Подскажите пожалуйста, в clickhouse есть coalesce, который возвращает первый не NULL элемент из массива. Есть что-то подобное для массивов строк? Чтобы например возвращал первую непустую строку?
источник

DD

Denis Dorozhkin in ClickHouse не тормозит
всем привет!
Есть селект который преобразует данные примерно следующим образом
, Categories                                         AS "CategoryMap.ID"
 , replicate(Impressions, range(length(Categories))) AS "CategoryMap.Impressions"
 , replicate(Clicks,      range(length(Categories))) AS "CategoryMap.Clicks"
 , replicate(Leads,       range(length(Categories))) AS "CategoryMap.Leads"
 , replicate(Price,       range(length(Categories))) AS "CategoryMap.Price"
 , replicate(CPMPrice,    range(length(Categories))) AS "CategoryMap.CPMPrice"
 , replicate(LeadPrice,   range(length(Categories))) AS "CategoryMap.LeadPrice"
 , replicate(Revenue,     range(length(Categories))) AS "CategoryMap.Revenue"
 , replicate(Potential,   range(length(Categories))) AS "CategoryMap.Potential"


в исходной таблице  (Engine=ReplicatedMergeTree) лежат данные
Categories: [31, 41], [9, 18]

В итоговой (Engine=SummingMergeTree): [-2078137563,31,41], [9, 18]

Откуда появляются отрицательные значения ума не приложу.

Как такое ловить?
источник

D

Dj in ClickHouse не тормозит
Slach
Народ. пытаюсь тут сгенерировать рандомные данные для Nested структур

DROP TABLE IF EXISTS default.test_array_join_nested;
CREATE TABLE IF NOT EXISTS default.test_array_join_nested(
   d DateTime,
   JobName LowCardinality(String),
   Metrics Nested (
       Name LowCardinality(String),
       Value UInt64
   )
) ENGINE = MergeTree() ORDER BY (d);

INSERT INTO default.test_array_join_nested(d, JobName, Metrics.Name, Metrics.Value)
SELECT toDateTime(now()-(number*10)) AS d,
         if(number%2,'Job2','Job1') AS JobName,
         (SELECT groupArray(if( rand() % 2,'metric1','metric2')) FROM numbers(10)) AS metrics_name,
        (SELECT groupArray(rand() % (number + 10)) FROM numbers(10)) AS metrics_value FROM numbers(1000);


может кто нибудь подскажет как сделать так чтобы subqueries не выдавали константных выражений?
select d, JobName, groupArray(metricname) as metrics_name_arr, groupArray(metricval) as metrics_value_arr
from (
 select
 if(number%2,'Job2','Job1') AS JobName,
 toDateTime(now()-(number*10)) AS d,
 arrayJoin(['metric1', 'metric2']) as metricname,
 rand64(cityHash64(arrayJoin(range(5)), number, metricname))%10 metricval
 FROM numbers(1000)
 order by d, metricname
)
group by d, JobName
;
источник

D

Dj in ClickHouse не тормозит
Denis Dorozhkin
всем привет!
Есть селект который преобразует данные примерно следующим образом
, Categories                                         AS "CategoryMap.ID"
 , replicate(Impressions, range(length(Categories))) AS "CategoryMap.Impressions"
 , replicate(Clicks,      range(length(Categories))) AS "CategoryMap.Clicks"
 , replicate(Leads,       range(length(Categories))) AS "CategoryMap.Leads"
 , replicate(Price,       range(length(Categories))) AS "CategoryMap.Price"
 , replicate(CPMPrice,    range(length(Categories))) AS "CategoryMap.CPMPrice"
 , replicate(LeadPrice,   range(length(Categories))) AS "CategoryMap.LeadPrice"
 , replicate(Revenue,     range(length(Categories))) AS "CategoryMap.Revenue"
 , replicate(Potential,   range(length(Categories))) AS "CategoryMap.Potential"


в исходной таблице  (Engine=ReplicatedMergeTree) лежат данные
Categories: [31, 41], [9, 18]

В итоговой (Engine=SummingMergeTree): [-2078137563,31,41], [9, 18]

Откуда появляются отрицательные значения ума не приложу.

Как такое ловить?
ну тип у вас судя по всему Int32, биты кончились, не?
источник

O

Orlan in ClickHouse не тормозит
Привет всем! Подскажите, пожалуйста, как сделать массив массивов из массива
источник

DT

Dmitry Titov in ClickHouse не тормозит
Orlan
Привет всем! Подскажите, пожалуйста, как сделать массив массивов из массива
можно через arrayMap
источник

O

Orlan in ClickHouse не тормозит
Dmitry Titov
можно через arrayMap
не совсем понял, знаю ,что arrayMap() позволяет работать с элементами массива
источник

D

Dj in ClickHouse не тормозит
Maxim Petrovsky
Всем привет! Подскажите пожалуйста, в clickhouse есть coalesce, который возвращает первый не NULL элемент из массива. Есть что-то подобное для массивов строк? Чтобы например возвращал первую непустую строку?
select arrayFirst( (x) -> not isNull(x) , ['2',null,'4']);
источник

DD

Denis Dorozhkin in ClickHouse не тормозит
Dj
ну тип у вас судя по всему Int32, биты кончились, не?
да int32, но на входе числа 17, 31 а на выходе добавляются отрицательные

2147483647 - 2078137563 = 69346084
таких чисел нет в исходной таблице
источник

D

Dj in ClickHouse не тормозит
Maxim Petrovsky
Всем привет! Подскажите пожалуйста, в clickhouse есть coalesce, который возвращает первый не NULL элемент из массива. Есть что-то подобное для массивов строк? Чтобы например возвращал первую непустую строку?
смотря "пустая строка" или НУЛЛ...
select arrayFirst( (x) -> not empty(x) , ['2','','4']);
источник

D

Dj in ClickHouse не тормозит
Denis Dorozhkin
да int32, но на входе числа 17, 31 а на выходе добавляются отрицательные

2147483647 - 2078137563 = 69346084
таких чисел нет в исходной таблице
тогда у вас на входе было одно большое число которое все испортило.
поищите числа больше миллиона например в сырых данных
источник

AB

Artem Bochkov in ClickHouse не тормозит
Коллеги, добрый день!
>Estimated query execution time (53900.3476949325446 seconds) is too long. Maximum: 240. Estimated rows to process: 1965022
Очевидно, про оценку он врет. Вопрос: где можно задать max_execution_time отличный от 240?
SELECT * FROM system.settings where value='240';
0 rows in set. Elapsed: 0.003 sec.
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Artem Bochkov
Коллеги, добрый день!
>Estimated query execution time (53900.3476949325446 seconds) is too long. Maximum: 240. Estimated rows to process: 1965022
Очевидно, про оценку он врет. Вопрос: где можно задать max_execution_time отличный от 240?
SELECT * FROM system.settings where value='240';
0 rows in set. Elapsed: 0.003 sec.
В Tabix такое в клиенте настраивается, и он потом каждый раз посылает это число на сервер
источник

AB

Artem Bochkov in ClickHouse не тормозит
знать бы, какая это переменная…
источник

DT

Dmitry Titov in ClickHouse не тормозит
Orlan
не совсем понял, знаю ,что arrayMap() позволяет работать с элементами массива
SELECT arrayMap((x,y) -> arrayReduce('groupArrayInsertAt(0,3)',[x],[toUInt32(y-1)]), [1,1,1], arrayEnumerate([1,1,1]));
Но можно думаю лучше сделать

SELECT [1,1,1] as arr, range(0,3) as arr2, groupArrayInsertAtResampleArray(0,3,0,3,1)(arr,arr2,arr2);
источник

S

Slach in ClickHouse не тормозит
Dj
select d, JobName, groupArray(metricname) as metrics_name_arr, groupArray(metricval) as metrics_value_arr
from (
 select
 if(number%2,'Job2','Job1') AS JobName,
 toDateTime(now()-(number*10)) AS d,
 arrayJoin(['metric1', 'metric2']) as metricname,
 rand64(cityHash64(arrayJoin(range(5)), number, metricname))%10 metricval
 FROM numbers(1000)
 order by d, metricname
)
group by d, JobName
;
спасибо большое!
источник

A

Anton in ClickHouse не тормозит
Подскажите, если надо хранить логи, то лучше брать тип движка таблицы - Logs или можно оставить mergetree?
источник