Size: a a a

ClickHouse не тормозит

2021 February 05

TU

Temur Uzbekov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
у вас поля у AggregatingMergeTree неправильные в order by
и _date вам не нужен

ДОЛЖНО БЫТЬ ТАК AggregatingMergeTree partition by toYYYYMM(time) order by (importance, time)
у нас уже есть нечто похожее - скажите, что здесь не так?

CREATE MATERIALIZED VIEW foo.events_importance (
   `count` AggregateFunction(count),
   `time` DateTime('UCT'),
   `importance` String,
   `_date` Date
) ENGINE = AggregatingMergeTree()
PARTITION BY toDate(time)
ORDER BY (toDate(time), importance)
SETTINGS index_granularity = 8192 AS
SELECT
   countState() AS count,
   toStartOfMinute(toDateTime(time)) AS time,
   importance,
   toDate(time) AS _date
FROM foo.events
GROUP BY time, importance
источник

AR

Alexander Ryzhenko in ClickHouse не тормозит
доброго времени суток.
Скажите, можно ли как-то заимпортить данные из CSV, находящиеся на локальной машине в удаленную клику?
источник

ER

Eduard Rekuts in ClickHouse не тормозит
на локальной машине поставить клиент и указать хостом сервер
источник

S

Slach in ClickHouse не тормозит
Alexander Ryzhenko
доброго времени суток.
Скажите, можно ли как-то заимпортить данные из CSV, находящиеся на локальной машине в удаленную клику?
cat file.csv | gzip -c | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://clickhouse-host:8123/?query=INSERT INTO db.table (field1, field2) FORMAT CSV'
источник

D

Denis in ClickHouse не тормозит
pigz --fast -c file.csv | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://clickhouse-host:8123/?query=INSERT INTO db.table (field1, field2) FORMAT CSV'
источник

GA

Gulshan Agivetova in ClickHouse не тормозит
Добрый день! Подскажите пожалуйста, как можно вставлять в таблицу с массивом данные через select
create table test (id UInt8, myArray Array(UInt8)) Engine=Memory;
create table charges (id UInt8, chname String) Engine=Memory;
Create table packs(pack_id UInt8, pack_name String, charge_id UInt8) Engine=Memory;

insert into charges values
(100,'X')
(101,'Y')
(102,'Z')

insert into packs values
(1,'A',100)
(2,'B',100)
(3,'C',100)
(1,'A',101)
(3,'B',101)
(1,'A',102)
(2,'B',102);

select c.id,p.pack_id from charges c left join packs p on c.id=p.charge_id
100 1
100 2
100 3
101 1
101 3
102 1
102 2

Как можно вставить в таблицу test, чтоб в итоге данные легли вот таким образом
100,[1,2,3]
101,[1,3]
102,[1,2]
источник

S

Slach in ClickHouse не тормозит
Gulshan Agivetova
Добрый день! Подскажите пожалуйста, как можно вставлять в таблицу с массивом данные через select
create table test (id UInt8, myArray Array(UInt8)) Engine=Memory;
create table charges (id UInt8, chname String) Engine=Memory;
Create table packs(pack_id UInt8, pack_name String, charge_id UInt8) Engine=Memory;

insert into charges values
(100,'X')
(101,'Y')
(102,'Z')

insert into packs values
(1,'A',100)
(2,'B',100)
(3,'C',100)
(1,'A',101)
(3,'B',101)
(1,'A',102)
(2,'B',102);

select c.id,p.pack_id from charges c left join packs p on c.id=p.charge_id
100 1
100 2
100 3
101 1
101 3
102 1
102 2

Как можно вставить в таблицу test, чтоб в итоге данные легли вот таким образом
100,[1,2,3]
101,[1,3]
102,[1,2]
источник

D

Dj in ClickHouse не тормозит
Temur Uzbekov
у нас уже есть нечто похожее - скажите, что здесь не так?

CREATE MATERIALIZED VIEW foo.events_importance (
   `count` AggregateFunction(count),
   `time` DateTime('UCT'),
   `importance` String,
   `_date` Date
) ENGINE = AggregatingMergeTree()
PARTITION BY toDate(time)
ORDER BY (toDate(time), importance)
SETTINGS index_granularity = 8192 AS
SELECT
   countState() AS count,
   toStartOfMinute(toDateTime(time)) AS time,
   importance,
   toDate(time) AS _date
FROM foo.events
GROUP BY time, importance
PARTITION BY toDate(time)
ORDER BY ( importance, time)
либо
ORDER BY ( time, importance)

в зависимости от запросовъ
источник

GA

Gulshan Agivetova in ClickHouse не тормозит
Спасибо большое!!
источник

BK

Brahma Kumaris in ClickHouse не тормозит
Sergey Bubnov
А как? По месяцам?
Я по неделям делал, тоже неплохо. А по дням это жесть, извините
источник

