Size: a a a

ClickHouse не тормозит

2021 February 17

S

Slach in ClickHouse не тормозит
Марина
Добрый день! Мне нужно соединить два запроса - соединяю через union all. У меня выводится ошибка.
В первом запросе в одном столбце тип данных varchar, во второй таблице столбец с таким же названием с типом nulltype. Как преобразовать столбец нуллтайп в варчар?
https://clickhouse.tech/docs/en/sql-reference/functions/functions-for-nulls/#tonullable
в первой таблице к String примените =)
в clickhouse Varchar это алиас на String
и String универсальный тип для любой длинны
источник

AK

A K in ClickHouse не тормозит
Добрый день, коллеги! Подскажите: Получаю данные из kafka в таблицу и за тем делаю мариалайзед вью по ней. Проблема в том что в таблице из kafka данные появляются, а в таблицу и материалайзед вью не приходят.
источник

AK

A K in ClickHouse не тормозит
код таблиц и вьюхи:
источник

AK

A K in ClickHouse не тормозит
CREATE TABLE kafka_analogs (
   main_product_guid String,
   analog_product_guid String,
   rating UInt8,
   stage_stamp DATETIME
 ) ENGINE = Kafka('10.10.3.171:9092', 'analogs.mow', 'dwh_ch', 'JSONEachRow');

-- DROP TABLE stat_analogs
CREATE TABLE stat_analogs (
   main_product_guid String,
   analog_product_guid String,
   rating UInt8,
   date_stamp UInt32
 ) ENGINE = MergeTree()
 ORDER BY (date_stamp)
 PARTITION BY (date_stamp);
 
-- drop  VIEW  fact_product_analogs
CREATE MATERIALIZED VIEW fact_product_analogs TO stat_analogs
   AS SELECT      
    main_product_guid,
    analog_product_guid,
    rating,
    toYYYYMMDD(stage_stamp) AS date_stamp
   FROM kafka_analogs;
источник

S

Slach in ClickHouse не тормозит
A K
Добрый день, коллеги! Подскажите: Получаю данные из kafka в таблицу и за тем делаю мариалайзед вью по ней. Проблема в том что в таблице из kafka данные появляются, а в таблицу и материалайзед вью не приходят.
в логах что нибудь смотрели?
запрос корректный в  SELECT для MV?
источник

AK

A K in ClickHouse не тормозит
запрос корректный, логи не смотрел. их можно посмотреть с клиента DBeaver?
источник

S

Slach in ClickHouse не тормозит
A K
запрос корректный, логи не смотрел. их можно посмотреть с клиента DBeaver?
ну только если у вас system.text_log  настроен, тогда да

в общем /var/log/clickhouse/clickhouse-server.log посморите на предмет ошибок...
так то на первый взгляд должно работать и данные в stat_analogs должны появляться
в доке
https://clickhouse.tech/docs/ru/engines/table-engines/integrations/kafka/
фактически аналогичный пример
источник

AK

A K in ClickHouse не тормозит
Slach
ну только если у вас system.text_log  настроен, тогда да

в общем /var/log/clickhouse/clickhouse-server.log посморите на предмет ошибок...
так то на первый взгляд должно работать и данные в stat_analogs должны появляться
в доке
https://clickhouse.tech/docs/ru/engines/table-engines/integrations/kafka/
фактически аналогичный пример
Похоже не настроен. Да делал по примеру и даже пустые строки появлялись когда такие же поля как в примере указывал, потом поменял на свои поля и все пропало, хотя в в таблицу из кафки идут данные
источник

S

Slach in ClickHouse не тормозит
A K
Похоже не настроен. Да делал по примеру и даже пустые строки появлялись когда такие же поля как в примере указывал, потом поменял на свои поля и все пропало, хотя в в таблицу из кафки идут данные
system.errors поглядите еще если есть
источник

М

Марина in ClickHouse не тормозит
Slach
https://clickhouse.tech/docs/en/sql-reference/functions/functions-for-nulls/#tonullable
в первой таблице к String примените =)
в clickhouse Varchar это алиас на String
и String универсальный тип для любой длинны
Если честно, то я не поняла...
Это через cast...?
источник

S

Slach in ClickHouse не тормозит
Марина
Если честно, то я не поняла...
Это через cast...?
SELECT toNullable(field1) ... FROM a
UNION ALL
SELECT field2 ... FROM b
источник

S

Slach in ClickHouse не тормозит
Марина
Если честно, то я не поняла...
Это через cast...?
это явное кастование
можно через
CAST(field1, 'Nullable(String)')
но не знаб что будет быстрее явно через функцию кастовать или через универсальную функцию вызов делать
toNullable должен быть быстрее по идее, надо мерять
источник

М

Марина in ClickHouse не тормозит
Slach
это явное кастование
можно через
CAST(field1, 'Nullable(String)')
но не знаб что будет быстрее явно через функцию кастовать или через универсальную функцию вызов делать
toNullable должен быть быстрее по идее, надо мерять
Спасибо!👍
источник

D

Dj in ClickHouse не тормозит
Mishanya
ну у меня данных не много на тестовой таблице, но 1кк записей в два раза быстрее dictGet() работает. Я решил спросить, может я чето не так делаю
@den_crane мне лень и я знаю что у вас есть гист =) дайте гист...
источник

M

Mishanya in ClickHouse не тормозит
Dj
@den_crane мне лень и я знаю что у вас есть гист =) дайте гист...
https://gist.github.com/mikekytyzov/7503874bde62ce31b3a459d2c98779d4

второй варик работает х3 медленнее
источник

D

Dj in ClickHouse не тормозит
Mishanya
https://gist.github.com/mikekytyzov/7503874bde62ce31b3a459d2c98779d4

второй варик работает х3 медленнее
на 4 строках там погода может тупо мешать =)
источник

M

Mishanya in ClickHouse не тормозит
Dj
на 4 строках там погода может тупо мешать =)
ну это упрощенный пример, у меня таблица распредленная, два словаря и там полей по пару штук
прост показываю пример как я делаю)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Mishanya
https://gist.github.com/mikekytyzov/7503874bde62ce31b3a459d2c98779d4

второй варик работает х3 медленнее
что медленее-то? join ?
что обсуждаем-то? join со словарем автоматически не переписывается в dictGet или что?
источник

M

Mishanya in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
что медленее-то? join ?
что обсуждаем-то? join со словарем автоматически не переписывается в dictGet или что?
да
я вот щас на продукшене чекнул - если джоинить таблицу Engine = Dictionary() на 1ккк записей = 2 секунды, если dictget - 0.1
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Mishanya
да
я вот щас на продукшене чекнул - если джоинить таблицу Engine = Dictionary() на 1ккк записей = 2 секунды, если dictget - 0.1
а если
ANY LEFT JOIN dictionary_as_table on tuple(dictionary_as_table.name) = tuple(source.name)source.name)
источник