• 01 February 2023 (153 messages)
  • https://t.me/clickhouse_ru
    @fenogentov #309740 02:29 AM, 01 Feb 2023
    Клик имеет обратную совместимость?
    У нас 2 сервера (2 гарда) v.19.3.
    Хочу перевести на 23
  • https://t.me/clickhouse_ru
    @orantius #309741 02:29 AM, 01 Feb 2023
    удачи
  • https://t.me/clickhouse_ru
    @fenogentov #309742 02:29 AM, 01 Feb 2023
    ???
  • https://t.me/clickhouse_ru
    @Man_from_Nocturne #309743 03:25 AM, 01 Feb 2023
    парни есть кто не спит ? вопросик по мониторингу есть
  • Не могу понять, как заполнить все нули предыдущими не нулями, последовательность 1,0,0,2,0,3,0,0,0. Должно получиться 1,1,1,2,2,3,3,3,3. Цифры взяты из столбца.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #309740 #309745 05:45 AM, 01 Feb 2023
    papa karlo имел в виду, что так делать не стоит, и ваши шансы на успешный апгрейд минимальны. Но если есть желание - можно попробовать.
    Теоретически новый clickhouse должен заработать на старых данных, но какие конкретно грабли вылезут в ваших конкретных SQL - неизвестно. Если у вас очень простые запросы и структуры таблиц, то может и заработает.
    По хорошему, имеет смысл делать апгрейд раз в полгода или год (по LTS версиям) тщательно просматривая список несовместимостей, и принимая решение по каждой индивидуально.
    В вашем "запущенном" случае, возможно стоит построить отдельный кластер, перелить данные и отладить SQL запросы на новой версии. Если данных очень много - перелить часть на тестовый кластер и отладить там.
  • https://t.me/clickhouse_ru
    @fenogentov #309746 05:47 AM, 01 Feb 2023
    У нас совершенно тупые и мелкие запросы.
    Сейчас как раз и хочу переделывать.
  • https://t.me/clickhouse_ru
    @fenogentov #309747 05:49 AM, 01 Feb 2023
    У нас агрегация пятиминутных данных вне клика, хочу переделать на материал виев переделать.
  • https://t.me/clickhouse_ru
    @fenogentov #309748 05:50 AM, 01 Feb 2023
    Да много чего хочу перекинуть на клик...
    А пока там только инсерт и селект простейшие по шардам
  • https://t.me/clickhouse_ru
    @fenogentov #309749 05:51 AM, 01 Feb 2023
    Тестовый шард в тестовом окружении есть.
  • https://t.me/clickhouse_ru
    @fenogentov #309750 05:52 AM, 01 Feb 2023
    Спасибо. Значит критичного НЕТ не прозвучало, значит надо просто протестится
  • https://t.me/clickhouse_ru
    Нашел один сниппет у себя, может сможете его к своему кейсу применить.

    WITH t AS
    (
    SELECT
    toDate('2022-01-01') AS d,
    1 AS v
    UNION ALL
    SELECT
    toDate('2022-01-04') AS d,
    2 AS v
    UNION ALL
    SELECT
    toDate('2022-01-09') AS d,
    3 AS v
    )
    SELECT
    d,
    v
    FROM t
    ORDER BY d ASC WITH FILL
    INTERPOLATE ( v AS v )

    Query id: 44f96091-c4d6-45f1-be1d-e1c91ca1b01e

    ┌──────────d─┬─v─┐
    │ 2022-01-01 │ 1 │
    └────────────┴───┘
    ┌──────────d─┬─v─┐
    │ 2022-01-02 │ 1 │
    │ 2022-01-03 │ 1 │
    │ 2022-01-04 │ 2 │
    └────────────┴───┘
    ┌──────────d─┬─v─┐
    │ 2022-01-05 │ 2 │
    │ 2022-01-06 │ 2 │
    │ 2022-01-07 │ 2 │
    │ 2022-01-08 │ 2 │
    │ 2022-01-09 │ 3 │
    └────────────┴───┘
  • Спасибо!
  • я бы примерно так попробовал бы начать
    with
    lagInFrame(val) OVER (PARTITION BY val ORDER BY val ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as prev,
    if(val = 0, prev, val) as myval
    select
    myval
    from
    table
  • https://t.me/clickhouse_ru
    @a1s_333444 #309754 07:53 AM, 01 Feb 2023
    Всем привет, можно ли дедуплицировать данные с помощью replicated_deduplication_window?
    Или возможно есть другое решение

    В общем идея такая:
    Есть два цода, в них по кластеру клика с одинаковыми данными.
    КХ пишет данные из кафки 1 цода и 2 цода одновременно
    На время работоспособности 1 цода, во 2 цоде, в кафке, пустые топики
    Но когда переключили на второй цод, то данные в топиках кафки будут одинаковые.

    Думаю как избавиться от дублей.
    1. Есть топорное решение - на момент переключения цода скейлить кафку в 0 в цод1.
    2. Решить через параметр replicated_deduplication_window

    Тут тоже есть вопросы:
    - в kafka engine max_block_size = 64535 это тот же самый блок, который движок будет хешировать и в дальнейшем сравнивать с другими блоками из кафки?
    - Параметр хоть и глобальный, но правильно ли я понимаю что он применяется конкретно на таблицу?
    - Если да, то исходя из самого большего топика, можем выставить в ~350 блоков ( 20 000 000÷64535~= 309 будет генерится за минуту) . Стоит ли в такую выкручивать или надо выставлять больше?
    - Насколько я могу понять, выкручивание этого параметра будет мне стоить CPU, сети и небольшой нагрузкой на zk. IO не будет затронуто

    Заранее благодарю за ответы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #309744 #309755 08:01 AM, 01 Feb 2023
    with [4,0,0,2,0,3,0,0,0] as a
    select val, argMaxIf(val,row-1,val != 0) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    from (select arrayJoin(a) as val
    ,row_number() OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as row)
  • https://t.me/clickhouse_ru
    это counter потому что

    а не gauge
  • https://t.me/clickhouse_ru
    replicated_deduplication_window
    нужен для дедупликации блоков при повторной вставке точно таких же данных

    то есть вы делаете INSERT
    в середине что-то идет не так (сеть моргнула)
    и вы не знаете. вставил сервер данные или нет
    вы вставляете данные повторно
    и если точно такой же блок данных с такой же контрольной суммой был вставлен ранее, то ваш второй INSERT просто игнорируется...

    ну вот это window это время в течении которого в ZK будут контрольные суммы партов вставленных храниться для ReplicatedMergeTree таблицы
  • На сколько я понимаю, оно показывает текущее использование памяти, и почему-то превращается в петабайты, хотя между ними проскакивают и мегабайты 520Мб - это как раз правильное значение.
    На самом деле оказалось, что дело в битых данных в trace_log: в логах заметил, что крашится мердж на последних партах этой таблицы с сообщением
    [Queue = DB::MergeMutateRuntimeQueue]: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 256.00 PiB (attempt to allocate chunk of 288230376155744279 bytes)
    и поскольку смерджить оно пытается постоянно, то и постоянно в логе валятся ошибки а мемори трекинг взлетает до указанного значения. Это влияет на остальные запросы которые иногда ошибочно прибиваются из-за превышения лимита.
    + если ORDER BY trace_log тоже выдавал ошибку unexpected EOF, хотя без сортировки было все ок.

    Я просто сделал транкейт на таблицу trace_log - и проблема сразу решилась: с памятью все ок, запросы не падают, ошибки пропали.
  • https://t.me/clickhouse_ru
    тогда это баг
    судя по bug tracking надо версию clickhouse обновить до 22.3 как минмум

    https://github.com/ClickHouse/ClickHouse/issues/41917#issuecomment-1264121675
    Memory limit (total) exceeded: would use 275.91 PiB (attempt to allocate chunk of 4826417 bytes), maximum: 56.63 GiB · Issue #41917 · ClickHouse/ClickHouse

    ClickHouse version: 22.3.3.44 Machines Memory: 62G OS: CentOS 7.6.1810 Hello! I often receive this error during the time when I use ck. I thought it could be solved by setting max_server_memory_usa...

  • https://t.me/clickhouse_ru
    Window это не время, вы наверное с другим параметром путаете

    replicated_deduplication_window
    The number of most recently inserted blocks for which ClickHouse Keeper stores hash sums to check for duplicates.
  • https://t.me/clickhouse_ru
    @a1s_333444 #309761 08:24 AM, 01 Feb 2023
    Либо в документации ошибка
  • https://t.me/clickhouse_ru
    тьфу ... да, извините, это не время конечно, это кол-во блоков

    https://clickhouse.com/docs/en/operations/settings/merge-tree-settings/#replicated-deduplication-window
    MergeTree tables settings | ClickHouse Docs

    The values of mergetree settings (for all MergeTree tables) can be viewed in the table system.mergetreesettings, they can be overridden in config.xml in the mergetree section, or set in the SETTINGS section of each table.

  • https://t.me/clickhouse_ru
    все ок в документации =)
  • https://t.me/clickhouse_ru
    Собственно вопросы остаются открытыми, как приблизительно работает replicated_deduplication_window я знаю:)
  • https://t.me/clickhouse_ru
    если вы вставляете данные из Kafka
    то по моему нет гарантии что при потере ДЦ данные будут вставляться теми же самыми блоками в replicatedmergetree

    для engine=Kafka нет exactly once семантики
  • https://t.me/clickhouse_ru
    Оу, точно
    ‘’’нет гарантии что при потере ДЦ данные будут вставляться теми же самыми блоками в replicatedmergetree’’’
    Об этом я не подумал
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-integrations/altinity-kb-kafka/altinity-kb-kafka-main-parsing-loop/

    вот надеюсь поможет для лучшего понимания как engine=Kafka работает
  • https://t.me/clickhouse_ru
    exactly once есть в kafka-connect-sink
    https://clickhouse.com/docs/en/integrations/kafka/clickhouse-kafka-connect-sink/#configuration-options
    ClickHouse Kafka Connect Sink | ClickHouse Docs

    The official Kafka connector from ClickHouse.

  • Я обновлялся до последней: 23.1.2.9. У меня просто ощущение, что оно не могло из-за битого файла правильно определить правильный объем памяти. Поскольку я на обычном селекте с сортировкой получал "неожиданный конец файла". А неправильная память - это следствие.
    А вот как "убились" данные в trace_log - ума не приложу.
  • https://t.me/clickhouse_ru
    Это не подходит, так как инстансы Кафки разные :/
  • https://t.me/clickhouse_ru
    23.1 такая себе версия
    по ссылке перейдите

    22.3 последнюю там как минимум рекомендуют
  • https://t.me/clickhouse_ru
    @itsreallyalim #309772 08:33 AM, 01 Feb 2023
    Салют
    Помогите оптимизировать селект
    У меня есть таблица с результатами пингов (там окол 200к пингов в секунду прилетает). Я часто выгребаю оттуда данные для графиков и тд.
    Допустим, хочу на графике отобразить даныне за месяц - клик будет выгребать полдня. Вопрос: можно ли как-то в клике понижать гранулярность выдачи? В графике за месяц не нужны абсолютно все записи, ведь масштаб очень большой. Все равно не оторазить все тысячи записей.
    Еще такой момент, допустим я построил граффик за два месяца, вижу там интересный период, выделяю его, в клик уже запрашивается другой период, поменьше, точность там уже по сути должна быть больше так как период меньше, но ‘плотность’ та же.
    Можно ли такое провернуть в клике?
  • https://t.me/clickhouse_ru
    > - Насколько я могу понять, выкручивание этого параметра будет мне стоить CPU, сети и небольшой нагрузкой на zk. IO не будет затронуто

    да, все правильно понимаете, если ZK на выделенных машинах, то беспокоится смысла нет, но чем больше кол-во блоков. тем больше времени уйдет на взаимодейтсвие с ZK и может время вставки увеличиться, но у вас кафка, так что вы этого не заметите...
  • https://t.me/clickhouse_ru
    Да похоже другого варианта, кроме как скейлить в 0 кафку, нету
  • Да, я перешел - почитал. Там же и пишет: Such bizarre numbers are usually a sign of corrupted data... У меня как раз "поломка" была в таблице трейс лог. После чистки - стало ок. Больше вообще ничего не менял.

    А вот по версиям вопрос. 23.1.2.9 - последняя стабильная. Я думал такую можно безопасно использовать. Где можно увидеть именно рекомендуемые для продакшена?
  • https://t.me/clickhouse_ru
    из самого простого можно SAMPLE BY в SELECT использовать
    ну и в зависимости от масштаба разный SAMPLE BY брать...
    https://clickhouse.com/docs/en/sql-reference/statements/select/sample/

    почитайте про Materialized View+AggregatinMergeTree и Projections в документации

    https://clickhouse.com/docs/en/sql-reference/statements/create/view#materialized
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree/

    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#projections

    также был GraphiteMergeTree
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/graphitemergetree/
    в котором есть rollup (старые данные со временем компактифицируются через какую нибудь функцию типа avg)
    SAMPLE Clause | ClickHouse Docs

    The SAMPLE clause allows for approximated SELECT query processing.

  • https://t.me/clickhouse_ru
    разные разное рекомендуют =)
    stable в clickhouse означает "тесты зелененькие"

    есть LTS релизы когда больше внимания bug fix уделяется чем фичам...
    это обычно в марте и в августе релизы .3 и .8
    https://clickhouse.com/docs/en/faq/operations/production/
    Which ClickHouse version to use in production? | ClickHouse Docs

    which-clickhouse-version-to-use-in-production}

  • https://t.me/clickhouse_ru
    Спасибо, сейчас изучу
  • @spirid_sv #309779 09:10 AM, 01 Feb 2023
    Привет) Подскажите, при выгрузке в ORC/Parquet - они сами жмут или надо дожимать gz/bz2?
  • https://t.me/clickhouse_ru
    Правильно ли я понял, sample можно использовать только если я указал sample expression при создании таблицы и это никак не пофиксить?
  • https://t.me/clickhouse_ru
    @itsreallyalim #309781 09:11 AM, 01 Feb 2023
    Вижу что можно изменить его
    https://clickhouse.com/docs/en/sql-reference/statements/alter/sample-by/
  • https://t.me/clickhouse_ru
    да, извините затупил, забыл про это
    вместо
    SAMPLE BY

    можно
    WHERE datetime64_field % 10 = 0
    или
    WHERE rand() % 10 = 0
  • https://t.me/clickhouse_ru
    да можно
  • https://t.me/clickhouse_ru
    а если мне нужен какой то определенный период? WHERE (created_at < ‘2022-12-19T22:09:52+03:00’ create_at > ‘2022-12-19T22:09:52+03:00’) and created_at % 10 = 0
    или лучше период засунуть в prewhere?
  • https://t.me/clickhouse_ru
    WHERE (created_at < ‘2022-12-19T22:09:52+03:00’ AND create_at > ‘2022-12-19T22:09:52+03:00’) AND rand() % 10 = 0

    выберет 10% от всех данных...
  • https://t.me/clickhouse_ru
    @kano1701 #309786 10:05 AM, 01 Feb 2023
    добрый день, можно ли в клик делать группировку по массиву, у меня есть товары, ценники, выделяю 5 сегментов ( 500-1000, 1000-1500, 1500-2000, 2000-2500, 2500-3000). потом получаю информацию по этим группам, выручку, кол-во продаж, рейтинг. но сейчас на каждую группу уходит отдельный запрос, там в where указывается ценовой диапазон. Хочу получить данные одним запросом. есть ли такая возможность?
  • https://t.me/clickhouse_ru
    наверняка можно, но только не понятно, что вы и как считаете, поэтому предложить нечего
  • https://t.me/clickhouse_ru
    вы можете делать что-то вроде
    sumIf(metric, price BETWEEN 500 AND 1000) metric_500_1000,
    sumIf(metric, price BETWEEN 1001 AND 1500) metric_1000_1500
    и тд
  • https://t.me/clickhouse_ru
    @m1khal3v #309789 10:08 AM, 01 Feb 2023
    Aggregate Function Combinators | ClickHouse Docs

    The name of an aggregate function can have a suffix appended to it. This changes the way the aggregate function works.

  • https://t.me/clickhouse_ru
    не плохая идея, надо попробовать
  • https://t.me/clickhouse_ru
    @marseq #309791 10:09 AM, 01 Feb 2023
    Добрый день, хотим обновляться с версии 22.3.3.44-lts, на какую версию можно безболезненно перейти? сейчас последняя lts 22.8.12.20, возможно ли на нее? я так понимаю нужно постепенно повышать версии и тестить проблемы.
  • @pavel_maksimow #309792 10:10 AM, 01 Feb 2023
    Подскажите пожалуйста, как очистить таймзону из datetime?
  • https://t.me/clickhouse_ru
    я бы подождал марта и следующей LTS. почитал бы ридми и решал
  • https://t.me/clickhouse_ru
    Может быть вам нужно это toTimeZone(datetime_column, 'UTC')
  • он сместит время, надо чтоб такое же осталось, я понял, что поможет timeZoneOffset
  • @865226418 #309796 10:18 AM, 01 Feb 2023
    мы таки запустили qryn для Clickhouse - если кому-то интересно -https://www.producthunt.com/posts/qryn
    qryn - Polyglot Observability for Logs, Metrics and Traces | Product Hunt

    qryn, polyglot observability on ClickHouse. Use APIs you are familiar with such as Loki, InfluxDB, Prometheus, Elastic, OTLP, for logs, metrics, traces and get started in a quick and easy way either self-hosted or with one of our integration partners.

  • @865226418 #309797 10:19 AM, 01 Feb 2023
    opensource версия на https://github.com/metrico/qryn
    GitHub - metrico/qryn: qryn is a polyglot, high-performance observability framework for ClickHouse. Ingest and analyze logs, metrics and traces from any agent supporting Loki, Prometheus, OTLP, Tempo, Elastic, InfluxDB and more! (formerly cLoki)

    qryn is a polyglot, high-performance observability framework for ClickHouse. Ingest and analyze logs, metrics and traces from any agent supporting Loki, Prometheus, OTLP, Tempo, Elastic, InfluxDB a...

  • https://t.me/clickhouse_ru
    переезжали с 22.3 на 22.8, никаких подводных камней не было, но всё зависит от того какой функционал вы используете и какое у вас железо. вот например
  • https://t.me/clickhouse_ru
    @m1khal3v #309799 10:34 AM, 01 Feb 2023
    не знаю, я лично наверное пропущу 22.8 и буду ставить через год 23.8

    слишком много херни типа
    https://github.com/ClickHouse/ClickHouse/issues/44500
    https://github.com/ClickHouse/ClickHouse/issues/43816
    https://github.com/ClickHouse/ClickHouse/issues/43865
  • https://t.me/clickhouse_ru
    @root_user_name #309800 11:08 AM, 01 Feb 2023
    Здравствуйте, при работе с TSV (FORMAT TabSeparated) столкнулись с проблемой: при попытке вставки данных из tsv файла падаем на вставке 2-й записи, Code: 27. DB::ParsingException: Cannot parse input: expected '\n' before: '\t {начало 2-й записи}.
    При этом работает вставка данных из файлов с одним рядом (1-й записью). Подскажите, что можно сделать
  • https://t.me/clickhouse_ru
    @xoradd ↶ Reply to #309800 #309801 11:16 AM, 01 Feb 2023
    Количество ожидаемых столбцов не соответствует описанию в DDL
  • https://t.me/clickhouse_ru
    То есть грубо говоря, это кликхаус с поверх апи ?
  • ну если совсем грубо :-) а так это всеядная апп которая использует кликхаус как storage
  • @7699150 #309804 11:55 AM, 01 Feb 2023
    всем привет!
    Подскажите пожалуйста, можно ли в настройках S3 бакета добавит креды для двух бакетов?
  • @7699150 #309807 11:58 AM, 01 Feb 2023
    Я сейчас ввел такой конфиг:

    <?xml version="1.0"?>
    <yandex>
    <s3>
    <data_transfer_first>
    <endpoint>https://first-data-transfer.s3.us-east-1.amazonaws.com/</endpoint>
    <access_key_id>...key_id...</access_key_id>
    <secret_access_key>...secret...</secret_access_key>
    </data_transfer_first>

    <data_transfer_second>
    <endpoint>https://second-data-transfer.s3.us-east-1.amazonaws.com/</endpoint>
    <access_key_id>...key...</access_key_id>
    <secret_access_key>...secret...</secret_access_key>
    </data_transfer_second>
    </s3>
    </yandex>

    и почему-то могу использовать только второй бакет
  • кх 22.7
  • https://t.me/clickhouse_ru
    и где вы это хотите использовать? в табличной функции s3( ...) или в табличном движке?

    запрос покажите
    и ошбку

    эти настройки применяются в по префиксу URL
    то есть если у вас URL
    начинается с https://second-data-transfer.s3.us-east-1.amazonaws.com/
    то применятся настройки data_transfer_second

    если с
    https://first-data-transfer.s3.us-east-1.amazonaws.com/
    то
    data_transfer_first
  • как S3 engine
    чего-то со вторым хочет работать, а с первым нет
    креды проверил – точно все правильно
    ошибка – якобы файла нет. Хотя он есть
    DB::Exception: The AWS Access Key Id you provided does not exist in our records.
  • https://t.me/clickhouse_ru
    ну есть такая вещь как IAM еще
    может у вас с вашего сервера на S3 конкретно на этот бакет нельзя обратиться
  • было бы наверное access denied ?
  • https://t.me/clickhouse_ru
    не факт
  • понял
    перепроверю тогда
    Спасибо
  • https://t.me/clickhouse_ru
    ну то есть самый нормальный вариант с указанными кредами соединиться напрямую через
    s3 табличную функцию

    или aws s3 вызвать на сервере где clickhouse-server запущен (или внутри контейнера)
  • пробнул с кредами в функции – такая же ошибка
    хотя на другом кх-кластере, который в этот же S3 смотрит – нет ошибки

    поэтому или доступ с сервера поломан, либо баг
  • @kpuzakov #309817 12:17 PM, 01 Feb 2023
    Добрый день!

    Подскажите где можно подробнее посмотреть про kafka engine, документация на Altinity от 2020 года и настройки предлагаемы для пула потоков click показывает как устаревшие и не использует.

    Проблема в том, что встроенный движок чтения из kafka плохо справляется с большим потоком данных из kafka и теряет 97% данных.
    Трейс еще не смотрел, включу сегодня.
  • https://t.me/clickhouse_ru
    не должен он ничего терять,

    отлично он справляется
    думаю проблема в том какая у вас структура целевой таблицы в которую через Materialized View из Engine=Kafka данные вставляются
  • Структура корректно сделана, данные идут без проблем, если объем сообщений в миллионах.  
    За час в kafka пришел 1 миллиард сообщений.
    Клик его вычитывал 8 часов и в итоге смог залить в таблицы только 30 миллионов.

    При меньшей нагрузке все без потерь идет.
  • @pnx900 #309820 12:48 PM, 01 Feb 2023
    толи лыжи не едут, то ли я того...

    создаю таблицу с двумя полями, а клик разбивает поле cookie на два:

    cookie.name, cookie.value.

    CREATE OR REPLACE TABLE temporary.attribution
    (
    date Date,
    cookie Array(Tuple(name Nullable(String), value Nullable(String)))
    )
    ENGINE = MergeTree
    PARTITION BY toDate(date)
    ORDER BY date

    может кто встречал такое, подскажите плиз как лечить.

    версия 22.8
  • https://t.me/clickhouse_ru
    @m1khal3v #309821 12:52 PM, 01 Feb 2023
    Подскажите пожалуйста при изменении default expression с MATERIALIZED на ALIAS физически данные потом с диска удалятся или предварительно надо CLEAR COLUMN сделать?
  • https://t.me/clickhouse_ru
    ClickHouse столбцовая СУБД, поэтому массив Nested, простой Nested, и т.д. всё равно будут представлены отдельными столбцами 🙂
  • https://t.me/clickhouse_ru
    Вставлять при этом в них действительно можно массив туплов и вроде должно работать правильно
  • https://t.me/clickhouse_ru
    @didenko #309824 12:55 PM, 01 Feb 2023
    <Error> void DB::StorageKafka::threadFunc(size_t): Code: 41. DB::ParsingException: Cannot read DateTime: neither Date nor Time was parsed successfully: while executing 'FUNCTION parseDateTimeBestEffort(JSONExtract(message, 'message', 'meta', 'timestamp', 'String') :: 12) -> parseDateTimeBestEffort(JSONExtract(message, 'message', 'meta', 'timestamp', 'String')) DateTime : 11': while pushing to view db.view_good (8951a48b-4951-4b91-9f14-2b206af5a06b). (CANNOT_PARSE_DATETIME)

    А как-то можно понять на каком конкретно сообщении из кафки клик споткнулся?
    По ошибке не ясно.
    Попробовал посмотреть где консьюмеры остановились - там нормальное время указано. Сделал селект на даты - они нормально парсятся...
    Может какой-то статус запросить, чтобы понять какие конкретно партиции читает этот инстанс баз?
    Или какой-то иной способ дебага этой ошибк?
  • @pnx900 ↶ Reply to #309823 #309825 12:56 PM, 01 Feb 2023
    просто это ж KeyVal, а он создает Key, Val как отдельные столбцы, как я потом соберу все в кучу? только по индексу выходит...
  • https://kb.altinity.com/altinity-kb-integrations/altinity-kb-kafka/error-handling/
    вот тут есть пример отлавливания ошибок
  • @pnx900 ↶ Reply to #309825 #309827 01:09 PM, 01 Feb 2023
    оу ееее,

    есть конфиг который управляет разбитием Nested на столбцы:

    https://clickhouse.com/docs/ru/operations/settings/settings/#flatten-nested

    может кому пригодится
  • @subotic0 #309828 01:29 PM, 01 Feb 2023
    Всем привет, есть мат вью которая пишет в таблицу с движком AggregatingMergeTree и вставка делается стейст функциями argMaxState
    Могут ли быть проблемы при вставке ретро данных если одновременно со вставкой ретро уже работает текущая мат вью?
  • @Frank030366 #309829 01:32 PM, 01 Feb 2023
    Всем привет - не подскажет кто-нибудь, где можно почитать более подробное описание команд backup/restore со всеми вариантами настроек, в особенности касательно варианта использования с ON CLUSTER clause? Описание на офф сайте очень скудное и даже простейшие эксперименты показывают, что некоторые вещи работают далеко не так, как там описано.
  • https://t.me/clickhouse_ru
    ошибки то какие говорит при этом?

    у нас без проблем клик на engine=Kafka
    миллионы сообщений в секунду вставляет
  • что конкретно ? мы создали backup конфиг и после рестарта все работает как и ожидалось
  • Хорошо, вот test case: есть кластер, допустим, на два шарда по две реплики в каждом. В нём сделана база, в ней одна ReplicatedMergeTree таблица и одна смотрящая в неё Distributed таблица. Ко всем нодам по одинаковому пути смонтирован сетевой диск для backups, который прописан в секции storage_configuration. Пробую делать backup на одной ноде - всё нормально, пробую on cluster - не работает.

    Ещё один момент - как заставить backup делаться в файл с расширением, отличным от .zip и чтобы сжатие было именно то, которое задано в команде? Т.к. при указании любого другого имени вместо файла создаётся каталог и никакое сжатие ен включается.
  • а что оно пишет в логах когда выполняется ON CLUSTER ?
  • на текущий момент поддерживается zip, поскольку только он создаёт рекурсивно архив
  • Вот такая ошибка выдаётся при попытке сделать backup database on cluster:

    Code: 999. DB::Exception: Received from localhost:9000. DB::Exception: DB::Exception: Code: 999. Coordination::Exception: Node exists, path: /clickhouse/backups/backup-2e55c972-9646-4e03-bffc-e8b77106c358/repl_part_names/1082c8f1%2D6287%2D4fd6%2D8729%2Df8ffdbdb48d0/01: While collecting data of table test.events_local for backup. (KEEPER_EXCEPTION),. (KEEPER_EXCEPTION)

    Ну а касательно расширения - ну там как бы ошибки никакой нет, просто вместо файла создаётся каталог и никакого сжатия.
  • https://t.me/clickhouse_ru
    Супер. Идея огонь. Попробую прикрутить.
    А вот интересно - не нашел ответ. В default режиме если в SELECT перекладывающем в MV из кафки происходит ошибка - что с этим сообщением становится? он его скипает или пытается периодическ вычитать заново?
  • https://t.me/clickhouse_ru
    частично ответ есть:
    kafka_skip_broken_messages — Kafka message parser tolerance to schema-incompatible messages per block. If kafka_skip_broken_messages = N then the engine skips N Kafka messages that cannot be parsed (a message equals a row of data). Default: 0.

    но если равно=0, то что он дальше делает?
  • https://t.me/clickhouse_ru
    нигде пока...

    разве что тесты и исходники смотреть
  • То есть опять, как всегда, великий и могучий open source копать. Печаль...
  • https://t.me/clickhouse_ru
    даже более того =)

    PR вот сюда https://github.com/ClickHouse/ClickHouse/tree/master/docs/en/sql-reference/statements сделаете

    вам будут несказанно благодарны все участники сообщества
    ClickHouse/docs/en/sql-reference/statements at master · ClickHouse/ClickHouse

    ClickHouse® is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • это ошибка киппера - он пытается создать директорию, которая уже существует - проверьте /clickhouse/backups/backup-2e..... Киппер на том же хосту ?
  • Нет, ZooKeeper на отдельных хостах.
  • @865226418 #309843 02:06 PM, 01 Feb 2023
    ZooKeeper или clickhouse-keeper ?
  • ZooKeeper
  • возможно проблема в нём и он не создаёт бекапы. По любому, проверьте если эта папка создана предыдущими бекапами ?
  • Сделал чистый прогон - остановил ClickHouse на всех нодах, вынес все данные из ClickHouse через rm -rf в каталоге с данными и в каталоге под backups, снёс ветку /clickhouse в ZooKeeper, запустил кластер, залил скриптами тестовые данные, команда backup database test on cluster '{cluster}' to Disk('backups', 'test-cl') вы даёт ровно ту же ошибку.
  • @Frank030366 #309847 02:16 PM, 01 Feb 2023
    То есть никаких хвостов ни в ClickHouse, ни в ZooKeeper на момент теста команды не было.
  • а если заменить на clickhouse-keeper ? Или это геморой ?
  • Ну в production у нас пока замена на clickhouse-keeper не планируется. На стенде попробовать можно, но это уже вопрос не 10 минут однозначно.
  • чтобы исключить все варианты
  • Я понимаю - чуть позднее попробую, отпишусь по результатам.
  • 👍
  • https://t.me/clickhouse_ru
    стоит сделать
    какой то docker-compose.yaml
    и SQL для воспроизведения

    и зарепортить issue на https://github.com/ClickHouse/ClickHouse/issues

    выглядит как конкурентная попытка писать в один и тот же ключ в zookeeper с разных нод

    версия clickhouse-server какая?

    попробуйте до 23.1 обновиться
  • https://t.me/clickhouse_ru
    @redr0bin #309854 02:42 PM, 01 Feb 2023
    а есть какой-то из существующих драйверов с поддержкой INSERT INTO tbl FORMAT JSONEachRow ?
  • https://t.me/clickhouse_ru
    @redr0bin #309855 02:42 PM, 01 Feb 2023
    или только через cli или curl/requests ?
  • https://t.me/clickhouse_ru
    @xoradd ↶ Reply to #309855 #309856 02:45 PM, 01 Feb 2023
    а вам этого мало?
  • https://t.me/clickhouse_ru
    да как-то хотелось бы иметь честные try except, ну нет так нет :)
  • https://t.me/clickhouse_ru
    @xoradd ↶ Reply to #309857 #309858 02:46 PM, 01 Feb 2023
    python + requests + json.dumps + try/except
  • https://t.me/clickhouse_ru
    Эта штука работает JSONEachRow и подобных форматом.
    У меня JSONAsString - т.е. ошибки на этапе чтения как я понимаю нет. В итоге эта вьюха всё читает безошибочно.
    А вот если во вьюхе JSONExtract делает - то неясно как ошибку идентифицировать. 🙁
  • https://t.me/clickhouse_ru
    а у тебя невалидный JSON чтоли приходит?

    или валидный но в котором данных нет?
  • https://t.me/clickhouse_ru
    @didenko #309861 03:12 PM, 01 Feb 2023
    Я в кафке смотрю. Он валидный. Через jq. его прогоняю валидный.
    Поле достаю. Достается.
    Делаю на него parseDateTimeBestEffort('') - работает.

    Но ошибку вот такую победить не могу.

    <Error> void DB::StorageKafka::threadFunc(size_t): Code: 41. DB::ParsingException: Cannot read DateTime: neither Date nor Time was parsed successfully: while executing 'FUNCTION parseDateTimeBestEffort(JSONExtract(message, 'message', 'meta', 'timestamp', 'String') :: 12) -> parseDateTimeBestEffort(JSONExtract(message, 'message', 'meta', 'timestamp', 'String')) DateTime : 11': while pushing to view db.view_good (8951a48b-4951-4b91-9f14-2b206af5a06b). (CANNOT_PARSE_DATETIME)
  • https://t.me/clickhouse_ru
    тоже сталкивался, по этому решил уйти на python.
  • https://t.me/clickhouse_ru
    @didenko #309863 03:14 PM, 01 Feb 2023
    У меня создана табличка.
    и такая вьюха

    CREATE MATERIALIZED VIEW db.view_good ON CLUSTER sharding_3shard_2repl TO db.events_good
    (
    `msg_client_timestamp` DateTime,
    ...
    ) AS
    SELECT
    parseDateTimeBestEffort(JSONExtract(message, 'message', 'meta', 'timestamp', 'String')) AS msg_client_timestamp,
    ...
    FROM db.kafka_good
  • @zamyatina_mariya #309864 03:46 PM, 01 Feb 2023
    Всем привет! такой вопрос. Есть s3 диск, есть своя storage_policy для него. Что-то никак не могу придумать и найти, как запретить некоторым пользователям использовать settings storage_policy = '...' при создании таблиц?
  • я через обычное mysql подключение делаю insert into table format TabSeparated далее перевод строки и затем csv и работает
  • @aoparin #309866 04:01 PM, 01 Feb 2023
    думаю, что это будет работать при любом протоколе подключения и с любым форматом
  • @weisscorp #309867 04:24 PM, 01 Feb 2023
    Привет народ! а как выключить трейс логи на совсем? из конфига кусок выпилил, total_memory_profiler_step обнулил, а логи все равно лежат в системной таблице
  • https://t.me/clickhouse_ru
  • сделал, не помогло
  • https://t.me/clickhouse_ru
    что не помогло?

    табличку то после этого грохнули через DROP TABLE system.trace_log ON CLUSTER '{cluster}' SYNC?

    настройки из конфига помогают не пистаь в таблицу
    а чистить ее руками все равно придестя
  • она пополняется )
  • https://t.me/clickhouse_ru
    таблицу DROP Делали?
    после этого сервер ребутили?
  • @weisscorp #309873 05:02 PM, 01 Feb 2023
    конечно
  • @weisscorp #309874 05:02 PM, 01 Feb 2023
    сначала ансиблом делал, потом пошел и руками на кластере создал файлики с такими значениями - похрен ему
  • https://t.me/clickhouse_ru
    grep trace_log /var/lib/clickhouse/preprocessed_configs/config.xml
    что показывает?
  • @weisscorp #309876 05:05 PM, 01 Feb 2023
    Data will be stored in system.trace_log table with query_id = empty string.
    <!-- Collect random allocations and deallocations and write them into system.trace_log with 'MemorySample' trace_type.
    <!-- <trace_log>
    <table>trace_log</table>
    </trace_log> -->
    Regardless of this configuration, the addresses are visible in the system.stack_trace and system.trace_log tables
    <trace_log>
    </trace_log>
  • @weisscorp #309877 05:06 PM, 01 Feb 2023
    пойду искать где это кусок последний
  • это тот кусок, что я взял по ссылке и раскрыл как xml в виде <trace_log><remove>0</remove></trace_log>
  • @weisscorp #309879 05:09 PM, 01 Feb 2023
    все равно пишутся
  • @weisscorp #309880 05:11 PM, 01 Feb 2023
    а, не, все норм )
  • https://t.me/clickhouse_ru
    там же тег, а не атрибут
  • https://t.me/clickhouse_ru
    у вас конфиги чтоли в yaml ?
  • @weisscorp #309883 05:17 PM, 01 Feb 2023
    В ансибле?
  • @weisscorp #309884 05:18 PM, 01 Feb 2023
    В клике нет
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #309885 06:10 PM, 01 Feb 2023
    Привет! Подскажите, кто-нибудь пользуется clickhouse-keeper в докере? При запуске получаю ошибку Our server id 3 not found in raft_configuration section

    if (!result.config && !allow_without_us)
    throw Exception(ErrorCodes::RAFT_ERROR, "Our server id {} not found in raft_configuration section", my_server_id);

    предполагаю, это потому что ip в конфиге не совпадает с ip внутри контейнера, не вижу в коде можно ли отключить эту проверку
  • https://t.me/clickhouse_ru
    у вас один keeper instance или кластер ?
  • https://t.me/clickhouse_ru
    вообще в raft_configuration сервера лучше задавать через DNS имена
  • https://t.me/clickhouse_ru
    кластер их 3х нод, использую dns имена
  • https://t.me/clickhouse_ru
    тогда попробуйте на первой ноде стартовать с ключем --force-recovery

    суть в том что raft configuration есть на диске в XML и в базе keeper
    и то что в базе типа приоритетно, нафига так сделано, до сих пор не ясно...
  • https://t.me/clickhouse_ru
    Спасибо, попробую
  • Пользуемся. Взял last image с docker hub - там отдельно есть имаджи для keeper. Полёт нормальный. Может в конфиге проблема.
  • https://t.me/clickhouse_ru
    @152836092 #309892 08:14 PM, 01 Feb 2023
    Всем привет!
    Может кто сможет подсказать, пожалуйста, как мне из такого параметра посчитать сумму всех значений в параметре 'c'.
    "dr_fin":[{"n":"1x2","c":1},{"n":"2x2","c":1},{"n":"3x1","c":1}] ?
  • https://t.me/clickhouse_ru
    Если вдруг кому будет интересно в будущем.
    Нормально из лога понять на каком конкретно сообщении происходит такая ошибка невозможно.
    Как можно упростить поиски:
    устанавливаем на кафка табличке опции:
    kafka_max_block_size = 1,
    kafka_num_consumers = 1,
    Это надо сделать, т.к. дефолтные батчи как правило сильно больше и копаться в топике придется глубоко и долго.

    запускаем цепочку.
    таким образом клик по-одному сообщению дойдет до проблемного. Оффсеты на проблемных партициях остановятся.
    Можно зайти в эти партиции в кафке и посмотреть сообщения.
    Либо можно попытать удачу и сделать запрос в таблицу кафки, но тут нет гарантий получить результат.
    На каждой ошибке клик будет рестартовать кафка-клиент, что будет приводить к ребалансингу и последующему чтению.
    Полагаю клик продолжает читать со следующей партиции.

    Тут по нюансам чтения я плаваю конкретно. Может опытные коллеги меня поправят.

    https://kb.altinity.com/altinity-kb-integrations/altinity-kb-kafka/altinity-kb-kafka-main-parsing-loop/ - тут описан цикл чтения данных.

    А свой null я нашел 🙂
  • https://t.me/clickhouse_ru
    @didenko #309894 08:27 PM, 01 Feb 2023
    Поведение с ребалансингом консьюмер группы во время ошибки записи в MV и перечитыванием батча - кстати очень интересная затея.
    В моем случае она привела к тому, что на кафка брокерах на сетевых интерефейсах появилась знатная расчестка под 100мегабит при обычных 2-5 мегабитах.
  • 02 February 2023 (182 messages)
  • @slwpkd #309895 02:29 AM, 02 Feb 2023
    Приветствую всех, помогите с составлением запроса
    Есть 3 таблицы
    sessions (id)
    bets (session_id, amount)
    wins (session_id, amount)

    Таблица session имеет по одной записи на сессию, bets, wins могут быть в множественном числе со связующим ключом session_id

    Хочу построить запрос, который позволит вывести суммарное значение sum(bets.amount), sum(wins.amount) для каждой сессии, join в данной ситуации не срабатывает, подскажите, какой запрос нужно делать
  • https://t.me/clickhouse_ru
    Обычный group by session_id тоже не работает? Два запроса можно сделать? Если надо именно один
    То есть ‘select … group by… union all select …group by’
  • @slwpkd ↶ Reply to #309896 #309897 03:22 AM, 02 Feb 2023
    Не сработало, пока сделал так
    SELECT
    id session_id,
    user_id,
    game_name,
    game_provider,
    bets,
    wins,
    created_at
    FROM slot_sessions AS sessions
    INNER JOIN
    (
    SELECT SUM(amount) bets, session_id FROM slot_bets GROUP BY session_id
    ) AS tbets
    ON tbets.session_id = sessions.id
    INNER JOIN
    (
    SELECT SUM(amount) wins, session_id FROM slot_wins GROUP BY session_id
    ) AS twins
    ON twins.session_id = sessions.id
    WHERE user_id = 2610
  • Помогите, не могу разобраться как решить замену (подстановка предыдущего значения, если семафор это ноль) в моëм примере:
    https://fiddle.clickhouse.com/a2b71383-7b2e-422e-9a2f-a76b8a70c0de
     
    сейчас
     
    1675149120  2023-01-31  0603  0     tag2
    1675149240  2023-01-31  0603  1     tag4
    1675149300  2023-01-31  0603  2     tag5
    1675149360  2023-01-31  0603  1     tag6
    1675149420  2023-01-31  0603  0     tag7
    1675149180  2023-01-31  0603  2     tag3
    1675149480  2023-01-31  0603  0     tag8
    1675149540  2023-01-31  0603  0     tag9
    1675149660  2023-01-31  0603  1     tag2
    1675149600  2023-01-31  0603  1     tag1
    1675149060  2023-01-31  0603  0     tag1
     
    должно стать
     
    1675149120  2023-01-31  0603  0     tag2
    1675149240  2023-01-31  0603  1     tag4
    1675149300  2023-01-31  0603  2     tag5
    1675149360  2023-01-31  0603  1     tag6
    1675149420  2023-01-31  0603  1     tag7
    1675149180  2023-01-31  0603  2     tag3
    1675149480  2023-01-31  0603  2     tag8
    1675149540  2023-01-31  0603  2     tag9
    1675149660  2023-01-31  0603  1     tag2
    1675149600  2023-01-31  0603  1     tag1
    1675149060  2023-01-31  0603  1     tag1
  • https://t.me/clickhouse_ru
    @palmface1337 #309899 07:07 AM, 02 Feb 2023
    Доброе утро, кто сталкивался с тем что кх не может достучаться до jdbc bridge?
    2023.02.02 10:02:25.414537 [ 94 ] {5fa76cee-380c-4854-85e0-b21681a9820b} <Debug> executeQuery: (from [::1]:45024) SELECT * FROM jdbc.crm_area LIMIT 10
    2023.02.02 10:02:25.415746 [ 94 ] {5fa76cee-380c-4854-85e0-b21681a9820b} <Trace> ReadWriteBufferFromHTTP: Sending request to http://localhost:9019/ping
    2023.02.02 10:02:25.417495 [ 94 ] {5fa76cee-380c-4854-85e0-b21681a9820b} <Trace> JDBCBridgeHelper: clickhouse-jdbc-bridge is not running, will try to start it
    При этом jdbc доступен
    curl -i http://localhost:9019/ping
    HTTP/1.1 200 OK
    Date: Thu, 02 Feb 2023 07:03:47 GMT
    Content-Length: 4
    Server: Jetty(9.4.z-SNAPSHOT)

    Ok.
    Версия бриджа старая - 1.0.1 - не работает, ошибка выше
    Если запускаю свежую версию - 2.1.0, то запросы работают, бридж доступен.
    Ранее старый бридж так же работал, но теперь кх отказывается его видеть.
    Что то где то могло закешироваться касательно бриджа?
  • https://t.me/clickhouse_ru
    Ошибка с трейсом
    https://pastila.nl/?00ea0713/0df928f86eda16e7bac844d8a6542356
  • https://t.me/clickhouse_ru
    можно сделать что то типа
    CREATE DICTIONARY slot_session_cached_dict AS SELECT session_id, user_id, game_name, game_provider FROM slot_session
    PRIMARY KEY session_id
    SOURCE (CLICKHOUSE(database 'default' table 'slot_sessions' ))
    LAYOUT(CACHE(...))

    и
    SELECT session_id, user_id, game_name, game_provider, SUM(bets) AS total_bets, SUM(wins) AS total_wins
    FROM (

    SELECT
    session_id,
    dictGet('default.slot_session_cached_dict','user_id',session_id) AS user_id,
    dictGet('default.slot_session_cached_dict','game_name',session_id) AS game_name,
    dictGet('default.slot_session_cached_dict','game_provider',session_id) AS game_provider,
    sum(amount) bets,
    0 wins
    FROM slot_bets
    WHERE user_id=2610
    GROUP BY session_id

    UNION ALL
    SELECT
    session_id,
    dictGet('default.slot_session_cached_dict','user_id',session_id) AS user_id,
    dictGet('default.slot_session_cached_dict','game_name',session_id) AS game_name,
    dictGet('default.slot_session_cached_dict','game_provider',session_id) AS game_provider,
    0 bets,
    sum(amount) wins
    FROM slot_wins
    WHERE user_id=2610
    GROUP BY session_id

    )
    GROUP BY session_id, user_id, game_name, game_provider

    запросы в UNION ALL будут паралельно работать
    правда таблицы будут кажется сканиться ПОЛНОСТЬЮ... хотя если там ORDER BY session_id может и будет слегка побыстрее
  • https://t.me/clickhouse_ru
    фиг знает, а что мешает то новую версию брижжа использовать?
    точно на 9019 висит старый бридж?

    может локалхост как нибудь не так

    ss -nltp | grep 9019 или netstat -nltp | grep 9019
    что показывает?

    может localhost как то не так резолвится... и кликхаус ломится например на ipv4 а бридж слушает ipv6?
  • Да, спасибо!
  • @VetaObrosova #309906 07:27 AM, 02 Feb 2023
    Привет ))
    Возможно кто-то сможет подсказать по вопросам установки clickhouse на сервер , это очень поможет, а то немного в тупике ☺️

    установила clickhouse на ubuntu 20.04, статус running. работает также на хосте сервера , создала учетку root c grant правами, и пользователя с доступом по хосту нашего сервера , у default права = 0.
    в итоге через созданных пользователей могу зайти по хосту сервера на порт 9000, а при авторизации в dataGrip по порту 8123 могу зайти только через default учетку. Как получить возможность заходить в datagrip через других созданных пользователей ?))
  • https://t.me/clickhouse_ru
    Мы как раз и готовимся к переходу на новую версию. Но перед этим в случае проблем прорабатываем сценарии отката.
    netstat -nltp | grep 9019
    tcp6 0 0 127.0.0.1:9019 :::* LISTEN 24057/java
  • https://t.me/clickhouse_ru
    @ilior #309908 07:33 AM, 02 Feb 2023
    Привет!
    А кто-то делал к CH интеграцию с Kafka с protobuf на основе confluence-kafka, c schema registry?
    У меня клику не нравится формат сообщения, но если вырезать оттуда байты от schema registry, то его все устраивает. Можно как-то эту проблему обойти?
  • не забыли указать откуда подключение разрешено?

    show create user root
    ┌─CREATE USER root─────────────────────────────────────────────────────────────────┐
    │ CREATE USER root IDENTIFIED WITH sha256_password HOST LOCAL, IP '10.10.10.0/24' │
    └──────────────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @skaradub #309910 07:37 AM, 02 Feb 2023
    Привет! а есть кто опытный, вдруг статью писал с исследованием перфоманса: ClickHouse с большими табличками + Словари для того, чтобы на лету потом по этому словарю делать груп-бай и фильтр. (типа словарь может часто меняться, не хочется пересчитывать историю)
  • https://t.me/clickhouse_ru
    @utoka25 #309911 07:41 AM, 02 Feb 2023
    С удовольствием тоже почитаю 👍 если есть кто опытный )
  • https://t.me/clickhouse_ru
    Пересадил джаву на ipv4, используя параметр -Djava.net.preferIPv4Stack=true
    netstat -ntulp | grep 9019
    tcp 0 0 127.0.0.1:9019 0.0.0.0:* LISTEN 24655/java
    Ошибка та же
  • ага, указано также только ip без узла. но что-то не хочет..
    только я указываю ip нашего сервера , а нужно может дефолтный ?
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #309908 #309914 07:59 AM, 02 Feb 2023
    Судя по Avro vs. AvroConfluent, нужет ProtobufConfluent. Но такого нет.
  • А в чем вопрос? Словарь лежит в памяти и это будет достаточно быстро. Быстрее джойнов в кх не слышал
  • @Yuskovich #309916 08:01 AM, 02 Feb 2023
    Всем привет. В докере, network host mode, кликхаус после перезапуска не открывает сетевые порты. Раньше всё нормально было. В логах идут ошибки "Too many parts (300)..." - может из за этого сервер не открывать порт? Как можно чекнуть прогресс мёрджа?
  • нужно указать ip с которого идут подключения, т.е. там где datagrip запускаете
  • может быть он просто отбрасывает инсерты?
  • оу поняла , попробую , спасибо большое!
    а такой вопрос, чтобы создать общую учетку там для разрабов и аналитиков то это параметр при создании ANY?
  • https://t.me/clickhouse_ru
    Спасибо за ответ. Вопрос в том, как это люди делают оптимально и всё же равно будет падение скорости со словарем / без, какие-то бенчмарки, поэтому и спрашиваю про статью, если кто-то провел RnD, это бы мне сэкономило N дней для такую же проверку =)
  • netstat -tulpn | grep 8123 пусто. 9000 порт тоже
  • https://t.me/clickhouse_ru
    В целом спасибо, помогли, понял что кх идёт сначала в localhost ipv6 и не находя там ничего, не пытается поретраить. Если отключить ipv6 в системе, кх начинает корректно видеть бридж. Буду думать что с этим делать
  • https://t.me/clickhouse_ru
    посмотрите
    /etc/hosts

    там обычно localhost
    как ipv6 любят теперь прописывать
    если это убрать то можно и ipv6 не отключать...
  • @VetaObrosova #309924 08:24 AM, 02 Feb 2023
    @aoparin все поняла,получилось , спасибо ))
  • https://t.me/clickhouse_ru
    @lex_zen #309925 08:25 AM, 02 Feb 2023
    Всем привет.
    У меня есть таблица, которая заполняется с помощью питон-скрипта данными с гранулярностью 1 минута.
    Я создал матвью на движке AggregatingMergeTree, запрос в котором агрегирует данные из таблицы выше с гранулярностью 1 час.

    Если я заполняю исходную таблицу инсертом из IDE DataGrip, матвью заполняется, но если делаю тот же инсерт из питон-скрипта, матвью не реагирует на этот инсерт.
    Подскажите, в чем дело? Как это исправить?
  • пожалуйста, рад, что разобрались
  • если мы говорим про одну большую таблицу и рядом словарь в памяти, то здесь достаточно все тривиально уже
    Если вы обрисуете точнее задачу, будет проще
  • https://t.me/clickhouse_ru
    ааа ну это короче там вот штука наверное, а да .... Ну короче наверное мы не ванги :) Хотя бы SQL создание MV покажите
  • https://t.me/clickhouse_ru
    @konnectrl #309930 08:40 AM, 02 Feb 2023
    Скорей всего разница в преобразование данных
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW agg_mv ON CLUSTER 'cluster'
    (
    id UInt64,
    timecode_60 DateTime,
    currency AggregateFunction(argMax, Nullable(String), DateTime),
    cost_per_hour AggregateFunction(max, Nullable(Float64))
    )
    ENGINE = AggregatingMergeTree
    PARTITION BY toYYYYMM(timecode_60)
    ORDER BY (id, timecode_60)
    SETTINGS index_granularity = 8192
    AS
    SELECT
    id AS id,
    toStartOfHour(timecode) AS timecode_60,
    argMaxState(currency, timecode) AS currency,
    maxState(cost_per_hour) AS cost_per_hour
    FROM table
    GROUP BY id,
    toStartOfHour(timecode);
  • https://t.me/clickhouse_ru
    еще такой момент:
    таблица table имеет движок Distributed, она объединяет таблицы на движке ReplicatedMergeTree на 6 нодах
  • https://t.me/clickhouse_ru
    Табличка большая с транзакациями, пересчет-поставка с новыми полями — дорохо =)

    бизнес-заадча: есть идеи, как посмотреть бизнес по этим транзакциям. каждая идея - группировка транзакций по-разному. всё это в BI засунуто, то есть хочется, чтобы через выбиралку "хочу смотреть вот так" - подтягивалась своя логика расчета поля группировки.

    f(*args), где аргументов будет условно 3 и дальше есть варианты, где есть комбинации с 1 заполненным полем и с 3, там где 1 - типа приоритетнее (вот тут не понимаю, как обыграть, придется или 2 дикта делать и потом coalesce или как-то можно по-хитрому диапазон?)
  • https://t.me/clickhouse_ru
    А вы точно вставляете в одну и туже таблицу ?
  • https://t.me/clickhouse_ru
    @Alexeysaff #309935 08:58 AM, 02 Feb 2023
    TWIMC по поводу OR в JOIN

    @AlekseiSaff try to rewrite join condition to have OR on the top level (using https://en.wikipedia.org/wiki/De_Morgan%27s_laws). So condition should looks like (cond1 AND cond2 AND cond3) OR (cond4 AND cond5 AND cond6) OR (cond7 AND cond8 and cond9) (some conds can be the same)

    Particular example:
    AlekseiSaff - Overview

    AlekseiSaff has 10 repositories available. Follow their code on GitHub.

  • upd. мой косяк с кредами для одного из бакетов
    все абсолютно норамльно работает с конфигом для двух бакетов

    Спасибо
  • https://t.me/clickhouse_ru
    да, в первую очередь это проверил

    доходило до того, что я копировал запрос из скрипта и запускал его из IDE, из IDE всё работает, а из скрипта нет
  • https://t.me/clickhouse_ru
    @Alexey_037 #309938 09:00 AM, 02 Feb 2023
    А данные через скрипт в таблице исходной то появляются?
  • https://t.me/clickhouse_ru
    @redr0bin #309939 09:05 AM, 02 Feb 2023
    пробую через ENGINE=Kafka загнать данные из kafka в ch. внутри кафка топиков json с вложеными полями. такое не будет работать ? везде просто вижу эксепшны, что в таблицах с engine kafka не поддерживается Object('json') как и в materialized view
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    точно не скажу, но когда я из кафки забирал данные джисоном, а не по конкретным полям, я забирал их в виде строки, а после с помощью матвью обрабатывал эти строки как джисоны и извлекал нужные мне поля

    не решение, а скорее костыль, но вдруг поможет
  • https://t.me/clickhouse_ru
    @slava_it #309942 10:01 AM, 02 Feb 2023
    Добрый день. Подскажите, пожалуйста, аналог STRING_SPLIT из MsSQL для CH
  • https://t.me/clickhouse_ru
    splitByRegexp
  • https://t.me/clickhouse_ru
    Он не разбивает на строки, как string_split..
  • @RychagovDenis #309945 10:03 AM, 02 Feb 2023
    Здравствуйте, подскажите как правильно почистить из схемы system таблицы query_log, query_thread_log, trace_log и прочие*_log. Можно ли дропнуть на кластере? В доке указано, что КХ их пересоздаст. Или так нельзя?
  • @vmakulov #309946 10:25 AM, 02 Feb 2023
    Можно, так и будет, дроп.
  • @vmakulov #309947 10:26 AM, 02 Feb 2023
    Только ж помните про "отложенный" механизм при дропе, либо используйте
    drop table .... on cluster ... SYNC
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @server_pomnit #309949 10:36 AM, 02 Feb 2023
    Здравствуйте!

    Есть ли способы детально посмотреть, как происходит взаимодействие клика и MySQL сервера при использовании MySQL table engine / function? В частности, посмотреть отправляемый запрос.

    Столкнулись с тем, что при добавлении WHERE с фильтром на одну из колонок типа DateTime рвётся соединение от клика к mysql (SQL Error [1000] [08000]: Poco::Exception. Code: 1000, e.code() = 2013, mysqlxx::Exception: Lost connection to MySQL server during query), воспроизвели на версиях 22.12.2.25 и 22.7.2.15 (прод + стенд для обкатки новых версий). При этом при использовании других колонок (в том числе того же типа) соединение не рвётся, при отсутствии фильтров вообще -- не рвётся, что колонка не nullable на обеих сторонах проверили, min-max на источнике в диапазоне 2021-2023, таймауты для table engine выставили в 300 (5 минут) какие нашли -- connection_wait_timeout, connect_timeout, read_write_timeout.
  • https://t.me/clickhouse_ru
    @maefix #309950 10:41 AM, 02 Feb 2023
    А это ожидаемо, что вес в avgWeighted целочисленным остаётся?
    Пример

    Документация пишет, что Return type is always Float64.
    Какой тогда смысл внутри делать округления?
  • https://t.me/clickhouse_ru
    ну через tcpdump трафик снимите на clickhouse server в сторону mysql сервера на 3306 порт
    а потом в wireshark
    он умеет mysql смотреть

    ну или pt-query-digect на снятый pcap натравить

    вообще там простой алгоритм
    все операции GROUP BY и ORDER BY делаются на стороне clickhouse
    а в конечный запрос на MySQL
    по максимуму стараются прокинуть WHERE условия, чтобы выбрать нужный кусок таблицы...
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    поперчите arrayJoin’ом
  • @slwpkd ↶ Reply to #309902 #309954 11:26 AM, 02 Feb 2023
    Благодарю, а чем этот запрос лучше того, что у меня получился? Я работаю с кликхаус буквально несколько дней и абсолютно не знаю тонкостей
  • https://t.me/clickhouse_ru
    быстрее должно быть и памяти меньше жрать

    JOIN в clickhouse такое себе.. тем более что в вашем случае он не нужен
  • https://t.me/clickhouse_ru
    @baikulov #309956 11:38 AM, 02 Feb 2023
    Господа, пошлите меня, пожалуйста!

    В сторону статьи, где синим по зеленому объяснено как инсертить из питона в CH быстро.

    Добрый всем день!
  • Без всяких библиотек просто по HTTP отправляйте запросы INSERT - https://clickhouse.com/docs/ru/interfaces/http/
  • https://t.me/clickhouse_ru
    А почему так? Можно полюбопытствовать?
  • Это самый простой способ. Если не нужно читать, то и обертки становятся ненужными. Если нужно читать, то можно либо взять готовую библиотеку, либо сделать свою реализацию. Все библиотеки для питона являются обертками для HTTP API
  • https://t.me/clickhouse_ru
    у вас данные в питон откуда берутся?

    как потом вставляете, сколько строк в одном INSERT запросе?
  • https://t.me/clickhouse_ru
    не все
    есть либы для TCP Native протокола...
  • https://t.me/clickhouse_ru
    а сейчас у вас медленно? или вы еще не пробовали?
  • https://t.me/clickhouse_ru
    Мне, к сожалению нужно. Читаю с помощью clickhouse_driver и pd.dataframe. А затем пишу через insert_dataframe
  • clickhouse-driver ? Или еще есть?
  • https://t.me/clickhouse_ru
    @dengin ↶ Reply to #309959 #309965 11:47 AM, 02 Feb 2023
    https://clickhouse-driver.readthedocs.io/en/latest/
    Вот эта работает с нативным портом точно
  • https://t.me/clickhouse_ru
    clickhouse-local + python (subprocess)
  • https://t.me/clickhouse_ru
    1. Читаю из того же клика client.query_dataframe
    2. Преобразую несколько колонок с помощью функции по парсингу user_agent
    3. Пишу обратно в другую таблицу.

    300к строк около 100 секунд.
  • https://t.me/clickhouse_ru
    то есть вы берете данные из clickhouse
    потом что-то с ними делаете (что кстати?) в pandas

    потом обратно пишете в clickhouse?

    и? что по вашему там тормозит?
    профайлить пробовали через py-spy ?
  • @infisamk #309969 11:48 AM, 02 Feb 2023
    Ну ок. Есть одна библиотека нативная. Но ведь все остальные - это HTTP?
  • https://t.me/clickhouse_ru
    о !
    так вам нужен regexp_tree словарь тогда скорее всего
    https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/regexp-tree/
    правда это в clickhouse-servrer 23.1 только вошло

    и все делается тогда одним запросом

    INSERT new_table SELECT dictGet('db.regexp_dict', ...) FROM old_table
    RegExp Tree Dictionary | ClickHouse Docs

    Regexp Tree dictionary stores multiple trees of regular expressions with attributions. Users can retrieve strings in the dictionary. If a string matches the root of the regexp tree, we will collect the corresponding attributes of the matched root and continue to walk the children. If any of the children matches the string, we will collect attributes and rewrite the old ones if conflicts occur, then continue the traverse until we reach leaf nodes.

  • https://t.me/clickhouse_ru
    ну еще clickhouse-sqlalchemy которая поверх clickhouse_driver
  • https://t.me/clickhouse_ru
    Он юзер агента вытаскивает в python'e
  • Это уже обертка над библиотекой. То есть не самостоятельная библиотека.
  • https://t.me/clickhouse_ru
    ну =) скорее всего там какая то либа а-ля
    https://github.com/ua-parser/uap-python

    которая на regexp_tree ложится
    GitHub - ua-parser/uap-python: Python implementation of ua-parser

    Python implementation of ua-parser. Contribute to ua-parser/uap-python development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    user_agents

    Сейчас замеряю - смогу сказать
  • https://t.me/clickhouse_ru
    если будете новую фичу клика юзать чтобы клик сам все сделал
    то вот скрипт который конвертит ua-core yaml в regexp_tree формат

    https://gist.github.com/hanfei1991/6a6dae16f1f3fc5d778450da7f874e10
    convert.py

    GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    Читал, но пока не использовал. Да и версия у нас постарше.
  • https://t.me/clickhouse_ru
    в общем думается мне что у вас 90% времени скрипта занимает как раз парсинг этих самых user agents
    а не вставка
  • https://t.me/clickhouse_ru
    @kuzmin_m #309979 12:02 PM, 02 Feb 2023
    Есть ли какие то особенности при группировке по полю из словаря?
    Например, есть ip и есть словарю ip->city и группировка идет по городу.
    Или есть user-agent и группировка по браузеру.

    Если по ip все вроде понятно, то по user agent нет.
    Там довольно длинная строка.
    И насколько это все будет шустро работать?
    Прочитать данные, распарсить каждую строку, сгруппировать.
    Или лучше при вставке разбирать?
  • https://t.me/clickhouse_ru
    Проверил. Работает медленно именно парсинг
    29895 rows
    --- 8.494282007217407 seconds one part execute ---
    --- 0.9648690223693848 seconds read from CH---
    --- 0.7914137840270996 seconds insert to CH---

    Вопрос явно не к CH. Пойду к доктору. Пусть делает что-то с руками и головой.
  • https://t.me/clickhouse_ru
    For the record, проблема была в том, что таймауты выставлены не в тех единицах измерения. В доке написано, что это секунды, на практике -- нет.

    Это уже было в старых issues: https://github.com/ClickHouse/ClickHouse/issues/34168#issuecomment-1229881249

    Заменили в таймауте 300 на 300000, и всё заработало.
    Lost connection to MySQL server during query · Issue #34168 · ClickHouse/ClickHouse

    Hello, Since upgrade CH version 21.4.xxx to 22.1.xx we have the following error when running MySQL selects that takes more than 5 seconds. In MySQL we see 6 incoming connections but clickhouse is t...

  • https://t.me/clickhouse_ru
    @lex_zen #309982 12:11 PM, 02 Feb 2023
    Повторю вопрос, а то он затерялся, а ответа пока не нашел.

    У меня есть таблица, которая заполняется с помощью питон-скрипта данными с гранулярностью 1 минута.
    Я создал матвью на движке AggregatingMergeTree, запрос в котором агрегирует данные из таблицы выше с гранулярностью 1 час.
    Запрос для матвью:
    CREATE MATERIALIZED VIEW agg_mv ON CLUSTER 'cluster'
    (
    id UInt64,
    timecode_60 DateTime,
    currency AggregateFunction(argMax, Nullable(String), DateTime),
    cost_per_hour AggregateFunction(max, Nullable(Float64))
    )
    ENGINE = AggregatingMergeTree
    PARTITION BY toYYYYMM(timecode_60)
    ORDER BY (id, timecode_60)
    SETTINGS index_granularity = 8192
    AS
    SELECT
    id AS id,
    toStartOfHour(timecode) AS timecode_60,
    argMaxState(currency, timecode) AS currency,
    maxState(cost_per_hour) AS cost_per_hour
    FROM table
    GROUP BY id,
    toStartOfHour(timecode);
    Таблица table имеет движок Distributed, она объединяет таблицы на движке ReplicatedMergeTree на 6 нодах

    Если я заполняю исходную таблицу инсертом из IDE DataGrip, матвью заполняется, но если делаю тот же инсерт из питон-скрипта, матвью не реагирует на этот инсерт, хотя данные в исходную таблицу долетают

    Подскажите, в чем дело? Как это исправить?
  • А матвью над какой таблицей сделан? Над локальной или distributed? И вставка в какую таблицу идет локальную или distributed?
  • https://t.me/clickhouse_ru
    При использовании table function в конец запроса подставляем SETTINGS external_storage_rw_timeout_sec = 300000.
  • https://t.me/clickhouse_ru
    матвью обращается к distributed таблице. Вставка данных также в distributed таблицу идет, а там уже распределяется по нодам
  • https://t.me/clickhouse_ru
    Матвью создана на всех нодах? Датагрип и питон вставляют всегда в одну и туже ноду? Никакого балансера перед ними нет?
  • https://t.me/clickhouse_ru
    матвью создана на всех нодах (в запросе присутствует ON CLUSTER)
    у меня 6 нод с портами 8124-8129, обвязаны кластером с портом 8123 (с зукипером), я к 8123 обращаюсь и вставляю, а там уже всё распределяется в соответствие с внутренней логикой (увы, я не в курсе деталей какой, не я создавал)
  • Мне кажется что матвью нужно делать над локальной таблице. Если я ничего не путаю, то при вставке в дистрибьютед таблицу(чего вообще лучше не делать), вставка на других нодах будет происходить уже в локальный таблицы(это можно проверить по query_log)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #309982 #309989 12:33 PM, 02 Feb 2023
    что значит фраза "тот же инсерт из питон-скрипта"? Вы тестируетесь на простом блоке данных? Он тот-же самый?
  • https://t.me/clickhouse_ru
    блок данных тот же самый

    из питон скрипта означает, что у меня есть скрипт, который раз в период запрашивает сырые данные из одной таблицы, обрабатывает их и инсертит в другую - целевую таблицу, на которую ссылается матвью
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #309990 #309991 12:38 PM, 02 Feb 2023
    если это тест на двух каких-то строках, то попробуйте их поменять. Возможно сработал block deduplication. Но может что-то хитрее. Вы там используете нерекомендованные техники - MV without To, вставка в Distributed. Наверное еще что-то нетривиальное тоже есть.
  • https://t.me/clickhouse_ru
    А что находится на 8123?
  • @VVVendetta #309993 12:47 PM, 02 Feb 2023
    Всем привет!
    А расскажите плз как работают буферные таблицы. Интересует момент рестарта CH… сбрасывается ли содержимое в файловую систему или же теряются данные из буферов?
  • https://t.me/clickhouse_ru
    When the server is stopped, with DROP TABLE or DETACH TABLE, buffered data is also flushed to the destination table.
  • спасибо
  • https://t.me/clickhouse_ru
    @vvpnet #309996 01:15 PM, 02 Feb 2023
    Добрый вечер. Подскажите как можно реализовать подобный сценарий для БД. Нужно в БД хранить только изменившиеся данные (это может определить провайдер данных), но при запросе за период нужно возвращать данных с заданным периодом (т.е недостающие данные необходимо интерполировать). Здесь самая загвозка в том, что клюем данных является колонка время/дата т.е значение не поменялась а дата/время должно тикать. Может есть уже решения?
  • https://t.me/clickhouse_ru
  • @DigDiver #309998 01:43 PM, 02 Feb 2023
    Добрый день всем. Планирую делать новую инсталляцию. Три сервера в реплике. ClickHouse keeper можно юзать в проде, или все же лучше остановиться на Zookeeper?
  • https://t.me/clickhouse_ru
    сделал как вы сказали, локально на каждой ноде матвью заполняется, но теперь собрать данные с матвьюх со всех нод не получается
  • https://t.me/clickhouse_ru
    @Vasyaabr #310000 01:48 PM, 02 Feb 2023
    Любопытно: запустили ALTER DELETE для удаления нескольких десятков миллиардов строк, а объем базы вместо того чтобы уменьшится увеличился с 8 до 10 Tb. Как такое может быть?
  • А как это проявляется? Наверно нужно сделать еще 1 дистрибьютед таблицу над agregatingmergeetree и читать из нее
  • так вы прочитайте как работает alter delete, а потом выполняйте)))
  • https://t.me/clickhouse_ru
    странно, что матвью на инсерт из ИДЕ реагирует, а вот из скрипта - нет
  • https://t.me/clickhouse_ru
    Перечитал ещё раз, но понимания не добавилось. Или смысл в том что переписываются партиции, но старые при этом не удаляются?
  • ну создаются новые, старые помечаются на удаление, через 8 минут будут удаляться.
  • https://t.me/clickhouse_ru
    А возможности пофорсить это удаление нет? Или посмотреть где-то идет ли оно вообще?
    А то пару часов минимум уже висят эти 2 Tb и пока нет тенденции к уменьшению.
  • посмотрите в system.parts для этой таблицы, висят там, поле is_active?
    посмотрите shadow
    Вообще выполнилось ли удаление system.mutations?
    Что в system.merges?
  • @zhora9001 #310008 02:08 PM, 02 Feb 2023
    добрый день! немного тангенциальный тематике чата вопрос, но быть может кто-то сталкивался: хотим с помощью Altinity/clickhouse-operator завести N шардов + 1 сервер перед ними (не шард, на нем будут исключительно distributed таблицы, эдакая точка входа, если позволите). по сути все, чего хотим, это стащить в этот 1 сервер сгенерированный оператором servers.xml. в документации примеров таких не нашли, а костылить совсем не хочется. можно ли такое провернуть?
  • https://t.me/clickhouse_ru
    Вот про system.merges я забыл - мутации удалились, но незавершенные мержи ещё висят и я так понимаю вовсю шарашат.
    Спасибо!
  • https://t.me/clickhouse_ru
    именно в группировке ничего такого различий нет... группировке на вход уже готовые значения подаются на вход после dictGet

    если же у вас парсинг user agent через regexp
    то опять же, это именно вычисления, а не группировка, группировка позже идет
  • https://t.me/clickhouse_ru
    @webeaver #310011 02:12 PM, 02 Feb 2023
    Не подскажете функцию, превращающую интервал в читаемую форму? например конвертировать 100000 секунд в вид "1d 3h 46m 40s"
  • https://t.me/clickhouse_ru
    ну...
    можно два кластера в
    spec:
    configuration:
    clusters:
    - name:
    объявить
    для одного chi
    и по моему в таком случае system.clusters будет содержать
    оба кластера
  • о, это вариантик, попробуем, спасибо!
  • они ведь получат "общий" servers.xml, там будут оба кластера?
  • https://t.me/clickhouse_ru
    regexp dictionary очень грубо говоря это такой «костыль» (плохое слово тут, но не знаю как сказать)
    когда уже есть строка с user agent?
    И лучше при вставке разборать user agent на нужные составляющие?
    Или regexp dictionary норм, ну будет в 2 раза медленне и ок?
    Или в любом случае делай бенчмарк сам? :)
  • https://t.me/clickhouse_ru
    только по моему вам это нафиг не надо

    там отдельно же на весь chi создается kubernetes сервис
    по умолчанию type: LoadBalancer
    к которому можно обращаться...
    и выбирать из ваших disbtibuted нормально
  • да, в среднем не особо надо, перетаскиваем легаси конфигурацию, которая вот такая вот, к сожалению. переделать на православный способ с дистрибьютед таблицами на каждом шарде не выйдет, имена таблиц совпадают. короче говоря, знаем, понимаем, но поделать ничего не можем 🙂
  • https://t.me/clickhouse_ru
    да все верно

    если есть возможность парсить при вставке, лучше парсить при вставке

    можно даже опять же средствами regexp_tree

    делаете поля типа
    user_agent LowCardinality(String),
    browser LowCardinality(String) DEFAULT dictGet('dict_name','browser', user_agent)

    и при вставке вставляете только user_agent из которого уже browser вытащит что надо из словаря
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    и чего такого в том что имена distributed таблиц совпадают?

    вы видимо не понимаете как оно работает

    это всего лишь прокси таблица на чтение которая умеет разбивать запрос исходный на кучу паралельных запросов к шардам
    и вытасикавает с шардов предаггегированные данные
    финализируя аггрегацию на ноде инициаторе запроса...

    а на вставку это опять же прокси таблица, которая сплитует данные по SHARDING KEY в RawBinary формате во временные .bin файлы а потом тупо делает INSERT INTO ... FORMAT RawBinary запросы к целевым шардам

    то есть в целом нет разницы с какой ноды вставлять и или с какой ноды читать... главное ресурсы равномерно распределять...
  • это я все понимаю, проблема более банальная. на шардах есть таблица TableA (MergeTree), на выделенном сервере – TableA (Distributed), соотв просто перенести Distributed на каждый шард не выйдет. Мы можем переименовать таблицы и т.д., но это затронет другие сервисы, соотв сделать аккуратно будет сложнее. Это выход, не поймите меня неправильно, но, как всегда с миграциями важных историй, хочется делать вещи по одной и последовательно, отсюда и вопрос, можно ли воспроизвести текущую структуру
  • https://t.me/clickhouse_ru
    Спасибо, вопрос со сбором данных решил, но появился другой вопрос.
    Грубо говоря, у меня данные лежат на 3 шардах. Я создал матвью на каждом шарде и дистрибьютед таблицу над agregatingmergeetree. При чтении из дистрибьютед таблицы, иногда (1 раз из 4) не подгружаются данные с 3 шарда. С другими дистрибьютед таблицам такого не наблюдал.

    Может есть идеи с чем это может быть связано?
  • https://t.me/clickhouse_ru
    ну попробуйте
    не получится два cluster внутри одной chi

    можно две разных chi

    в той в которой distributed
    просто отдельно через
    spec:
    configuration:
    files:
    config.d/remote_cluster.xml: |
    <remote_servers> <other_cluster_name>... прописать сервера из кластера где MergeTree ручками используя имена сервисов которые создаются для каждой реплики <other_cluster_name></remote_servers>
  • А точно нет ошибки в настройке путей в зукипере? И точно ли таблички создались на всех репликах всех шардов
  • вот это прям понятно как сделать, просто хотелось, чтобы remote_servers составил оператор (как он делает для шардов "первой" chi), дабы избежать хардкода. но в целом количество шардов мы меняем очень редко, так что, вероятно, так и поступим. спасибо за наводку!
  • https://t.me/clickhouse_ru
    на счет настройки путей не в курсе, попрошу проверить, а таблицы абсолютно точно создались везде. Как я сказал, 3 раза из 4 данные читаются со всех нод, но иногда игнорируют конкретный шард и его реплику
  • https://t.me/clickhouse_ru
    @bvt123 #310027 03:16 PM, 02 Feb 2023
    вопрос по Kafka Engine. Может быть там есть какой-то параметр, позволяющий байндится не ко всем партициям, а только к некоторым (например к четным). Хочется реализовать шардирование записи, отправляя данные из "четных" кафкиных партиций на отдельную шард группу.
  • https://t.me/clickhouse_ru
    по идее это можно сделать через kafka_num_consumers
  • @AlessandrD #310029 03:28 PM, 02 Feb 2023
    Подскажите как делать группировку значений по __interval из графаны
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310028 #310030 03:30 PM, 02 Feb 2023
    Но как? Этот параметр просто увеличивает паралелизм.
    А нужно, чтобы определенный Kafka Engine отказывался байндится к (допустим) нечетным партициям.
  • https://t.me/clickhouse_ru
    да, что то я погорячился, а нужно именно конкретные партиции отправлять? или достаточно просто распределить равномерно?
  • не знаю, но вкину
    Мб в подключении через librdkafka мб можно как-то указать что-то?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310031 #310033 03:35 PM, 02 Feb 2023
    замысел именно в какой-то политике (четные, третьи, итп). Т.е. нужен мапинг кафкиного шардинга (партиционирования) на шардинг clickhouse.
  • https://t.me/clickhouse_ru
    явно вроде нельзя указать какой конкретно парт слушать, но вроде бы он сам должен разобрать парты по нодам если они будут смотреть в одну группу
    https://clickhouse.com/docs/en/integrations/kafka/kafka-table-engine#working-with-clickhouse-clusters
  • @6059693624 #310035 03:45 PM, 02 Feb 2023
    Привет! Есть сценарий, когда раз в несколько часов хочется вливать в базу небольшой объем данных из какого-нибудь двх (ну, скажем, пару сотен гб), а затем с определенной периодичностью вычитывать эти данные полностью (последовательно от начала и до конца, практически без фильтрации и точно без поиска). Насколько хорошо кликхаус подходит для использования в этом сценарии?
  • https://t.me/clickhouse_ru
    а зачем вам для этого КХ?
  • https://t.me/clickhouse_ru
    @aronoff #310037 03:47 PM, 02 Feb 2023
    привет
    подскажите пожалуйста
    можно ли в запросе параметром подставить алиас столбца?

    типа
    select col1 as aliascol1 from...
    в
    SELECT {col1:Identifier} as {aliascol1:Identifier} from...
  • Бытро писать, быстро/эффективно последовательно читать. Плюс разным потребителям интересно читать разный состав колонок
  • https://t.me/clickhouse_ru
    ну если нужно читать разные колонки, тогда норм
  • А если иногда нужно будет читать все колонки? Ну, я конечно понимаю, какие следствия из этого, мне скорее интересно, насколько хорошо кликхаус способен решить такую задачу (разумеется, не для этого он задумывался). И есть ли какие-то альтернативные базы (относительно широко распространенные), которые дадут высокую эффективность в таких сценариях (разумеется тут ни о каком acid и олтп речи нет)
  • https://t.me/clickhouse_ru
    если читать все колонки то и cat file.txt справится
  • https://t.me/clickhouse_ru
    а какой clickhouse плагин? altinity или grafana labs?
  • Тогда докину сюда еще условие: мне нужно после проливки данных еще в фоне лить батчами апдейты (ну точнее инсерты, которые какие-то записи оверрайдят) и так же в фоне это все мержить, чтобы при вычитке в основном актуальные данные получать
  • К тому же он мне эти данные не пожмет нормально
  • https://t.me/clickhouse_ru
    @Sablast #310045 03:57 PM, 02 Feb 2023
    ну вот уже много условий появилось)
  • https://t.me/clickhouse_ru
    почитайте тогда про ReplacingMergeTree
  • https://t.me/clickhouse_ru
    @Sablast #310047 03:57 PM, 02 Feb 2023
    чтобы понять как работать с апдейтами
  • Почитал, я вроде как раз его описал. Поэтому вернусь к вопросу: насколько клик эффективен для такого сценария, есть ли какие-то причины не использовать его, есть ли что-то более подходящее в широком пользовании?
  • https://t.me/clickhouse_ru
    @Sablast #310049 04:00 PM, 02 Feb 2023
    сложно ответить) когда в руках 6 лет подряд молоток, всё вокруг кажется гвоздями, лично я не вижу проблемы его тут использовать
  • @AlexanderRodin #310050 04:14 PM, 02 Feb 2023
    Привет
    есть задача сделать материальную вьюху, которая агрегируют данные за сутки
    На сколько я понимаю доку, сейчас материализация проходит при мерже

    От такого запроса я жду что он будет в результиющей таблице добавлять одну запись в сутки, или по крайней мерее эту одну записаь постоянно обновлять.

    но сейчас там творится что попало: несколько записей, котоыре постоянно меняются

    Результиющая таблица на движке
    ReplicatedSummingMergeTree
  • вы уверены что группировка по timestamp? наименование колонок во вью и в таблице совпадает?
  • можете выложить пример на https://fiddle.clickhouse.com/
    быстрее подскажут
  • взял первый попавшийся, от графана

    altinity версия умеет больше?
  • @AlexanderRodin #310054 04:17 PM, 02 Feb 2023
    колонки совпадают
    группировка точно по времени ( в самой таблице данные лежат в дате без часов и минут)
  • по своему опыту рекоменду. альтинити
  • https://t.me/clickhouse_ru
    Там более или менее паритет по функциям, просто на плагин от графаны я ничего ответить нормально не смогу
  • Хорошо, спасибо за информацию, по альтинити подскажете, как сделать группировку по __interval?
  • https://t.me/clickhouse_ru
    в такой постановке, у вас матвью на каждый инсерт выполняет то что указано в SELECT
  • https://t.me/clickhouse_ru
    @Sablast #310059 04:28 PM, 02 Feb 2023
    и в таком виде и хранит
  • @AlexanderRodin #310060 04:31 PM, 02 Feb 2023
    да
    но у меня не хватает масла в голове чтобы получить ожидаемый результат
  • https://fiddle.clickhouse.com/74dd812a-6e4a-4b64-acb3-0930732ab203
    я вот вам не поленился ваш пример нарисовать
    можете его взять за основу и сделать свой для примера
  • Большое спасибо. почему то в этом примере работает все правильно благодаря sum(cnt)
  • ну впринципе, в первом же примере использования таблицы это и написано)

    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/summingmergetree/#usage-example
    SummingMergeTree | ClickHouse Docs

    The engine inherits from MergeTree. The difference is that when merging data parts for SummingMergeTree tables ClickHouse replaces all the rows with the same primary key (or more accurately, with the same sorting key) with one row which contains summarized values for the columns with the numeric data type. If the sorting key is composed in a way that a single key value corresponds to large number of rows, this significantly reduces storage volume and speeds up data selection.

  • @AlexanderRodin #310064 04:41 PM, 02 Feb 2023
    благодарность
  • А есть какие-то рецепты для того чтобы полностью утилизировать диск в таком сценарии при чтении с клика? При чтении последовательно в один поток через курсор и передаче данных из базы в приложение диск не утилизируется. Сделать это в несколько потоков в лоб не получится из-за того что нет эффективного способа читать с оффсета (или я не нашел такого апи). Партиционировать таблицу и читать кучу партиций одновременно – вариант, но больно уж нестандартный
  • https://t.me/clickhouse_ru
    https://github.com/Altinity/clickhouse-grafana/blob/a525e3d7ce292a5e9bdd000801daf4b8c5c18cf2/README.md?plain=1#L118

    там в панельке выбирается поле с датой и поле для времени

    потом можно использовать $timeSeries макрос

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

    есть отдельный макрос $interval
    есть встоенный макрос $__interval_ms вроде бы...
    clickhouse-grafana/README.md at a525e3d7ce292a5e9bdd000801daf4b8c5c18cf2 · Altinity/clickhouse-grafana

    Clickhouse datasource for grafana. Contribute to Altinity/clickhouse-grafana development by creating an account on GitHub.

  • Спасибо
  • https://t.me/clickhouse_ru
    https://www.youtube.com/watch?v=G9MxRpKlbnI&t=547s

    Тут посмотрите как ReplacingMergeTree используется ...
    December 2022 ClickHouse Bay Area Meetup

    Join us for this session on latest #ClickHouse news. 0:10 Start of Meetup 9:07 Adventures with the ClickHouse ReplacingMergeTree Engine by Robert Hodges 46:28 ClickHouse ReplacingMergeTree in Telecom Apps by Alexandr Dubovikov 1:24:32 Doing Crazy Stuff with ClickHouse by Alexey Milovidov See the meetup invite for more information: https://www.meetup.com/san-francisco-bay-area-clickhouse-meetup/events/289605843 #datawarehouse #Meetup ----------------- Check out more ClickHouse resources here: https://altinity.com/resources/​ Join Reddit community: https://www.reddit.com/r/Clickhouse/​ ----------------- Learn more about Altinity, sponsors of this meetup. Site: https://www.altinity.com​ LinkedIn: https://www.linkedin.com/company/alti...​ Twitter: https://twitter.com/AltinityDB

  • https://t.me/clickhouse_ru
    @pnm000 #310069 05:53 PM, 02 Feb 2023
    Добрый вечер
    Кто то мне можем объяснить если действительно все на столько плохо с Analyzer of ClickHouse что query на столько тупо строиться? как такое может быть если я в тупую прописываю поля для JOIN то получаеться Perf Gain 15x
    пример
    —————

    -- 4.298sec
    SELECT day, sum(total) total
    FROM (
    SELECT toUnixTimestamp(toStartOfDay(FROM_UNIXTIME(1675231133) - toIntervalHour(24 * 90) + number * 24 * 3600), 'Asia/Jerusalem') * 1000 as day,
    toUInt16(0) as total
    FROM numbers(90)
    UNION ALL
    SELECT toUnixTimestamp(toStartOfDay(publish_date, 'Asia/Jerusalem')) * 1000 as day,
    count(internal_id) as total
    FROM fgi.articles_kpis_data f
    JOIN kb_prod.entities_data e ON f.kpi_entity_id = e.entity_id
    WHERE ((has(e.`groups.name`, 'Interesting List') = 1 AND arrayElement(e.`groups.end_time`,indexOf(e.`groups.name`,'Interesting List')) IS NULL))
    AND e.type IN ('EVENT','GPE','LOC','MISC','MONEY','NORP','ORG','PERSON','PRODUCT')
    AND publish_date >= toStartOfDay(FROM_UNIXTIME(1675231133), 'Asia/Jerusalem') - toIntervalHour(24 * 90)
    AND f.is_near_duplicate = 0
    GROUP BY day
    ORDER BY day ASC
    )
    GROUP BY day
    ORDER BY day ASC

    -- Query Time: 0.330 sec because I specify needed columns from kb_prod.entities_data
    SELECT day, sum(total) total
    FROM (
    SELECT toUnixTimestamp(toStartOfDay(FROM_UNIXTIME(1675231133) - toIntervalHour(24 * 90) + number * 24 * 3600), 'Asia/Jerusalem') * 1000 as day,
    toUInt16(0) as total
    FROM numbers(90)
    UNION ALL
    SELECT toUnixTimestamp(toStartOfDay(publish_date, 'Asia/Jerusalem')) * 1000 as day,
    count(internal_id) as total
    FROM fgi.articles_kpis_data f
    JOIN (select entity_id, type, groups.name, groups.end_time from kb_prod.entities_data) e ON f.kpi_entity_id = e.entity_id
    WHERE ((has(e.`groups.name`, 'Interesting List') = 1 AND arrayElement(e.`groups.end_time`,indexOf(e.`groups.name`,'Interesting List')) IS NULL))
    AND e.type IN ('EVENT','GPE','LOC','MISC','MONEY','NORP','ORG','PERSON','PRODUCT')
    AND publish_date >= toStartOfDay(FROM_UNIXTIME(1675231133), 'Asia/Jerusalem') - toIntervalHour(24 * 90)
    AND f.is_near_duplicate = 0
    GROUP BY day
    ORDER BY day ASC
    )
    GROUP BY day
    ORDER BY day ASC
  • https://t.me/clickhouse_ru
    это вы ещё WHERE в подзапрос не прокинули чтобы всё по феншую
  • https://t.me/clickhouse_ru
    @m1khal3v #310071 06:04 PM, 02 Feb 2023
    да и from можно поточнее расписать) оптимизатор не панацея, лучше за него подумать хорошенько)
  • https://t.me/clickhouse_ru
    @pnm000 #310072 06:09 PM, 02 Feb 2023
    Ну Алексей сказал недавно что скоро надо ждать чудо! когда новый аналайзер выйдет в статус GA
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #310071 #310073 06:09 PM, 02 Feb 2023
    спасибо, а что можно еще в from поправить ?
  • https://t.me/clickhouse_ru
    тоже расписать подзапрос с нужными колонками и прокинуть WHERE f.is_near_duplicate = 0 внутрь например
  • https://t.me/clickhouse_ru
    @m1khal3v #310075 06:17 PM, 02 Feb 2023
    SELECT toUnixTimestamp(toStartOfDay(FROM_UNIXTIME(1675231133) - toIntervalHour(24 * 90) + number * 24 * 3600), 'Asia/Jerusalem') * 1000 as day,
    toUInt16(0) as total
    FROM numbers(90)
    UNION ALL

    это кстати кажется решается через ORDER BY WITH FILL почище
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #310075 #310076 06:18 PM, 02 Feb 2023
    Супре а можно пример ?
  • https://t.me/clickhouse_ru
    ORDER BY Clause | ClickHouse Docs

    The ORDER BY clause contains a list of expressions, which can each be attributed with DESC (descending) or ASC (ascending) modifier which determine the sorting direction. If the direction is not specified, ASC is assumed, so it’s usually omitted. The sorting direction applies to a single expression, not to the entire list. Example: ORDER BY Visits DESC, SearchPhrase.

  • https://t.me/clickhouse_ru
    @m1khal3v #310078 06:25 PM, 02 Feb 2023
    и SELECT day, sum(total) total кажется тоже лишний
  • 03 February 2023 (182 messages)
  • https://t.me/clickhouse_ru
    @keksum666 #310079 06:17 AM, 03 Feb 2023
    Добрый день, можно ли как-то в запросе Clickhouse, как-то внедрить подзапрос который отправляется в базу MySQL? Требуется для того чтобы данные внедрить в условие IN, а данные для этого условия хранится в MySQL
  • https://t.me/clickhouse_ru
    Добрый день. Можно создать таблицу на движке MySQL и делать запрос в неё.
    Пример - SELECT id, date FROM default.table WHERE id IN(SELECT id FROM default.table2), где table2 - таблица на движке MySQL.
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #310081 06:21 AM, 03 Feb 2023
    Либо вы можете сразу создать отдельную базу на движке MySQL и точно так же делать в неё запросы
  • @aoparin #310082 07:03 AM, 03 Feb 2023
    если таблица небольшая в mysql, то можно сделать словарь регулярно обновляющийся из данных из mysql
  • https://t.me/clickhouse_ru
    @utkinmaximand #310083 07:47 AM, 03 Feb 2023
    Коллеги добрый день подскажите, из-за чего может не происходить дедупликация в движке Replacing, distributed таблицу вызываю с Final, но почему то конечный merge, выводит дублирующиеся записи. Поля по которую должны убираться дубликаты есть в ключе сортировки.Оптимайз шардов нет думаю смысла делать ведь дублирующиеся записи лежат как раз на разных щардах, дистрибьют оптимайз нельзя делать.
  • https://t.me/clickhouse_ru
    А партиции есть ?
  • https://t.me/clickhouse_ru
    @utkinmaximand #310085 07:51 AM, 03 Feb 2023
    +
  • https://t.me/clickhouse_ru
    И есть время добавления строки ?
  • https://t.me/clickhouse_ru
    @utkinmaximand #310087 07:52 AM, 03 Feb 2023
    Как поля нет, но вставляю пачки по дню
  • https://t.me/clickhouse_ru
    @utkinmaximand #310088 07:53 AM, 03 Feb 2023
    Ну есть агрегат мах(дата), но это уже сформированое поле оно просто вставляется как значение
  • https://t.me/clickhouse_ru
    @konnectrl #310089 07:58 AM, 03 Feb 2023
    Как я помню.
    1. Если данные лежат в разных партциях, то не удаляется дубликат
    2. Если лежат на разных шардах тоже не удаляется дубликат
  • https://t.me/clickhouse_ru
    @utkinmaximand #310090 07:59 AM, 03 Feb 2023
    Просто если на разных щардах, то вроде как конечный мёрж , на конечном сервере должен их удалить
  • https://t.me/clickhouse_ru
    @utkinmaximand #310091 07:59 AM, 03 Feb 2023
    А вот с партициями
  • https://t.me/clickhouse_ru
    @utkinmaximand #310092 07:59 AM, 03 Feb 2023
    Возможно
  • @Yuskovich #310093 08:11 AM, 03 Feb 2023
    Всем привет. Подскажите как лучше сделать. Есть данные по клиентам. В одном SELECT всегда один клиент. Имеет ли смысл, с точки зрения производительности, для каждого клиента делать отдельную таблицу? Если правильно понимаю, то select в этом случае будет работать быстрее, но не очень понятно как это влияет на скорость мёрджа - по многим клиентам бывают инсерты с одной строкой. Понятно что это не бэст практис для CH, но иногда по ним просто данных больше не набегает.
  • На мой взгляд лучше сделать одну таблицу и поле выбора клиента сделать первым в order by у таблицы, а вторым то, по которому у клиента всегда ищется.
  • @5298579064 #310095 08:33 AM, 03 Feb 2023
    добрый день. А можно в существующую и заполненную данными таблицу engine = SummingMergeTree добавить колонку и эту колонку вставить в список агрегируемых, указываемых в engine?
  • https://t.me/clickhouse_ru
    А зачем вы указывали список агрегируемых?
    Таблица репликейтид?
  • https://t.me/clickhouse_ru
    Дистрибьютид не умее final (она только передает final вниз) и в принципе не может уметь.
    Надо шардировать по ключу чтобы записи попадали на один шард и там схлапывались
  • https://t.me/clickhouse_ru
    И сколько клиентов ? Три или три тысячи?
  • https://t.me/clickhouse_ru
    @rukavkov #310099 09:21 AM, 03 Feb 2023
    Добрый день, хочу обновить кластер.с 21.3.20 до 23.1.2.9-stable. есть 2 шарды и 2 реплики. Хочу начать с реплик. Плюсы, минусы подводные камни? =)
  • https://t.me/clickhouse_ru
    Нет аналайзер не будет этого уметь. Просто все работы по таким оптимизациям заморожены до выхода аналайзера
  • несколько тысяч
  • https://t.me/clickhouse_ru
    Никогда не обновлял - страшно )
  • https://t.me/clickhouse_ru
    Тогда одна таблица и клиент первым полем в orderby как выше сказали
  • @Yuskovich #310104 09:24 AM, 03 Feb 2023
    А как посмотреть текущую очередь на мёрдж? Столкнулись с тем, что не уходит ошибка too_many_parts
  • https://t.me/clickhouse_ru
    Тестировать надо. Много шансов что не будет работать приложение с новой версией
  • https://t.me/clickhouse_ru
    Таблица репликейтид?
  • @Yuskovich #310107 09:25 AM, 03 Feb 2023
    Если есть где-то дока, то ткните, плиз. Пробовал гуглить - не нашёл
  • Да
  • https://t.me/clickhouse_ru
    Ошибки смотрите system.replication_queue
  • https://t.me/clickhouse_ru
    И правильно что страшно. Я 6 лет 8 чвсов в день занимаюсь только кх и мне тоже страшно.
  • https://t.me/clickhouse_ru
    Вначале я бы посмотрела на вашем месте в эту вот статью, которая немного объясняет про self-managed upgrade в КХ. Да, придется тестировать, сделать отдельное окружение или инстанс той версии, на которую хотите обновляться, посмотреть в changelog еще на incompatible changes и проверить, нет ли там изменений, которые могут затронуть вашу систему.
    Self-managed Upgrade | ClickHouse Docs

    ClickHouse upgrade overview

  • https://t.me/clickhouse_ru
    точно также, только уже почти 3 года, но складывается впечатление, что я еще не все знаю о КХ
  • https://t.me/clickhouse_ru
    @konnectrl #310113 09:44 AM, 03 Feb 2023
    Кажется самый надежный вариант, это развернуть новый КХ и переливать в него данные из старого 😏
  • https://t.me/clickhouse_ru
    так все равно тестить и сравнивать результаты запросов.
  • https://t.me/clickhouse_ru
    @Alexeysaff #310115 09:50 AM, 03 Feb 2023
    есть ли сделать возможность TTL (1 day) но исключить выходные, чтобы в понедельник были данные за пятницу? :)
  • https://t.me/clickhouse_ru
    Да. Там можно любое сложное выражение написать if(выходной, след.понедельник,+1)
  • https://t.me/clickhouse_ru
    у вас так много данных что нельзя сделать TTL на неделю и не париться?
  • https://t.me/clickhouse_ru
    @Alexeysaff #310118 09:54 AM, 03 Feb 2023
    Угу, к сожалению
  • @slwpkd #310119 09:54 AM, 03 Feb 2023
    Подскажите, насколько сильно проседает производительность при использовании restapi по отношению к нативному протоколу?
  • https://t.me/clickhouse_ru
    Вобще нет разницы почти, в некоторых случаях http быстрее
  • https://t.me/clickhouse_ru
    @radmirkashapov #310121 09:55 AM, 03 Feb 2023
    Добрый день
    Подскажите, возможно ли изменить kafka_topic_list для таблицы с kafka engine? Много ли это будет стоить?
  • https://t.me/clickhouse_ru
    я правильно понял по логике вы хотите, чтобы типа в понедельник данные за пятницу+субботу+воскресенье были
    а во вторник были данные только с понедельника?

    или что?
  • https://t.me/clickhouse_ru
    дроп криэйт
  • @slwpkd ↶ Reply to #310120 #310124 09:56 AM, 03 Feb 2023
    Благодарю
  • https://t.me/clickhouse_ru
    @Alexeysaff #310125 09:56 AM, 03 Feb 2023
    Суббота и воскресенье у нас выходной
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    по идее можно так
    DETACH TABLE materialized_view_from_engine_kafka;
    ALTER TABLE kafka_engine_table MODIFY SETTINGS ...
    ATTACH TABLE materialized_view_from_engine_kafka;
    должно быть бесплатно
  • https://t.me/clickhouse_ru
    Да я а курсе. Эта штука опциональная, она не нужна. Суммируются числовые поля которые не в orderby
  • часть числовых колонок не следует аггрегировать ....
  • https://t.me/clickhouse_ru
    Почитаю, спасибо
  • https://t.me/clickhouse_ru
    у данных тоже выходных нет? или есть?
  • https://t.me/clickhouse_ru
    ну это решается через simpleaggregatefunctiion.

    Короче если репликейтид таблица то придется переатичавать парты в таблицу с другим списком

    Список поменять нельзя по простому, только сложно
  • ок! понял, спа!
  • https://t.me/clickhouse_ru
    В субботу и воскресенье данных нет
  • https://t.me/clickhouse_ru
    Я извиняюсь, а сколько у вас вообще данных, что TTL 1 день вам нужен
  • https://t.me/clickhouse_ru
    @Alexeysaff #310138 10:05 AM, 03 Feb 2023
    Несколько терабайт, но расширить место это проблема
  • https://t.me/clickhouse_ru
    @Alexeysaff #310139 10:05 AM, 03 Feb 2023
    Не спрашивайте почему
  • https://t.me/clickhouse_ru
    что-то типа такого попробовать

    TTL date + INTERVAL if(toDayOfWeek(today(),0) BETWEEN 6 AND 7, 3, 1) DAY
  • https://t.me/clickhouse_ru
    @den_crane #310141 10:06 AM, 03 Feb 2023
    у меня кстати есть задача, там один час нужен данных, все бывает
  • https://t.me/clickhouse_ru
    Попробую
  • https://t.me/clickhouse_ru
    Как я помню вы работаете в компании, которая занимается рекламой
  • https://t.me/clickhouse_ru
    Просто нужны вчерашние данные. В случае понедельника пятничные
  • https://t.me/clickhouse_ru
    Там просто данные на входе в etl. Обработаны и больше не нужны
  • https://t.me/clickhouse_ru
    @Squaretus #310147 10:08 AM, 03 Feb 2023
    Всем доброго времени суток
    столкнулся с неприятной проблемой, возможно, не понимаю работу колонки в кликхаузе с типом Array(String), прошу указать на ошибку

    есть таблица в постгресе с колонкой, в которой тип данных ARRAY, данные в ней в виде

    {"Антонио Бандерас", "Том Холланд", "Рубен Фляйшер", "Марк Уолберг"}

    берем эти данные из постгреса с помощью pandas, грузим в датафрейм, получаем колонку с типом данных object и данные в виде

    {"Антонио Бандерас", "Том Холланд", "Рубен Фляйшер", "Марк Уолберг"}

    грузим этот датафрейм с помощью isnert_df в кликхауз в колонку с типом данных Array(String) и получаем данные в виде
    [ "{", "\"", "А", "н", "т", "о", "н", "и", "о", " ", "Б", "а", "н", "д", "е", "р", "а", "с", "\"", ",", "\"", "Т", "о", "м", " ", "Х", "о", "л", "л", "а", "н", "д", "\"", ",", "\"", "Р", "у", "б", "е", "н", " ", " ", "Ф", "л", "я", "й", "ш", "е", "р", "\"", ",", "\"", "М", "а", "р", "к", " ", "У", "о", "л", "б", "е", "р", "г", "\"", "}" ]

    не могу сообразить - проблема в пандасе, там данные теряют тип array и потому приходят в кликхауз в таком виде?
    или проблема в типе данных кликхауза Array(String)?
  • https://t.me/clickhouse_ru
    что значит шардировать по ключу? Ключ сортировки у меня сделан, так чтобы именно по нему было дедуплицировано.
  • https://t.me/clickhouse_ru
    вот так наверное все таки
    TTL date + INTERVAL if(toDayOfWeek(today(),0) IN (1,6,7), 3, 1) DAY
  • https://t.me/clickhouse_ru
    Так не today а date
  • https://t.me/clickhouse_ru
    а я думаю что today()
  • https://t.me/clickhouse_ru
    @BloodJazMan #310152 10:11 AM, 03 Feb 2023
    вообще в доке нормального описания алгоритма TTL не хватает

    что с чем сравнивается чтобы remove был true
  • https://t.me/clickhouse_ru
    Ttl выражение это дата когда удалять
  • изучаю system.replication_queue. не очень понятно, как на хосте могут быть записи type = GET_PART и source = этот же самый хост
  • https://t.me/clickhouse_ru
    Да, они пришли как строка и распарсились
  • если правильно понимаю, GET_PART - это когда надо с другого хоста среплицировать
  • https://t.me/clickhouse_ru
    ошибки есть?
  • https://t.me/clickhouse_ru
    сколько тасок там вообще?
  • 18810
  • в логах? или в этой таблице?
  • https://t.me/clickhouse_ru
    System restart replica таблица; выполните
  • есть предположение, что при вставке надо указывать не {"раз","два",...}, а ["раз", "два",..] т.к. это краткая форма записи типа Array()
  • https://t.me/clickhouse_ru
    Поле last_exception
  • отфильтровать - "where isNotNull(last_exception) " ? не фильтрует, выводит строки с пустым last_exception
  • https://t.me/clickhouse_ru
    Там не может быть null
    Просто банально <>''
  • https://t.me/clickhouse_ru
    @den_crane #310166 10:26 AM, 03 Feb 2023
    В кх null это редкость, их вообще нету в системных таблицах
    и null не эквивалентен пустой строке, тут не оракл
  • С ошибкой только одна таска:
    GET_PART │ 2023-02-03 09:56:58 │ 0 │ host1 │ 202107_11_11_0 │ [] │ 0 │ 0 │ 1 │ Code: 234. DB::Exception: No active replica has part 202107_11_11_0 or covering part. (NO_REPLICA_HAS_PART) (version 22.3.15.33 (official build)) │ 2023-02-03 10:20:57 │ 15 │ Not executing fetch of part 202107_11_11_0 because 8 fetches already executing, max 8. │ 2023-02-03 10:25:35 │ │
  • https://t.me/clickhouse_ru
    А вам нужна партиция 202107 ? Сколько времени данные храните?
  • нужна. данные вечно храним
  • https://t.me/clickhouse_ru
    @nitanitaanit #310170 11:18 AM, 03 Feb 2023
    #вакансия #DBA #ClickHouse

    В компанию-фармдистрибьютор мы ищем Администратора баз данных ClickHouse.

    ОБЯЗАННОСТИ:

    Установка, настройка кластера и сопровождение ClickHouse;
    Обеспечение непрерывной работы, диагностика и устранение неполадок ClickHouse;
    Восстановление кластера в случае аварии;
    Настройка системы мониторинга и анализа ошибок в части работы ClickHouse;
    Внедрение систем миграций БД;
    Настройка кластеров Apache Kafka, контроль и обеспечение непрерывной работы;
    Контроль пайплайна данных Kafka -> Clickhouse.
    ТРЕБОВАНИЯ:

    Опыт администрирования и настройки Clickhouse и Kafka от 2-х лет;
    Опыт настройки мониторинга;
    Опыт взаимодействия с разработчиками, участие во внедрениях как плюс;
    Базовые знания unix систем.
    УСЛОВИЯ:

    Уровень дохода по результатам собеседования;
    Комфортный офис с современным ремонтом;
    Офисный, удаленный или гибридный формат работы, 5\2 с 9 до 18;
    ДМС;
    Оплата обучения за счет компании;
    Скидки на продукцию в аптеке на территории офиса;
    Услуги профессионального массажиста в офисе;
    Оформление на работу согласно ТК РФ;
    Корпоративный транспорт;
    Бесплатная парковка для автомобилей сотрудников.

    Telegram: @nitanitaanit
    />azhavoronko@spice-agency.ru
  • https://t.me/clickhouse_ru
    @krivtsov_artem #310171 11:24 AM, 03 Feb 2023
    привет!
    как в Java принято делать batch-insert Java объектов?
    гуглится такой способ

    client.connect(server)
    .format(ClickHouseFormat.RowBinary)
    .write()
    .table("my_table")
    .data(inputStream)
    .execute()

    но непонятно где взять нужный сериализатор чтобы сделать inputStream
    ткните в доку плиз 🙏
  • https://t.me/clickhouse_ru
    Вот этот запрос много строк вернет?
    select 'delete '||part_zoo
    from (
    select zoo.p_path as part_zoo, zoo.ctime, zoo.mtime, disk.p_path as part_disk
    from
    (
    select concat(path,'/',name) as p_path, ctime, mtime
    from system.zookeeper where path in (select concat(replica_path,'/parts') from system.replicas)
    ) zoo
    left join
    (
    select concat(replica_path,'/parts/',name) as p_path
    from system.parts inner join system.replicas using (database, table)
    ) disk on zoo.p_path = disk.p_path
    where part_disk='' and zoo.mtime <= now() - interval 1 day
    order by part_zoo) format TSVRaw;
  • https://t.me/clickhouse_ru
    Это подходит если у вас уже есть стрим. Например csv или паркет файл.
    если у вас просто список с объектами в джаве то там есть обычный способ добавления по одной строке в батч и отсылка батча
  • https://t.me/clickhouse_ru
    спасибо, можно еще уточнить что за способ? async_insert=1 или вы имеете ввиду что-то другое?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/clickhouse-java/tree/main/clickhouse-jdbc#examples
    Вот же batch insert

    ps.addBatch(); // parameters will be write into buffered stream immediately in binary format ... ps.executeBatch();
    clickhouse-java/clickhouse-jdbc at main · ClickHouse/clickhouse-java

    Java client and JDBC driver for ClickHouse. Contribute to ClickHouse/clickhouse-java development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    спасибо, jdbc не смотрел, пользуюсь простым http клиентом)
  • https://t.me/clickhouse_ru
    там же одно и тоже под капотом. У вас данные откуда? Они в виде чего?
  • https://t.me/clickhouse_ru
    забираю данные из другой базы, модифицирую их и получается коллекция POJO в памяти приложения, их и хочу вставлять в КХ
  • https://t.me/clickhouse_ru
    Ну в общем-то написать несложно но будет 20 строк вместо 3 в jdbc
  • https://t.me/clickhouse_ru
    ага ок, еще раз спасибо
  • не выполнился по таймауту:
  • https://t.me/clickhouse_ru
    @ea_kozlov #310182 11:50 AM, 03 Feb 2023
    Всем привет! Кто нибудь пробовал хранить JSON объекты как отдельный тип данных? Поделитесь опытом, как оно себя в проде ведёт)
    https://clickhouse.com/docs/en/guides/developer/working-with-json/json-semi-structured
    Semi-Structured Approach | ClickHouse Docs

    Using a semi-structured approach

  • https://t.me/clickhouse_ru
    Экспериментально ведет. Иногда ломается навсегда. И приходится выковыривать данные из таблицы.
  • https://t.me/clickhouse_ru
    Я вам предлагал system restart replica сделать вы пробовали? Там очередь укроротится на время. И станет легче.

    Вот здесь другой запрос
    https://github.com/ClickHouse/ClickHouse/issues/10368
    Some merges may stuck · Issue #10368 · ClickHouse/ClickHouse

    This bug is discovered on Yandex.Metrica servers. If there is assigned merge but some parts in between of the range of parts to merge get lost on all replicas, the merge cannot proceed and the foll...

  • system replica restart таблица; для каждой таблицы надо делать? или только там где ошибка? у нас таблиц несколько тысяч
  • https://t.me/clickhouse_ru
    @dlimonov #310186 12:14 PM, 03 Feb 2023
    Добрый день.
    Подскажите, можно ли переменной allow_suspicious_low_cardinality_types задать значение через конфигурационный xml файл или только путём изменения через запрос в таблице system.settings?
  • https://t.me/clickhouse_ru
    Нашёл способ.
    /etc/clickhouse-server/users.d/allow_suspicious_low_cardinality_types.xml
    <clickhouse>
    <profiles>
    <default>
    <allow_suspicious_low_cardinality_types>1</allow_suspicious_low_cardinality_types>
    </default>
    </profiles>
    </clickhouse>
  • Ошибка сама ушла - больше нет этой записи. Хочется разобраться с логикой GET_PART - нормально ли то, что в очереди есть ( и их много )частей который имеют в sorce_replica собственный хост. Т.е. хост хочет сам с себя утянуть парты
  • @ivanio11 #310189 12:51 PM, 03 Feb 2023
    Всем привет , правильно ли я понимаю что если у меня столбец имеет тип decimal(10,2)
    И я делаю какую либо математику над ним , то я не получу число с 3 знаками после запятой ?
    Мне на этот процент в дальнейшем нужно умножать , чтобы разбивать на доли , и в таком случае погрешность очень большая получается
  • https://t.me/clickhouse_ru
    а у вас replication_queue это по всем таблицам?

    вы случайно не апгрейдились недавно?

    несколько тысяч это охреееннннеееть
  • https://t.me/clickhouse_ru
    это нормально, это небольшая проблема в отображении
  • Временно поднимал минорную версию в рамках 22.3, но потом откатился, так появились ошибки, что памяти не хватает
  • Replication_queue, да, по всем таблицам
  • https://t.me/clickhouse_ru
    часть операций с decimal делается через флоат (например avg)

    ну и операции с флоат

    SELECT CAST('1', 'decimal(10, 2)') / 3

    ┌─divide(CAST('1', 'decimal(10, 2)'), 3)─┐
    │ 0.33 │
    └────────────────────────────────────────┘

    SELECT CAST('1', 'decimal(10, 2)') / 3.0
    ┌─divide(CAST('1', 'decimal(10, 2)'), 3.)─┐
    │ 0.3333333333333333 │
    └─────────────────────────────────────────┘
  • @ivanio11 #310195 12:57 PM, 03 Feb 2023
    хммм , а как мне можно получить число с большим кол-вом знако
    то на что делю привести во флот ?
  • https://t.me/clickhouse_ru
    вам надо fetch_pool_size увеличивать
  • https://t.me/clickhouse_ru
    ниче не понял, переведите на SQL
  • Смотрю что это за параметр... А про GET_PART можно прояснить - что означает когда в SOURCE_REPLICA собственный хост?
  • Привёл аргумент на который делю ( который больший) к float , спасибо
  • https://t.me/clickhouse_ru
    @llgruff #310200 01:02 PM, 03 Feb 2023
    Привет!
    Подскажите, если Postgres отдает ответ с типом integer[], ClickHouse может его загрузить во внешний словарь как Array(UInt8) или только как String?
    Сейчас получаю такую ошибку
    Code: 1001, type: pqxx::conversion_error, e.what() = Could not convert string to integer: value out of range.
    для
    <attribute>
    <name>days</name>
    <type>Array(UInt8)</type>
    <null_value>[]</null_value>
    </attribute>
    Я нашел тикет из 2021, что Array для MySQL не поддерживается https://github.com/ClickHouse/ClickHouse/issues/26299 , но не получилось найти в коде текущие поддерживаемые форматы для Postgres
  • https://t.me/clickhouse_ru
    недавно добавили функций которые умеют принимать result_scale: multiplyDecimal divideDecimal

    раньше надо было делать извращения

    select 1 / 3::Decimal(38,6) * 1::decimal(10,2);
    ┌─multiply(divide(1, CAST('3', 'Decimal(38, 6)')), CAST('1', 'decimal(10, 2)'))─┐
    │ 0.333333 │
    └───────────────────────────────────────────────────────────────────────────────┘
  • Ни в Гугле ни в конфиге не вижу этого параметра
  • https://t.me/clickhouse_ru
    c PG может

    А почему у вас Array(UInt8) ? сделайте Array(Int64)

    mysql вообще не умеет массивы, поэтому и нет
  • https://t.me/clickhouse_ru
    22.3 ?

    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <background_fetches_pool_size>32</background_fetches_pool_size>
    </default>
  • https://t.me/clickhouse_ru
    В PG изначально хранится битовая строка BIT(366), где каждый бит это день в году: выходной или рабочий день у сотрудника, сотрудников 100к.

    Хочу получить для словаря ClickHouse минимальный размер в памяти и скорость получения значения по индексу (номер дня в году).
    Какой тип подойдет лучше?
    1. Array(Int64) , хотел UInt8 так как он меньше
    2. String + substring для получения значения.
    3. Bitmap object + subBitmap
  • https://t.me/clickhouse_ru
    нету маппинга для BIT https://github.com/ClickHouse/ClickHouse/blob/70d1adfe4b7e437a62c59ca44a51fbd186ec7584/src/DataTypes/DataTypeString.cpp#L59

    пробуйте через строки и конвертируйте в КХ в массив https://github.com/ClickHouse/ClickHouse/issues/26536#issuecomment-896205649
    ClickHouse/DataTypeString.cpp at 70d1adfe4b7e437a62c59ca44a51fbd186ec7584 · ClickHouse/ClickHouse

    ClickHouse® is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    думаю для сотрудников 100к. понадобится много памяти, для массива, возможно проще строкой оставить и парсить после dictGet
  • https://t.me/clickhouse_ru
    @VTaLiKK #310208 01:53 PM, 03 Feb 2023
    Коллеги, всем привет
    Разворачиваю клик, но есть одно НО. нет sudo

    Покурив скрипты установки решил, что будет достаточно скопировать ручками, прописать пути и запустить

    споткнулся о скрипт clickhouse install
    debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied

    Понимаю, что за ошибка, но как обойти при установке клика? можно ли как-то скипнуть создание дефолтного пароля или переназначить папку для кеша?
  • https://t.me/clickhouse_ru
    установка клика это создание пользователя , каталогов в /var /etc и создание сервисов initD / systemD, все это вам сделать нельзя. Зачем вы ставите клик? Просто берите и запускайте бинарник, без всякой установки.
  • https://t.me/clickhouse_ru
    да но, я новичек с кликом, и понимаю, о чем вы говорите
    но не понимаю, что делает clickhouse install
    эта команда фигурирует в скрипте установки doinstall
    В эту команду передаются пути нахождения дата логов конфигов бинарей и т.д.
    Описание этой команды не нашел ни на офф инструкции ни на просторах. просто хелп выводит список аргументов, но для чего не описано

    Если запускать установку не нужно, как бинарю при запуске передать переаметры нахождения конфигов и прочего?
  • https://t.me/clickhouse_ru
    /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
  • https://t.me/clickhouse_ru
    @den_crane #310212 02:16 PM, 03 Feb 2023
    конфиги каталоги относительные от config.xml
    остальные пути в конфигах
  • https://t.me/clickhouse_ru
    @den_crane #310213 02:16 PM, 03 Feb 2023
    возможно вам нужен clickhouse-local который вообще не требует конфигов и каталогов
  • https://t.me/clickhouse_ru
    @VTaLiKK #310214 02:16 PM, 03 Feb 2023
    Понял. спасибо огромное
  • https://t.me/clickhouse_ru
    У меня задача развернуть кластер из 4х шардов, но судо заказчик не дает
  • https://t.me/clickhouse_ru
    заказчик мудак, бегите.
  • https://t.me/clickhouse_ru
    @den_crane #310217 02:18 PM, 03 Feb 2023
    как он при рестарте сервера будет КХ автоматически запускать?
  • https://t.me/clickhouse_ru
    ну, ))) не разобравшись не могу эскалировать. иначе у заказчика найдется эксперт, который скажет, что уже я мудакк и не разобрался) поэтому стараюсь разобраться. если не получиться уже эскалировать
  • https://t.me/clickhouse_ru
    @VTaLiKK #310219 02:18 PM, 03 Feb 2023
    Но все равно спасибо
  • https://t.me/clickhouse_ru
    @den_crane #310220 02:18 PM, 03 Feb 2023
    да и без рута вам еще мудохаться с лимитами
  • https://t.me/clickhouse_ru
    ох)) спасибо , что подсветили
  • https://t.me/clickhouse_ru
    @den_crane #310222 02:20 PM, 03 Feb 2023
    cat /etc/security/limits.d/clickhouse.conf
    clickhouse soft nofile 1048576
    clickhouse hard nofile 1048576
  • https://t.me/clickhouse_ru
    @den_crane #310223 02:22 PM, 03 Feb 2023
    ну и в ядро за метриками КХ сходить не сможет, поэтому все метрики типа profile events будут пустыми
  • Если Вам не дают рута, то Вы должны дать рекомендации, что они от рута должны сделать, чтобы кх работал штатно. Думаю, что можно ссылкой на документацию.
    Есть ещё один путь - docker. Это в совсем запущенном случае. Но я про запуск докера в проде не знаю. Это не рекомендация, а только идея.
  • https://t.me/clickhouse_ru
    вот я и пытался понять что происходит внутри clickhouse install но нигде описания не нашел.
  • @aoparin #310226 02:32 PM, 03 Feb 2023
    так пакет дать и сказать установить от рута, оно там всё сделать должно. рекомендованная система убунта... :)
  • https://t.me/clickhouse_ru
    раньше это был баш,

    https://github.com/ClickHouse/ClickHouse/blob/13fc7cd080b70ff6286bf8fc6373e65939338f6e/debian/clickhouse-server.init
    https://github.com/ClickHouse/ClickHouse/blob/13fc7cd080b70ff6286bf8fc6373e65939338f6e/debian/clickhouse-server.postinst

    сейчас тоже +- самое но c++
  • https://t.me/clickhouse_ru
  • @BioQwer #310229 02:46 PM, 03 Feb 2023
    Всем привет!
    могут ли быть проблемы при вставке TSV если одно значение json?
    Column 119, name: dvce_sent_tstamp, type: Nullable(DateTime64(3)), parsed text: "2023-02-01 11:06:48.294"
    Column 120, name: refr_domain_userid, type: Nullable(String), parsed text: <EMPTY>
    Column 121, name: refr_dvce_tstamp, type: Nullable(DateTime64(3)), parsed text: "<TAB>{<DOUBLE QUOTE>schema<DOUBLE QUOTE>"
    ERROR: garbage after Nullable(DateTime64(3)): ":<DOUBLE QUOTE>iglu:com"

    : While executing ParallelParsingBlockInputFormat: (at row 1)
    . (CANNOT_PARSE_INPUT_ASSERTION_FAILED) (version 22.7.3.5 (official build))

    2023-02-01 11:06:48.294 {"schema":"iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-1","data"

    Пытаюсь TSV от Snowplow запихнуть в Clickhouse
  • https://t.me/clickhouse_ru
    огромное спасибо, буду курить
  • https://t.me/clickhouse_ru
    Похоже у вас JSON в колонке где ожидается datetime64
  • не я вижу баги с этим
    input_format_tsv_empty_as_default=1 помогло
    datetime64 как то странно обрабатывается

    но теперь у меня другая проблема если 100 строк вставлять то он как будто \n не видит

    Column 124, name: derived_tstamp, type: Nullable(DateTime64(3, 'Europe/Moscow')), parsed text: "2023-02-01 11:06:47.979"
    Column 125, name: event_vendor, type: Nullable(String), parsed text: "com.snowplowanalytics.snowplow"
    Column 126, name: event_name, type: Nullable(String), parsed text: "application_background"
    Column 127, name: event_format, type: Nullable(String), parsed text: "jsonschema"
    Column 128, name: event_version, type: Nullable(String), parsed text: "1-0-0"
    Column 129, name: event_fingerprint, type: Nullable(String), parsed text: "53d6cbc6dbf7ac417686e0d2f38ec709"
    Column 130, name: true_tstamp, type: Nullable(DateTime64(3, 'Europe/Moscow')), parsed text: "dm_and"
    ERROR: garbage after Nullable(DateTime64(3, 'Europe/Moscow')): "_ru<TAB>mob<TAB>20"

    : While executing ParallelParsingBlockInputFormat: (at row 1)
    . (CANNOT_PARSE_INPUT_ASSERTION_FAILED) (version 22.7.3.5 (official build))
  • ClickHouse sometimes fails to parse `DateTime64` columns using `JSONEachRow` depending on the position of keys within the JSON input · Issue #36949 · ClickHouse/ClickHouse

    ClickHouse sometimes fails to parse DateTime64 columns using JSONEachRow depending on the position of keys within the JSON input. How to reproduce Using ClickHouse 22.4.4 over the HTTP interface, w...

  • Column 130, name: true_tstamp, type: Nullable(DateTime64(3, 'Europe/Moscow')), parsed text: "dm_and"

    видимо парсер для DateTime64 вообще кривой ((
  • https://t.me/clickhouse_ru
    Да конечно кривой. То что им заливаются сотни петабайт у 20 тыс. пользоватей ежедневно это конечно кривой. У вас там нет tab
  • есть там ТАБ
  • я конечно рад за 20 тыс пользователей у которых tsv грузятся, но не от всей души)
  • https://t.me/clickhouse_ru
    Вы чем заливаете? Кхклиентом? Что будет если добавить параметр --input_format_parallel_parsing=0
  • https://t.me/clickhouse_ru
    Поймите, я читаю все сообщения гитхаба уже 6 лет в репе кх, я примерно представляю вероятность найти баг в tsv парсере при первой в жизни попытке залить данные. Я думаю проще выиграть в лотерею не играя в лотерею.
  • https://t.me/clickhouse_ru
    @den_crane #310241 04:00 PM, 03 Feb 2023
    Я видел сотни таких сообщений как у вас и всегда оказывалось что баг в файле.
  • https://t.me/clickhouse_ru
    @den_crane #310242 04:01 PM, 03 Feb 2023
    Обычно баг в tsv парсере бывает типа заливали заливали несколько лет и тут бац невероятное соовпадение и баг в parallel парсере наложился на другой и все упало.
  • Понял вас
    Не я уже использовал этот подход в бою на прошлом месте
    Но тут дало осечку

    Хотя ребята из snowplow могли бы сами уже сделать интеграцию с кликом
  • Попробую
  • Http с помощью curl
  • https://t.me/clickhouse_ru
    @Igess ↶ Reply to #310245 #310246 04:14 PM, 03 Feb 2023
    Настройку можно передать в GET-параметрах HTTP-запроса
  • https://t.me/clickhouse_ru
    @Igess #310247 04:23 PM, 03 Feb 2023
    Коллеги, подскажите, как работает “system stop fetches”?

    Поясню вопрос: я ожидал, что после выполнения данного запроса будет остановлена репликация на инстансе и спустя ожидаемое количество времени входящая сетевая нагрузка с сервера должна уйти

    Однако спустя полчаса она все ещё продолжалась

    Я правильно понимаю, что system stop fetches не влияет на текущую очередь репликации (слепок на момент запуска этой команды) и данная команда лишь препятствует взятию в работу новых таксов с типом GET_PART, ATTACH_PART, REPLACE_RANGE,..

    ?
  • https://t.me/clickhouse_ru
    @Igess #310248 04:30 PM, 03 Feb 2023
    Или с момента выполнения system stop fetches должны были лишь завершиться таски репликации is_currently_running=1 и после остановиться?
  • https://t.me/clickhouse_ru
    @Igess #310249 04:34 PM, 03 Feb 2023
    Версия КХ: 22.3.11.12
  • не помогло
    curl -H 'X-ClickHouse-User: snowplow' -H 'X-ClickHouse-Key: pass' 'http://clickhouse-01:8123/?input_format_tsv_empty_as_default=1&input_format_parallel_parsing=0&query=INSERT%20INTO%20snowplow_test.good_event%20FORMAT%20TSV' -d @- < 100.tsv
  • https://t.me/clickhouse_ru
    @Igess ↶ Reply to #310250 #310251 04:41 PM, 03 Feb 2023
    Набор колонок в TSV точно соответствует тому, что в файле?
    Вы можете найти из TSV те строки, что ломают вставку?
  • да я в первые 2 строки только и смотрю глазами
  • https://t.me/clickhouse_ru
    никто не сталкивался с таким?
  • https://t.me/clickhouse_ru
    @Igess ↶ Reply to #310252 #310254 04:45 PM, 03 Feb 2023
    Вы можете очистить TSV воспроизвести на стейдже?
  • не понял
  • Code: 27. DB::ParsingException: Cannot parse input: expected '\n' before: '_ru\tmob\t2023-02-01 11:06:48.166\t2023-02-01 11:06:48.075\t2023-02-01 11:06:43.083\tunstruct\t768668f0-5310-4b91-ae27-efea72f502d9\t\tdetmir_and_ru\tandr-3.1.1\tssc-2.8.':
    Row 1:

    еще вот такое в начале пишет
  • https://t.me/clickhouse_ru
    отрезайте куски по строкам head -n 100 ищите в какой строке ошибка, парсер очень часто неправильное место показывает, потому он так устроен
    если ошибка в первой строке то awk-м -F \t разворачиваем строку , в ексель или в гугл спреадшит, рядом колонки таблицы
  • https://t.me/clickhouse_ru
    Да, конечно это читал. А есть метрики по которым можно определить что все живо.
  • https://t.me/clickhouse_ru
    @rukavkov #310259 05:35 PM, 03 Feb 2023
    Хочется какой то хлесчек метрики по которой понятно что все ок. Если нет- там уже разбираться
  • https://t.me/clickhouse_ru
    у меня подобная тема была, только наооборот, в последней строке. было \n\n
  • https://t.me/clickhouse_ru
    @socketpair #310261 05:55 PM, 03 Feb 2023
    https://clickhouse.com/docs/en/whats-new/changelog/2022/

    Кликхаус не тормозит. А я торможу.

    ClickHouse release 22.12, 2022-12-15

    Systemd integration now correctly notifies systemd that the service is really started and is ready to serve requests. #43400 (Коренберг Марк).

    .
    2022 Changelog | ClickHouse Docs

    ClickHouse release 22.12, 2022-12-15

  • @serg_kacher #310262 07:51 PM, 03 Feb 2023
    Привет!
    Сегодня обновился до 22.8

    Стал изредка получать ошибку на довольно простых запросах
    Poco::Exception. Code: 1000, e.code() = 0, Timeout (version 22.8.13.20 (official build))

    В чем может быть причина? Вдруг кто-то сталкивался?
  • 04 February 2023 (14 messages)
  • @Derzkii_SPooN #310263 11:40 AM, 04 Feb 2023
    Привет, столкнулся с такой проблемой. Пытаюсь закачать в КХ из s3 данные. Есть таблица с engine=s3, смотрит на паркеты. Пытаюсь сделать к ней запрос - и контейнер просто помирает. в логах нашел такое
    {} <Error> ServerErrorHandler: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 3.48 GiB (attempt to allocate chunk of 1048591 bytes), maximum: 3.40 GiB
    Оперативы на тачке немного (4гб), но паркеты в s3 по размеру не превышают 1Гб, по идее должно влезать

    Выставил max_server_memory_usage_to_ram_ratio=2 - не помогает. Никто не сталкивался с таким?
  • https://t.me/clickhouse_ru
    @alex_spiridonov #310264 11:41 AM, 04 Feb 2023
    добавьте памяти, КХ её любит
  • https://t.me/clickhouse_ru
    Join есть? Или все один в один? Без вычислений? Order By, group by?
  • @Derzkii_SPooN #310266 11:41 AM, 04 Feb 2023
    там просто селект
  • @Derzkii_SPooN #310267 11:42 AM, 04 Feb 2023
    никаких вычислений просто вставка 1 в 1
  • https://t.me/clickhouse_ru
    @Lazycat_su #310268 11:45 AM, 04 Feb 2023
    Хызы. 4 гига маловато.
  • @Derzkii_SPooN #310269 11:46 AM, 04 Feb 2023
    Хотелось бы быть уверенным, прежде чем нарастить ресурсы, что дело в оперативе
  • https://t.me/clickhouse_ru
    @Lazycat_su #310270 11:46 AM, 04 Feb 2023
    Честно говоря, 4 гига вообще непонятно как работает;-)
  • @Derzkii_SPooN #310271 11:46 AM, 04 Feb 2023
    с божьей помощью)
  • А по моей проблеме ни у кого идей не появилось?
  • https://t.me/clickhouse_ru
    @Lazycat_su #310273 11:51 AM, 04 Feb 2023
    КХ на любой чих жрет оперативку. Любые, фактически, стандартные преобразования он делает в оперативке. Пусть меня поправят гуру, но основная идея вообще КХ ускорить обработку дисковых массивов - как можно быстрее выбрать минимально необходимый объем, засунуть его в оперативку и обработать.
    Если выбираете большой объем и начинаете обрабатывать, на маленьком объеме памяти - случается... ну примерно то что у вас случилось
  • https://t.me/clickhouse_ru
    S3 и hadoop взаимодействия в клике жручие. Добавляйте ram. Еще, полагаю, что в с3 паркеты сжатые (snappy, whatever), а в памяти, конечно, все по-другому
  • https://t.me/clickhouse_ru
    @den_crane #310275 02:35 PM, 04 Feb 2023
    Проблема еще в том что паркет блочный и размер блока задан при создании файла

    вот https://github.com/ClickHouse/ClickHouse/issues/45741
    8Mb паркет требует 16гб в кх и 24 гб parquet-tools

    Уже починено https://github.com/ClickHouse/ClickHouse/pull/45878 в след. версии кх
  • Спасибо, многое объясняет
  • 05 February 2023 (69 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #310277 08:24 AM, 05 Feb 2023
    Немножко туплю.
    В каком месте задаётся вот этот параметр?

    output_format_arrow_string_as_string

    Config сервера или как-то в запросе?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    в профиле пользователя или в default профиле
    /etc/clickhouse-server/users.d/output_formats.xml
    <clickhouse><profiles><default><output_format_arrow_string_as_string>1</output_format_arrow_string_as_string></default></profiles></clickhouse>
    в параметрах cli для вызозова clickhouse-client

    или в SETTINGS для query

    SELECT .. SETTINGS output_format_arrow_string_as_string=1 FORMAT Arrow
  • https://t.me/clickhouse_ru
    @Alexeysaff #310280 09:01 AM, 05 Feb 2023
    Второй вариант лучше. Спасибо
  • https://t.me/clickhouse_ru
    @Nick_jv #310281 09:25 AM, 05 Feb 2023
    Подскажите, пожалуйста, нормально будет создать три дб: 1- для сырых данных, 2 - для аналитики(матвью/вью из 1 дб), 3 - для продажников (вью из 1 дб для суперсета) или лучше все создать в 1 дб? Просто хотел разнести данные по основным направлениям использования. Идея в том, чтобы предоставлять просто интерфейс к нужным данным
  • https://t.me/clickhouse_ru
    @konnectrl #310282 09:26 AM, 05 Feb 2023
    Ну вам надо почитать что такое view в Clickhouse
  • https://t.me/clickhouse_ru
    @konnectrl #310283 09:27 AM, 05 Feb 2023
    И то что по ним не разграничиваются права
  • https://t.me/clickhouse_ru
    ну вообще clickhouse-dbt что-то такое в итоге и делает

    подход называется ELT
    Extract - Loading - Transform

    то есть сырые данные мы трансформирует в винтрины средствами СУБД и дальше работаем с витринами

    только не понятно в 3й БД для Sales там именно VIEW ? или Materialized View?

    в любом случае ROW POLICY к разным продажникам наверное разные стоит применять если надо какие то разграничения прав
  • https://t.me/clickhouse_ru
    Зачем? Я нашёл решение проще. Я использую кафку, как общую шину данных и таблицы с движком для кафки и через матвью наполняют таблицы. Дальше на них строятся матвью и вью. Так как в конечном счёте всем нужны данные для графиков, я хочу просто создать отдельные дб только с нужными вьюхами для них и все. Просто не знаю насколько оптимальным будет такое решение
  • https://t.me/clickhouse_ru
    нормальное решение

    единственное непонятно, сами данные сырые из kafka тоже через MATERIALIZED VIEW сохраняются в отдельных таблицах?
  • https://t.me/clickhouse_ru
    Да. Kafka Topic -> Kafka Table Engine -> MV ->MergeTree family table
  • https://t.me/clickhouse_ru
    Зачем? В моем случае нужны права только к определённой дб.
  • https://t.me/clickhouse_ru
    бывает так что из одной таблицы надо одним менеджерам одно показывать, а другим другое...
  • https://t.me/clickhouse_ru
    единственное тут замечание

    надо уметь мониторить Kafka метрики
    а также понимать что когда много MV , то это CPU и память и диск и это не бесплатно... надо смотреть чем треды заняты

    эти MV в system.processes не видно
  • https://t.me/clickhouse_ru
    Спасибо. Думаю в ближайшее время этого будет достаточно. Каждая вью имеет описание и создаётся под конкретные цели и имеет владельца/ев. Проблема не создать вью, а сделать так чтобы это в "мусорку" не превратилось.
  • https://t.me/clickhouse_ru
    Спасибо, это учту
  • https://t.me/clickhouse_ru
    @skaradub #310293 11:25 AM, 05 Feb 2023
    привет! делаю рандомизированный задасет для тестов (generateRandom) в партицированной табличке. Возможно, надо как-то по-другому insert делать, просто указываю табличку и туда пытаюсь запихнуть 100к записей (кажется, копейки), падает, говорит, Read Timed Out. Подскажите, пожалуйста, как заполнять правильно тестовыми данными.
    https://pastebin.com/uK6k6m9D
    CREATE TABLE dynamic_hierarchy_test( category_stream_name String, hi - Pastebin.com

    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.

  • https://t.me/clickhouse_ru
    у вас generateRandom рандомные данные генерит в потоке
    вы их фильтруете... и потом только после фильтрации LIMIT срабатывает

    как думаете какова вероятность того что среди рандомного времени выпадет 100000 записей у которых дата в течении месяца?

    сделайте так чтобы целевые данные попадали в ваши диапозоны
    https://fiddle.clickhouse.com/7dd755a4-1a6e-4fbe-818d-66677fa613f1

    сделайте кстати KILL QUERY для старых запросов
    посмотрите system.processes
    а то у вас скорее всего в фоне запрос до сих пор CPU жрет
  • https://t.me/clickhouse_ru
    Вот это поворот, спасибо большое, то есть лимит ушел от generate из-за where он просто превратился в бесконечный поток. Пошел исправлять 🙈

    //Почему бесконечный, потому что сначала я запускал с нужным объемом в 100м.
  • https://t.me/clickhouse_ru
    да именно так

    в голове на будущее попробуйте разбирать все запросы на стадии и понять что они последовтаельно исполняются

    сначала определяем откуда будем данные читать
    FROM
    потом
    JOIN
    если есть
    SELECT что брать из from
    потом фильтрация
    WHERE
    потом

    GROUP BY если есть
    потом
    HAVING BY если есть
    потом
    ORDER BY если есть
    потом
    LIMIT
    потом
    FORMAT
  • https://t.me/clickhouse_ru
    Ага, спасибо, это понятно, я просто не понял логику поточной генерации, в доке не отметил.
  • https://t.me/clickhouse_ru
    @agpruss #310298 01:09 PM, 05 Feb 2023
    Коллеги, кто какую версию КХ в проде держит?
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #310299 01:22 PM, 05 Feb 2023
    Последнюю lts
  • https://t.me/clickhouse_ru
    @dvume #310300 02:51 PM, 05 Feb 2023
    Добый день! Пытаюсь соединиться с бд из спаркового экзекьютера, получаю ошибку:

    Caused by: java.sql.SQLException: No client available, server ClickHouseNode [uri=http://10.101.230.12:8123/db, options={url=jdbc:clickhouse:http://10.101.230.12:8123/db,driver=com.clickhouse.jdbc.ClickHouseDriver,jdbcUrl=jdbc:clickhouse:http://10.101.230.12:8123/db}]@-2029630818

    локально подключиться получается, в maven-проекте создаётся убер jar c той же версией артифакта (com.clickhouse:clickhouse-jdbc:0.4.0), который потом запускается через spark-submit.

    Подскажите пожалуйста, в чём может быть причина? Откуда начинать копать?
  • https://t.me/clickhouse_ru
    No client available error occured. · Issue #1185 · ClickHouse/clickhouse-java

    I'm configuring a placement schedule in the Spark2.4.5-scala2.12 environment. In local tests, the dataframe is inserted well into the Clickhouse table. However, spark-submit does not work o...

  • https://t.me/clickhouse_ru
    @godevdev #310302 03:28 PM, 05 Feb 2023
    👋 Приветствую, подскажите по адаптации SQL запроса

    Мигрирую с mysql на кх и столкнулся с тем, что подзапросы подобные этому не выполняются. Как то можно адаптировать запрос под кх?

    SELECT *,
    (SELECT active FROM users WHERE users.id = promo.user_id ORDER BY date DESC LIMIT 1 ) as active
    FROM promo WHERE cat=2 ORDER by id DESC LIMIT 0, 50
  • https://t.me/clickhouse_ru
    Коррелированные запросы не поддерживаются в КХ, потому что в КХ нельзя быстро найти по индексу одну строку.

    Вам необходимо использовать обычный джойн

    SELECT *,
    FROM promo join (SELECT active, id
    FROM users
    WHERE id in (SELECT id from promo WHERE cat=2 ORDER by id DESC LIMIT 0, 50)
    ORDER BY date DESC LIMIT 1 by id
    ) as users on users.id = promo.user_id
    WHERE cat=2
    ORDER by id DESC LIMIT 0, 50
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    и в общем такие запросы в КХ с ORDER by id DESC LIMIT 0, 50 лучше вообще не делать, это только в OLTP базах работает.
    Т.е. возможно вы зря мигрируете и КХ будет жостко тупить по сравнению с myqsl
  • https://t.me/clickhouse_ru
    @dvume ↶ Reply to #310301 #310306 03:48 PM, 05 Feb 2023
    спасибо!
  • https://t.me/clickhouse_ru
    @Alexeysaff #310307 05:09 PM, 05 Feb 2023
    toDayOfWeek(t[, mode[, timezone]]) - второй аргумент mode

    SELECT toDayOfWeek(today(), 0)

    Query id: 1f143220-3dd8-4d36-94f5-fa1fc65b1cee

    0 rows in set. Elapsed: 0.002 sec.

    Received exception from server (version 22.12.3):
    Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Function toDayOfWeek supports 1 or 2 arguments. The optional 2nd argument must be a constant string with a timezone name: While processing toDayOfWeek(today(), 0). (ILLEGAL_TYPE_OF_ARGUMENT)

    30071aae7fbb :)
  • https://t.me/clickhouse_ru
    @Alexeysaff #310308 05:09 PM, 05 Feb 2023
    ЧЯДНТ?
  • https://t.me/clickhouse_ru
    @lgtwb #310309 05:13 PM, 05 Feb 2023
    Таймзону указал неправильно не?
  • https://t.me/clickhouse_ru
    @lgtwb #310310 05:13 PM, 05 Feb 2023
    Там вроде строковые значения во втором парамеьре
  • https://t.me/clickhouse_ru
    @Alexeysaff #310311 05:14 PM, 05 Feb 2023
    ошибка говорит о том, что toDayOfWeek поддерживает 1 или 2 аргумента и второй таймзона
  • https://t.me/clickhouse_ru
    @Alexeysaff #310312 05:14 PM, 05 Feb 2023
    но в том же мануале (и как тут мне подсказывали) указано, что второй параметер, это mode
  • https://t.me/clickhouse_ru
    @Alexeysaff #310313 05:14 PM, 05 Feb 2023
    The two-argument form of toDayOfWeek() enables you to specify whether the week starts on Monday or Sunday, and whether the return value should be in the range from 0 to 6 or 1 to 7.
  • https://t.me/clickhouse_ru
    @ora00001 #310314 05:22 PM, 05 Feb 2023
    Коллеги, есть вопрос. Решил использовать движек для таблиц EmbeddedRocksDB, поверх таких таблиц натягивется словарь direct, количество записей в таблицах до 200 млн. Подскажите каких граблей ожидать ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310314 #310315 05:27 PM, 05 Feb 2023
    чужеродная для КХ штука - не колоночная, а строковая субд. И не кластеризуется.
  • https://t.me/clickhouse_ru
    Скорее всего KV, что и требется для словарей. Кластеризация это ясненько.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310314 #310317 05:29 PM, 05 Feb 2023
    словарь можно не натягивать, а использовать SETTINGS join_algorithm = 'direct'. Хотя это дело вкуса.
  • https://t.me/clickhouse_ru
    О, надо поробовать, пока с MT и словарем директ, не хватает производительности. Ну и join для нас пока не выход.
  • https://t.me/clickhouse_ru
    @sholokhov #310319 06:13 PM, 05 Feb 2023
    Всем привет!
    Возникла проблема на кластере (4 ноды, 2 шарда по 2 реплики) - застряла очередь репликации (replication_queue). Там есть десяток записей которые никак не прогрессируют и просто ретраятся (num_tries = 17614942 и растет), при этом таблица ушла в read only. Пробовали сделать DETACH для проблемных партов, но КХ выдает ошибку - Received exception from server (version 22.12.3): Code: 384. DB::Exception: Received from localhost:9000. DB::Exception: Part 20181127_0_12_2_164 has already been assigned a merge into 20181127_0_12_2_165. (PART_IS_TEMPORARILY_LOCKED). system.mutations where is_done = 0 пустая на всех нодах. Я завел тикет на гитхабе с подробным описанием проблемы - https://github.com/ClickHouse/ClickHouse/issues/46046 , но может кто-то сталкивался с проблемой залоченых партов и как ее можно обойти?
    Replication queue stuck and part has already been assigned a merge (PART_IS_TEMPORARILY_LOCKED) · Issue #46046 · ClickHouse/ClickHouse

    Hello! It seems like our replication queue on prod cluster got stuck somehow, there are few records which don’t go away from it causing the whole server to hang up and eating up all the CPU. We thi...

  • https://t.me/clickhouse_ru
    можно попробовать с LAYOUT(CACHED(...))
    еще что-то намутить
    но надо мониторить эффективность кеша
  • https://t.me/clickhouse_ru
    TTL есть на таблице?
  • https://t.me/clickhouse_ru
    TTL нет, но помогло убить мутацию которая висела в system.mutations с флагом is_done = 1
  • https://t.me/clickhouse_ru
    Не это памяти потребляет многовато.
  • https://t.me/clickhouse_ru
    EmbeddedRocksDB можно попробовать, но оно по памяти вообще то тоже не бесплатное, если вы понимаете как LSM работает
  • https://t.me/clickhouse_ru
    Да это ясно, поэтому задаю вопросы. Мутаций в этих таблицах минимум.
  • https://t.me/clickhouse_ru
    документация отражает master ветку, там уже другой toDayOfWeek

    у вас toDayOfWeek(t[,timezone])

    Converts a date or date with time to a UInt8 number containing the number of the day of the week (Monday is 1, and Sunday is 7).
  • https://t.me/clickhouse_ru
    @Igess #310327 08:17 PM, 05 Feb 2023
    Ап
  • https://t.me/clickhouse_ru
    @Igess #310328 08:17 PM, 05 Feb 2023
    Коллеги, подскажите, как работает “system stop fetches”?

    Поясню вопрос: я ожидал, что после выполнения данного запроса будет остановлена репликация на инстансе и спустя ожидаемое количество времени входящая сетевая нагрузка с сервера должна уйти

    Однако спустя полчаса она все ещё продолжалась

    Я правильно понимаю, что system stop fetches не влияет на текущую очередь репликации (слепок на момент запуска этой команды) и данная команда лишь препятствует взятию в работу новых таксов с типом GET_PART, ATTACH_PART, REPLACE_RANGE,..

    ?
  • https://t.me/clickhouse_ru
    да, новые фетчи не создаются, но уже идущие не прерываются.
  • https://t.me/clickhouse_ru
    @Igess #310330 09:08 PM, 05 Feb 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    очень медленно работает, потому что не присопоблен пайплайн доставать одну запись
  • https://t.me/clickhouse_ru
    Странно. А что быстро работает?
  • https://t.me/clickhouse_ru
    У меня получилось 5 млн гетДикт за 3 секунды.
  • https://t.me/clickhouse_ru
    в смысле оно не в 8192 раза быстрее чем mergetree

    https://kb.altinity.com/engines/altinity-kb-embeddedrocksdb-and-dictionary/#dictget--1million-random-rows
  • https://t.me/clickhouse_ru
    @den_crane #310335 09:24 PM, 05 Feb 2023
    и direct join тоже не сильно быстрый https://github.com/ClickHouse/ClickHouse/pull/35363#issuecomment-1184773042
    Special JOIN with StorageEmbeddedRocksDB by vdimir · Pull Request #35363 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Add new direct join algorithm for RocksDB, ref #33582 TOD...

  • https://t.me/clickhouse_ru
    Да этой статьей и пользовался. Но mt у меня в принципе запрос с рандом реад не отрабатывает за 5 минут
  • https://t.me/clickhouse_ru
    @ora00001 #310337 09:26 PM, 05 Feb 2023
    С индекс гранулярностью в 256
  • https://t.me/clickhouse_ru
    я не понял, не отрабатывает пример из статьи или не отрабатывает другой ваш запрос на ваших данных?
  • https://t.me/clickhouse_ru
    На моих данных.
  • https://t.me/clickhouse_ru
    ну скорее все в MergeTree индекс который не подходит
  • https://t.me/clickhouse_ru
    Построен также как в словаре. Если запускать запрос с сортировкой как в mt то очень быстро, а если сортировка не совпадает то очень долго. На реальных запросах, тоже очень долго. Больше 5 минут. На roksdb реальный запрос 2 минуты.
  • https://t.me/clickhouse_ru
    @ora00001 #310342 09:33 PM, 05 Feb 2023
    Сортировка не важна.
  • https://t.me/clickhouse_ru
    я не понял тогда в чем противоречие.

    Я говорю что rocksDB быстрее всего лишь в жалкие 5-10 раз чем mergeTree
    вы говорите что у вас 2 минуты против 5-ти.

    я считаю что rocksDB + словарь директ, должы 10-20 млн. dictGet в секунду как минимум выдавать.
  • https://t.me/clickhouse_ru
    За 5 минут не дождались ответа, в этом и проблемы.
  • https://t.me/clickhouse_ru
    @ora00001 #310345 09:36 PM, 05 Feb 2023
    С 10-20 млн, это очень хорошая цифра, у меня пока 5 млн, наблюдение. В какую сторону тюнить ?
  • 06 February 2023 (171 messages)
  • @DXYpT #310347 04:34 AM, 06 Feb 2023
    Привет. Какой тип хранения словаря выбрать (key - UInt16, value - String[до 20 симв.], кол-во строк ≈10к), если нужно будет делать не только dictGet(...), но и select key from some_dict where value like 'some_text' (т.е. искать по значению-строке, а не по ключу)?
  • https://t.me/clickhouse_ru
    А вам точно нужен словарь для такой мелкой таблицы?
  • @DXYpT ↶ Reply to #310348 #310349 04:53 AM, 06 Feb 2023
    Нужно регулярно её обновлять из postgres
  • @is_hidden_layer #310350 04:59 AM, 06 Feb 2023
    /
  • https://t.me/clickhouse_ru
    @xoradd ↶ Reply to #310347 #310351 05:10 AM, 06 Feb 2023
    Можно сделать два dictGet.
    Один работает по id, второй - по строке.
  • @DXYpT ↶ Reply to #310351 #310352 05:15 AM, 06 Feb 2023
    Ключ не может ведь быть строкой, только если строка внутри кортежа, но это всё сильно усложняет. Через select...from всё работает, а данных не так много, чтобы думать над тем, как их хранить, поэтому не буду париться, и выберу Flat
  • https://t.me/clickhouse_ru
    @xoradd ↶ Reply to #310352 #310353 05:26 AM, 06 Feb 2023
    Как оказалось может.
    Я у себя сделал запрос из словаря по строке.
  • @DXYpT ↶ Reply to #310353 #310354 05:27 AM, 06 Feb 2023
    а primary key - строка?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310334 #310355 05:41 AM, 06 Feb 2023
    получается, что в наиболее реалистичном сценарии (100000 random rows) все-таки выигрывает в два раза EmbeddedRocksDB + direct join.
    Но уже на 22.12 выигрыш по этим тестам не столь значительный - примерно 10-20%
    Потеря кластеризации и выборок по индексу в обмен на призрачное ускорение.
  • https://t.me/clickhouse_ru
    @ilior #310357 08:16 AM, 06 Feb 2023
    Всем привет! А почему может быть такое?
    insert into history
    SELECT
    now() as CreatedAt,
    JSONExtract(body,'Номер', 'String') as OrderCode,
    JSONExtract(body,'GUID', 'String') as OrderGuid,
    JSONExtractRaw(body) as Data
    FROM queue
    settings stream_like_engine_allow_direct_select=1
    работает нормально

    а
    CREATE MATERIALIZED VIEW IF NOT EXISTS consumer TO history AS
    SELECT
    now() as CreatedAt,
    JSONExtract(body,'Номер', 'String') as OrderCode,
    JSONExtract(body,'GUID', 'String') as OrderGuid,
    JSONExtractRaw(body) as Data
    FROM queue

    сыпет ошибками
    void DB::StorageRabbitMQ::streamingToViewsFunc(): Code: 27. DB::ParsingException: Cannot parse input: expected ']' before: '{\n <тут кусок JSON>’: While executing RabbitMQ. (CANNOT_PARSE_INPUT_ASSERTION_FAILED)

    При этом сама queue имеет одну колонку body String и формат JSONAsString
  • https://t.me/clickhouse_ru
    Надо смотреть на кейсах. У меня пока другая информация.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310358 #310359 09:29 AM, 06 Feb 2023
    > За 5 минут не дождались ответа, в этом и проблемы.
    Там же вам Денни сказал, что если речь идет о минутах, то скорее всего проблема в непопадании в индексы (в том числе из-за недоделанного оптимизатора) и full scan.
  • https://t.me/clickhouse_ru
    Да я понимаю. Но я не могу под каждый запрс создавать индексы. Rdb пофиг на индексы.
  • https://t.me/clickhouse_ru
    @volkolup #310361 09:38 AM, 06 Feb 2023
    Всем привет!
    У нас в компании очень нестабильно работает ClickHouse — кто может помочь с настройкой ClickHouse? Естественно, за вознаграждение, его обсудим. Пишите в лс, кто в теории может помочь, дам подробности
  • https://t.me/clickhouse_ru
    вы лучше подробности тут дайте, тогда и помогут
  • https://t.me/clickhouse_ru
    @Romkart #310363 10:24 AM, 06 Feb 2023
    @BloodJazMan не в курсе случайно зачем в операторе подефолту впилили do_not_merge_across_partitions_select_final ? ведь оно не ломает только если order by входит в партицию , в остальных случаях запросы начнут рабоотать неправильно
  • @lexa_work #310364 10:25 AM, 06 Feb 2023
    Коллеги, день добрый.
    Есть проблема с Zookeeper (версия 3.8.0). Ноды перестают отвечать на команды ruok и рестартуются кубером по кругу (минут через 9-10 работы).
    Из подозрительного - большой трафик на запись в диски Zookeeper (4-6 MB/s). Соответственно большие логи.
    В кластере Clickhouse 3 копии данных. Как я понимаю, такое можно ожидать при большом кол-ве небольших вставок данных.
    И до сегодняшнего дня было подозрение на проблему работы RabbitMQ Engine. Сегодня обновили CH, который пофиксил проблему с RabbitMQ и по логам вроде как прежняя проблема не наблюдается.
    Но проблем с Zookeeper продолжаются.
    Кто подскажет, как можно подсчитать количество выполняемых вставок во всем кластере CH, как их разбить по таблицам?
    Может есть какие-то метрики со стороны ZK?
    Под ZK выделен xmx4G. Размер базы данных ~45MB.
  • https://t.me/clickhouse_ru
    честно, я про это сам с утра узнал, думаю стоит создать issue на github operator
    ну и давайте @alexanderzaitsev
    спросим
  • https://t.me/clickhouse_ru
    liveness \ readiness probes через nc сделаны?

    есть бага в nc ;)
    https://github.com/pravega/zookeeper-operator/issues/475

    меняйте на обычный bash и readinessProbe вообще можно убрать
    https://github.com/Altinity/clickhouse-operator/blob/master/deploy/zookeeper/quick-start-persistent-volume/zookeeper-1-node-for-test-probes.yaml#L190-L205
    zookeeper ruok command check occasionally fails · Issue #475 · pravega/zookeeper-operator

    Description The zookeeper liveness and readiness checks use the zookeeper ruok command like so: OK=$(echo ruok | nc 127.0.0.1 $CLIENT_PORT) # Check to see if zookeeper service answers if [[ &qu...

  • https://t.me/clickhouse_ru
    Оно работает во всех разумных случаях.
  • https://t.me/clickhouse_ru
    так то да , я просто запереживал за тех кто вдруг удаляет дубли в разных партициях таким образом, вот они удивятся
  • да чере зних
  • Спасибо! Сейчас применим.
  • https://t.me/clickhouse_ru
    во всяком случае такое "нововведение" тянет как минимум на минорную версию
  • @serlex777 #310372 11:36 AM, 06 Feb 2023
    Подскажите плиз, как можно изменить запрос в мат представлении. Структура не меняется.
  • https://t.me/clickhouse_ru
    удалить мв и создать новое
  • https://t.me/clickhouse_ru
    @amdubovoy #310374 01:04 PM, 06 Feb 2023
    Всем привет! Падает загрузка clickhouse-client из CSV, причём всегда на отметке 2ч22мин:

    Code: 210. DB::NetException: Connection reset by peer, while writing to socket (0.0.0.0:9000): data for INSERT was parsed from stdin

    Поднимал receive_timeout, не помогло
  • @fdeh75 ↶ Reply to #310374 #310375 01:07 PM, 06 Feb 2023
    Какой командой загружаете?
  • https://t.me/clickhouse_ru
    Пайплю csv в insert, который выполняется clickhouse-client'ом на поде в кубере
  • @fdeh75 ↶ Reply to #310376 #310377 01:09 PM, 06 Feb 2023
    Я бы попилил на несколько частей чтобы каждаю грузилась по часу. Дело может быть в сети
  • https://t.me/clickhouse_ru
    Беда в том, что соседние поды с sql запросами не падают с такими же параметрами клиента, могут жить по 10+ часов для сложных запросов, не падая
  • https://t.me/clickhouse_ru
    Но там правда не инсерты, просто расчёты
  • @fdeh75 ↶ Reply to #310376 #310380 01:12 PM, 06 Feb 2023
    либо scv на хост/под/контейнер с кликом и уже CH клиентом на локалхост заинсертить
  • А в логах самого КХ есть какие то записи об этом?
  • https://t.me/clickhouse_ru
    Как раз уходим от этого варианта, раньше так и работало. Часть инсертов нормально работают, а один особенно жирный отлетает
  • @fdeh75 ↶ Reply to #310382 #310383 01:15 PM, 06 Feb 2023
    тогда только пачками вставка. Либо давайте логи клика. Также может (скорее всего) проблема в сети
  • https://t.me/clickhouse_ru
    Единственное интересное, что нашлось:

    <Error> TCPHandler: Code: 252. DB::Exception: Too many partitions for single INSERT block (more than 100).

    Это сложило инсерт?
  • https://t.me/clickhouse_ru
    А, вот ещё:

    <Error> TCPHandler: Code: 101. DB::Exception: Unexpected packet Data received from client. (UNEXPECTED_PACKET_FROM_CLIENT), Stack trace (when copying this message, always include the lines below):

    Но там дальше нет стектрейса 🤔
  • https://t.me/clickhouse_ru
    Похоже, что это таки могло. Там как раз чуть больше 100 партиций. Щас попробую слегка поднять значение для этой квери
  • Я думаю да. Я вот не помню, можно ли в логах посмотреть request_id что бы по нему найти запрос. Но если это он - то либо нужно крутить max_partitions_per_insert_block, либо бить на мелкие блоки для вставки
  • https://t.me/clickhouse_ru
    Там есть в логах запрос, это точно он, я его просто не стал постить
  • https://t.me/clickhouse_ru
    Ок, спасибо, ушёл пробовать)
  • https://t.me/clickhouse_ru
    странно что клиент не возвращает эту ошибку, а возвращает другую
  • https://t.me/clickhouse_ru
    Видимо поэтому потом UNEXPECTED_PACKET_FROM_CLIENT
  • @lainiwa6 #310392 01:36 PM, 06 Feb 2023
    Привет всем!
    Подскажите, есть ли возможность в clickhouse-operator для k8s создавать "пересекающиеся" кластеры?
    Например, всего 4 машины, и 3 кластера на них:
    * 2 шарда по 2 реплики (хост-0 + хост-1 на одном шарде; хост-2 + хост-3 на другом)
    * 1 шард и 2 реплики (хост-0 + хост-1)
    * 1 шард и 2 реплики (хост-2 + хост-3)
  • https://t.me/clickhouse_ru
    обращение к серверу как идет по какому имени? между подом клиента и подом сервера какой нибудь service mesh или ingress не стоит?
  • https://t.me/clickhouse_ru
    По IP, прокси если какие-то и есть, то какие-то дефолтные гугловые, специально мы ничего не поднимали
  • https://t.me/clickhouse_ru
    разные chi могут быть на одних и тех же нодах

    не обязательно все три кластера в один chi пихать

    ну и есть еще kubectl explain chi.spec.templates.podTemplates.distribution
    или podTemplates.spec
    смотрите kubectl explain pod.spec.affinity.podAntiAffinity
  • https://t.me/clickhouse_ru
    по IP? зачем по IP?
    IP пода clickhouse-server?
    зачем? он поменяться может...

    clickhouse в кубере как развернут?
  • https://t.me/clickhouse_ru
    Нет, в кубере клиент. Сервер EC2
  • https://t.me/clickhouse_ru
    У него не меняется IP
  • https://t.me/clickhouse_ru
    хм, а в логах сервера есть что-то по этому поводу?
    должно в system.query_log как то отразиться что query не завершилась
  • https://t.me/clickhouse_ru
    да это могло сложить клиент, но клиент тогда должен был показать это как ошибку
  • https://t.me/clickhouse_ru
    Те же ошибки, что в логах, да
  • https://t.me/clickhouse_ru
    ну ок
  • https://t.me/clickhouse_ru
    версия clickhouse-client и clickhouse-server одинаковые?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    а инсерт в distributed таблицу?
  • https://t.me/clickhouse_ru
    Нет, в локальную ReplacingMergeTree
  • https://t.me/clickhouse_ru
    @ilior ↶ Reply to #310357 #310407 02:41 PM, 06 Feb 2023
    Если кто-то наступит на те же грабли: проблема решилось настройкой rabbitmq_max_block_size = 1 в таблице-очереди. Иначе видимо все сообщения читались сплошным потоком без разделения и формат ломался
  • https://t.me/clickhouse_ru
    @392734528 #310408 02:43 PM, 06 Feb 2023
    По clickhouse-driver можно вопрос или офтоп?
  • https://t.me/clickhouse_ru
    Тут не сильно карают за офтоп и это даже не офтоп
  • https://t.me/clickhouse_ru
    @392734528 #310410 02:44 PM, 06 Feb 2023
    ок )
  • https://t.me/clickhouse_ru
    Может ищью воздадите об неожиданном поведение ?
  • https://t.me/clickhouse_ru
    можно, только конкретный вопрос задавай
    но самое лучшее место для этого
    https://github.com/mymarilyn/clickhouse-driver/issues
    Issues · mymarilyn/clickhouse-driver

    ClickHouse Python Driver with native interface support - Issues · mymarilyn/clickhouse-driver

  • https://t.me/clickhouse_ru
    @ilior ↶ Reply to #310411 #310413 02:45 PM, 06 Feb 2023
    да, сделаю завтра, подготовлю тест-кейс только
  • https://t.me/clickhouse_ru
    @392734528 #310414 02:47 PM, 06 Feb 2023
    Когда я создаю сессию
    session = Client(host=config.CH_HOST, port=config.CH_PORT, database=config.CH_DATABASE, user=config.CH_USER, password=config.CH_PASS)
    вне зависимости доступен клик или нет - вернется абстратный объект сессии.
    Естественно мне он такой нафиг не нужен и я сразу делаю
    session.execute('Select 1')
    чтобы поймать эксепшены.

    В случае недоступности возникают 2 эксепшена
    NetworkError, ConnectionRefusedError

    вот только беда в том что блок try except не может поймать ConnectionRefusedError
    потому что оно обрабатывается перед запуском запроса. (и если я правильно прочитал код то и насильно принтится в стдАут)
    И собственно вопрос как мне его нормально обработать чтобы трейс в логи не тянуть.
  • https://t.me/clickhouse_ru
    @392734528 #310415 02:48 PM, 06 Feb 2023
    возможно нужно как то иначе его ловить. Подскажите плиз.
  • Хотелось бы именно в одном поде иметь несколько кластеров.
    Чтобы аналитик мог подключиться к одному из подов, и иметь доступ из своей сессии ко всем этим кластерам.
  • https://t.me/clickhouse_ru
    а зачем вам именно такая странная конфигурация, зачем те два кластера не растянуты на все ноды?

    У вас будет сложности и без оператора.
    Если вы думаете что все будет видно с любой ноды, то это не так. Вам придется изворачиваться с дистрибьютид таблицами

    (но вообще в целом, это можно сделать в операторе, просто это все очень больно)
  • https://t.me/clickhouse_ru
    не будет такого
    кластер это раздельные инстансы clickhouse-server

    Один инстанс - один стейтфулсет

    можете через files
    кастомные кластера сами по именам сервисов определить если сильно хочется... но потом все равно руками придется поддерживать
  • У нас основное применение таких кластеров - для таблиц ENGINE = Kafka().
    Чтобы не писать в distributed таблицу, мы создаем таблицы вида:
    CREATE TABLE IF NOT EXISTS eth_raw_data.kafka_my_logs_shard_1
    ON CLUSTER 'prod_shard_1_cluster'
    ...
    ENGINE = Kafka()
    SETTINGS
    kafka_topic_list = 'my_logs_shard_1',
    kafka_group_name = 'my_logs_group_1',
    ...
    и читаем в них.

    То есть продюсеры пишут в разные топики для разных шардов.
  • https://t.me/clickhouse_ru
    @Alexeysaff #310420 03:08 PM, 06 Feb 2023
    поддерживает ли кафка енджин
    offset latest or earliest - ?
  • https://t.me/clickhouse_ru
    прямо в доке про kafka engine это описано
  • https://t.me/clickhouse_ru
    а не проще вручную создать таблицы один раз? не создавая кластеры?
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/engines/table-engines/integrations/kafka#configuration
    auto_offset_reset

    https://github.com/confluentinc/librdkafka/blob/master/CONFIGURATION.md
    значения тут
    в auto.offset.reset
    Kafka | ClickHouse Docs

    This engine works with Apache Kafka.

  • https://t.me/clickhouse_ru
    @Alexeysaff #310424 03:15 PM, 06 Feb 2023
    ах, супер, т.е. они используют librdkafka
  • Угу, наверно так и сделаем по итогу.
    Раньше был такой подход с множеством кластеров, но видимо при переезде на k8s откажемся от него.
  • как человек который делал на это ФР, могу сказать что разумных случаев в разы больше и фича уже 1.5 года как сделана там...
  • @apono #310427 03:21 PM, 06 Feb 2023
    Подскажите, как будет работать запрос в такой ситуации, пожалуйста. Есть distributed таблица (шарды без реплик), необходимо приджойнить в запросе другую таблицу, которую шардировать не получится (не имеет смысла) и надо хранить целиком на каждом шарде. Если просто положить ее локально на каждом шарде, то будет ли она использоваться на каждом шарде независимо при выполнении запроса с присоединенной distributed таблицой? Или все таки все выберется из distributed и далее обработается на ноде, на которой выполняется запрос? Если второе, то поможет ли создание кластера с 1 шард и полной репликацией на тех же нодах? Оптимизатор поймет, что можно эту таблицу использовать на каждой ноде независимо до отправки результата на инициатор? Спасибо.
  • https://t.me/clickhouse_ru
    спору нет что это разумно, имхо лучше бы на уровне самого CH это было бы сделано, чтобы он сам определил по схеме можно ли такую оптимизацию включать или нет , достаточно тривиальная проверка
  • ну не совсем, часто вы можете знать заранее что у вас нет дупликатов меж шардами (например вставка по регионам), но эт не значит что это поле у вас в order by
  • https://t.me/clickhouse_ru
    тоже верно , вот еще почитайте мой коммент
    https://github.com/ClickHouse/ClickHouse/issues/39463#issuecomment-1191641779

    имхо это самое разумное решение
    New merge tree setting to apply final by default · Issue #39463 · ClickHouse/ClickHouse

    Use case Migration from other databases and updates/deletes are mimicked by Collapsing/Replacing. Want to use the same SELECT queries without adding FINAL to all the existing queries. Describe the ...

  • https://t.me/clickhouse_ru
    В релиз-нотес есть. Всегда можно отключить, если не нужно. Но мы задолбались всем подряд включать )
  • https://t.me/clickhouse_ru
    Allow macro or other setting in `kafka_group_name` · Issue #45517 · ClickHouse/ClickHouse

    Use case In a traditional replicated cluster, macros can be used to set up the host name etc. But we can also do replication via kafka, as long as kafka_group_name is unique for each node. It would...

  • https://t.me/clickhouse_ru
    это в работе
  • прочитал, не понял, ещё раз прочитал и опять не понял.
    оно же и так уже в merge-tree settings, куда ещё вы хотите добавить?
  • https://t.me/clickhouse_ru
    раз ты здесь , скажи будут какито движения по теме https://t.me/clickhouse_ru/306694
    R-omk in ClickHouse не тормозит

    @BloodJazMan по оператору k8s: восстановление Replicated таблиц решили пока подзабить? issue 969

  • > Если просто положить ее локально на каждом шарде, то будет ли она использоваться на каждом шарде независимо при выполнении запроса с присоединенной distributed таблицой?
    Или все таки все выберется из distributed и далее обработается на ноде, на которой выполняется запрос? Если второе, то поможет ли создание кластера с 1 шард и полной репликацией на тех же нодах?

    не понял разницы, но будет локальная таблица на каждой ноде использоваться. Можно делать кластер (1 шард все реплики), можно руками везде создать и грузитью.
    если совсем лень, можно перед запуском запроса сделать темп таблицу на инициаторе и джоинить её, тогда КХ сам разошлет её по шардам.

    > Оптимизатор поймет, что можно эту таблицу использовать на каждой ноде независимо до отправки результата на инициатор?

    да. Но есть нюансы в многоуровневых запросах с вложенными subquery. Верхние уровни будут выполнятся на инициаторе.
  • https://t.me/clickhouse_ru
    так... я не понял, эту опцию что ли можно указать при создании таблицы? я походу провтыкал это из за того что в доке опция досих пор отсутствет
  • https://t.me/clickhouse_ru
    Оно уже работает в полу-автоматическом режиме в последних версиях оператора. Если вручную удалить pv/pvc и стриггерить reconcile, то новые pv/pvc создадутся, схема правильно создастся, и данные среплицируются.
  • да, при create table xxxx setting do_not_mergeblabla=0
  • @apono ↶ Reply to #310436 #310440 03:44 PM, 06 Feb 2023
    Спасибо, буду экспериментировать тогда.
  • https://t.me/clickhouse_ru
    не , нфига , я проверял на 0.20.1 , мету руками все равно пришлось переность (часть меты, таблицы , база вроде появилась )
  • а не ерунду говорю, это setting опция сейчас
  • https://t.me/clickhouse_ru
    вот , я ж о том ,
  • да, пробуйте
  • @dj_mixer #310445 03:45 PM, 06 Feb 2023
    да, надо на уровень таблицы добавить
  • @apono ↶ Reply to #310445 #310446 03:45 PM, 06 Feb 2023
    не понял, поясните плз
  • сейчас можно писать

    SELECT A,B,C FROM MYTABLE SETTINGS do_not_merge_across_partitions_select_final=0;

    надо добавить это в сеттинг таблицы...
  • @dj_mixer #310448 03:46 PM, 06 Feb 2023
    чтобы не писать в каждом запросе
  • @dj_mixer #310449 03:47 PM, 06 Feb 2023
    потому что это больше свойство таблицы нежели запроса
  • https://t.me/clickhouse_ru
    Странно, так как я недавно именно таким образом пересоздавал вольюмы с нуля, реплицируя данные с других реплик
  • https://t.me/clickhouse_ru
    не туда ответ походу
  • https://t.me/clickhouse_ru
    а база обычный атомик ? не экспериментальынй репликатед?
  • https://t.me/clickhouse_ru
    они собираются автоматически включать эту фичу выводя из partitionby/order и убрать настройку
  • аха
  • Подскажите пожалуйста, а как лучше автоматизировать создание/запуск ddl в таком случае?
    Положим у нас есть 10 шардов, и на каждом мы хотим создать такую таблицу.
    Понятно что можно написать скрипт на баше, но мб есть какие-то тулзы / лучшие практики для этого?
  • отлично! а если захотим форсить без ключа? куда жалобу писать чтобы настройку оставили?
  • https://t.me/clickhouse_ru
    Даже ordinary, думаю.
  • https://t.me/clickhouse_ru
    ну я попрошу в PR , такого PR еще нет
  • CREATE TBL xxx ON CLUSTER 'clustername' ?

    там можно же макросы использовать в сеттингах?
  • https://t.me/clickhouse_ru
    там скорее всего именно атомик нерабочий
    https://github.com/Altinity/clickhouse-operator/issues/969#issuecomment-1175190016
    Automatic recovery after complete data loss · Issue #969 · Altinity/clickhouse-operator

    The algorithm for manual recovery has already been described here https://kb.altinity.com/altinity-kb-setup-and-maintenance/recovery-after-complete-data-loss/ Expected behavior delete pvc and delet...

  • https://t.me/clickhouse_ru
    не знаю, не видел такого.
  • так не будет работать ? (не пробовал просто интересно)

    ```
    CREATE TABLE IF NOT EXISTS eth_raw_data.kafka_my_logs_shard_1
    ON CLUSTER 'prod_shard_1_cluster'
    ...
    ENGINE = Kafka()
    SETTINGS
    kafka_topic_list = {topicname},
    ...
    ```
  • https://t.me/clickhouse_ru
    clickhouse-operator/cluster.go at 426f5b3bd91d3b1ea22f29d7779feb058f0e582a · Altinity/clickhouse-operator

    The Altinity Operator for ClickHouse creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/cluster.go at 426f5b3bd91d3b1ea22f29d7779feb058f0e582a · Altinit...

  • https://t.me/clickhouse_ru
    Allow macro or other setting in `kafka_group_name` · Issue #45517 · ClickHouse/ClickHouse

    Use case In a traditional replicated cluster, macros can be used to set up the host name etc. But we can also do replication via kafka, as long as kafka_group_name is unique for each node. It would...

  • https://t.me/clickhouse_ru
    @yaturkeenzhenserheve #310465 04:04 PM, 06 Feb 2023
    Подскажите пожалуйста, при переносе данных из MySQL в clickhouse использовал clickhouse-mysql, который перенес таблицу и налил ее данными. Если я впоследствии использую migrate-table, то новые данные доливаются, но и старые тоже и множество дублей появляется.
    Я в курсе, что можно скриптом все время докачивать, но по ряду причин это не вариант. Возможно ли добавить отсутствующие данные другим путем?
  • https://t.me/clickhouse_ru
    @Alexeysaff #310466 04:23 PM, 06 Feb 2023
    а как можно kafka engine мониторить?
  • https://t.me/clickhouse_ru
    @Alexeysaff #310467 04:24 PM, 06 Feb 2023
    на живой/не живой
  • https://t.me/clickhouse_ru
    @Alexeysaff #310468 04:24 PM, 06 Feb 2023
    объем данных
  • @111010502 #310469 04:25 PM, 06 Feb 2023
    Через кафку же
  • https://t.me/clickhouse_ru
    @Alexeysaff #310470 04:25 PM, 06 Feb 2023
    ага
  • https://t.me/clickhouse_ru
    вот прям сейчас снес pvc, не фурычит

    clickhouse: Code: 253. DB::Exception: ....... already exists. (REPLICA_IS_ALREADY_EXIST) (version 22.11.1.1360 (official build))

    chop for SQL: CREATE TABLE IF NOT EXISTS qryn.tempo_traces_kv UUID 'af26de48-1a42-4af4-a0e4-6f69ac49c353' ........
  • https://t.me/clickhouse_ru
    PV надо снести
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #310473 04:55 PM, 06 Feb 2023
    Хотя, возможно, в атомиках что-то другое из-за UUID опять проявляется
  • https://t.me/clickhouse_ru
    ну эьто понятно, данные начисто залилсь ,pv новый создался
  • https://t.me/clickhouse_ru
    создалось все таблицы кроме ReplicatedReplacingMergeTree
  • https://t.me/clickhouse_ru
    вроде по ошибке понятно что это данные в ZK
  • https://t.me/clickhouse_ru
    В этом случае ATTACH делается. Кстати ошибка в логе будет, это не страшно. Но таблица должен потом все равно приаттачиться
  • https://t.me/clickhouse_ru
    в смысле schemer.go начал ATTACH TABLE делает сейчас?
  • https://t.me/clickhouse_ru
    Похоже, что вместо запятой после кода ошибки теперь точка. Надо поменять условие на более гибкое
  • https://t.me/clickhouse_ru
    в логах оператора не грепается строка Trying ATTACH TABLE instead
  • https://t.me/clickhouse_ru
    похоже что в этом дело
  • @timtsr #310482 05:09 PM, 06 Feb 2023
    Всем привет. Есть вопрос по производительности. У нас есть таблица вида

    CREATE TABLE IF NOT EXISTS table
    (
    date_key Date DEFAULT toDate(datetime),
    datetime DateTime,
    id String,
    sign Int8,
    version UInt32,
    field1 String,
    field2 Int64,
    field3 String,
    ....
    )
    ENGINE = VersionedCollapsingMergeTree(sign, version)
    PARTITION BY toYYYYMM(datetime)
    ORDER BY id
    SETTINGS index_granularity = 8192;

    Например в ней 50млн записей. И когда достаешь строку по id через

    SELECT .*
    FROM table AS t
    WHERE ((t.sign = 1)
    AND (t.version = 1)
    AND (t.id = 'some_id'))

    этот запрос работает долго - 0.9-1,5 сек. Можно ли его как-то ускорить?
  • https://t.me/clickhouse_ru
    если вместо * выбирать одно поле SELECT id сколько работает?

    explain estimate SELECT .*
    FROM table AS t
    WHERE ((t.sign = 1)
    AND (t.version = 1)
    AND (t.id = 'some_id'))
  • @timtsr #310484 05:18 PM, 06 Feb 2023
    Спасибо за подсказку. Замерю
  • https://t.me/clickhouse_ru
    А попробуй 0.20.3 ? У нас на это нет хорошего теста пока (так как фича незадокументирована)
  • @timtsr ↶ Reply to #310483 #310486 05:31 PM, 06 Feb 2023
    0.039 sec vs 1.076 sec.
  • @timtsr #310487 05:31 PM, 06 Feb 2023
    parts─┬───rows─┬─marks─┐
    │ 62 │ 417630 │ 62
  • @timtsr #310488 05:34 PM, 06 Feb 2023
    Ну то есть я понимаю, что в колоночной базе получить кортеж по ключу - сложная задача. Просто есть ли какой-то способ улучшить это дело? Сейчас получается для update чтобы вставить с sign -1 надо получить всю старую запись целиком
  • @timtsr ↶ Reply to #310487 #310489 05:43 PM, 06 Feb 2023
    конкретно в этом кейсе 60 982 843 записей
  • https://t.me/clickhouse_ru
    Интересно, что будет если условие Id в PREWHERE перенести

    Получение одной строки можно ускорить, уменьшив index granularity
    Пачки данных будут меньше, операций процессора под капотом будет больше. Но вытаскивание одной строки будет быстрее.

    Если id это случайная строка и искать нужно совершенно разные id, то в этом может быть смысл.
  • @timtsr ↶ Reply to #310490 #310491 06:00 PM, 06 Feb 2023
    а можно пример с prewhere?
  • https://t.me/clickhouse_ru
    уменьшение гранулярности раздувает размер памяти который используется чтобы primary key хранить, причем сильно
    оно не бесплатно
  • https://t.me/clickhouse_ru
    PREWHERE Clause | ClickHouse Docs

    Prewhere is an optimization to apply filtering more efficiently. It is enabled by default even if PREWHERE clause is not specified explicitly. It works by automatically moving part of WHERE condition to prewhere stage. The role of PREWHERE clause is only to control this optimization if you think that you know how to do it better than it happens by default.

  • @timtsr ↶ Reply to #310494 #310495 06:09 PM, 06 Feb 2023
    Неожиданно, но перенос в prewhere помог. Спасибо! А есть какие-то ограничения у этого подхода?
  • @timtsr #310496 06:10 PM, 06 Feb 2023
    хотя стоп
  • @timtsr #310497 06:10 PM, 06 Feb 2023
    выдает пустые данные
  • @timtsr #310498 06:10 PM, 06 Feb 2023
    сейчас посмотрю еще
  • @timtsr #310499 06:11 PM, 06 Feb 2023
    нет. Запрос отрабатывает нормально и данные идут
  • https://t.me/clickhouse_ru
    ну вы доку почитайте...
    что такое PREWHERE
    я ссылку привел
    я немного не в контексте конкретного подхода

    вот тут еще можно прочесть
    https://www.tinybird.co/clickhouse/knowledge-base/filter-with-prewhere
    Filter with PREWHERE | ClickHouse Knowledge Base

    Wondering when to use PREWHERE in ClickHouse? Here's how to optimize filtering with PREWHERE and minimize scan size in ClickHouse.

  • @timtsr #310501 06:12 PM, 06 Feb 2023
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    ну вообще суть в том что фильтрация по одной колонке, потом читаются только те парты в которых колонка отфильтрвалась...

    хорошо работает только на колонках которые имеют низкую кардиналити и значения не размазаны по всем партам
    или колонка с высокой кардинальностью, но небольшого размера
    когда вы через PREWHERE id=X точно один парт находите...
  • https://t.me/clickhouse_ru
    не слушайте бред, prewhere сделает медленее, потому что id это PK, т.е. prehwere вынудит проверять id два раза

    покажите
    explain estimate SELECT .*
    FROM table AS t
    WHERE ((t.sign = 1)
    AND (t.version = 1)
    AND (t.id = 'some_id'))
  • @timtsr ↶ Reply to #310487 #310504 06:31 PM, 06 Feb 2023
    вот
  • @timtsr #310505 06:32 PM, 06 Feb 2023
    вообще prewhere помог
  • https://t.me/clickhouse_ru
    из-за какой колонки? t.version ?
  • @timtsr #310507 06:33 PM, 06 Feb 2023
    PREWHERE (t.id=…) WHERE
  • https://t.me/clickhouse_ru
    @maefix ↶ Reply to #309950 #310508 06:33 PM, 06 Feb 2023
    Bump
  • https://t.me/clickhouse_ru
    проблема в parts = 62
    вы не знаете дату? PARTITION BY toYYYYMM(datetime) ?
  • @timtsr #310510 06:34 PM, 06 Feb 2023
    нет
  • @timtsr #310511 06:34 PM, 06 Feb 2023
    не знаю. Это запрос на обновление и соответственно есть только ключ
  • https://t.me/clickhouse_ru
    avgWeighted очень плохая и очень медленная, лучше не использовать,
    используйте sum(x * weight) / sum(weight)
  • https://t.me/clickhouse_ru
    @maefix ↶ Reply to #310512 #310513 06:35 PM, 06 Feb 2023
    О как, интересно. Спасибо, у нас местами используется, заменим
  • https://t.me/clickhouse_ru
    в смысле вы запрос делаете чтобы -1 вставить?
    вам не нужны все поля
  • @timtsr ↶ Reply to #310514 #310515 06:37 PM, 06 Feb 2023
    тогда промежуточная статистика биться не будет через sum(val*sign)
  • @timtsr #310516 06:37 PM, 06 Feb 2023
    просто prewhere в данном кейсе помог. На вид стало быстро
  • https://t.me/clickhouse_ru
    непонятно как может prewhere тут помочь

    либо очень много строк у которых t.version != 1
  • @timtsr #310518 06:40 PM, 06 Feb 2023
    да обновления на этой базе частые
  • https://t.me/clickhouse_ru
    @den_crane #310519 06:41 PM, 06 Feb 2023
    так вообще проще ReplacingMT использовать и не париться с sign и вставками лишних строк
  • 07 February 2023 (154 messages)
  • @Abrak98 #310520 05:12 AM, 07 Feb 2023
    Всем привет.

    Почему последний запрос возвращает пустую строку, а не 'name2' (под каждым запросом на скрине напечатал его вывод)?
  • https://t.me/clickhouse_ru
    Привет.
    select extract('name2 asdf','(name1|name2)')
    Регулярка неправильная
  • https://t.me/clickhouse_ru
    @Alexeysaff #310522 05:17 AM, 07 Feb 2023
    простите, это снова я со своим "динамическим TTL", а можно как-то посмотреть, сколько осталось жить конкретной записи?
  • Спасибо
  • https://t.me/clickhouse_ru
    Здравствуйте. Например в таблице system.query_log стоит такой TTL event_date + toIntervalDay(7)
    Тогда запросом можно проверить select event_date + toIntervalDay(7) <= now(),* from system.query_log limit 10
  • https://t.me/clickhouse_ru
    вроде работает
  • https://t.me/clickhouse_ru
    @im_vanich #310526 08:56 AM, 07 Feb 2023
    Добрый день!
    Запустил бд в яндекс облаке пытаюсь подключиться через clickhouse driver следующим образом, но получаю ошибку типа:

    NetworkError: Code: 210. nodename nor servname provided, or not known (****.mdb.yandexcloud.net:9000)
    порты пробовал разные и 8443 и 9000

    Сертификаты установил, через DBeaver подключение проходит
    В чем может быть ошибка?
  • https://t.me/clickhouse_ru
    @Alexeysaff #310527 08:58 AM, 07 Feb 2023
    а есть где-то release notes на minor updates
    чем например отличается
    22.12.2.25
    и 22.12.3.5 ?
  • https://t.me/clickhouse_ru
    https://cloud.yandex.com/ru-ru/docs/managed-clickhouse/operations/connect

    вот это читали?
    порт 9440 должен быть если по TCP Native конектитесь
  • @ivanio11 #310529 09:02 AM, 07 Feb 2023
    Добрый день
    Хочу посчитать стату по дню таким sql - запросом.
    select sum...
    from t
    where
    1 = 1
    and create_dttm between '2023-02-05 08:00:00' and toDateTime64('2023-02-06 08:00:00',6) - interval 1 microsecond
    Делаю такой запрос , выдаёт ошибку
    DB::Exception: Syntax error: failed at position 198 ('microsecond') (line 6, col 106): microsecond

    Я так понял в клике нет интервала 1 микросекунда , но поле create_dttm у меня datetime64(6)
    И если написать вот так and toDateTime64('2023-02-06 08:00:00',6) - interval 1 second , то потеряются данные , которые были с 59.000001
  • https://t.me/clickhouse_ru
    попробуйте в скобки взять
    ( toDateTime64('2023-02-06 08:00:00',6) - interval 1 microsecond )
  • может быть проще будет
    where toDate(create_dttm) = '2023-02-05'
  • Индекс ж не будет рабоать
  • А у вас есть какой то индекс там?
  • не взлетело
  • @mminaev #310535 09:04 AM, 07 Feb 2023
    Может есть ключ партиционирования и по нему поселектить
  • не ну в постгре к прмиеру так бы не работало.
    Ну в клике не индекс а парт
  • https://t.me/clickhouse_ru
    ошибка то какая?
  • @ivanio11 #310538 09:05 AM, 07 Feb 2023
    Code: 62. DB::Exception: Syntax error: failed at position 200 ('microsecond') (line 6, col 108): microsecond )
  • @ivanio11 #310539 09:05 AM, 07 Feb 2023
    Мне кажется в кликхаус просто нет интеварла 1 миркосекундаи всё
  • Ну в КХ все зависит от того как у вас таблица сделана
  • ну вот ответ (((
  • https://t.me/clickhouse_ru
    все должно работать
    https://fiddle.clickhouse.com/3a4b3b57-7f81-4aab-bc66-5fb34a62edaf

    смотрите полный запрос

    версия clickhouse-server какая?
  • @mminaev #310543 09:06 AM, 07 Feb 2023
    ну еще вариант
    where create_dttm >= '2023-02-05 00:00:00' and create_dttm < '2023-02-06 00:00:00
  • @mminaev #310544 09:07 AM, 07 Feb 2023
    и какого типа поле create_dttm?
  • DateTime64(6)
  • Хм , запрос в ide не запустился.
    Версия клика 22.3.3.44
  • https://t.me/clickhouse_ru
    в 22.3 microsecond нет

    правильный вариант для вас >= X AND < Y
    как вот тут посоветовали
    https://t.me/clickhouse_ru/310543
    Mike Minaev in ClickHouse не тормозит

    ну еще вариант where create_dttm >= '2023-02-05 00:00:00' and create_dttm < '2023-02-06 00:00:00

  • @ivanio11 #310548 09:10 AM, 07 Feb 2023
    Хорошо так и сделаю , спасибо большое
  • https://t.me/clickhouse_ru
    А нормальное решение вообще ожидается?

    Классическая ситуация - мне надо затащить на бэк сводную таблицу, где столбцами будет n дат из столбца (на этапе написания запроса - их кол-во и содержание не известно). Я такое в обычных БД могу сделать спокойно, почему у кликхауса с этим мастхэвом на 10+ый год жизни проблемы?
  • https://t.me/clickhouse_ru
    а расскажите как вы это делаете в обычных БД? в каких?
    какую конструкцию SQL используете ?
  • https://t.me/clickhouse_ru
    Таки тут мой косяк. Все решения через процедуры. Мне казалось, что можно обычным SQL.

    Ладно, рассуждать о том, что это можно было бы просто взять и сделать поставив в БД проверку на превышение итогового лимита с 1к-10к-100к столбцов и пр не буду. Хотя вообще можно было бы сделать, никто бы не обиделся от этого.

    Пойду костыли генерить значит и лишнее тащить в бэк, что уж...
  • https://t.me/clickhouse_ru
    welcome to make pull request

    насчет "генерации процедурами" что вы имеете ввиду? stored procedures ? или какой то код на стороне вашего приложения?

    если вы внимательно мое сообщение прочтете,
    то поймете, что кол-во столбцов довольно важная штука и при формировании ответа столбцы и их тип, задаются в заголовке, по протоколу. практически в любой БД
    и при стриминге ответа, если у вас кол-во столбцов зависит от данных, не прочитав все данные нельзя понять сколько у вас в итоге должно быть столбцов
    и соответственно, это придется делать в два прохода если будет на стороне СУБД все

    у clickhouse конечно есть HTTP форматы ответов типа TSV где столбцов вообще может не быть и типов тем более...
    но это просто вывод в "другом формате". кол-во колонок, как и в любой СУБД в ответе ему нужно знать заранее все равно
  • https://t.me/clickhouse_ru
    @amdubovoy #310553 09:57 AM, 07 Feb 2023
    Всем привет! Если запущен optimize final на всю таблицу, kill query … будет ждать завершения всего оптимайза, или где-нибудь между партициями может прибить кверю?
  • вы запустили не запрос, а мерджи)
  • https://t.me/clickhouse_ru
    Почему неизвестно? Столбцы не из воздуха берутся. Их кол-во определяется distinct-ом по столбу(ам) под pivot-ирование (те же даты, которые из строк разворачиваются в столбец, или дата + что-то). Вот и список столбцов (и их типов тут же). Тут в теории только 1 минус - если столбцов окажется очень много. Ну лимит можно поставить на стороне БД и его в настройку куда-нибудь (distinct показал, что будет 1 млрд столбцов - error). Усё.

    А по сути вместо БД этот вполне очевидный и часто востребованный алгоритм надо делать мне снаружи руками зачем-то.

    P.S.: [немного оффтоп] Да что-то я подустал, из 30 реквестов (по разным языкам и вопросам) на баги/доработки я видел телодвижения по 1 или 2ум.

    Запишу себе в бэклог сделать пуллреквест, в качестве развлекухи на вечер.
  • https://t.me/clickhouse_ru
    В processlist есть query_id, kill sync вроде тоже не падает) Подумал, что так можно отменить оптимайз. Возникла необходимость транкейтнуть таблицу
  • https://t.me/clickhouse_ru
    Да и optimize final вроде ж синхронный и последовательно выполняется
  • ну вы убили запрос?
    Он прекратился?
    А мерджи прекратились?
  • https://t.me/clickhouse_ru
    kill … sync просто повисает, в system.merges продолжается суета. Так что да, он не работает) Но я думал, что это пока он не домёрджит текущую партицию, вдруг там коллбеки есть для таких ситуаций
  • поищите и почитайте про stop merges
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310555 #310561 10:11 AM, 07 Feb 2023
    (есть select * except () вместо вашего -column. deleted)
    что касается pivot, то проблема в том, что компиляция запросов статическая, поэтому нет возможности обратиться к данным и под данные переписать запрос. Отказываться от статической компиляции ради редко нужной фичи?
    Если есть желание делать динамику - да, делайте сами. Запрос на данные, генерация SQL с колонками, второй запрос. Вобщем-то ничего сложного.
  • https://t.me/clickhouse_ru
    1) Да, я себя поправил еще до вашего сообщения по поводу except. У меня триггер с реляционок, думал что и тут тоже.
    2) Я пользователь, мне часто сводки нужно делать в БД, это не редкая фича.
    3) PIVOT - сам по себе не стандартный SQL мув, и не реляционный, но реляционки нехотя таки его все-равно затащили под наплывом жалоб от пользователей
    4) Вот именно, ничего сложного, можно было бы и не обременять пользователя делать то, что могла бы сама БД

    А философствовать про самостоятельность... ну , можно много чего еще делать самому. Брать например сырые данные из БД и всё на бэке самому фильтровать-группировать, ничего сложного ведь. Но что-то ведь не так в этой идее да?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310562 #310563 10:16 AM, 07 Feb 2023
    у меня везде PIVOT делается в BI tool. Там ему самое и место. В КХ делается предагрегация до разумного размера (десятки тысяч строк), а уже внутри BI идет вращение столбцами.
  • https://t.me/clickhouse_ru
    Ну вот а можно было бы оптимизированнее - 1 запросом 1 сводку сразу. Зачем пользователя страдать заставлять
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310564 #310565 10:19 AM, 07 Feb 2023
    Потому что приоритет в другом. Написано-же - "не тормозит" на милиардах и терабайтах. У многих страдания именно тут. Если ваши страдания в удобстве динамических манипуляций - питон с пандас к вашим услугам.
  • https://t.me/clickhouse_ru
    1) Это какие-то странные рассуждения. А зачем тогда вэб-клиент? А зачем except столбцов добавлен? А зачем то, а зачем се? БД она для кого пишется? Для пользователей, или для того, чтобы разрабы философией занимались про 2 прогона и "не тормозит"?

    2) Пандас - это очень убогий и неоптимизированный мусор с отвратительнейшим синтаксисом, я R пользуюсь (data.table/tibble). Питон в целом сам по себе - не для анализа данных.
  • У вас что то не сходится. Вы говорите что питон не для анализа данных - поэтому вы им не пользуетесь(не нравится - ок). Но когда вам говорят что КХ не про построение каких то табличек для отчетности - КХ плохой
  • https://t.me/clickhouse_ru
    КХ не плохой, я уже восхитился революционным рывком - не парили мозги философией, как это делают старые зомби типа Оракла, а взяли, и добавили EXCEPT. И еще COLUMNS с перечислением через регулярки.
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #310569 10:30 AM, 07 Feb 2023
    Зато есть куда расти
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #310570 10:33 AM, 07 Feb 2023
    И какая-то формулировка у вас очень странная - не для табличек для отчетности. А для чего лол? Он сперва для отчености делался под Яндекс Метрику.
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #310571 10:34 AM, 07 Feb 2023
    Тут надо не в оппозицию ко мне становиться следуя когнитивным искажениям, чтобы посаумотверждаться, а включить голову, осознать, что я сейчас однозначно прав, и дальше требовать с меня пулл-реквест, получить от меня ссылку, зайти и заплюсовать и писать: "да, давно пора, доколе" и т.п.
  • https://t.me/clickhouse_ru
    Нашлось более простое решение: drop table
  • https://t.me/clickhouse_ru
    хочется апдейтов в CH на самом деле....
  • https://t.me/clickhouse_ru
    Есть такое, с PIVOT-иком...
  • https://t.me/clickhouse_ru
    @tamikso #310578 11:03 AM, 07 Feb 2023
    Пивотов нет?
  • https://t.me/clickhouse_ru
    @enclaved #310579 12:17 PM, 07 Feb 2023
    господа, подскажите, существует ли в природе что-нибудь типа "clickhouse embedded" - ограниченная функциональность в форме библиотеки, которую можно было бы впаять в другой софт?
  • https://t.me/clickhouse_ru
    @1151007688 #310580 12:37 PM, 07 Feb 2023
    @den_crane и другие эксперты, читаю документацию про временные таблицы https://clickhouse.com/docs/ru/sql-reference/statements/create/table/#temporary-tables "В большинстве случаев, временные таблицы создаются не вручную, а при использовании внешних данных для запроса, или при распределённом (GLOBAL) IN. Подробнее см. соответствующие разделы". Объясните, пожалуйста, что значит внешних данных запроса и про распределенный (GLOBAL) IN. Завтра буду выступать перед начальством. Надо рассказать про пользу от использования временных таблиц :)
    CREATE TABLE | ClickHouse Docs

    create-table-query}

  • https://t.me/clickhouse_ru
    Гуглите (гуглом) clickhouse external data
  • https://t.me/clickhouse_ru
  • @7699150 #310583 12:40 PM, 07 Feb 2023
    Всем привет!
    А подскажите пожалуйста, можно ли как-то clickhouse-local использовать из кода Python или PHP?
    хочу делать запросы в .cvs файлах на S3
  • @lexa_work #310584 12:42 PM, 07 Feb 2023
    Коллеги, а в последнее время проблем вроде "зависания merge" операций не появлялось?
  • @lexa_work #310585 12:43 PM, 07 Feb 2023
    обновились вчера и вот сейчас уперлись в то, что все писатели получают ошибки слишком много партиций. А в таблице system.merges картина как-то не меняется. Есть ощущение, что все зависло.
  • https://t.me/clickhouse_ru
    @maksim_dc #310586 12:43 PM, 07 Feb 2023
    Всем привет, подскажите пожалуйста.
    Создал словарь через DDL источник данных mysql.
    Ошибся с типом данных ключа, я сделал UInt32, но оказалось что в таблице mysql колонка с ключом может быть с отрицательным значением, соответственно UInt32 надо изменить на Int32.
    Я удалил словарь, создал заново с ключом Int32. Словарь создался, но колонка ключа не изменила тип данных, она по прежнему UInt32
  • https://t.me/clickhouse_ru
    @Alexeysaff #310587 12:44 PM, 07 Feb 2023
    чисто теоретический вопрос, но поддерживает ли CH downgrade ?
  • https://t.me/clickhouse_ru
    @orantius #310588 12:45 PM, 07 Feb 2023
    иногда
  • https://t.me/clickhouse_ru
    clickhouse-local - это же обычная консольная программа. Значит её можно запускать стандартными средствами Python/PHP. Например в Python можно использовать subprocess.check_output()
  • https://t.me/clickhouse_ru
    словарь как создавали через SQL или через XML?
  • https://t.me/clickhouse_ru
    при global in данные с локальной ноды через врем. таблицу передаются в шарды если запрос к дистр.

    select * from t_distibuted where F in (select ... from other_local_or_distributed)
    каждый шард сам выполнит выделенное

    select * from t_distibuted where F global in (select ... from other_local_or_distributed)
    инициатор выполнит поздапрос, результат положит во временную таблицу и разошлет в шарды
  • https://t.me/clickhouse_ru
    через SQL
  • https://t.me/clickhouse_ru
    как удаляли словарь? какой командой?
  • https://t.me/clickhouse_ru
    drop dictionary
  • @volynshchikov #310596 01:04 PM, 07 Feb 2023
    Добрый день. Есть ли в clickhouse reduce() с аккумулятором предыдущего значения? Или какой-нибудь хак, чтобы итерируясь по массиву получить доступ к предыдущему вычисленному значению?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/44865

    до какой версии с какой?
    Background Merges stuck on different replicas from time to time, requiring restart to solve · Issue #44865 · ClickHouse/ClickHouse

    Describe the situation Since upgrading from 22.3 LTS to 22.12 Stable (via 22.8 LTS version) we have had two occasions where the background merges of a single replica suddenly stop and do not recove...

  • https://t.me/clickhouse_ru
    Большое спасибо за объяснение!
  • https://t.me/clickhouse_ru
    layout словаря у вас неправильный, primary key у обычных не complex_key всегда UInt64!!!
  • с 22.8.6.71 до 23.1.3.5
  • https://t.me/clickhouse_ru
    увеличивайте background_fetch_pool_size в два раза (надо настраивать в обоих местах обязательно)
  • https://t.me/clickhouse_ru
    Сори, лаяут HASHED, создается UInt64 а не как я написал UInt32.
    все понял, большое спасибо.
  • Пробуем
  • https://t.me/clickhouse_ru
    уже 10+ый год жизни? вот время летит.
  • а ничего, что в описании данного параметра сказано, что он устарел и не используется?
  • https://t.me/clickhouse_ru
    Судя по статье, в 2009 внутри яндекса уже эксплуатировался, в 2016 в опен сорс вылез

    https://ideanomics.ru/articles/25357#:~:text=ClickHouse%20%D0%B1%D1%8B%D0%BB%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20IT,%D0%B8%20%D1%81%D0%B0%D0%BC%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F%20%D0%B1%D0%B0%D0%B7%D0%B0%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85.
    ClickHouse – стартап родом из Яндекса – стал единорогом - Идеономика – Умные о главном

    Компания с российскими корнями ClickHouse формально была основана всего лишь два месяца назад, а уже привлекла второй раунд инвестиций размером в $250 млн, оценка проекта превысила $2 млрд.  ClickHouse был создан внутри IT-гиганта «Яндекс» в 2009 году как система управления базами данных, а затем и самостоятельная аналитическая база данных. Изначально использовался для целей аналитического сервиса […]

  • https://t.me/clickhouse_ru
    нельзя остановить мержи (точнее можно но не kill query)
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #310608 01:15 PM, 07 Feb 2023
    Летит и правда)
  • https://t.me/clickhouse_ru
    подозреваю что в 2009 году там не было SQL
  • Подскажите пожалуйста. Задача - "определение средней стоимости запасов (при наличии частичных продаж)". Все методы подсчета итеративные, никак не получается решить задачу функциями map/reduce кликхауса.
  • https://t.me/clickhouse_ru
    Держали контейнером в виде микросервиса думаете? Мб...
  • https://t.me/clickhouse_ru
    я про язык запросов
  • https://t.me/clickhouse_ru
    Ну я про то же самое. Если не было SQL, а БД уже была, то к ней как-то же обращались. Видимо json в контейнер-микросервис, запрос-ответ... наверное
  • https://t.me/clickhouse_ru
    window functions?

    вообще есть arrayMovingSum / Average , но они странные
  • https://t.me/clickhouse_ru
    @MakeReady #310616 02:17 PM, 07 Feb 2023
    Добрый день, не могу понять
    с первой оконкой все ок
    но добавляю вторую и по ней ошибка

    SELECT
    `2ws`.Date,
    toDayOfWeek(today()) AS dw,
    sum(`2ws`.sumW) OVER (ORDER BY Date ASC RANGE BETWEEN 6 + dw PRECEDING AND 7 PRECEDING) AS PreWeekSum,
    sum(`2ws`.sumW) OVER (ORDER BY Date ASC RANGE BETWEEN dw - 1 PRECEDING AND CURRENT ROW) AS ThisWeekSum
    FROM
    (
    SELECT
    Date,
    sum(Weight) AS sumW
    FROM vSalesSum
    WHERE Date >= toStartOfWeek(today() - toIntervalDay(7), 1)
    GROUP BY Date
    ) AS `2ws`

    Type mismatch in IN or VALUES section. Expected: Date. Got: Int64. (TYPE_MISMATCH
  • https://t.me/clickhouse_ru
    @MakeReady #310617 02:18 PM, 07 Feb 2023
    если dw - 1 заменить на константу, то все ок
  • ну у вас сравнения
    в первом варианте сравниваете RANGE BETWEEN 6 + dw PRECEDING AND 7 PRECEDING числа
    а во втором дату и отриц число
  • https://t.me/clickhouse_ru
    @MakeReady #310619 02:30 PM, 07 Feb 2023
    во втором тожже самое dw
  • https://t.me/clickhouse_ru
    @MakeReady #310620 02:31 PM, 07 Feb 2023
    BETWEEN 6 + dw PRECEDING
    и
    BETWEEN dw - 1 PRECEDING
  • https://t.me/clickhouse_ru
    @MakeReady #310621 02:31 PM, 07 Feb 2023
    у меня есть подозроеваемый, КХ подозревает что там может случиться отрицательное число
  • https://t.me/clickhouse_ru
    @MakeReady #310622 02:32 PM, 07 Feb 2023
    вот так съел
  • https://t.me/clickhouse_ru
    @MakeReady #310623 02:32 PM, 07 Feb 2023
    sum(2ws.sumW) over (ORDER BY Date RANGE BETWEEN abs(dw-1) PRECEDING AND 0 PRECEDING) as ThisWeekSum
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #309592 #310624 02:53 PM, 07 Feb 2023
    Приветствую. Вопрос актуален
  • https://t.me/clickhouse_ru
    @runiverse_hiker #310625 03:19 PM, 07 Feb 2023
    Добрый день.Подскажите пожалуйста - у меня есть таблица в 6 млрд записей - около 150 гб. Хочу создать replacing таблицу и указать order by contact_id. Как прописать partition по контактам чтобы схлопнулись все контакты? На данный момент использую подобную конструкцию - intDiv(cityHash64(contact_id),
    186330748219288416) в partition by но все же остаются дубликаты.
  • а вы уверены что дубликаты остались? Вы как проверяли? Делали optimize?
  • https://t.me/clickhouse_ru
    Да и optimize делал и проверял через select contact_id, count () from table
    group by contact_id;
  • А почему просто не оставить cityHash(contract_id)?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310629 03:26 PM, 07 Feb 2023
    Здравствуйте, а будет ли работать репликация с движком ReplicatedMergeTree в ситуации, когда кластер состоит из двух шардов у каждого из которых одна реплика? если создать вот так
    engine = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}', '{replica}')
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310631 03:28 PM, 07 Feb 2023
    макрос реплика = имя хоста на каждом шарде
  • https://t.me/clickhouse_ru
    Тогда при вставке данных ругается на количество партиций в одной вставке - более 100. В итоге у нас будет более 2 млрд партиций где-то - т.о. более 2 млрд файлов в памяти (если я правильно все понимаю)
  • https://t.me/clickhouse_ru
    select * from system.replicas показывает active_replicas = 2 для этой таблички и обе is_leader = 1. Это нормально?
  • посмотрите, действительно ли дубликаты находятся в одной партиции
    _part есть скрытое поле
  • Так это разные поля, за партиционирование отвечает секция partion by в CREATE TABLE а за схлопывание - order by
  • https://t.me/clickhouse_ru
    Вы имеете ввиду cityHash(contract_id) в partion by или order by?
  • @mminaev #310637 03:37 PM, 07 Feb 2023
    cityHash(contract_id) в order by
  • https://t.me/clickhouse_ru
    Тогда что в partion by поставить?
  • Ну я просто не знаю что у вас там за данные. Если вы хотите что бы у вас не было вообще дублей на уровне таблицы - то тогда можно partition by tuple(), но тогда мержи могут долго идти
  • https://t.me/clickhouse_ru
    Мержи с другими таблицами? У меня туда только словарь будет ходить. В любом случае спасибо попробую 👍
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310638 #310641 03:57 PM, 07 Feb 2023
    У вас там неплохой partition by expression, равномерно разбивающий пространство на 100 бакетов. Наверное не стоит его менять без лишней нужды. order by contract_id тоже не скажешь что очень ужасный, но его точно не стоит портить при помощи cityHash.
    Непонятно в чем ваша проблема. Поясните с примерами.
    Вы уже используете Replacing? with final or some group by? Что не получается?
    Если нет final и данные поступают непрерывно, то дубликаты обязательно будут.
  • https://t.me/clickhouse_ru
    У меня просто replacingmergetree partition by indiv() order by contact_id
  • https://t.me/clickhouse_ru
    Какую конструкцию final вы имеете ввиду?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310642 #310644 04:02 PM, 07 Feb 2023
    как вы обращаетесь к таблице? Должно быть select contact_id,col1 from table final. Если final нет - могут быть дубликаты
  • https://t.me/clickhouse_ru
    Обращаюсь обычно обычным селектор без final. Цель - чтобы в таблице не было дубликатов при обычном селекте
  • https://t.me/clickhouse_ru
    @runiverse_hiker #310646 04:04 PM, 07 Feb 2023
    Просто понимаю что без партицирования такой объем данных хранить нельзя
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310645 #310647 04:05 PM, 07 Feb 2023
    Причина найдена. Вам надо почитать что такое ReplacingMT и как с этим работать. Партиции тут не при чем. И работать без них можно.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310648 #310649 04:07 PM, 07 Feb 2023
    В документации про RMT сами найдете. А вот вам потом для усиления впечатления - https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/
  • https://t.me/clickhouse_ru
    уже два года как все реплики лидеры, если им не запрещено быть лидерами.
  • https://t.me/clickhouse_ru
    вам надо думать про distributed таблицу и ключ шардирования, а не про ...
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #310652 04:31 PM, 07 Feb 2023
    Коллеги, подскажите, пытаюсь сделать инсерт в SummingMergeTree: INSERT INTO db.table (timestamp, publisher) VALUES ('2023-01-02 00:00:00','1'). Запрос выполняется, но потом селектом этой записи не выдается, как будто вставки не было.
  • Сумма таки сработала?
  • https://t.me/clickhouse_ru
    точно, спасибо
  • https://t.me/clickhouse_ru
    @MotierreBelomore #310655 04:50 PM, 07 Feb 2023
    подскажите пожалуйста, изучаю репликацию в КХ, кластер из двух нод на базе clickhouse keeper собрал, данные реплицируются.

    но если отключить одну из нод то вторая переходит в режим только на чтение :(
    а хотелось бы конечно что бы кластер мог дальше работать в штатном режиме без второй ноды, это возможно?
  • https://t.me/clickhouse_ru
    строки с нулями в метриках не хранятся
  • https://t.me/clickhouse_ru
    >это возможно?
    нет

    надо 3 кипера, чтобы 1 мог быть выключен
  • https://t.me/clickhouse_ru
    @MotierreBelomore #310658 04:53 PM, 07 Feb 2023
    т.е. для создания отказоустойчивости необходимо иметь более 2х нод, что бы можно было провести голосование, так?
  • https://t.me/clickhouse_ru
    киперу нужно, да.
  • https://t.me/clickhouse_ru
    @MotierreBelomore #310660 04:56 PM, 07 Feb 2023
    понял, благодарю
  • https://t.me/clickhouse_ru
    @desyatkin #310661 05:00 PM, 07 Feb 2023
    вроде бы нужно кол-во нечетных нод, что бы кворум был
  • https://t.me/clickhouse_ru
    нет
  • Нужно, чтобы киперов было живо больше половины от сконфигурированного количества.
  • https://t.me/clickhouse_ru
    разве тогда не будет просто избыточно? 3 ноды переживут падение одной, 5 нод могут работать при двух упавших. какой смысл делать, например 4?
  • 4 - нет большого смысла, в каком-то смысле это даже хуже 3, т.к. и накладные расходы на репликацию выше и вероятность падения двух нод из 4 выше, чем 2 из 3.
  • https://t.me/clickhouse_ru
    когда вы проектируете кластер у вас в случае деградации должно оставаться нод > n/2.
    Т.е. для 4х нод можно потерять только 1 как и для 3х, соответственно в 4х нет смысла
  • https://t.me/clickhouse_ru
    @agpruss #310667 06:04 PM, 07 Feb 2023
    Кстати, а у кипера есть какие-то преимущества перед зукипером? Есть ли смысл на него переходить? Я по старинке зукипер использую
  • https://t.me/clickhouse_ru
    Эта статья уже устарела, описанные ишью были сделаны
  • https://t.me/clickhouse_ru
    Ну как бы да, учитывая то, что это сентябрь.
    А с учётом того, что уже февраль? Есть смысл переходить? Или лучше ещё подождать?
  • https://t.me/clickhouse_ru
    На этот вопрос может ответить только девстенд) я вот как раз только попросил коллегр развернуть с кхкипером и потестить нагрузку
  • https://t.me/clickhouse_ru
    Понял. Ладно, останусь пока на ЗК, а дев на кипер переведу.
  • https://t.me/clickhouse_ru
    непонятно как ментейнить, например как кипер перенести на другие железки не выключая (в смысле я например однажды зукипер перенес на другой континент и зукипер все время был доступен).
  • https://t.me/clickhouse_ru
    @ibnteo #310675 07:09 PM, 07 Feb 2023
    Если кому не хватает веб-консоли, как в ClickHouse, для других баз данных, сделал PDO Console на PHP: https://github.com/ibnteo/pdoconsole
    GitHub - ibnteo/pdoconsole: PDO Console

    PDO Console. Contribute to ibnteo/pdoconsole development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    так у ClickHouse встроенная балайка на порту 8123

    https://play.clickhouse.com/play?user=play#U0VMRUNUIGNvdW50KCkgRlJPTSBnaXRodWJfZXZlbnRzIFdIRVJFIGV2ZW50X3R5cGUgPSAnV2F0Y2hFdmVudCc=
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #310676 #310677 07:16 PM, 07 Feb 2023
    Я про неё и говорю, удобная штука, сделал для себя такую же, чтобы точно так же работать с другими базами.
    В просмотр таблицы добавил вывод столбцов одной строки в строчном виде (если нажать на номер строки).
  • https://t.me/clickhouse_ru
    ясно, я криво прочитал
  • https://t.me/clickhouse_ru
    @Vladoss22 #310679 09:14 PM, 07 Feb 2023
    🔥           🔥                🔥  
    Здравствуй мой друг ✋ Если ты еще не веришь, что деньги берутся с воздуха, то я тебе это докажу. Есть актуальная связка на 6-8% за круг в 20-30мин, думаю тебе будет интересно. Беру 20% от прокрута .
  • /report
  • 08 February 2023 (223 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #310682 01:15 AM, 08 Feb 2023
    А какой самый простой способ перекладывания данных из пг в постгресс? Переливать данные надо физически
  • https://t.me/clickhouse_ru
    из постгрес в кликхаус вы имеете ввиду?
  • https://t.me/clickhouse_ru
    @Alexeysaff #310684 01:29 AM, 08 Feb 2023
    Да
  • https://t.me/clickhouse_ru
    @Alexeysaff #310685 01:29 AM, 08 Feb 2023
    Сорри
  • https://t.me/clickhouse_ru
    я бы сделал copy .... to stdout | clickhouse-client ...
  • https://t.me/clickhouse_ru
    ну опять же от объема данных зависит, если в оперативку не влазят то по частям выгружаете в файлы и файлы потом через клиента переносите + есть же в КХ функции postgresql(conn_string,db,table,schema) можно при наличии прямого коннекта прямо из БД в БД вливать
  • https://t.me/clickhouse_ru
    @Alexeysaff #310688 01:31 AM, 08 Feb 2023
    Вариант, спасибо
  • https://t.me/clickhouse_ru
    @Alexeysaff #310689 01:32 AM, 08 Feb 2023
    Но чего-то более нативного нет?
  • https://t.me/clickhouse_ru
    Вот этот вариант более интересный
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Alexeysaff #310692 01:32 AM, 08 Feb 2023
    Спасибо
  • https://t.me/clickhouse_ru
    Первый батч большой. В пг порядка 4тб, но потом надо делать на daily basis
  • https://t.me/clickhouse_ru
    @Alexeysaff #310694 01:36 AM, 08 Feb 2023
    Спасибо, почитаю
  • https://t.me/clickhouse_ru
    Ест еще вот такое прямое взаимодействие между БД https://clickhouse.com/docs/ru/engines/database-engines/postgresql/
  • https://t.me/clickhouse_ru
    @Alexeysaff #310696 01:36 AM, 08 Feb 2023
    Но тут я так понимаю данные не перекладываются
  • https://t.me/clickhouse_ru
    я бы делал через внешний инструмент ETL чтобы не было сильной связанности между БД.
    ПГ -> ETL -> КХ
  • https://t.me/clickhouse_ru
    @Alexeysaff #310698 01:38 AM, 08 Feb 2023
    Это временное решение, пока девелоперы не напишут коннектор к ch
  • https://t.me/clickhouse_ru
    @Alexeysaff #310699 01:38 AM, 08 Feb 2023
    Так что то, что вы предложили по мне ок
  • https://t.me/clickhouse_ru
    @Alexeysaff #310700 01:38 AM, 08 Feb 2023
    Спасибо
  • https://t.me/clickhouse_ru
    пожалуйста
  • https://t.me/clickhouse_ru
    Как вариант debezium + наш clickhouse-sync-connector
  • @ShulcevVA #310703 03:06 AM, 08 Feb 2023
    Всем привет. Кто-нибудь подскажет куда копать? Я ради интереса удалил каталог /clickhouse в зукиппре, и ошибка не изменилась

    dwhtest :) select count() from my_fist_bd2.BusinessCard2;

    Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table my_fist_bd2.BusinessCard2 doesn't exist. (UNKNOWN_TABLE)

    CREATE TABLE my_fist_bd2.BusinessCard2
    (
    SysRowDate Date COMMENT 'Дата',
    BranchGuid FixedString(36) COMMENT 'Guid филиала',
    UserGuid FixedString(36) COMMENT 'Guid пользователя',
    UserName String COMMENT 'Пользователь',
    UserPosition String COMMENT 'Должность пользователя',
    CardType String COMMENT 'Тип визитки',
    CardCnt Int64 COMMENT 'Количество визиток'
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/my_fist_bd2/BusinessCard2', '{replica}')
    PARTITION BY toYYYYMM(SysRowDate)
    ORDER BY (SysRowDate, BranchGuid, UserGuid, CardType)
    SETTINGS index_granularity = 8192

    Query id: 30f08a97-c7df-414a-a20c-93397ff780a1

    0 rows in set. Elapsed: 0.009 sec.

    Received exception from server (version 22.8.5):
    Code: 253. DB::Exception: Received from localhost:9000. DB::Exception: Replica /clickhouse/tables/DWHtest/my_fist_bd2/BusinessCard2/replicas/10.0.16.16 already exists. (REPLICA_IS_ALREADY_EXIST)
  • https://t.me/clickhouse_ru
    не надо partition by по контрактам делать...

    для Replacing нужен просто ORDER BY contract_id
    потому что Replacing означает заменяем строки с одинаковым значением ORDER BY полей
  • https://t.me/clickhouse_ru
    а как удаляли? после этого должно было все в readonly связанное с ZK перейти...

    SELECT database, name, engine_full FROM system.tables WHERE engine_full ILIKE '%my_fist_bd2%' FORMAT Vertical
    сколько записей показывает?
  • @ShulcevVA #310707 03:52 AM, 08 Feb 2023
    Спасибо, но уже разобрался. Там глупая ошибка.
  • https://t.me/clickhouse_ru
    ну вы расскажите в чем она =) для истории
  • @ShulcevVA #310709 04:19 AM, 08 Feb 2023
    когда копипастил конфиг, забыл в настройках поменять макрос replica и на обоих серверах он был одинаковый. Я создавал таблицу на одном, потом пытался создать на другом, а таблица по такому пути только что создана)
  • @milovidov_an #310710 04:57 AM, 08 Feb 2023
    Опубликовано видео с конференции FOSDEM 2023: https://www.youtube.com/watch?v=JlcI2Vfz_uk
    FOSDEM 2023 - Building Analytical Apps With ClickHouse

    NOTE: The audio is distorted for the first 3:50...it cleans up immediately following. The slides are available at: https://presentations.clickhouse.com/fosdem2023/ Presented at FOSDEM 2023 in the 'Fast and Streaming Data' room, ClickHouse Founder & CTO, Alexey Milovidov, shared the journey of building analytical applications while also exploring your data. We will build a few analytical apps from scratch. This includes the full circle: data collection, processing, and visualization, and most of this is done by ClickHouse and a bunch of one-line shell scripts. The emphasis of this talk is to show how approachable and powerful modern data processing tools are.

  • None
  • https://t.me/clickhouse_ru
    @MakeReady #310712 05:50 AM, 08 Feb 2023
    добррый день!
  • https://t.me/clickhouse_ru
    @MakeReady #310713 05:52 AM, 08 Feb 2023
    как нибудь решается ситуация, что оконка не хочет брать в качестве границы окна то, что не является константой в столбце?

    SELECT
    `2ws`.Date,
    `2ws`.sumW,
    `2ws`.dw,
    sum(`2ws`.sumW) OVER (ORDER BY Date ASC RANGE BETWEEN 6 + `2ws`.dw PRECEDING AND 7 PRECEDING) AS PreWeekSum
    FROM
    (
    SELECT
    Date,
    toDayOfWeek(Date) AS dw,
    sum(Weight) AS sumW
    FROM vSalesSum
    WHERE Date >= toStartOfWeek(today() - toIntervalDay(7), 1)
    GROUP BY
    Date,
    dw
    ) AS `2ws`

    Exception: Missing columns: 'dw' while processing query: '6 + dw', required columns: 'dw' 'dw'. (UNKNOWN_IDENTIFIER)
  • https://t.me/clickhouse_ru
    если просто dw псоставить Тоже падает?
  • https://t.me/clickhouse_ru
    @MakeReady #310715 06:02 AM, 08 Feb 2023
    да
  • https://t.me/clickhouse_ru
    версия clickhouse какая?

    попробуйте поиграться с вашим CREATE TABLE + SELECT
    на разных версиях на
    https://fiddle.clickhouse.com
  • https://t.me/clickhouse_ru
    @MakeReady #310717 06:22 AM, 08 Feb 2023
    22.8.2 revision 54460.
  • https://t.me/clickhouse_ru
    если в последних версиях не работает
    то сделайте issue на github

    не должно так быть по идее
  • https://t.me/clickhouse_ru
    @MakeReady #310719 06:29 AM, 08 Feb 2023
    собственно вот
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/45535

    похоже надо ждать когда analyzer выкатят по дефолту

    https://github.com/ClickHouse/ClickHouse/pull/45461
    UNKNOWN_IDENTIFIER error on simple query with window function and expression in ORDER BY · Issue #45535 · ClickHouse/ClickHouse

    Hello, we found a bug after updating to latest Clickhouse version (22.12.3.5). Here is a minimal reprodicible example: SELECT *, count() OVER () AS c FROM numbers(10) ORDER BY toString(number) Code...

  • https://t.me/clickhouse_ru
    @MakeReady #310722 07:20 AM, 08 Feb 2023
    Понятно! Спасибо
  • @7699150 #310723 08:09 AM, 08 Feb 2023
    Всем привет!
    Обновили кх до версии 22.8.13 (перед этим была 22.7.5)
    И в кластере рандомно начинают падать ноды при запросах с такой ошибкой:
    2023.02.08 08:04:35.046067 [ 2646422 ] {} <Fatal> Application: Child process was terminated by signal 11.

    Кто-то сталкивался с таким?
  • https://t.me/clickhouse_ru
    там в логах, чуть выше, должен быть стектрейс где именно падает... покажите
  • нету (
    то есть просто эта строка и нода лежит
    у нас такое было месяца 3-4 назад, когда пытались обновиться до 22.8 тогда еще
    но в чате вроде сказали что это баг
  • https://t.me/clickhouse_ru
    есть, вы как клик запускаете? kubernetes ? или standalone сервера?
    /var/log/clickhouse/clickhouse-server.err.log
    тут смотрите...
  • да, в этом логе
    standalone сервера
  • кластер 4 сервера 2х2
    2 шарда, 2 реплики
  • https://t.me/clickhouse_ru
    ок. выше fatal
    или ниже

    но вообще signal 11
    это вроде OOM Killer
    памяти не хватает?
  • оперативки по 256Гб
    диски (ssd) на 70% заняты
  • https://t.me/clickhouse_ru
    signal 11 это segmentation fault

    в логе точно есть дальше стейтрейс... ищите
  • @7699150 #310733 08:18 AM, 08 Feb 2023
    перед этим есть warning, который я знаю и нам ок с ним
    после просто signal 11 и все
  • @7699150 #310734 08:18 AM, 08 Feb 2023
    и ch-server лежит
  • https://t.me/clickhouse_ru
    все, пятиминутка ненависти,
    вот скажи мне ... индивидум родившийся после 90го года, который не знает как выделить и скопировать текст

    как думаешь, твою картинку удобно читать?
    а выделить текст внутри нее удобно, чтобы тебе потом пальцем тыкнуть?

    давай шарь нормально
  • :)
    Сек )
  • https://t.me/clickhouse_ru
    почему названия файла нестандартные
    вы как то переопределяли конфигурацию логирования дефолтную?

    что при этом в
    tail -n 100 /var/log/clickhouse-server/clickhouse-server.log ?
  • 2023.02.08 08:26:36.604381 [ 2805149 ] {} <Fatal> Application: Child process was terminated by signal 11.
  • https://t.me/clickhouse_ru
    а теперь пошлют на paste-сервисы ж-)
  • для каких-то devops целей 2 файла есть. На могу сказать для каких
  • https://t.me/clickhouse_ru
    ну тогда старших позови. и git blame сделай если есть где чтобы понять зачем конфигурацию clickhouse меняли
  • суть одна
    лога перед signal 11 нет
    началось после апдейта с 22.7 на 22.8
    если с таким не сталкивался, ок, поищу еще где-то
    Спасибо
  • https://t.me/clickhouse_ru
    я как раз сталкивался
    потому и говорю так уверенно что перед сегфолтом signal 11 клик должен вывалить куда то стектрейс...

    погрепай логи по слову Fatal
  • @ivanio11 #310747 08:57 AM, 08 Feb 2023
    Всем привет , у меня задача хранить минимальный и максимальный dttm по транзакциям , и их каунт.
    Имеется вот такой примерчик
    https://fiddle.clickhouse.com/378c56d8-a6a5-4d81-8338-bf1d941dd0cc
    Логика поступления строчек будет плюс минус такая же.
    В какой то момент времени приходят данные по транзакциям ( с разным временем и разными ивентами) , каунт считается прелестно , а вот время я так понял агрегирует каким то странным образом
  • Я думаю тут нужен не SummingMergeTree а AgregatingMergeTree. Где у вас ключом будет id транзакции. И 3 агрегириющих поля minState, maxState и countState. https://gist.github.com/den-crane/6eff375752a236a456e1b3dc2ca7db62
    Clickhouse example AggregatingMergeTree, (max, min, avg ) State / Merge

    Clickhouse example AggregatingMergeTree, (max, min, avg ) State / Merge - gist:6eff375752a236a456e1b3dc2ca7db62

  • https://t.me/clickhouse_ru
    @krivtsov_artem #310749 09:43 AM, 08 Feb 2023
    всем привет, подскажите правильный синтаксис для значений по-умолчанию для массивов

    CREATE TABLE x (`a.b` Array(Int8) DEFAULT [-1]) ENGINE = MergeTree ORDER BY tuple();
    INSERT INTO x VALUES ([null]);
    SELECT a.b FROM x;

    хочу получать -1, а не 0
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310747 #310750 09:45 AM, 08 Feb 2023
    Да, нужен AgregatingMergeTree, но для min/maх/count лучше использовать SimpleAggregateFunction, и без State/Merge. Там весь стейт - это само значение.
    На самом деле можно даже оставить SummingMergeTree - оно стерпит.
    https://fiddle.clickhouse.com/906e3183-3202-494c-a78e-9bacff4fd5e9
  • https://t.me/clickhouse_ru
    вставляйте тогда null вместо [null]
  • https://t.me/clickhouse_ru
    спасибо 🙈
  • https://t.me/clickhouse_ru
    @artemkouk #310753 09:53 AM, 08 Feb 2023
    кто-то писал свою аналитику? возникла проблема со сбором данных со стороны js и ожиданием ответа
  • https://t.me/clickhouse_ru
    А вы прям напрямую в кх решили с клиентов писать?
  • https://t.me/clickhouse_ru
    вообще пока что в постгрес
  • https://t.me/clickhouse_ru
    @Sablast #310756 09:55 AM, 08 Feb 2023
    А причём тут тогда кх?)
  • https://t.me/clickhouse_ru
    а как лучше?
  • https://t.me/clickhouse_ru
    @artemkouk #310758 09:56 AM, 08 Feb 2023
    ну это вопрос обобщенный)
  • https://t.me/clickhouse_ru
    @artemkouk #310759 09:56 AM, 08 Feb 2023
    извиняюсь за офтоп
  • https://t.me/clickhouse_ru
    @Sablast #310760 09:59 AM, 08 Feb 2023
    Вопрос пока слабо понятен. как и решаемая задача. а как вы в пг собираете?
  • https://t.me/clickhouse_ru
    @vanyasvl #310761 10:00 AM, 08 Feb 2023
    А подскажите, как у таблички посмотреть реальный путь в zookeeper c уже подставленными макросамм? В show create table пишет шаблон без подстановки ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/flows', '{replica}')
  • https://t.me/clickhouse_ru
    собираем на клиенте через js, отправляем в пг запрос и получаем ответ от пг
  • ~ # tail -1000000 /var/log/clickhouse-server/server.log | grep Fatal
    2023.02.08 08:16:08.070527 [ 2799630 ] {} <Fatal> Application: Child process was terminated by signal 11.
    2023.02.08 08:26:36.604381 [ 2805149 ] {} <Fatal> Application: Child process was terminated by signal 11.
    2023.02.08 08:40:36.314473 [ 2810484 ] {} <Fatal> Application: Child process was terminated by signal 11.

    Пока откатились до 22.7.5.
    Во второй половине дня попробую еще
  • https://t.me/clickhouse_ru
    @artemkouk #310764 10:02 AM, 08 Feb 2023
    $site=Site::where('hash',$hash)->where('sites.domain', parse_url($request->headers->get('origin'),PHP_URL_HOST))->first();
    вот пример
  • https://t.me/clickhouse_ru
    а как можно иначе то?
  • https://t.me/clickhouse_ru
    По моему все решаемо...
    select top 10 *
    from system.query_log
    where toUnixTimestamp64Micro(event_time_microseconds) between
    toUnixTimestamp64Micro(toDateTime64('2023-02-07 12:19:36.241793', 6))
    and toUnixTimestamp64Micro(toDateTime64('2023-02-07 12:19:36.370533', 6)) + 1
  • Ну у этого есть куча проблем: главная из них неконтролируемая нагрузка, это если убрать за скобки проблемы с безопастностью, отказоусточиваюстью и тп
  • https://t.me/clickhouse_ru
    можно навести на мысль, чтобы можно было дальше пойти читать где-то в хабрах или интернетах
  • https://t.me/clickhouse_ru
    @artemkouk #310769 10:19 AM, 08 Feb 2023
    если не напрямую писать то как лучше
  • https://t.me/clickhouse_ru
    @artemkouk #310770 10:24 AM, 08 Feb 2023
    сейчас проблема следующая, мы собираем аналитику js-ом и каждую секунду отправляем с посетителя запрос, когда посетитлей >10 одновременно подключенных, то есть >10 запросов в секунду то время обработки этих запросов непрерывно растет
  • https://t.me/clickhouse_ru
    Nginx, logstash, kafka вариантов хватает
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310768 #310772 10:26 AM, 08 Feb 2023
    вот вам простое слово для гугления - KittenHouse Можно даже прямо тут в чате - недавно обсуждалось. Есть решения и посложнее, скажем Кафка, но тоже с отдельным сервисом перед. В любом случае какой-то сервис вам понадобится, и это уже тема для других чатов.
  • https://t.me/clickhouse_ru
    @artemkouk #310773 10:28 AM, 08 Feb 2023
    спасибо, пошел читать
  • /report
  • @Allenoff #310779 11:25 AM, 08 Feb 2023
    Добрый день! Может кто подсказать второй день изучаю кликхаус. Планирую поднять кластер из 3 шардов и по две реплики и на этих же нодах ставлю clickhouse-keeper. Это получилось судя по выхлопу команды
    SELECT * FROM system.clusters LIMIT 6 FORMAT Vertical; там все ноды расписаны и их роли (тут вроде все гуд). Баз данных еще не создавал.
    Но есть нюанс, далее я смотрю keeper.
    Вывод команды напрягает не стыковка:
    echo srvr | nc localhost 2181
    ClickHouse Keeper version: v23.1.3.5-stable-548b494bcce13462ab61af6a2cfa6b4ff7eb848a
    Latency min/avg/max: 0/0/0
    Received: 0
    Sent: 0
    Connections: 0
    Outstanding: 0
    Zxid: 0
    Mode: leader
    Node count: 3

    как и в echo mntr | nc localhost 2181
    zk_server_state follower ( в 5 нодах фоловер 1 лидер)
    zk_znode_count 3
    zk_watch_count 0

    Node count: 3 и zk_znode_count 3, а должно быть похоже что 6.
    Вопрос как добиться корректного отображения нод keeper? или уезжать сразу на zookeeper?
  • https://t.me/clickhouse_ru
    znode это данные это не сервера

    вы секцию <zookeeper> в конфигах clickhouse-server прописали ? как?

    что показывает SELECT * FROM system.zookeeper WHERE path='/' FORMAT Vertical ?
  • https://t.me/clickhouse_ru
    @1151007688 #310781 11:56 AM, 08 Feb 2023
    Привет. Подскажите, пожалуйста. Сколько приблизительно соединений держит нормально хост (около 96 ядер) на котором установлен только ClickHouse? Данные вставляются скриптом (используя JDBC драйвер) из других БД (не ClickHouse) которые расположены на других хостах (то есть на каждом таком хосте есть БД и скрипт и оттуда данные выбираются и вставляются в хост с ClickHouse).
  • https://t.me/clickhouse_ru
    соединений много 4096
    но одновременных QUERY
    по умолчанию 100

    сколько у вас строк в одном INSERT ?
  • https://t.me/clickhouse_ru
    @1151007688 #310783 12:00 PM, 08 Feb 2023
    Спасибо. По поводу строк не могу сказать (буду уточнять).
  • https://t.me/clickhouse_ru
    сразу скажу, лучше 1 вставка на 100 000 строк чем 10 вставок по 10 000
  • Received exception from server (version 23.1.3):
    Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table system.zookeeper doesn't exist. (UNKNOWN_TABLE)
    а в настройках я использовал только

    <clickhouse>
    <keeper_server>
    <raft_configuration>
    <remote_servers>
  • https://t.me/clickhouse_ru
    это конфигурация clickhouse-keeper
    чтобы они друг друга видели

    <zookeeper> надо чтобы clickhouse-server видел clickhouse-keeper и мог общаться с ним по ZK протоколу

    https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper
    Server Settings | ClickHouse Docs

    builtindictionariesreload_interval

  • https://t.me/clickhouse_ru
    @Man_from_Nocturne #310788 12:40 PM, 08 Feb 2023
    Народы привет! Подскажите есть ли готовые алерт рулы для прометея для встроенных метрик ? может кто то поделиться?
    https://clickhouse.com/docs/ru/operations/server-configuration-parameters/settings/#server_configuration_parameters-prometheus
  • https://t.me/clickhouse_ru
    @jenjate #310789 12:41 PM, 08 Feb 2023
    Помогите развернуть таблицу из long в wide. Допустим, есть выдача:

    неделя1 сегмент1 12423
    неделя1 сегмент2 23432
    неделя1 сегмент3 32432
    неделя2 сегмент1 23432
    неделя2 сегмент2 23432
    неделя2 сегмент3 56465
    неделя3 сегмент1 67657
    неделя3 сегмент2 67576
    неделя3 сегмент3 45654

    А надо сделать что-то типа:
    сегмент неделя1 неделя2 неделя3
    сегмент1
    сегмент2
    сегмент3

    Вроде есть вариант через groupArray, но это если ты знаешь точно количество столбцов (недель), а если недель непредсказумое количество? Ничего из нагугленного не помогло
  • https://t.me/clickhouse_ru
    ClickHouse | Grafana Labs

    ClickHouse internal exporter metrics

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310789 #310792 01:01 PM, 08 Feb 2023
    Вы бы тут поискали. Только вчера была жаркая дискуссия про pívot.
  • https://t.me/clickhouse_ru
    сейчас посмотрел, спасибо. в принципе, надежды мало на самостоятельное SQL-решение просто в силу естественных причин
  • https://t.me/clickhouse_ru
    @Krisantis #310794 01:29 PM, 08 Feb 2023
    Всем привет, помогите с кверёй, не понимаю почему не работает
    —-
    with
    map(
    '0', [0,2,4,6,8],
    '1', [1,3,5,7,9]) as is_even,
    t1 as (
    SELECT number as col1,
    toString(number%2) as key
    FROM numbers(10)
    ),
    t2 as (
    SELECT number as col1
    FROM numbers(10)
    )
    select col1,
    arrayFirst( (x) ->
    x in is_even[key],
    [col1]) as rr
    from t2
    left join t1
    using col1
    —-
    https://fiddle.clickhouse.com/646b214b-ac83-48c0-8e1d-99b25ddbadd0
  • https://t.me/clickhouse_ru
    проявляется в функциях перебора массива только. Т.е. если просто сджойнить и вывести значение value из мапы по ключу, то всё ок
  • https://t.me/clickhouse_ru
    вот, например
  • https://t.me/clickhouse_ru
    @f0mster #310797 01:42 PM, 08 Feb 2023
    Подскажите плз.
    Есть replicated таблица. Есть два сервера.
    И есть мат вьюшка на эту таблица.
    На сервере 1 произошла вставка в эту таблицу.
    Отработает ли матвьюшка на сервере 2, когда данные с сервера 1 реплицируются на сервер 2?
  • mv отрабатывает только на той таблице на той машине, на которой она создана
  • https://t.me/clickhouse_ru
    mv на эту таблицу есть на обоих серверах.
  • ну значит на обоих серверах и будет отрабатывать, у вас mv должно быть создано через TO
  • https://t.me/clickhouse_ru
    оооо, мерси
  • @was_av #310803 02:00 PM, 08 Feb 2023
    Добрый день

    Подскажите в чем может быть ошибка с параметрами или отсутвует поддержка параметризации такого запроса?

    Запрос:
    exchange tables {databaseName:Identifier}.{tableNameTmp:Identifier} and {databaseName:Identifier}.{tableName:Identifier};

    Ошибка
    Code: 62. DB::Exception: Syntax error: failed at position 17 ('{'): {databaseName:Identifier}.{tableNameTmp:Identifier} and {databaseName:Identifier}.{tableName:Identifier};. Expected identifier. (SYNTAX_ERROR)

    Версия клиента:
    ClickHouse client version 23.1.3.5 (official build).
  • https://t.me/clickhouse_ru
    @DikovAleksey #310804 02:05 PM, 08 Feb 2023
    Привет, столкнулись с такой проблемой - в доках не нашел похожего

    При переливке таблицы на 12млрд в такую же таблицу, но с добавлением пары новых полей - ловим раздувание партиций в десятки раз,
    partition by у нас привязан по модулю (partition-key%256). Подскажите с чем это может быть связано и как такое лечить?

    PS Обратил внимание, что вначале партиций было еще больше (какие-то десятки тысяч) спустя несколько дней - их осталось 2к.
  • @srdtolstyh #310805 02:05 PM, 08 Feb 2023
    Добрый день, хотим понять как spark.df(jdbs) сохранить в ch без предварительного создания ddl на его стороне. Кто-то пробовал сразу записать df, что бы создалась таблица в формате MergeTree. Сейчас наш код выглядит так df.write.format("jdbc").option("driver", "com.clickhouse.jdbc.ClickHouseDriver").option("url", "jdbc:clickhouse://00.00.0.000:8123").option("createTableOptions", "ENGINE=MergeTree").option("createTableOptions", "ORDER BY id").option("dbtable", "stage.table).mode("append").save()
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #310804 #310806 02:44 PM, 08 Feb 2023
    Честно говоря не очень понятно что там вы считаете и как называете. Вы точно не путаете парты и партиции? Вы точно учитываете только active?
    И если вы не меняете partition by/order by, то нет смысла копировать 12 ярдов строк, лучше сделать быстрый аттач партов в новую таблицу, и там уже делать манипуляции со столбцами - добавить, заполнить итп. А может вам и старой таблицы хватит.
  • @srdtolstyh #310808 03:28 PM, 08 Feb 2023
    Нашел такой способ df.write.format("jdbc").option("driver", "com.clickhouse.jdbc.ClickHouseDriver").option("url", "jdbc:clickhouse://00.00.0.00:8123").option("createTableOptions", "ENGINE = MergeTree() ORDER BY id").option("dbtable", "table").mode("append").save() надуюсь коллегам пригодиться)) но сейчас падает с ошибкой Cannot set null to non-nullable column и .option("createTableColumnTypes","data Nullable(DateTime)") не помогает(( p.s в джобу заходим с --packages com.github.housepower:clickhouse-spark-runtime-3.3_2.12:0.5.0,com.clickhouse:clickhouse-jdbc:0.4.0 и бесит конечно что нельзя указать ORDER BY 1
  • https://t.me/clickhouse_ru
    @Gena12M #310809 03:33 PM, 08 Feb 2023
    Всем привет
    Создаю табличку ReplicatedMergeTree а она не реплицируется
    Уже все перерыл не могу найти причину
    Вот конфиг

    </PROD>

    <PROD>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>node01</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>node02</host>
    <port>9000</port>
    </replica>
    </shard>
    </PROD>
  • https://t.me/clickhouse_ru
    а DDL таблички?
  • https://t.me/clickhouse_ru
    CREATE TABLE db.test_part_record on cluster PROD
    (
    version UInt8,

    timestamp DateTime64(3),
    ****
    ) ENGINE = ReplicatedMergeTree()
    ORDER BY timestamp;
  • https://t.me/clickhouse_ru
    Строки удалил по понятным причинам) но логика запроса ясна я думаю
  • https://t.me/clickhouse_ru
    так у вас не указана дорога к зукиперу, должно быть что-то типа
    engine = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}', '{replica}')
    select * from system.macros что возвращает?
  • https://t.me/clickhouse_ru
    Сейчас попробую
    но вроде пробовал уже
  • https://t.me/clickhouse_ru
    какие макросы у вас настроены ? select * from system.macros
  • https://t.me/clickhouse_ru
    @Gena12M #310816 03:37 PM, 08 Feb 2023
    SELECT *
    FROM system.macros

    Query id: 938903a6-db3c-4d56-b7d4-e5c2b5abd41a

    ┌─macro───┬─substitution─┐
    │ replica │ PROD │
    │ shard │ 01 │
    └─────────┴──────────────┘

    2 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @Gena12M #310817 03:37 PM, 08 Feb 2023
    ну ии на второй ноде
    02 соответственно
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310818 03:37 PM, 08 Feb 2023
    на второй ноде тоже replica PROD назыавется?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310820 03:38 PM, 08 Feb 2023
    ну вот поэтому и не работает, надо чтоб replica был разный
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310821 03:38 PM, 08 Feb 2023
    1 и 2 например
  • https://t.me/clickhouse_ru
    @Gena12M #310822 03:38 PM, 08 Feb 2023
    ок
    сейчас попробуй и вернусь
  • https://t.me/clickhouse_ru
    всё равно

    CREATE TABLE db.test_part__record ON CLUSTER PROD
    (
    ***
    )
    ENGINE = ReplicatedMergeTree('/data/clickhouse/lib/store/tables/{replica}/{shard}/log_test', '{replica}')
    ORDER BY timestamp
  • @marfanyan #310824 03:44 PM, 08 Feb 2023
    Добрый день,
    max(fact) FILTER (WHERE md.min_month_value=dt.month_value) OVER
    (PARTITION BY year ORDER BY year_month)

    данный код в одной версии отрабатывает клика в другой ругается на синтаксис , правильно ли понимаю что не поддерживается?
  • https://t.me/clickhouse_ru
    Данные только там где инсерт был
  • https://t.me/clickhouse_ru
    ReplicatedMergeTree('/data/clickhouse/lib/store/tables/{table}', '{replica}')
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310827 03:45 PM, 08 Feb 2023
    вот так напишите
  • https://t.me/clickhouse_ru
    а в чем разница?
  • https://t.me/clickhouse_ru
    @Gena12M #310829 03:45 PM, 08 Feb 2023
    а
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310830 03:46 PM, 08 Feb 2023
    базовый путь должен быть одинаковый для репликации
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #310831 03:46 PM, 08 Feb 2023
    а тут макрос {shard} который разный на двух нодвх
  • https://t.me/clickhouse_ru
    @Gena12M #310832 03:46 PM, 08 Feb 2023
    а {table}?
  • https://t.me/clickhouse_ru
    @Gena12M #310833 03:46 PM, 08 Feb 2023
    на него макроса же нет
  • https://t.me/clickhouse_ru
    Это базовый макрос КХ, его не надо вручную задавать. КХ сам поймет какое имя у таблицы.
  • https://t.me/clickhouse_ru
    также как и {database}
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/replication/ вот здесь если поискать по {table} все написано
  • https://t.me/clickhouse_ru
    @Gena12M #310837 03:48 PM, 08 Feb 2023
    всё равно не работает
  • https://t.me/clickhouse_ru
    @Gena12M #310838 03:49 PM, 08 Feb 2023
    что можно глянуть ?
  • https://t.me/clickhouse_ru
    @Gena12M #310839 03:51 PM, 08 Feb 2023
    я инсерчу черезе датагрип руками
    там где заинсертил - всё есть
    на другой ноде - нет
  • https://t.me/clickhouse_ru
    @Gena12M #310840 03:52 PM, 08 Feb 2023
    Он табличку создает и там и там
    с этим всё четко
    он данные не реплицирует - в этом косяк
  • Пути в кипере есть и одинаковые для обеих таблиц? Кроме имён реплик
  • https://t.me/clickhouse_ru
    Как это проверить?
  • https://t.me/clickhouse_ru
    Макросы replica точно должны отличаться ? типа PROD1 и PROD2
  • Дописал, да, разные
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.zookeeper
    WHERE path = '/data/clickhouse/lib/store/tables/'
    FORMAT Vertical^I

    SELECT *
    FROM system.zookeeper
    WHERE path = '/data/clickhouse/lib/store/tables/'
    FORMAT Vertical

    Query id: c8411286-1997-4d6f-b42e-1fa27a413430

    Row 1:
    ──────
    name: PROD2
    value:
    path: /data/clickhouse/lib/store/tables/

    Row 2:
    ──────
    name: PROD1
    value:
    path: /data/clickhouse/lib/store/tables/

    Row 3:
    ──────
    name: test_part_dialog_record3
    value:
    path: /data/clickhouse/lib/store/tables/

    3 rows in set. Elapsed: 0.007 sec.
  • https://t.me/clickhouse_ru
    @Gena12M #310847 03:56 PM, 08 Feb 2023
    SELECT *
    FROM system.zookeeper
    WHERE path = '/data/clickhouse/lib/store/tables/'
    FORMAT Vertical

    Query id: dde3a9c1-d087-4260-b1f1-0e75d570bfff

    Row 1:
    ──────
    name: PROD2
    value:
    path: /data/clickhouse/lib/store/tables/

    Row 2:
    ──────
    name: PROD1
    value:
    path: /data/clickhouse/lib/store/tables/

    Row 3:
    ──────
    name: test_part_dialog_record3
    value:
    path: /data/clickhouse/lib/store/tables/

    3 rows in set. Elapsed: 0.006 sec.

    Другая нода
  • https://t.me/clickhouse_ru
    @andreysenko #310848 03:57 PM, 08 Feb 2023
    здравствуйте!
    Если кликхаус допустимо остановить, можно ли перенести его данные на другой сервер, перенеся саму папку с данными?
  • https://t.me/clickhouse_ru
    @Gena12M #310849 03:57 PM, 08 Feb 2023
    но на ФС нет таких путей
    # ls -ld /data/clickhouse/lib/store/tables/
    ls: cannot access /data/clickhouse/lib/store/tables/: No such file or directory
  • https://t.me/clickhouse_ru
  • Ну вы странные пути указали
    А вообще реплики общаются через зукипер и interserver_http_host
    Remote servers не нужен для двух реплик
  • https://t.me/clickhouse_ru
    а в конфиге что писать в interserver_http_host
    ?
  • ip/ hostname
  • https://t.me/clickhouse_ru
    И какие пути указать
  • https://t.me/clickhouse_ru
    это я понял
    но какие
    на праймари указать хост секондари а на секондарои наоборот?
  • @zukt9 #310856 04:02 PM, 08 Feb 2023
    а кто-нибудь через odbc/jdbc подрубался из клика к sql server? Или как-либо еще?
  • https://t.me/clickhouse_ru
    то есть чтобы перенести базу logs и таблицу loads, можно:
    1. на новом сервере создать базу logs
    2. в /var/lib/clickhouse/data/logs/ на новом сервере перенести данные со старого
    3. сделать attach table logs.loads
    ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @andreysenko #310859 04:06 PM, 08 Feb 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    там возможно еще структуру таблицы придется указать
    ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...)
  • Нет, в каждом конфиге ip своего же сервера
  • Посмотрите в доке, я пока с телефона(
  • https://t.me/clickhouse_ru
    ок) спасибо) ща гляну)
  • https://t.me/clickhouse_ru
    @Anna_R_proc #310864 04:21 PM, 08 Feb 2023
    Всем привет!задача : необходимо сравнивать сумму оборота текущей и прошлой недели минута к минуте накопительный итогом. Метрика week2week. Т.е. в пн текущей недели надо сравнить оборот с пн прошлой недели , во вторник - оборот за пн+Вт текущей недели к пн+Вт прошлой недели и так до воскресенье вечер. Сравнение должно идти минута к минуте (ну или край час к часу) .
    Вопрос : реализуемо ли в СН посчитать сумму за период now() - дата начала недели и то де самое ,но минус интервал 1 неделя?
    Буду благодарна за любые идеи реализации w2w в СН
  • https://t.me/clickhouse_ru
    @VladSokolenko #310865 04:24 PM, 08 Feb 2023
    Ну я б в оконные ф-ции глянул.
    Думаю, 1440мин х 7 дней в 2 недели КХ в ОЗУ легко засунет.
    А там дальше сравнивать
  • https://t.me/clickhouse_ru
    Я про запрос, с ОЗУ норм все
  • https://t.me/clickhouse_ru
    А что конкретно вызывает сложность? Посмотрите функции toHour, toMinute, обрезаете и сравниваете по ним
  • https://t.me/clickhouse_ru
    @Sablast #310868 04:27 PM, 08 Feb 2023
    Оконки тут на мой взгляд перебор
  • https://t.me/clickhouse_ru
    насколько критично именно из базы готовый ответ получить?
    группировку до минуты легко получить из базы, те суммы - легко получить на любом бэке, которым вы данные получаете..
    если, конечно, у вас клиенты напрямую в кликхаус не ходят
  • https://t.me/clickhouse_ru
    Ну если на лету накопительная сумма по минутам нужна?
    Почему оконки лишние? Каждая минута = сумма предыдущих + текущая
  • https://t.me/clickhouse_ru
    По какой дате делать группировку ,если мне нужна сумма за период от сейчас минус начало недели
  • https://t.me/clickhouse_ru
    до минимальной единицы отображения.
    то есть вот так:
    00:01 10
    00:02 12
    00:03 18

    а дальше любым языком программирования проходите его последовательно, заменяя значение на сумму предыдущих.
  • https://t.me/clickhouse_ru
    @andreysenko #310873 04:34 PM, 08 Feb 2023
    select sum(amount), toStartOfMinute(date_time) as _dt
    from records
    group by _dt order by _dt asc
  • @mminaev #310874 04:34 PM, 08 Feb 2023
    Можно сделать примерно вот так

    SELECT formatDateTime(toStartOfHour(timestamp), '%T') as t, sumIf(value, timestamp between now() - INTERVAL 7 DAY and now()) as this_week, sumIf(value, timestamp between between now() - INTERVAL 14 DAY AND between now() - INTERVAL 7 DAY) as prev_week from table group by t
  • https://t.me/clickhouse_ru
    потому что это считается на лету из таблицы транзакций в 1 запрос без оконок, как выше уже написали
  • https://t.me/clickhouse_ru
    @Sablast #310876 04:38 PM, 08 Feb 2023
    только нужны еще округления до начала недели, как я полагаю
  • https://t.me/clickhouse_ru
    @Sablast #310877 04:39 PM, 08 Feb 2023
    типа такого:
    select sumIf(amount, toDate(created)>=toMonday(now()) AND toStartOfMinute(created)<toStartOfMinute(now())) this_week_sum,
    sumIf(amount, toDate(created)>=toMonday(now())-interval 1 week
    AND toStartOfMinute(created)<toStartOfMinute(now()) - interval 1 week
    ) prev_week_sum
    from table
    where toMonday(created)>=toMonday(now()) - interval 1 week;
  • https://t.me/clickhouse_ru
    @Anna_R_proc #310878 04:39 PM, 08 Feb 2023
    Спасибо всем!!!
  • https://t.me/clickhouse_ru
    @vr_frost #310879 04:42 PM, 08 Feb 2023
    Всем привет!
    Подскажите плиз, может кто сталкивался, в какую сторону копать. Куча GET_PART и минимум экзекуторов, причем такая картина только на одной ноде кластера

    SELECT
    merge_type,
    type,
    sum(num_tries) AS num_tries,
    sum(is_currently_executing) AS is_currently_executing,
    sum(is_detach) AS is_detach,
    count() AS cnt
    FROM system.replication_queue
    GROUP BY
    merge_type,
    type

    Query id: c606e003-ba01-4782-b7e9-bb53ab49d47c

    ┌─merge_type─┬─type────────┬─num_tries─┬─is_currently_executing─┬─is_detach─┬────cnt─┐
    │ Regular │ MERGE_PARTS │ 5 │ 2 │ 0 │ 14232 │
    │ │ GET_PART │ 1056 │ 4 │ 0 │ 839890 │
    │ TTLDelete │ MERGE_PARTS │ 0 │ 0 │ 0 │ 1 │
    └────────────┴─────────────┴───────────┴────────────────────────┴───────────┴────────┘

    Пробовал выкручивать background_fetches_pool_size - картина не меняется

    SELECT
    name,
    value
    FROM system.settings
    WHERE name LIKE 'background%'

    Query id: 45b1dd95-0405-4b05-9321-934e26f1a5ec

    ┌─name──────────────────────────────────────────┬─value─┐
    │ background_buffer_flush_schedule_pool_size │ 16 │
    │ background_pool_size │ 16 │
    │ background_merges_mutations_concurrency_ratio │ 2 │
    │ background_move_pool_size │ 8 │
    │ background_fetches_pool_size │ 32 │
    │ background_common_pool_size │ 8 │
    │ background_schedule_pool_size │ 128 │
    │ background_message_broker_schedule_pool_size │ 16 │
    │ background_distributed_schedule_pool_size │ 16 │
    └───────────────────────────────────────────────┴───────┘

    Началось после падения zk по нехватке памяти
  • А не смотрели в сами ошибки? Может там есть что то полезное?
  • @Ferdinant122 #310881 04:44 PM, 08 Feb 2023
    Всем привет, а у кого-то был опыт или может ткнёте а доку по полному восстановлению кластера если есть только бэкапы db которые были сделаны ON Cluster
  • https://t.me/clickhouse_ru
    Смотрел, там такое по большей части

    Not executing fetch of part 202302_230178_230178_0 because 8 fetches already executing, max 8.
  • @evgeniy_souz #310884 05:46 PM, 08 Feb 2023
    Всем привет! Может кто знает и подскажет почему в ch так странно отрабатывает (точнее сказать не отрабатывает😔) запрос с NOT IN. Пишу запрос след вида:
    “””select distinct app, day
    from TestStore
    where day = toDate('2022-12-06')
    and app in ('Test1', 'Test2')
    and (app, day) not in (
    select app, day
    from TestStore lds
    where day = toDate('2022-12-06')
    and app = 'Test1'
    )
    ;”””
    Он ничего не возвращает (хотя должен вернуть запись с app ’Test2’) пока к условию not in не добавлю “= 1” и тогда все ок… Может кто знает о проблеме или я че то не догнал))
  • https://t.me/clickhouse_ru
    Перерыл всё и попробовал все варианты
    вообще не пойму что не так с репликацией
    она тупа не работает
  • https://t.me/clickhouse_ru
    Оберните в подзапросе app, day в скобки (app, day)
  • в таком случае ошибка что не совпадает количество колонок слева и справа (Number of columns in section IN doesn't match. 2 at left, 1 at right.)
  • https://t.me/clickhouse_ru
    TestStore не distributed поверх шардов?
  • https://t.me/clickhouse_ru
    @assazano #310889 06:01 PM, 08 Feb 2023
    Всем привет!
    прикрутил лдап авторизацию к кликхаусу
    2 ноды полностью и идентичными конфигами

    В итоге через одну ноду клика по лдап могу зайти а через вторую нет(
  • https://t.me/clickhouse_ru
    @assazano #310890 06:02 PM, 08 Feb 2023
    суть следующая - получаю имя группы в которую входит юзер и создаю роль в клике с таким же именем и навешиваю на нее гранты
  • https://t.me/clickhouse_ru
    @assazano #310891 06:03 PM, 08 Feb 2023
    на однонодовом кластере работает без проблем
  • создайте две такие таблицы на каждом из серверов
    CREATE TABLE default.table_name
    (
    `id` UInt64,
    `app_id` UInt64
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table_name', '{replica}')
    ORDER BY (app_id)
    SETTINGS index_granularity = 8192;
  • https://t.me/clickhouse_ru
    Я кажется понял
    у меня на обоих нодах
    is_leader=1

    сейчас пытаюсь понять почему так
  • у вас две ноды зк?
  • https://t.me/clickhouse_ru
    3
  • нет, он engine = ReplacingMergeTree
  • вы про зк или про replicas? Если про replicas, то это норм
  • https://t.me/clickhouse_ru
    про репликас
  • выполните то что выше я написал
  • https://t.me/clickhouse_ru
    @Gena12M #310900 06:14 PM, 08 Feb 2023
    Получается вот что
    я создаю табличку с on cluster и оно создается везде
    потому я делаю инсерт в одной ноде и оно там есть а в другой нет

    использую ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    Сейчас
  • https://t.me/clickhouse_ru
    CREATE TABLE default.table_name ON CLUSTER PROD
    (
    `id` UInt64,
    `app_id` UInt64
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/{database}', '{replica}')
    ORDER BY app_id
    SETTINGS index_granularity = 8192

    Query id: eae3633c-76c8-4bff-8dd7-8243bbac44b7

    ┌─host──────────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
    │ ****** │ 9000 │ 0 │ │ 1 │ 0 │
    │ ****** │ 9000 │ 0 │ │ 0 │ 0 │
    └───────────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

    2 rows in set. Elapsed: 0.117 sec.

    SELECT * FROM default.table_name FORMAT Vertical;

    SELECT *
    FROM default.table_name
    FORMAT Vertical

    Query id: 85b5072a-0675-495a-b891-06e39d7421e6

    Row 1:
    ──────
    id: 0
    app_id: 12331213

    Row 2:
    ──────
    id: 0
    app_id: 1231231

    2 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @Gena12M #310903 06:18 PM, 08 Feb 2023
    Но на слейве нет этих записей
  • https://t.me/clickhouse_ru
    @Gena12M #310904 06:19 PM, 08 Feb 2023
    и еще вопрос - как поудалять пути зуукипера? а то они насоздавались ппц
  • удалите таблицы, они удалятся сами
  • https://t.me/clickhouse_ru
    Короче говоря магия какая то
    я делаю точно по документации - и вот не работает)
  • https://t.me/clickhouse_ru
    Путь кстати остаются почему то
  • Ну давайте начнем с ЗК
    echo mntr | nc localhost 2181
  • https://t.me/clickhouse_ru
    Я наверное сегодня всё) я уже 4 часа это ковыряю) надо отдохнуть))) спасибо вам огромное ))))
  • https://t.me/clickhouse_ru
    @assazano #310910 06:35 PM, 08 Feb 2023
    Был у кого-то опыт использования лдап аунтефикации в кликхаус ?

    Почему то на одной ноде работает ,а на другой нет .

    Конфиги нод идентичные (через Mcdiff ) смотрел
  • https://t.me/clickhouse_ru
    лол
  • https://t.me/clickhouse_ru
    @Gena12M #310912 06:36 PM, 08 Feb 2023
    Фиксики
  • https://t.me/clickhouse_ru
    @Gena12M #310913 06:36 PM, 08 Feb 2023
    само заработало
  • https://t.me/clickhouse_ru
    Короче дело было в создании таблички
    Видимо косячил с путями
  • https://t.me/clickhouse_ru
    ENGINE = ReplicatedMergeTree('/data/clickhouse/tables/{database}/{table}/', '{replica}')
    Вот так завелось
  • https://t.me/clickhouse_ru
    Коллеги ?
  • https://t.me/clickhouse_ru
    nope. Сам вот думаю сейчас как то прикручивать
  • 09 February 2023 (220 messages)
  • https://t.me/clickhouse_ru
    Прикрутить то прикрутил)
    Но почему-то это работает на одной ноде из двух только
  • https://t.me/clickhouse_ru
    Итить background_fetches_pool_size нужно не в профиле, а в основном конфиге задавать. Причем system.settings показывает значение, если задать в профиле, но по факту оно не работает.
  • https://t.me/clickhouse_ru
    @vr_frost #310920 05:46 AM, 09 Feb 2023
    Кто как понимает к какому разделу относится конфиг из доки? Оно там просто всё одним списком...
  • https://t.me/clickhouse_ru
    @stepan_matrenin #310921 07:22 AM, 09 Feb 2023
    Привет чат, а был у кого-то опыт скрещивания ansible и clickhouse в плане выполнения запросов? Есть некоторое количество DDL которые надо выполнять в определенной последовательности. Роли которые видел в galaxy - они больше про установку конфигурирование.
    есть два варианта:
    вызывать клиента на хосте
    дергать через url

    может я что-то упускаю?
  • https://t.me/clickhouse_ru
    @assazano #310922 07:22 AM, 09 Feb 2023
    я клиента вызывал и через -q команду посылал
  • https://t.me/clickhouse_ru
    @Valuamba #310923 07:36 AM, 09 Feb 2023
    Всем привет, какие есть удобные способы работать с кликхаусом, если он запущен на локальном сервере?

    Пробовал использовать tabix, не зашло, сыроватый дизайн, из консоли не удобно редактировать и писать запросы.
  • https://t.me/clickhouse_ru
    datagrip, но вообще есть
    https://clickhouse.com/docs/en/interfaces/third-party/gui
  • https://t.me/clickhouse_ru
    @critskiy #310925 07:41 AM, 09 Feb 2023
    CLI is OK, так как часть функционала, доступному CLI, интерфейсы могут не предоставить
  • @AlberX #310926 07:43 AM, 09 Feb 2023
    Добрый день.
    Коллеги, нужна помощь в аудите СУБД, решении текущих проблем, а также проектировании новой целевой архитектуры.
    Оплата либо за проект, либо почасовая.
    Если интересно, прошу писать в личку.

    Заранее прошу извинить за подобное сообщение в группе, если оно не соответствует политикам, но политики не нашел.
  • https://t.me/clickhouse_ru
    спасибо, гляну
  • День добрый. А как то можно получить более подробный лог? почему он не видет ноды keeper.
    Вот мой весь конфиг который я кидаю в config.d/(файл прикрепил) + дефолтный не тронутый config.xml
    С одной ноды до другой могу достучаться с помощью ccclickhouse-node-01:# echo srvr | nc сcclickhouse-node-06.domain.local 9181

    Или возможно есть какой-то гайд человеческий по clickhouse + clickhouse keeper чтобы я смог понять что я не так делаю.
  • https://t.me/clickhouse_ru
    а что еще более подробного вам нужно кроме фразы zookeeper.node.host not found
    и стектрейса где это произошло?
  • https://t.me/clickhouse_ru
    в расшаренном файле по прежнему не вижу секции <zookeeper> которая должна применяться для clickhouse-server
  • https://t.me/clickhouse_ru
    вы прочли ссылку которую я вам давал?
    https://t.me/clickhouse_ru/310787 ?
    Slach [altinity] in ClickHouse не тормозит

    это конфигурация clickhouse-keeper чтобы они друг друга видели <zookeeper> надо чтобы clickhouse-server видел clickhouse-keeper и мог общаться с ним по ZK протоколу https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper

  • @evgeniy_souz #310933 07:51 AM, 09 Feb 2023
    Всем привет! Может кто знает и подскажет почему в ch так странно отрабатывает (точнее сказать не отрабатывает😔) запрос с NOT IN. Пишу запрос след вида:
    “””select distinct app, day
    from TestStore
    where day = toDate('2022-12-06')
    and app in ('Test1', 'Test2')
    and (app, day) not in (
    select app, day
    from TestStore lds
    where day = toDate('2022-12-06')
    and app = 'Test1'
    )
    ;”””
    Он ничего не возвращает (хотя должен вернуть запись с app ’Test2’) пока к условию not in не добавлю “= 1” и тогда все ок… Может кто знает о проблеме или я че то не догнал))
  • как же нету?
    <zookeeper>
    <node>
    <hostname>ccclickhouse-node-01.domain.local</hostname>
    <port>9181</port>
    </node>
    <node>
    <hostname>ccclickhouse-node-02.domain.local</hostname>
    <port>9181</port>
    </node>
    <node>
    <hostname>ccclickhouse-node-03.domain.local</hostname>
    <port>9181</port>
    </node>
    <node>
    <hostname>ccclickhouse-node-04.domain.local</hostname>
    <port>9181</port>
    </node>
    <node>
    <hostname>ccclickhouse-node-05.domain.local</hostname>
    <port>9181</port>
    </node>
    <node>
    <hostname>ccclickhouse-node-06.domain.local</hostname>
    <port>9181</port>
    </node>
    </zookeeper>
    Вот же ?
  • https://t.me/clickhouse_ru
    <host>
    вместо
    <hostname>
  • https://t.me/clickhouse_ru
    @fimcho #310938 07:59 AM, 09 Feb 2023
    Всем привет! Подскажите по удалению данных из таблицы по условию6 пожалуйста!
    Есть запрос по мануалу:
    DELETE FROM db1.table1 WHERE length(phrase) < 3
    но возврaщается exception:
    DB::Exception: Syntax error: failed at position 1 ('DELETE')

    Может кто знает как то победить?
  • https://t.me/clickhouse_ru
    А где в мануале такой DELETE?
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310939 #310940 08:00 AM, 09 Feb 2023
    DELETE Statement | ClickHouse Docs

    DELETE FROM removes rows from table [db.]table that match expression expr. The deleted rows are marked as deleted immediately and will be automatically filtered out of all subsequent queries. Cleanup of data happens asynchronously in background. This feature is only available for MergeTree table engine family.

  • Попробуйте alter table X delete where …
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310941 #310942 08:05 AM, 09 Feb 2023
    alter table db1.table1 delete where length(phrase) < 3

    если это верно, то не работает(
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310942 #310943 08:06 AM, 09 Feb 2023
    хотя, процесс же в background'е происходит?
  • Это с 22.8 только есть
  • А что пишет?
    Это выглядит как правильный запрос
  • https://t.me/clickhouse_ru
    стоит почитать что такое мутации и что такое lightweight deletes
    https://clickhouse.com/docs/en/sql-reference/statements/alter/#mutations

    и чем они отличаются
    прежде чем бездумно использовать
    ALTER | ClickHouse Docs

    Most ALTER TABLE queries modify table settings or data:

  • https://t.me/clickhouse_ru
    known issues / limitations of lightweight deletes · Issue #39870 · ClickHouse/ClickHouse

    they will be delayed, then there are a lot of merges happening (=when there is a high inserts pressure, and the pool is busy) they 'touch' all the parts - so if the list of parts is...

  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310945 #310948 08:10 AM, 09 Feb 2023
    ошибок нет никаких, только что все готово. ну оно на самом деле вроде работает, кол-во уменьшается
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310946 #310949 08:11 AM, 09 Feb 2023
    ок, спасибо!
  • Потому что операция не синхронная. Ждите )
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #310950 #310951 08:11 AM, 09 Feb 2023
    понял, спасибо!
  • https://t.me/clickhouse_ru
    @marseq #310952 08:46 AM, 09 Feb 2023
    Добрый день! Подскажите как изменить конфиг, чтобы LDAP авторизация работала не через CN,а через sAMAccountName?
  • @ShulcevVA #310953 08:55 AM, 09 Feb 2023
    Добрый. На официальном сайте всё есть. Там в одном файле для лдап и ад примеры.
  • @ShulcevVA #310954 08:56 AM, 09 Feb 2023
    Если будут трудности, то ссылку могу где-то через час скинуть
  • @ShulcevVA #310955 08:59 AM, 09 Feb 2023
    Уточняю в лоб это не решается, но там есть специальные фильтры. По идее должно заменить
  • @ShulcevVA #310956 09:02 AM, 09 Feb 2023
    И не на каждой версии клика всё работает хорошо.
  • @ivanio11 #310957 09:30 AM, 09 Feb 2023
    Всем привет , есть ли какой то элегантный и быстрый способ
    Сделать из 10.1.0 10.1 , т.е. обрезать последнее .0
    У меня способ через 3 if , и concat
  • @mr_fitts #310958 09:31 AM, 09 Feb 2023
    Привет!
    Подскажите, пожалуйста, есть какие-нибудь хорошие видео/бесплатные курсы по кликхаусу?
  • там поиска позиции символа справа нет что ли? если есть, то искать справа точку и по это место делать подстроку. ну в начале иф, что точек ровно 2 в строке, если бывт строки другого вида, чтобы лишнего не отрезать.
  • https://t.me/clickhouse_ru
    LDAP | ClickHouse Docs

    LDAP server can be used to authenticate ClickHouse users. There are two different approaches for doing this:

  • Тут точно про ClickHouse?
  • No, Sorry
  • https://t.me/clickhouse_ru
    увы нет, position умеет только позицию слева
    остаются только регулярки IMHO
  • https://t.me/clickhouse_ru
    background_fetches_pool_size is capped by the profile setting · Issue #43351 · ClickHouse/ClickHouse

    It seems background_fetches_pool_size cannot be set as a server setting The only way is default profile + restart. (and these settings marked as obsolete) 22.8.8.3 I have a cluster with 2 replicas ...

  • https://t.me/clickhouse_ru
    В корне. Но задавать надо и там и там из-за бага
  • https://t.me/clickhouse_ru
    Скип индексы есть. Ну баг. Это в гитхаб.
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310961 #310969 09:52 AM, 09 Feb 2023
    Да я видела пример. По нему не работает
  • https://t.me/clickhouse_ru
    ошибки какие?
  • https://t.me/clickhouse_ru
    @marseq #310971 09:53 AM, 09 Feb 2023
    Пользователь не найден или некорректный пароль
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310971 #310972 09:56 AM, 09 Feb 2023
    В логе тоже только информация о том, что пользователь не найден
  • Версия клика свежая? На 21 версии у меня криво работает рекурсивный поиск пользователей.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310973 #310975 10:03 AM, 09 Feb 2023
    22.3 у нас
  • @ShulcevVA #310976 10:38 AM, 09 Feb 2023
    Подключаетесь к актив директори или лдап серверу?
  • @ShulcevVA #310977 10:39 AM, 09 Feb 2023
    И почему там такой хост сервера, имя ресолвится?
  • https://t.me/clickhouse_ru
    @list1marketing #310978 10:42 AM, 09 Feb 2023
    #ищу
    Менеджера по подбору персонала
    Кого придется искать
    - Менеджеров по рассылкам
    - Менеджер по продажам
    - Бизнес ассистентов
    Писать в лс
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310976 #310979 10:43 AM, 09 Feb 2023
    К серверу
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310977 #310981 10:43 AM, 09 Feb 2023
    На скрине хост изменен
  • @ShulcevVA #310982 10:52 AM, 09 Feb 2023
    <ldap_servers>
    <my_ad_server>
    <host>xxxxx.xxxx</host>
    <port>389</port>
    <bind_dn>XXXXX\{user_name}</bind_dn>
    <verification_cooldown>0</verification_cooldown>
    <user_dn_detection>
    <base_dn>OU=DNS Users,DC=xxxx,DC=xx</base_dn>
    <search_filter>(&amp;(objectClass=user)(sAMAccountName={user_name}))</search_filter>
    </user_dn_detection>
    <enable_tls>no</enable_tls>
    </my_ad_server>
    </ldap_servers>

    <user_directories>
    <ldap>
    <server>my_ad_server</server>
    <role_mapping>
    <base_dn>OU=adm-dwh-ch,OU=Clickhouse,OU=_System accounts and groups,OU=DNS Users,DC=xxxxx,DC=xx</base_dn>
    <attribute>CN</attribute>
    <scope>subtree</scope>
    <search_filter>(&amp;(objectClass=group)(member={user_dn}))</search_filter>
    <prefix>clickhouse_</prefix>
    </role_mapping>
    </ldap>
    </user_directories>
  • @ShulcevVA #310983 10:52 AM, 09 Feb 2023
    Cкидываю свой конфиг к АД, все прописано в conf.xml
    Еще могу добавить, что если пользователь не находиться, то или не правильно настроен блок ldap_servers или проблемы с рекурсией, c другим пока не сталкивался)
  • https://t.me/clickhouse_ru
    @marseq ↶ Reply to #310983 #310985 11:11 AM, 09 Feb 2023
    Спасибо
  • https://t.me/clickhouse_ru
    @runiverse_hiker #310986 11:21 AM, 09 Feb 2023
    Добрый день. Подскажите пожалуйста есть ли возможность в самом кх вызывать автоматический инсерт селект по времени? Например каждые 20 мин
  • https://t.me/clickhouse_ru
    Нет
  • https://t.me/clickhouse_ru
    @ZoMeR_LBF #310988 11:27 AM, 09 Feb 2023
    Добрый день.
    Подскажите, пожалуйста, флаг is_frozen в таблице system.parts снимается сразу при выполнении unfreeze или после очередного мержа кусков?
    Сделал freeze и unfreeze в system.parts вижу часть кусков с is_frozen=1 хотя в shadow/ пусто
  • https://t.me/clickhouse_ru
    Тоже недавно интересовался, is frozen не отражает реальность после unfreeze, но хардлинки на самом деле удаляются
  • https://t.me/clickhouse_ru
    Flag `is_frozen` of data part is not persistent. · Issue #42404 · ClickHouse/ClickHouse

    Describe the unexpected behaviour Flag is_frozen of data part disapears from system.parts table after restarting the server or detaching the table. How to reproduce CREATE TABLE test_frozen (id UIn...

  • @MaxCrimea #310991 12:30 PM, 09 Feb 2023
    добрый день!

    Помогите, пожалуйста, подсчитать, сколько кликхаусу надо места для завершения mutations.

    предыстория: начало заканчиваться место на диске.
    было решено удалить старые данные в жирной таблице. Alter c where отработал, но место не добавлялось.
    Было видно, что mutation не может пройти изза того, что не мог зарезервировать неполных 10 гиг места.

    место добавили, стало свободно около 30 гиг.
    дело сдвинулось, и споткнулось след. шагом, что не может зарезервировать 50 гиг.

    еще добавили, опять пошло дальше, кликхаус отдал еще места, и опять встал с ошибкой:

    SELECT latest_fail_reason FROM system.mutations WHERE is_done = 0\G
    Row 1:
    ──────
    latest_fail_reason: Code: 243, e.displayText() = DB::Exception: Cannot reserve 131.22 GiB, not enough space (version 21.5.6.6 (official build))

    места и инод дотаточно.
    С точки зрения os :
    Filesystem Size Used Avail Use% Mounted on
    data/db 1.8T 1.6T 205G 89% /var/lib/clickhouse

    Filesystem Inodes IUsed IFree IUse% Mounted on
    data/db 429845468 35164 429810304 1% /var/lib/clickhouse

    С точки зрения кликхауса:
    SELECT formatReadableSize(free_space)
    FROM system.disks

    ┌─formatReadableSize(free_space)─┐
    │ 204.94 GiB │
    └────────────────────────────────┘

    диск в кликхаусе только один.

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

    Спасибо
  • Мутация делает новый временный парт, далее его мутирует, когда парт полностью мутировал он присоединяется в к таблице , астарый удаляется.
    Если ваш alter delete трогает все парты, то считайте x2 от размера крупного размера парта
  • И зачем вы удаляли через alter delete старые данные, старые они стали по дате? Почему просто партиции полностью не удалить старые?
  • Привычка.
    надо переделать.

    Про остальное - понял, спасибо.

    пойду считать.
  • привычка?
    В КХ делать удаление на всю таблицу - хз как лечить.
    Посмотрите если занято место системными таблицами, типа query_log или еще что нибудь. Можно там сделать DROP PARTITION, и тогда мб появится место.
  • @MaxCrimea #310996 12:46 PM, 09 Feb 2023
    оттуда уже брал в прошлый раз, там нет.

    буду искать вариант, как добавить свободное место.
  • @2070273164 #310997 12:48 PM, 09 Feb 2023
    По партициям удаление старых данных возможно только если партицирование по периодам времени есть. Далеко не во всех применениях это так. Зато для них есть TTL.
  • вот прям наш случай :)
  • https://t.me/clickhouse_ru
    2* размер самого большого парта
  • https://t.me/clickhouse_ru
    нет , обычно надо x2 от масимального размера парта в таблице...
  • https://t.me/clickhouse_ru
    kill mutation

    drop partition
  • https://t.me/clickhouse_ru
    @den_crane #311002 12:53 PM, 09 Feb 2023
    про 2* не совсем правда, 2* это мержей, для мутаций то ли * 1.2 то ли *1.1, но меняли туда сюда, проще думать что 2
  • +, что-то напутал пока писал
  • https://t.me/clickhouse_ru
    @5151274688 #311004 01:03 PM, 09 Feb 2023
    Всем привет, подскажите пожалуйста, правильно ли я понимаю, что после инсерта в MergeTree требуется некоторое время, чтобы свежие данные стали доступны в селекте?
  • https://t.me/clickhouse_ru
    @Andrew_konstaninov #311005 01:05 PM, 09 Feb 2023
    всем привет! кто-нибудь сталкивался с репликацией данных между двумя разными кластерами кликхауса?
  • https://t.me/clickhouse_ru
    неправильно. Они доступны сразу, одновременно возвращается управление инсерту и данные становятся доступны селектам, даже хуже, если инсерт создает несколько блоков, то селекты увидят уже созданные блоки раньше чем закончится инсерт
  • https://t.me/clickhouse_ru
    Не сразу они доступны только в случае использования Buffer таблиц или async_insert?
  • https://t.me/clickhouse_ru
    нету такого понятия как кластер в КХ.

    Можно любую ноду КХ покдлючить в нескольким зукиперам и насоздавать репликейтид таблиц которые будут реплицировать данные с любых других нод КХ.
  • https://t.me/clickhouse_ru
    а может проще через кафку ?
  • https://t.me/clickhouse_ru
    buffer да

    а async_insert по умолчанию синхронный, и управление возвращается только по завершению, но это можно выключить
  • https://t.me/clickhouse_ru
    а можно вообще выкинуть КХ и взять другую базу.
  • https://t.me/clickhouse_ru
    А где та грань, между когда эффективно использовать buffer/async_insert и не использовать?
  • https://t.me/clickhouse_ru
    ))) ну если кластеры находятся в разных сетевых контурах-как еще=)
  • https://t.me/clickhouse_ru
    огласите все меню
  • https://t.me/clickhouse_ru
    есть 2 кластера в разных сетях.Надо сделать так ,чтобы таблица и в том и другом одинаково реплицировалась и заполнялась
  • https://t.me/clickhouse_ru
    не знаю, я долго пробовал async_insert , и так и сяк, вообще не понимаю зачем он нужен и кто его потребитель.
  • https://t.me/clickhouse_ru
    я не вижу проблем, например, только я так понимаю, у вас беспокойство вызывает сетка и последующие replica lag?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    на флешке бекапы носите
  • https://t.me/clickhouse_ru
    Ставьте алерты, мониторинг, повышайте observability, ну и бэкапы носите, угу.
  • https://t.me/clickhouse_ru
    @Andrew_konstaninov #311021 01:23 PM, 09 Feb 2023
    угу понял-спасибо!
  • https://t.me/clickhouse_ru
    Я просто почитал рекомендации, говорят юзайте батчи для инсертов в MergeTree, и не юзайте одиночные вставки, мне казалось что «батчи» это когда используешь буфферную таблицу, а мне очень важно, чтобы все данные, которые я загружаю в таблицу, были доступны максимально быстро, а не через какое-то время на их обработку
  • https://t.me/clickhouse_ru
    батчи -- это вставка пореже чем 100 раз в секунду, если у вас одна строка в минуту, у вас соотвественно батчи размером одна строка
  • https://t.me/clickhouse_ru
    @5151274688 #311024 01:27 PM, 09 Feb 2023
    У меня вставка примерно раз в 3-4 секунды с примерно 1-100 значений (строк)
  • https://t.me/clickhouse_ru
    @den_crane #311025 01:27 PM, 09 Feb 2023
    переупрощенное объяснение - желательно один инсерт в секунду на один сервер КХ
  • https://t.me/clickhouse_ru
    ну и вставляйте раз 3 секунды, хоть по одной строке
  • https://t.me/clickhouse_ru
    @5151274688 #311027 01:28 PM, 09 Feb 2023
    Ок, спасибо большое
  • https://t.me/clickhouse_ru
    @den_crane #311028 01:29 PM, 09 Feb 2023
    async_insert если что собирает инсерты в течении 200мс.
  • https://t.me/clickhouse_ru
    @5151274688 #311029 01:29 PM, 09 Feb 2023
    А при каких условиях вообще имеет смысл начинать смотреть в сторону Buffer?
  • https://t.me/clickhouse_ru
    ну когда у вас 1000 источников будут лупить раз 3 секунды.
  • https://t.me/clickhouse_ru
    @den_crane #311031 01:30 PM, 09 Feb 2023
    у всех по разному, бывают таблицы из 4 полей, а бывают из 4000 полей, это абсолютно разные нагрузки,

    нельзя это померить в строках, и все меняют Replicated таблицы, потому что зукипер становится узким местом
  • https://t.me/clickhouse_ru
    @5151274688 #311032 01:34 PM, 09 Feb 2023
    Спасибо!
  • @alkorgun #311033 02:26 PM, 09 Feb 2023
    Привет. Есть ли какие-то планы по интеграции кликхауса в teleport?
  • Пора увеличивать?
    java.io.IOException: Len error. A message from /xxxxxx:51726 with advertised length of 1224736768 is either a malformed message or too large to process (length is greater than jute.maxbuffer=1048575)
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #311034 #311035 02:31 PM, 09 Feb 2023
    Ну если вас IO Exception не пугает ни сколько то не надо)
  • у нас ЗК сложился
  • @dj_mixer #311037 02:32 PM, 09 Feb 2023
    и все ушло в ридонли
  • нет ничего постоянного, чем откладыванием на потом)
  • вот только у меня размеры в ГИГАБАЙТ а в КХ макс 256МБ не?
    with advertised length of 1195725856 is either a malformed message or too large to process (length is greater than jute.maxbuffer=1048575)
  • это разные деплойменты
  • https://t.me/clickhouse_ru
    да сразу умнож на 5
  • https://t.me/clickhouse_ru
    это в байтах
    1048575 - 1 МБ ? не ?
  • https://t.me/clickhouse_ru
    @den_crane #311043 02:46 PM, 09 Feb 2023
    хотя 1 224 736 768, это странное число, как-то не верится что можно сделать столько партов с такими именами
  • в коде вроде не менялось, 1<<28
  • таблиц много, партов на таблицу не очень
  • @dj_mixer #311046 02:53 PM, 09 Feb 2023
    в ЗК выставим в 256МБ и будем посмотреть
  • есть вариант что КХ думает что это не ЗК а КхК и что то свое шлет? версия 22.6
  • https://t.me/clickhouse_ru
    но для каждой таблицы свои транзакции в зк, сколько всего партов не имеет значения.

    эта ошибка обычно при выполнении мутации, когда КХ пытается в ЗК создать запись про мутацию и перечислить все парты, получается что если парт называется В5645BFDS657H356456_5544545_666788_211111 и их 10000 то все имена через запяютую больше мегабайта
  • это старая ошибка, умирать начало с этого
    fsync-ing the write ahead log in SyncThread:2 took 1089ms which will adversely effect operation latency. File size is 134217744 bytes. See the ZooKeeper troubleshooting guide
  • https://t.me/clickhouse_ru
    и что ЗК говорит про свое состояние сейчас? все 3 лежат?
  • не, они полностью не лежали походу, по ходу диск тупит и все.
    Exception when following the leader ошибки
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311054 03:07 PM, 09 Feb 2023
    кто-нибудь знает у сервера есть какая-то настройка, что он интерактивный пароль только принимает с —ask-password от clickhouse-client? -Если указать —password или переменную окружения CLICKHOUSE_PASSWORD, аутентификация не проходит
  • https://t.me/clickhouse_ru
    познакомиться с фичами кликхауса, чтобы забыть про медленные OLTP-DB?
  • https://t.me/clickhouse_ru
    @php_dev4_hr54 #311056 03:08 PM, 09 Feb 2023
    понимаю
  • https://t.me/clickhouse_ru
    ну отключить zookeeper.forceSync временно
    (я так делал когда диск вылетел из рейда)
  • zookeeper.forceSync - это поможет уменьшить ИО? там проблема в дисках все подряд пишут итд.
    какие риски?
  • https://t.me/clickhouse_ru
    да никаких, риск только при внезапной перезагрузке оси, и надо потерять всех три зукипера, и в конце концов в КХ есть system restore replica и она работает, я уже кучу раз восстанавливал клиентам снесенную базу зукипера.
  • https://t.me/clickhouse_ru
    @den_crane #311060 03:12 PM, 09 Feb 2023
    >zookeeper.forceSync - это поможет уменьшить ИО?
    да, зукипер ускоряется
  • через Java opts?
  • https://t.me/clickhouse_ru
    @mayamika #311062 03:15 PM, 09 Feb 2023
    в чем я не прав?
    https://fiddle.clickhouse.com/aa3b0f10-5b19-42a5-aee6-93d129f25866
  • bug in FINAL
    https://github.com/ClickHouse/ClickHouse/pull/46009

    workaround:
    SELECT val, ver FROM test FINAL ORDER BY val DESC SETTINGS optimize_read_in_order=0
    Fix read in order optimization for DESC sorting with FINAL by vdimir · Pull Request #46009 · ClickHouse/ClickHouse

    Changelog category (leave one): Bug Fix (user-visible misbehavior in official stable or prestable release) Changelog entry (a user-readable short description of the changes that goes to CHANGELOG...

  • https://t.me/clickhouse_ru
    не знаю, кажется все параметры можно задать opts
  • спасибо большое, вообще выручили, ща везде сделаем false, YOLO
  • https://t.me/clickhouse_ru
    Спасибо большое
  • https://t.me/clickhouse_ru
    @Tordein #311067 03:57 PM, 09 Feb 2023
    Всем привет, у КХ есть встроенное АПИ, чтобы можно было направлять json запросы?
  • https://t.me/clickhouse_ru
    нету,

    а к JSON-е будет звучать

    select a, toUInt32(a) as b
    from (
    select * as a from system.numbers
    )
    order by a limit 1 by b
  • https://t.me/clickhouse_ru
    спасибо, понял
  • https://t.me/clickhouse_ru
    @Tordein #311070 04:01 PM, 09 Feb 2023
    А если я хочу отправлять данные в кликхаус, то должна быть прослойка какая-то на питоне получается?
  • https://t.me/clickhouse_ru
    @Tordein #311071 04:02 PM, 09 Feb 2023
    я имею ввиду если хочу отправлять данные через json
  • https://t.me/clickhouse_ru
    нет, просто посылайте SQL в post или get
  • https://t.me/clickhouse_ru
    где я могу почитать про это подробнее, можете ли подсказать пожалуйста?
  • https://t.me/clickhouse_ru
    HTTP Interface | ClickHouse Docs

    The HTTP interface lets you use ClickHouse on any platform from any programming language in a form of REST API. The HTTP interface is more limited than the native interface, but it has better language support.

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    норм примеры на разных языках и даже через curl еще вот тут есть
    https://cloud.yandex.com/en-ru/docs/managed-clickhouse/operations/connect
  • вопрос, там на сервере iowait почти никакой, кроме одного момента, может ли это быть изза слишком большого файла, и что его вызывает?

    > fsync-ing the write ahead log in SyncThread:3 took 4901ms which will adversely effect operation latency.File size is 134217744 bytes. See the ZooKeeper troubleshooting guide
  • https://t.me/clickhouse_ru
    @timson81 #311079 04:33 PM, 09 Feb 2023
    А подскажите, можно ли использовать ReplacingMergeTree для постоянных вставок, хешей и соответствующих им строк, чтобы в основную сырую таблицу куда пишутся записи вместо этих строк писать хеши? По сути использовать как KV своего рода. Не хочу просто поднимать отдельную базу данных для этого. Длина строк слишком высокая чтобы пусть и со сжатием писать в основную таблицу, и кардинальность поля тоже высокая, допустим 100 миллионов.
  • https://t.me/clickhouse_ru
    @timson81 #311080 04:34 PM, 09 Feb 2023
    Планирую писать в ReplacingMergeTree с сортировкой и primary key по ClientId чтобы в запросах енричить хеши, читая данные только релеватного клиента
  • https://t.me/clickhouse_ru
    @timson81 #311081 04:34 PM, 09 Feb 2023
    Там уникальных значений будет до миллиона строк у каждого клиента
  • https://t.me/clickhouse_ru
    @ARyndin #311082 04:35 PM, 09 Feb 2023
    Добрый день. А в конфиге клика можно как-то задать дефолтный движок, чтобы его можно было опускать при создании таблиц?
  • https://t.me/clickhouse_ru
    а размеры у зк файлов какие? это логи или снепшоты?
    если логи то они просто видимо редко переключаются?
    даты файлов и размеры ls -la можно увидеть?
  • https://t.me/clickhouse_ru
    @den_crane #311084 04:36 PM, 09 Feb 2023
    After snapCount transactions are written to a log file a
    # snapshot is started and a new transaction log file is started. The default
    # snapCount is 10,000.
    #snapCount=1000
    snapCount=1000000
  • https://t.me/clickhouse_ru
    А вы прочитали что JOIN не для CH ?
  • https://t.me/clickhouse_ru
    @timson81 #311086 04:51 PM, 09 Feb 2023
    Да читал, только я не буду джойнить в клике. Я сделаю все выборки, смержу в приложении все хеши в список уникальных, а потом сделаю один select с where ClientId=1 AND hashes IN и список и 100000 уникальных хешей. Но эти хеши скорее всего будут все в соседних гранулах так как будет сортировка по ClientId
  • https://t.me/clickhouse_ru
    @timson81 #311087 05:00 PM, 09 Feb 2023
    Мне интересно насколько бодро кликхаус будет схлопывать дубликаты, чтобы таблица не разрасталась, при чтении само собой я буду делать group by hash и any в селекте, так дубликаты не страшны, просто чтобы хотелось бы чтобы поддерживалось разумное кол-во строк в replacing merge tree
  • https://t.me/clickhouse_ru
    @konnectrl #311088 05:02 PM, 09 Feb 2023
    Как по мне вы делаете бесполезность
  • https://t.me/clickhouse_ru
    @timson81 #311089 05:04 PM, 09 Feb 2023
    То есть оставить как есть и писать в основную таблицу строки с zstd сжатием? Выигрыша не будет?
  • https://t.me/clickhouse_ru
    @timson81 #311090 05:06 PM, 09 Feb 2023
    У меня там просто два триллиона строк, а уникальных значения в строковом столбце 100 миллионов всего.
  • https://t.me/clickhouse_ru
    @timson81 #311091 05:06 PM, 09 Feb 2023
    Или вы имеете ввиду взять редис и не париться ?
  • https://t.me/clickhouse_ru
    @aliceindreams #311092 05:19 PM, 09 Feb 2023
    ребята, доброго дня! Прошу прощения, что так врываюсь. Есть реплика PostgresQL —> Clickhouse. Через MaterializedPostgreSQL.

    Вопрос такой где и как можно смотреть состояние этой репликации? Активна она или нет?

    Иногда случается, что она просто отваливается без причины будто. В логах что-то ничего по реплике, будто, не видно.
  • Нет доступа... Но большие в логе пишутся, 134мб трансакшн лог фсинк ошибку выдал. Если уменьшить snapcount оно уменьшиться?
  • https://t.me/clickhouse_ru
    да, уменьшится
  • @dj_mixer #311095 05:55 PM, 09 Feb 2023
    Спасибо, попробуем тоже.
  • @Allenoff #311096 06:36 PM, 09 Feb 2023
    ребят может мне обяснить как с БД(таблицы) и шардами работать в clickhouse.
    создал кластер кликхауса + кипер.
    Я может чего не понимаю. Но в моей логике данные должны были размазаться по всем шардам по чуть чуть, и при обращении к любой из нод я должен получить все данные?
    Мб есть видео или гуид обясняюший все это.
    кластер состоит из 6 тачек 3 шарда и у каждого по реплике.
  • https://t.me/clickhouse_ru
    в логах /var/log/clickhouse-server/
    если повезет

    недоделанная и плохо управляемая фича IMHO
  • ещё вопрос, когда случилась проблема, есть резкий пик в ЗК метрике называемой "prep_process_time". оно что нибудь отражает? а то я поискал и ничего не понял что это за метрика
  • https://t.me/clickhouse_ru
    потому что Replicated означает
    что две и более реплики с одинаковым zookeeper path и разными replica name
    на каждый Insert block сохраняют в zk \ keeper имя нового data part и потом друг у друга эти data part по http 9009 порту тянут

    чтобы собирать данные со всего кластера и всатвлять на весь кластер, вам нужна отдельная таблица "роутер" engine=Distributed
    https://clickhouse.com/docs/en/engines/table-engines/special/distributed/
    Distributed Table Engine | ClickHouse Docs

    Tables with Distributed engine do not store any data of their own, but allow distributed query processing on multiple servers.

  • логи судя по ошибкам в районе 134МБ-280МБ, на других продакшнах так же примерно.
    снепшоты большие (таблиц много), в районе 1.78GB-2GB
    ——
    если уменьшить snapCount - snapshot будет браться чаще, в это время ЗК продолжает отрабатывать?
  • https://t.me/clickhouse_ru
    >если уменьшить snapCount - snapshot будет браться чаще, в это время ЗК продолжает отрабатывать?
    да

    а что случилось? Нагрузка выросла резко?
  • да, теперь грешу на GC, так как диск ОК, а GC вовсю начал работать, увеличим Xmx итд...
  • https://t.me/clickhouse_ru
    @den_crane #311105 07:18 PM, 09 Feb 2023
    >снепшоты большие (таблиц много), в районе 1.78GB-2GB
    таблиц много, а сколько времени данные хранятся и какие партиции?
    и сколько много?
  • последние 7 дней дневные, дальше месячные, но итого 15к таблиц, * примерно по 10 партов с среднем, меньше 200к партов...
  • скорее просто нагрузка выросла, память была близка к Xmx, и GC вырос резко
  • https://t.me/clickhouse_ru
    @den_crane #311108 07:21 PM, 09 Feb 2023
    тут один клиент у нас у которого 15 тыс. таблиц наконец-то согласился поставить (после года раздумий)

    <merge_tree>
    <cleanup_delay_period>300</cleanup_delay_period>
    <merge_selecting_sleep_ms>60000</merge_selecting_sleep_ms>
    <merge_tree>

    теперь сожалеет что не сделал этого раньше, все в 0 упало на зукипере
  • это CPU, это было сделано сразу, собственно следуя вашему комменту на ГХ
  • это не особо влияет на размер снепшота вроде, ну и на GC/память
  • https://t.me/clickhouse_ru
    Да, спасибо, похоже на то. Тяжело контролировать
  • https://t.me/clickhouse_ru
    еще рекомендую для 7 дней дневные таблиц посмотреть сколько там

    старых блоков и снести

    with 'база.таблица`' as tbl
    select 'rm '|| path||name from system.zookeeper
    where path = ( select zookeeper_path||'/block_numbers/' from system.replicas where database||'.'||table = tbl )
    and name not in (select distinct partition_id from system.parts where database||'.'||table = tbl ) 
    and ctime < now() - interval 30 day and mtime < now() - interval 30 day
    format TSVRaw;
  • https://t.me/clickhouse_ru
    @den_crane #311113 07:25 PM, 09 Feb 2023
    КХ хранит автоинкременты для номеров блоков для партиций, и они могут занимать очень много места в ЗК
  • Да точно, спасибо, вот эту часть бы командой в кх. А то мы кроном делаем сейчас иногда оно как то сложно стандартизируется...
    Типа system replica cleanolddata
  • https://t.me/clickhouse_ru
    уже просили не раз добавить drop partition purge типа
  • @dj_mixer #311116 07:29 PM, 09 Feb 2023
    Аха, ясно почему это не делается автоматом, но можно как то сделать команду которая на кластере везде зачистит и дальше на зк
  • @dj_mixer #311117 07:29 PM, 09 Feb 2023
    Сделали же system restore replica )
  • Просто не везде доступ к зк есть еще...
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #311119 07:32 PM, 09 Feb 2023
    коллеги, подскажите, нубский вопрос, если в директории много партов, которые нужно зааттачить, можно их как-то перечислить для команды ALTER TABLE ... ATTACH PART?
  • https://t.me/clickhouse_ru
    я понимаю, я спрошу в альтинити, clickhouse,inc не хочут это делать.
  • Или delete from system.zookeeper 😂
  • https://t.me/clickhouse_ru
    let i=1;for f in `ls -1` ; do echo $i $f;((i++)); echo "alter table csp_ad_fact_event_shard attach part '$f';"|clickhouse-client ; done`

    но вообще есть attach partition
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #311123 07:35 PM, 09 Feb 2023
    а там парты от разных партций
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #311124 07:35 PM, 09 Feb 2023
    спасибо!
  • проще так нагенерить
    select * from system.detached_parts where table='metric_log_18';
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #311126 07:37 PM, 09 Feb 2023
    это перенесенные с другой копии)
  • https://t.me/clickhouse_ru
    так это не имеет значения. detached_parts просто файлы из каталога листает
  • https://t.me/clickhouse_ru
    @Tu_viejo_amigo #311128 07:47 PM, 09 Feb 2023
    а, понял, спасибо
  • @nomercy_ls #311129 07:58 PM, 09 Feb 2023
    Всем привет! Очень интересует вопрос неявных приведений на уровне where-clause запроса.
    CREATE TABLE test_table (
    value Float32
    );

    SELECT value FROM test_table WHERE value > 1.1 ORDER BY value LIMIT 1;
    -- Row 1:
    -- ──────
    -- value: 1.1
    Насколько это очевидное поведение со стороны CH и как бороться с таким поведением? Только явные приведения типов?
  • https://t.me/clickhouse_ru
    да, в данном случае только явное приведение типов WHERE value > toFloat32(1.1)

    1.1 это литерал который по умолчанию float64
  • Грустно, конечно... Спасибо огромное за ответ!
  • https://t.me/clickhouse_ru
    юзайте decimal
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    кликхаус изначально очень хрупкий к типам...

    это надо держать в голове
  • Да, всей командой держим) Хрупкий он не только к типам)
  • @zhora9001 #311136 08:25 PM, 09 Feb 2023
    Добрый день! Вопрос по альтинити оператору в части восстановления одного шарда. Допустим, что-то случилось и нужно восстановить 2ой шард из снэпшота EBS. Учитывая, что PVC и PV имьютабл, единственным путем видится пересоздать кластер и вручную указать всем подам «их» PVC, заменив у проблемного PVC на кастомный (который возьмет снэпшот в качестве источника)?
  • https://t.me/clickhouse_ru
    CREATE TABLE test_table ( value Float );
    insert into test_table values ( 1.1);
    SELECT value FROM test_table WHERE value > 1.1 ORDER BY value LIMIT 1;
    +-------+
    | value |
    +-------+
    | 1.1 |
    +-------+

    select version();
    +---------------------------+
    | version() |
    +---------------------------+
    | 10.3.36-MariaDB-0+deb10u2 |
    +---------------------------+
  • https://t.me/clickhouse_ru
    @ghetto74 #311138 09:39 PM, 09 Feb 2023
    Привет!
    При джойне 2х табличек через left join, все поля в правой таблице, где я ожидаю увидеть null, заполняются пустыми строками
    из-за этого не могу вспользоваться coalesce

    Подскажите, пожалуйста, что нужно сделать
    ver 22.8.12.45
  • https://t.me/clickhouse_ru
    SETTINGS join_use_nulls = 1
  • https://t.me/clickhouse_ru
    Спасибо
  • @shadowusr #311141 10:36 PM, 09 Feb 2023
    Привет!
    Простой вопрос, есть условия WHERE some IN (), <—— как здесь пустой список правильно указать?
  • https://t.me/clickhouse_ru
    in (Null)
  • @shadowusr #311143 10:46 PM, 09 Feb 2023
    Спасибо большое. Использовал ([]), но стал сомневаться, то ли это, что мне нужно
  • 10 February 2023 (150 messages)
  • @ShulcevVA #311144 01:13 AM, 10 Feb 2023
    Привет всем. За неделю вырос zk_approximate_data_size на зукипере с 16МБ до 500МБ. Полез смотреть логи кх, а там
    1 нода
    <Error> InterserverIOHTTPHandler: Code: 232. DB::Exception: No part 202302_52609_54246_1211 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    2 нода
    <Error> несколько_таблиц_одной_базы: auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Poco::Exception. Code: 1000, e.code() = 110, Timeout, Stack trace (when copying this message, always include the lines below)
    Изчего-то внятного нашел только это https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/replication/?ysclid=ldxtspceyu182994988#vosstanovlenie-posle-sboia

    Кто-нибудь сталкивался с подобным? Что еще можно посмотреть?
  • https://t.me/clickhouse_ru
    select * from system.replication_queue там есть колонка last_exception
  • @ShulcevVA #311146 01:40 AM, 10 Feb 2023
    на одной ноде пусто, а вот на другой last_exception 335 шт.
  • @ShulcevVA #311147 01:40 AM, 10 Feb 2023
    Row 1:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 2:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 3:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 4:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 5:
    ──────
    last_exception: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2FURAL%2Fappmetrics%2Freplicas%2Fural-ch1&part=202302_52609_54320_1285&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 202302_52609_54320_1285 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x9366e7a in /usr/bin/clickhouse
    1. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x113e0319 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x113de800 in /usr/bin/clickhouse
    3. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x1175729e in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x11757b83 in /usr/bin/clickhouse
    5. DB::HTTPServerConnection::run() @ 0x117bbdb0 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x143720af in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x14373b3a in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x144a69b9 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x144a2c4a in /usr/bin/clickhouse
    10. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    11. clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 21.9.2.17 (official build)). (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER) (version 21.9.2.17 (official build))

    Row 6:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 7:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 8:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))

    Row 9:
    ───────
    last_exception: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2FURAL%2FPriceKonkurentHistory%2Freplicas%2Fural-ch1&part=20230210_20230210_87626_87644_4&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 20230210_20230210_87626_87644_4 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x9366e7a in /usr/bin/clickhouse
    1. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x113e0319 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x113de800 in /usr/bin/clickhouse
    3. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x1175729e in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x11757b83 in /usr/bin/clickhouse
    5. DB::HTTPServe
  • @ShulcevVA #311148 01:41 AM, 10 Feb 2023
    список по такому запросу select last_exception from system.replication_queue where last_exception!='' ORDER BY create_time DESC limit 10 \G надеюсь запрос нормальный)
  • https://t.me/clickhouse_ru
    @Alexeysaff #311149 01:42 AM, 10 Feb 2023
    можно ли делать ALTER для уже созданного order_by ?
  • https://t.me/clickhouse_ru
    Похоже один сервер до другого по DNS не может достучаться
  • https://t.me/clickhouse_ru
    В общем нельзя, можно как бы добавить новые поля в конец, когда они добавляются в таблицу.
  • https://t.me/clickhouse_ru
    @Alexeysaff #311152 01:46 AM, 10 Feb 2023
    Через альтер?
  • https://t.me/clickhouse_ru
    @Alexeysaff #311153 01:46 AM, 10 Feb 2023
    Для новых данных сойдёт
  • https://t.me/clickhouse_ru
    @Alexeysaff #311154 01:50 AM, 10 Feb 2023
    Хмммм
  • https://t.me/clickhouse_ru
    @Alexeysaff #311155 01:50 AM, 10 Feb 2023
    Manipulating Key Expressions | ClickHouse Docs

    The command changes the sorting key of the table to new_expression (an expression or a tuple of expressions). Primary key remains the same.

  • https://t.me/clickhouse_ru
    Alter table add column a int, modify order by b,c,a
  • https://t.me/clickhouse_ru
    @Alexeysaff #311157 01:51 AM, 10 Feb 2023
    Да, я понял
  • https://t.me/clickhouse_ru
    @Alexeysaff #311158 01:52 AM, 10 Feb 2023
    Не подходит
  • https://t.me/clickhouse_ru
    @Alexeysaff #311159 01:52 AM, 10 Feb 2023
    Спасибо
  • Со всей сетью вроде бы все хорошо, ну в любом случае благодарю. Будем разбираться.
  • https://t.me/clickhouse_ru
    @itsreallyalim #311161 06:01 AM, 10 Feb 2023
    Доброе утром всем 🌞
    Нужна помощь в составлении запроса
    Есть таблица, куда отправляются данные с таймстемпами. Колонки примерно такие:
    provide_id, ts, value(bool)

    Мне нужно составить такой запрос, который будет возвращать provide_id, если между его последними двумя записями прошло 10+ часов
    Список всех возможных provider_id у меня есть и он не большой (до 15)
  • https://t.me/clickhouse_ru
    @dimkas78 #311162 07:35 AM, 10 Feb 2023
    Коллеги, добрый день!

    Не могу сам чётко ответить на вопрос, прошу помощи сообщества.
    Есть таблица с движком CollapsingMergeTree(sign), имеющая несколько полей в списке ORDER BY.
    В таблицу регулярно добавляются записи с одинаковыми полями сортировки,
    движок эти записи стабильно сворачивает и оставляет по одной уникальной записи для каждого сочетания полей сортировки.
    В некоторых случаях такие повторяющиеся строки приходят в одной вставке INSERT INTO SELECT FROM,
    и тогда для каждого сочетания полей сортировки выживает какая-то одна, случайно выбранная строка. Вот эту самую случайность в выборе строки хочется убрать.

    Собственно вопрос - если разделить все вставки таким образом есть в каждой конкретной пачке не будет дублей по полям сортировки,
    то со стороны движка есть гарантия, что в таблице останется последняя запись по порядку вставки данных?
    Или иначе говоря - есть ли гарантия, что в CollapsingMergeTree-движок хранит точно последнюю вставленную строку для каждого сочетания полей сортировки?

    Как обычно дописал вопрос и ответ как будто стал очевиден - "Конечно, да" :)
    Но всё же подтвердите, пожалуйста :)
  • https://t.me/clickhouse_ru
    Если данных немного, то можно в лоб решить - для каждого id выбрать максимальный таймштамп, потом выбрать максимальный из тех что не равны первому максимуму, и вычислить время между ними.
  • https://t.me/clickhouse_ru
    12+ миллиардов записей 💀
  • https://t.me/clickhouse_ru
    само количество строк не очень важно -
    главное то сколько раз такой запрос будет выполняться и сколько на это есть времени :)
    если разово, то быстрее наколхозить в лоб,
    а если надо периодически его вызывать, то надо идти перечитывать что пишут про lag/lead функции - они как-то реализованы не очевидно
  • https://t.me/clickhouse_ru
    Учитывая что у вас движок CollapsingMergeTree - вы же сами определяете какие строки занулить, ставя им -1. Вопрос: а какие строки нужно оставить, последние? Тогда может вам выбрать ReplacingMergeTree(<max time|max id>) ?
  • https://t.me/clickhouse_ru
    У меня получается, что в таблицу последовательно разными запросами вставляются несколько строк с sign=1 и одинаковым набором полей сортировки.
    Движок перекрывает старые строки новыми. Отменять записи с помощью sign=-1 код себя не утруждает.
    И я рассчитываю, что после оптимизации таблицы остаётся именно последняя из строк.
    Собственно мой исходный вопрос можно переформулировать как "А вставляются ли данные в таблицу?" и понятно что ответа кроме как "Да", быть не может.
  • https://t.me/clickhouse_ru
    @grigory_a #311169 08:09 AM, 10 Feb 2023
    привет, помогите понять что я делаю не так:
    SELECT count(*)
    FROM awesome_table_name
    ┌───count()─┐
    │ 325595952 │
    └───────────┘

    SELECT count(*)
    FROM awesome_table_name
    FINAL
    ┌───count()─┐
    │ 190040078 │
    └───────────┘

    потом делаю OPTIMIZE TABLE awesome_table_name FINAL DEDUPLICATE
    он успешно отрабатывает, но количество строк в таблице не меняется

    SELECT count(*)
    FROM by_destination_daily
    ┌───count()─┐
    │ 325657057 │
    └───────────┘
  • https://t.me/clickhouse_ru
    оптимизация по умолчанию выполняется асинхронно, и может идти долго
  • https://t.me/clickhouse_ru
    3 минуты запрос висел, как будто бы синхронно. да и уже пара часов прошло, и ничего не поменялось. мб какой-то мисконфиг на сервере или в таблице
  • https://t.me/clickhouse_ru
    @GenRockeR #311173 08:22 AM, 10 Feb 2023
    Коллеги, кто может подсказать? Какой тип столбца выбрать для RFC 3389 времени? Или сильно не заморачиваться и взять String?
    %Y-%m-%dT%H:%M:%SZ

    Будет ли работать партиционирование?

    order by CustomerName partition by toYYYYMMDD(Date)
  • найдите дубликат, посмотрите, он лежит в одной партиции или в разных?
  • Третий селект кстати в другую таблицу
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311162 #311176 08:30 AM, 10 Feb 2023
    Ровно для этого и сделан VersionedCollapsingMergeTree. Не очень понимаю зачем вобще остался простой CollapsingMergeTree, в каких ситуациях он дает преимущество/экономию
  • https://t.me/clickhouse_ru
    про тип данных ничего не скажу,
    а про партиционирование - если выражение вообще вычислимо, то партиционирование конечно работать будет, куда оно денется?
    другое дело, что после накопления более 3 лет число партиций станет больше рекомендуемой 1000 штук
  • https://t.me/clickhouse_ru
    обфускатор сломался) меня смущает, что count с final показывает сильно меньшее количество записей, как будто есть еще куда оптимизировать. данные поизучаю, поищу дубликаты, но кажется они все одной партиции
  • Модификатор final делает мердж между партициями. Optimize емнип только внутри партиции.
  • https://t.me/clickhouse_ru
    Спасибо за идею про VersionedCollapsingMergeTree.
    Но у меня как раз случай когда больше подходит CollapsingMergeTree - номера версии у строки у меня нет и вычислить его трудно, а вставка выполняется последовательно по расписанию
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311180 #311181 08:35 AM, 10 Feb 2023
    Возможно вам подойдет now() в качестве версии, хотя для одной вставки будет одинаковое. Лучше брать таймстемп откуда-то еще.
  • https://t.me/clickhouse_ru
    @lex_zen #311182 08:36 AM, 10 Feb 2023
    Всем привет!
    У меня следующая задача:
    Есть таблица с сырыми данными, которая хранить временной ряд с гранулярностью 1 минута (name - table_1, columns - (timecode, metric)).
    Мне нужно подготовить витрину, где будут храниться данные из таблицы table_1 агрегированные с разной гранулярностью (5 и 10 минут, например).

    Для этого я создал таблицу с движком AggregatingMergeTree (name - table_2, columns - (timecode, timespan, agg_metric)), на исходную таблицу навесил несколько Materialized view, каждая из которых агрегирует данные со своей гранулярностью и кладет результат в table_2.

    В результате инсерт в table_1 триггерит только 1 случайную матвьюху, что неверно. Ожидается, что инсерт в исходную таблицу будет триггерить все вьюхи.
    Что я делаю не так? Вариант с 1 матвьюхой с union всех запросов не работает, кликхаус это не позволяет делать.

    Матвьюхи выглядят так:
    CREATE MATERIALIZED VIEW agg_5_mv TO table_2
    AS
    SELECT timecode,
    5 AS timespan,
    agg_metric
    FROM (
    SELECT timecode_5 AS timecode,
    avgState(metric) AS agg_metric
    FROM table_1
    GROUP BY timecode_5
    );

    CREATE MATERIALIZED VIEW agg_10_mv TO table_2
    AS
    SELECT timecode,
    10 AS timespan,
    agg_metric
    FROM (
    SELECT timecode_10 AS timecode,
    avgState(metric) AS agg_metric
    FROM table_1
    GROUP BY timecode_10
    );
  • https://t.me/clickhouse_ru
    да, now() подойдёт, но его придётся хранить, собственно мне достаточно того, что позднее вставленное перекрывает более старые строки,

    но я подумаю :) спасибо, еще раз
  • https://t.me/clickhouse_ru
    зачем вам тут sub queries во FROM ?
  • https://t.me/clickhouse_ru
    спасибо большое
  • https://t.me/clickhouse_ru
    не нужен, спасибо, уберу, но проблему это не решает
  • https://t.me/clickhouse_ru
    почему не решает...
    вы говорите что у вас там что-то рандомно тригериться
    я вижу что у вас там явно криво для триггера MV определены...
  • @tarnished_ones #311188 08:58 AM, 10 Feb 2023
    Коллеги, приветствую. Помогите разобраться.

    Есть таблица в клике, у которой engine это postgres. Соответстветнно перед каждым инсёртом в таблицу клика, данные так же вставляются в постгрю. Так вот, если вдруг по какой-то причине запись в постгрис не удалась (а соответственно и в клик), то никаких эксепшенов не происходит, ничего. Клик пишет что типа "все строки успешно загрузились", но их нет ни в постгре, ни в клике.
    Данные пишем питонячим скриптом через clickhouse-driver либу.
    Это нормальное поведение?
  • https://t.me/clickhouse_ru
    Да, я дальше планировал TTL прикрутить
  • https://t.me/clickhouse_ru
    engine=PostgreSQL
    это прокси

    > Соответстветнно перед каждым инсёртом в таблицу клика, данные так же вставляются в постгрю.
    у вас две таблицы или одна прокси в клике и одна живая в Postgres?

    или вы вставляете только в одну таблицу?
    через clickhouse-driver??
  • У нас постгрис как прокси да. Нам данные нужны и там.
    Мы вставляет через clickhouse-driver для python в кликхаус, в таблицу, у которой engine - postgres. Соответственно данные будут проливаться и в постргю
  • https://t.me/clickhouse_ru
    звучи так, что вам надо было сделать наоборот
  • вставлять в постгрю?
  • https://t.me/clickhouse_ru
    @Sablast #311194 09:11 AM, 10 Feb 2023
    да и забирать в кх
  • https://t.me/clickhouse_ru
    > то никаких эксепшенов не происходит, ничего.

    точно не типичное поведение

    engine=PostgreSQL
    никаких данных в клике НЕ ХРАНИТ
    вы просто в постгрес значит вставляете через гланды... через ClickHouse

    и если там связь с постгрей пропала
    клик должен наверх exception прокинуть который должна либа отработать

    если не прокинул
    то значит вы как то не так проверяете что данные "не вставлись"
  • Ну проверяем просто селектом банально
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW agg_5_mv TO table_2
    AS
    SELECT timecode_5 AS timecode,
    5 AS timespan,
    avgState(metric) AS agg_metric
    FROM table_1
    GROUP BY timecode_5;

    CREATE MATERIALIZED VIEW agg_10_mv TO table_2
    AS
    SELECT timecode_10 AS timecode,
    10 AS timespan,
    avgState(metric) AS agg_metric
    FROM table_1
    GROUP BY timecode_10;

    Запросы поправил, но всё также наблюдаю дыры во временном ряду в таргет таблице:
    ('2023-02-10 08:40:00'),
    ('2023-02-10 08:45:00'),
    ('2023-02-10 09:00:00');.

    Может дело не в ошибочном триггере. Что еще может влиять на результат?
  • https://t.me/clickhouse_ru
    а причем тут "дыры" в конечных таблицах

    это дыры в исходных данных в table_1

    SELECT timecode_5, timecode_10, metric FROM table_1 WHERE metric='metric_name' ORDER BY timecode_5 LIMIT 100
    сделайте и смотрите какие вам данные прилетуют..
  • https://t.me/clickhouse_ru
    В том то и дело, что в исходной таблице дыр нет, это я в первую очередь проверил
  • https://t.me/clickhouse_ru
    ну видимо так проверяли...

    вообще запросы ваши, которые вы расшарили не соответсвуют той структуре таблицы которую вы показывали

    > (name - table_1, columns - (timecode, metric)).

    соответсвенно откуда вы там берете и как считаете timecode_5 и timecode_10 вообще не ясно
  • https://t.me/clickhouse_ru
    а вообще есть понимание что изменение MATERIALIZED VIEW не приводит к пересчету старых данных у целевой таблицы или нет?
  • https://t.me/clickhouse_ru
    AggregatedMergeTree с этим вполне справляется
  • https://t.me/clickhouse_ru
    если я неправ, поправьте
  • https://t.me/clickhouse_ru
    C Чем??? ;))))

    AggregatingMergeTree не пересчитывает данные задним числом никогда

    это просто удобный механизм хранения hashmap и прочих вспомогательных структур для аггрегатных функций, чтобы их на лету не вычислять по сырым данных и финализировать аггрегацию быстро...
  • https://t.me/clickhouse_ru
    У меня данные поминутные без пробелов, если я навешиваю на исходную таблицу 1 матвьюху, то при запросе в целевую таблицу AggregatedMergeTree, я получаю временной ряд без пробелов с нужной мне агрегацией и корректно посчитанными значениями. "Финализируется" всё как надо.

    При этом если добавляю вторую вьюху, с первой начинают прилетать пробелы.
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/311198

    вы не ответили как у вас формируются timecode_5 и timecode_10 в table_1
    у вас запросы должны CREATE MATERIALIZED VIEW с ошибкой валится
    Slach [altinity] in ClickHouse не тормозит

    а причем тут "дыры" в конечных таблицах это дыры в исходных данных в table_1 SELECT timecode_5, timecode_10, metric FROM table_1 WHERE metric='metric_name' ORDER BY timecode_5 LIMIT 100 сделайте и смотрите какие вам данные прилетуют..

  • @Ferdinant122 #311207 09:37 AM, 10 Feb 2023
    Всем привет!
    А кто-то бэкапит на s3 кликхаус?/
    Как можно использовать роль в авс а не указывать аксесс и сикрет кей
  • https://t.me/clickhouse_ru
    немного некорректно структуру таблицы описал, прошу прощения

    структура исходной таблицы table_1:
    timecode - Datetime
    timecode_5 - Datetime - получилась в результате toStartOfInterval(timecode, toIntervalMinute(5)) в процессе етл
    timecode_10 - Datetime - получилась в результате toStartOfInterval(timecode, toIntervalMinute(10)) в процессе етл
    metric - Float64
  • https://t.me/clickhouse_ru
    имеется ввиду встроенный BACKUP / RESTORE?

    AWS_ROLE_ARN
    попробуйте через переменную окружения задавать, которую clickhouse-server будет видеть
  • @Ferdinant122 #311210 09:40 AM, 10 Feb 2023
    спасибо, а вариант вообще не указывать ключи и только через роль подключаться? потому что как-то вообще не секурно
  • https://t.me/clickhouse_ru
    так, у вас ДВА materialized view тащат данные в одну и туже table_2? ;)

    SHOW CREATE TABLE table_2;
    расшарьте пожалуйста
  • https://t.me/clickhouse_ru
    имеете ввиду IAM ?
    use_environment_credentials посмотрите в доке
    https://clickhouse.com/docs/en/integrations/s3/s3-merge-tree/#creating-a-disk
  • https://t.me/clickhouse_ru
    CREATE TABLE table_2
    (
    timecode DateTime,
    timespan UInt32,
    agg_metric AggregateFunction(avg, Float64)
    )
    ENGINE = AggregatingMergeTree
    PARTITION BY toYYYYMM(timecode)
    ORDER BY timecode
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    у вас ORDER BY timecode
    а должно быть ORDER BY timecode, timespan
  • https://t.me/clickhouse_ru
    у вас схлопывается по одинаковому timecode для timespan=5 и timespan=10
    и считается среднее
  • спасибо большое!
  • https://t.me/clickhouse_ru
    @itsreallyalim #311217 10:00 AM, 10 Feb 2023
    Салют, еще раз
    Есть таблица, куда отправляются данные с таймстемпами. Колонки примерно такие:
    provider_id, device_id, ts

    Задача такая: вывести две последние записи по каждому device_id в отсортированном по времени ts порядке по заранее известному провайдеру

    Часть запроса я уже написал, но вышеуказанным требованиям он естественно не соответсвует

    SELECT ts, device_id
    FROM metrics
    WHERE provider_id = 'nauka-svyaz'
    ORDER BY device_id, ts_int desc
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311217 #311218 10:03 AM, 10 Feb 2023
    SELECT ts, device_id
    FROM metrics
    WHERE provider_id = '22222’
    ORDER BY ts_int desc
    limit 2 by device_id
  • https://t.me/clickhouse_ru
    есть ли другой способ? на этот запрос я ловлю read timeout (12+ миллиардов записей в таблице)
  • https://t.me/clickhouse_ru
    увеличить таймаут 🤷‍♂️
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311219 #311221 10:14 AM, 10 Feb 2023
    есть много способов, но суть та-же самая - нужна группировка. Поэтому сначала отсекаем от 12 ярдов нужное вам количество, и только потом делаем группировку.
  • https://t.me/clickhouse_ru
    @AndreStrelbin #311222 10:17 AM, 10 Feb 2023
    PARTITION BY toYYYYMMDD(ts) , возможно добавить индекс по какой-то нужной колонке
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311222 #311223 10:31 AM, 10 Feb 2023
    идексы и партишн пруниг тут не помогут, т.к. у пациента нет в where условия по времени. Но если это условие в принципе возможно - скажем если нет спящих устройств, а все устройства равномерно шлют свои метрики, то вполне можно делать выборку метрик за последний день/час, и тогда в группировке будет не 12 ярдов, а гораздо меньше. @itsreallyalim
  • https://t.me/clickhouse_ru
    это делается чтобы отслеживать спящие устройства
  • https://t.me/clickhouse_ru
    @itsreallyalim #311225 10:35 AM, 10 Feb 2023
    Но, это будет что то вроде крон задачи, запрос будет отправлятся регулярно, скажем, раз в 10 часов
  • @ex_electric #311226 10:39 AM, 10 Feb 2023
    Всем добрый день.
    Возможен-ли вариант , когда вновь-установленному серверу КХ подсунуть диск с базами от "старого КХ" ?
    Типа: переезд на более производительное железо и более свежую ОС
  • https://t.me/clickhouse_ru
    @1151007688 #311227 10:42 AM, 10 Feb 2023
    Добрый день. Допустим есть хост с ClickHouse метрики складываются на другой хост где есть Graphite (плюс туда еще собираются и выкладываются системные метрики из другого агента). На какие метрики "принято" смотреть, чтобы понять, что хост с ClickHouse отвалился.
  • https://t.me/clickhouse_ru
    heartbeat?
  • https://t.me/clickhouse_ru
    @1151007688 #311229 10:53 AM, 10 Feb 2023
    Но метрики такой нет heartbeat? как я понимаю.
  • https://t.me/clickhouse_ru
    я разобрался с таймаутами (ограничил количество строк по времени), но запрос выводит не совсем то что мне нужно
    да, он сортирует по времени и, возможно выводит максимум по 2 device_id, но мне нужно чтобы оба device_id шли друг за другом, отсортированные по времени
    прошу прощение что изначально неправильно сформировал требования
  • https://t.me/clickhouse_ru
    возможен

    собственно вся база это файлики в /var/lib/clickhouse/data/
    /var/lib/clickhouse/store/
    /var/lib/clickhouse/metadata/

    но есть ньюанс. в виде всяких штук типа значения макроса {replica}
    и вообще надо понимать как ReplicatedMergeTree таблицы работают
  • посчитали, эт почистит где то 170 тыс знодов из 7.3 млн... 2.3% где то, я так понял слишком сильно эт снепшот сильно не поменяет. ещё где то есть простор для чистки?
  • спасибо!
  • https://t.me/clickhouse_ru
    @katrina_rozh #311234 12:07 PM, 10 Feb 2023
    Привет!))
    Раньше работало так, сейчас так не работает.

    select *
    from table_1
    join table_2 on table_1.a=arrayJoin(table_2.b)

    Сейчас работает так.

    select distinct arrayJoin(table_2.b) as a
    from table_1
    join table_2 using a

    Но так неудобно, потому что потом надо агрегировать поля table_1 по полям table_2.
    Может, кто-нибудт знает, как можно ещё сделать?) спасибо)))
  • https://t.me/clickhouse_ru
    select * from table_1 where a in (select arrayJoin(table_2.b) from table_2)

    пробовали?
  • https://t.me/clickhouse_ru
    Да, так делаю, когда могу обойтись без полей второй таблицы))
    Но когда нужно, например, минимум по значениям из таблицы 1 в разрезе полей из таблицы 2, так не подходит(((
  • https://t.me/clickhouse_ru
    Через tmp можете или движок Join попробовать
  • https://t.me/clickhouse_ru
    @5885025244 #311238 12:48 PM, 10 Feb 2023
    How are you?
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311239 01:56 PM, 10 Feb 2023
    привет всем. Может кто знает, как проверить перед инсертом в клик, что запрос валиден и данные точно залетят? Это вообще возможно?
  • https://t.me/clickhouse_ru
    @maefix ↶ Reply to #310512 #311240 01:58 PM, 10 Feb 2023
    Привет, наивный вопрос появился вдогонку. А зачем тогда вообще avgWeighted, и почему оно "под капотом" одно на другое не меняет? Зачем это делать со стороны клиента?
  • https://t.me/clickhouse_ru
    создать temporary таблицу
    вставить в нее данные
    потом аттачнуть из нее данные в целевую таблицу?
    удалить temporary?
  • https://t.me/clickhouse_ru
    Это опенсорс проект, возможно кто то добавил и его приняли и больше не поддерживают
  • https://t.me/clickhouse_ru
    @maefix ↶ Reply to #311242 #311243 02:27 PM, 10 Feb 2023
    понял, спасибо
  • @yatimur #311244 02:42 PM, 10 Feb 2023
    добрый день, заранее извиняюсь за вопрос, в SQL не очень шарю

    вот у меня есть таблица данных аналитики которая собирается с нескольких сотен вебсайтов.
    У меня есть cube.dev с помощью которого я считаю, к примеру, число посетителей (группировка по столбцам siteId, host)

    теперь я хочу считать топ-3 популярных url (столбец path) для каждого сайта.
    я мог бы запрашивать данные по каждому сайту с помощью фильтра, но что-то мне подсказывает, что SQL и кликхаус в том числе позволяет сделать это более оптимально, вернув в одном большом запросе необходимый мне top-3 популярных урлов. как это сделать?

    пока что я увидел что можно делать группировку по timestamp с детализацией по дням, но это мне не совсем подходит.
  • https://t.me/clickhouse_ru
    ORDER BY url LIMIT 3 BY url

    https://clickhouse.com/docs/en/sql-reference/statements/select/limit-by/#examples
    LIMIT BY Clause | ClickHouse Docs

    A query with the LIMIT n BY expressions clause selects the first n rows for each distinct value of expressions. The key for LIMIT BY can contain any number of expressions.

  • спасибо 🙏
  • https://t.me/clickhouse_ru
    @amdubovoy #311247 03:20 PM, 10 Feb 2023
    Всем привет! А в какой версии корень конфига стал <clickhouse>? Осталась ли поддержка <yandex> для обратной совместимости?
  • https://t.me/clickhouse_ru
    @ghetto74 #311248 03:23 PM, 10 Feb 2023
    Привет!

    Подскажите, пожалуйста, а что будет быстрее работать:

    Есть колонка (type: String), в ней лежат UUID
    мне нужно приджойнить к ней другую таблицу, где такая же схема, как выше (джойн будет по колонке с UUID)

    Мне лучше сначала переделать type: String -> type: UUID и потом джойнить, или забить и джойнить строки?
  • https://t.me/clickhouse_ru
    осталась

    точно версию не скажу, будем считать что с 22.x
  • https://t.me/clickhouse_ru
    скорее всего UUID быстрее будет, тк строчка весит 32 байта, а UUID - 16
  • https://t.me/clickhouse_ru
    @ghetto74 #311251 03:25 PM, 10 Feb 2023
    Да, но для хранения данных в UUID потребуется сначала поменять тип колонки, а это тоже занимает время, или все равно считаете, что будет быстрее?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    судя по
    for v in 21.3 21.8 22.3 22.8; do docker run --rm clickhouse/clickhouse-server:$v head -n 30 /etc/clickhouse-server/config.xml; done

    да, в 22.x сменили
  • @egorov_public #311254 03:36 PM, 10 Feb 2023
    Уважаемые коллеги,
    В логах clickhouse вижу большое количество сообщений вида:

    Warning> CollapsingSortedBlockInputStream: Incorrect data: number of rows with sign = 1 (2) differs with number of rows with sign = -1 (0) by more than one (for key: 19398, 6029, 6673288564376851156). : 1

    Используем табличку с CollapsingMergeTree engine и следующими полями группировки:
    ENGINE = CollapsingMergeTree(sign) PARTITION BY toYYYYMM(ts) ORDER BY (ts_day, host, session) SETTINGS index_granularity = 8192

    При выборе из таблички вижу следующие записи:
    SELECT *
    FROM requests
    WHERE session = 6673288564376851156

    ┌─sign─┬──────────────────ts─┬─────ts_day─┬─host─┬─────────────session─┬─load─┬─request─┬
    │ -1 │ 2023-02-10 17:09:55 │ 2023-02-10 │ 6029 │ 6673288564376851156 │ 1 │ 0 │
    │ 1 │ 2023-02-10 17:09:55 │ 2023-02-10 │ 6029 │ 6673288564376851156 │ 1 │ 1 │
    └──────┴─────────────────────┴────────────┴──────┴─────────────────────┴──────┴─────────┴

    Количество +1 и -1 в столбце sign по одному, лог же утверждает, что c +1 две записи и -1 - 0 записей.

    Подскажите как можно диагносцировать причину, т.к. на тестовом стенде воспроизвести такую ситуацию не получается?

    Спасибо
  • https://t.me/clickhouse_ru
    Удалось запустить 21.11.3.6-alpine в докере, users.d с корнем <clickhouse> скушался и смёржился
  • https://t.me/clickhouse_ru
    Если в уже существующей инсталляции поменять в оверрайдах yandex на clickhouse, в теории может что-то пойти не так?
  • https://t.me/clickhouse_ru
    ну поменять один раз надо, а джоинить наверное не один, так что выгоднее сделать препроцессинг один раз наверное
  • https://t.me/clickhouse_ru
    а существующая инсталяция то какой версии?

    был момент когда либо <clickhouse> либо <yandex>
    но это вроде быстро починили...
  • https://t.me/clickhouse_ru
    21.11.3.6 как раз
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311261 03:56 PM, 10 Feb 2023
    судя по тестам в этой версии - меняли и все норм
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311262 03:56 PM, 10 Feb 2023
    tests: switch <yandex> to <clickhouse> · ClickHouse/ClickHouse@8143608

    ClickHouse® is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Спасибо! То, что нужно)
  • https://t.me/clickhouse_ru
    @ghetto74 #311264 04:01 PM, 10 Feb 2023
    Подскажите, пожалуйста, по поводу JOIN

    Почему такой джоин у меня не работает
    inner join users u
    on (u.user_id = t.user_id or u.no_auth_id = t.no_auth_id)
    and 1=1

    а такой работает
    inner join users u
    on (u.user_id = t.user_id and 1=1)
    or (u.no_auth_id = t.no_auth_id and 1=1)

    Unsupported JOIN ON conditions. Unexpected '(u.user_id = user_id) OR (u.no_auth_id = no_auth_id)': While processing (u.user_id = user_id) OR (u.no_auth_id = no_auth_id). (INVALID_JOIN_ON_EXPRESSION)

    version 22.8.12.45
  • https://t.me/clickhouse_ru
    потому что версия clickhouse старая
    OR в JOIN в 22.3 вроде только ввели
  • https://t.me/clickhouse_ru
    сорри, забыл приложить версию
    22.8.12.45
  • https://t.me/clickhouse_ru
    Это было бы так, если бы у меня вообще не 1 запрос не отрабатывал, но первый работает, второй нет
  • https://t.me/clickhouse_ru
    а можно текстом расшарить запросы а не картинкой?

    и подписать какой работает
    а какой нет?
  • https://t.me/clickhouse_ru
    поправил
  • https://t.me/clickhouse_ru
    попробуйте оба запроса через

    EXPLAIN SYNTAX

    пропустить и посмотреть как их клик переписывает...
  • https://t.me/clickhouse_ru
    выглядит как ошибка в парсинге JOIN

    ждем когда analyzer выйдет который такие проблемы должен починить
  • https://t.me/clickhouse_ru
    А второй запрос нельзя будет прпоусить через EXPLAIN SYNTAX, так как с ошибкой падает

    Первый он так пропускает

    ALL INNER JOIN users AS u ON ((u.user_id = user_id) AND (1 = 1)) OR ((u.no_auth_id = no_auth_id) AND (1 = 1))
  • https://t.me/clickhouse_ru
    Ну ладно, спасибо тебе большое
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311276 04:13 PM, 10 Feb 2023
    вот так работает если 1=1 убрать
  • https://t.me/clickhouse_ru
    @ghetto74 #311277 04:13 PM, 10 Feb 2023
    Да, но вот мне как раз нужен 1=1, это пример, там у меня другие переменные
  • https://t.me/clickhouse_ru
    @ghetto74 #311278 04:14 PM, 10 Feb 2023
    Спасибо еще раз!
  • https://t.me/clickhouse_ru
    нет, стоп
    1=1 это одно

    а "другие переменные" это другое
  • https://t.me/clickhouse_ru
    с другими переменными так же
  • https://t.me/clickhouse_ru
    select * from t
    inner join u on (u.user_id = t.user_id or u.no_auth_id = t.no_auth_id and 1=1);
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311282 04:17 PM, 10 Feb 2023
    вот так работает, судя по всему оно не может спарсить два выражения в скобочках
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311283 04:17 PM, 10 Feb 2023
    типа условие должно быть в скобочках непрерывным булевым выражением
  • https://t.me/clickhouse_ru
    @ghetto74 #311284 04:17 PM, 10 Feb 2023
    Угу, понял
  • https://t.me/clickhouse_ru
    хз, как предположение этот варнинг выдается в формате блока заинсерченого, может если по всем блокам - у вас все норм, а вот в блоке получилось несхождение
  • https://t.me/clickhouse_ru
  • @egorov_public #311287 04:21 PM, 10 Feb 2023
    Спасибо
  • https://t.me/clickhouse_ru
    @nadirius #311288 05:16 PM, 10 Feb 2023
    подскажите как можно перелить данные с базы на базу есть может инструменты какие
  • https://t.me/clickhouse_ru
    Из какой базы ?
  • https://t.me/clickhouse_ru
    @nadirius #311290 05:29 PM, 10 Feb 2023
    Clichouse to Clichouse
  • https://t.me/clickhouse_ru
    remote функция в Clickhouse
  • https://t.me/clickhouse_ru
    @nadirius #311292 05:30 PM, 10 Feb 2023
    Через DBeaver получилось без проблем
  • https://t.me/clickhouse_ru
    @nadirius #311293 05:30 PM, 10 Feb 2023
    Нужно было разово один рас перелить
  • https://t.me/clickhouse_ru
    @kobzevvv #311294 09:56 PM, 10 Feb 2023
    а есть какая-то аналогия квантилей для стрингов у клика?
  • https://t.me/clickhouse_ru
    @kobzevvv #311295 09:56 PM, 10 Feb 2023
    или только оконка и номер строки остается?
  • 11 February 2023 (31 messages)
  • https://t.me/clickhouse_ru
    @Dinysty #311296 03:27 AM, 11 Feb 2023
    хээээй
  • https://t.me/clickhouse_ru
    @Dinysty #311297 03:27 AM, 11 Feb 2023
    хочу познакомиться чтоб забыться уже
  • https://t.me/clickhouse_ru
    @tidydreams #311298 04:11 AM, 11 Feb 2023
    наконец-то дебивер в стрингах забылся уже
  • @ateshabaev #311299 02:27 PM, 11 Feb 2023
    Всем привет,
    Выгружаю данные в CSVWithNames и импорте через CLI. Из внешнего CH в локальный.
    Одна из колонок откуда выгружаюися данные имеет тип Decimal(18, 2) в новой таблице куда импортируются данные имеет тип более короткий - Decimal(2, 2). Типы разные потому что делаются некоторые изменения структуры таблицы для ее оптимизации.

    При импорте пишется ошибка:

    Decimal value is too big: 1 digits were read: 4e0. Expected to read decimal with scale 2 and precision 2. (ARGUMENT_OUT_OF_BOUND)

    Само по себе значение во внешней базе хранится (откуда беруться экспортируются данные) стоит как “4”.

    Может ли CH ругаться на то, что на самом деле значение должно быть как “4.00”, а не “4”?
  • https://t.me/clickhouse_ru
    Я думаю проблема в CSV, попробуйте выгружать в формате Native и вставлять
  • https://t.me/clickhouse_ru
    Непонято что имеется ввиду

    вот есть
    str1
    str1
    str2

    что на выходе надо получить?
  • https://t.me/clickhouse_ru
    если есть str00, str01 ... str99 то условно quantille(0.95)(str) = str95
  • https://t.me/clickhouse_ru
    =) а что во фразе
    Decimal value is too big

    непонятно??

    передающееся значение в целевую таблицу.. больше чем целевая таблица может принять

    Decimal(2
    и
    Decimal(18

    все таки разные вещи... уверены что у вас там в колонке нет данных которые в decimal(2 пролежут?
  • https://t.me/clickhouse_ru
    @kobzevvv #311304 02:35 PM, 11 Feb 2023
    то есть так же как с числами. выдать квантили. по идее квантилям пофигу числа это или строки им важно чтобы можно было сортирнуть
  • Само значение "Decimal value is too big” понятно, ранее для этой колонки был выбран слишком большой тип. И фактически у нас нет в ней значений больше 2,2. Я проверял значение ряда на который ругается CH и оно “4”, странно, что оно считает его слишком большим для Decimal(2,2).
  • Если кто-то столкнется с такой проблемой, она решается с добавлением слудющей опции - “--output_format_decimal_trailing_zeros=1”, нашел здесь - https://github.com/ClickHouse/ClickHouse/pull/27680/files#diff-1f401411c9a608de67995a3a759cc6bf36e850e6606f533983ab0b8da5da2ec9R632. По умолчанию она отключена
    Remove trailing zeros from Decimal serialization #15794 by alexey-milovidov · Pull Request #27680 · ClickHouse/ClickHouse

    Changelog category (leave one): Backward Incompatible Change Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Do not output trailing zeros in text rep...

  • https://t.me/clickhouse_ru
    decimal (2,2) -- это 0 знаков до запятой, на самом деле это не имеет смысла, потому что минимальное хранение это decimal32 , просто используйте Decimal32( 2)
  • https://t.me/clickhouse_ru
    блин =( percent_rank оказывается в window functions не поддерживаются =(

    https://github.com/ClickHouse/ClickHouse/issues/46300
    Support percent_rank() in WINDOW functions · Issue #46300 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Use case Calculate percentiles for non numeric data type Describe the solution you'd like WITH quantile AS ( SELECT value, percent_rank...

  • https://t.me/clickhouse_ru
    @lex_zen #311309 03:46 PM, 11 Feb 2023
    Всем привет.
    У меня очередной вопрос, касающийся AggregatingMergeTree.

    Мне требуется интегрировать оконную функцию в запрос в матвью на движке AggregatingMergeTree.

    Для того, чтобы разобраться с синтаксисом и логикой работы матвью, я составил запрос, не имеющий никакого смысла, кроме образовательного.
    Запрос на создание вьюхи выглядит так:
    CREATE MATERIALIZED VIEW agg_mv TO table_2
    AS
    SELECT id,
    timecode,
    groupArrayState(timecode) OVER (PARTITION BY id ORDER BY timecode ASC Rows BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS timecode_window
    FROM table_1;
    Ожидается, что при запросе (написан ниже) к таблице table_2 с мерджем я получу столбец timecode_window, в каждом поле которого лежит 5 значений таймкодов. Но в итоге запрос возвращает массив с таймкодами из блока строк пришедших в источник с инсертом (в моем случае 2 строки).

    Пример:
    в table_1 вставляются блоки с таймкодами:
    '2023-02-11 15:02:00', '2023-02-11 15:03:00'
    '2023-02-11 15:04:00', '2023-02-11 15:05:00'
    '2023-02-11 15:06:00', '2023-02-11 15:07:00'

    Запрос:
    SELECT id, timecode,
    groupArrayMerge(timecode_window) AS timecode_window
    FROM table_2
    GROUP BY id, timecode;

    После запроса к table_2 вижу / ожидаю увидеть:
    для '2023-02-11 15:02:00' - ['2023-02-11 15:02:00', '2023-02-11 15:03:00'] / ['2023-02-11 15:02:00', '2023-02-11 15:03:00', '2023-02-11 15:04:00']
    для '2023-02-11 15:03:00' - ['2023-02-11 15:02:00', '2023-02-11 15:03:00'] / ['2023-02-11 15:02:00', '2023-02-11 15:03:00', '2023-02-11 15:04:00', '2023-02-11 15:05:00']
    для '2023-02-11 15:04:00' - ['2023-02-11 15:04:00', '2023-02-11 15:05:00'] / ['2023-02-11 15:02:00', '2023-02-11 15:03:00', '2023-02-11 15:04:00', '2023-02-11 15:05:00', '2023-02-11 15:06:00']

    Может кто-нибудь подскажет как решить проблему?
  • Вероятнее всего, не правильное понимание decimal 😕

    Получается, если надо хранить число 4.22, 5.68, то надо Decimal(4,2)?
  • https://t.me/clickhouse_ru
    @frozzik #311311 03:57 PM, 11 Feb 2023
    3,2
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311309 #311312 03:58 PM, 11 Feb 2023
    Вы бы лучше начали с create table. Написали бы AggregateFunction и задумались куда там вставить window function (спойлер - никуда)
    Но лучше почитайте что такое MV, и почему они на самом деле Insert Trigger, а не то что вам показалось. Тут в чате уже 1000 раз давали ссылку на pdf (так и ищите) с подробным объяснением.
  • https://t.me/clickhouse_ru
    А мне не нужны оконки. Гляну может это то что мне надо
  • https://t.me/clickhouse_ru
    ну может вам topK
    подойдет... но не факт конечно
  • спасибо
  • https://t.me/clickhouse_ru
    это невозможно.
  • https://t.me/clickhouse_ru
    в этом нет особого смысла. Я предлагаю использовать Decimal32( 2) или Decimal(9,2) ,
    (3,2) имеет смысл только если вам нужна проверка при вставке, кол-ва знаков до запятой
    хранится (3,2) все равно будет в Decimal32
  • спасибо
  • https://t.me/clickhouse_ru
    @popov_art #311319 05:12 PM, 11 Feb 2023
    Tt
  • Позволю себе бампнуть вопрос разок, быть может, кто-то подскажет?
  • @tim_512 #311322 10:48 PM, 11 Feb 2023
    Добрый день, возможно глупый вопрос, если я удаляю строки из таблицы с помощью alter table, очищается ли при этом проекция этой таблицы?
  • https://t.me/clickhouse_ru
    "Проекция" в смысле materialized view?
    Тогда нет, не очистится.

    https://github.com/ClickHouse/ClickHouse/issues/13931#issuecomment-677908003

    MV does not see alter update/delete/drop/truncate.
    Materialized view has wrong data after ALTER TABLE tablename DELETE WHERE colname = 'SomeValue' · Issue #13931 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug Any materialized views on table that has had an ALTER TABLE...DELETE WHERE...run against it has the old data still visible in ...

  • materialized projection
  • @MaximFN #311325 11:33 PM, 11 Feb 2023
    Всем привет!
    Хотел узнать, если в клике что-то подобное:
    https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AnalyzingData/Queries/Subqueries/WithClauseMaterialization.htm
  • https://t.me/clickhouse_ru
    Эти должны очистится.
    Delete производится через mutations и должен их зааффектить.
    См. 43 слайд.

    https://presentations.clickhouse.com/percona2021/projections.pdf
  • https://t.me/clickhouse_ru
    Нету
  • 12 February 2023 (15 messages)
  • Спасибо
  • Спасибо
  • https://t.me/clickhouse_ru
    @dedushka_mao #311330 09:11 AM, 12 Feb 2023
    Скажите, есть ли возможность использовать в clickhouse modelPredict из catboost?
    Или только ModelEvaluate?
  • @slwpkd #311331 10:08 AM, 12 Feb 2023
    Приветствую.
    Насколько уместно использовать CH в следующем ключе, как основную базу данных:
    большое количество записей, порядка 1000 в секунду, батчить это нету возможности, или это не совсем уместно для CH?
  • @slwpkd #311332 10:08 AM, 12 Feb 2023
    Все инсерты небольшие, менее 1кб
  • https://t.me/clickhouse_ru
    если записывать это единственный ваш сценарий, то точно не уместно
  • @slwpkd ↶ Reply to #311333 #311334 10:09 AM, 12 Feb 2023
    Считывание тоже будет, но в разы меньше
  • https://t.me/clickhouse_ru
    ну возьмите постгрес
  • @slwpkd ↶ Reply to #311335 #311336 10:11 AM, 12 Feb 2023
    Какое решение более производительное для записи? Сейчас постгрес показывает слишком большую задержку при нагрузках, латенси ощутимый
  • https://t.me/clickhouse_ru
    у вас очень сферично-вакуумный запрос. может ли КХ проглотить 1000рпс на вставку? при желании можно - https://clickhouse.com/docs/en/optimize/asynchronous-inserts/
    нужно ли оно вам или стоит нормально затюнить постгрес? из вводных не понятно
  • @slwpkd ↶ Reply to #311337 #311338 10:22 AM, 12 Feb 2023
    Согласен, благодарю, лучше использовать каждый инструмент по своему прямому назначению
  • @GrouthHacker #311339 11:04 AM, 12 Feb 2023
    Подскажите как лучше построить запрос для нахождения ip которые входят в любой из диапазонов CIDR.

    Т.е. на вход даем массив типа ['1.1.1.1/8','200.2.2.2/24',....] и из таблицы с IPv4 получаем подходящие айпишники, типа 1.1.1.1, 1.2.2.2 и т.д.
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #311339 #311340 12:42 PM, 12 Feb 2023
    А насколько часто меняется массив по которому нужно искать? Если набор статичный, то можно положить их в ip_trie словарь и проверять dictHas

    https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#ip_trie
  • https://t.me/clickhouse_ru
    @vdimir #311341 12:43 PM, 12 Feb 2023
    В противном случае использовать функцию isIPAddressInRange (видимо с arrayMap или чем то таким чтобы именно массив проверить)

    https://clickhouse.com/docs/en/sql-reference/functions/ip-address-functions/#isipaddressinrange
  • О! не знал про isIPAddressInRange. Тогда вроде всё просто становится
  • 13 February 2023 (241 messages)
  • @SoprachevAK #311343 01:25 AM, 13 Feb 2023
    Здравствуйте товарищи, возник наверное банальный вопрос
    Делаю аналитику для сессионной игры, есть игровые сессии, есть события внутри сессии. Запросы нужно будет делать `агрегация X по событиям Y для сессий в которых Z` какие бест практис для таких задач?
    Я могу:
    1. дописывать информацию о сессии в каждое событие, сортировать по sessionID и хранить её как дельту, что позволит очень хорошо сжиматься
    2. хранить в отдельных таблицах и либо JOIN, либо IN в момент запроса, что вроде бы не очень хорошо для CH, ну либо так было раньше.
  • https://t.me/clickhouse_ru
    день добрый! а прямое решение в лоб уже доставляет проблемы? :) или есть подозрение что будет доставлять?
  • А какого прямое решение в лоб? Для меня оба решения достаточно очевидны, и на первых парах, скорее всего проблем не создадут, но наверняка у моей весьма типовой задачи есть типовое решение
  • https://t.me/clickhouse_ru
    я к тому, что пока нет проблемы, то и непонятно что решать,
    для начала надо MVP сделать - сохранить всё в состоянии "как есть", и выбирать по принципу "лишь бы было",
    и когда окажется что "вот в такой структуре вот такой запрос работает за 342 мс, а хочется хотя бы 70 мс",
    то будет интересно :)

    при этом необязательно ждать когда код в прод уедет и клиенты жаловаться на тормоза начнут,
    можно и самому нагрузить решение
  • Ну вообще можно конечно попробовать и так и так, но я вообще надеялся, что есть типовое решение, задача звучит очень стандартной для аналитической бд. Это как паттерны в программирование, я же использую их сразу, а не тестирую без них, чтоб потом переписывать код когда возникнет проблема
  • https://t.me/clickhouse_ru
    всё правильно, для аналитической базы типовым решением задачи `агрегация X по событиям Y для сессий в которых Z`
    будет создание таблицы T со столбцами c1, c2, ..., cN и выполнение по ним запросов типа SELECT aggX(cN) FROM T WHERE event_type = Y and Z

    нет проблемы - нет решения :)
  • То есть лучше обогащать таблицу событий столбцами связанными с сессией на момент записи, чем писать две таблицы, а потом делать join?

    Суть в том, что у каждой сессии 50+ столбцов, которые будут неизменными для всех событий в рамках этой сессии, и исходя из опыта с другими бд, очевидным решением в лоб, было бы хранить сессии отдельно, а потом джоинить их с событиями, однако в контексте CH я часто слышал, что join это зло.
  • https://t.me/clickhouse_ru
    сегодняшний ClickHouse уже вполне умеет в JOIN, вопрос только в количестве данных, CPU и размере памяти,
    но в постановке вопроса никаких цифр нет. Сколько хотя бы строк ожидается в таблицах?
  • Сессий порядка одного миллиона, событий в среднем по 200-300 на сессию

    Вообще да, новые релизы содержат интересные механизмы JOIN, так что возможно зря я его боюсь
  • https://t.me/clickhouse_ru
    звучит как "данных будет не очень много", 1 миллион сессий, по 50+ полей это грубо в пределах 1 Гб памяти,
    никаких проблем с джойном такого справочника не ожидается, если конечно на сервере не 2 Гб памяти :)

    GRACE_HASH заметно экономит память за счёт увеличения времени выполнения запроса, только с числом бакетов надо поэкспериментировать на конкретных данных
  • Понял, спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    никаких джойнов

    дальше там уже смотреть на
    https://clickhouse.com/docs/en/sql-reference/aggregate-functions/parametric-functions/#windowfunnel
    и
    https://clickhouse.com/docs/en/sql-reference/aggregate-functions/parametric-functions/#retention
    Parametric Aggregate Functions | ClickHouse Docs

    Some aggregate functions can accept not only argument columns (used for compression), but a set of parameters – constants for initialization. The syntax is two pairs of brackets instead of one. The first is for parameters, and the second is for arguments.

  • https://t.me/clickhouse_ru
    да смотрите на
    https://clickhouse.com/docs/en/sql-reference/functions/ext-dict-functions/#dictget-dictgetordefault-dictgetornull

    вместо JOIN
    Functions for Working with Dictionaries | ClickHouse Docs

    For dictionaries created with DDL queries, the dict_name parameter must be fully specified, like .. Otherwise, the current database is used.

  • @Stupidityortreason #311356 05:48 AM, 13 Feb 2023
    Доброго времени суток
    Вопрос такой, хочу из google sheets
    пробросить табличку, в табличке одна из колонок массив со строками
    Вопрос почему Массив интов без проблем загружается, а массив строк выдает ошибку
  • https://t.me/clickhouse_ru
    Пишите все стейты сессий сразу, все джойны и диктгет здесь будут лишними.
  • Там же английским по белому написано, что ожидается кавычка, а обнаруживается e
    Нужно каждую строку в кавычки обернуть
  • Cпасибо, просто с array(UInt) таких проблем не было
  • https://t.me/clickhouse_ru
    @fimcho #311361 06:25 AM, 13 Feb 2023
    Всем привет! У нас была 1 нода, сделали 3 (кластер). Хотим сделать ReplicatedMergeTree таблицы. Подскажите как лучше перенести данные с 1 ноды на 3?
  • Числа без кавычек, а строки в кавычках. Естественно, что с UInt такой проблемы нет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @zak1996lesn #311365 06:53 AM, 13 Feb 2023
    Добрый день.
    1. Являются ли ATTACH PARTITION FROM (и подобные) атомарными операциями?
    2. При запросах выше будет сохраняться дедубликация блоков данных (скопированных) (как, например, для INSERT в Replicated таблиц)? Если да, то какой настройкой её конфигурировать?
  • https://t.me/clickhouse_ru
    да атомарные, парты иммутабельные, при ATTACH PARTITION FROM парты копиюрются (через hardlink) в новуб таблицу. парты получают новые имена, но дедупликации блоков для репликации нет
    это не INSERT
  • https://t.me/clickhouse_ru
    и для репликейтед таблиц, вместо репликации сначала будет пытаться теже самые парты аттачить на других репликах
    но если там нет, то тогда уже будет replication data parts fetch
  • https://t.me/clickhouse_ru
    @navi_2 #311368 07:02 AM, 13 Feb 2023
    Всем привет! Подскажите, а можно ли в ch сделать пользователя аналогичного default, чтобы он авторизовывался с определенных хостов без пароля?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311363 #311370 07:08 AM, 13 Feb 2023
    спасибо!
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311364 #311371 07:08 AM, 13 Feb 2023
    спасибо!
  • 1.да
    2. нет insert отличается от attach
    вот примерчик https://fiddle.clickhouse.com/1676a922-55d4-4912-9d77-50f223592015
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311365 #311373 07:11 AM, 13 Feb 2023
    Я бы не назвал эту переборку сотен хардлинков атомарной операцией. Оно конечно лучше чем копирование, но до атомартности там еще достаточно далеко.
    Допустим есть таблица A и мы хотим сделать B c той-же структурой и теми-же данными. Через MV. Данные летят непрерывно.
    Что нужно сделать сначала - подключить MV или сделать ATTACH старых партов? Оба варианта дают дырку/дубликаты, надо останавливать поток, атомарности нет.
  • https://t.me/clickhouse_ru
    вы путаете атоманость с транзакционностью
    поскольку нет транзакций. то CREATE MATERIALIZED VIEW и ATTACH PARTITION FROM ... это две разные. но атомарные операции
    которые вместе транзакционностью не связаны

    под атомарностью имеется ввиду что нет конкуренции за данные между партами
    то что данные в таблицу источник идут в новые парты, это новые данные, которые потом eventually самми по себе не вставятся... и их придется попытаться отдельно как то аттачить
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311375 07:29 AM, 13 Feb 2023
    Добрый день, используется http протокол для инсертов, нагрузка небольшая, в районе 1-2к инсертов в секунду (все летит в буфер), но если в коде поменять хост с 127.0.0.1 на удаленный IP этого же сервера, то прилетают connection refused где-то 1 из 10 запросов, проблема была не проблемой пока не пришлось саму аппу распределять на второй сервер, и со второго сервера точно такие же ошибки. Даже просто курлом долбить с той же тачки по внешнему IP - 1 из 10 отлетит, в traceroute все ок
  • https://t.me/clickhouse_ru
    смотрите что у вас там с файрволами и т.п. вещами какие то настройки TCP ядра тюнили или наоборот не тюнили...
  • https://t.me/clickhouse_ru
    там просто в iptables блок на все, кроме вайтлиста, там проблема именно в рандомных вылетах, 1 на 10 запросов не проходит, никаких фаерволов нет, ядро не "тюненое"
  • https://t.me/clickhouse_ru
    а что-то есть /var/log/clickhouse-server/clickhouse-server.err.log?
  • https://t.me/clickhouse_ru
    тишина
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311380 07:40 AM, 13 Feb 2023
    ладно, возможно не в клике проблема, но именно клик отлетает от таких приколов
  • https://t.me/clickhouse_ru
    ну значит проблема не в clickhouse
    может глобально дексрипторов файловых не хватает?

    netstat -s | grep fail

    вроде есть счетчик сфейленных коннектов

    еще по умолчанию 4096 коннектов к clickhouse
    может ваши 1-2k buffer запросов коннекты не закрывают

    но тогда должны быть записи об это в логе
  • https://t.me/clickhouse_ru
    clickho+ 114241 114239 88 01:48 ? 06:12:58 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

    # more /proc/114241/limits
    Limit Soft Limit Hard Limit Units
    Max cpu time unlimited unlimited seconds
    Max file size unlimited unlimited bytes
    Max data size unlimited unlimited bytes
    Max stack size 8388608 unlimited bytes
    Max core file size 1073741824 unlimited bytes
    Max resident set unlimited unlimited bytes
    Max processes 256816 256816 processes
    Max open files 500000 500000 files
    Max locked memory 65536 65536 bytes
    Max address space unlimited unlimited bytes
    Max file locks unlimited unlimited locks
    Max pending signals 256816 256816 signals
    Max msgqueue size 819200 819200 bytes
    Max nice priority 0 0
    Max realtime priority 0 0
  • https://t.me/clickhouse_ru
    попробуйте стопнуть clickhouse и запустить iperf на 8123 порту

    iperf -s -p 8123 на сервере

    и
    iperf -c <ip тот же что используете в клиенте клика> -P 1024 -t 10 -i 1 -p 8123
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311385 08:04 AM, 13 Feb 2023
    Воспроизвел ошибку, в netstat -s | grep fail ничего нового не обнаружилось
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311386 08:05 AM, 13 Feb 2023
    там пару сотен ошибок влетело в аппу от кликхауса, но в нетстате нет такого
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311387 08:21 AM, 13 Feb 2023
    Проблема вроде бы нашлась,
    2023.02.13 09:09:06.073906 [ 120031 ] {5b12a2ff-ae6b-4c12-8793-f6f358a9470a} <Error> executeQuery: std::exception. Code: 1001, type: pqxx::data_exception, e.what() = Failure during '[END COPY]': ERROR: invalid byte sequence for encoding "UTF8": 0x00
    CONTEXT: COPY tasks_logs, line 3734: "8d8ecc26-a287-4c6b-be0b-e2176d2b670c *****\000\000\000\000 https://*****"
    (version 22.5.1.2079 (official build)) (from 65.***.**.**:34211) (in query: INSERT INTO logs.tasks_logs_psql_buffer (****) VALUES ), Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @SuperBatmanHere #311388 08:24 AM, 13 Feb 2023
    вообщем-то проблема в аппе, только почему connection refused - неизвестно, возможно не связано вообще
  • https://t.me/clickhouse_ru
    приложение на чем написано?
  • https://t.me/clickhouse_ru
    проблема не на чем, а кем, там адский треш из глобалок, непонятных конструкций, собственно "разработчик" сам не знает что делает и как оно будет работать, кода 100 строк
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311391 10:05 AM, 13 Feb 2023
    Всем привет. Кто работал с RabbitMQ Engine можете подсказать, как перенаправить в другую очередь сообщения которые не получилось заинсертить? У меня сейчас проблема, что например отправил 10 сообщений, третее из них не может заинсертиться по причине кривого пайлоада. В итоге два зашли и 8 лежат в unacked. А по факту только одно невалидное было
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    А никак - у тебя сервис уже сожрал это сообщение и не подтвердил, что обработано ОК.. Пока сервис не остановишь, так и будет висеть в унакеде. Ну и от логики сервиса ещё зависит- обычно обработкой ошибки никто не заморачивается и при остановке сервиса эти сообщения уходят в страну вечного /dev/null.
    А если заморочиться, вот тогда при возникновении ошибки сервис как раз может выплюнуть данное сообщение в другую очередь, например.
  • https://t.me/clickhouse_ru
    Я так понимаю, что только пропустить могу их с помощью настройки rabbitmq_skip_broken_messages?
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311395 10:10 AM, 13 Feb 2023
    нужно сервис написать так, что бы в любом случае все валидно прилетало в очередь да? и никаких вариантов нету?
  • https://t.me/clickhouse_ru
    Наверно кафка мощнее в этом плане
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311397 10:12 AM, 13 Feb 2023
    а x-dead-letter-exchange?
  • @6216919091 #311398 10:13 AM, 13 Feb 2023
    Приветствую,нужен партнёр на долгосрок, без доверительного управления, есть возможность удалённого формата!
  • @6007023896 #311399 10:14 AM, 13 Feb 2023
    Приветствую,нужен партнёр на долгосрок, без доверительного управления, есть возможность удалённого формата!
  • https://t.me/clickhouse_ru
    Да вы правы, ещё для остальных движков это не реализовано https://github.com/ClickHouse/ClickHouse/issues/36035
    Fallback format and table for streaming engines (Kafka, RabbitMQ, FileLog) · Issue #36035 · ClickHouse/ClickHouse

    Use case Put unparsed records into a separate table. The records will be splitted by fallback format, like LineAsString or RawBLOB.

  • https://t.me/clickhouse_ru
    мне кажется rabbitmq_queue_settings_list = 'x-dead-letter-exchange=my-dlx' может помочь я попробую
  • https://t.me/clickhouse_ru
    Чёт я не находу в документации такой настройки.. Скорее всего дело именно в сервисе.. Кролику по сути похрен, чё в себя всасывать. А вот твой сервис, скорее всего, сломался при обработке сообщения, формат которого он не знает. И так как try/catch придумали трусы, то, сломавшись, он просто уронил внутри себя тред, не подтвердив кролику, что сообщение обработано успешно...
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Yuri_Velgosha #311404 10:21 AM, 13 Feb 2023
    А, так это в клике такая настройка :) А я ищу в кролике :)
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311405 10:22 AM, 13 Feb 2023
    да я смотрю связку кролика с кликом
  • https://t.me/clickhouse_ru
    да, это оно, складыать не распаршеное обратно в кролик в другой exchange который уже можно отдельной таблицей опять же в клик засосать
  • https://t.me/clickhouse_ru
    @critskiy #311407 10:26 AM, 13 Feb 2023
    Здравствуйте, появилась проблема после обновления с 20.5.4.40 на 21.8.10.19 относительно реплицированных таблиц:

    DB::Exception: Part 202212_124650_182816_12 is covered by 202212_124650_182816_13 but should be merged into 202212_124650_199451_13. This shouldn't happen often.

    Смотрела в system.parts, есть парт 202212_124650_182816_13, и он активный, нет парта 202212_124650_182816_12. TTL у таблицы стоит dt + toIntervalDay(7), но при этом я помню, что при обновлении работу сервисов, которые производят частые вставки, не останавливали; по system.replicas нет никаких ошибок касательно zookeeper, а также replicas lag не замечено. Что делать в таком случае? Лог прикладываю, и параметры движка постараюсь тоже приложить.

    лог: https://pastebin.com/raw/xAAQJqb5
    таблица: https://pastebin.com/raw/9hxPx28z
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311364 #311408 10:28 AM, 13 Feb 2023
    сделал по примеру insert into ... select * from ...
    все, вроде как, начало отрабатывать, но в какой-то момент зависло и кол-во записей в новой таблице не увеличивается. в чем может быть причина?
  • https://t.me/clickhouse_ru
    А насколько у вас таблица большая то?
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311409 #311410 10:29 AM, 13 Feb 2023
    7 млрд записей примерно
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311411 #311412 10:31 AM, 13 Feb 2023
    спасибо!
  • https://t.me/clickhouse_ru
    @Bika_girlll #311413 10:31 AM, 13 Feb 2023
    Ищу сотрудника на постоянную работу,
    Очень много работы, поэтому нужно пару человек
    Успей написать, плачу хорошо!....☺️
  • @612200930 #311414 10:35 AM, 13 Feb 2023
    Добрый день!
    а не подскажете в чем ошибка?
    SELECT geoToH3( start_lon, start_lat, toUInt8( 1 ) )
    from geoh3_sample
    получаю ошибку
    SQL Error [1002]: ClickHouse exception, code: 1002, host: 10.128.128.2, port: 8123; Code: 44. DB::Exception: Illegal type UInt8 of argument 3 of function geoToH3. Must be UInt8. (ILLEGAL_COLUMN) (version 22.2.2.1)
    в исходной таблице 20 строк с таким датасетом
    start_lon|toTypeName(start_lon)|start_lat|toTypeName(start_lat)|
    ---------+---------------------+---------+---------------------+
    29.200306|Float64 |53.201387|Float64 |
    29.353187|Float64 |53.279714|Float64 |
    29.365974|Float64 |53.495552|Float64 |
    29.593901|Float64 | 53.80323|Float64 |
    29.684189|Float64 |53.595059|Float64 |
    29.729303|Float64 | 53.99012|Float64 |
    29.976697|Float64 |55.453727|Float64 |
    30.019346|Float64 |53.874334|Float64 |
  • https://t.me/clickhouse_ru
    попробуйте на более новой версии clickhouse

    https://github.com/ClickHouse/ClickHouse/issues/35670
    h3 hash resolution parameter rejected even through it's a UInt8 · Issue #35670 · ClickHouse/ClickHouse

    I'm running ClickHouse 22.2.2 on Ubuntu 22. I am trying to create an h3 index of the latitude and longitude fields in a table. SELECT toFloat64(lat), toFloat64(lon) FROM pas_mt WHERE toFloa...

  • @612200930 #311416 10:40 AM, 13 Feb 2023
    спасибо!
  • @prfcta1 #311417 10:41 AM, 13 Feb 2023
    как в кликхаус драйвер параметризовать название таблицы?

    table = 'my_table'
    query = """alter table %(table)s delete where Veh = %(veh)s"""

    так получаю ошибку
    Syntax error: failed at position 13 (''my_table'')
  • https://t.me/clickhouse_ru
    наверное во всех sql нельзя в prepared statements сувать названия таблиц и бд
  • спасибо
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311411 #311420 10:49 AM, 13 Feb 2023
    все равно не получается(
  • https://t.me/clickhouse_ru
    силами пайтона :)
  • ты про f строку?
  • https://t.me/clickhouse_ru
    Send Query Parameters through POST body · Issue #8842 · ClickHouse/ClickHouse

    I'd like to be able to pass Query Parameters through POST body $ curl -sS "<address>?param_id=2&param_phrase=test" -d "SELECT * FROM table W...

  • https://t.me/clickhouse_ru
    Что неправильно, в чем ошибка
  • https://t.me/clickhouse_ru
    Можно и F строкой
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311424 #311426 11:01 AM, 13 Feb 2023
    ошибки нет, делаю через clickhouse_driver. возвращается пустой список и все. в новой таблице записи не увеличиваются.

    client.execute("SELECT DISTINCT 'ALTER TABLE dwh.positions_all ATTACH PARTITION ID \'' || partition_id || '\' FROM parse_positions.positions_all;' from system.parts WHERE table = 'parse_positions.positions_all'")
  • https://t.me/clickhouse_ru
    Сделайте через clickhouse-client не мучайте себя
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311426 #311428 11:01 AM, 13 Feb 2023
    как в примере, что Вы скидывали
  • https://t.me/clickhouse_ru
    table = 'parse_positions.positions_all'
    У вас таблица и бд в одно поле записаны

    table = 'positions_all' AND database = 'parse_positions'
  • так и сделал. ишью смотрю, пока не въезжаю как это мне поможет)
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #311429 #311431 11:05 AM, 13 Feb 2023
    спасибо, поправил. тоже не помогло.
  • https://t.me/clickhouse_ru
    Ссылка к тому что есть параметры, просто нету нормальных примеров использования их
  • https://t.me/clickhouse_ru
    @ivolake #311434 12:27 PM, 13 Feb 2023
    Коллеги, добрый день
    Подскажите пожалуйста по вопросу подключения в кликхаусу
    Нужно подключить инструмент к managed CH, и сделать это можно только через sqlalchemy
    Ждет вот такую строку:
    dialect+driver://username:password@host:port/database
    Где взять ссылку я понимаю, но как правильно ввести dialect+driver?..
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ivolake #311436 12:31 PM, 13 Feb 2023
    а если managed, то драйвер какой брать?
  • https://t.me/clickhouse_ru
    @ivolake #311437 12:31 PM, 13 Feb 2023
    Пустой, или native?
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311438 12:31 PM, 13 Feb 2023
    Всем привет!
    Есть таблица "План", в которой в колонке "Период" строками записаны даты в формате '01.01.2022'. Хочу поменять тип со строк на даты.
    SELECT toDate("Период") FROM "План"
    Ругается:"Code: 6. DB::Exception: Cannot parse string '01.12.2010' as Date: syntax error at position 8 (parsed just '01.12.20'): while executing 'FUNCTION toDate(Период :: 0) -&gt; toDate(Период) Date : 1'."
  • https://t.me/clickhouse_ru
    попробуйте и так и так - это быстро проверить, я не знаю как у вас там настроено)
  • https://t.me/clickhouse_ru
    Попробуйте native
  • https://t.me/clickhouse_ru
    select parseDateTimeBestEffort('01.12.2010');
  • https://t.me/clickhouse_ru
    не получилось, но кажется, нашел в документации инструмента подсказку
  • https://t.me/clickhouse_ru
    Супер, спасибо!
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311444 12:42 PM, 13 Feb 2023
    И теперь хочу поменять тип данных колонки таким образом:
    alter table gromov."План" modify column "Период" type date toDate(parseDateTimeBestEffort("Период"))
    Syntax error: failed at position 69 ('date') (line 3, col 65): date toDate(parseDateTimeBestEffort("Период"))
  • https://t.me/clickhouse_ru
    так нельзя писать, оно по умолчанию toDate вызывает на модификацию
  • https://t.me/clickhouse_ru
    Дак вам надо update использовать
  • https://t.me/clickhouse_ru
    @konnectrl #311447 12:45 PM, 13 Feb 2023
    Либо создавать materilized колонку
  • https://t.me/clickhouse_ru
    select toDate(parseDateTimeBestEffort("Период")) FROM "План" - но именно так он и возвращает дату
  • https://t.me/clickhouse_ru
    Вам единожды надо поменять ?
  • https://t.me/clickhouse_ru
    alter table gromov."План" add column "новый_период" Date;
    alter table gromov."План" update "новый_период" = parseDateTimeBestEffort("Период") where 1=1 settings mutations_sync = 2;
    alter table gromov."План" drop column "Период";
    alter table gromov."План" rename column "новый_период" to "Период"
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Вариант выше тогда для вас, если конечно период не находится в ORDER BY
  • https://t.me/clickhouse_ru
    Ух ты! Спасибо! Только теперь ругается на Code: 48. DB::Exception: Alter of type 'ADD_COLUMN' is not supported by storage Log. (NOT_IMPLEMENTED)
  • https://t.me/clickhouse_ru
    так движок Log не подразумевает таких изменений, только MergeTree
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311455 12:51 PM, 13 Feb 2023
    понял. То есть создавать таблицу заново?
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #311456 12:52 PM, 13 Feb 2023
    ну если вам нужен Log, то да, если MergeTree, то тоже да)
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311457 12:52 PM, 13 Feb 2023
    Артём, Константин, спасибо за помощь!
  • Добрый день!
    Подскажите а какой командой можно посмотреть сколько данных легко на какую ноду?
    таблицу "роутер" создал.
    И еще вопрос как правильно обращаться к кластеру? Нужно устанавливать какой-то балансировщик чтобы раскидывать запросы на разные ноды кластера?
    Или это реализовано в драйвере указываешь весь массив нод?
  • https://t.me/clickhouse_ru
    cluster, clusterAllReplicas | ClickHouse Docs

    Allows to access all shards in an existing cluster which configured in remote_servers section without creating a Distributed table. One replica of each shard is queried.

  • Мне именно посмотреть хотелось бы как данные по шардам разделились
  • https://t.me/clickhouse_ru
    select count(), hostName()
    from cluster('{cluster}', db.table) group by hostName();
  • https://t.me/clickhouse_ru
    у вас какой язык?

    есть драйвера с клиентской балансировкой
    есть без

    ну можно через system.parts посмотреть
    SELECT hostName() h, formatReadableSize(sum(bytes_on_disk)) FROM clusterAllReplicas('your-cluster-name', system.parts) WHERE active=1 AND database=? AND table=? GROUP BY h
  • я в данный момент тестирую через дебивер потом вроде аналитики через питон будут лить.
  • https://t.me/clickhouse_ru
    ну значит конетитесь в одну ноду
    если вставляете в distributed таблицу, тогда она сама растолкает по шардам
  • я тут больше боюсь про то что нода выпала и приложение дальше не может писать. по этому интересуюсь как дальше проксить запросы.
  • https://t.me/clickhouse_ru
    @ermakmkb #311466 01:06 PM, 13 Feb 2023
    Вопрос такой - можно ли через табличную функцию postgresql сделать upsert из клика?
  • https://t.me/clickhouse_ru
    Link

    Chproxy is an HTTP proxy and load balancer for ClickHouse

  • https://t.me/clickhouse_ru
    IMHO клиентское приложение должно уметь в реконект и повторную отсылку
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #311465 #311469 01:08 PM, 13 Feb 2023
    Либо ставьте перед кластером балансер либо передавайте в датасорс список многие клиенты умеют
  • https://t.me/clickhouse_ru
    @solard #311470 01:08 PM, 13 Feb 2023
    Вставка все равно в дистрибутед
  • Ну если не будет доступна нода то нужно чтоб оно умело к другим стучаться нодам. вот по этому и интересно было нужно ли гарадать проксю или в драйвере реализовано.
  • @RychagovDenis #311472 01:35 PM, 13 Feb 2023
    Здравствуйте, подскажите пожалуйста Нормально выполняется запрос
    select count(), key
    from sessions
    group by key
    Но получаю ошибку, если пытаюсь использовать
    with
    ​ ​ ​ s as key
    select count(), s
    from sessions
    group by s
    Code: 47, e.displayText() = DB::Exception: Missing columns: 's' while processing query: … 21.8.13.6 (official build))


    https://fiddle.clickhouse.com/0c0ec89a-9588-4899-954a-796aa1f7d1c7
    ​В чем причина и как исправить?
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311473 01:39 PM, 13 Feb 2023
    Создал колонку с типом Float32. Импортирую CSV через dbeaver. В CSV формат числа представлены в формате "40974,317390988", причём разделитель между колонками - тоже запятая. Числа в таблицу попадают без десятичного разделителя. Подскажите, пожалуйста, как это можно исправить?
  • https://t.me/clickhouse_ru
    и вам не кажется это странным?

    что разделитель колонки конфликтует с разделителем десятичного знака?

    у вас невалидный CSV
    сделайте его валидным
  • https://t.me/clickhouse_ru
    так у вас нет колонки с именем s...
  • https://t.me/clickhouse_ru
    Данные представлены в таком виде
    44562,01.01.2022,81,17,15,1,"0,060689998315713","182069,99494714",Бюджет 2022 г.
    То есть запятая внутри кавычек, она не разделитель колонок, потому что находится внутри кавычек.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311472 #311477 01:47 PM, 13 Feb 2023
    With key as s. Прочитайте про синтаксис with. Там два разных варианта.
  • https://t.me/clickhouse_ru
    @daniel_byta #311478 01:48 PM, 13 Feb 2023
    Добрый день
    Подскажите, пожалуйста, как можно в логах найти селект запрос, который кладет клик на лопатки?
  • exception_code/type выставить можете
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #311480 01:52 PM, 13 Feb 2023
    Добрый день!

    Есть запрос, который возращает 2 столбца с массивами. Возможно ли создать новую таблицу, в которой колонками будут элементы первого массива, а значения колонок - элементы второго массива. Что-то вроде такого:

    insert into test select * from
    (
    select
    ['tag1', 'tag2'],
    ['value1', 'value2']
    )
    format JSONCompactEachRowWithNames

    Спасибо!
  • https://t.me/clickhouse_ru
    ну если предположить, что это должен быть долгий запрос, то начать можно с
    select * from system.query_log order by query_duration_ms desc limit 20;
  • Извините, ошибся.

    https://fiddle.clickhouse.com/6e140903-191b-4a65-a722-80cd01724108

    С подзапросом не работает.

    with

    ​ ​ ​ key as s

    select * from(

    select count(), s

    from sessions

    group by s)



    Без подзапроса ок.

    https://fiddle.clickhouse.com/6d198aa0-37f8-4e58-8327-79de7d0772c6

  • Пробовал сеттинги with крутить, но не помогает. Причем если ключом сделать кортеж, то запрос выполняется.
  • https://t.me/clickhouse_ru
    @exoze #311484 01:59 PM, 13 Feb 2023
    Привет! Вопрос по созданию таблички с интеграцией NATS.
    Есть такой жсон, что будет приходить на my_subject в NATS:
    {
    "id": 1,
    "type": "event",
    "body": {
    "elements": [
    {
    "field_a": "test1",
    "field_b": 1,
    "field_c": 2
    },
    {
    "field_a": "test2",
    "field_b": 10,
    "field_c": 20
    },
    {
    "field_a": "test3",
    "field_b": 100,
    "field_c": 200
    }
    ],
    "total": 3
    }
    }

    Есть какая то такая табличка
    CREATE TABLE events (
    field_a String,
    field_b Int64,
    field_c Int64
    ) ENGINE = NATS
    SETTINGS nats_url = 'localhost:4222',
    nats_subjects = 'my_subject',
    nats_format = 'JSON';

    Можно ли сделать так, чтобы кликхаус из жсона доставал массив ["body"]["elements"] и мапил объекты в массиве на строчки в таблице?
  • https://t.me/clickhouse_ru
    как минимум наверное можно сделать materialized view над events и парсить и вставлять что надо в таблицу целевую ["body"]["elements"]
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311482 #311486 02:08 PM, 13 Feb 2023
    А вы с какой целью выкрутили версию на 21.8? Да, там with не прокидывался вовнутрь подзапроса. Увы.
  • https://t.me/clickhouse_ru
    это валидный CSV
    но невалидное значение Float32
    оно через точку
  • https://t.me/clickhouse_ru
    Можно ли решить этот вопрос присвоением какого-то типа данных при создании таблицы? Я думал про нумерик, но там должно быть чёткое количество знаков до и после запятой.
  • Там ещё и сомнительно использование float32 для такой точности данных
  • https://t.me/clickhouse_ru
    CREATE TABLE t1(
    fieldS String,
    fieldFloat Float32 MATERIALIZED DEFAULT toFloat32(replace(fieldS,',','.'))
    ...
    )
  • https://t.me/clickhouse_ru
    но лучше научиться в исходных данных нормально запятую на точку исправлять
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311480 #311492 02:19 PM, 13 Feb 2023
    В общем случае нельзя. Гуглите выше по чату pivot. Уже много раз обсуждалось. Но в частном случае (на фиксированные имена колонок) - можно.
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю!
  • https://t.me/clickhouse_ru
    Похоже, да, лучше в исходных поменяю. Спасибо за скрипт, но что-то не заработал. Но у меня и версия октябрьская стоит.
    Exception: Syntax error: failed at position 297 ('toFloat32') (line 9, col 54): toFloat32(replace(fieldS,',','.')),
    "Сумма" Float32 MATERIALIZED DEFAULT toFloat32(replace(fieldS,',','.')),
  • https://t.me/clickhouse_ru
    я от балды писал
    чтобы вы идею поняли и пошли в доке про MATERIALIZED прочитали
  • https://t.me/clickhouse_ru
    Принял, спасибо!
  • @vmpol #311498 02:26 PM, 13 Feb 2023
    доброго времени суток. я тут обнаружил что блог на clickhouse.com больше rss не умеет. это специально или так получилось?
  • https://t.me/clickhouse_ru
    @exoze ↶ Reply to #311485 #311499 02:32 PM, 13 Feb 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311484 #311500 02:53 PM, 13 Feb 2023
    вытащить в массив, arrayJoin, JSONExtract, PIVOT
    https://fiddle.clickhouse.com/06bcc1ca-3f31-4fd4-bc3a-15e13ca9cfcb
  • https://t.me/clickhouse_ru
    @exoze ↶ Reply to #311500 #311501 03:05 PM, 13 Feb 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    теперь известно
    <Error> DynamicQueryHandler: Code: 439. DB::Exception: Cannot schedule a task: cannot allocate thread (threads=2, jobs=2): While executing ParallelFormattingOutputFormat. (CANNOT_SCHEDULE_TASK)
  • https://t.me/clickhouse_ru
    @B1ska #311503 03:50 PM, 13 Feb 2023
    Всем привет, подскажите пожалуйста. Есть таблица на движке MergeTree с ключем ORDER BY (id, post_name). Неожиданно понадобилось проапдейтить поля в post_name. Я же верно понимаю что это сделать невозможно. И нужно создавать новую таблицу, наполнять ее верными данными, потом удалять старую и ренеймить новую. Или есть какой-то другой способ?
  • Мне кажется что никаких ограничений на это быть не должно
  • https://t.me/clickhouse_ru
    @B1ska #311505 03:55 PM, 13 Feb 2023
    при попытке сделать ALTER TABLE test
    UPDATE post_name = '12345'
    WHERE id = blablabla выдает ошибку Error updating database. Cause: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, code: 1002, host: myHost, port: 8123; Code: 420. DB::Exception: Cannot UPDATE key column post_name. (CANNOT_UPDATE_COLUMN) (version 22.6.3.35 (official build)), остальные поля кроме id апдейтятся корректно
  • https://t.me/clickhouse_ru
    Есть. Нельзя менять значения, входящие в ключ (если он не отличатся от ORDER BY, то поле ТС туда войдёт): https://clickhouse.com/docs/en/sql-reference/statements/alter/update
    ALTER TABLE … UPDATE Statements | ClickHouse Docs

    Manipulates data matching the specified filtering expression. Implemented as a mutation.

  • Хм, буду знать.
  • https://t.me/clickhouse_ru
    Кроме перезаписи в другую таблицу можно ещё попробовать так: https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#choosing-a-primary-key-that-differs-from-the-sorting-key
    MergeTree | ClickHouse Docs

    The MergeTree engine and other engines of this family (*MergeTree) are the most robust ClickHouse table engines.

  • https://t.me/clickhouse_ru
    @server_pomnit #311509 03:59 PM, 13 Feb 2023
    Единственное, я не помню, можно ли добавлять в первичный ключ поля. Надо это проверитьсначала.
  • Спасибо. Так сложилось и пока мне недоступно повысить версию. Придется обходить.
  • @mminaev #311511 04:00 PM, 13 Feb 2023
    Ну тогда наверно как вариант (не знаю на сколько он проще чем с новой таблицей, тут все зависит от объема данных). Делаем

    create table temp as select * from source_table where column = 'filter_value' Engine = MergeTree() order by tuple
    Потом удаляете данные из исходной таблицы

    alter table source_table delete where ....
    Апдейтете данные в временной таблице, а потом вставляете их обратно
  • @kernel_dump #311512 04:01 PM, 13 Feb 2023
    У меня есть таблица ReplicatedSummingMergeTree, есть Distributed таблица, через которую происходят чтения/запись, есть таблица с движком Kafka, и есть MaterializedView который читает из Kafka и вставляет в таблицу Distributed (а та уже в ReplicatedSummingMergeTree).

    Возникла необходимость добавить новый столбец, который будет участвовать в группировке (в таблице ReplicatedSummingMergeTree).

    Правильно ли я понимаю, что очередность действий такая:

    1. В месте, где мы пишем в топик кафке, необходимо добавить эти самые поля.
    2. В таблице ReplicatedSummingMergeTree добавляем поля.
    3. В Distributed таблице добавляем поля.
    4. Дропаем Kafka таблицу и MaterializedView.
    5. Создаем Kafka+MaterializedView таблицы с новыми полями.

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

    И вопрос по пункту 2, если я добавляю новые поля, мне также нужно их добавить эти поля и в ORDER BY. Я так понимаю, что я могу сделать ALTER, при этом PRIMARY KEY можно сменить только через clickhouse-copier?
  • https://t.me/clickhouse_ru
    @B1ska ↶ Reply to #311511 #311513 04:02 PM, 13 Feb 2023
    записей чуть больше миллиарда строк, но колонок не много и данных в них тоже.
  • https://t.me/clickhouse_ru
    @B1ska ↶ Reply to #311508 #311514 04:02 PM, 13 Feb 2023
    Спасибо, поизучаю
  • https://t.me/clickhouse_ru
    4 пункт лучше первым
    сделать
  • https://t.me/clickhouse_ru
    @daniel_byta #311516 04:03 PM, 13 Feb 2023
    У меня такой вопрос
    Гарантирует ли клик сохранение в query_log записи о запросе со статусом ExceptionWhileProcessing, если при пороговых значениях потребления озу базу отстреливает OOM Killer?
  • https://t.me/clickhouse_ru
    настройте лимиты так чтобы не отстреливал, ООМ это не нормальная ситуация
  • Как правильно читать свойства из JSONEachRow, если полей не было а потом они появились? Я так понимаю, что нужно как-то toInt64OrDefault() на примере инта? Проблема в том, что когда я создам новый движок, в кафке могут быть ещё строки без новых полей.
  • https://t.me/clickhouse_ru
    если отстреливается по MemoryLimit только сама query
    то да, это все запишется

    если процесс сервера отстреливается по OOM
    то он просто физически не успеет system.query_log флашнуть и тогда никто ничего гарантировать не может
    более того последний парт 7.5 секунд может не флашнуться на диск
  • https://t.me/clickhouse_ru
    о каких лимитах, которые можно настроить, идет речь?
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/ru/operations/settings/query-complexity/#settings_max_memory_usage

    https://clickhouse.com/docs/ru/operations/server-configuration-parameters/settings#max_server_memory_usage
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/operations/settings/formats/#input_format_skip_unknown_fields

    только не помню можно ли это сделать в SETTTINGS в создании kafka таблицы...
  • https://t.me/clickhouse_ru
    а что будет, если клик дойдет до заданного лимита? будет дропать входящие запросы?
  • https://t.me/clickhouse_ru
    query валится с ошибкой и ошибка пишется в system.query_log
  • https://t.me/clickhouse_ru
    убивает по логике оверкомита https://clickhouse.com/docs/en/operations/settings/memory-overcommit/
  • https://t.me/clickhouse_ru
    короче кто встретится с данной проблемой - ставьте ClickHouse-Bulk и не парьте себе мозги, на локалхосте 127.0.0.1 заместо внешнего IP, на другом сервере аппы уже подымайте этот Clickhouse-Bulk и он пусть балдеет этим всем занимается
  • https://t.me/clickhouse_ru
    @daniel_byta #311527 04:19 PM, 13 Feb 2023
    спасибо вам
  • https://t.me/clickhouse_ru
    правильно ли я понимаю, что для такого поведения мне нужно только лишь ограничить max_server_memory_usage каким-то ненулевым значением?
  • https://t.me/clickhouse_ru
    @designerfromsanpaulo #311529 04:31 PM, 13 Feb 2023
    всем привет. стоит задача в том, чтобы из КХ достать значения из столбцов, имена которых до этого создались автоматически и я заранее их не знаю, но знаю, что они удовлетворяют паттерну, например hello_*, где вместо астериска может быть какая-то строка. вопрос, как мне выбрать данные из таких колонок? пришла идея, что имена колонок можно получить, сделать describe table <table_name>, обернуть это все в select и уже потом как-то там отфильтровать через where, но использовать describe как вложенный select не получается, падает с ошибкой синтаксиса:

    select name from (describe table my_table) where islike(name, "hello_%");

    ошибка:

    syntax error: failed at position 19 ('DESCRIBE')

    сталкивался кто с таки или может есть другой способ сделать select from columns by column prefix?
  • https://t.me/clickhouse_ru
    @designerfromsanpaulo #311530 04:34 PM, 13 Feb 2023
    либо, даже если у меня и получится провернуть этот трюк и получить имена колонок подходящие под паттерн, я все равно не смогу сделать что-то вроде:

    select (
    <здесь подзапрос, который вернет имена колонок>
    ) from my_table;

    ?
  • https://t.me/clickhouse_ru
    SELECT Query | ClickHouse Docs

    SELECT queries perform data retrieval. By default, the requested data is returned to the client, while in conjunction with INSERT INTO it can be forwarded to a different table.

  • https://t.me/clickhouse_ru
    благодарю. видимо эту секцию просмотрел в документации
  • https://t.me/clickhouse_ru
    Да, меньшим чем доступная память
  • https://t.me/clickhouse_ru
    @v_lyudchik #311534 04:50 PM, 13 Feb 2023
    Привет, подскажите, пожалуйста
    В таблице есть несколько set skipping indexes и есть необходимость фильтровать в запросе через ИЛИ сразу по нескольким, судя по трейсу все сводится к перебору всей таблицы, ничего не отсекается
    Концептуально возможна фильтрация по нескольким skipping index'ам? По отдельности они прекрасно работают
  • union all не сможет Вам помочь?
  • https://t.me/clickhouse_ru
    Вопрос производительности, т.к. есть свои тонкости, но union с distinct и последующей сортировкой будет в любом случае повеселее прямого перебора всех значений.
    Думал из коробки есть возможность)
    Буду смотреть детальнее, спасибо за совет
  • @2134873315 #311537 07:02 PM, 13 Feb 2023
    Привет. Если разное количество ядер у шардов и реплик, то можно ли как-то заставить дистрибьютэд селекты ходить на жирные сервера, а на более дохлые реплики только если те окажутся недоступны?
  • https://t.me/clickhouse_ru
    weight есть в remote_servers
  • https://t.me/clickhouse_ru
    Distributed Table Engine | ClickHouse Docs

    Tables with Distributed engine do not store any data of their own, but allow distributed query processing on multiple servers.

  • @2134873315 #311540 07:17 PM, 13 Feb 2023
    Спасибо, но там описан weight в контексте записи, мол если на школе стоит 2 то он получит 2/3 инсертов. Мне не нужно неравномерно размазывать щарды. Если быть более точным, то есть 4 шарда на 96 ядер и есть их реплики на 32 ядрах. Запрос в дистрибьютэд , насколько я понял, рандомно летит на каждую реплику и может приземлиться на 32 ядерную машину, что "слегка" её оверлодит. Вот я и хотел сказать, старайся читать отсюда, а если не получится, то тогда иди туда.
  • https://t.me/clickhouse_ru
    @532569924 #311541 07:20 PM, 13 Feb 2023
    Всем привет, можете кто нибудь подсказать как мне ограничить кх в потреблении оперативки, max_memory_usage и max_cache_size почему то не работают (кх запущен на докере).
    Может, нужно где то определить выполнение конфигов но я пока не могу понять где
  • https://t.me/clickhouse_ru
    Всмысле не работает ?
  • https://t.me/clickhouse_ru
    @532569924 #311543 07:22 PM, 13 Feb 2023
    По умолчанию в config.xml указан max_cache_usage на 5 гб
  • https://t.me/clickhouse_ru
    @532569924 #311544 07:22 PM, 13 Feb 2023
    Но жрет кх без перебоя под убой
  • https://t.me/clickhouse_ru
    @532569924 #311545 07:22 PM, 13 Feb 2023
    У меня 32 гб оперативки но ему мало (я выполняю скрипт по созданию таблицы)
  • https://t.me/clickhouse_ru
    @konnectrl #311546 07:23 PM, 13 Feb 2023
    всмысле вы пишите CREATE TABLE table_name () ENGINE MergeTree() и он занимает 32 гигабайта ?
  • https://t.me/clickhouse_ru
    @532569924 #311547 07:24 PM, 13 Feb 2023
    Я создаю таблицу через AS SELECT
  • https://t.me/clickhouse_ru
    Ну так это другой уже вопрос. Кликхаус не может ограничивать память выполнения
  • https://t.me/clickhouse_ru
    @konnectrl #311549 07:24 PM, 13 Feb 2023
    Вы можете попробывать заюзать max_threads = 1
  • https://t.me/clickhouse_ru
    @konnectrl #311550 07:25 PM, 13 Feb 2023
    Далее если у вас запрос с GROUP BY то вот ещё настройка max_bytes_before_external_group_by
  • https://t.me/clickhouse_ru
    тогда оно длиться будет вечно а ещё может положить ему дисковую подсистему
  • https://t.me/clickhouse_ru
    @532569924 #311552 07:26 PM, 13 Feb 2023
    Понял, группировки нет но спасибо
  • https://t.me/clickhouse_ru
    @532569924 #311553 07:26 PM, 13 Feb 2023
    Когда используется память выполнения?
  • https://t.me/clickhouse_ru
    @532569924 #311554 07:26 PM, 13 Feb 2023
    Скиньте плиз какую-нибудь статью или если влом сам потом поищу, не знал о таком
  • https://t.me/clickhouse_ru
    node_exporter стоит на ноде с кликом? чтот мне кажется там всё page cache сожрал
  • https://t.me/clickhouse_ru
    Дак вопрос выполнить запрос
  • https://t.me/clickhouse_ru
    Все запущено в одном контейнере на локалке
  • https://t.me/clickhouse_ru
    Вы можете показать запрос ?
  • https://t.me/clickhouse_ru
    Там таблица на 110 колонок
  • https://t.me/clickhouse_ru
    @konnectrl #311560 07:28 PM, 13 Feb 2023
    JOIN есть ?
  • https://t.me/clickhouse_ru
    О_о и вам контора сервер выдать не может?
  • https://t.me/clickhouse_ru
    @konnectrl #311562 07:28 PM, 13 Feb 2023
    или ORDER BY ?
  • https://t.me/clickhouse_ru
    @532569924 #311563 07:28 PM, 13 Feb 2023
    Кстати отбой, он выполнился
  • https://t.me/clickhouse_ru
    @konnectrl #311564 07:28 PM, 13 Feb 2023
    😂
  • https://t.me/clickhouse_ru
    @532569924 #311565 07:28 PM, 13 Feb 2023
    У меня локалка на 32 гб, все тянет, а кх никто пользоваться не хочет, людям проще ждать по 30 мин на постгресе)
  • https://t.me/clickhouse_ru
    поставь https://github.com/ClickHouse/clickhouse_exporter чтобы понимать что происходит
    GitHub - ClickHouse/clickhouse_exporter: This is a simple server that periodically scrapes ClickHouse stats and exports them via HTTP for Prometheus(https://prometheus.io/) consumption.

    This is a simple server that periodically scrapes ClickHouse stats and exports them via HTTP for Prometheus(https://prometheus.io/) consumption. - GitHub - ClickHouse/clickhouse_exporter: This is a...

  • https://t.me/clickhouse_ru
    Нет, там только приведение типов с текстового на нормальные
  • https://t.me/clickhouse_ru
    ORDER BY Clause | ClickHouse Docs

    The ORDER BY clause contains a list of expressions, which can each be attributed with DESC (descending) or ASC (ascending) modifier which determine the sorting direction. If the direction is not specified, ASC is assumed, so it’s usually omitted. The sorting direction applies to a single expression, not to the entire list. Example: ORDER BY Visits DESC, SearchPhrase.

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Это стандарт :)))))
  • https://t.me/clickhouse_ru
    Аа ещё и на виндоус 😐
  • https://t.me/clickhouse_ru
    @532569924 #311572 07:30 PM, 13 Feb 2023
    Минут 5 назад выполнился, все не падает
  • https://t.me/clickhouse_ru
    Это вообще гадство, бесит даже
  • https://t.me/clickhouse_ru
    @erzentd #311574 07:31 PM, 13 Feb 2023
    клик админить адовые приключения, найти дба на клик сложнее чем 500 дба на пг
  • https://t.me/clickhouse_ru
    Дак и не упадёт, wsl почистите page cache
  • https://t.me/clickhouse_ru
    Такс, вот это уже интересно
  • https://t.me/clickhouse_ru
    @532569924 #311577 07:31 PM, 13 Feb 2023
    Сейчас погуглю
  • https://t.me/clickhouse_ru
    @532569924 #311578 07:31 PM, 13 Feb 2023
    Если что я недавно в этой среде так что много не знаю
  • https://t.me/clickhouse_ru
    @532569924 #311579 07:32 PM, 13 Feb 2023
    Спс что помогаете
  • https://t.me/clickhouse_ru
    @532569924 #311580 07:32 PM, 13 Feb 2023
    Коммандос
  • https://t.me/clickhouse_ru
    @erzentd #311581 07:33 PM, 13 Feb 2023
    попроси виртуалку у конторы нормальную, считать данные на своём компе ну совсем уже жуть
  • https://t.me/clickhouse_ru
    Мы легких путей не ищем, тут и так ничего выделять не хотят, ну как и везде
  • https://t.me/clickhouse_ru
    @532569924 #311583 07:35 PM, 13 Feb 2023
    А на счет drop_caches спасибо, буду знать
  • https://t.me/clickhouse_ru
    @532569924 #311584 07:35 PM, 13 Feb 2023
    Спасиб ребят
  • @ShulcevVA #311585 08:20 PM, 13 Feb 2023
    На одной из нод
    select count() from system.replication_queue; - 2976848
    на другой очередей нет. С сетью проблем не наблюдается. Объем данных в зукипере пухнет с неестественно большой скоростью. Самое забавное, что на ноде с очередями данные приезжают с ощутимой задержкой. Нагрузки на эту ноду тоже не наблюдается.
    Пока из идей только попробовать "переподключить" ноду. Есть идеи?
    SELECT
    last_exception,
    postpone_reason
    FROM system.replication_queue
    WHERE last_exception != ''
    ORDER BY create_time DESC
    LIMIT 10

    Query id: 1a6ac2b5-9aa9-4c38-87aa-b46f6ebdf0d5

    Row 1:
    ──────
    last_exception: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2FURAL%2FMsSqlLockEvents%2Freplicas%2Fural-ch1&part=202302_30180_39373_5144&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 202302_30180_39373_5144 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x9366e7a in /usr/bin/clickhouse
    1. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x113e0319 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x113de800 in /usr/bin/clickhouse
    3. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x1175729e in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x11757b83 in /usr/bin/clickhouse
    5. DB::HTTPServerConnection::run() @ 0x117bbdb0 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x143720af in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x14373b3a in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x144a69b9 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x144a2c4a in /usr/bin/clickhouse
    10. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    11. clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 21.9.2.17 (official build)). (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER) (version 21.9.2.17 (official build))
    postpone_reason: Not executing log entry queue-0003152002 for part 202302_39346_39346_0 because it is covered by part 202302_30180_39625_5264 that is currently executing.

    Row 2:
    ──────
    last_exception: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2FURAL%2FMsSqlLockEvents%2Freplicas%2Fural-ch1&part=202302_30180_39334_5129&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 202302_30180_39334_5129 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x9366e7a in /usr/bin/clickhouse
    1. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x113e0319 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x113de800 in /usr/bin/clickhouse
    3. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x1175729e in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x11757b83 in /usr/bin/clickhouse
    5. DB::HTTPServerConnection::run() @ 0x117bbdb0 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x143720af in /usr/bin/clickhouse
  • @ShulcevVA #311586 08:31 PM, 13 Feb 2023
    Row 3:
    ──────
    last_exception: Code: 86. DB::Exception: Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2FURAL%2FMsSqlLockEvents%2Freplicas%2Fural-ch1&part=202302_30180_39332_5127&client_protocol_version=7&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232. DB::Exception: No part 202302_30180_39332_5127 in table. (NO_SUCH_DATA_PART), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x9366e7a in /usr/bin/clickhouse
    1. DB::DataPartsExchange::Service::findPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x113e0319 in /usr/bin/clickhouse
    2. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0x113de800 in /usr/bin/clickhouse
    3. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0x1175729e in /usr/bin/clickhouse
    4. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x11757b83 in /usr/bin/clickhouse
    5. DB::HTTPServerConnection::run() @ 0x117bbdb0 in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x143720af in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x14373b3a in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x144a69b9 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x144a2c4a in /usr/bin/clickhouse
    10. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    11. clone @ 0xfe9fd in /usr/lib64/libc-2.17.so
    (version 21.9.2.17 (official build)). (RECEIVED_ERROR_FROM_REMOTE_IO_SERVER) (version 21.9.2.17 (official build))
    postpone_reason: Not executing log entry queue-0003151987 for part 202302_30180_39332_5127 because it is covered by part 202302_30180_39625_5264 that is currently executing.

    Row 4:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason: Not executing log entry queue-0043742947 for part 20230213_20230213_128206_128206_0 because it is covered by part 20230213_20230213_128054_128252_10 that is currently executing.

    Row 5:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason: Not executing log entry queue-0043742928 for part 20230213_20230213_128191_128191_0 because it is covered by part 20230213_20230213_128054_128252_10 that is currently executing.

    Row 6:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason:

    Row 7:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason:

    Row 8:
    ──────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason: Not executing log entry queue-0001235094 for part 202302_18140_18439_80 because it is covered by part 202302_18140_18467_102 that is currently executing.

    Row 9:
    ───────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason:

    Row 10:
    ───────
    last_exception: Poco::Exception. Code: 1000, e.code() = 110, Timeout (version 21.9.2.17 (official build))
    postpone_reason:
    на обеих нодах пусто SELECT * FROM system.replication_queue WHERE last_exception LIKE '%No active rep' - пусто
  • 14 February 2023 (127 messages)
  • https://t.me/clickhouse_ru
    @zak1996lesn #311588 12:12 AM, 14 Feb 2023
    Добрый день!
    Как часто ClickHouse выполняет слияние в таблицах (replacing, summing и т.д.)?
  • https://t.me/clickhouse_ru
    Когда захочет. Считайте, что в произвольный момент
  • @ShulcevVA #311592 03:38 AM, 14 Feb 2023
    Кто-нибудь может подсказать?
    при ALTER TABLE xxx.xxx MODIFY SETTING replicated_max_parallel_fetches_for_host = 70;

    ошибка
    Received exception from server (version 21.9.2):
    Code: 36. DB::Exception: Received from localhost:9000. DB::Exception: Cannot alter settings, because table engine doesn't support settings changes. (BAD_ARGUMENTS)

    с некоторыми таблицами с движком ReplicatedMergeTree все ок, а с другими такая ошибка
  • https://t.me/clickhouse_ru
    Ну какая - то же периодичность (хотя бы примерная) должна, наверное, присутствовать? Что - то между 1 секундой и 10 годами =)
  • https://t.me/clickhouse_ru
    Наверняка есть какая-то логика. Знающие подскажут. Но если вам это нужно знать, то вы что-то делаете не так
  • @ShulcevVA #311595 03:48 AM, 14 Feb 2023
    Как можно таблицу перевести в режим ридонли? Ну не отключая от зукипера)
  • https://t.me/clickhouse_ru
    @Segate #311596 04:30 AM, 14 Feb 2023
    Добрый день, а есть ли где нибудь развернутая статья о ttl для таблиц? Как настраивать, когда триггерится автоматически и какие есть ограничения?
  • https://t.me/clickhouse_ru
    Раз в 4 часа клик смотрит, а не смержить мне, так же в последних версиях реализовали настройку которая говорит через сколько должны быть точно смержены данные
  • https://t.me/clickhouse_ru
    @konnectrl #311598 04:33 AM, 14 Feb 2023
    Но если вы новичок в кликхаусе, то лучше просто считать, что он сам когда смержит
  • https://t.me/clickhouse_ru
    @konnectrl #311599 04:36 AM, 14 Feb 2023
    И то клик обычно не мержит данные до 1 парта, а остаются другие парты
  • https://t.me/clickhouse_ru
    А что именно хотите сделать с помощью TTL ? Просто удалить или переместить данные ? Например про перемещение есть тут https://altinity.com/blog/2020/3/23/putting-things-where-they-belong-using-new-ttl-moves
  • https://t.me/clickhouse_ru
    @konnectrl #311601 04:38 AM, 14 Feb 2023
    Ещё можете посмотреть тут https://kb.altinity.com/altinity-kb-queries-and-syntax/ttl/
  • https://t.me/clickhouse_ru
    @Segate ↶ Reply to #311600 #311602 04:39 AM, 14 Feb 2023
    Вообще - просто удалить
  • https://t.me/clickhouse_ru
    @Segate #311603 04:39 AM, 14 Feb 2023
    Спасибо! )
  • https://t.me/clickhouse_ru
    Добрый день
    Попробовал задать max_server_memory_usage, но клик отвечает, что такой настройки не существует
    Возможно, что это депрекейтед фича?

    Received exception from server (version 22.3.17):
    Code: 115. DB::Exception: Received from rc1c-nzwzwydtcuhw3jl3.mdb.yandexcloud.net:9440. DB::Exception: Setting max_server_memory_usage is neither a builtin setting nor started with the prefix 'custom_' registered for user-defined settings: Maybe you meant ['max_memory_usage','max_guaranteed_memory_usage']. (UNKNOWN_SETTING)
  • https://t.me/clickhouse_ru
    Дак вам же написали в ошибки, max_memory_usage ....
  • https://t.me/clickhouse_ru
    Да, но max_memory_usage - это история про потребление памяти одного запроса
  • https://t.me/clickhouse_ru
    А где это написано ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311609 06:21 AM, 14 Feb 2023
    Всем привет! При создании таблицы CREATE TABLE AS ... появляется ошибка "Exception: Estimated query execution time (22.054352900795767 seconds) is too long. Maximum: 20" . Пробовал увеличить max_execution_time в отдельном файле xml в папке config.d, но похоже, это не им регулируется.
  • https://t.me/clickhouse_ru
    Попробуйте выполнить запрос через clickhouse-client
  • https://t.me/clickhouse_ru
    Спасибо Вам большое! А почему оно так работает - это особенность, или я не там прописывал?
  • https://t.me/clickhouse_ru
    У клиента которым вы подключаетесь, возможно стоит какая то настройка ограничивающие выполнение запроса
  • https://t.me/clickhouse_ru
    вообще если там internal_replication true то да там weighed round robin на запись на одну доступную реплику из шарда

    и там двумя строчками ниже, это уже на чтение приоритет

    ```
    <replica>
    <!-- Optional. Priority of the replica for load balancing (see also load_balancing setting). Default: 1 (less value has more priority). -->
    <priority>1</priority>
  • https://t.me/clickhouse_ru
    @konnectrl #311614 06:43 AM, 14 Feb 2023
    У меня есть задача создать полную копию прода в дев окружение.
    Я нашёл DDL таблиц, но они просто CREATE TABLE и получается, что при повторном запуске уже не выполнится запрос, а упадёт с ошибкой, так вот как можно добавить приписку IF NOT EXISTS к запросом на создания таблиц ?
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #311614 #311615 06:44 AM, 14 Feb 2023
    Так и добавить. Create table if not exists
  • @5298579064 #311616 06:52 AM, 14 Feb 2023
    добрый день. для SummingMergeTree для columns, не указанных в orderBy, хочу получить последнее значение после слияния - либо в порядке следования другого атрибута, либо просто - последней созданной строки, что то типа argmax по time (default now()), - не работает для SimpleAggregateFunction. не знаете - могу как то решить такую задачу? спасибо!
  • https://t.me/clickhouse_ru
    @kano1701 #311617 06:53 AM, 14 Feb 2023
    добрый день, подскажите где должна быть строка source? CREATE DICTIONARY product_favorite_dict_test (
    id UInt32,
    name String,
    is_new bool,
    pics UInt8,
    kind_id UInt32,
    subject_id UInt32,
    subject_parent_id UInt32,
    seller_id UInt32,
    brand_id UInt32
    )
    PRIMARY KEY id
    SOURCE (CLICKHOUSE(
    host '0'
    port 9000
    user 'default'
    password '0'
    db ''
    table product_favorite secure 1
    ))
    LAYOUT(HASHED())
    SOURCE(ODBC(invalidate_query 'SELECT updated_at FROM product_favorite where updated_at > unix_timestamp(now() - interval 30 second)'))
    LIFETIME(30);
  • https://t.me/clickhouse_ru
    @runiverse_hiker #311618 06:55 AM, 14 Feb 2023
    Добрый день. Подскажите пожалуйста - есть ли возможность обойти тот факт что в словарях Date32 не поддерживается?
  • @yaepalis #311619 06:59 AM, 14 Feb 2023
    Добрый день, подскажите пожалуйста, можно ли на одну таблицу, вычитывающую данные из кафки, повестить две MATERIALIZED VIEW, которые будут переносить данные в две отдельные конечные таблицы?
  • https://t.me/clickhouse_ru
    @zagirnur #311622 07:19 AM, 14 Feb 2023
    Для хранения фиксированных данных, например переводы статусов на русский - я использую пару MergeTree+Dictionary и читаю через dictGet

    Можно ли такую конструкцию переделать на  Join? Подходит ли Join для постоянного хранения? это просто справочные данные (50-100 записей)
  • Есть движок join, можете его использовать
  • https://t.me/clickhouse_ru
    это настройка конфига сервера
  • https://t.me/clickhouse_ru
    внутри ODBC( .. )

    в котором вы только invalidate_query вставили
    только не source
    а connection_string

    https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#odbc
    Dictionary Sources | ClickHouse Docs

    A dictionary can be connected to ClickHouse from many different sources.

  • https://t.me/clickhouse_ru
    Спсибо!)👍
  • https://t.me/clickhouse_ru
    это запрос на обновление словаря, здесь указано в source, но выдаёт ошибки по синтаксису https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-lifetime/
  • https://t.me/clickhouse_ru
    дак у вас два SOURCE

    зачем тогда второй после LAYOUT ?
  • https://t.me/clickhouse_ru
    я и в первый вкладывал, тоже самое
  • https://t.me/clickhouse_ru
    я не знаю как объяснить, SOURCE один на словарь...
    двух их быть не может

    доку перечитайте
    https://clickhouse.com/docs/en/sql-reference/statements/create/dictionary
    CREATE DICTIONARY | ClickHouse Docs

    Creates a new dictionary with given structure, source, layout and lifetime.

  • https://t.me/clickhouse_ru
    @AbstractiveNord #311631 07:40 AM, 14 Feb 2023
    Clickhouse поддерживает/есть в планах поддержка вставки из fluvio?
  • https://t.me/clickhouse_ru
    CREATE DICTIONARY product_favorite_dict_test (
    id UInt32,
    name String,
    is_new bool,
    pics UInt8,
    kind_id UInt32,
    subject_id UInt32,
    subject_parent_id UInt32,
    seller_id UInt32,
    brand_id UInt32
    )
    PRIMARY KEY id
    SOURCE (CLICKHOUSE(
    host ''
    port 9000
    user ''
    password ''
    db ''
    table product_favorite secure 1
    )
    ODBC(invalidate_query 'SELECT updated_at FROM product_favorite where updated_at > unix_timestamp(now() - interval 30 second)')
    )
    LAYOUT(HASHED())
    LIFETIME(30);
  • https://t.me/clickhouse_ru
    софт новый, планов особых ни у кого не было
    Либы нет по C++ только Rust API

    так что пока он не научится из себя Kafka изображать как RedPanda врятли что-то появится

    но никто вам не мешает поднять консюмер на любом языке какой вам удобнее и буфферизировать
    а потом вставлять в clickhouse Батчем...

    или по одному но в буффер таблицу
  • https://t.me/clickhouse_ru
    ок. такое ощущение что вы реально не понимаете

    вот вы описали внутри SOURCE

    CLICKHOUSE(...)
    и
    ODBC(...)

    и ?
    как это должен интерпретировать сервер?

    откуда ему данные брать? из клика или из ODBC?
  • https://t.me/clickhouse_ru
    Вы данные хотите брать из Clickhouse или из какой то другой базы ?
  • https://t.me/clickhouse_ru
    теперь понял о чем речь, словарь в клик, а таблица в mysql переделал запрос CREATE DICTIONARY product_favorite_dict_test (
    id UInt32,
    name String,
    is_new bool,
    pics UInt8,
    kind_id UInt32,
    subject_id UInt32,
    subject_parent_id UInt32,
    seller_id UInt32,
    brand_id UInt32
    )
    PRIMARY KEY id
    SOURCE (MYSQL(
    host ''
    port 0
    user ''
    password ''
    db ''
    table product_favorite,
    invalidate_query 'SELECT updated_at FROM product_favorite where updated_at > unix_timestamp(now() - interval 30 second)'))
    LAYOUT(COMPLEX_KEY_HASHED())
    LIFETIME(30);
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources#mysql , надеюсь вы точно понимаете что такое invalidate_query
    Dictionary Sources | ClickHouse Docs

    A dictionary can be connected to ClickHouse from many different sources.

  • https://t.me/clickhouse_ru
    @kano1701 #311639 07:57 AM, 14 Feb 2023
    invalidate_query – Запрос для проверки состояния словаря. Необязательный параметр. Подробнее читайте в разделе Обновление словарей. это как то иначе на деле?
  • https://t.me/clickhouse_ru
    @krivtsov_artem #311640 08:08 AM, 14 Feb 2023
    добрый день, подскажите пожалуйста как решить такую проблему -
    есть таблица фактов ~80 столбцов неизменяемых данных, но пара из них - изменяемые и актуальные данные нужны сразу после обновления этих столбцов
    читал эту статью https://altinity.com/blog/2020/4/14/handling-real-time-updates-in-clickhouse, но мб есть более актуальные / другие способы решения?
  • https://t.me/clickhouse_ru
    ReplacingMergeTree + SELECT .. FINAL
    ничего другого тут не сделаешь...
    все идет от того что куски данных в кликхаус, иммутабельные

    еще и остальные 78 столбцов вам где то хранить надо чтобы новая версия строки из этих 78 неизменяемых столбцов старые данные брала...
  • https://t.me/clickhouse_ru
    @runiverse_hiker #311642 08:14 AM, 14 Feb 2023
    Добрый день. Подскажите пожалуйста - есть ли возможность обойти тот факт что в словарях Date32 не поддерживается?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    обновитесь до 22.8
    https://github.com/ClickHouse/ClickHouse/commit/97b0a343f88808cba440bae07cb06398608370b3
  • https://t.me/clickhouse_ru
    Понял, спасибо 👍
  • https://t.me/clickhouse_ru
    @skaradub #311646 08:32 AM, 14 Feb 2023
    Привет! если надо select values (сколько-то константных строк) - это только через union all делать? Не вижу что-то других вариантов.
  • SELECT arrayJoin(['1', '2', '3']) as constr_s
  • https://t.me/clickhouse_ru
    Спасибо, Антон, это будет лучше по производительности union all?
  • Сомневаюсь, что будет принципиальная разница
  • https://t.me/clickhouse_ru
    Понял. спасибо
  • https://t.me/clickhouse_ru
    @s_nikolajus #311651 10:50 AM, 14 Feb 2023
    Привет, обновились на 22.12 и в логе clickhouse-server.log появилось много сообщений подобного плана:
    {} <Information> table_name (5cbfd2bb-e289-434c-b4c5-8f98b631dc14) (Fetcher): Disk for fetch is not provided, getting disk from reservation default with type local

    это что-то новое?
  • https://t.me/clickhouse_ru
    fetcher это репликация
    она пытается слить партиции
    c другой ноды

    тут немного непонятно что за диск имеется ввиду

    https://github.com/ClickHouse/ClickHouse/blob/0b55021c68ea7f40887cb1a19de2c105edd9946c/src/Storages/MergeTree/DataPartsExchange.cpp#L525-L533

    у вас SELECT hostName(), * FROM clusterAllReplicas('your-cluster',system.disks) FORMAT Vertical одинаковые на всех нодах кластера?

    а то может на одной ноде одни диски. на другой другие...

    ?
    ClickHouse/DataPartsExchange.cpp at 0b55021c68ea7f40887cb1a19de2c105edd9946c · ClickHouse/ClickHouse

    ClickHouse® is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Спасибо, да, одинаковые, может что-то отсюда? https://github.com/ClickHouse/ClickHouse/pull/41889
    Reduce verbosity of part fetcher by Algunenano · Pull Request #41889 · ClickHouse/ClickHouse

    Changelog category (leave one): Not for changelog (changelog entry is not required) Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): ... Information ...

  • https://t.me/clickhouse_ru
    @chAlx314 #311654 11:20 AM, 14 Feb 2023
    Случайно залогинился в облачный Клик из России, перекинуло сюда:

    ClickHouse Cloud is currently not available in your country

    Хз, что это значит (они будут решать, откуда нашим админам работать?), но симптоматично :)
  • https://t.me/clickhouse_ru
    ну этот пулл реквест закрыт, LOG_INFO остается, можно автору pull request написать в комменты спросить в чем суть этого логирования...

    по коду какой то парметр в функцию фетчинга не передается, откуда этот DiskPtr берется и почему не передается, быстро понять я не смог
  • https://t.me/clickhouse_ru
    У меня тоже самое в логи пишется. В строках free_space на 10 гб отличается
  • https://t.me/clickhouse_ru
    free_space не должен влиять, сами диски по идее должны быть одинаковые...
  • https://t.me/clickhouse_ru
    Да, они идентичные
  • https://t.me/clickhouse_ru
    но их несколько?
  • https://t.me/clickhouse_ru
    по одному на ноду
  • https://t.me/clickhouse_ru
    @den09 #311661 11:25 AM, 14 Feb 2023
    добрый день, подскажите, изменить ключ партиционирования я могу только путем создания новой таблицы с новым ключом партиционирования, заапдейтить же в текущей таблице его не получится ?
  • Да
  • @vmakulov #311663 11:28 AM, 14 Feb 2023
    Since ALTER query does not allow the partition alteration, the possible way is to create a new table and to move your data

    https://github.com/ClickHouse/ClickHouse/issues/15123#issuecomment-696705769
    ALTER | ClickHouse Docs

    Most ALTER TABLE queries modify table settings or data:

  • https://t.me/clickhouse_ru
    @den09 #311664 11:31 AM, 14 Feb 2023
    спасибо
  • https://t.me/clickhouse_ru
    @picachulovesyou #311665 11:51 AM, 14 Feb 2023
    Всем привет! Подскажите, как можно дать грант на селект роли/пользователю на вьюху, но чтобы при этом не давать грант на таблицу которая там используется?
  • https://t.me/clickhouse_ru
    @timson81 #311666 12:13 PM, 14 Feb 2023
    Добрый день! Пытаюсь запустить clickhouse через docker-compose, на ubuntu в aws, и по логам вижу что он рестартиться. кусок compose, и логи по ссылке. Может кто сталкивался? https://pastila.nl/?00051cbd/6c86d31853abc28b4f4a2589828f509c
  • https://t.me/clickhouse_ru
    @kobzevvv #311667 12:14 PM, 14 Feb 2023
    чтобы два клика связывать какое лучше решение? обычный ремоут? или есть для клика специфичная тема которая лучше быстрее меньше жрет?
  • https://t.me/clickhouse_ru
    или Distributed, или репликация. Но remote() это не про быстрее и меньше жрет, это про подключения
  • https://t.me/clickhouse_ru
    Нам таблицу где где-то миллион строк в день с одного клика в другой прокинуть. Нет задачи реалиайм. Используем remote. Думаем что лучше
  • https://t.me/clickhouse_ru
    @ivolake #311670 12:40 PM, 14 Feb 2023
    Коллеги, здравствуйте
    Кто-нибудь имел дело с подключением Apache SuperSet к ClickHouse?
    Помогите пожалуйста, а то драйвер установил вроде (как тут сказано), а все равно пишет ошибку ERROR: Could not load database driver: BaseEngineSpec.
  • https://t.me/clickhouse_ru
    а зачем прокидывать, и почему два клика?
  • https://t.me/clickhouse_ru
    Ну один продавая база. Второй аналитика. Прокидывть что-бы модели разные сверху строить
  • https://t.me/clickhouse_ru
    Почему нельзя было сделать это все на одной машине в одном инстансе кликхауса?
  • https://t.me/clickhouse_ru
    Потому что разные требования к стабильности. Например аналитика использует данные из Salesforce и там может запросто колонка пропасть и билд упадёт. И куча всякого такого. Где нет требований продакшн стабильности.

    А прод где-то в 10к раз раз больше по кол-ву данных и нагрузкам
  • https://t.me/clickhouse_ru
    Разницы в что меньше что жрет, - не особо эээ... Конечный вопрос. Есть разница в том, как постоянно у вас нагружена изначальная таблица, из которой вы забираете. Если вы постоянно вставляете в изначальную, - MV + Distributed на конечную, если нет, - можно remote раз в день
  • https://t.me/clickhouse_ru
    @elise_azure #311676 12:53 PM, 14 Feb 2023
    привет!
    подскажите, плз, если кто сталкивался
    есть Null таблица, в которую данные наливаются некоторым сервисом
    в эту таблицу смотрит MergeTree вьюха, с ней все ок
    пытаюсь привязать еще одну вьюху к этой же Null таблице, но туда попадает какое-то кол-во записей и потом записи перестают попадать в новую вьюху

    причем если вторую вьюху направить смотреть в .inner таблицу первой вьюхи, то все ок работает, но это какой-то костыль, кажется, что должно работать и из Null таблицы
  • https://t.me/clickhouse_ru
    по логам там оно обрывается в середине
    2023.02.10 17:11:24.253368 [ 51 ] {} <Information> Application: Integrity check of the executable suc

    рестарта не видно
    ну варнинги про listen еще видны

    docker-compose.yaml можно еще куда то выложить
  • https://t.me/clickhouse_ru
    да, вроде бы должно работать из Null Таблицы тем более что вы говорите что у вас работает...

    а в логах ничего нет случайно? может быть просто SELECT для Matview начинает ошибки какие выдавать?
  • https://t.me/clickhouse_ru
    в логи пока не лазили
    но такой же селект из .inner таблицы соседней вьюшки прекрасно отрабатывает, а та вьюшка из Null таблицы читает без преобразований
  • https://t.me/clickhouse_ru
    я обновил пастилу, добавил еще логов где они обрываются, а кусок docker-compose в самом начале пастилы вставил. Проблема проявляется только на машинке у заказчика )
  • https://t.me/clickhouse_ru
    db_clickhouse_1 | ClickHouse init process failed.

    попробуйте закоментировать create_schema.sql
    # - ./clickhouse/create_ch_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql

    если после этого тоже не стартует, то тогда сильно странно, потому что лог основной обрывается ...
  • @kirik_sec #311682 01:20 PM, 14 Feb 2023
    Всем привет
    у меня есть паркет, где одно из полей, вложенная структура. Array of tuples. И все поля в этом тупле именованные.
    Но когда я создаю над этим паркетом таблицу в кликхаусе - кликхаус во вложенных структурах не видит имен полей и создает их с именами attr1, attr2, attr3

    создаю таблицу в КХ так

    create table table1
    from engine s3('moi_parket')

    В DDL этой таблицы получаю вложенную структуру
    hits Array(Tuple(Nullable(String),
    Nullable(Int64),
    Nullable(Int64),
    Nullable(Int64),
    Nullable(Int64),
    Nullable(Int64),
    Nullable(Int64)))

    Хотя внутри Hits в паркете у полей есть имена, но в КХ они пропадают. Можно ли сделать, чтобы КХ их определял?
  • https://t.me/clickhouse_ru
    можно структуру таблицы самому определить без интроспекции...

    видимо интроспекция работает не так как вы ожидали
  • если я создаю таблицу с именами вручную
    hits Array(Tuple(field_name1 Nullable(String),
    field_name2 Nullable(Int64),
    field_name3 Nullable(Int64) ..

    КХ пишет, что не видит таких имён
    Column 'hits.field_name1' is not presented in input data.: While executing ParquetBlockInputFormat
  • https://t.me/clickhouse_ru
    а версия clickhouse какая?
  • @kirik_sec #311686 01:28 PM, 14 Feb 2023
    22.10.7.13
  • @kirik_sec #311687 01:30 PM, 14 Feb 2023
    В Вертике например делаю авто инфер схемы точно так же, и он все вложенные имена видит.
  • https://t.me/clickhouse_ru
    коментировал эту строчку и после этого стартовал, но странно что схема рабочая, на другом компьютере работает.
  • https://t.me/clickhouse_ru
    версии clickhouse например разные...
    вообще там где то в логе server.err.log должно быть в чем ошибка...

    стопните контейнер
    сделайте truncate -s 0 ./clickhouse/logs/*.log на хосте
    раскоментарьте схему

    и еще раз выложите clickhouse-server.err.log целиком
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311669 #311690 02:07 PM, 14 Feb 2023
    миллион строк - это очень мало, это один батч. Если remote работает, то и хорошо - взял/положил. Другое дело, что сама по себе идея вот этой суточной переливки - так себе.
    А почему не хотите сделать реплику, выделенную для аналитики? Данные сами приедут через реплицированную таблицу, ничего делать не надо.
  • @tall13 #311691 03:29 PM, 14 Feb 2023
    Добрый день!
    Есть 6 серверов ClickHouse 22.2.2.1. Настроен ssl.
    При всплеске нагрузки увеличивается число подключений и не уменьшается примерно в течение часа. С этим можно что-то сделать?
  • https://t.me/clickhouse_ru
    Для начала обновиться хотя бы до 22.3
  • @tall13 #311693 03:50 PM, 14 Feb 2023
    А если не поможет?))
  • https://t.me/clickhouse_ru
    @Segate #311694 04:36 PM, 14 Feb 2023
    Вот пример плана по одному из студентов
  • https://t.me/clickhouse_ru
    @Segate #311695 04:37 PM, 14 Feb 2023
    Screenshot (14 февр. 2023 г. 22:36:21)
  • https://t.me/clickhouse_ru
    А если не поможет писать issue на гитхабе... но 22.2 это сломанная версия ....
  • @tall13 #311697 04:45 PM, 14 Feb 2023
    Ок, спасибо, попробуем
  • @FederationR #311698 05:28 PM, 14 Feb 2023
    /*+////////////////////////// CB/////////////////////////////
  • @FederationR #311699 05:28 PM, 14 Feb 2023
    ////////////+///////
  • @FederationR #311700 05:28 PM, 14 Feb 2023
    /stat@combot
  • @FederationR #311702 05:28 PM, 14 Feb 2023
    ///
  • @FederationR #311703 05:28 PM, 14 Feb 2023
    /++++++++
  • @FederationR #311704 05:28 PM, 14 Feb 2023
    /////////////////////
  • @FederationR #311705 05:28 PM, 14 Feb 2023
    +*/-+++++++++++
  • @FederationR #311706 05:28 PM, 14 Feb 2023
    /stat@combot
  • @FederationR #311708 05:28 PM, 14 Feb 2023
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #311709 b o t 05:28 PM, 14 Feb 2023
    Total messages: 311708
  • https://t.me/clickhouse_ru
    @MrPelmeshik #311710 05:28 PM, 14 Feb 2023
    Добрый вечер! Подскажите, пожалуйста, есть какая-то альтернатива groupArray, но чтобы NULL значения тоже учитывались
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #311711 05:31 PM, 14 Feb 2023
    Всем привет! Есть таблица с именами людей и пустыми колонками: A, B и C. Хочу в колонки A, B и C записать результаты джоинов по людям из другой таблицы. Пробовал через ALTER TABLE UPDATE, но ругается:
    https://fiddle.clickhouse.com/d4571e63-3218-445c-9d76-701ab4a347b7
  • https://t.me/clickhouse_ru
    Is groupArray order guaranteed across columns? · Issue #43340 · ClickHouse/ClickHouse

    Hello, https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/grouparray/ mentions Values can be added to the array in any (indeterminate) order If I have a table like this: CRE...

  • https://t.me/clickhouse_ru
    Спасибо большое, пойду тестировать!)
  • https://t.me/clickhouse_ru
    ALTER TABLE sales
    UPDATE A =
    (SELECT scenarios.sales from
    sales
    LEFT JOIN scenarios on
    sales.name = scenarios.name
    WHERE scenarios.scenario = 'A');

    так у вас этот запрос несколько строк возвращает, так нельзя, непонятно какое значение A присваивать из этих строк
  • @apono #311715 08:26 PM, 14 Feb 2023
    Подскажите, dictionary без использования named_collections из локальной таблицы можно наполнять только при пустом пароле на пользователя default? Постоянно Authentication failed при попытке заполнить.
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #311715 #311717 09:13 PM, 14 Feb 2023
    Вы бы рассказали какой у этого словаря SOURCE, а лучше привели DDL.
    Для ClickHouse это выглядит так:
    SOURCE(CLICKHOUSE(HOST 'node4' PORT 9000 USER 'default' PASSWORD 'default' TABLE 'xml_dictionary_table' DB 'test'))
    Если пароли помимо default не работают, это баг, конечно. Но поверить в такое довольно сложно.
  • @apono ↶ Reply to #311717 #311718 09:29 PM, 14 Feb 2023
    SOURCE(CLICKHOUSE(TABLE ‘Table1’))
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #311718 #311719 09:30 PM, 14 Feb 2023
    Ну так укажите пользователя и пароль. Я привел пример выше.
  • @apono #311720 09:30 PM, 14 Feb 2023
    Даже если заполняться будет из той же БД?
  • @ateshabaev #311721 09:30 PM, 14 Feb 2023
    Всем привет,
    Кто-нибудь знает как решить проблему с выборкой данных в DBeaver/Datagrip из AggregatingMergeTree таблицы?
    Всегда падает на Unknown aggregate function: groupUniqArrayArray. Если делать такой же запрос через clickhouse-client, то все ок.
    Выглядит так, будто бы драйвер не поддерживает некоторые возможности CH
  • @apono #311722 09:30 PM, 14 Feb 2023
    С паролем сработало. Спасибо!
  • 15 February 2023 (104 messages)
  • https://t.me/clickhouse_ru
    @picachulovesyou #311723 04:09 AM, 15 Feb 2023
    Всем привет! Подскажите, как можно дать грант на селект роли/пользователю на вьюху, но при этом не давать грант на таблицу которая там используется?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311723 #311724 05:16 AM, 15 Feb 2023
    Нельзя. view - это что-то типа инклуда/макроса, просто подставляет код в виде подзапроса.
  • https://t.me/clickhouse_ru
    Ну Да, просто в некоторых базах можно такое провернуть(
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    на графике не видно что за connections по какому протоколу

    ну и запустите
    `netstat -tn 2>/dev/null | awk '/^tcp/ {split($4,a,":");if(a[2] != "") count[a[2]]++} END {for (p
    ort in count) print "Incoming TCP connections on port " port ": " count[port]}'`

    посмотрите на какие локальные порты трафик приходит

    может это просто interserver connection для репликации или distributed inserts
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #311725 #311729 06:10 AM, 15 Feb 2023
    можно сделать materialized view. Это конечно совсем иное и со своими нюансами, но может помочь в этом случае
  • https://t.me/clickhouse_ru
    Посмотрю, спасибо!
  • @1063161973 #311732 06:23 AM, 15 Feb 2023
    Добрый день.
    Есть ли в ClickHouse аналог функции BINARY_CHECKSUM из T-SQL, который возвращает такой же результат ?
    Чтобы можно было быстро сравнивать данные
    в таблицах ClickHouse и MS SQL
  • https://t.me/clickhouse_ru
    есть обычные хеш функции в T-SQL

    https://learn.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql?view=sql-server-ver16

    и соответсвенно есть
    https://clickhouse.com/docs/en/sql-reference/functions/hash-functions/#sha1-sha224-sha256-sha512
    и
    https://clickhouse.com/docs/en/sql-reference/functions/hash-functions/#hash_functions-md5
  • sha256 использовал уже для сравнения в SQL и КХ, пришлось через оконные функции делать, это очень медленно.
    Если нужно сравнить таблицы КХ, то groupBitXor, она супер быстро работает с 64-битными функциями. Распараллеливает на все ядра процессоров.
    Нашел аналог в T-SQL: CHECKSUM_AGG и BINARY_CHECKSUM, тоже очень быстро можно сравнить таблицы в SQL запросом типа:
    SELECT
    [_Fld],
    CHECKSUM_AGG(BINARY_CHECKSUM(*))
    FROM
    ...
    GROUP BY
    [_Fld]
    Но сравнить результаты в КХ и SQL так нельзя, они разные
  • https://t.me/clickhouse_ru
    для BINARY_CHECKSUM нет опубликованного алгоритма по которому эта чексумма считается
    я по крайней мере сходу загуглить не смог...
  • @110248354 #311736 06:45 AM, 15 Feb 2023
    https://fiddle.clickhouse.com/aba3557d-f373-4f43-9325-c932c90dfc61 Добрый день. подскажите, как корректно пронумеровать строки внутри каждого окна, у меня партиция как будто продолжилась на все элементы
  • К тому же BINARY_CHECKSUM 32-битное целое возвращает. Спросил, вдруг существует еще какой-то способ быстрого сравнения данных SQL и КХ
  • @612200930 #311738 06:50 AM, 15 Feb 2023
    Добрый день!
    Можно ли пользоваться Live View ? В документации давно уже помечено как Experimental т.е. есть какие то ограничения где про них узнать? Есть ли планы по переводу фичи в Production ?
    CREATE VIEW | ClickHouse Docs

    Creates a new view. Views can be normal, materialized, live, and window (live view and window view are experimental features).

  • https://t.me/clickhouse_ru
    выгрузить в CSV
    https://stackoverflow.com/questions/425379/how-to-export-data-as-csv-format-from-sql-server-using-sqlcmd
    https://clickhouse.com/docs/en/sql-reference/formats/#csv

    и посчитать контрольные суммы файлов

    только выгружать надо чтобы был одинаковый ORDER BY
    и одинаковый формат. чтобы кавычки там всякие и десятичные знаки совпадали
    How to export data as CSV format from SQL Server using sqlcmd?

    I can quite easily dump data into a text file such as: sqlcmd -S myServer -d myDB -E -Q "select col1, col2, col3 from SomeTable" -o "MyData.txt" However, I have looked at the help files for

  • https://t.me/clickhouse_ru
    @o_basmanov #311740 06:52 AM, 15 Feb 2023
    Подскажите как правильно тип поля объявить. Заливаю json. в нем есть поле tags в котором список значений. Но может быть пустым.
    т.е варианты:
    "tags": []
    "tags": [{"id": "string_value", "name": "string_value"}]
    объявил поле так
    tags Array(Tuple(id Nullable(String), name Nullable(String)))
    но что то на пустом списке не взлетает
    DB::Exception: Unknown field found while parsing JSONEachRow format: tags: (at row 1)
  • непонятно задача описана, окно это и есть группировка с сортировкой, у вас в примере закомментирован неясный результат. подробнее опишите. ну либо я не понял
  • Нужно, чтобы были выбраны первые строки, для каждого блока с единым WID, но их может быть несколько и они могут быть расположены не по порядку (сортировка по времени), в таком случае считаем его новым блоком (окном) и нумеруем строки снова. Сейчас при появлении того же WID не подряд, нумерация строк продолжается.
  • Если подстраиваться под ваше итоговое видение, то у вас блок должен быть не WID скорее всего, а WID+что-то еще, чтобы получить несколько разных значений ts для WID
  • https://t.me/clickhouse_ru
    Вы задачу не правильно решаете, вам надо из подряд идущих одинаковых WID оставить первый ?
  • https://t.me/clickhouse_ru
    @BMF_RU #311746 07:25 AM, 15 Feb 2023
    Коллеги, приветствую!
    Как я понял так нельзя:

    UPDATE
    TABLE_1 T1
    SET
    T1.FIELD_1 = (SELECT T2.FIELD_1 FROM TABLE_2 T2 WHERE T2.FIELD_2 = T1.FIELD_2)
    WHERE
    T1.FIELD_3 IN (1, 2, 3)

    как-то можно такую задачу по другому решить?
  • Да
  • https://t.me/clickhouse_ru
    То есть вы реально думаете что 7500 участников из Yandex'a ?))) Не удивлён почему произошёл слив :)))
  • https://t.me/clickhouse_ru
    @MrPelmeshik #311749 07:30 AM, 15 Feb 2023
    Добрый день!
  • https://t.me/clickhouse_ru
    @MrPelmeshik #311750 07:33 AM, 15 Feb 2023
    При инсерте в таблицу КХ начал выдавать ошибку Cannot open file /var/lib/clickhouse/store/c11/.../field.null.mrk2, errno: 1, strerror: Operation not permitted.

    Даже не знаю в какую сторону копать. Вроде ничего не меняли в структуре таблицы. Ошибку выдает на поля которые не перечислены в insert
  • @vmakulov #311751 07:42 AM, 15 Feb 2023
    проблема не в полях а в правах на файл
  • @vpvha #311752 07:53 AM, 15 Feb 2023
    коллеги, привет, кто-нибудь пробовал из ГП создавать внешние таблицы в клик с использованием SSL? или мб кто-то сталкивался с ошибкой ServerErrorHandler: Code: 210. DB::NetException: SSL Exception: error:1000009c:SSL routines:OPENSSL_internal:HTTP_REQUEST ?
  • нужно из подряд идущих одинаковых WID оставить первый
  • https://t.me/clickhouse_ru
    Нашел изменения. В конфиг файле users.xml добавили настройку join_use_nulls, может из-за этого с правами что-то случилось:
    <profiles>
    <default>
    ...

    <join_use_nulls>1</join_use_null>
    </default>
    ...
    </profiles>
  • https://t.me/clickhouse_ru
    у меня получается сам массив может быть пустой, а не поля в нем с пустыми значениями. То есть что то такое должно быть
    tags Array(Nullable(Tuple(id String, name String)))
    но так не дает, пишет Nested type Tuple(id String, name String) cannot be inside Nullable type.
  • https://t.me/clickhouse_ru
    @FinswimmerRus #311756 08:54 AM, 15 Feb 2023
    Всем привет, подскажите, можно ли как-то обратиться к внутреннему id строки? Нужен какой-то аналог ораклового rowid
  • https://t.me/clickhouse_ru
    @AntonGrigorovich #311757 09:19 AM, 15 Feb 2023
    Всем 👋 Кто-то имел практику построения миграций данных с MS SQL на ClickHouse? Какие решения наиболее эффективно работают в таком подходе?
  • ну в оконных функциях есть row_number() https://clickhouse.com/docs/en/sql-reference/window-functions/#functions. Еще есть https://clickhouse.com/docs/en/sql-reference/functions/other-functions/#rownumberinblock но я не думаю что это хорошая идея полагаться на номера строк, тк они привязаны к блокам -> поэтому они могут меняться.
    Window Functions | ClickHouse Docs

    ClickHouse supports the standard grammar for defining windows and window functions. The following features are currently supported:

  • https://t.me/clickhouse_ru
    @paulineoskolkoff #311759 09:26 AM, 15 Feb 2023
    Добрый день! Всегда считала, что справочники лучше делать словарями, но тут в чатике прочитала, что если справочник маленький (ок 100 строк), то join выгоднее. Посоветуйте, плз, как же все-таки правильнее? Есть ли какие-то объективные критерии? Спасибо!
  • https://t.me/clickhouse_ru
    Мне как раз не row_number нужен. У меня задублились строки и нужно удалить дубликаты, а уникального id в таблице нет
  • https://t.me/clickhouse_ru
    Если кому-то интересно), решили проблему перезагрузкой антивируса...
  • https://t.me/clickhouse_ru
    @FinswimmerRus #311762 09:38 AM, 15 Feb 2023
    Подскажите еще вопрос. Как работает insert? Я работаю с обычным кликхаусом через dbeaver, делаю insert, но падает по таймауту, но данные через какое-то время вставляются, но с дублями. Где искать причину? И как отлавливать и убивать запросы в облачном ClickHouse?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @zagirnur #311765 10:00 AM, 15 Feb 2023
    Можно ли сеттинги во вьюшки сделать необязательными?
    Я делаю параметризованные view, и приходится везде прокидывать сеттинг, иногда просто null кидаю если это необязательный, а хотелось бы что то типа
    getSettingOrNull(‘custom_my_setting’)
  • https://t.me/clickhouse_ru
    @Satanklaus88 #311766 10:01 AM, 15 Feb 2023
    Привет! Подскажите, есть ли какая-то функция позволяющая по ip получать регион пользователя?
  • https://t.me/clickhouse_ru
    Скорее всего запрос отпал по клиентскому тайм-ауту, а на сервере запрос продолжил выполняться, увеличьте тайм-аут в настройках драйвера dbeaver, по умолчанию там 300 сек
  • https://t.me/clickhouse_ru
    берёте базу geoip, создаёте словарь iptrie (https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout#ip-trie) и получаете гео через dictGet()
  • https://t.me/clickhouse_ru
    поменял на минуту, но отваливается с ошибкой "failed to respond" через 43 сек
  • https://t.me/clickhouse_ru
    @zagirnur #311771 10:26 AM, 15 Feb 2023
    Можно ли сеттинги во вьюшки сделать необязательными?
    Я делаю параметризованные view, и приходится везде прокидывать сеттинг, иногда просто null кидаю если это необязательный, а хотелось бы что то типа
    getSettingOrNull(‘custom_my_setting’)

    Или есть возможность переопределить setting записанный внутри view?
  • https://t.me/clickhouse_ru
    смотрите что в логах кх, какую настройку меняли в клиенте?
  • https://t.me/clickhouse_ru
    Socket timeout
  • https://t.me/clickhouse_ru
    Подскажите, где логи смотреть
  • https://t.me/clickhouse_ru
    /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    Так у меня ж обычный
  • https://t.me/clickhouse_ru
    @879084936 #311778 10:57 AM, 15 Feb 2023
    Добрый день. При запросе к КХ через ClickHouse Connect Driver API получаю ошибку clickhouse_connect.driver.exceptions.DatabaseError: :HTTPDriver for .. returned response code 500)
    Code: 358. DB::Exception: INTO OUTFILE is not allowed. (INTO_OUTFILE_NOT_ALLOWED) (version 22.8.5.29 (official build)). Хочу выгрузить данные в файл csv. правильно понимаю, что настройка выгрузки не включена на сервере?
  • https://github.com/ClickHouse/ClickHouse/issues/2326 Вроде бы INTO OUTFILE рабоает только в нативном clickhouse-client
    Error: INTO OUTFILE is not allowed · Issue #2326 · ClickHouse/ClickHouse

    Hello dier support. When I am doing some query, I am receiving Error: INTO OUTFILE is not allowed echo "SELECT * from test.\stats` where date = '2018-05-04' INTO OUTFILE &a...

  • https://t.me/clickhouse_ru
    Благодарю, через clickhouse-client это работает
  • https://t.me/clickhouse_ru
    @ermakmkb #311781 11:27 AM, 15 Feb 2023
    Подскажите, можно ли через табличную функцию postgresql сделать upsert из клика в pg? Пока вижу только чистый insert возможен.
  • https://t.me/clickhouse_ru
    @ionite #311782 11:34 AM, 15 Feb 2023
    А в DELETE FROM..., вопреки документации, нельзя использовать ON CLUSTER? Получаю ошибку "expected WHERE"
  • alter table реплицируется во все реплики шарда. Если нужно на все шарды то нужно on cluster.
    Ну и в where вы должны прописать условия удаления.
    Или вы просто хотите удалить данные?
  • https://t.me/clickhouse_ru
    Alter table tbl on cluster 'cluster' delete where x=y
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #311784 #311785 11:40 AM, 15 Feb 2023
    DELETE Statement | ClickHouse Docs

    Lightweight deletes simplify the process of deleting data from the database.

  • https://t.me/clickhouse_ru
    Этот тоже поддерживает on cluster, скиньте что написали
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #311786 #311787 11:42 AM, 15 Feb 2023
    delete from <table> on cluster <cluster> where <condition>
  • https://t.me/clickhouse_ru
    @fimcho #311788 11:48 AM, 15 Feb 2023
    Всем привет! Подскажите версия '22.1.3.7' нормальная? Или стоит обновиться? Выше писали, что 22.2 - сломанная
  • https://t.me/clickhouse_ru
    смотрите changelog и issues, тесты накатывайте на окружение тестовое если оно у вас есть
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311790 12:18 PM, 15 Feb 2023
    Привет всем кто может подсказать как работать правильно с настройкой x-dead-letter-exchange в  RabbitMQ Engine табличке?
  • https://t.me/clickhouse_ru
    @alexander_korzhov #311791 12:20 PM, 15 Feb 2023
    создаю таблицу вот так
    CREATE TABLE IF NOT EXISTS event.rabbitmq_entry
    (
    `timestamp` UInt64,
    `id` UInt32,
    `body` String
    ) ENGINE = RabbitMQ SETTINGS
    rabbitmq_host_port = 'rabbitmq:5672',
    rabbitmq_exchange_name = 'clickhouse-exchange',
    rabbitmq_routing_key_list = 'myqueue',
    rabbitmq_queue_base = 'event_rabbitmq_entry',
    rabbitmq_format = 'JSONEachRow',
    rabbitmq_exchange_type = 'fanout',
    rabbitmq_num_consumers = 1,
    rabbitmq_queue_settings_list = 'x-dead-letter-exchange=admin-error-logs'
    ;
  • @kernel_dump #311792 12:38 PM, 15 Feb 2023
    Если дропнуть вьюху и кафку движок, и потом пересоздать, оно с тех же оффсетов читает?
  • @kernel_dump #311793 12:38 PM, 15 Feb 2023
    Если консьюмер группа та же
  • С тех же
  • https://t.me/clickhouse_ru
    Нет не нормальная