SB

Sergey Bubnov in ClickHouse не тормозит
Brahma Kumaris
Я по неделям делал, тоже неплохо. А по дням это жесть, извините
Понял, я просто только начинаю осваивать КХ и пока только разбираюсь в партициях, ключах сортировки и тд
источник

D

Dj in ClickHouse не тормозит
Sergey Bubnov
А как? По месяцам?
у нас и по часам есть. зависит от того:
- сколько времени храянятся все данные
- сколько времени в одном запросе запрашивается (минимальные-максимальный разброс)
- сколько данных итого в ГБ в один день
источник

M

Munir in ClickHouse не тормозит
Всем привет. Про табличную ф-ю numbers() подскажите плиз. Если я декартово множить буду, то кх сначала получит набор чисел, а потом забивать память дублями основной таблицы или он последовательно будет отрабатывать на каждый элемент numbers, т.е. в памяти только одна копия основной таблицы будет?
источник

S

Sergei in ClickHouse не тормозит
Вопрос знатокам. В партиционированную ReplicatedMergeTree таблицу залились задвойки данных.
Запустил поочередно по партициям OPTIMIZE DEDUPLICATE, схлопнулись все, кроме одной.
Куда копать? OPTIMIZE FINAL тоже без эффекта.
Размер партиции 6 ГБ, в ней 13 партов (active=1).
источник

S

Sergei in ClickHouse не тормозит
Sergey Bubnov
А как? По месяцам?
Мы выбрали промежуточный вариант - по неделям.
PARTITION BY toYYYYMMDD(toMonday(clock))
источник

L

Lazoreth in ClickHouse не тормозит
Друзья, подскажите ещё пожалуйста, столкнулся с проблемой при даунсемплинге. Есть вот такая вот вьюха
CREATE MATERIALIZED VIEW external_ips_daily
   ENGINE = SummingMergeTree(bv) PARTITION BY toYYYYMM(date) ORDER BY (date, uuid)
   AS SELECT
      toDate(sample_time) as date,
      port_id as uuid,
      ip_address,
      count(*) as bv
FROM external_ips
GROUP BY date, port_id, ip_address;

Таблица external_ips - ReplacingMergeTree, соответственно туда данные пишут несколько коллекторов. И во вьюху залетает по несколько записей через count(*), потому что исходная таблица не успевает дубликаты схлопнуть. Существуют может быть какие-то рецепты что бы это обойти? Пока из идей только всё-таки переход на AggregationMergeTree черезу полное дублирование записей во вьюху с аггрегацией
источник

L

Lazoreth in ClickHouse не тормозит
Если логически подумать - можно вообще выкинуть count(*) и просто писать еденицу. По идее работать должно
источник

S

Slach in ClickHouse не тормозит
Lazoreth
Друзья, подскажите ещё пожалуйста, столкнулся с проблемой при даунсемплинге. Есть вот такая вот вьюха
CREATE MATERIALIZED VIEW external_ips_daily
   ENGINE = SummingMergeTree(bv) PARTITION BY toYYYYMM(date) ORDER BY (date, uuid)
   AS SELECT
      toDate(sample_time) as date,
      port_id as uuid,
      ip_address,
      count(*) as bv
FROM external_ips
GROUP BY date, port_id, ip_address;

Таблица external_ips - ReplacingMergeTree, соответственно туда данные пишут несколько коллекторов. И во вьюху залетает по несколько записей через count(*), потому что исходная таблица не успевает дубликаты схлопнуть. Существуют может быть какие-то рецепты что бы это обойти? Пока из идей только всё-таки переход на AggregationMergeTree черезу полное дублирование записей во вьюху с аггрегацией
вы не правильно понимаете что такое VIEW и как оно работает

это не "исходная таблица не успевает схлопнуть", она их схлапывает но существенно позже вставки

во VIEW прилетает только кусок данных который вставляется конкретным INSERT
и селект работает не с external_ips
а с куском данных из INSERT который вставляется в external_ips

VIEW это AFTER INSERT триггер который вешается на все таблицы из FROM секции
источник

L

Lazoreth in ClickHouse не тормозит
Slach
вы не правильно понимаете что такое VIEW и как оно работает

это не "исходная таблица не успевает схлопнуть", она их схлапывает но существенно позже вставки

во VIEW прилетает только кусок данных который вставляется конкретным INSERT
и селект работает не с external_ips
а с куском данных из INSERT который вставляется в external_ips

VIEW это AFTER INSERT триггер который вешается на все таблицы из FROM секции
По этому запись еденицы вместо count и должна сработать
источник

L

Lazoreth in ClickHouse не тормозит
По сути мы просто дублируем запись в таблицу с другим движком же
источник