• 23 March 2021 (171 messages)
  • @chghehe #210882 09:20 PM, 23 Mar 2021
    Речь идет про выборку, а не про оптимизацию таблицы. Как я себе это представляю: это нужно сделать в виде матвью, и разгребать "на лету". Потому что данных — миллиарды строк (рыночные данные), а после такой обработки должны остаться десятки-сотни тысяч.

    Пример (для простоты время тут в виде целых чисел):

    t v
    1 1
    2 1
    3 1
    4 2
    5 2
    6 3
    7 1
    8 1
    9 5

    В выборке хочу получить
    t v
    1 1
    4 2
    6 3
    7 1
    9 5

    Лежат изначальные данные в MergeTree-таблице. Версия 21.3 в облаке Яндекса.
  • https://t.me/clickhouse_ru
    @Whatevenif #210886 09:41 PM, 23 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    так просто replacingMT order by (t,v)
  • https://t.me/clickhouse_ru
    @unamedrus #210888 10:22 PM, 23 Mar 2021
    Так задача состоит в том, что бы писать в таблицу только когда произошло изменение, а эта задача красивым образом в кх уже не решает.
    Как я понял вопрос
  • @chghehe #210889 10:33 PM, 23 Mar 2021
    Да, поступают данные, но в таблицу / вью должны попасть только те, значения которых (v) отличаются от предыдущего по времени (t).
  • А некрасивым? Потому как, если использовать "сырые" данные на стороне клиента (ну т.е. просто SELECT по исходной таблице), то происходит пересылка огромного количества данных и, кажется, тут уже не до красоты :)
  • https://t.me/clickhouse_ru
    Как и как часто вы вставляете в таблицу?
  • https://t.me/clickhouse_ru
    @den_crane #210892 10:38 PM, 23 Mar 2021
    ясно, я ничего вообще не понял. Перечитал еще раз и понял еще меньше.
  • https://t.me/clickhouse_ru
    @unamedrus #210893 10:38 PM, 23 Mar 2021
    Ну и да,
    Это разные задачи:
    1) уменьшить основную таблицу в размерах
    2) не пересылать все подряд клиенту
  • Это рыночные биржевые данные — тысячи / десятки тысяч записей в секунду. Как — не понял вопроса. INSERT-ом :) Использую clickhouse_driver в питоне.
  • https://t.me/clickhouse_ru
    Размер батча частота вставок в эту таблицу
  • Я не хотел оптимизировать таблицу. Извиняюсь, если невнятно описал проблему изначально. Мне нужно оптимизировать именно выдачу клиенту(ам).
  • https://t.me/clickhouse_ru
    Окей, тогда MV тут не причем.

    А покажите ваш обычный запрос сейчас?
  • @chghehe #210898 10:43 PM, 23 Mar 2021
    Запрос на выборку или вставку?
  • https://t.me/clickhouse_ru
    @unamedrus #210899 10:43 PM, 23 Mar 2021
    Выборку
  • @chghehe #210900 10:44 PM, 23 Mar 2021
    SELECT t, 0.5 * (b[1] + a[1]) AS \"v\" FROM ob WHERE t BETWEEN '2021-03-23' AND '2021-03-24' ORDER BY t
  • @chghehe #210901 10:46 PM, 23 Mar 2021
    b и a — это массивы, значения b[1] и a[1] меняются реально редко, поэтому выдача полна идущих подряд одинаковых значений v
  • https://t.me/clickhouse_ru
    @unamedrus #210902 10:48 PM, 23 Mar 2021
    И это одна timeseries серия?

    Можно посмотреть на вариант через neighbor

    SELECT t, v FROM (SELECT t, 0.5 * (b[1] + a[1]) AS \"v\" FROM ob WHERE t BETWEEN '2021-03-23' AND '2021-03-24' ORDER BY t) WHERE neighbor(v,-1) !=v
  • https://t.me/clickhouse_ru
    @unamedrus #210903 10:49 PM, 23 Mar 2021
    Он сбрасывает состояние каждый блок, но в вашем случае это не важно
  • Вопроса не понял. Сейчас попробую, спасибо!
  • @220987833 #210905 10:51 PM, 23 Mar 2021
    Joined.
  • Работает) Только значение в последней строке дублируется
  • 24 March 2021 (187 messages)
  • https://t.me/clickhouse_ru
    @nadudec #210907 06:34 AM, 24 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nadudec #210908 06:36 AM, 24 Mar 2021
    доброе утро!
    Как добавить такой progress bar в jupyter-notebook?
  • блин, ссылка утекла что ли )
  • https://t.me/clickhouse_ru
    Прогресс выполнения запроса можно отслеживать с помощью заголовков ответа X-ClickHouse-Progress. Для этого включите send_progress_in_http_headers. Пример последовательности заголовков:

    X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128"} X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128"} X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128"}

    Возможные поля заголовка:

    read_rows — количество прочитанных строк.

    read_bytes — объём прочитанных данных в байтах.

    total_rows_to_read — общее количество строк для чтения.

    written_rows — количество записанных строк.

    written_bytes — объём записанных данных в байтах.

    А дальше tqdm или свою принтер делайте.
  • https://t.me/clickhouse_ru
    @brbrbr #210912 08:31 AM, 24 Mar 2021
    Скажите, пожалуйста, а есть ли какие-нибудь ограничения на максимальное количество кафка-консьюмеров к разным топикам кафки для одного сервера КХ?

    У меня есть около 100 топиков кафки (суммарно под 100.000 rps), которые нужно затягивать в КХ. Попробовал и на жирных (4 консьюмера на один топик) и на нескольких сразу (4 параллельных топика по 1 консьюмеру) - проблем нет. Но будет ли всё так же гладко, если включить сразу 100? Какие есть подводные камни?

    Думаю настроить реплики и тянуть данные с двух серверов параллельно.
  • @mms1802 #210914 09:38 AM, 24 Mar 2021
    Joined.
  • @VEgoshin #210915 09:50 AM, 24 Mar 2021
    Joined.
  • @VEgoshin #210916 09:51 AM, 24 Mar 2021
    Привет!
    Подскажите, пожалуйста, а можно ли в clickhouse запретить использование SELECT * FROM url()?
  • Навскидку несколько особенностей, которые приходят в голову.

    * Частота вставок.
    Если отдельный консюмер 10 раз в секунду что-то отправляет в кликхаус, то 100 консюмеров будут 1000 раз в секунду отправлять.
    Соответственно может вырасти потребность в уменьшении частоты инсертов. Либо средствами стороннего буфера, если вы его используете, либо что-то типа Buffer в самом кликхаусе, либо в кафко-параметрах консюмера увеличивать размер забираемых пачек данных ( fetch.min.bytes , fetch.max.bytes, max.partition.fetch.bytes, fetch.max.wait.ms и т.п.)

    * Для высоконагруженных топиков количество кафковских partitions на которые разбит топик может стать узким местом, ограничивающим масштабирование числа консюмеров. Поскольку из каждого partition кафкатопика не более чем один consumer из consumer group может читать, то число эффективно работающих консюмеров ограничено числом партишнов, все следующие консюмеры будут сидеть в засаде, ожидая что после перебалансировки им тоже что-нибудь перепадёт.
  • Ещё:
    * (Вроде бы).
    Если консюмеры не приложения, которые ETL проделывают вне ClickHouse, а ENGINE = KAFKA, то вроде бы количество таких консюмеров надо учитывать и корректировать количество threads в параметрах ClickHouse: SELECT * FROM system.settings WHERE name LIKE '%pool%';
    Тут я не разбираюсь. Можно в поиске группы по словам
    типа background_pool_size kafka
    или background_schedule_pool_size кафка
    посмотреть.
    Там были аналогичные вопросы:
    https://t.me/clickhouse_ru/190460
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    для kafka_num_consumers = 16, надо еще увеличивать background_schedule_pool_size, иначе будет не хватать background_ тредов чтобы все консумеры работали одновременно

  • @1063161973 #210920 11:00 AM, 24 Mar 2021
    На большом массиве данных считал хэш-суммы и обнаружил,
    что порядок данных во внешнем запросе КХ полностью определяется
    порядком вложенного в запросе типа:

    SELECT
    x
    FROM
    (
    SELECT
    x
    FROM
    y
    ORDER BY x
    )

    Это текущее поведение. Может ли оно измениться в дальнейшем ?
  • @1063161973 #210921 11:01 AM, 24 Mar 2021
    (вопрос связан с оптимизацией, дополнительное упорядочивание во внешнем запросе занимает существенное время)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #210919 #210922 11:03 AM, 24 Mar 2021
    Да, я именно про engine=kafka. Спасибо за комментарии и наводку.
  • https://t.me/clickhouse_ru
    так работает скл. Сначала что бы отдать выборку наверх, нужно сначала отсортировать субквери.
  • https://t.me/clickhouse_ru
    > Это текущее поведение. Может ли оно измениться в дальнейшем ?

    На него достаточно надежно завязыватся, оно используется в том числе для собирания отсортированных значений в массив.
  • Ну да, так и отсортировал.
  • Спасибо Дмитрий, именно это и хотел выяснить
  • https://t.me/clickhouse_ru
    потому что если не указывать сортировку, то в верхнюю выборку можно отдавать данные по мере их вычисления(типа стрима)
  • Значит можно во внешнем не сортировать, буду использовать
  • https://t.me/clickhouse_ru
    @monashev #210929 11:25 AM, 24 Mar 2021
    Привет.
    Подскажите, пожалуйста, как написать IN для нескольких столбцов сразу? У меня есть пары значений столбцов, по которые я хочу выбрать записи. Т.е. как сделать что-то вроде
    SELECT * FROM table1 WHERE (col1, col2) IN ((11,22), (34,43), (57,68))
  • https://t.me/clickhouse_ru
    WITH (number, number + 10) AS t
    SELECT t
    FROM system.numbers
    WHERE t IN (1, 11)
    LIMIT 1

    Query id: 99b01085-ea2b-4b26-b605-ebd415f54694

    ┌─t──────┐
    │ (1,11) │
    └────────┘
  • https://t.me/clickhouse_ru
    не понял описанной идеи
  • https://t.me/clickhouse_ru
    @Krashuevina #210932 11:31 AM, 24 Mar 2021
    я написал запрос, который работает :)
  • https://t.me/clickhouse_ru
    @Krashuevina #210933 11:31 AM, 24 Mar 2021
    свои колонки подставляешь - всё работает
  • https://t.me/clickhouse_ru
    @Krashuevina #210934 11:31 AM, 24 Mar 2021
    твой исходный запрос тоже должен работать
  • https://t.me/clickhouse_ru
    select * from system.numbers WHERE tuple(number, number + 10) IN (1, 11) limit 1

    SELECT *
    FROM system.numbers
    WHERE (number, number + 10) IN (1, 11)
    LIMIT 1

    ┌─number─┐
    │ 1 │
    └────────┘
  • https://t.me/clickhouse_ru
    @mikhailberg #210936 11:33 AM, 24 Mar 2021
    либо через select tuple(col1, col2) as my_col from table where my_col in ((v1, v2), (v3, v4))
  • https://t.me/clickhouse_ru
    @monashev #210937 11:37 AM, 24 Mar 2021
    спасибо!
  • https://t.me/clickhouse_ru
    Search · remote_url_allow_hosts · ClickHouse/ClickHouse

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

  • Спасибо :)
  • @vvvjhaq #210940 12:30 PM, 24 Mar 2021
    Добрый день. Из 3 работающих ЗК хочу оставить один, подскажите последовательность действий, чтобы отключить 2шт.
  • https://t.me/clickhouse_ru
    отказоустойчивость не требуется?
    уберите из конфига клихкауса лишние зукиперы, дайте рестарт
    уберите из конфига зукипера список серверов и дайте рестарт, он запустится как standalone (https://zookeeper.apache.org/doc/r3.3.3/zookeeperStarted.html, см. "Standalone Operation")
  • https://t.me/clickhouse_ru
    @floxard #210942 12:37 PM, 24 Mar 2021
    потом проверьте покидайте зукиперу комадны srvr stat ruok по вкусу
    и поселектите зукипер из кх
  • меняем на новые машины КХ, поэтому пока не нужны.
    данные и очереди на репликацию при этом не потеряются?
  • @vvvjhaq #210944 12:38 PM, 24 Mar 2021
    запись стоит остановить?
  • https://t.me/clickhouse_ru
    @floxard #210945 12:39 PM, 24 Mar 2021
    нет, не потеряются, если вы СНАЧАЛА переключите кх, а ПОТОМ оторвете зукипер лишние тачки
    если в обратном порядке, то кх может написать в зк соседей
  • ок, понял, сначала кх меняю+рестарт кх, затем удаляю в зк+рестарт зк
  • https://t.me/clickhouse_ru
    @floxard #210947 12:40 PM, 24 Mar 2021
    возможно он умеет уже на лету, без рестарта, сверьтесь с докой, в последней версии где я это делал ещё не умел, 19-какой-то
  • https://t.me/clickhouse_ru
    @floxard #210948 12:40 PM, 24 Mar 2021
    возможно нет
  • https://t.me/clickhouse_ru
    @floxard #210949 12:40 PM, 24 Mar 2021
    можно просто рестарт дать если вам так проще
  • https://t.me/clickhouse_ru
    всё так
  • благодарю
    а чтобы почистить за собой зк, просто удалить путь /clickhouse в зк?
  • в моей еще нужен рестарт
  • https://t.me/clickhouse_ru
    на тачках которые останавливаете?
    можно просто rm -rf /var/lib/zookeeper, после удаления пакета ну или где там у вас датадира
    ну или да, можно просто удалить путь /clickhouse если вы хотите запустить потом назад и у вас что то есть кроме кх в том зукипере
  • сам зк надо оставить, он пойдет на другую железку для репликации, просто пути почищу тогда в зк
    Благодарю Вас
  • https://t.me/clickhouse_ru
    @anromanow #210960 01:32 PM, 24 Mar 2021
    коллеги, очень прощу помощи.
    линукс, 8 ядер, 16 оперативы, +- свежая версия кх.
    начал расти LA, нагрузка только инсерт, селектов нет.
    кол-во инсертов за последние 3-5 дней не менялось. LA начал расти последние два часа.

    первая табоица
    engine = MergeTree() PARTITION BY toYYYYMM(created_at) ORDER BY tuple() SETTINGS storage_policy = 'single', index_granularity = 8192;

    вторая таблица такая же

    третья таблица
    engine = ReplacingMergeTree() PARTITION BY toYYYYMM(event_dt) ORDER BY (event_dt) SETTINGS storage_policy = 'single', index_granularity = 8192;

    подскажите куда смотреть что читать?
  • https://t.me/clickhouse_ru
    select * from system.merges
  • https://t.me/clickhouse_ru
    @mikhailberg #210962 01:38 PM, 24 Mar 2021
    добрый
    а подскажите
    появилась ошибка rate limit for user “user” is exceeded request_per_minute limit 100

    какой секцией в users.xml этот лимит регулируется или какой настройкой ?

    сейчас в users.xml quotas - queires - 0 (unlim)
    statbox не заполнял
  • https://t.me/clickhouse_ru
    у меня там одна таблица. кратко прочитал мануал по system.merges, обратил внимание на elapsed
    спасибо, она работаем медленнее желаемого
  • https://t.me/clickhouse_ru
    так а что там у вас? Я желаю чтобы оно всегда работало за 0 микросекунд?
    в принципе все можно настроить, но надо знать зачем, куда стреляем?
  • https://t.me/clickhouse_ru
    до 5 секунд иногда доходит третья, две первые в одну десятую укладываются точно
  • https://t.me/clickhouse_ru
    эм что? мержи у меня по 4 часа например бывают и по 12. Тут как бы ничего удивительного нет.
  • https://t.me/clickhouse_ru
    @anromanow #210967 01:47 PM, 24 Mar 2021
    5 секунд на 2к записей? я конечно совсем новичок в кх, но это немного странно
  • https://t.me/clickhouse_ru
    а юзер создан через xml или sql?
  • https://t.me/clickhouse_ru
    @anromanow #210969 01:48 PM, 24 Mar 2021
    xml
  • https://t.me/clickhouse_ru
    зависит от ширины записей и того какой диск, покажите select * from system.merges, там видно сколько байт
  • https://t.me/clickhouse_ru
    sql
  • https://t.me/clickhouse_ru
    ну так причем тут users.xml ?
    show quota ...
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    interval=[2021-03-24 13:00:00 .. 2021-03-24 14:00:00] queries=0 errors=0 result_rows=0 result_bytes=0 read_rows=0 read_bytes=0 execution_time=0
  • https://t.me/clickhouse_ru
    @mikhailberg #210975 01:50 PM, 24 Mar 2021
    у меня только 1 юзер )
  • https://t.me/clickhouse_ru
    диск ssd в digitalocean
  • https://t.me/clickhouse_ru
    согласен, так не должно быть. Что-то неправильно.
  • https://t.me/clickhouse_ru
    @anromanow #210978 01:52 PM, 24 Mar 2021
    но я теперь знаю где, а значит примерно понятно что надо лечить
  • https://t.me/clickhouse_ru
    а сколько полей в locations ? '
    это она ORDER BY tuple() ?
  • https://t.me/clickhouse_ru
    @anromanow #210980 01:54 PM, 24 Mar 2021
    8 полей, 7 из них это float, еще одно datetime
  • https://t.me/clickhouse_ru
    она ORDER BY (event_dt)
  • https://t.me/clickhouse_ru
    кстати

    ReplacingMergeTree() PARTITION BY toYYYYMM(event_dt) ORDER BY (event_dt)

    выглядит подозрительно, ORDER BY (event_dt) -- схлопнет по ключу event_dt, т.е. останется только одна запись для каждой event_dt
  • https://t.me/clickhouse_ru
    @anromanow #210983 01:55 PM, 24 Mar 2021
    опечатка, ORDER BY (account_id, event_dt)
  • https://t.me/clickhouse_ru
    я бы смотрел в sar -d 1 100 в колонки await и svctm
  • https://t.me/clickhouse_ru
    @anromanow #210985 01:56 PM, 24 Mar 2021
    спасибо, сейчас попробую
  • @1063161973 #210986 02:05 PM, 24 Mar 2021
    Не подскажете, как побороть ошибку ? Из интерфейса КХ создал таблицы, удалить не могу. Возникает время-от времени на одном из серверов. TRUNCATE таблиц выполняется успешно. Если вручную удалить файлы /.store/...sql, исчезает из базы. Но в чем причина "Invalid cross-device link" ?
  • @vvvjhaq #210987 02:28 PM, 24 Mar 2021
    Можно остановить оптимайз таблицы?
  • @uname91 #210989 02:33 PM, 24 Mar 2021
    KILL процесса по query_id из SHOW PROCESSLIST ?
  • https://t.me/clickhouse_ru
    system stop merges table
  • https://t.me/clickhouse_ru
    docker ?
  • хотел сделать оптимайз 1 партиции - запустил на всю таблицу, ничего криминального не будет?
  • https://t.me/clickhouse_ru
    таблица replicated ? инсерты идут?
  • да репликейтед, идут
  • @1063161973 #210995 02:35 PM, 24 Mar 2021
    Нет, не docker. Ubuntu Server 20.04 на десктопе i9-10900 система на SSD, база на HDD
  • https://t.me/clickhouse_ru
    тогда ждите теперь когда закончится optimize
  • https://t.me/clickhouse_ru
    @den_crane #210997 02:35 PM, 24 Mar 2021
    system stop merges table -- остановит мержи, и инсерты сломаются с too many parts
  • понял, спасибо
  • https://t.me/clickhouse_ru
    @den_crane #210999 02:36 PM, 24 Mar 2021
    в любом случае после system stop merges table надо вручную удалить задание из зк (для replicated таблицы)
  • https://t.me/clickhouse_ru
    покажите вывод mount
  • @vvvjhaq #211001 02:38 PM, 24 Mar 2021
    а не подскажите как могло бы такое произойти:
    удалили данные за два дня из КХ, далее залили новые на эти дни. Делаем выборку с учетом этих дней ограничение по датам - данные получаем все, делаем выборку на день больше, выборка пустая.
    То есть нет в выборке данных старше этого дня, хотя по факту они там есть.
  • https://t.me/clickhouse_ru
    мерж нельзя убить, он не связан с сессией и запросом optimize. Optimize лишь инициирует мерж.
  • https://t.me/clickhouse_ru
    что значит удалили?
    версия кх ?
  • alter table delete
    20.1.3.7
  • @1063161973 #211005 02:40 PM, 24 Mar 2021
    Может быть ошибка "Invalid cross-device link" из-за того, что после установки КХ
    остановил сервер, перенес папки /data /store /user_files на HDD, создал для них
    Symlink-и на прежних местах в папке КХ и запустил сервер. Сервер работает,
    но такие вот непонятные вещи...
  • https://t.me/clickhouse_ru
    20.1.3.7 + delete скораптил первичный ключ
    обновлятся надо было год назад, когда это исправили
  • https://t.me/clickhouse_ru
    конечно это из-за переноса.
    ch не может хардлинки теперь создавать
    надо было делать все не так
  • @vvvjhaq #211008 02:42 PM, 24 Mar 2021
    можно ли на текущем варианте что-то поправить?
  • https://t.me/clickhouse_ru
    обновляться и переливать insert select в новую таблицу
  • @1063161973 #211010 02:43 PM, 24 Mar 2021
    А как правильно перенести КХ на HDD ?
  • https://t.me/clickhouse_ru
    вариантов куча
    * замаунтить hdd в /var/lib/clickhouse
    * использовать data_path ( поправить все сетинги с /var/lib в config.xml на каталог hdd )
    * использовать volums policy.
  • @1063161973 #211012 02:47 PM, 24 Mar 2021
    Спасибо за список правильных вариантов переноса. Свой теперь исключу из практики )
  • https://t.me/clickhouse_ru
    @den_crane #211013 02:49 PM, 24 Mar 2021
    Broken indicies and inconsistent queries results · Issue #9019 · ClickHouse/ClickHouse

    Hi! After updating Clickhouse from 19.13.1.11 version to 20.1.3.7 and when we run queries like this: select courseId, uniqExact(learnerId) from entities_attempts_distributed group by courseId order...

  • https://t.me/clickhouse_ru
    @den_crane #211014 02:50 PM, 24 Mar 2021
    Fix primary.idx corruption after delete mutation by alesapin · Pull Request #9048 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Bug Fix Changelog entry (a user-readable short description of the changes...

  • https://t.me/clickhouse_ru
    @den_crane #211015 02:52 PM, 24 Mar 2021
    20.1.16.120 обновляться сюда с 20.1.3.7
  • спасибо
  • да мы скоро переедем на v21.2.6.1-stable
  • 100% попадание!!
    Большое спасибо, именно в этом и было дело!

    Вчера я на стенде в схеме поле ReplicatedMergeTree таблицы, в которой при слияниях партов время от времени происходили ошибки "Checksums of parts", изменил выражение для DEFAULT.
    Вместо
    DateTime DEFAULT now() TTL toDate(end_datetime) + toIntervalDay(1)
    на
    DateTime DEFAULT 0 TTL toDate(end_datetime) + toIntervalDay(1)
    (наличие TTL на столбце было у меня было необходимым условием появления ошибки Checksums).

    Всё остальное то же самое.
    Результат: 35B+ записей перемололо, но ни на одной из нод с момента коррекции DEFAULT выражения ошибка "Code 40: Checksum of parts doesn't match" больше не произошла.

    Issue я обновлю.
  • @1488708201 #211019 03:01 PM, 24 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @lazovskiy #211021 03:35 PM, 24 Mar 2021
    ч
  • https://t.me/clickhouse_ru
    @Egorios #211022 03:39 PM, 24 Mar 2021
    всем привет.

    а кто-нибудь укладывал в клик данные из кафка+авро, где одно из полей было бы массивом записей? что имею в виду:

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

    {
    "name": "some_objects",
    "type": {
    "type": "array",
    "items": {
    "type": "record",
    "name": "SomeRecord",
    "fields": [
    {
    "name": "field1",
    "type": "long",
    "default": 0
    },
    {
    "name": "field2",
    "type": "boolean",
    "default": false
    }
    ]
    }
    },
    "default": []
    },

    и есть запрос для создания таблицы, где поле описано как

    some_objects Nested
    (field1 Int64,
    field2 String),

    таблица успешно создается, но при чтении вылетает Field some_objects.field1 not found in Avro schema.

    с одной стороны это логично, потому что там лежит внутри не record, а массив record. но с другой стороны - я не могу в клике создать Array(Nested). какой тогда должен быть тип?

    (нашел похожий кейс - https://github.com/ClickHouse/ClickHouse/issues/9707, но тут нет массива, просто вложенная запись)
    Avro nested · Issue #9707 · ClickHouse/ClickHouse

    Avro and AvroConfluent formats (20.3.2.1) are a really nice feature (thanks!!). Current implementation (AFAIK) doesn't allow reading nested structures. Most Avro messages in real use-cases ...

  • https://t.me/clickhouse_ru
    Array(Tuple(Int64, String))
    но все это херня и работать не будет, и авро сделан на отвали и все равно все сломается, если не сегодня, то через неделю

    знаю что для того чтобы массивы более менее работали, люди пишут в avro массивы как строки, с числами через запятую, потом парсят, непонятно правда зачем им авро и нафига такие мучения
  • https://t.me/clickhouse_ru
    @lazovskiy #211024 03:50 PM, 24 Mar 2021
    Привет
    Подскажите, пожалуйста, как пользоваться внешними словарями подгруженными из xml.
    Могу сделать
    SELECT dictGet('dict1', 'user_id', toUInt64(1));
    Но применение той же функции внутри сложного селекта из таблицы дает ошибку
    DB::Exception: external dictionary 'dict1' not found
    Натыкался, что нужно указывать базу, типа default.dict1, но перепробовав все варианты успеха не достигнул.

    Вот информация из system.dictionaries, база там пустая:
    Row 1:
    ──────
    database:
    name: dict1
    uuid: 00000000-0000-0000-0000-000000000000
    status: LOADED
    origin: /etc/clickhouse-server/external_mysql_dictionary.xml
    type: Flat
    key: UInt64
    attribute.names: ['id','user_id']
    attribute.types: ['UInt64','UInt64']
    bytes_allocated: 37360
    query_count: 1
    hit_rate: 1
    element_count: 106
    load_factor: 0.103515625
    source: MySQL: xxx.xxx
    lifetime_min: 540
    lifetime_max: 600
    loading_start_time: 2021-03-24 18:03:00
    last_successful_update_time: 2021-03-24 18:03:00
    loading_duration: 0.016
    last_exception:
  • https://t.me/clickhouse_ru
    нет, про базу это для НЕ-xml словарей.

    а у вас Distributed запрос, и на шарде куда прилетает запрос нету словаря. Это можно решить 2 спрособами, создать словари на всех нодах, или обернуть () и делать обращение к словарю на инициаторе
  • https://t.me/clickhouse_ru
    Преклоняюсь перед вашими экстрасенсорными навыками. Да, действительно, запрос - Distributed и да, на каких-то шардах словаря не было

    Огромное спасибо.
  • https://t.me/clickhouse_ru
    @den_crane #211027 03:59 PM, 24 Mar 2021
    В Альтинити только членов Psi Corps берут
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо большое)
  • https://t.me/clickhouse_ru
    @Luck1ess #211030 04:23 PM, 24 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Luck1ess #211031 04:27 PM, 24 Mar 2021
    Всем привет, подскажите пожалуйста, я вставляю данные в клик следующим образом cat file.orc | curl -k --negotiate -u : 'clickhouse/?database=database&query=INSERT+INTO+table+FORMAT+ORC' --data-binary @-
  • https://t.me/clickhouse_ru
    @Luck1ess #211032 04:27 PM, 24 Mar 2021
    получаю статус 200
  • https://t.me/clickhouse_ru
    @Luck1ess #211033 04:27 PM, 24 Mar 2021
    и не вижу данных в таблице
  • https://t.me/clickhouse_ru
    @Luck1ess #211034 04:27 PM, 24 Mar 2021
    в чем может быть дело?
  • https://t.me/clickhouse_ru
    в логе КХ надо смотреть трассу инсерта
  • https://t.me/clickhouse_ru
    у меня безопасная безопасность
  • https://t.me/clickhouse_ru
    в общем-то без разницы. ORC пользоваться невозможно для заливки, там все недоделано.
  • https://t.me/clickhouse_ru
    а чем лучше всего пользоваться?
  • https://t.me/clickhouse_ru
    TSV
  • parquet если готовите данные (в большом объеме) из приложения
  • https://t.me/clickhouse_ru
    а с паркетам работа лучше чем с орками?
  • https://t.me/clickhouse_ru
    просто у нас из паркета вроде как есть проблемы с эрреями
  • ОРКи не пробовали, в паркете были проблемы с некоторыми типами, тикеты на гитхабе есть
  • если есть массивы - то ТСВ
  • @dj_mixer #211045 04:54 PM, 24 Mar 2021
    я вообще сомневаюсь что массивы где то кроме ТСВ/ЦСВ/json нормально работают на вставку...
  • https://t.me/clickhouse_ru
    @unamedrus #211046 04:55 PM, 24 Mar 2021
    Да вроде фиксили, мб даже в протобафе?
  • https://t.me/clickhouse_ru
    окей, есть еще небольшой вопрос, если я использую движок с3/хдфс, там тоже нужно все к тсв гонять, или уже можно будет использовать орки/паркеты ?
  • https://t.me/clickhouse_ru
    @den_crane #211048 04:55 PM, 24 Mar 2021
    массивы в orc / паркет в доработке сейчас
  • https://t.me/clickhouse_ru
    @den_crane #211049 04:56 PM, 24 Mar 2021
    Parquet support List datatype · Issue #21080 · ClickHouse/ClickHouse

    Use case Support reading from parquet list datatype to ClickHouse Array and vice versa. Describe the solution you'd like since ClickHouse use arrow to transfer data between ClickHouse and P...

  • https://t.me/clickhouse_ru
    без разницы, КХ просто читает поток байт с ORC, откуда он читает не имеет значения, везде все кривое, жрет память и не поддерживает половину типов данных
  • https://t.me/clickhouse_ru
    @Luck1ess #211051 04:59 PM, 24 Mar 2021
    понял, спасибо большое!
  • https://t.me/clickhouse_ru
    @Luck1ess #211052 04:59 PM, 24 Mar 2021
    а он умеет тсв из bz2 читать?
  • pipe it
  • https://t.me/clickhouse_ru
    @JesterDLA #211054 05:08 PM, 24 Mar 2021
    как можно сделать чтобы при вставке в таблицу все данные с нее стирались? мб движок какой?
  • https://t.me/clickhouse_ru/191672
    замените первую часть на bzcat
    Roman 👀xam👀 Che in ClickHouse не тормозит

    cat file.csv | clickhouse-client --database={$database} --file=- --query="INSERT INTO products SELECT FROM _data FORMAT CSVWithNames""

  • готового нет. надо именно транкейт на вставке? лучше на приложении, либо использовать рандомизированные названия таблиц...
  • https://t.me/clickhouse_ru
    @rvkggwp #211057 05:21 PM, 24 Mar 2021
    Подскажите, можно или сделать так, чтобы только вьюха материализованные могла читать из таблицы
  • https://t.me/clickhouse_ru
    @rvkggwp #211058 05:22 PM, 24 Mar 2021
    И например никто не мог читать из таблицы с движком kafka кроме самой Кафки
  • https://t.me/clickhouse_ru
    Зачем?
  • https://t.me/clickhouse_ru
    Это таблица с движком кафка энджин читает из кафки, а не на оборот
  • https://t.me/clickhouse_ru
    @solanj_t #211062 05:53 PM, 24 Mar 2021
    Привет!
    Подскажите, пожалуйста, как можно прочитать данные из Join-engine таблицы с композитным ключом? Сам джойн выдает гордую пустоту, пытаюсь поисследовать, но прямые селекты в такую таблицу КХ делать не дает, а как в joinGet передать композитный ключ - не могу найти, в доке ровно один пример и он с простым ключом. Мои попытки делать наощупь только разные ругательства от КХ генерят.
  • https://t.me/clickhouse_ru
    В эту таблицу можно писать самому и Кафка вычитает эти сообщения
  • https://t.me/clickhouse_ru
    joinGet(join_storage_table_name, value_column, (key_1,key_2))
  • https://t.me/clickhouse_ru
    @unamedrus #211065 05:57 PM, 24 Mar 2021
    Попробуйте tuple()
  • https://t.me/clickhouse_ru
    @DorianPeregrim #211066 06:00 PM, 24 Mar 2021
    Добрый вечер. Подскажите, как-то можно джойнить регистронезависимо?
  • https://t.me/clickhouse_ru
    Спасибо!
    Результат, правда, неутешительный, зато однозначный
    DB::Exception: joinGet only supports StorageJoin containing exactly one key
    Никаких обходных путей, случаем, нет?)
  • https://t.me/clickhouse_ru
    lower(key_a) = lower(key_b)
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @MyKadyrov #211070 06:05 PM, 24 Mar 2021
    Всем привет. Хотел бы задать такой вопрос: кто-нибудь использовал ClickHouse в финансовой сфере, а именно для хранения транзакций? Не нужно, писать, что есть другие БД для этого, я в курсе :) Ну тут, необычно немного, так как кол-во транзакций и чтение этих транзакций много. Тут хотелось бы получить выгоду по хранению, а именно что бы меньше место занимало, ну и скорость чтения. Данные вообще не меняются, только накапливаются.
  • https://t.me/clickhouse_ru
    @MyKadyrov #211071 06:07 PM, 24 Mar 2021
    Грубо говоря, только для хранение и чтении истории транзакций.
  • вполне обычная задача для КХ, но хотите ли вы часто обновлять/удалять данные
  • https://t.me/clickhouse_ru
    нет) удалять точно, а обновлять, практический нет!
  • https://t.me/clickhouse_ru
    @MyKadyrov #211074 06:13 PM, 24 Mar 2021
    скорее всего вообще нет
  • храните и выбирайте данные, сколько вам нужно
  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    там композитный ключ задается через то место

    create table jtest(
    key Tuple(String, String),
    value Float64
    ) engine=Join(any, left, key);
    insert into jtest values(('a', 'b'), 15)
    select joinGet(jtest, 'value', ('a', 'b'))
  • https://t.me/clickhouse_ru
    При create проблем не было, да)
    А вот joinGet такой дает ошибку
    DB::Exception: joinGet only supports StorageJoin containing exactly one key
  • https://t.me/clickhouse_ru
    @solanj_t #211081 06:55 PM, 24 Mar 2021
    А, ой, ключ-tuple, так не пробовала
  • https://t.me/clickhouse_ru
    @solanj_t #211082 06:55 PM, 24 Mar 2021
    А обычный джойн при таком подходе будет так же выглядеть?
  • https://t.me/clickhouse_ru
    select * from (select 'a' a,'b' b) t any left join jtest on jtest.key = (t.a, t.b);
    ┌─a─┬─b─┬─key───────┬─value─┐
    │ a │ b │ ('a','b') │ 15 │
    └───┴───┴───────────┴───────┘
  • https://t.me/clickhouse_ru
    Спасибо!
    Боюсь, правда, tableau такое генерить откажется, но попробую
  • https://t.me/clickhouse_ru
    Смотря как вы их будете читать. Если посчитать, например, обороты за месяц, то будет ок.
    Мы как-то пробовали хранить данные, но столкнулись с тем, что запрос вида select top ... from ... order by ... приводил к сканированию таблицы и все становилось печально.
  • https://t.me/clickhouse_ru
    Спасибо за ответ!
  • https://t.me/clickhouse_ru
    тут все зависит от вашего понимания, можно сделать чтобы не сканировал
  • https://t.me/clickhouse_ru
    @den_crane #211090 07:37 PM, 24 Mar 2021
    SELECT count() FROM S
    ┌───count()─┐
    │ 100000000 │
    └───────────┘

    select top 10 * from S order by B,A;

    ┌───A─┬─B─┬─C───┬──────────D─┐
    │ 0 │ 0 │ xxx │ 2021-03-24 │
    │ 103 │ 0 │ xxx │ 2021-03-24 │
    │ 206 │ 0 │ xxx │ 2021-03-24 │
    ....
    Processed 5.12 thousand rows
  • https://t.me/clickhouse_ru
    Возможно. В общем мы пытались использовать КХ для целей, для которых он не заточен, производительность таких запросов нас не устроила и мы отказались от этого решения.
  • https://t.me/clickhouse_ru
    это правильно, обычные OLTP конечно делают это лучше
  • @Nvarchar495 #211093 08:08 PM, 24 Mar 2021
    DB::Exception: Table system.query_log doesn't exist..

    restart сделал
  • https://t.me/clickhouse_ru
    через 7 сек. после запроса появится таблица
  • увы
    https://github.com/ClickHouse/ClickHouse/issues/11194
  • https://t.me/clickhouse_ru
    может админы отключили создание этой таблицы, чтобы диск не засираляс
  • https://t.me/clickhouse_ru
    @den_crane #211098 08:20 PM, 24 Mar 2021
    типа
    <?xml version="1.0"?>
    <yandex>
    <asynchronous_metric_log remove="1"/>
    <metric_log remove="1"/>
    <query_log remove="1"/>
    <query_thread_log remove="1"/>
    <trace_log remove="1"/>
    </yandex>
  • https://t.me/clickhouse_ru
    вы что хотели сказать-то картинкой?
    это ничего не доказывает, во первых это не тот конфиг.
  • спасибо )
  • https://t.me/clickhouse_ru
    @aksimemor #211104 09:17 PM, 24 Mar 2021
    Подскажите, как в clickhouse можно распарсить string следующего формата:

    [
    {
    "action_type": "type_1"
    },
    {
    "action_type": "type_2"
    }
    ]
  • https://t.me/clickhouse_ru
    JsonExtract посмотрите в эту сторону
  • https://t.me/clickhouse_ru
    это две строки или одна?
  • https://t.me/clickhouse_ru
    @aksimemor #211107 09:23 PM, 24 Mar 2021
    Это одна строка в которой много объектов с разной структурой
  • https://t.me/clickhouse_ru
    а тогда лучше монгодб, тут КХ не подойдет
  • https://t.me/clickhouse_ru
    @aksimemor #211109 09:26 PM, 24 Mar 2021
    спасибо, видимо стоит воспользоваться питоном для парсинга, не сильно хочется ставить монго ради одного источника данных
  • @kaa1981 #211110 09:52 PM, 24 Mar 2021
    Joined.
  • @n_bes #211111 10:12 PM, 24 Mar 2021
    Joined.
  • 25 March 2021 (151 messages)
  • @Mr_A275 #211112 01:30 AM, 25 Mar 2021
    Коллеги, вопрос из теории: Ускоряет ли реплицирование выполнение запросов в ClickHouse?
  • Конкретно одного запроса, на практике - Нет.

    Но если у вас много запросов в секунду, никто не запрещает кидать их на разные реплики и масштабироваться.
  • https://t.me/clickhouse_ru
    decimal есть вполне себе живой
  • https://t.me/clickhouse_ru
    две реплики с одинаковыми данными могут прососать больше distributed запросов чем одна
  • @1265400383 #211116 06:50 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @ilia_vo #211117 07:29 AM, 25 Mar 2021
    Joined.
  • @uname91 #211118 07:37 AM, 25 Mar 2021
    * провокационно-еретическое*

    А вот круговая репликация, которая здесь всячески осуждается и порицается, сразу же задействует в обработке запросов не половину, а вообще все ноды кластера.
    Как бы максимально эффективное использование всего железа :P
  • https://t.me/clickhouse_ru
    нод то может быть и больше. но диски и CPU на этих нодах не резиновые и осуждается такая схема потому что ее расширять нереально... сразу гарантии ради которых она создавалась теряются...

    то есть допустим было 3 железки, 9 нод clickhouse, разбиты как circular
    все круто, кластер спокойно переживает падение 2 из 3 серверов,

    теперь вопрос, как сюда добавить 4й сервер? ;)
  • @DigDiver #211120 07:55 AM, 25 Mar 2021
    Добрый день, как правильно выбрать ORDER BY, если
    количество user_id - сотни тысяч
    количество domain для каждого user_id - до 100
    Сейчас так:
    ORDER BY (user_id, report_date, domain)
    Будет ли быстрее поиск, если сделать так:
    ORDER BY (user_id, domain, report_date)

    В where всегда есть эти три поля.
  • @pavlov_m #211121 08:01 AM, 25 Mar 2021
    Добрый день. В клике есть форматирование чисел? Например чтобы десятичным разделителем была запятая, а не точка
  • @n_bes #211122 08:04 AM, 25 Mar 2021
    @milovidov_an привет, я тут из-за твоего доклада про сборку clickhouse, есть пару вопросов. Если вы вкорячили большую часть musl, почему было не всунуть её всю? Говорил, что fuzzing включаете на час, как это происходит? Отдельная джоба на ci, или сервис, как у гугла, куда закидываете бинарник и потом ждёте от него вестей (по почте?)?
  • https://t.me/clickhouse_ru
    report_date, domain, user_id

    от менее кардинальных, до более кардинальных

    report_date в начало и еще PARTITION BY toYYYYMM(report_date)
    обычно чтобы быстрые range запросы по дате были (дата обычно в каждом запросе есть)
  • https://t.me/clickhouse_ru
    @mikhailberg #211124 08:09 AM, 25 Mar 2021
    кстати, вопрос
    а в чем концептуальная разница между partition by toStartOfMonth(date) и toYYYYMMM(date) - только в хранимом типe данных ?
  • @bpfaxriddin #211125 08:10 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    вроде где то было, что дату можно не класть в ордер, т.к. если она в партиции то уже проиндексирована
  • Но везде в примерах дата входит в ордер. Вот из документации
    ENGINE MergeTree()
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (CounterID, EventDate)
  • https://t.me/clickhouse_ru
    нет
    если дата в партиции это просто значит что сначала будут выбрана партиция
    но если нет в ORDER BY то внутри партиции будут просканированы все data parts (system.parts)
    и это будет медленно, потому что дата будет отсуствовать в mrk файлах... соответсвенно последовательно будут открываться .bin файлы распаковываться и фильтроваться, это будет ДОЛГО
  • https://t.me/clickhouse_ru
    да, toYYYYYMM это 32bit interger а toStartOfMonth это 64bit integer
    mrk файлы будут жирнее
  • По постановке вопроса - не совсем понял, почему 3 железки, но 9 нод кликхауса.
    Вы подразумеваете тройную репликацию? Если так, то это очень суровое требование, которое, наверное, в значительном числе случаев избыточное.

    Для 3 железных серверов под круговой репликацией я имел в виду схему:
    s - shard, r - replica
    [host1]: s1r1, s3r2
    [host2]: s2r1, s1r2
    [host3]: s3r1, s2r2
    Она падения 2 из 3 не переживёт, но (в общем случае) при вылете нескольких НЕсмежных N из M должна остаться работоспособной.

    Теперь появился host4, как расширяться?
    По сравнению с исходным состоянием целевое состояние теперь:
    ...
    [host4] s4r1, s3r2
    [host1] s1r1, s4r2

    Дальше если совсем прямолинейно пойти, сперва скопировав данные всех старые партиции (в которые данные уже не поступают) 2й реплики 3го шарда с host1 на host4,
    затем выключить host1 (кластер работоспособен)
    затем в зукипере 'host' в описании 2й реплики 3го шарда изменить с host1 на host4
    добавить s41 на host4
    удалить s3r2 с host1, включить host1
    добавить s4r2 на host1
    как-то так?
  • На практике я это ещё не проверял, так что может описание добавления новой ноды где-то ошибочно. И да, тут уже кажется было несколько ограничений и граблей по дороге... В частности не поплохеет ли зукиперу от такой подмены, и сумеет ли он (продолжая получать новые данные от s3r1) нормально восстановить несколько отсутствующих партиций s3r2 на host4
  • https://t.me/clickhouse_ru
    @Scoundrell86 #211132 09:09 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @katefokiy #211134 09:28 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @psivash #211135 09:33 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    я подразумеваю "circular replication"
    она подразумевает что на одной железке крутятся реплики от разных шардов
    один шард как минимум на 2х железках крутится

    3 железки могут обслуживать 3 шарда кликхауса по 2 репилики в каждом итого 6 clickhouse-server
    такая схема переживет отключение 1 сервера из 3

    при добавлении вашей схемы надежность всей системы снижается
    мы все еше переживаем потерю 1 сервера из 4
    но вероятность того что мы переживем падение 2 серверов из 4 без потери данных, существенно меньше
    извините, я математику забыл и не могу сказать насколько =(

    соответсвенно надо либо делать коэффициент репликации 3 и 3 ноды ch уже в железку могут не влезть
    либо добавлять большее кол-во серверов что в итоге приводит к схеме 1 железка = 1 clickhouse-server
  • Ок, пусть тройная репликация.
    Но концептуально примерно то же самое, что и с двойной, просто с бубном надо прыгать значительно более активно.

    Было
    host1: s1r1, s3r2, s2r3
    host2: s2r1, s1r2, s3r3
    host3: s3r1, s2r2, s1r3
    + host4

    Надо:
    host1: s1r1, s4r2, s3r3
    host2: s2r1, s1r2, s4r3
    host3: s3r1, s2r2, s1r3
    host4: s4r1, s3r2, s2r3

    Для этого должны переехать:
    s4r2 и s3r3 с host1 на новый host4
    s3r3 с host2 на host1
  • https://t.me/clickhouse_ru
    ну в общем, оно такое себе все равно выходит
    надежность выше, но риски по перформансу и эксплуатации мне кажется выше

    если что clickhouse-operator умеет в Circular Pod AntiAffinity
    https://github.com/Altinity/clickhouse-operator/blob/master/docs/chi-examples/13-distribution-02-3x3-circular-replication.yaml
    clickhouse-operator/13-distribution-02-3x3-circular-replication.yaml at master · Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/13-distribution-02-3x3-circular-replication.yaml at master · Altinity/clickho...

  • @chghehe #211139 10:10 AM, 25 Mar 2021
    Из-за чего может быть, скажем так, лаг данных в КХ? Лагом я называю то, что данные в SELECT "отстают" от тех, которые вставляются сейчас. Причем в моем случае на несколько часов (хотя еще 12 часов назад этот лаг был 15 минут).

    Что можно почитать на эту тему? Как форсировать этот лаг, если это возможно?
  • Вы делаете (успешный) INSERT, но вставленные данные в SELECT становятся доступны с большой задержкой до нескольких часов?
    Вставляете в DISTRIBUTED таблицу?
  • Да, именно.
    Нет, не DISTRIBUTED.
  • Поверх таблицы, куда вставляются данные, есть несколько MV с AggregatingMergeTree (вычисляю HIGH, LOW, OPEN, CLOSE на нескольких таймфреймах). Данные поступают интенсивно, но в батчах от 1000 строк (биржевые данные).
  • А несколькочасовая задержка - она про появление вставленных данных в AggregatingMergeTree таблицах? В базовой (исходной) таблице данные сразу появляются?
  • И там, и там. В исходной таблице данные также "отстают" на SELECT-ах и на примерно такой же интервал времени.
  • Я вчера (видимо, зря) создавал MV с POPULATE (хотел попробовать). Не знаю, связано это было с этим или нет, но через 6-8 часов появились вот эти задержки. Тот вью я грохнул и создал без POPULATE.
  • В логах в целом нормальная ситуация? Спама ошибок нет?
  • Ошибок нет.
    В каждую секунду много сообщений типа removing part from filesystem, резервирования на диске, мерж кусков.
  • https://t.me/clickhouse_ru
    @iassasin #211148 10:35 AM, 25 Mar 2021
    Добрый день. Например, в документации есть настройка MergeTree таблицы enable_mixed_granularity_parts, там не сказано ее дефолтное значение, поэтому я хочу посмотреть какое актуальное для нее значение у уже существующей таблицы. Есть ли какой то способ это сделать типа SHOW SETTINGS table?
  • SELECT * FROM system.merge_tree_settings WHERE name LIKE '%mixed_granularity%';
  • https://t.me/clickhouse_ru
    @iassasin #211150 10:38 AM, 25 Mar 2021
    Ага, т.е. чтобы получить актуальные настройки таблицы, надо сравнить вывод SHOW CREATE TABLE секция SETTINGS, и если там не было значения, взять его из дефолта из system.merge_tree_settings?
  • https://t.me/clickhouse_ru
    @iassasin #211151 10:40 AM, 25 Mar 2021
    Похоже что да, спасибо!
  • @uname91 #211152 10:42 AM, 25 Mar 2021
    Либо system.replicated_merge_tree_settings для RMT таблиц
    "Allow user to specify settings for ReplicatedMergeTree* storage in <replicated_merge_tree> section of config file. It works similarly to <merge_tree> section. For ReplicatedMergeTree* storages settings from <merge_tree> and <replicated_merge_tree> are applied together, but settings from <replicated_merge_tree> has higher priority. Added system.replicated_merge_tree_settings table. #13573 (Amos Bird)."
  • Я пас:(
    Почему в исходной таблице с такой большой задержкой успешно вставленные данные не доступны в запросах, только 1 возможность приходит в голову - перегруженная асинхронная вставка в distributed, когда он сильно не успевает шардировать по кластеру. Но это не ваш случай.

    Если бы были бы проблемы с самой вставкой (типа слишком большого числа партов), то это проявилось бы в логе (да и INSERTы кажется ошибку выдают в таком случае). Но если в базовую таблицу вставились, мелкий part от вставки образовался - то в SELECTе должно быть видно.
  • https://t.me/clickhouse_ru
    @agkucherov #211154 11:02 AM, 25 Mar 2021
    Ребят, какой best practice для перевода таблицы из одного типа партиции в другой?, допустим хочу одну таблицу перевести с помесячного партицирования на понедельную, нельзя это сделать налету? без пересоздания таблицы и перекидывания кучи данных
  • @opsss148 #211155 11:03 AM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @forward32 #211156 11:17 AM, 25 Mar 2021
    Здрасте, были у кого-то проблемы с tcpшным go драйвером и pingом?
    А именно то, что для read-only пользователя эта операция недоступна?
  • https://t.me/clickhouse_ru
    @forward32 #211157 11:44 AM, 25 Mar 2021
    Хм, оно даже SELECT 1 не дает сделать из под ro-юзера, интересно, ЧЯДНТ🤨
  • https://t.me/clickhouse_ru
    парты с toyyyymm назваются короче. в зк места меньше занимают
  • https://t.me/clickhouse_ru
    Да нет конечно.
    Партиционирование вообще не влияет на это.
    В mrk хранятся 2 64 битных смещенения для каждой гранулы
    В mrk2 2 64 + 64 бит размер гранулы
  • https://t.me/clickhouse_ru
    Ошибка-то какая? Возможно он settings передает
  • https://t.me/clickhouse_ru
    ну само то значение тоже в mrk хранится. разве нет?
  • https://t.me/clickhouse_ru
    Authentication failed: password is incorrect or there is no user with such name
    Пользователь такой точно есть, я им из клиента коннекчусь,
    При этом rw-пользователем тем же кодом вполне себе ок коннектится.
  • https://t.me/clickhouse_ru
    @den_crane #211164 11:56 AM, 25 Mar 2021
    Для более похожих имен каталогов со старым форматом и более коротких имен партов в зк.
  • https://t.me/clickhouse_ru
    вообще нигде не хранится. Только имя каталога на диске

    Партиционирование вообще никак не связано с индексами и idx mrk bin
  • https://t.me/clickhouse_ru
    host / host_regexp в профиле может быть какой нибудь который коннектиться не позволяет?
  • https://t.me/clickhouse_ru
    /me пойдет убьется ап стенку
  • https://t.me/clickhouse_ru
    профиль максимально тупой:
    <allow_databases>
    <database>default</database>
    </allow_databases>
    <networks incl="networks" replace="replace">
    <ip>::/0</ip>
    </networks>
    <profile>readonly</profile>
    <quota>default</quota>
    mailрушный http-драйвер с этим пользователем работает ок
  • https://t.me/clickhouse_ru
    Ipv6 vs ipv4 ?
  • https://t.me/clickhouse_ru
    Это где-то конфигурится?
    Сознательно ничего, кроме <ip>::/0</ip> не менялось и настройки одинаковы для ro и rw пользователей
  • https://t.me/clickhouse_ru
    хм, а снимите tcpdump для вашего golang приложения?
    и тоже самое с clickhouse-client?

    вообще странно конечно...

    интересно clickhouse-client передает или нет ping какой нибудь пока работает...?
    или вообще без них реализван ... clickhouse-client —help | grep ping ничего такого не показывает

    Судя по коду, там прямо на уровне протокола это должно работать
    https://github.com/ClickHouse/clickhouse-go/tree/master/clickhouse_ping.go#L21
    ClickHouse/clickhouse-go

    Golang driver for ClickHouse. Contribute to ClickHouse/clickhouse-go development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Да пофиг на ping, у меня SELECT 1 не работает)
  • https://t.me/clickhouse_ru
    <ip>0.0.0.0/0</ip>
    если попробовать?

    код на golang минимальный и конфиги для ro и rw юзера куда нибудь на gist.github.com выложить?
  • https://t.me/clickhouse_ru
    попробовал, same, ну и было бы странно, если для rw работало, а для ro нет - rw отличается от ro только тем, что у него в профиле default-профиль испрользуется
  • https://t.me/clickhouse_ru
    @BloodJazMan #211177 12:12 PM, 25 Mar 2021
    clickhouse-client значит сейчас с ro юзером работает?
  • https://t.me/clickhouse_ru
    @forward32 #211178 12:13 PM, 25 Mar 2021
    yeap, ровно теже креды, что в приложении - все ок
  • https://t.me/clickhouse_ru
    @forward32 #211179 12:13 PM, 25 Mar 2021
    select 1 дает сделать
  • https://t.me/clickhouse_ru
    @BloodJazMan #211180 12:14 PM, 25 Mar 2021
    а пароль для ro юзера задан?
    а если убрать пароль?
  • https://t.me/clickhouse_ru
    @forward32 #211181 12:17 PM, 25 Mar 2021
    задан
    без пароля работает
  • https://t.me/clickhouse_ru
    @BloodJazMan #211182 12:18 PM, 25 Mar 2021
    о! интересно
    а он как задан?
    plaintext или какой нибудь sha1 hash?
  • https://t.me/clickhouse_ru
    @forward32 #211183 12:19 PM, 25 Mar 2021
    sha1
  • https://t.me/clickhouse_ru
    @BloodJazMan #211184 12:19 PM, 25 Mar 2021
    а если plaintext в конфиге юзера пароль задать?
  • https://t.me/clickhouse_ru
    @BloodJazMan #211185 12:20 PM, 25 Mar 2021
    а если sha256 ?
    вообще тут интересно, по идее пароль передается в открытом виде в протоколе по TCP

    можете tcpdump снять чтобы сравнить что отсылает clickhouse-go и clickhouse-client?
  • https://t.me/clickhouse_ru
    @forward32 #211186 12:20 PM, 25 Mar 2021
    ща попробуем)
  • https://t.me/clickhouse_ru
    @forward32 #211188 12:22 PM, 25 Mar 2021
    интересно, локально он с sha1 ок работает, но на проде нет
    версия КХ и версия софта одна
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211189 12:29 PM, 25 Mar 2021
    Всем привет, никто не сталкивался с таким, делаешь select count(*) получаешь определенное значение X, выполняю insert select, и получаешь каунт с итоговой таблицы X - 10%
  • Если втянуть весь Musl, то не получится открывать динамические библиотеки (для ODBC драйверов и для CatBoost). Скорее всего там есть способ, но придётся ещё сильно помучаться.

    Ещё проблема в мелочах с разными несовместимостями при сборке 3rd-party библиотек (надо исправлять).

    Фаззинг в течение часа делается в CI, отдельной задачей, в каждом pull request.
  • @n_bes ↶ Reply to #211190 #211191 12:33 PM, 25 Mar 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    что если поставить set read_backoff_min_latency_ms=0
    Какая версия КХ у вас?
  • https://t.me/clickhouse_ru
    @MikhailYushkov #211193 12:34 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    до этого какая была не запомнил, думал дело в версии и поставил самую свежую 21.3.3.14-2. Но результат такой же
  • https://t.me/clickhouse_ru
    движок какой у таблицы в которую льете?
  • https://t.me/clickhouse_ru
    mergetree на которую лью тоже
  • https://t.me/clickhouse_ru
    кек, судя по дампу, goшный драйвер потерял символ + из пароля по дороге...
  • https://t.me/clickhouse_ru
    и сколько строк? что если у таблицы в которую инсерт, для теста сделать engine=Log ?
  • https://t.me/clickhouse_ru
    дак может прост мерж срабатывает ? особенно если делать count(*)
  • https://t.me/clickhouse_ru
    select count(*) from db.table1 where record_type = 6 // 358960865
    insert into db.table2 select * from db.table1 where record_type = 6
    select count(*) from db.table2; // 358681260
  • https://t.me/clickhouse_ru
    и что мерж меняет для движка mergetree ?
  • https://t.me/clickhouse_ru
    это с engine=Log ?
  • https://t.me/clickhouse_ru
    нет, как было с mergetree, сейчас вот создаю таблицу с такой же структурой но с движком Log
  • https://t.me/clickhouse_ru
    ну мб я путаю с суммингмерж три

    есть две записи в таблице А
    insert into B select * from A

    в таблице B после мержа count(*) может вернуть 1, а не 2, тк те две записи смержились в одну
  • https://t.me/clickhouse_ru
    @191532473 #211205 12:47 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    хм, интересненько, к сожалению сейчас go драйвером толком никто не занимается, если у вас получится сделать PR и сделать тест, то можно вмержить
  • https://t.me/clickhouse_ru
    @forward32 #211207 12:49 PM, 25 Mar 2021
    yeap, постараюсь дойти до этого)
  • https://t.me/clickhouse_ru
    @forward32 #211208 12:50 PM, 25 Mar 2021
    mailрушным httpшным не занимаются
    tcpшным не занимаются
    эдак по миру пойдем☹️
  • https://t.me/clickhouse_ru
    ну скажем так, мантейнеры обоих драйверов работают уже в других областях
    и чтобы они вмержили их надо пинговать и чтобы PR был хороший с тестами
  • https://t.me/clickhouse_ru
    @forward32 #211210 12:51 PM, 25 Mar 2021
    да-да, однажды я уже протолкнул ПР Кириллу, попробуем повторить)
  • https://t.me/clickhouse_ru
    @dokwork #211211 01:13 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @dsunterov #211212 01:15 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Vladimir_coal #211213 01:16 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @acteek #211214 01:23 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Залил в engine = Log, залилось столько сколько должно быть
  • https://t.me/clickhouse_ru
    чудеса. У таблицы MergeTree точно движок MergeTree а не ReplacingMT ?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211217 01:46 PM, 25 Mar 2021
    ага, у таблицы такие хар-ки
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(start_timestamp)
    PRIMARY KEY start_timestamp
    ORDER BY (start_timestamp, record_type)
    TTL start_timestamp + toIntervalDay(731)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211218 01:46 PM, 25 Mar 2021
    всё это дело происходит в рамках одного экземпляра
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211219 01:47 PM, 25 Mar 2021
    я раннее указывал в этой клиент сессии set read_backoff_min_latency_ms=0, это может хоть как-то повлиять? Мб с этой опцией mergetree попробовать залить
  • https://t.me/clickhouse_ru
    в порядке бреда - у вас при вставке не может быть так что TTL отрезает вот эти 10%?
  • https://t.me/clickhouse_ru
    ┌─max(start_timestamp)─┬─min(start_timestamp)─┐
    │ 2019-10-31 23:59:59 │ 2019-03-25 15:07:21 │
    Прямо сегодня можно сказать, что часть записей усекается, дня 3-4 назад было также
  • https://t.me/clickhouse_ru
    Попробую с расширенным ТТЛ залить также в mergetree
  • https://t.me/clickhouse_ru
    @Sablast #211223 01:54 PM, 25 Mar 2021
    попрбуйте вообще без него, чтоб уж наверняка)
  • https://t.me/clickhouse_ru
    ок) его то всегда можно задать)
  • https://t.me/clickhouse_ru
    так на источнике select count() ... where start_timestamp < now() - toIntervalDay(731)
  • @1412396476 #211226 02:02 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    есть записи, но кажется сейчас корректно тяжело вытащить, т.к. ТТЛ уже наступает на таймстемп
    Я сейчас уже заливаю без ТТЛ в mergetree
  • https://t.me/clickhouse_ru
    ТТЛ я убрал совсем, но всё равно есть разница, в исходной таблице 358 648 861, в конечной 358 960 865
  • https://t.me/clickhouse_ru
    @cocoexe #211229 03:20 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    теперь больше чем было?
  • https://t.me/clickhouse_ru
    @lenstr #211231 03:30 PM, 25 Mar 2021
    Всем привет! Подскажите, как объяснить следующий результат селекта?

    create table Test (StartTime DateTime) engine = Memory;

    insert into Test (StartTime) values (2020-01-01);

    select StartTime from Test;

    2105-06-18 11:19:55
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211232 03:30 PM, 25 Mar 2021
    было до этого:
    в исходной 358 960 865
    в конечно 358 681 260
  • https://t.me/clickhouse_ru
    @lenstr #211233 03:30 PM, 25 Mar 2021
    Тут допущена ошибка в values, пропущены кавычки
  • https://t.me/clickhouse_ru
    @lenstr #211235 03:34 PM, 25 Mar 2021
    В базу сохраняется 2105-06-18 11:19:55, я бы ожидал хотя бы 1970-01-01 00:33:38 или ошибку. Похоже на переполнение DateTime, но что к нему приводит вопрос
  • https://t.me/clickhouse_ru
    @zholmyrza_t #211236 03:40 PM, 25 Mar 2021
    Ребята извиняюсь, как оказалось всё дело было в исходной таблице, там стоял ТТЛ о котором я не знал. Приношу свои извинения! @den_crane :))
  • https://t.me/clickhouse_ru
    select 2020-01-01
    --
    2018

    select toDateTime(2018)
    --
    1970-01-01 00:33:38
  • https://t.me/clickhouse_ru
    @lenstr #211238 03:42 PM, 25 Mar 2021
    Да, но когда делаешь insert, в базу записывается 2105-06-18 11:19:55
  • https://t.me/clickhouse_ru
    select timezone()
  • https://t.me/clickhouse_ru
    @lenstr #211240 03:43 PM, 25 Mar 2021
    Etc/UTC
  • https://t.me/clickhouse_ru
    да,
    но в общем-то КХ для неверных дат любую чепуху может получить, там парсер для скорости что угодно жует
  • https://t.me/clickhouse_ru
    @den_crane #211242 03:46 PM, 25 Mar 2021
    select toDate('neff-01-01') ;
    --
    1970-01-01
  • https://t.me/clickhouse_ru
    @den_crane #211243 03:46 PM, 25 Mar 2021
    toDate('202a-01-92')
  • https://t.me/clickhouse_ru
    @lenstr #211244 03:48 PM, 25 Mar 2021
    тут хоть как-то можно объяснить) не распарсили строку - подставили 0
  • @softbot_xxl #211245 04:21 PM, 25 Mar 2021
    Кликхаус знает про NUMA? Учитывает ли он ее при распределении задач и выделении памяти?
  • https://t.me/clickhouse_ru
    не учитывает. КМК пока нет собственного буфер-кеша, тут ничего не сделать хорошего
  • https://t.me/clickhouse_ru
    откройте issue -- unexpected behaivour
    может кто-нибудь посмотрит
  • Ок, спасибо
  • @user93 #211252 06:24 PM, 25 Mar 2021
    Joined.
  • @user93 #211253 06:26 PM, 25 Mar 2021
    Есть таблица с событиями, одно из полей это ip с которого пришло событие. А как-то можно ускорить запросы вида

    select * from events final where ip1 = IPv4StringToNum('8.8.8.8');

    ip1 - это просто поле, в order by не входит
  • мб не использовать final?
  • @user93 ↶ Reply to #211254 #211255 06:29 PM, 25 Mar 2021
    таблица ReplacingMergeTree, на клиенте записи схлопывать уже?
  • врядли это будет лучше, тут я не уверен.
    Но при final данные мёржатся во время выполнения запроса. У вас там полноценный мердж вызывается(
  • @vvvjhaq #211257 06:33 PM, 25 Mar 2021
    В целом в КХ лучше использовать подход с агрегацией, который бы смог откинуть те самые дубликаты в вашем случае
  • @user93 ↶ Reply to #211257 #211258 06:33 PM, 25 Mar 2021
    поясните пожалуйста , я думал что ReplacingMergeTree - это и есть удаление дубликатов в базе, поэтому и выбрали этот движок
  • Да, этот движок в фоне удаляет дубликаты записей c одинаковым ключом сортировки. Но слияние происходит в неизвестный момент времени, и вообще не дает гарантии их отсутствия.
    Но когда вы выполняете запрос с final, вы вызываете мердж. И соответсвенно это займет какое-то время. Думаю, бОльшее, чем без него
  • @vvvjhaq #211260 06:40 PM, 25 Mar 2021
    final нормально работает на небольшой таблице, если она большая все же лучше через агрегацию и группировки получить данные.
  • @user93 ↶ Reply to #211260 #211261 06:41 PM, 25 Mar 2021
    Понял, спасибо
  • @pavel_maksimow #211262 06:44 PM, 25 Mar 2021
    Подскажите пожалуйста, как отключить эту проверку?
    Estimated query execution time (698.2108063970212 seconds) is too long. Maximum: 500. Estimated rows to process: 34563546: While executing MergeTreeThread
  • https://t.me/clickhouse_ru
    @Kubafashion #211263 06:50 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    вопрос с подвохом? в смысле ошибка возникает прямо при запуске запроса?
    тогда timeout_before_checking_execution_speed=0
  • запрос отправляется, но через несколько минут падает
  • https://t.me/clickhouse_ru
    тогда видимо max_execution_time = 0
  • попробую, спасибо
  • https://t.me/clickhouse_ru
    @Kubafashion #211268 06:58 PM, 25 Mar 2021
    Привет
    Подскажите как настроить сериализатор в Джанго кликхаус
    Подружить получилось, в консоль выводится содержимое
    Но не очень понимаю как отправить сериализованные данные
    Или может у кого то есть проект на гитхабе призучать?
    Спасибо
  • https://t.me/clickhouse_ru
    обычно ограничение установлено не просто так, как-то странно что вы спрашиваете это в чате.
    т.е. вас админ ограничил, а вы пытаетесь это обойти
  • https://t.me/clickhouse_ru
    @ketovx #211270 07:32 PM, 25 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @UglyKoyote #211271 07:41 PM, 25 Mar 2021
    Joined.
  • 26 March 2021 (158 messages)
  • @1428942576 #211275 01:36 AM, 26 Mar 2021
    Joined.
  • @1705294448 #211276 03:00 AM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @BuddyGlass #211281 04:47 AM, 26 Mar 2021
    Добрый день!
    Вижу на реплике много записей в логе вида:
    <Information> HTTPSessionPool: No free connections in pool. Waiting.
    не могу понять что именно происходит, какой пул переполнился и что с этим делать.
    В документации ничего похожего не нашел.
    Кто-нибудь сталкивался с подобным?
  • Посмотрите поиском в истории канала (группы) по слову background_fetches_pool_size - возможно это как раз ваш случай
  • https://t.me/clickhouse_ru
    Спасибо большое!
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211285 09:12 AM, 26 Mar 2021
    Добрый день.
    как посмотреть текущие реалтайм настройки сервера?
    установить написано как SET setting=value
    а как узнать ?
  • select * from system.settings;
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211287 09:31 AM, 26 Mar 2021
    спасибо огромное.

    тут сразу следующий вопрос. напоролся на ошибку

    Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (total) exceeded: would use 1.61 GiB (attempt to allocate chunk of 4456448
    bytes), maximum: 1.61 GiB.

    в пустую таблицу заливаю из файла данные

    INSERT INTO t1 (u1) FORMAT CSV

    раньше отрабатывало. данных сильно больше не стало. только CH обновлял. настройки сервера почти дефолтовые.
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211288 09:31 AM, 26 Mar 2021
    сервер одиночный
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211289 09:36 AM, 26 Mar 2021
    пишут про distributed_aggregation_memory_efficient = 1. но он включен и вроде как для одиночных серверов и не актуально
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211290 09:40 AM, 26 Mar 2021
    и самое интересное что сам инсерт отработал целиком нормально.
    это уже после того как он закончил - сервер высыпал ошибку
  • https://t.me/clickhouse_ru
    @uncletimmy3 #211291 09:42 AM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    ну ошибку то наверное тогда на другое вывалило
    смотрите логи /var/log/clickhouse-server/ там query-id есть в которой ошибка случилась
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211293 10:02 AM, 26 Mar 2021
    нет. там между завершением инсерта и выдачей ошибки 0,003 секунды
    и в это время к КХ точно никто не обращается
    вот лог полнее
  • https://t.me/clickhouse_ru
    @kozlov_alpha #211294 10:02 AM, 26 Mar 2021
    2021.03.26 03:53:39.821266 [ 2282339 ] {} <Error> auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Code: 241, e.dis
    playText() = DB::Exception: Memory limit (total) exceeded: would use 1.61 GiB (attempt to allocate chunk of 4205312 bytes), maximum: 1.61 GiB: (while reading
    column ProfileEvent_PerfStalledCyclesBackend): (while reading from part /var/lib/clickhouse/store/4de/4de85eff-9550-4021-ac5b-11ead5ab8eb6/202103_174297_17684
    7_510/ from mark 3 with max_rows_to_read = 4189): While executing MergeTreeSequentialSource, Stack trace (when copying this message, always include the lines
    below):
  • @demetranadya #211295 10:14 AM, 26 Mar 2021
    как файлы с БД перенести на другой SSD
  • https://t.me/clickhouse_ru
    @kiselevyav #211296 10:31 AM, 26 Mar 2021
    Подскажите, есть ли известные приемы оптимизации запроса по подсчету числа "новых" пользователей на сайте за период времени? Сейчас мы за период времени берем число уникальных пользователей и left джоиним с уникальными пользователями с всю предыдущую историю (работает долго):

    select countDistinct(neww.user_id)
    from
    (select distinct user_id
    from clicks
    where click_time between '2021-03-25' and '2021-03-26'
    ) neww
    left join
    (select distinct user_id
    from clicks
    where click_time < '2021-03-25'
    ) oldd
    where empty(oldd.user_id) = 1
  • https://t.me/clickhouse_ru
    SELECT user_id FROM clicks GROUP BY user_id HAVING min(click_time)) between '2021-03-25' and '2021-03-26'
  • https://t.me/clickhouse_ru
    Костя, спасибо за идею!
  • https://t.me/clickhouse_ru
    @evegni #211300 10:35 AM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #211301 10:36 AM, 26 Mar 2021
    или если это регулярно надо делать, то можно создать MV которая будет хранить user_id, min(click_time) и ходить уже в эту таблицу
  • https://t.me/clickhouse_ru
    @kiselevyav #211302 10:38 AM, 26 Mar 2021
    Да, как раз уже идем в этом направлении
  • @dan198x #211303 10:40 AM, 26 Mar 2021
    Joined.
  • @dan198x #211304 10:47 AM, 26 Mar 2021
    всем привет.

    с питонячим clickhouse-driver кто-нибудь сталкивался с таким? может знаете как обходить?

    click.execute(
    'SELECT formatDateTime(now(), '%Y-%m') AS year_month, %(dc)s AS name',
    {'dc': 'ED'},
    )

    .../clickhouse_driver/client.py", line 564, in substitute_params
    return query % escaped
    ValueError: unsupported format character 'Y' (0x59) at index 36
  • https://t.me/clickhouse_ru
    Так тут проблема в питоне, а не в драйвере
  • https://t.me/clickhouse_ru
    вот этот вот BackgroundJobExecutor это к запросу отношения не имеет
    там ниже stacktrace покажите его
  • https://t.me/clickhouse_ru
    с остановкой сервера или без остановки сервера?
  • https://t.me/clickhouse_ru
    Можно заменить ваш конкретный formatDateTime на toYYYYMM, только "-" потеряете
  • https://t.me/clickhouse_ru
    click.execute(
    '''SELECT formatDateTime(now(), '%Y-%m') AS year_month, %(dc)s AS name''',
    {'dc': 'ED'},
    )
  • я так и делаю сейчас )
  • https://t.me/clickhouse_ru
    вам тут ниже решение подсказали, попробуйте и если ОК. напишите это решение в issue на github который вы завели
  • нет ((
  • https://t.me/clickhouse_ru
    Что пишет?
  • @dan198x #211314 10:58 AM, 26 Mar 2021
    а таже фигня ValueError: unsupported format character 'Y' (0x59) at index 31
  • https://t.me/clickhouse_ru
    Ммм, а можно %%Y-%%m?
  • https://t.me/clickhouse_ru
    @ilevd #211316 11:01 AM, 26 Mar 2021
    Всем привет, есть таблица с колонкой spool_date DateTime('Asia/Kamchatka'), таймзона клиента/сервера - `Europe/Moscow, выполняю два запроса:
    select vid, spool_date FROM messages_ou WHERE toDate(spool_date) = toDate('2021-03-24');

    select vid, spool_date, toDate(spool_date) = toDate('2021-03-24') res FROM messages_ou WHERE res = 1
    Которые возвращают разные результаты 😮 Похоже на то, что toDate() в блоке select учитывает таймзону колонки, а в блоке where - нет. Баг?
  • спасибо❤
  • https://t.me/clickhouse_ru
    @MakeReady #211318 11:05 AM, 26 Mar 2021
    Добрый день! Есть две таблицы с своими id. Записи в одной с id 1234 соответствуют записям с id 2345 в другой. И таких пар 4 штуки. Кажется можно объединить их используя массив. Но не могу найти похожих примеров в документации.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #211316 #211319 11:06 AM, 26 Mar 2021
    Сравните toTypeName(toDate(spool_date)) и toTypeName(toDate('2021-03-24')) - таймзоны одинаковые?
  • https://t.me/clickhouse_ru
    пока не понятно что нужно сделать, JOIN по таким id?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Table1
    Id name
    1234 Name1
    3456 Name2

    Table2
    Id SecondName
    2345 sName1
    4567 sName2

    [1234,2345],[3456,4567]

    Итог
    1234 2345 Name1 sName1
    3456 4567 Name2 sName2
  • https://t.me/clickhouse_ru
    @MakeReady #211323 11:16 AM, 26 Mar 2021
    вот это [1234,2345],[3456,4567] не хочется делать таблицей связей, хочется оставить в запросе
  • https://t.me/clickhouse_ru
    @MakeReady #211324 11:24 AM, 26 Mar 2021
    кажется что-то такое
  • https://t.me/clickhouse_ru
    @MakeReady #211325 11:24 AM, 26 Mar 2021
    SELECT test.*, c
    FROM test
    ARRAY JOIN array([1,1],[2,3]) as c
    WHERE test.id = arrayElement(c,1)
  • https://t.me/clickhouse_ru
    а id подчиняются именно такой логике?
  • https://t.me/clickhouse_ru
    @MakeReady #211327 11:38 AM, 26 Mar 2021
    нет, это я для удобства. На деле там совершенно разные значения
  • https://t.me/clickhouse_ru
    @Sablast #211328 11:38 AM, 26 Mar 2021
    они как то связаны?
  • https://t.me/clickhouse_ru
    @Sablast #211329 11:38 AM, 26 Mar 2021
    из одного можно восстановить другое?
  • https://t.me/clickhouse_ru
    @MakeReady #211330 11:39 AM, 26 Mar 2021
    нет, справочники из разных систем но об одном и том же.
  • https://t.me/clickhouse_ru
    @MakeReady #211331 11:39 AM, 26 Mar 2021
    но про разные атрибуты этого одного
  • https://t.me/clickhouse_ru
    @Sablast #211332 11:39 AM, 26 Mar 2021
    а как тогда по формальной логике можно понять что нужно именно эти строки соединять?
  • https://t.me/clickhouse_ru
    @MakeReady #211333 11:41 AM, 26 Mar 2021
    в том то и дело, никак 🙂 не я такой, жизнь такая
  • https://t.me/clickhouse_ru
    @MakeReady #211334 11:42 AM, 26 Mar 2021
    запрос заказчика, объедини нам это с этим. Поэтому и хочу чтобы эти пары остались в запросе
  • https://t.me/clickhouse_ru
    @MakeReady #211335 11:44 AM, 26 Mar 2021
    в общем как-то так
  • https://t.me/clickhouse_ru
    @MakeReady #211336 11:44 AM, 26 Mar 2021
    SELECT t1.*,c[1] c1 ,c[2] c2, t2.*
    FROM test t1
    ARRAY JOIN array([1,1],[2,3]) as c
    JOIN test as t2 ON t2.id = toInt32(c[2])
    WHERE t1.id = c[1]
  • https://t.me/clickhouse_ru
    @Sablast #211337 11:45 AM, 26 Mar 2021
    но где гарантия что у вас элементы будут на этих позициях всегда?
  • https://t.me/clickhouse_ru
    @MakeReady #211338 11:47 AM, 26 Mar 2021
    забавно что WHERE t1.id = c[1] - ОК а ON t2.id = c[2] не ок Type mismatch of columns to JOIN и ошибка на попытку FROM test t1, test t2 ARRAY JOIN
  • https://t.me/clickhouse_ru
    массив часть запроса, их там не будет только если кто-то отредактирует запрос
  • https://t.me/clickhouse_ru
    ну раз речь пошла о хардкоде то почему не записать маппинг прям в запрос?
  • https://t.me/clickhouse_ru
    @Sablast #211341 11:49 AM, 26 Mar 2021
    особенно если надо сделать всего 4 записи
  • https://t.me/clickhouse_ru
    @MakeReady #211342 11:49 AM, 26 Mar 2021
    серией условий?
  • https://t.me/clickhouse_ru
    @MakeReady #211343 11:50 AM, 26 Mar 2021
    потому что если уж делаешь ты хардкод, то вынеси константы в начало кода )))
  • https://t.me/clickhouse_ru
    @MakeReady #211344 11:53 AM, 26 Mar 2021
    что не такWITH [[1, 1], [2, 3]] AS c
    SELECT
    t1.*,
    c[1] AS c1,
    c[2] AS c2,
    t2.*
    FROM test AS t1
    ARRAY JOIN c
    INNER JOIN test AS t2 ON t2.id = toInt32(c[2])
    WHERE t1.id = (c[1]) ошибка DB::Exception: No alias for non-trivial value in ARRAY JOIN
  • https://t.me/clickhouse_ru
    да, добавить в первую таблицу - multiIf(Id=1234, 2345, Id=3456, 4567, null) as join_key и по нему делать джойн
  • https://t.me/clickhouse_ru
    @MakeReady #211346 12:19 PM, 26 Mar 2021
    можно и так, да
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    SELECT t1.*, t2.*, multiIf(t1.id = 1, 2, t1.id = 2, 3, null) as join_k
    From test t1, test t2
    WHERE join_k = t2.id менее наглядно, но вцелом ок
  • https://t.me/clickhouse_ru
    @Valenvaryon #211349 12:35 PM, 26 Mar 2021
    Error executing query INSERT INTO db.some_tbl (date, user_id, event_uuid, message, type) FORMAT TabSeparated: Poco::Exception. Code: 1000, e.code() = 2, e.displayText() = File not found: /var/lib/clickhouse/data/db/some_tbl/tmp_sizes.json, e.what() = File not found

    что еще tmp_sizes.json ?
  • https://t.me/clickhouse_ru
    @Valenvaryon #211350 12:37 PM, 26 Mar 2021
    не с TinyLog связано?
  • https://t.me/clickhouse_ru
    ну судя по stacktrace у вас реально отвалился Background Merge потому что ему памяти не хватило
    и это никак не относится к вашему INSERT запросу потому что {} вместо {query-uuid} в начале ошибки стоит

    сколько памяти на сервере всего?

    сколько стоит max_memory_usage \ max_memory_usage_ratio?
    советую почитать
    https://clickhouse.tech/docs/en/operations/settings/query-complexity/
    и
    посмотреть куда вообще уходит у вас память
    select formatReadableSize(sum(bytes_allocated)) from system.dictionaries;

    SELECT
    database,
    name,
    formatReadableSize(total_bytes)
    FROM system.tables
    WHERE engine = 'Memory'

    select formatReadableSize(sum(memory_usage)) from system.merges;

    select formatReadableSize(sum(memory_usage)) from system.processes;

    SELECT
    initial_query_id,
    formatReadableSize(memory_usage),
    formatReadableSize(peak_memory_usage),
    query
    FROM system.processes
    ORDER BY peak_memory_usage DESC
    LIMIT 10

    SELECT
    initial_query_id,
    formatReadableSize(memory_usage),
    query
    FROM system.query_log
    WHERE (event_date >= today()) AND (event_time >= (now() - 7200))
    ORDER BY memory_usage DESC
    LIMIT 10
    Restrictions on Query Complexity | ClickHouse Documentation

    Restrictions on Query Complexity Restrictions on query complexity are part of the settings. They are used to provide saf

  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE db.some_tbl ?
    папка /var/lib/clickhouse/data/db/some_tbl/ говорит о том что это именно данных каких то не хватает (clickhouse/data данные, clickhouse/metadata/ sql файлы с определением таблиц)
  • https://t.me/clickhouse_ru
    @Valenvaryon #211353 12:40 PM, 26 Mar 2021
    ну то, что "File not found" - это нехватка файла - это понятно
  • https://t.me/clickhouse_ru
    @Valenvaryon #211354 12:40 PM, 26 Mar 2021
    в CREATE TABLE - это просто TinyLog
  • https://t.me/clickhouse_ru
    EXPLAIN SYNTAXT в начало добавьте и запустите
  • https://t.me/clickhouse_ru
    ну значит кто-то в вашем TinyLog поковырялся
  • https://t.me/clickhouse_ru
    тоже самое No alias for non-trivial value in ARRAY JOIN
  • https://t.me/clickhouse_ru
    ни у кого нет доступа к файловой системе, более того, эта чудо таблица создается на 5 минут
  • https://t.me/clickhouse_ru
    ARRAY JOIN c as arr ?
  • https://t.me/clickhouse_ru
    WITH [[1, 1], [2, 3]] AS c
    SELECT
    t1.*,
    arr[1] AS c1,
    arr[2] AS c2,
    t2.*
    FROM test AS t1
    ARRAY JOIN c as arr
    INNER JOIN test AS t2 ON t2.id = toInt32(arr[2])
    WHERE t1.id = (arr[1]) не работает
  • https://t.me/clickhouse_ru
    @daemiurg #211362 12:49 PM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @MakeReady #211363 12:49 PM, 26 Mar 2021
    а вот так работает
  • https://t.me/clickhouse_ru
    @MakeReady #211364 12:49 PM, 26 Mar 2021
    SELECT
    t1.*,
    arr[1] AS c1,
    arr[2] AS c2,
    t2.*
    FROM test AS t1
    ARRAY JOIN [[1, 1], [2, 3]] as arr
    INNER JOIN test AS t2 ON t2.id = toInt32(arr[2])
    WHERE t1.id = (arr[1])
  • https://t.me/clickhouse_ru
    @MakeReady #211365 12:50 PM, 26 Mar 2021
    то есть не работает именно перенос массива в WITH
  • https://t.me/clickhouse_ru
    Пишите багу, какая версия?
  • https://t.me/clickhouse_ru
    @MakeReady #211367 12:51 PM, 26 Mar 2021
    21.4.1.6200
  • https://t.me/clickhouse_ru
    А тю

    сделайте через transform
  • https://t.me/clickhouse_ru
    @MakeReady #211369 12:51 PM, 26 Mar 2021
    ??
  • https://t.me/clickhouse_ru
    @MakeReady #211370 12:52 PM, 26 Mar 2021
    а, понял, да, тоже ок
  • https://t.me/clickhouse_ru
    @unamedrus #211371 12:52 PM, 26 Mar 2021
    SELECT test.*, c
    FROM test
    INNER JOIN t2 ON (test.id = transform(t2.id,[],[]))
    WHERE test.id = arrayElement(c,1)
  • https://t.me/clickhouse_ru
    @unamedrus #211372 12:53 PM, 26 Mar 2021
    Либо этап transform лучше запихать в подзапрос и делать JOIN с подзапросом
  • https://t.me/clickhouse_ru
    @unamedrus #211373 12:53 PM, 26 Mar 2021
    Тогда хешмапа будет уже полностью готовая
  • https://t.me/clickhouse_ru
    @MakeReady #211374 12:53 PM, 26 Mar 2021
    да, в моем случае if удобнее, так как 3 значения эквивалентны 1
  • https://t.me/clickhouse_ru
    @MakeReady #211375 12:54 PM, 26 Mar 2021
    If(GroupCode IN ('02439', '02435', '02430'), 'Ч0011', null) join_key,
  • https://t.me/clickhouse_ru
    @unamedrus #211376 12:54 PM, 26 Mar 2021
    Ok, но если у вас несколько id будет, то transform может быть быстрее чем multiIf
  • https://t.me/clickhouse_ru
    учту! Спасибо!
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/455
    а какая у вас версия ClickHouse?
    Cannot open file tmp_sizes.json: No such file or directory, when renaming a table · Issue #455 · ClickHouse/ClickHouse

    Hello Since ClickHouse does not have truncate, I thought I would just create a new table with create ... as and then rename it: create table test (s String) engine=TinyLog; create table test_new as...

  • https://t.me/clickhouse_ru
    @Valenvaryon #211379 01:05 PM, 26 Mar 2021
    21.3
  • https://t.me/clickhouse_ru
    max_memory_usage дефолтовое. консоль показывает max_memory_usage │ 10000000000
    max_memory_usage_ratio не нашел
    max_server_memory_usage 0
    max_server_memory_usage_to_ram_ratio 0.9

    на сервере было 2Г. сейчас увеличил до 8Г + 8Г свопа
  • https://t.me/clickhouse_ru
    а движок базы какой ? Atomic?
    какая последовательность с этой таблицей действий перед фейлищемся INSERT?

    можете сделать grep some_tbl -r /var/log/clickhouse-server/ и расшарить результаты?
  • https://t.me/clickhouse_ru
    @Valenvaryon #211382 01:17 PM, 26 Mar 2021
    уже все, некогда было ждать, похоже исправилось заменой движка временных табличек c TinyLog на Log
  • @460254773 #211383 01:19 PM, 26 Mar 2021
    всем привет!
    в ближайшее время, планируем обновление кх до версии
    Altinity Stable Release 20.8.12.2

    текущая
    Altinity Stable Release 20.3.19.4
    последнее время придерживаемся только релизов Altinity
    подскажите пожалуйста, как наиболее правильно обновить кластер?
    кластер состоит из трёх шардов с тремя репликами на шард
    обновлялись всегда таким способом
    условно реплики1 каждого шарда
    потом реплики2 и реплики3
  • https://t.me/clickhouse_ru
    ну 2 гига это очень мало
    таблица в 100 колонок на insert аллоцирует 2 гига под буфера
    max_memory_usage │ 10000000000 - это 10G ...

    для малых объемов RAM есть настройка
    https://clickhouse.tech/docs/en/operations/settings/settings/#background_pool_size
    поставьте ее = 2 для 2 гигов
    почитайте что она значит
    Settings | ClickHouse Documentation

    Settings distributed_product_mode Changes the behaviour of distributed subqueries. ClickHouse applies this setting when

  • https://t.me/clickhouse_ru
    так у меня и таблица не большая - 10М записей всего
    и колонок под 20
    ну и как бы работало же...
  • https://t.me/clickhouse_ru
    ну в логи то можно глянуть все равно...
    grep some_tbl -r /var/log/clickhouse-server/ | grep дата-когда-возникла-ошибка
    может показать картинку вполне ясно

    или у вас доступа на сервер нет?
    тогда попробуйте поискать в system.text_log если у вас создается
  • https://t.me/clickhouse_ru
    память это не только кол-во записей но и кол-во колонок, кол-во колонок и кол-во одновременных query + background процессы + словари существенно большую роль играют чем кол-во записей на память

    записи поточно и буфферизировано читаются \ пишутся
    соответсвенно под буфера нужна память

    кол-во записей влияет на скорость запроса
  • https://t.me/clickhouse_ru
    @708912204 #211389 01:56 PM, 26 Mar 2021
    Добрый день! Подскажите, пожалуйста, в каком файле конфигурации отключать запись логов и метрик? Вроде бы куда-то нужно добавить вот эту секцию? <yandex>
    <asynchronous_metric_log remove="1"/>
    <metric_log remove="1"/>
    <query_log remove="1"/>
    <query_thread_log remove="1"/>
    <trace_log remove="1"/>
    </yandex>
  • https://t.me/clickhouse_ru
    @Kubafashion #211390 03:44 PM, 26 Mar 2021
    Привет
    Знает кто-то как сериализовать данные в джанге от кликхауса
    Возможно есть пример какой нибудь?
    Спасибо
  • https://t.me/clickhouse_ru
    /etc/clickhouse-server/config.d/remove_logs.xml

    Но не советую так делать, оставьте хотя бы query_log. потом отлаживать замучаетесь
  • https://t.me/clickhouse_ru
    имеется ввиду Django ORM + ClickHouse ?
    https://github.com/carrotquest/django-clickhouse
    GitHub - carrotquest/django-clickhouse: django-clickhouse

    django-clickhouse. Contribute to carrotquest/django-clickhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Его использую, да
    И гайд читал этот
    Но сериализовать не могу
    В консоли все выводится но не в апи
  • https://t.me/clickhouse_ru
    ну сделайте issue на github у carrotquest с примером кода и ожидаемым результатом, может скажут что умное
  • https://t.me/clickhouse_ru
    Спасибо!
  • @spirid_sv #211396 04:31 PM, 26 Mar 2021
    Подскажите, как обозначить одинарную кавычку ', что-то совсем туплю... через '\'' не получается
  • https://t.me/clickhouse_ru
    @A_Kuznetsovaaa #211397 04:32 PM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    именно через \' оно внутри одинарных кавычек и задается

    какой язык\клиент?
  • https://t.me/clickhouse_ru
    Кавычки кавычками экранируются
  • DBeaver
  • @spirid_sv #211401 04:34 PM, 26 Mar 2021
    Конкретно - trim(BOTH '\'' from x)
  • @spirid_sv #211402 04:34 PM, 26 Mar 2021
    И ломается
  • https://t.me/clickhouse_ru
    от клиента разве зависит?
  • https://t.me/clickhouse_ru
    @nyoroon #211404 04:35 PM, 26 Mar 2021
    :) select '''' FORMAT TSVRaw

    SELECT '\''
    FORMAT TSVRaw

    '
  • По мне - нет, так же как и от языка...
  • Я надеюсь для функций такого изврата не надо? )))
  • https://t.me/clickhouse_ru
    м?
  • trim(BOTH '\'' from x) как правильно написать?
  • https://t.me/clickhouse_ru
    либо так, либо trim(BOTH '''' from x)
  • https://t.me/clickhouse_ru
    @nyoroon #211410 04:39 PM, 26 Mar 2021
    у меня и так, и так работает
  • точно, спасибо) смотрел на старую, не обрезанную версию и что-то совсем не догонял ))
  • https://t.me/clickhouse_ru
    в clickhouse-client нормально сработало

    wget -qO- "http://127.0.0.1:8123/?query=SELECT trim(BOTH '\\'' FROM '\\'test\\'')"
    тоже норм отработало

    выглядит как бага в JDBC\DBeaver
    1) попробуйте обновить DBeaver
    2) если используете HTTP для коннекта, то посмотрите через tcpdump + wireshark в каком виде JDBC драйвер отсылает запрос. что нибудь может проясниться
  • если trim(BOTH '\\'' from x), то Single quoted string is not closed: ''
  • https://t.me/clickhouse_ru
    @nblagodarnyy #211414 04:42 PM, 26 Mar 2021
    Никто не ловил такое? Версия 21.3.2.5. Стало возникать после обновления.

    Cause: java.lang.Throwable: Code: 1000, e.displayText() = DB::Exception: There was an error on [172.30.32.1:9000]: Poco::Exception. Code: 1000, e.code() = 13, e.displayText() = Access to file denied: /mount/rdisk2/metadata/tmp/test_count.sql (version 21.3.2.5 (official build)) (version 21.3.2.5 (official build))
  • https://t.me/clickhouse_ru
    а /mount/rdisk2 это какой интерфейс?
    tmp это имя базы данных?
  • https://t.me/clickhouse_ru
    не надо двойной слеш
    это только для bash + wget
  • https://t.me/clickhouse_ru
    я пока не знаю. это что-то служебное похоже.
  • https://t.me/clickhouse_ru
    ну и полный stacktrace ошибки покажите, он там в /var/log/clickhouse-server/ должен лежать
  • https://t.me/clickhouse_ru
    root@clickhouse02.dev:/home/nblagodarny# df | grep rdisk2
    /dev/mapper/U1574860725I1-rdisk2 3844099096 2811006056 837753368 78% /mount/rdisk2
  • https://t.me/clickhouse_ru
    @bokolesnik #211420 05:01 PM, 26 Mar 2021
    Привет всем, есть какой-то универсальный способ для поиска по тексту? Сейчас разбиваем строку на массив слов и потом hasAll(array, [‘hot, 'dog’]) по нужным словам
  • https://t.me/clickhouse_ru
    Есть. Elasticsearch, например.
  • https://t.me/clickhouse_ru
    снаружи проверяете, что в результирующем массиве нет 1, но кх под это не заточен

    https://clickhouse.tech/docs/ru/sql-reference/functions/string-search-functions/#multisearchallpositions
    Функции поиска в строках | Документация ClickHouse

    Функции поиска в строках Во всех функциях, поиск регистрозависимый по умолчанию. Существуют варианты функций для регистр

  • https://t.me/clickhouse_ru
    я имел ввиду это отдельный железный диск? или какой нибудь iscsi \ EBS ?
  • https://t.me/clickhouse_ru
    отдельный железный диск
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#available-types-of-indices
    ngram data skip index можно попробовать, но это не полнотекстовый поиск ни разу
    MergeTree | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    а по второму вопросу? SHOW DATABASES показывает что нибудь с названием tmp ?
  • https://t.me/clickhouse_ru
    Да, это база такая.
  • https://t.me/clickhouse_ru
    test_count - это таблица в ней, как выяснилось
  • https://t.me/clickhouse_ru
    ls -la /mount/rdisk2/metadata/tmp/test_count.sql
    какого owner показывает?

    SHOW CREATE DATABASE tmp;
    какой движок показывает?
    Atomic или Ordinal?

    ну и stacktrace нужен либо из логов возьмите /var/log/clickhouse-server
    либо из system.stacktraces поищите
  • https://t.me/clickhouse_ru
    -rw-r----- 1 clickhouse clickhouse
    SHOW выдает ошибку

    Code: 76, e.displayText() = DB::ErrnoException: Cannot open file /mount/rdisk2/metadata/tmp.sql, errno: 13, strerror: Permission denied (version 21.3.2.5 (official build))

    лог ищу
  • @lazari_dev #211431 07:42 PM, 26 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Как раз полнотекстовый не нужен, попробую
  • https://t.me/clickhouse_ru
    Разрабатываем систему real-time fulltext-поиска по error-логам на основе ClickHouse от Яндекса

    В этой статье я расскажу о том, как разработать систему для индексирования и полнотекстового поиска error-логов (или любых других логов) на основе СУБД от Яндекс...

  • https://t.me/clickhouse_ru
    Я кстати так и не смог найти настройки, с которыми бы ngram индекс бы действительно что-то существенно ускорял для фильтрации текста логов :(. Может у кого-то есть пример?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Могу себе представить, что для поиска редко встречающихся значений он может подойти
  • https://t.me/clickhouse_ru
    Теоретически — безусловно. Меня лично больше интересуют конкретные настройки, которые подходят для логов :). По ссылке выше я описывал свои варианты, которые пробовал.
  • https://t.me/clickhouse_ru
    (Я и есть youROCK на хабре, если что :))
  • https://t.me/clickhouse_ru
    @aksimemor #211440 10:25 PM, 26 Mar 2021
    Подскажите, что именно я делаю не так.

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

    К примеру: мы посчитали что у пользователей из группы А в день Х -> 200 кликов по разным страницам, то лишь спустя N минут эти данные можно будет получить при запросах.

    Движок таблицы с которой возникают проблемы - MergeTree

    Данные вставляются в таблицу батчами по 50 000 строк в несколько потоков. Потоки бьются по разным источникам чтобы за раз не исчерпывать много оперативы и проще было перезапустить упавшую задачу

    В данный момент в таблице более 100 миллионов строк.

    Также подобная проблемы была впервые обнаружена пару месяцев назад на старой версии кликхауса. Получилось решать ее при помощи ожидания optimize table final после окончания вставки всех данных.

    Скорее всего я делаю что-то не так.
  • https://t.me/clickhouse_ru
    Для практики нужен датасет и ограниченных круг хотелок.
  • 27 March 2021 (20 messages)
  • https://t.me/clickhouse_ru
    ну .. у вас же врое получалось что-то около 2х раз ускорить?
    но в целом тут такое дело
    что data skip index существенно будут ускорять только если вы ищете что-то редкое.
    потому что оно проверяет не то что в данном парте искомый токен есть. а то что в данном парте искомого токена нет
    а если токен высокочастотный и есть в 100% партов, то наверное оно даже и замедлится слегка
  • https://t.me/clickhouse_ru
    что значит слово "обновляется"? вы только новые данные вставляете или у вас там какой нибудь ReplacingMergeTree?
    у вас один сервер или несколько?

    что такое "витрина"? это отдельная таблица? или что?
  • @Vindeck #211450 04:45 AM, 27 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @finio #211451 08:38 AM, 27 Mar 2021
    доброе утро
    из-за неаккуратных действий с DETACH/ATTACH partition (были выполнены сразу на нескольких репликах) в таблице задвоились-затроились парты
    можно ли что-то с этим сделать? или только откатываться на бекап?
  • https://t.me/clickhouse_ru
    Я ему уже подсказал, где собака зарыта) Там дело в кощунственном alter table delete оказалось перед вставкой. Забыли, что ch, это не постгрес 😒
  • https://t.me/clickhouse_ru
    можно посравнить хеши и кол-во строк и осторожно убрать дубликаты
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #211453 #211454 09:06 AM, 27 Mar 2021
    с помощью DETACH PART?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    @finio #211456 09:06 AM, 27 Mar 2021
    спасибо, попробуем
  • https://t.me/clickhouse_ru
    @unamedrus #211457 09:30 AM, 27 Mar 2021
    On all replicas
    SYSTEM STOP FETCHES table;
    SYSTEM STOP FETCHES table;

    1 Save list of parts for ATTACH.

    clickhouse-client --query="SELECT 'ALTER TABLE ' || database || '.' || table || ' ATTACH PART \'' || any(name) || '\';' FROM system.parts WHERE database = 'table' AND table = 'table' AND partition_id = '20201130' GROUP BY database, table, rows, bytes_on_disk, hash_of_all_files, hash_of_uncompressed_files, uncompressed_hash_of_compressed_files FORMAT TSVRaw" > file.sql

    ALTER TABLE table DETACH PARTITION ID '20201130';

    On all replicas
    SYSTEM START FETCHES table;
    SYSTEM START FETCHES table;

    cat ./file.sql | clickhouse-client -mn;
  • https://t.me/clickhouse_ru
    @unamedrus #211458 09:31 AM, 27 Mar 2021
    Я вообще таким пользовался, но в той версии просто нельзя было сделать ALTER DETACH PART
  • https://t.me/clickhouse_ru
    @x052bb ↶ Reply to #210081 #211459 11:36 AM, 27 Mar 2021
    А какие рекомендации по избавлению от nullable? Если есть в таблице поля, у которых значения может не быть. Придумывать дефолтовое значение, заменяющее null? Или есть другие варианты?
  • @pavel_k96 #211460 11:53 AM, 27 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Если все очень сложно то использовать nullable.
    А так да, например у меня есть поле -- температура float32, там лежит -7000. Клиент при отображении все что меньше -1000 показывает пустотой.
  • https://t.me/clickhouse_ru
    @taveman #211464 01:03 PM, 27 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @corpix #211470 06:43 PM, 27 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @corpix #211471 07:00 PM, 27 Mar 2021
    Привет
    Делаю clickhouse драйвер к одной из реализаций Scheme(Gerbil),
    имею на входе запрос (insert/select/...), хочу получить информацию
    о колонках из запроса.

    Есть где-нибудь парсер используемого подмножества SQL?
    Или может грамматика описана в одном из популярных форматов, позволяющих генерировать парсеры?

    Смотрел на https://github.com/ClickHouse/clickhouse-jdbc/blob/094ed0b9d2dd8a18ae0c7b3f8f22c35e595822a6/clickhouse-jdbc/src/main/java/ru/yandex/clickhouse/PreparedStatementParser.java#L19-L21
    Очень не хотелось бы делать это регулярками :)
    ClickHouse/clickhouse-jdbc

    JDBC driver for ClickHouse. Contribute to ClickHouse/clickhouse-jdbc development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @unamedrus #211472 07:02 PM, 27 Mar 2021
    Есть зачаток ANTLR парсера
  • https://t.me/clickhouse_ru
    @unamedrus #211473 07:02 PM, 27 Mar 2021
    красота, нашел Parsers/New/ClickHouseParser.g4, то что надо - спасибо
  • https://t.me/clickhouse_ru
    @corpix ↶ Reply to #211473 #211474 07:04 PM, 27 Mar 2021
    Оу еее
    Похоже что для решения моих задач этой декларации будет достаточно
    Спасибо!
  • 28 March 2021 (31 messages)
  • @githubreleases_bot #211476 b o t 01:50 AM, 28 Mar 2021
    ClickHouse/ClickHouse tagged: v21.3.4.25-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.4.25-lts
    Release notes:
    ClickHouse lts release v21.3.4.25-lts
    Release v21.3.4.25-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.4.25-lts

  • @GrouthHacker #211477 06:31 AM, 28 Mar 2021
    Подскажите, как можно получить userID у которых время между запросами больше Х, если в базе есть только время запроса timestamp?
  • https://t.me/clickhouse_ru
    @unsquirminghuddled #211478 07:41 AM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @seo7742 #211479 07:57 AM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @massimovs #211480 08:49 AM, 28 Mar 2021
    Добрый день.
    А как найти на каком сообщении из всей очереди это происходит:
    DB::ParsingException: Cannot parse input: expected '"' before: '4"}'{}: (while reading the value of key publish_date),
    ?
  • https://t.me/clickhouse_ru
    @massimovs #211481 08:51 AM, 28 Mar 2021
    как посмотреть для конкретной группы оффсет в топике и увидеть это сообщение?
  • https://t.me/clickhouse_ru
    в кафка движке есть виртуальные колонки типа _offset
  • https://t.me/clickhouse_ru
    SELECT user_id, arrayDifference(arraySort(groupArray(timestamp))) as res FROM table GROUP BY user_id HAVING arrayExists(x -> x > 100,res)
  • https://t.me/clickhouse_ru
    @Alexfilus #211484 10:55 AM, 28 Mar 2021
    всем привет, а есть способ при выгрузке данных из КХ в TSV, в именах файлов использовать значении из колонки? То есть одним запросов разложить данные по нескольким файлам
  • спасибо 🙏
  • https://t.me/clickhouse_ru
    Как я понял идея использования такова: проальтерить таблицу, найти по last _offset id Сообщения, потом его выгрепывать из всего топика.
    Спасибо за предложенное решение.
  • @1716976036 #211490 05:06 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @keydol123123 #211493 06:04 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @datyson #211494 06:40 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @monashev #211495 08:01 PM, 28 Mar 2021
    Привет.
    Как бы нарезать строку по utf8 символам? Попробовал splitByString('', Desc) , но он режет по байтам.
  • https://t.me/clickhouse_ru
    SELECT extractAll('dkfdfjsd1234中文字符串', '.')

    ┌─extractAll('dkfdfjsd1234中文字符串', '.')──────────────────────────────────┐
    │ ['d','k','f','d','f','j','s','d','1','2','3','4','中','文','字','符','串'] │
    └────────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @monashev #211497 08:08 PM, 28 Mar 2021
    Спасибо, про регэкспы я и забыл совсем!
  • https://t.me/clickhouse_ru
    @149051052 #211498 09:22 PM, 28 Mar 2021
    Добрый вечер!

    Подскажите, пожалуйста, почему первый запрос работает быстро, а второй долго?
    field - ключевой столбец, данных много
    Тип fields - String

    Разве подзапрос не должен выполниться один раз и затем передаться внешнему запросу?
    Версия: 21.3.3.14

    1:
    SELECT 1 FROM t WHERE field > 'value' LIMIT 1

    2:
    SELECT 1 FROM t WHERE field > (SELECT 'value') LIMIT 1

    При установке force_primary_key = 1, получаем ошибку Primary key (field) is not used
    Почему первичный ключ не используется и можно ли сделать так, чтобы он начал использоваться?
  • https://t.me/clickhouse_ru
    @DmitriyKalentsov #211499 09:32 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @morozovsk #211500 09:38 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Primary key and partition key are not used with a predicate as a constant subquery · Issue #21717 · ClickHouse/ClickHouse

    create table t(a Int64, b Int64, p DateTime) Engine=MergeTree PARTITION BY toYYYYMM(p) order by p; create table t2(a Int64, b Int64, p DateTime) Engine=MergeTree order by a; insert into t(a, p) sel...

  • https://t.me/clickhouse_ru
    SELECT 1 FROM t WHERE field > toString(SELECT 'value') LIMIT 1
  • https://t.me/clickhouse_ru
    В этом случае такая ошибка: failed at position 169 (''value'')
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    а если еще пару скобок?
    SELECT 1 FROM t WHERE field > toString((SELECT 'value')) LIMIT 1
  • https://t.me/clickhouse_ru
    Здорово, так заработало
  • https://t.me/clickhouse_ru
    @dryrainbow #211507 10:08 PM, 28 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @dryrainbow #211508 10:10 PM, 28 Mar 2021
    привет. хочу запустить clickhouse на macbook m1, прочитал, что надо билдить самому из сурсов. есть у кого-то docker образ уже готовый? Вообще реально ли это в данный момент завести?
  • https://t.me/clickhouse_ru
    Installation | ClickHouse Documentation

    Installation System Requirements ClickHouse can run on any Linux, FreeBSD, or Mac OS X with x86_64, AArch64, or PowerPC6

  • https://t.me/clickhouse_ru
    @alexey_laptev #211510 10:14 PM, 28 Mar 2021
    Возможно проще внешнюю виртуалку поднять
  • https://t.me/clickhouse_ru
    @dryrainbow #211511 10:45 PM, 28 Mar 2021
    Завел все, спасибо
  • 29 March 2021 (163 messages)
  • @demetranadya #211513 04:35 AM, 29 Mar 2021
    перенесла вручную все файлы из ./var/lib/clickhouse на новый диск где уустановлен clickhouse. Но теперь при запуске клиента не видит моей БД
  • @demetranadya #211514 04:40 AM, 29 Mar 2021
    Откуда еще что скопировать?
  • @demetranadya #211516 06:28 AM, 29 Mar 2021
    сервер перестал запускаться
  • @demetranadya #211517 06:28 AM, 29 Mar 2021
    {} <Trace> BaseDaemon: Received signal -2
    2021.03.29 13:06:48.195986 [ 65492 ] {} <Information> BaseDaemon: Stop SignalListener thread
    2021.03.29 13:06:48.215198 [ 65490 ] {} <Information> Application: Child process exited normally with code 70.
    2021.03.29 13:07:18.291870 [ 65573 ] {} <Information> Application: Will watch for the process with pid 65574
    2021.03.29 13:07:18.291997 [ 65574 ] {} <Information> Application: Forked a child process to watch
    2021.03.29 13:07:18.292276 [ 65574 ] {} <Information> SentryWriter: Sending crash reports is disabled
    2021.03.29 13:07:18.292352 [ 65574 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
    2021.03.29 13:07:18.330896 [ 65574 ] {} <Information> : Starting ClickHouse 21.3.3.14 with revision 54448, build id: 7C39F44C9AD4D3BA36D74775616894F60A552276, PID 65574
    2021.03.29 13:07:18.330981 [ 65574 ] {} <Information> Application: starting up
    2021.03.29 13:07:18.430235 [ 65574 ] {} <Information> Application: Calculated checksum of the binary: 11A63B17AD9F07EA53F49019A0B82E36, integrity check passed.
    2021.03.29 13:07:18.430358 [ 65574 ] {} <Trace> Application: Will do mlock to prevent executable memory from being paged out. It may take a few seconds.
    2021.03.29 13:07:18.442090 [ 65574 ] {} <Trace> Application: The memory map of clickhouse executable has been mlock'ed, total 180.98 MiB
    2021.03.29 13:07:18.442246 [ 65574 ] {} <Debug> Application: rlimit on number of file descriptors is 500000
    2021.03.29 13:07:18.442255 [ 65574 ] {} <Debug> Application: Initializing DateLUT.
    2021.03.29 13:07:18.442261 [ 65574 ] {} <Trace> Application: Initialized DateLUT with time zone 'Asia/Krasnoyarsk'.
    2021.03.29 13:07:18.442276 [ 65574 ] {} <Debug> Application: Setting up /var/lib/clickhouse/tmp/ to store temporary data in it
    2021.03.29 13:07:18.446063 [ 65574 ] {} <Error> Application: Access to file denied: /var/lib/clickhouse/tmp/
    2021.03.29 13:07:18.446096 [ 65574 ] {} <Information> Application: shutting down
    2021.03.29 13:07:18.446101 [ 65574 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem
    2021.03.29 13:07:18.446193 [ 65575 ] {} <Trace> BaseDaemon: Received signal -2
    2021.03.29 13:07:18.446210 [ 65575 ] {} <Information> BaseDaemon: Stop SignalListener thread
    2021.03.29 13:07:18.466061 [ 65573 ] {} <Information> Application: Child process exited normally with code 70.
  • @Dmitrii_Sulimchuk #211518 06:32 AM, 29 Mar 2021
    Всем пример. Есть вопрос - мы по ночам делаем optimize для каждой секции одной большой таблицы т.к. надо точно убрать дубли. операция небыстрая и судя по графикам сервер несильно загружен . Можно ли (есть смысл) optimize секции запускать в параллель или может есть способ как подсказать клику чтобы тот использовал больше ресурсов?
  • https://t.me/clickhouse_ru
    @majorovms #211519 06:54 AM, 29 Mar 2021
    Я забыл указать Partition при создании таблицы(( Хотя есть подходящее поле со временем и мне б отлично подошел вариант PARTITION BY toYYYYMM(EventDate)

    Где найти инфу как Clickhouse разбивает на партиции таблицу с движком MergeTree по-умолчанию? В доках уже прошерстил и не нашел. Он жеж все в одну партицию не валит?
    Правильно понимаю, что для изменения разбивки на партиции мне проще создать новую таблицу и скопировать в неё данные со старой? Или все ж alter partition есть?
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #211520 07:05 AM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Дык посмотри в файловой системе - скорее всего одна партиция и будет. Поменять ключ партиционирования, насколько я помню, низзя, только пересоздать таблицу..
  • @231864534 #211522 07:30 AM, 29 Mar 2021
    Привет всем! Чтобы добавить в обычное представление дополнительный столбец, надо пересоздавать его с replace или всё-таки есть какой-то простой способ добавить один столбец?
  • @fruittut #211523 07:36 AM, 29 Mar 2021
    Всем привет. Подскажите пожалуйста, если заводить кластер - пару шардов, в которых пара реплик, какой баланстровщик является оптимальным для Кликхауса? Предполагается писать/читать через distributed таблицы. Можно ли использовать любой баланстровщик для несколько хостов для распределения нагрузки, кто что использует?
  • https://t.me/clickhouse_ru
    @shchadnev #211524 07:47 AM, 29 Mar 2021
    всем привет. подскажите плз, как в графане делать вывод нормальный из КХ?
    у меня данные берутся не из tsdb, и попадают рандомно по событиям.
    как сделать отсутстивие данных нулем? аналог встренного null_as_zero, ток он не работает,
    Плагин версии 2.1.0
  • https://t.me/clickhouse_ru
    Писать через дистриб таблицы так себе идея, отказоустойчивость низкая выходит, потому что вход 1, упал дистриб кх, вы начнете терять данные, если запись синхронная.
  • https://t.me/clickhouse_ru
    @devmansurov #211526 08:17 AM, 29 Mar 2021
    Здравствуйте! Подскажите пож-та сделать в кх WHERE IN запрос?

    Например у меня есть запрос такой где происходить выборка из БД по многому статусу используя WHERE IN в mysql:

    SELECT * FROM table WHERE status IN (200, 404, 500)

    Как такую сделать в кх?
  • 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
    балансировщик для чего вам нужен ? если просто проксировать запрос на какую-то тачку из кластера - любой. есть clickhouse-proxy
  • https://t.me/clickhouse_ru
    Всегда в таких ситуациях стоит сначала попробовать)
  • https://t.me/clickhouse_ru
    @devmansurov #211533 08:23 AM, 29 Mar 2021
    Спасибо всем!)
  • https://t.me/clickhouse_ru
    @egorpopov94 #211534 08:28 AM, 29 Mar 2021
    Всем привет! обновили кликхаус до 21.1.7.1. Обнаружили, что ранее работающий запрос аля SELECT t1.col1, t2.col1 FROM distributed_table1 as t1 JOIN distributed_table2 as t2 ON t1.col1 = t2.col1 WHERE t2.col1 > 0 валится с ошибкой «DB::Exception: Missing columns: t2.col1». При выборе фильтров по левой таблице все работает, при замене Distributed-таблиц на локальные также все работает. Подскажите, пожалуйста, может кто сталкивался с этим?
  • https://t.me/clickhouse_ru
    @111093495 #211535 08:50 AM, 29 Mar 2021
    всем привет)
    у нас сейчас несклько кликхаусов, на одном зукипер кластере.
    подскажите плиз как правильно разделить зукипер на два кластера?
    я уже переконфигурил кликхаусы чтоб они смотрели на разные инстансы, но как правильно разделить зукипер?
  • https://t.me/clickhouse_ru
    @floxard #211536 08:54 AM, 29 Mar 2021
    Привет. Вы можете добавить N реплик в зукипер, например если у вас 3 реплики, то добавить ещё 3. А потом переконфигурировать это в два кластере по 3 реплики. У вас получится 2 копии старого зукипер кластера. Затем в каждом из кластеров удалить лишнее.
  • https://t.me/clickhouse_ru
    > А потом переконфигурировать это в два кластере по 3 реплики.

    вопрос как правильно вот это сделать?
  • https://t.me/clickhouse_ru
    допустим, у вас есть такой конфиг на 3-х серверах для зукипера

    server.1=host1
    server.2=host2
    server.3=host3

    делаете такой конфиг на 6-серверах, рестартите зукиперы

    server.1=host1
    server.2=host2
    server.3=host3
    server.4=host4
    server.5=host5
    server.6=host6

    убеждаетесь, что кх не потерял соединение с зукипером
  • https://t.me/clickhouse_ru
    @floxard #211539 09:01 AM, 29 Mar 2021
    потом делаете такой конфиг на одном
    server.1=host1
    server.2=host2
    server.3=host3
    и такой на другом
    server.4=host4
    server.5=host5
    server.6=host6
    снова рестартитесь
    поздравляю, у вас две копии вашего зукипер кластера
    вычищаете лишнее из каждой и вуаля
  • Да, просто на тачки проксировать. Я так понимаю можно в таком случае и nginx использовать просто. У clickhouse -proxy есть специфический крайне важный функционал? Спасибо за ответ!
  • https://t.me/clickhouse_ru
    ну почему-то тут часто про него пишут. мы подняли обычный нгинкс с дефолтным балансировщиком) он супер легкий и простой получается
  • https://t.me/clickhouse_ru
    спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    > 2021.03.29 13:07:18.446063 [ 65574 ] {} <Error> Application: Access to file denied: /var/lib/clickhouse/tmp/

    Проверяйте права папки кх
  • @182614684 #211544 09:04 AM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Если вы поддержали в конфигурации динамическую реконфигурацию и у вас версия позволяет такое, можно даже без лишних рестартов
    https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_file
    в таком случае добавляйте по одной
  • https://t.me/clickhouse_ru
    да в момент расширения зукипер кластера уже перешли на новую версию с этой штукой
  • Спасибо за информацию. Получается что данные можно потерять во время записи в таком случае. Мне кажется что есть в любом случае вероятность потерять данные, если нет механизма гарантии записи.
  • https://t.me/clickhouse_ru
    Верно, но тут вопрос в кейсах.
    Все таки отказоустойчивость системы выше, когда вы пишите в шарды, ведь когда шард не доступен, можно писать в другой)
  • Спасибо за информацию! Подумал о таком варианте изначально, для начала так мне подойдёт
  • Да, понял, спасибо. Кажется что балансировщиком можно и решить этот вопрос недоступности шардов.
  • create view default.test_view1 as select 1 as fir;
    create or replace view default.test_view1 as select 1 as fir, 2 as tw;

    select * from default.test_view1;
  • https://t.me/clickhouse_ru
    @pic_Nick77 #211552 09:26 AM, 29 Mar 2021
    Здравствуйте! Столкнулся тут со странной ошибкой. Воспроизвести можно так:
    CREATE TABLE table_1 (
    pu_id UInt64,
    show_date DateTime,
    pu_num String
    ) ENGINE = MergeTree(
    ) PARTITION BY toYYYYMM(show_date)
    ORDER BY (show_date);

    insert into table_1(show_date, pu_num, pu_id) values('2020-01-01 12:00:00', '1234454', 54234);
    insert into table_1(show_date, pu_num, pu_id) values('2020-01-02 13:00:00', '1234454', 54234);
    insert into table_1(show_date, pu_num, pu_id) values('2020-01-11 15:00:00', '123123', 32434);

    CREATE TABLE table_2 (
    pu_id UInt64,
    pu_num String,
    name_rus String)
    ENGINE = Join(ANY, LEFT, pu_id) SETTINGS join_use_nulls = 1;

    insert into table_2 values(32434, '123123', 'Имя_1');
    insert into table_2 values(54234, '1234454', 'Имя_2');

    select *
    from (
    select a.pu_id, a.pu_num, k.name_rus
    from cub6.table_1 a
    ANY LEFT JOIN cub6.table_2 k USING(pu_id) SETTINGS join_use_nulls = 1
    )
    where 1=1
  • https://t.me/clickhouse_ru
    @pic_Nick77 #211553 09:27 AM, 29 Mar 2021
    Если убрать where 1=1 или убрать джоин, то ошибки нет
  • https://t.me/clickhouse_ru
    @mikhailberg #211554 09:27 AM, 29 Mar 2021
    что за ошибка хоть ?
  • https://t.me/clickhouse_ru
    ┌─pu_id─┬─pu_num─┬─name_rus─┐
    │ 32434 │ 123123 │ Имя_1 │
    └───────┴────────┴──────────┘
    ┌─pu_id─┬─pu_num──┬─name_rus─┐
    │ 54234 │ 1234454 │ Имя_2 │
    └───────┴─────────┴──────────┘
    ┌─pu_id─┬─pu_num──┬─name_rus─┐
    │ 54234 │ 1234454 │ Имя_2 │
    └───────┴─────────┴──────────┘

    21.4
  • https://t.me/clickhouse_ru
    @unamedrus #211556 09:28 AM, 29 Mar 2021
    Какая версия?
  • https://t.me/clickhouse_ru
    Code: 10, e.displayText() = DB::Exception: Not found column k.pu_id in block. There are only columns: pu_id (version 21.3.3.14 (official build))
  • https://t.me/clickhouse_ru
    Это только в 21.4 исправлено?
  • https://t.me/clickhouse_ru
    21.3.3.14
  • https://t.me/clickhouse_ru
    Это только в 21.4 исправлено?
    Не уверен, возможно и в 21.3
    я бы попробовал обновится до последней 21.3
  • https://t.me/clickhouse_ru
    @pic_Nick77 #211561 09:32 AM, 29 Mar 2021
    Ща попробую
  • https://t.me/clickhouse_ru
    Не-а.
    Code: 10, e.displayText() = DB::Exception: Not found column k.pu_id in block. There are only columns: pu_id (version 21.3.4.25 (official build))
  • https://t.me/clickhouse_ru
    @pic_Nick77 #211563 09:38 AM, 29 Mar 2021
    А 21.4 где взять попробовать?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/releases

    Ага, он только тестинг пока
    Releases · 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://t.me/clickhouse_ru
    @mrezakov #211573 11:04 AM, 29 Mar 2021
    Добрый день!
    есть табличка ENGINE = ReplacingMergeTree
    для перехода на реплицируемые таблицы достаточно сделать
    ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/table_name', '{replica}’) ?
    {shard} и {replica} клик подставит из конфига так ?
  • https://t.me/clickhouse_ru
    @ajIeks @dj_mixer FYI: этот PR ( https://github.com/ClickHouse/ClickHouse/pull/22228 ) имплементирует все, что мы тогда обсуждали. Если хотите, можете поэкспериментировать с билдами которые в нем в CI строятся. Описание и пример типичного конфига в config.xml и доках LDAP там же.
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #211574 #211575 11:21 AM, 29 Mar 2021
    Супер, спасибо )
  • https://t.me/clickhouse_ru
    Может settings попробовать перенести в конец запроса, а не писать его между join и where?
  • https://t.me/clickhouse_ru
    не помогает
  • https://t.me/clickhouse_ru
    @forward32 #211578 12:14 PM, 29 Mar 2021
    здрасте, а есть функция с jsonом, чтобы на уровне запроса положить туда новый ключ-значение?
  • https://t.me/clickhouse_ru
    @forward32 #211579 12:15 PM, 29 Mar 2021
    (когда хочется поиграться с костылями немного)
  • https://t.me/clickhouse_ru
    UPDATE в clickhouse нет
  • https://t.me/clickhouse_ru
    @forward32 #211581 12:23 PM, 29 Mar 2021
    мне на уровне select'а надо
  • https://t.me/clickhouse_ru
    @forward32 #211582 12:23 PM, 29 Mar 2021
    чтобы не просто мой json с диска достать, но присрать к нему по дороге еще одно поле
  • @vladimirunknown_gor #211583 12:24 PM, 29 Mar 2021
    Добрый день, а есть какой-то более быстрый способ удаления таблицы (~500 гигабайт), drop (или truncate) table не выполняется, ошибка read timeout. Timeout установлен в 2 часа. Эта таблица использовалась как приемник данных из материализованного представления для чтения данных из Kafka? Материализованное представление нельзя удалить пока не удалится эта таблица. В этой таблицы не были спроектированы PARTITION, кроме одного.
  • https://t.me/clickhouse_ru
    можно разрезать json в нужном месте, а потом собрать через concat, но эт криво
  • https://t.me/clickhouse_ru
    а пример есть?)
  • https://t.me/clickhouse_ru
    @leagueofsoups #211586 12:28 PM, 29 Mar 2021
    Всем привет. А подскажите пожалуйста по поводу такой ситуации:
    У меня есть CH кластер, 2шарда, по 3 узла в каждом. Предположим я подключаюсь к одному любому узлу, и делаю CREATE TABLE..ON CLUSTER, создаю поверх этой таблицы Distributed представление ON CLUSTER, и начинаю инсертить туда данные(прямо в Distributed таблицу). Что будет с данными, если инсертить я начну до того, как таблица, и distributed представление выполнятся на соседнем шарде? Потребуется ли мне, в таком случаи, как-то ребалансить данные? Я бы хотел понять, как будет действовать CH, в такой ситуации.
  • https://t.me/clickhouse_ru
    @avv7bc #211587 12:40 PM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @avv7bc #211588 12:41 PM, 29 Mar 2021
    всем привет. Народ подскажите как лучше хранить unix timestamp до милисекунд. Я так понимаю datetime для этого не подходят. Они округляются до секунд
  • https://t.me/clickhouse_ru
    datetime64(3)
  • https://t.me/clickhouse_ru
    @avv7bc ↶ Reply to #211589 #211590 12:41 PM, 29 Mar 2021
    спс
  • https://t.me/clickhouse_ru
    @suxxoi #211591 12:42 PM, 29 Mar 2021
    Подскажите
    Имеется таблица clicks(id, clicked_date, clicked_at, geo_id, user_agent_id, language_id, value_1, value_2, value_3)
    При первом клике прилетают данные без колонок value (123, ’2021-03-28’, ‘2021-03-28 12:56:39’, 1, 1, 1)

    При повторном клике только id и данные по колонкам value
    Можно ли вставить новые данные, но чтобы подтянулись старые и дополнились новыми, что-то типа (123, ’2021-03-28’, ‘2021-03-28 12:56:39’, 1, 1, 1, ‘value_one’, ‘value_two’, ‘value_three’)

    Может кто тыкнет в документацию или скажет куда копать?
  • https://t.me/clickhouse_ru
    если устроит в конец, можно регуляркой
    SELECT
    json,
    replaceRegexpOne(json, '}$', ',"newkey":"newval"}') AS newjson
    FROM
    (
    SELECT '{"s":"str","d":"2021-03-19"}' AS json
    )
    FORMAT Vertical

    Row 1:
    ──────
    json: {"s":"str","d":"2021-03-19"}
    newjson: {"s":"str","d":"2021-03-19","newkey":"newval"}
  • https://t.me/clickhouse_ru
    @floxard #211593 12:54 PM, 29 Mar 2021
    а, да, это не менее криво чем предложено выше. но поэксперементировать так можно
  • https://t.me/clickhouse_ru
    Если кого-то тоже волнует этот вопрос, нашел такое
    https://github.com/ClickHouse/ClickHouse/issues/11887#issuecomment-648840215
    Clickhouse sharding rebalance records · Issue #11887 · ClickHouse/ClickHouse

    Hello In my scenario for testing have a 2 shard hosts If a host-A in shard‌s turn off And the query data are INSERT into host-b in shards What happens after host-A in shards if turned on? are recor...

  • https://t.me/clickhouse_ru
    @cheersdad #211595 01:43 PM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @cheersdad #211596 01:45 PM, 29 Mar 2021
    Коллеги, всем привет! можете подсказать, как можно из кликхауса подтягивать данные в гугл таблицы?
  • https://t.me/clickhouse_ru
    @timur_bayazitov #211597 01:49 PM, 29 Mar 2021
    Joined.
  • @O01010000S #211598 02:00 PM, 29 Mar 2021
    вопрос из разряда пальцем в небо.
    есть 3млн. сообщений в кафке, их нужно вычитать и положить в базу клика.
    вопрос. хватит ли 8CPU/64RAM что бы 99% делать чтение из кафки и запись на hdd. и 1% строить отчеты с глубиной в 6-12 часов?
  • https://t.me/clickhouse_ru
    3 миллиона для клика - ну это несерьёзно :) У нас три миллиарда записей уже в базе и ниче, шуршит себе. Так что такого конфига должно хватить...
    Ну разве что hdd будет грустно, лучше, конечно, SSD под это юзать.
  • https://t.me/clickhouse_ru
    3 миллиона сообщений в кафке за какой период времени?
  • в 1 секунду
  • https://t.me/clickhouse_ru
    Широкая таблица?

    В среднем одна кафка таблица с 1 консьюмером читает ~300k-400 сообщений в секунду.

    https://github.com/ClickHouse/ClickHouse/pull/11388#issuecomment-638893203
    Better settings for Kafka by filimonov · Pull Request #11388 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the cha...

  • 20-30 столбиков
  • https://t.me/clickhouse_ru
    а в килобайтах?
  • @O01010000S #211605 02:09 PM, 29 Mar 2021
    у меня одна запись 520 байт, это 20 полей, которые парсятся и складываются в формате json в кафку.
  • https://t.me/clickhouse_ru
    скорее всего 8CPU не хватит для 520 байт * 3млн в сек.
    это много, это 1.5ГБ в сек, ну и сеть 10 гбит
  • https://t.me/clickhouse_ru
    @unamedrus #211607 02:11 PM, 29 Mar 2021
    А диск какой? Нужны ли raw записи, или вы хотите складывать сразу в агрегаты?
  • @O01010000S #211608 02:12 PM, 29 Mar 2021
    это raw записи, складываются в клик, по некоторым полям делаются отдельные view
  • @O01010000S #211609 02:14 PM, 29 Mar 2021
    диск пока под вопросом. я пытаюсь посчитать IO, не очень понимания как это сделать, при учете что пишутся блоками данные, а не пермманентно
  • @O01010000S #211610 02:14 PM, 29 Mar 2021
    пока можно принять диск супербыстрым.
  • https://t.me/clickhouse_ru
    @den_crane #211611 02:14 PM, 29 Mar 2021
    скорее всего я бы начал тестить с 24 или 48 cpu
  • https://t.me/clickhouse_ru
    @unamedrus #211612 02:15 PM, 29 Mar 2021
    И наверное несколько серверов тогда уж, хм
  • @O01010000S #211613 02:17 PM, 29 Mar 2021
    Пока 3 клика планирую. Идеальный вариант что 3 ноды с одинаковыми данными.. более реальный сценарий - 3 ноды с ращными данными
  • https://t.me/clickhouse_ru
    @unamedrus #211614 02:18 PM, 29 Mar 2021
    Ну после того как кх собрал парт из данных кафки, обмен по протоколу репликации гораздо дешевле выйдет.
  • https://t.me/clickhouse_ru
    @artilligence #211615 02:32 PM, 29 Mar 2021
    Господа, доброго времени суток!
    Переехали на новую версию зукипера, перенесли данные, появились такие ошибки:

    chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:48.188912 [ 1 ] {} <Error> Application: Caught exception while loading metadata: Code: 231, e.displayText() = DB::Exception: The local set of parts of table db.entity_agg_count │
    │ doesn't look like the set of parts in ZooKeeper: 2.99 thousand rows of 2.99 thousand total rows in filesystem are suspicious. There are 12 unexpected parts with 2988 rows (11 of them is not just-written with 2988 rows), 0 missing part │
    │ s (with 0 blocks).: Cannot attach table db.entity_agg_count from metadata file /var/lib/clickhouse/metadata/db/entity_agg_count.sql from query ATTACH TABLE entity_agg_count (`entity_id` UUID, loc_campus_id UUID, `loc_building_id │
    │ UUID, `loc_ward_id UUID, loc_floor_id UUID, loc_room_id UUID, start_of_hour DateTime, deleted_at Nullable(DateTime), dirty AggregateFunction(argMax, UInt64, DateTime), clean AggregateFunction(argMax, UInt64, DateTime), │
    │ occupied AggregateFunction(argMax, UInt64, DateTime), occupied_infected AggregateFunction(argMax, UInt64, DateTime), dirty_infected AggregateFunction(argMax, UInt64, DateTime), working AggregateFunction(argMax, UInt64, DateTim │
    │ e), broken AggregateFunction(argMax, UInt64, DateTime)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/{shard}/db/entity_agg_count', '{replica}') PARTITION BY toYYYYMM(start_of_hour) PRIMARY KEY (loc_campus_id, start_of │
    │ _hour, entity_id) ORDER BY (loc_campus_id, start_of_hour, entity_id, loc_ward_id, loc_building_id, loc_room_id, loc_floor_id) SETTINGS index_granularity = 8192, Stack trace (when copying this message, always include the lines below): │
    │ chi-clickhouse-db-org-sim-default-1-1-0:0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x10541260 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x8f3f72d in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2. DB::StorageReplicatedMergeTree::checkParts(bool) @ 0xd78d873 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:3. DB::StorageReplicatedMergeTree::StorageReplicatedMergeTree(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1: │
    │ :char_traits<char>, std::__1::allocator<char> > const&, bool, DB::StorageID const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::StorageInMemoryMetadata const&, DB::Context&, std::_ │
    │ _1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::MergeTreeData::MergingParams const&, std::__1::unique_ptr<DB::MergeTreeSettings, std::__1::default_delete<DB::MergeTreeSettings> >, bool) @ 0x │
    │ d79027c in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:4. ? @ 0xdb22c0a in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:5. std::__1::__function::__func<std::__1::shared_ptr<DB::IStorage> (*)(DB::StorageFactory::Arguments const&), std::__1::allocator<std::__1::shared_ptr<DB::IStorage> (*)(DB::StorageFactory::Argum │
  • https://t.me/clickhouse_ru
    @artilligence #211616 02:32 PM, 29 Mar 2021
    │ ents const&)>, std::__1::shared_ptr<DB::IStorage> (DB::StorageFactory::Arguments const&)>::operator()(DB::StorageFactory::Arguments const&) @ 0xdb262e7 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:6. DB::StorageFactory::get(DB::ASTCreateQuery const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, DB::Context&, DB::ColumnsDescrip │
    │ tion const&, DB::ConstraintsDescription const&, bool) const @ 0xd6aed30 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:7. DB::createTableFromAST(DB::ASTCreateQuery, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<cha │
    │ r>, std::__1::allocator<char> > const&, DB::Context&, bool) @ 0xd06cdce in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:8. ? @ 0xd06352f in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:9. ? @ 0xd063d15 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:10. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8f6492b in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:11. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(vo │
    │ id&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() const @ 0x8f65608 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:12. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8f637eb in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:13. ? @ 0x8f61c33 in /usr/bin/clickhouse │
    │ chi-clickhouse-db-org-sim-default-1-1-0:14. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so │
    │ chi-clickhouse-db-org-sim-default-1-1-0:15. __clone @ 0x12188f in /lib/x86_64-linux-gnu/libc-2.27.so │
    │ chi-clickhouse-db-org-sim-default-1-1-0: (version 20.3.7.46 (official build)) │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:48.189081 [ 1 ] {} <Information> Application: Shutting down storages. │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.084815 [ 46 ] {} <Debug> SystemLog (system.metric_log): Will use existing table system.metric_log for MetricLog │
  • https://t.me/clickhouse_ru
    @artilligence #211617 02:32 PM, 29 Mar 2021
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.089013 [ 46 ] {} <Debug> DiskLocal: Reserving 1.00 MiB on disk default, having unreserved 8.32 GiB. │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.168452 [ 1 ] {} <Debug> Application: Shut down storages. │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.169803 [ 1 ] {} <Debug> Application: Destroyed global context. │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.170099 [ 1 ] {} <Error> Application: DB::Exception: The local set of parts of table db.entity_agg_count doesn't look like the set of parts in ZooKeeper: 2.99 thousand rows of │
    │ 2.99 thousand total rows in filesystem are suspicious. There are 12 unexpected parts with 2988 rows (11 of them is not just-written with 2988 rows), 0 missing parts (with 0 blocks).: Cannot attach table db.entity_agg_count from m │
    │ etadata file /var/lib/clickhouse/metadata/db/entity_agg_count.sql from query ATTACH TABLE entity_agg_count (`entity_id` UUID, loc_campus_id UUID, loc_building_id UUID, loc_ward_id UUID, loc_floor_id UUID, loc_room_id UUID, ` │
    │ start_of_hour` DateTime, deleted_at Nullable(DateTime), dirty AggregateFunction(argMax, UInt64, DateTime), clean AggregateFunction(argMax, UInt64, DateTime), occupied AggregateFunction(argMax, UInt64, DateTime), `occupied_infe │
    │ cted` AggregateFunction(argMax, UInt64, DateTime), dirty_infected AggregateFunction(argMax, UInt64, DateTime), working AggregateFunction(argMax, UInt64, DateTime), broken AggregateFunction(argMax, UInt64, DateTime)) ENGINE = Rep │
    │ licatedAggregatingMergeTree('/clickhouse/tables/{shard}/db/entity_agg_count', '{replica}') PARTITION BY toYYYYMM(start_of_hour) PRIMARY KEY (loc_campus_id, start_of_hour, entity_id) ORDER BY (loc_campus_id, start_of_hour, entity_id, l │
    │ oc_ward_id, loc_building_id, loc_room_id, loc_floor_id) SETTINGS index_granularity = 8192 │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.170191 [ 1 ] {} <Information> Application: shutting down │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.170214 [ 1 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem │
    │ chi-clickhouse-db-org-sim-default-1-1-0:2021.03.29 14:22:49.170323 [ 44 ] {} <Information> BaseDaemon: Stop SignalListener thread │
    │ chi-clickhouse-db-org-sim-default-1-1-0:stream closed
  • https://t.me/clickhouse_ru
    1. вырубили старый и новый zoo и clickhouse на время опреации
    2. подмаунтили диски от старого и нового во временный под
    3. Копирнули из старых дисков в новый (все логи + все данные)
    4. стартанули новый zoo, через zkCli.sh проверили, что новые данные появились
    5. Включили clickhouse с новым адресом нового zoo
  • https://t.me/clickhouse_ru
    >3. Копирнули из старых дисков в новый (все логи + все данные)
    что? что такое данные? У ЗК данные в ОЗУ.
  • https://t.me/clickhouse_ru
    Он при запуске откуда читает данные?
  • https://t.me/clickhouse_ru
    берет снепшот и накатывает журналы
  • https://t.me/clickhouse_ru
    @artilligence #211622 02:40 PM, 29 Mar 2021
    Вот снепшоты и были, получается, перенесены
  • https://t.me/clickhouse_ru
    видимо вы взяли не все журналы или не с того зукипера который был последним
  • https://t.me/clickhouse_ru
    @den_crane #211624 02:42 PM, 29 Mar 2021
    There are 12 unexpected parts with 2988 rows (11 of them is not just-written with 2988 rows), 0 missing parts (with 0 blocks).: Cannot attach table db.entity_agg_count
  • https://t.me/clickhouse_ru
    @den_crane #211625 02:42 PM, 29 Mar 2021
    сколько записей в таблице всего?
  • https://t.me/clickhouse_ru
    @den_crane #211626 02:42 PM, 29 Mar 2021
    обычно вроде 50% отсечка чтобы не стартовать
  • https://t.me/clickhouse_ru
    @den_crane #211627 02:43 PM, 29 Mar 2021
    у вас 2988 это 50% ?
  • https://t.me/clickhouse_ru
    @den_crane #211628 02:44 PM, 29 Mar 2021
    наверное это из-за кубернетиса, под терминейтнулся и просрал кеш ос в озу
  • https://t.me/clickhouse_ru
    Спасибо, покопаем в эту сторону. Есть вариант как- то gracefully завершить работу?
  • https://t.me/clickhouse_ru
    @artilligence #211630 02:45 PM, 29 Mar 2021
    Или, например, вырубить clickhouse и экспорт журналов сделать
  • @lazari_dev #211631 02:48 PM, 29 Mar 2021
    Привет. А насколько корректно делать выборку по значению из словаря?
    dictGet() as testValue
    from table
    where testValue = 'test'
  • https://t.me/clickhouse_ru
    @deadeternity666 #211632 04:07 PM, 29 Mar 2021
    Добрый день! Обновили кх с версии 20.10.6.27 до 21.2.2.5 и селекты стали медленнее в несколько раз:
    20.10.6.27:
    1 rows in set. Elapsed: 2.223 sec. Processed 1.42 billion rows, 22.69 GB (637.95 million rows/s., 10.21 GB/s.)
    21.2.2.5:
    1 rows in set. Elapsed: 16.375 sec. Processed 1.42 billion rows, 12.88 GB (86.59 million rows/s., 786.83 MB/s.)
    Это по прогретым данным, запросы дёргали несколько раз.
    Есть идеи что может так аффектить? Структуру таблицы и запрос могу скинуть.
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+is%3Aopen+label%3Aperformance+label%3Av21.1-affected
    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+is%3Aopen+label%3Aperformance+label%3Av21.2-affected
  • https://t.me/clickhouse_ru
    корректно, но конечно это фулскан
  • Если надо фильтровать по словарю, то тогда join?
  • https://t.me/clickhouse_ru
    dictGet() as testValue
    from table
    where table.id in (select id from dictionary_table_reflection where val_col = 'test')
  • https://t.me/clickhouse_ru
    Спасибо, а получится безопасно откатиться до 20.10?
  • https://t.me/clickhouse_ru
    да,
    но вы разберитесь сначала в чем проблема, возможно есть простой workaround, иногда просто отключение какого-то optimize в settings
  • @vvvjhaq #211639 04:22 PM, 29 Mar 2021
    Добрый вечер. Подскажите механику переноса данных между дисками в сторейдж полиси.
    Сделал сторейдж полиси по примеру из доки (https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-multiple-volumes_configure) пункт с полиси moving_from_ssd_to_hdd.
    Установил максимальный размер парта для переноса 300 байт. Создаю таблицу из 3 полей, записываю 1 строку.
    system.parts пишет bytes_on_disk=212, disk_name=hdd_disk.
    То есть, как я вижу, что данных меньше 300 байт, но данные уже на диске hdd.
    Я неправильно смотрю размер парта? Или в чем может быть проблема?
    MergeTree | Документация ClickHouse

    MergeTree Движок MergeTree, а также другие движки этого семейства (*MergeTree) — это наиболее функциональные движки табл

  • https://t.me/clickhouse_ru
    @dedushka_mao #211640 04:33 PM, 29 Mar 2021
    Подскажите, пожалуйста, почему CH ругается на конфиг?

    Junk after document element in '/etc/clickhouse-server/config.d/models_config.xml', line 2 column 0,

    Содержимое файла models_config.xml

    <catboost_dynamic_library_path>/path/to/my/libcatboostmodel.so</catboost_dynamic_library_path>
    <models_config>/path/to/my/models/*_model.xml</models_config>
  • https://t.me/clickhouse_ru
    максимальный размер парта? это о чем?
  • https://t.me/clickhouse_ru
    ээ 2 строки и все? без рутового элемента и заголовка?
  • https://t.me/clickhouse_ru
    Обернул в тег <yandex> - ругается "No element found in"
  • https://t.me/clickhouse_ru
    @dedushka_mao #211644 04:57 PM, 29 Mar 2021
    да, было всего 2 строки, как в мануале указано
  • https://t.me/clickhouse_ru
    <?xml version="1.0" ?>
    <yandex>
    <catboost_dynamic_library_path>/path/to/my/libcatboostmodel.so</catboost_dynamic_library_path>
    <models_config>/path/to/my/models/*_model.xml</models_config>
    </yandex>
  • max_data_part_size_bytes
  • https://t.me/clickhouse_ru
    а кстати оно не факт что умеет * *_model.xml
  • https://t.me/clickhouse_ru
    указал без *, полный путь к файлу модели - все равно

    No element found in '/etc/clickhouse-server/config.d/models_config.xml', line 1 column 0
  • https://t.me/clickhouse_ru
    и что в /path/to/my/models/*_model.xml
    https://github.com/ClickHouse/ClickHouse/blob/090e558da4a93741dbe8de5415781fe1951d82c1/tests/integration/test_catboost_model_first_evaluate/model/model_config.xml ?
    и права есть у пользователя КХ на чтение файла?
  • увеличил до 1млн max_data_part_size_bytes
    пишу строку insert into default.test_tab_ssd_to_hdd1(id, str) values(1, 'a');
    все равно сразу на hdd уезжает
  • https://t.me/clickhouse_ru
    да, на директории models права 755, на файл модели - 644
  • https://t.me/clickhouse_ru
    типа у вас так ?
    <moving_from_ssd_to_hdd>
    <volumes>
    <hot>
    <disk>fast_ssd</disk>
    <max_data_part_size_bytes>1073741824</max_data_part_size_bytes>
    </hot>
    <cold>
    <disk>disk1</disk>
    </cold>
    </volumes>
    <move_factor>0.2</move_factor>
    </moving_from_ssd_to_hdd>

    и инсерты сразу идут на cold?
  • да, сейчас скину свой конфиг
    мб где-то слеп
  • @vvvjhaq #211654 05:18 PM, 29 Mar 2021
    <storage_configuration>
    <disks>
    <disk_hdd>
    <path>/opt/clickhouse-hdd/hdd/</path>
    </disk_hdd>
    <disk_ssd>
    <path>/opt/clickhouse-ssd/</path>
    </disk_ssd>
    </disks>
    <policies>
    <hdd_policy>
    <volumes>
    <single>
    <disk>disk_hdd</disk>
    </single>
    </volumes>
    </hdd_policy>
    <moving_from_ssd_to_hdd>
    <volumes>
    <hot>
    <disk>disk_ssd</disk>
    <max_data_part_size_bytes>1000000</max_data_part_size_bytes>
    </hot>
    <cold>
    <disk>disk_hdd</disk>
    </cold>
    </volumes>
    <move_factor>0.2</move_factor>
    </moving_from_ssd_to_hdd>
    </policies>
    </storage_configuration>
    <path>/opt/clickhouse-hdd/default/</path>
  • таблица создается на 2х дисках, но данные сразу попадают на disk_hdd
  • https://t.me/clickhouse_ru
    и таблица создана settings storage_policy='moving_from_ssd_to_hdd' ?
    сколько свободно на df -h /opt/clickhouse-ssd/
  • да, в system.tables storage_policy='moving_from_ssd_to_hdd'
    df -h /opt/clickhouse-ssd/ - avail 1.1T
  • https://t.me/clickhouse_ru
    должно работать, в логе КХ будут записи при инсертах DiskLocal: Reserving 1.00 MiB on disk disk_ssd, having unreserved 1.1T. посмотрите в лог
  • нет таких записей(
    с disk_ssd есть записи только <Information> Context: Shutdown disk disk_ssd
    перед выключением КХ
  • @vvvjhaq #211660 05:44 PM, 29 Mar 2021
    таблицу создавал так
    create table default.test_tab_ssd_to_hdd1
    (id UInt8,
    str String,
    ver DateTime default now())
    engine=ReplacingMergeTree(ver)
    PARTITION BY toYYYYMM(ver)
    ORDER BY id
    SETTINGS index_granularity = 8192,
    storage_policy = 'moving_from_ssd_to_hdd';

    insert into default.test_tab_ssd_to_hdd1(id, str) values(1, 'a');
  • https://t.me/clickhouse_ru
    это видно только если уровень логирования trace
  • ну вот такие я вижу
    <Debug> DiskLocal: Reserving 1.00 MiB on disk disk_hdd, having unreserved 2.91 TiB.
  • ага, кажется получилось.
    в конфиге указал вместо <max_data_part_size_bytes>1000000</max_data_part_size_bytes> - 100000000
    теперь стал писать на ssd
    Reserving 1.00 MiB это минимальный наверно размер который резервирует на диске, и нельзя ставить max_data_part_size_bytes меньше 1 мб?
  • https://t.me/clickhouse_ru
    возможно, спрошу
  • это не критично для меня, просто хотел проверить как это работает
  • @JaksonXXX #211666 05:54 PM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @afiskon #211667 06:02 PM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @559884661 #211668 06:39 PM, 29 Mar 2021
    Добрый вечер, подскажите
  • https://t.me/clickhouse_ru
    @559884661 #211669 06:39 PM, 29 Mar 2021
    DB::Exception: Wrong number of fields in the partition expression: 1, must be: 0
  • https://t.me/clickhouse_ru
    @559884661 #211670 06:40 PM, 29 Mar 2021
    что бы это значило - пытаюсь аттачнуть партицию
  • https://t.me/clickhouse_ru
    @559884661 #211671 06:40 PM, 29 Mar 2021
    базы одинаковые (версия), таблицы одинаковые.
  • https://t.me/clickhouse_ru
    @VladSokolenko #211674 06:56 PM, 29 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    команду и partition by от таблицы в студию
  • https://t.me/clickhouse_ru
    @559884661 #211676 07:45 PM, 29 Mar 2021
    ALTER TABLE XXX ATTACH PARTITION 'all';
    ENGINE = ReplicatedMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/xxx/xxx', '{replica}')
    ORDER BY id
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @559884661 #211677 07:45 PM, 29 Mar 2021
    она маленькая )
  • https://t.me/clickhouse_ru
    А что за партиция all ?
  • https://t.me/clickhouse_ru
    @559884661 #211679 07:49 PM, 29 Mar 2021
    drwxr-x--- 2 systemd-resolve systemd-journal 4096 Mar 18 15:09 all_0_30415_2174
    drwxr-x--- 2 systemd-resolve systemd-journal 4096 Mar 14 10:11 all_30416_30499_15
    drwxr-x--- 2 systemd-resolve systemd-journal 4096 Mar 14 08:13 detached
    -rw-r----- 1 systemd-resolve systemd-journal 1 Mar 14 08:13 format_version.txt
  • https://t.me/clickhouse_ru
    @559884661 #211680 07:49 PM, 29 Mar 2021
    так называются
  • https://t.me/clickhouse_ru
    @559884661 #211681 07:49 PM, 29 Mar 2021
    я незнаю почему так. видимо потомучто нет ключа
  • https://t.me/clickhouse_ru
    LTER TABLE XXX ATTACH PARTITION tuple();
  • https://t.me/clickhouse_ru
    это когда таблица из одной партиции
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    Ого, не знал, спасибо )
  • 30 March 2021 (150 messages)
  • https://t.me/clickhouse_ru
    @denstern #211687 01:40 AM, 30 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @skif_dh #211688 05:52 AM, 30 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @skif_dh #211689 05:57 AM, 30 Mar 2021
    привет! подскажите за перевод времени, после перевода времени 28го марта вьюхи агрегирующие по toStartOfDay поломались

    CREATE MATERIALIZED VIEW some_stuff_daily_mv
    TO some_stuff_daily
    AS SELECT
    toStartOfDay(created_at) AS bucket,

    SELECT bucket
    FROM some_stuff_daily
    ORDER BY bucket DESC
    LIMIT 1

    Query id: ff18c4ee-31cb-41b3-b60e-8b67470ed134

    ┌──────────────bucket─┐
    │ 2021-03-30 01:00:00 │
    └─────────────────────┘

    думал единоразовый случай 29го, сегодня то же самое. Как сделать чтобы снова toStartOfDay во вьюхах (в селектах норм) приводил к 00:00:00? обязательно пересоздавать?
  • https://t.me/clickhouse_ru
    @RSagatdinov #211690 05:59 AM, 30 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @AnKochem #211691 06:22 AM, 30 Mar 2021
    Все привет
    с 21.3 в экспериментально доступен движок баз Replicated
    Кто-нибудь знает, с 21.4 это уже будет стабильной фичей ?)
  • https://t.me/clickhouse_ru
    тык @BlackmorseMan
  • https://t.me/clickhouse_ru
    @AnKochem #211693 06:24 AM, 30 Mar 2021
    спасибо) А вот когда станет не-экспериментальной?
  • https://t.me/clickhouse_ru
    @ployd #211694 06:50 AM, 30 Mar 2021
    Да, хороший вопрос
  • https://t.me/clickhouse_ru
    @mr_zibit #211695 07:31 AM, 30 Mar 2021
    Всем привет! 👋

    Кумекаем сейчас над SLI/SLO storage и думаем в чем хранить данные.

    Как будто бы кажется, что ClickHouse прям отлично может подойти под задачу.

    Делал ли кто уже подобное?

    Текущий вопрос - как быть с обвязкой данных, чтобы потом селектить и фильтровать в дашбордах?
  • https://t.me/clickhouse_ru
    @mr_zibit #211696 07:31 AM, 30 Mar 2021
    Использовать ли словари? Делать кучу колонок?
  • @1473899255 #211697 07:31 AM, 30 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #211695 #211698 07:32 AM, 30 Mar 2021
    Мб graphite-clickhouse?
  • https://t.me/clickhouse_ru
    @mr_zibit #211699 07:34 AM, 30 Mar 2021
    У нас в стеке Пром, Виктория, АРМы всякие типа Динатрейса и тп. Агрегаты из кучи систем хотелось бы собирать куда-то и потом хранить дружно, чтоб предоставить бизнесу возможность строить дешборды по SLO по любой системе.
  • https://t.me/clickhouse_ru
    если умеете делать запросы и писать, - можно даж в графане делать дашни :)
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #211699 #211701 07:35 AM, 30 Mar 2021
    Ну тогда своим софтом перекачивать разве что.
  • https://t.me/clickhouse_ru
    ну да, это была одна из первых мыслей 🙂
  • https://t.me/clickhouse_ru
    ну вам ж для бизнеса кроме как показывания статистик или что вам по задаче требуется, более не надобно. Если у вас уже имеется система наподобие графаны и вы знаете как строить там дашни чтобы показать бизнесу результаты, - постройте там
  • https://t.me/clickhouse_ru
    да, какой-то ETL надо бы изобрести

    но сейчас пытаюсь понять, как бы организовать КХ, чтобы потом к нему обращаться той же Графаной
  • https://t.me/clickhouse_ru
    @mr_zibit #211705 07:37 AM, 30 Mar 2021
    и иметь все необходимые фильтры по системам, локейшенам, цодам и тд
  • https://t.me/clickhouse_ru
    у графаны есть datasource кликхаус
  • https://t.me/clickhouse_ru
    @mr_zibit #211707 07:37 AM, 30 Mar 2021
    но в КХ то положить сначала надо 🙂
  • https://t.me/clickhouse_ru
    @mr_zibit #211708 07:37 AM, 30 Mar 2021
    я про этот этап
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #211704 #211709 07:38 AM, 30 Mar 2021
    Из графаны либо sql запросы через датасорс, либо тот же graphite-clickhouse, тогда будет графитовский язык запросов. Решений с promql не видел
  • https://t.me/clickhouse_ru
    этот этап уже обговаривайте уже с бизнес представителями и уточняйте :)
  • https://t.me/clickhouse_ru
    @mr_zibit #211711 07:38 AM, 30 Mar 2021
    короче история основная в том, что в компании, предположим, 24 графаны, 15 прометеев и тд
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #211705 #211712 07:39 AM, 30 Mar 2021
    Ну так от этих хотелок же и зависит какой будет OK, партиционирование и какие индексы.
  • https://t.me/clickhouse_ru
    @mr_zibit #211713 07:39 AM, 30 Mar 2021
    все себе куда-то в стол собирают свои метрики

    мы хотим прийти к каждому, наладить кафку и начать забирать их метрики, затем куда-то агрегаты их складывать и дать доступ бизнесу
  • https://t.me/clickhouse_ru
    @mr_zibit #211714 07:39 AM, 30 Mar 2021
    идея была в том, чтобы такой точкой правды стал КХ сторадж
  • https://t.me/clickhouse_ru
    @ployd #211715 07:40 AM, 30 Mar 2021
    Ну так хорошая идея
  • https://t.me/clickhouse_ru
    @mr_zibit #211716 07:40 AM, 30 Mar 2021
    а как готовить КХ под такую задачу - непонятно 🙂
  • https://t.me/clickhouse_ru
    @mr_zibit #211717 07:40 AM, 30 Mar 2021
    как огранизовать данные

    ведь там будет больше, чем key+value+timestamp
  • https://t.me/clickhouse_ru
    @mr_zibit #211718 07:41 AM, 30 Mar 2021
    мы будем добавлять кучу полей для каждого источника данных
  • https://t.me/clickhouse_ru
    @mr_zibit #211719 07:41 AM, 30 Mar 2021
    у КХ вроде как колонки, но есть и возможность словари использовать
  • https://t.me/clickhouse_ru
    @mr_zibit #211720 07:41 AM, 30 Mar 2021
    я потому и пришел
  • https://t.me/clickhouse_ru
    @critskiy #211721 07:41 AM, 30 Mar 2021
    всмысли как готовить? это уже часть research стороны вашего вопроса :)
  • https://t.me/clickhouse_ru
    @mr_zibit #211722 07:42 AM, 30 Mar 2021
    ну вот смотри - мы собираем с команды из ее источника key+value+timestamp

    на этапе ETL мы должны промаркировать данные какой команды, какой системы, какого ЦОДа, какого домена мы собрали
  • https://t.me/clickhouse_ru
    @mr_zibit #211723 07:42 AM, 30 Mar 2021
    то есть обогадить эти данные доп полями, чтобы потом по ним селектить на дашах
  • https://t.me/clickhouse_ru
    @mr_zibit #211724 07:43 AM, 30 Mar 2021
    эти же команды, системы и ЦОДы могут использоваться в совершенно другом источнике данных
  • https://t.me/clickhouse_ru
    @mr_zibit #211725 07:44 AM, 30 Mar 2021
    то есть, видимо нужно иметь какой-то словарь

    или же в КХ можно в колонках все организовать?
  • https://t.me/clickhouse_ru
    @mr_zibit #211726 07:44 AM, 30 Mar 2021
    я вот этот момент не могу никак взять в толк
  • https://t.me/clickhouse_ru
    @critskiy #211727 07:47 AM, 30 Mar 2021
    ИМХО (не убивайти, все-таки пока где-то я пробелю, где-то нет): часть данных через dictionary, и по functions работы со словарями мной была бы попытка исследовать и собрать.
    Потом смотрите по перфам как отрабатывает запрос (по крайней мере, я так делаю), и удовлетворит ли вас время выполнения запроса.
  • https://t.me/clickhouse_ru
    @critskiy #211728 07:49 AM, 30 Mar 2021
    если нет, - то тогда вместо КХ использовать key-value db
  • https://t.me/clickhouse_ru
    @mr_zibit #211729 07:55 AM, 30 Mar 2021
    с перфами пока нет вопросов - нагрузки сильной не планируется, ведь хранить будем лишь агрегаты
  • https://t.me/clickhouse_ru
    @mr_zibit #211730 07:55 AM, 30 Mar 2021
    а вот по данным, видимо, правильным подоходом будет складывание в колонки лишь сами данные, а метадату всю через словари
  • https://t.me/clickhouse_ru
    @forward32 #211731 08:04 AM, 30 Mar 2021
    Вот тут (https://www.youtube.com/watch?v=5KQsNmRTQmg&ab_channel=HighLoadChannel) рассказывают +- про похожий кейс, когда они складывают все все данные каким-то образом и потом по ним строят че хочется бизнесу + какой-то мониторинг на этом крутят и даже что-то с аномалиями.
    Может натолкнет на какие-то мысли
    Разгоняем обработку событий до 1.6М/сек. Опыт Badoo / Александр Крашенинников (Badoo)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- HighLoad++ Moscow 2018 Тезисы и презентация: http://www.highload.ru/moscow/2018/abstracts/4132 Три года назад на Highload++ я рассказывал, как мы построили масштабируемую систему near-realtime обработки событий. С тех пор она эволюционировала, в процессе росли объёмы, и нам приходилось решать задачи, сопутствующие любому проекту с нагрузкой — масштабирование, отказоустойчивость и прочие. В определённый момент мы достигли точки, когда потребовались радикальные меры, а именно — смена технологического стека. В докладе я расскажу, как мы заменили связку Spark + Hadoop на ClickHouse, в три раза сэкономили железо и увеличили нагрузку в пять раз (с 300 000 событий в секунду до 1 600 000 в пике). -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • @Mustafin #211733 08:19 AM, 30 Mar 2021
    Joined.
  • https://t.me/clickhouse_ru
    Тут по ходу больше подойдёт victoria/loki, в них есть теги и в графане пользователь сам сможет ручками через раздел explore накидать запрос. В клике как эксперииентальная фича появился новый тип map, но с ним работает только пара функций. Можно попробовать использовать nested. Но чтобы пользователь мог сам ручками строить графики без sql по произвольным полям нужно брать metabase вместо графаны и раскладывать всё по отдельным колонкам.
  • https://t.me/clickhouse_ru
    @mariya_glazunova #211735 08:58 AM, 30 Mar 2021
    привет
  • https://t.me/clickhouse_ru
    @mariya_glazunova #211736 08:59 AM, 30 Mar 2021
    недавно обновили ClickHouse
    не работают старые запросы
  • https://t.me/clickhouse_ru
    @mariya_glazunova #211737 08:59 AM, 30 Mar 2021
    select distinct "to"
    from pcs_stats.send
    any inner JOIN

    (select event_uuid from pcs_stats.undelivered
    where bounce_type = 'hard' and stream_type='email' and event_date>= '2019-05-01')

    USING event_uuid
    where event_date>= '2019-05-01' and event_date< '2019-08-01'
    and stream_type='email'
  • а версии КХ?
    а что значит не работают?
  • https://t.me/clickhouse_ru
    не активна кнопка
    сейчас версия 20
    была 1
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #211741 09:56 AM, 30 Mar 2021
    всем привет, подскажите плз

    Проблема:
    - в компании используем КХ - у нас абсолютно все находится в одной таблице log.events, данных 10тб, 26к столбцов
    - для того чтобы доставать данные порой приходится использовать множество джойнов и кликхаусу становится очень плохо
    Для решения вопроса думаем:
    1. либо использовать мат вьюхи для наиболее часто используемых ивентов или
    2. чз airflow перекладывать данные в новые таблицы
    Вопрос:
    - Какие решения могут быть в данном случае еще и какие плюсы минусы и плюсы разных подходов
    - Если выбирать из двух решений - мат вьхи или физически создавать чз эйрфло таблицы - какой лучше? С мат вьюхами не все гладко - новые данные пишутся с потерями
  • "26к столбцов" - реально 26 тысяч столбцов в одной таблице??
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    вот я изначально топлю за ВМ, а менеджер хочет реляционку) думали найти компромисс в виде кх 🙂
  • https://t.me/clickhouse_ru
    @forward32 #211745 10:59 AM, 30 Mar 2021
    26к столбцов😮😮😮
  • https://t.me/clickhouse_ru
    это наверно метрики целого мира
  • https://t.me/clickhouse_ru
    @forward32 #211747 11:09 AM, 30 Mar 2021
    как оно вообще работает? как там инсерты и мержи поживают при таком раскладе?
  • https://t.me/clickhouse_ru
    @Valenvaryon #211748 11:10 AM, 30 Mar 2021
    один текст инсерта без данных несколько Мб занимать будет))
  • https://t.me/clickhouse_ru
    @Sulaymon11 #211749 11:11 AM, 30 Mar 2021
    я б хотел посмотреть на эту таблицу
  • https://t.me/clickhouse_ru
    @Sulaymon11 #211750 11:11 AM, 30 Mar 2021
    хотя возможно это что-то гугловский проект
  • https://t.me/clickhouse_ru
    @mekluho #211751 11:11 AM, 30 Mar 2021
    Не факт же, что используются сразу все колонки сразу.
    С удовольствием бы послушал как оно с таким количеством работает.
  • https://t.me/clickhouse_ru
    Если у вас буквально все находится в одной таблице, то с чем вы тогда джойните ее?
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #211753 11:21 AM, 30 Mar 2021
    Таблица одна и в ней лежат ивенты со срезами, джойню ивенты друг с другом.

    Чтоб достать инфу об ивенте пишу select... from log.events where event = 'something'.

    У всех ивентов общие два столбца event_date и event_time
  • https://t.me/clickhouse_ru
    @albertalexandrov #211754 11:23 AM, 30 Mar 2021
    Привет. Есть таблица:

    create table testdate
    (
    order_date DateTime64(6) DEFAULT '0000000000.000000'
    )
    engine = MergeTree
    PARTITION BY toYYYYMM(order_date)
    ORDER BY tuple()
    SETTINGS index_granularity = 8192;

    Пытаюсь вставить:

    insert into testdate(order_date)
    values ('2018-06-08T01:02:03.000Z');

    Получаю ошибку:

    DB::Exception: Cannot parse string '2018-06-08T01:02:03.000Z' as DateTime64(6): syntax error at position 23 (parsed just '2018-06-08T01:02:03.000')

    Похоже что настройка https://clickhouse.tech/docs/ru/operations/settings/settings/#settings-date_time_input_format имеет значение basic, так как распознавание указанной при вставке даты возможно только при best_effort.

    У меня таблица на движке MergeTree. Настройку date_time_input_format недозволено указать при создании таблицы. С связи с чем возник вопрос, где переопределить date_time_input_format, чтобы возможно было вставлять даты вида 2018-06-08T01:02:03.000Z?
    Настройки | Документация ClickHouse

    Настройки distributed_product_mode Изменяет поведение распределенных подзапросов. ClickHouse применяет настройку в тех с

  • https://t.me/clickhouse_ru
    Это пользовательская настройка. Можно в запросе, можно в сессии, можно в профиле пользователя установить
  • https://t.me/clickhouse_ru
    @708912204 #211758 11:34 AM, 30 Mar 2021
    Добрый день! Может, кто сталкивался с подобной ситуацией или подскажет куда копать? Есть кластер из 10 нод, каждая нода имеет реплику. Запись событий происходит через одну ноду по схеме Buffer -> Distributed -> На какую-то из нод в соответствии с ключом шардирования. Стабильно раз в сутки (время обычно 24h + (1-4h)) клиенты отваливаются при попытке подключения к ноде, через которую идет запись событий. В метриках видно что количество TCP подключений при этом перестает расти. Рестарт клиентов никак не помогает восстановить подключение (очередь событий не рассасывается), помогает только рестарт ноды, к которой подключаются клиенты. На графике выглядит так
  • https://t.me/clickhouse_ru
    @708912204 #211759 11:35 AM, 30 Mar 2021
    Версия CH - 20.4.4.18
  • https://t.me/clickhouse_ru
    Так может лучше будет делать GROUP BY ?
  • https://t.me/clickhouse_ru
    А в логе кх что?
  • https://t.me/clickhouse_ru
    @708912204 #211762 11:49 AM, 30 Mar 2021
    в текстовых логах сервера ничего нет. Я про вот этот лог - clickhouse-server.log
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    ну попоробуйте 20.4.9.110
  • https://t.me/clickhouse_ru
    а это картинка что за приложение?
  • https://t.me/clickhouse_ru
    Спасибо. В лоб лучше не обновляться? В некоторых ревизиях смотрю есть обратнонесовместимые изменения. Лучше создать параллельно еще один кластер и перегнать данные? Или может есть опыт обновления с версии 20.4.4.18 до 20.4.9.110?
  • https://t.me/clickhouse_ru
    Если делается что-то простое (тупо метрики без всяких срезов и аггрегаций) и не требует доработок, то можно ВМ. Во всех остальных случаях - КХ. КХ гораздо гибче, но для просто метрик места на диске конечно будет занимать сильно больше чем ВМ.
  • https://t.me/clickhouse_ru
    @innopolis #211769 12:50 PM, 30 Mar 2021
    как преобразовать 2021-03-17T08:37:06+03:00 (str) к 2021-03-17 11:37:06 (datetime) только средствами clickhouse?
  • @bobelev #211772 12:55 PM, 30 Mar 2021
    Привет. Хочу перенести хост со сменой ip и hostname. В конфиге для хоста прописан макрос.

    Нужно ли мне будет пересоздавать таблицы, или всё заведется из коробки? Смущают названия хостов в зукипере

    SELECT name
    FROM system.zookeeper
    WHERE path = '/clickhouse/tables/0/table_name/replicas'
    FORMAT TSV

    hostname1
    hostname2
  • @1063161973 #211773 12:57 PM, 30 Mar 2021
    Добрый день.
    Не подскажете, как можно решить проблему:
    - Из SQL через Samba выгружаю файлы CSV непосредственно в папки,
    которые КХ создаёт для таблиц с движком File.
    - Если в настройках конфигурации КХ заданы пути для папок не
    по умолчанию (/var/lib/clickhouse), а к другому диску (HDD),
    то КХ вместо "живых" папок создаёт symlink-и, к которым нет
    доступа из Samba (вроде бы закрыли в связи с уязвимостью).
    Есть ли какая-нибудь настройка КХ, чтобы на диске,
    отличном от пути /var/lib/clickhouse создавались
    живые папки для таблиц вместо symlynk-ов ?
  • @1063161973 #211774 01:00 PM, 30 Mar 2021
    ... объем выгружаемых данных большой, поэтому для
    выгрузки из SQL используется утилита быстрой выгрузки
    bcp.exe
  • https://t.me/clickhouse_ru
    это багфиксы
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    SELECT parseDateTimeBestEffort('2021-03-17T08:37:06+03:00')

    ┌─parseDateTimeBestEffort('2021-03-17T08:37:06+03:00')─┐
    │ 2021-03-17 05:37:06 │
    └──────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #211780 01:22 PM, 30 Mar 2021
    UTC естественно
  • https://t.me/clickhouse_ru
    хост КХ сам записывает свой хостнейм в ЗК при старте, там обновится короче
  • @bobelev #211783 01:26 PM, 30 Mar 2021
    Спасибо
  • https://t.me/clickhouse_ru
    в смысле в config.xml поправили уже ?

    <!-- Directory with user provided files that are accessible by 'file' table function. -->
    <user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
  • @1063161973 #211785 01:32 PM, 30 Mar 2021
    Да, поправил, но не для user_files:
  • @1063161973 #211786 01:35 PM, 30 Mar 2021
    Когда создаю таблицы подобным запросом, папки создаются как симлинки на папки ..\store\...
  • https://t.me/clickhouse_ru
    Это происходит из за того, что движок базы данных Atomic
  • https://t.me/clickhouse_ru
    @unamedrus #211790 01:39 PM, 30 Mar 2021
    В целом лучше использовать file table function а не file table engine.
  • https://t.me/clickhouse_ru
    @unamedrus #211791 01:40 PM, 30 Mar 2021
    INSERT INTO TABLE FUNCTION file(..)
  • @mochalovn #211792 01:41 PM, 30 Mar 2021
    Всем привет! А в кликхаусе есть ограничение на число создаваемых баз?
  • Уже пробовал. Проблем с симлинками там, действительно, нет.
    Но приходится описывать кучу полей и типов в запросе,
    чтобы из CSV загрузить. Если с движком File, то
    при создании таблицы описывается один раз.
  • https://t.me/clickhouse_ru
    Окей, в таком случае создайте новую базу данных с движком Ordinary и создавайте вашу таблицу там

    CREATE DATABASE export ENGINE=Ordinary
  • Про движок Ordinary только сейчас узнал, в документации не нашел
  • @1063161973 #211796 01:45 PM, 30 Mar 2021
    Есть ссылка на описание движка Ordinary ?
  • https://t.me/clickhouse_ru
    Самая лучшая документация это github

    > Есть ссылка на описание движка Ordinary ?

    Ordinary это тот движок что был раньше до Atomic
  • https://t.me/clickhouse_ru
    @unamedrus #211798 01:46 PM, 30 Mar 2021
    Старый то есть
  • https://t.me/clickhouse_ru
    @devmansurov #211799 01:46 PM, 30 Mar 2021
    Здравствуйте! У меня есть БД с такой структурой:

    Таблица для логов

    CREATE TABLE access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `user_agent` String,
    `scheme` String,
    `host` String
    )
    ENGINE = MergeTree
    PARTITION BY toDate(timestamp)
    ORDER BY (timestamp, host)
    TTL timestamp + toIntervalWeek(1)
    SETTINGS index_granularity = 8192;

    Таблица для кафка

    CREATE TABLE `access_logs_kafka`
    (
    `request_id` String,
    `timestamp` DateTime,
    `user_agent` String,
    `scheme` String,
    `host` String
    )
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'kafka:9092', kafka_topic_list = 'access-logs', kafka_group_name = 'access-logs-consumer', kafka_format = 'JSONEachRow', kafka_row_delimiter = '\n', kafka_schema = '', kafka_num_consumers = 1, kafka_skip_broken_messages = 1;

    MATERIALIZED VIEW таблица для логов

    CREATE MATERIALIZED VIEW mv_access_logs TO default.access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `user_agent` String,
    `scheme` String,
    `host` String
    ) AS
    SELECT
    request_id,
    timestamp,
    user_agent,
    scheme,
    host
    FROM default.access_logs_kafka;

    Хотел добавить новое поле в таблицу access_logs и при этом нужно было обновить таблицу mv_access_logs.
    Все нужные поля в таблицу access_logs я добавил через запрос а таблицу access_logs_kafka создал заново.

    Представление mv_access_logs отключил, чтобы перестать получать сообщения от Kafka.
    Теперь не могу обновить представление добавляя новое поля и сделать обратно ATTACH.
    Подскажите пожалуйста как быть в этом случае с представлением?
  • https://t.me/clickhouse_ru
    @unamedrus #211800 01:47 PM, 30 Mar 2021
    Так представление данные не хранит, дропайте его и создайте заново
  • https://t.me/clickhouse_ru
    @unamedrus #211801 01:47 PM, 30 Mar 2021
    вы же правильным TO синтаксисом пользуетесь
  • https://t.me/clickhouse_ru
    Хотел сделать ATTACH но получил такую ошибку:

    DB::Exception: Table 'default.mv_access_logs' already exists (detached) (version 21.1.2.15 (official build))

    Как правильно включить обратно?
  • https://t.me/clickhouse_ru
    Хм, зачем включать обратно?
  • https://t.me/clickhouse_ru
    Просто для практики
  • https://t.me/clickhouse_ru
    @unamedrus #211805 01:55 PM, 30 Mar 2021
    А как пишете ATTACH ?

    ATTACH TABLE default.mv_access_logs; ?
  • Спасибо ! С движком Ordinary всё работает.
  • https://t.me/clickhouse_ru
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 32 ('FORMAT'): FORMAT JSON. Expected one of: storage definition, ENGINE, AS, UUID, OpeningRoundBracket, ON, FROM, Dot, token (version 21.1.2.15 (official build))
  • https://t.me/clickhouse_ru
    У вас там что то дописывает FORMAT, вы через что запрос выполняете?
  • https://t.me/clickhouse_ru
    Grafana
  • https://t.me/clickhouse_ru
    @unamedrus #211811 01:58 PM, 30 Mar 2021
    попробуйте через clickhouse-client
  • https://t.me/clickhouse_ru
    Хорошо спасибо)
  • https://t.me/clickhouse_ru
    @lazovskiy #211813 02:35 PM, 30 Mar 2021
    Ребята, привет. А подскажите самый простой способ перетащить таблицы в другую базу.
    На ум приходит - создать в новой базе идентичную структуру,
    Детачнуть партиции от старых таблиц,
    Переместить их в detached каталог новой базы
    Приаттачить.

    Или есть какой-то более простой способ?
  • https://t.me/clickhouse_ru
    @lazovskiy #211814 02:36 PM, 30 Mar 2021
    Это в рамках одного сервера и инстанса clickhouse
  • https://t.me/clickhouse_ru
    перетащить?

    RENAME TABLE
  • https://t.me/clickhouse_ru
    🤦‍♂️ Большое спасибо :)
  • я сравнивал не по времени выполнения запроса Elapsed, а по количеству срок Processed

    index_granularity=256. Elapsed: 0.527 sec. Processed 1.01 million rows, 58.99 MB (1.92 million rows/s., 111.95 MB/s.)

    index_granularity=1024. Elapsed: 0.550 sec. Processed 1.77 million rows, 72.48 MB (3.22 million rows/s., 131.87 MB/s.)

    index_granularity=4096. Elapsed: 0.637 sec. Processed 4.39 million rows, 116.25 MB (6.89 million rows/s., 182.42 MB/s.)

    index_granularity=8192. Elapsed: 0.591 sec. Processed 6.42 million rows, 147.89 MB (10.85 million rows/s., 250.06 MB/s.)
    получилось что у index_granularity=256 меньше всего Elapsed
    я так понимаю, что запрос оптимальнее использует индекс при 256
  • https://t.me/clickhouse_ru
    метрики с пачкой метаданных, из которых потом будут высчитываться и публиковаться SLO
  • @IvStrk #211821 03:59 PM, 30 Mar 2021
    Посоветуйте пожалуйста, как решить такую проблему:
    Есть distributed таблица на 3 шарда и несколько дней назад один из INSERT-ов в нее упал с ошибкой Too many partitions for single INSERT block
    С тех пор этот INSERT перезапускается каждые 30 секунд и успешно падает с той же ошибкой (судя по `query_log`)
    Что особенно неприятно, с момента возникновения проблемы, начало копиться количество DistributedFilesToInsert, то есть часть данных перестало распределяться по шардам
    Как можно убить этот повторяющийся INSERT?
  • https://t.me/clickhouse_ru
    вы уберите лимит max_partitions_per_insert_block

    cat /etc/clickhouse-server/users.d/max_partitions_per_insert_block.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <max_partitions_per_insert_block>0</max_partitions_per_insert_block>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    @den_crane #211823 04:12 PM, 30 Mar 2021
    или удалите .bin файл который упоминается в сообщении
  • @IvStrk #211824 04:13 PM, 30 Mar 2021
    Да, убрали, но похоже этот запрос запомнил первичные параметры

    ['use_uncompressed_cache','load_balancing','max_memory_usage','max_partitions_per_insert_block','input_format_allow_errors_num','input_format_allow_errors_ratio']
    ['0','random','10000000000','100','1000000','1']
  • @IvStrk #211825 04:14 PM, 30 Mar 2021
    Возможно это связано с материализованными вьюхами, которые работают поверх шардов, как тут: https://github.com/ClickHouse/ClickHouse/issues/12530 (тоже записи в логах каждые 30 секунд)

    Пробовали деаттачить несколько вьюх с большим количеством партиций - не помогло
    Multiple sending data from a distributed table · Issue #12530 · ClickHouse/ClickHouse

    Two shards without replication, version CH 20.4.5.36. Create local Main_Tab tables Create a Distributed table for Main_Tab tables - Distr_main_tab Create a MaterializedView - MV and Tab - target ta...

  • @softbot_xxl #211826 04:40 PM, 30 Mar 2021
    При использовании LowCardinality(String), как КХ хранит словарь? Он привязывает его к таблице, колонке, или использует глобальные словари?
  • хранится внутри парта
  • Т.е. отдельный словарь на парт, правильно?
  • Да, грубо говоря так
  • Спасибо, а не грубо говоря? Можно сложно, я пойму 🙂
  • Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    словарь локален в парте. в каждом парте есть свои файлики имяполя.dict... вроде для строк не должно быть никаких downside от LowCardinality я проверяю для каждой колонки, имеет смысл или нет, делаю копию таблицы с одним днем и конверчу в LowCardinality

  • Ясно, спасибо!
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @AlexanderRomanov46 #211840 05:55 PM, 30 Mar 2021
    Всем привет. Кто-то внедрял движок RabbitMQ ?
    https://clickhouse.tech/docs/ru/engines/table-engines/integrations/rabbitmq/

    Как он работает? После создания таблицы в RabbitMQ появились соответствующие ему очереди. Но у них нет консумеров. В чем тогда смысл этого движка ? Если очередь не разбирается.
    RabbitMQ | Документация ClickHouse

    RabbitMQ Движок работает с RabbitMQ. RabbitMQ позволяет: Публиковать/подписываться на потоки данных. Обрабатывать потоки

  • Спасибо!
  • https://t.me/clickhouse_ru
    он работает точно так же как kafka движок

    https://altinity.com/blog/2020/5/21/clickhouse-kafka-engine-tutorial
    ClickHouse Kafka Engine Tutorial

    Our colleague Mikhail Filimonov just published an excellent ClickHouse Kafka Engine FAQ. It provides users with answers to common questions about using stable versions, configuration parameters, standard SQL definitions, and many other topics. Even experienced users are likely to learn something new. But what if you are getting started and need help setting up Kafka and ClickHouse for the first time? Good news! This article is for you.

  • Вы не прочли про использование таких таблиц в тандеме с мат вьюхами
  • https://t.me/clickhouse_ru
    Прочел и создал вьюху. В ней ничего, после того как сообщения попало в очередь. Как я уже написал консумеров нету, так что кто кладет сообщения в кликхаус - непонятно.
  • https://t.me/clickhouse_ru
    rabbitmq движок постоянно читает из rabbit и используя мат.вью складывает в таблицу
  • https://t.me/clickhouse_ru
    @den_crane #211848 06:30 PM, 30 Mar 2021
    что значит "консумеров нету"? Engine и есть консьюмер
  • https://t.me/clickhouse_ru
    Я в Рэббит захожу, он показывает, что консумеров нет. И из очереди ничего не читается.
  • https://t.me/clickhouse_ru
    Таблица же не может быть консьюмером. Консьюмер это некий процесс, слушающий очередь, который видимо должен быть поднять движком CH, но этого не происходит.
  • https://t.me/clickhouse_ru
    это engine=rabbitmq и есть, фактически это создает в джоб в пуле который ломится в раббит постоянно
  • https://t.me/clickhouse_ru
    Ну вот этого джоба нет. Он не поднят.
  • https://t.me/clickhouse_ru
    в лог кх смотрели?
  • https://t.me/clickhouse_ru
    @artcorp96 #211855 07:09 PM, 30 Mar 2021
    @AlexanderRomanov46 попробуйте сделать селект таблицы с раббит движком
  • https://t.me/clickhouse_ru
    @artcorp96 #211856 07:10 PM, 30 Mar 2021
    Это поможет понять, есть коннект к раббиту или нет
  • https://t.me/clickhouse_ru
    @Dragonflybsd #211861 10:16 PM, 30 Mar 2021
    Выкатывал кто модуль в графану? что-то plugin not found при добавлении datasource в виде файла, при том что в плагинах оно стоит
  • https://t.me/clickhouse_ru
    @Dragonflybsd #211862 10:17 PM, 30 Mar 2021
    type: clickhouse
    (было ClickHouse как в вебе, но уже нашёл что нужно преобразовать к мелким буквам)
  • 31 March 2021 (158 messages)
  • @Greknew #211866 03:12 AM, 31 Mar 2021
    Привет, есть таблица вида:
    UsedId UInt64, ClassificationTime DateTime, Class Enum.
    Которая ежедневно обновляется.
    Требуется получить из нее RangeHashed словарь: класс пользователя от ClassificationTime до NextClassificationTime.
    ----
    Моя предполагаемая архитектура выглядит следующим образом:
    1. Через Airflow(в общем не важно через что) строится новая таблица UserID, StartDT, EndDT, Class.
    2. Где для каждой новой записи UserID, StartDT = ClassificationTime, EndDT = Null.
    3. А предыдущая запись этого пользователя изменяется EndDT = ClassificationTime.
    ----
    Так вот, кажется что это далеко не самый простой и оптимальный способ достигнуть желаемого.
    Как минимум хочется избавится от ALTER TABLE UPDATE.
    Помогите советом:)
  • @demetranadya #211868 05:15 AM, 31 Mar 2021
    не запускается сервер от пользователя clickhouse права есть на папку, в логе пишет, что нет прав\
  • из консоли точно пробовали запускать? лог на какую папку ругается?
  • часть папок была с правами на рута, решилось настройкой всех папок на clickhouse
  • https://t.me/clickhouse_ru
    @mag_mathem #211873 06:41 AM, 31 Mar 2021
    Всем привет!
    Подскажите, пожалуйста, есть ли способ в КХ делать маскирование данных на уровне постоянных правил на выборку из таблицы?
    Управляемых, дабы можно было отменить

    Плюс
    Можно ли присваивать столбцам псевдонимы (алиасы)?
  • https://t.me/clickhouse_ru
    Первый вопрос, вероятно, решается вьюхами;
    Второй — https://clickhouse.tech/docs/ru/sql-reference/statements/create/table/#alias
    Таблица | Документация ClickHouse

    CREATE TABLE Запрос CREATE TABLE может иметь несколько форм, которые используются в зависимости от контекста и решаемых

  • https://t.me/clickhouse_ru
    @mag_mathem #211875 06:46 AM, 31 Mar 2021
    Благодарю)
  • https://t.me/clickhouse_ru
    @ActionNum #211876 06:55 AM, 31 Mar 2021
    Всем привет. Может кто подсказать можно ли читать данные через kafka engine из двух разных кластеров кафки. При этом консьюмер группы и топики одинаково называются. Просто в списках брокеров перечислены брокеры из двух кластеров. Не может ли возникнуть каких то проблем в таком случае?
  • https://t.me/clickhouse_ru
    @Alexfilus #211877 06:58 AM, 31 Mar 2021
    Всем привет, скачал бинарник КХ для MacOS, запустил. работает шустрее чем в докере, но не запускается с флагом —daemon никаких ошибок не выдаёт, просто не работает. Приходится держать отдельное окно консоли.
    Кто-нибудь сталкивался?
  • @JaksonXXX #211878 07:00 AM, 31 Mar 2021
    Привет всем! Подскажите, можно ли через стандартный ado.net с помощью odbc подконнектиться к clickhouse?
  • https://t.me/clickhouse_ru
    вроде как оффсет хранится в косьюмер группе. тк группа одна а топика два - непонятно какой оффсет сейчас у топика. у одного может быть 1 а у друго 10к
    вообще лучше сделать 2 разные таблицы для такого.
  • https://t.me/clickhouse_ru
    А потом как то агрегировать данные из двух таблиц? Просто трафик делится между 2 кластерами, данные одинаковой структуры но содержимое разное. Я бы хотел читать данные из двух кластеров в одну таблицу. Вижу стали появляться в одном из CH (всего у меня их два в кластере, таблица реплецируемая), такие сообщения ошибок.
  • https://t.me/clickhouse_ru
    Ну так сделайте две таблицы с кафкой и повесьте 2 mv которые будут инсертить в вашу таблицу
  • @vvvjhaq #211883 07:46 AM, 31 Mar 2021
    Доброе утро! Можно ли сделать часовые партиции не через toStartofHour, а в таком виде 2021033110?
  • https://t.me/clickhouse_ru
    да можно
    но зачем ? если есть
    куча библиотек для C# ?
    https://clickhouse.tech/docs/en/interfaces/third-party/client-libraries/
    Client Libraries | ClickHouse Documentation

    Client Libraries from Third-party Developers Disclaimer Yandex does not maintain the libraries listed below and hasn’t d

  • @vvvjhaq #211885 07:48 AM, 31 Mar 2021
    Что-то такое: toYYYYMMDDhhmmss(toStartOfHour(ts))
  • formatDateTime(time, '%Y%m%d%H')
  • спс, сделаю такой ключ партиционирования
  • главное за большой период не храните с таким ключом)
  • да, знаю, у нас там сутки +-
  • 1. Посмотреть разные варианты коннекта
    2. Я так понял odbc яндекс тестирует, а стороннее возможно с ошибками
  • https://t.me/clickhouse_ru
    @vmaxlog #211891 08:07 AM, 31 Mar 2021
    добрый день. стал получать ошибки при запросах
    DB::Exception: Attempt to read after eof: while receiving packet from
    но логи чистые. как можно найти в чем именно проблема ?
  • у нас такие бывают когда запрос выполняется дольше таймаута выставленного на самом клиенте
  • https://t.me/clickhouse_ru
    спасибо может быть. тк кастомный таймаут я не ставлю
  • https://t.me/clickhouse_ru
    @glader_ru #211894 08:24 AM, 31 Mar 2021
    Всем привет. Есть таблица с движком ReplicatedReplacingMergeTree. Заливаю туда данные с небольшим количеством дублей. Потом запускаю OPTIMIZE TABLE table_name FINAL. И временами запрос успешно заканчивает исполнение, но процесс оптимизации еще длится. И дубли остаются. Если запустить этот же запрос еще раз, обычно после его окончания дубли пропадают. Можно ли с этим что-то сделать? Есть ли способ отследить, что дедупликация еще идет, даже если запрос отработал?
  • https://t.me/clickhouse_ru
    @lesikv #211897 09:37 AM, 31 Mar 2021
    Всем привет! подскажите пожалуйста, я не могу сделать update столбца dictionary_source который указан в секции order? ну то есть видимо индекс
  • https://t.me/clickhouse_ru
    @lesikv #211898 09:37 AM, 31 Mar 2021
    что в таких случаях делать? дропать таблица и заново заливать?
  • https://t.me/clickhouse_ru
    запрос отрабатывает на реплики, потом еще в фоне смерженные парты реплицируются
    вы потом читаете из таблицы напрямую? с той же реплики? или через лоадбалансер?
  • https://t.me/clickhouse_ru
    С той же реплики
  • https://t.me/clickhouse_ru
    паралельно с OPTIMIZE FINAL идут INSERT ?
  • https://t.me/clickhouse_ru
    нет
  • @thelocky #211903 09:40 AM, 31 Mar 2021
    Всем привет. В логах летит куча ворнингов типа:
    Found parts with the same min block and with the same max block as the missing part 20210220_16091_16163_15. Hoping that it will eventually appear as a result of a merge.

    Можно пофиксить это как-то?
  • https://t.me/clickhouse_ru
    @seriych #211904 09:41 AM, 31 Mar 2021
    Всем привет. Пусть у нас есть Replicated*MergeTree таблица и Distributed к ней. И мы хотим сделать колонку ALIAS, MATERIALIZED или прописать DEFAULT. Правильно я понимаю, что это всё нужно сделать только в Replicated таблице, а в Distributed указать только тип колонки?
    upd. А нет, неправильно понимаю. Как минимум инсерт в Distributed не работает так.
  • https://t.me/clickhouse_ru
    а чего спам-бота не удалили?
  • https://t.me/clickhouse_ru
    @gvinivera #211907 09:50 AM, 31 Mar 2021
    подскажите возможно ли здесь разместить вакансию?
  • @Pernatius #211908 09:51 AM, 31 Mar 2021
    Доброго времени суток! Прошу помощи: пытаюсь с помощью ansible создать таблицы в БД, но не получается, таск выглядит следующим образом:
    - uri:
    url: "http://{{ clickhouse_server }}/"
    body: "{{ lookup('file', 'request.txt') }}"
    Clickhouse, при выполнении возвращает 200, но таблицы не появляются. При этом через clickhouse-client таблица создаётся нормально.
  • @Pernatius #211909 09:52 AM, 31 Mar 2021
    Смотрел доку https://clickhouse.tech/docs/ru/interfaces/http/, вроде делаю аналогично ей.
    HTTP-интерфейс | Документация ClickHouse

    HTTP-интерфейс HTTP интерфейс позволяет использовать ClickHouse на любой платформе, из любого языка программирования. У

  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #211907 #211910 10:04 AM, 31 Mar 2021
    Alexey Milovidov in ClickHouse не тормозит

    Привет. Можно, если вакансия связана с ClickHouse.

  • https://t.me/clickhouse_ru
    @RT_1_98 #211911 10:08 AM, 31 Mar 2021
    Работаю с КХ из питона через clickhouse-driver
    В базе есть таблицы с колонками различных хэшей хранящихся как сырые байты в FixedString() и колонки с обычными строками в String().
    Столкнулся с проблемой автоматической конвертации типа значений для строк в драйвере.
    У драйвера есть поддержка опции 'strings as bytes', но при её передаче все типы строк возвращаются как байты.
    Есть ли возможность указать какие именно колонки в запросе не декодировать и отдавать в сыром виде?
  • @serlex777 #211912 10:21 AM, 31 Mar 2021
    Добрый день! напомните пожалуйста как КХ сказать, чтобы он использовал диск для группировок если памяти не хватает?
  • max_bytes_before_external_group_by
  • спасибо!
  • https://t.me/clickhouse_ru
    @devmansurov #211915 10:28 AM, 31 Mar 2021
    Здравствуйте! У меня к вам вопрос по поводу сохранение IP пользователя полученного с nginx в таблицу. Сейчас в таблицу попадает 2 IP в виде комбинированная строка с запятой такого вида с nginx-а через Kafka:

    193.106.50.49, 185.66.84.182

    Тут 1-й IP 193.106.50.49 мой реальный адрес а 2-й не нужный адрес. Как мне в таблице сохранить только реальный адрес пользователя избавляясь от не нужной?

    Просто возможно ли это сделать в SELECT-е MATERIALIZED VIEW таблицы который слушает таблицу с ENGINE Kafka с встроенными функциями clickhouse-а?

    Я с nginx отправляю IP пользователя таким образом:

    "real_ip":"$proxy_add_x_forwarded_for"

    $proxy_add_x_forwarded_for - поле заголовка запроса клиента “X-Forwarded-For” и добавленная к нему через запятую переменная $remote_addr. Если же поля “X-Forwarded-For” в заголовке запроса клиента нет, то переменная $proxy_add_x_forwarded_for равна переменной $remote_addr.
  • https://t.me/clickhouse_ru
    до конца не понятно, но кажется вам нужно вот это:
    splitByChar(',','193.106.50.49, 185.66.84.182')[1]
  • https://t.me/clickhouse_ru
    Да примерно так. А что если значение равно только 193.106.50.49 и не существует в нём запятая? В этом случае этот функция вернет мне значение 193.106.50.49 ?
  • https://t.me/clickhouse_ru
    А почему вы боитесь сами попробовать?)
    SELECT splitByChar(',', '193.106.50.49')[1]

    Query id: c2247662-8ac6-4c93-ad14-388050d93107

    ┌─arrayElement(splitByChar(',', '193.106.50.49'), 1)─┐
    │ 193.106.50.49 │
    └────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    Спасибо Константин) 😉👍
  • https://t.me/clickhouse_ru
    @daniil_sv #211921 10:40 AM, 31 Mar 2021
    всем привет! clickhouse с понедельника начал пропускать строки для материализированной вьюхи, таблица для вьюхи ReplicatedMergeTree, пропускать начал когда один из серверов упал, после того как сервер подняли строки все еще пропускаются :(, с чего начать копать? версия 19.17.4.11
  • https://t.me/clickhouse_ru
    Зачем? Кажется это ни на что не повлияет
  • https://t.me/clickhouse_ru
    Может вы оптимайз запускаете когда инстерт еще не закончился? Например дистрибьютид таблица еще пишет
  • https://t.me/clickhouse_ru
    @Gma25 #211924 11:12 AM, 31 Mar 2021
    Знатоки, добрый день
    Подскажите пожалуйста как из двух int (год, месяц) сделать столбец с датой?
  • https://t.me/clickhouse_ru
    @aksimemor #211925 11:13 AM, 31 Mar 2021
    Всем привет!

    Имеется таблица ReplicationMergeTree.

    После записи данных в нее данные не сразу схлопываются по order byю

    Правильно ли будет после окончания инсертов - делать optimize final на партиции в которые были вставлены данные?
  • https://t.me/clickhouse_ru
    @Gulshan5k #211926 11:14 AM, 31 Mar 2021
    Добрый день! подскажите пожалуйста можно ли подключить clickhouse в качестве datasource к SAP BO и как это можно сделать?
  • https://t.me/clickhouse_ru
    select toDate(concat(toString(2021),'-',toString(3),'-01'))
  • https://t.me/clickhouse_ru
    @Gma25 ↶ Reply to #211927 #211928 11:18 AM, 31 Mar 2021
    Спасибо!!!!
  • https://t.me/clickhouse_ru
    @Gma25 #211929 11:18 AM, 31 Mar 2021
    👏
  • https://t.me/clickhouse_ru
    В логи кх надо смотреть. Вью писала в дистрибьютид таблицу? Репликация есть?
  • https://t.me/clickhouse_ru
    глянул в part_log пока, на одном из серверов там бесконечная ошибка 389, репликация есть
  • https://t.me/clickhouse_ru
    Я как-то сразу через screen делал. Можно возвратиться к сессии чтобы потом.
  • https://t.me/clickhouse_ru
    @Kanuas_1 #211934 11:28 AM, 31 Mar 2021
    @den_crane Здравствуйте, нашел в истории группы как вы предлагали продавать SAP. Не могли бы вы подсказать, как можно подключить к sap кликхаус (просто гайды в интернете я не нашел)
  • https://t.me/clickhouse_ru
    Можно подробнее?
  • @thelocky #211936 11:30 AM, 31 Mar 2021
    Может кто подсказать? В логах мелькает парт, которого нет в system.parts и /clickhouse/tables/<shard>/<table>/replicas/<replica>/parts
    Где он еще может быть упомянут?
  • это для сервиса нужно, свои заморочки в очистке старых данных
  • https://t.me/clickhouse_ru
    Лучше конечно показать, поэтому смело: brew install screen (или какой другой у вас менеджер пакетов), а потом в Ютуб с запросом 'screen linux' я бы порекомендовал)) Есть видео минут там 8-10, небольшое совсем, на убунте все наглядно и понятно с хоткиями)
  • https://t.me/clickhouse_ru
    Я запускаю optimize, когда отрабатывает insert. Он может чтото еще вставлять после окончания запроса?
  • https://t.me/clickhouse_ru
    @AnKochem #211940 11:37 AM, 31 Mar 2021
    Подскажите, пожалуйста, могу ли как-то выполнить подобный запрос?) К ПРИМЕРУ, хочу посчитать количество запросов на всех хостах ?
    как можно передать результат подзапроса в remote?

    WITH
    (
    SELECT arrayStringConcat(groupArray(host_name), ',')
    FROM system.clusters
    WHERE cluster = 'xxx'
    ) AS hosts
    SELECT count()
    FROM remote(hosts, system, query_log)
  • https://t.me/clickhouse_ru
    что такое 389 ? копи пейст можно увидеть?
  • https://t.me/clickhouse_ru
    инсерт через дистрибьютид асинхронный по умолчанию
  • https://t.me/clickhouse_ru
    через ODBC ?
    ничего про sap не знаю, там была шутка, про то что сап выгоднее продавать чем КХ.
  • https://t.me/clickhouse_ru
    это селект from system.part_log, там в колонке error - 389, в exception пусто
  • https://t.me/clickhouse_ru
    это не копи-пейст
  • https://t.me/clickhouse_ru
    А. понятно, А вы случайно не знаете, можно ли подключить кликхаус к sap bo?
  • https://t.me/clickhouse_ru
    @smartyru #211948 11:47 AM, 31 Mar 2021
    подскажите, в ClickHouse delete работает или есть особенности ? Говорят, он асинхронный ?
  • https://t.me/clickhouse_ru
    зачем это надо?
    есть clusterAllReplica он сразу ко всем хостам кластера делает запрос
  • https://t.me/clickhouse_ru
    так нету delete. Alter table delete это специфическая операция которая перезаписывает всю таблицу и должна выполняться только вручную админом не чаще чем раз месяц
  • https://t.me/clickhouse_ru
    напряму не знаю, но sap можно подключить к Greenplum, к которому можно подключить таблик в CH через PXF как внешнюю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    А, я неточно выразился, у нас не distributed, просто две реплики, в одну льем, во вторую улетает само. Все запросы - на одной и той же реплике
  • https://t.me/clickhouse_ru
    @devmansurov #211954 11:50 AM, 31 Mar 2021
    Привет! Кто то сделал парсер для user agent от nginx-a для добавление данные устройства в таблицу кликхаус?

    Пример данных:

    "Mozilla\/5.0 (iPhone; CPU iPhone OS 14_4_1 like Mac OS X) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/14.0.3 Mobile\/15E148 Safari\/604.1"
  • https://t.me/clickhouse_ru
    Просто таблица довольно большая , не перегрузит ли CH и Greenplum сервак?
  • https://t.me/clickhouse_ru
    @Kanuas_1 #211956 11:58 AM, 31 Mar 2021
    Вообще было бы круто, если можно напрямую подрубить CH к SAP BO, так как в случае сбоя, придется меньше копаться. если кто знает способ, напишите пожалуйста
  • https://t.me/clickhouse_ru
    Хочу одним запросом вытащить количество из system.processes для каждого хоста на самом деле. clusterAllReplicas подходит!
  • https://t.me/clickhouse_ru
    Вангую, что во время запуска шли другие мерджи, тогда OPTIMIZE мерджит что осталось а не всё. Оптимайз нужно запускать, когда в партиции нет мерджей.
  • @AlexandrChirkov #211960 12:07 PM, 31 Mar 2021
    Добрый день. В нашей системе отображается несколько виджетов. Количество данных в этих виджетах примерно 20 млн записей. Причем есть виджеты типа "таблица" где показывается достаточно большой объем данных и нет индексов, поскольку каждый юзер может крутить и аггрегировать данные как ему вздумается. Одновременных юзеров примерно 5000. Какие есть способы для увеличения производительности кроме создания реплик?
  • https://t.me/clickhouse_ru
    Подскажете, как это проверить?
  • https://t.me/clickhouse_ru
    select table,floor(elapsed,2) as elapse,floor(progress,2) as prog,floor((elapsed/progress)*(1-progress),2) as estima,result_part_name, num_parts as n from system.merges order by estima asc;
  • https://t.me/clickhouse_ru
    @metikovvadim #211965 12:14 PM, 31 Mar 2021
    Например, там некоторые колонки сокращены, что бы влазило в терминал
  • https://t.me/clickhouse_ru
    Например, там названия некоторых колонок сокращены, что бы влазило в терминал
  • https://t.me/clickhouse_ru
    Спасибо, попробую.
  • https://t.me/clickhouse_ru
    @aksimemor #211968 12:19 PM, 31 Mar 2021
    подскажите,если ли настройка позволяющая включить автоматический optimize после вставки данных?

    нашел который производится перед вставкой, но интересует как раз таки оптимизация после добавления новых данных
  • https://t.me/clickhouse_ru
    Не нАДО этого делать
    если у вас нужен optimize после каждой вставки
    у вас проблемы с ахтитектурой и не пониманием того как именно работает MergeTree и почему сортировка слиянием дорого...
  • https://t.me/clickhouse_ru
    @aksimemor #211970 12:20 PM, 31 Mar 2021
    У нас имеются таблицы replacing merge tree и после всех вставок, дубликаты удаляются довольно долго.

    хочется ускорить данный процесс
  • https://t.me/clickhouse_ru
    варианты:
    - не вставляйте дубликаты
    - делайте SELECT distinct *
    - делайте SELECT FROM table FINAL
  • https://t.me/clickhouse_ru
    @elevykin #211973 12:26 PM, 31 Mar 2021
    Добрый день! Кто-то сталкивался с такой проблемой: При подключении к кликхаусу через ODBC - в power query кол-во столбцов гораздо больше, нежели в представлениях (отчеты, данные и модель). Пользовался вот такой статейкой при подключении. https://medium.com/@annu.nmit/connecting-to-clickhouse-database-server-from-power-bi-864e950d83e2
    Connecting to ClickHouse database server from Power BI

    I needed to build a dashboard in Power BI for a client whose data was stored in a ClickHouse database. ClickHouse is an open source…

  • https://t.me/clickhouse_ru
    спасибо большое!
  • https://t.me/clickhouse_ru
    в чем выражается "больше"? появляются несуществующие физически столбцы? в них нет данных? как выглядят?
  • https://t.me/clickhouse_ru
    @leagueofsoups #211976 12:31 PM, 31 Mar 2021
    Всем привет. Подскажите, CH будет писать на диск до тех пор пока не достигнит 100%, а потом перейдет в RO, или это случится до достижения 100%?
  • https://t.me/clickhouse_ru
    Лучше оставлять намного больше свободного места, потому что не просто уйдет в read-only, но и мержи перестанут проходить, так что может быть весьма нелегко потом вернуть всё как было.
  • https://t.me/clickhouse_ru
    в базе 228 столбцов, в power query тоже видны все, но в любом из представлений доступны только 31
  • https://t.me/clickhouse_ru
    предположим, я не переживаю о том, что часть данных я потеряю вовсе(из-за того что будут проблемы с мержами), я смогу нормально почистить место, если диск закончится?
  • https://t.me/clickhouse_ru
    @kiselevyav #211980 12:35 PM, 31 Mar 2021
    Всем привет! В таблице есть UInt64 колонка и там лежит значение, например, 11604412194732607246. При селекте из нее через Clickhouse JDBC возвращется значение с последними 3-мя цифрами, замененными на нули: 11604412194732607000. Как быть?
  • Тоже интересно, как оптимизировать такие запросы
    Кто с таким сталкивался?
    Как решали? Или тут кликхаус не помощник?
  • Там где фильтры с маленькой выборкой - использовать prewhere...
    вообще когда используются select * - делайте prewhere
  • ещё кешировать в лог таблицы... и при одинаковых запросах показывать результат из них...
    вообще КХ не будет нормально работать на 5к одновременных юзеров если вы всегда читаете все колонки... их лучше читать из кешей либо из другого рода баз
  • если toString() она правильно возвращается? dbeaver - jdbc
    возвращает ок
  • https://t.me/clickhouse_ru
    Какая версия драйвера у тебя?
  • https://t.me/clickhouse_ru
    @kiselevyav #211986 12:47 PM, 31 Mar 2021
    0.3.0?
  • после какого то этапа перестанут выполнятся мерджи ввиду нехватки места
    после того как количество партов достигнет 100 - инсерты замедлятся
    после того как количество партов достигнет 300 - инсерты встанут
  • https://t.me/clickhouse_ru
    принято, пробуем обновить. сейчас 0.1.29...
  • https://t.me/clickhouse_ru
    @alexanderkamenev #211992 01:27 PM, 31 Mar 2021
    здравствуйте уважаемые эксперты можно ли подобное сделать в CH? на скрине PG) спасибо)
  • https://t.me/clickhouse_ru
    SELECT number
    FROM numbers(10) AS a
    ANTI LEFT JOIN numbers(5) AS b USING (number)
    Query id: 297eae9a-b496-4ba1-9539-5eb1779e7532
    ┌─number─┐
    │ 5 │
    │ 6 │
    │ 7 │
    │ 8 │
    │ 9 │
    └────────┘
  • https://t.me/clickhouse_ru
    благодарю - буду осознавать)
  • https://t.me/clickhouse_ru
    что-то не сработало(
  • https://t.me/clickhouse_ru
    Какая версия кх?
  • https://t.me/clickhouse_ru
    19.15.3.6
  • https://t.me/clickhouse_ru
    @unamedrus #211998 01:52 PM, 31 Mar 2021
    А, ну там такого нет еще.
  • https://t.me/clickhouse_ru
    спасибо еще раз)
  • https://t.me/clickhouse_ru
    @unamedrus #212001 01:53 PM, 31 Mar 2021
    Можно пытаться что то сообразить через LEFT джоин и потом просто отфильтровать все значения которые нашли себе пару.

    А вообще проще через IN сделать кстати
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @unamedrus #212003 01:53 PM, 31 Mar 2021
    SELECT * FROM table1 WHERE (a,b) NOT IN (SELECT a,b FROM table2)
  • https://t.me/clickhouse_ru
    в логах нет ошибок никаких даже warnings, только ошибки от запросов пользоваталей, я думаю обновить кликхаус с 19.17.4.11 до 21.1.7.1, потому что не нашел что за ошибка такая 389 в part_log
  • https://t.me/clickhouse_ru
    я просто не знаю как оно там с джойнами и большими данными выборки не взорвется ли, но попробую малыми кусками ...
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #212011 02:29 PM, 31 Mar 2021
    Добрый день
    Подскажите пожалуйста.
    Имеется все содержимое папки /lib/clickhouse
    В нем есть нужная бд, как её адекватно восстановить на сервере?
    Я так понимаю просто что то скопировать в рабочую папку clickhouse не вариант, так как тогда перестаёт подключаться клиент
  • https://t.me/clickhouse_ru
    Возможности указывать нет. Либо все строковые типы поступают в питон как байты, без обработки, либо декодируются с выбранной локалью (по умолчанию UTF-8).
  • https://t.me/clickhouse_ru
    По идее достаточно просто положить ее в /lib/clickhouse на новом сервере. Я так переносил, все окей было. Подключаться может не сразу, т.к. старт сервера clickhouse может быть не мгновенный. И да, переносить, конечно, только при выключенном сервере кликхауса
  • https://t.me/clickhouse_ru
    Спасибо, попробую ещё раз, может не достаточно ждал запуска сервера
  • https://t.me/clickhouse_ru
    Может быть еще данные побились в папке, это только логи сервера расскажут
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #212017 02:34 PM, 31 Mar 2021
    Точно, про логи не сообразил сразу что-то
  • https://t.me/clickhouse_ru
    вы во что перекладываете UInt64 в java ? в JAVA нету unsigned
  • https://t.me/clickhouse_ru
    M(389, INSERT_WAS_DEDUPLICATED) \
  • https://t.me/clickhouse_ru
    Это поведение MV я так понимаю, но у меня все поля разные которые инсертятся в MV, или он хеш считает не от всех полей?
  • https://t.me/clickhouse_ru
    по умолчанию MV не проверяет дедупликацию, оно наследует от базовой таблицы, если та репликейтид
  • https://t.me/clickhouse_ru
    понял, спасибо)
  • https://t.me/clickhouse_ru
    Это прям печаль ((
  • https://t.me/clickhouse_ru
    @809096964 #212026 03:23 PM, 31 Mar 2021
    Всем привет, может быть повторяюсь с темой, но все же прошу подсказать как правильнее задать параметры таблицы...

    ORDER BY (Date, id, rtime, srtime)
    PARTITION BY yyyymmdd(Date)
    PRIMARY KEY пустой
    кол-во записей за сутки ~ 1 млрд.

    При этом уникальность id 100%, rt и str (95%)

    В каждом select в БД есть в cекции where запрос по Date и rtime или Date и srtime + order по id

    Вопросы:
    1. Нужен ли id в ключе сортировки или достаточно будет ORDER BY (Date, rtime, srtime)
    2. Имеет ли смысл в PRIMARY KEY прописать Date, убрав его из ORDER BY
    3. Есть еще 5-6 полей с уникальностью ~50%, которые достаточно часто могут появляться в select-ах. Имеет смысл их добавлять в ORDER BY (Date, rtime, srtime, ....). Повысит ли это скорость select, сильно ли увеличит нагрузка на сервер.
    4. Дневные партиции выбрали с целью удобства их удаления/бэкапа при переполненнии хранилища. Повысится ли скорость при переходе на недельные?

    Буду признателен за совет.
  • https://t.me/clickhouse_ru
    Как вы хотите, чтобы это работало? У вас есть запрос SELECT 'a', 'b'. Как сказать, чтобы a — вернулось в питон строкой, а b — байтами?
  • https://t.me/clickhouse_ru
    Хотелось бы раздельной настройки для String и FixedString
  • https://t.me/clickhouse_ru
    @809096964 #212029 03:25 PM, 31 Mar 2021
    и кто какие толковые курсы по КХ посоветует, где можно было бы обсудить наболевшие вопросы?
  • https://t.me/clickhouse_ru
    Но это же не решит проблему. Кто-то в одной колонке будет хранить строки, которые надо декодировать по умолчанию, а другой, которые не надо. При этом у них будет один и тот же тип.

    В таких случаях можно просто запрашивать байты, а в питоне уже декодировать что необходимо.
  • https://t.me/clickhouse_ru
    сейчас так и приходится делать.
    на гитхабе драйвера есть ветка как раз с поддержкой подобной фичи - но в мастер она не замерджена и не факт что такой метод будет стабильно работать
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #212026 #212033 03:59 PM, 31 Mar 2021
    По пунктам не отвечу, поэтому поделюсь соображениями общего характера.

    Мне кажется, что ставить ID со 100% уникальностью в ключ сортировки вперёд менее уникальных rtime/strime - это плохая идея. Это делает бесполезным два последующих поля в ключе (т.к. внутри одного уникального ID всегда только один rtime и одного stime), а ресурсы при заполнении индекса и память под сам индекс они кушают.

    Эффект от смены ключа партиционирования зависит ещё от того, за какой период выбираются данные. Если всегда за день, то +- так же будет, а если за бОльший период, то станет быстрее, ибо надо будет меньше файлов перебирать.

    Отдельно предлагаю проверить меняется ли скорость запроса и число прочитанных строк, если добавить в запрос отбор вида
    prewhere toYYYYMMDD(Date) = 20210331
    У меня партишн прунинг на 20.8 не всегда работал если партиционирование по toYYYYMMDD(Date), а в условии отбора запроса просто Date. А вот если указать явным образом, то всегда работает. Это может сильно ускорить.
  • https://t.me/clickhouse_ru
    @809096964 #212034 04:19 PM, 31 Mar 2021
    спсб, будем анализировать
  • @261638839 #212039 09:05 PM, 31 Mar 2021
    Всем привет!
    Я тут пытаюсь использовать join-ы в materialized view. Тут статья есть хорошая: https://altinity.com/blog/2020-07-14-joins-in-clickhouse-materialized-views.
    Суть в том, что когда в matview используется join (серия или дерево join-ов), то триггер вешается на самую первую (самую левую) таблицу в этой последовательности Join-ов, но не на другие. Ну и данные для этой первой таблицы используются только те, которые во вставляемой порции, а для остальных таблиц - все.
    У меня проблема: я хочу сджонить порцию, вставляемую в таблицу T с самой же таблицей T, но со всей её историей, а не только той, что в текущей порции вставки. Как это сделать?
    Я пытался дать таблице T алиас через обычную вьюшку и джоинил порцию с этой вьюшкой, но CH соптимизировал и для вьюшки использовал тоже порцию. Есть какие-то более прямые решения, кроме как иметь копию T в виде materialized view и джоинить порцию с копией?
    Using Joins in ClickHouse Materialized Views

    ClickHouse materialized views provide a powerful way to restructure data in ClickHouse. We have discussed their capabilities many times in webinars, blog articles, and conference talks. One of the most common follow-on questions we receive is whether materialized views can support joins. The answer is emphatically yes.

  • https://t.me/clickhouse_ru
    Лучше никак не джойнить, особенно в MV.
    CH помещает правую таблицу в память при джойне, поэтому память у вас кончится через полчаса таких инсертов
  • Пусть таблица слева (для которой в MV порция) будет называться T1, а её полная копия (не порция) T2, ключевое поле id, тогда я так делаю join:
    select ... from T1 as t1 join (select ... from T2 wher id in (select id from T1)) as t2 ON ...
  • @261638839 #212042 09:33 PM, 31 Mar 2021
    Т.е. я собираю id из порции (например это id пользователя), потом достаю только строки с этими id из полной таблицы (и ещё дополнительно полную таблицу обрезаю по времени типа datetime > now() - interval 6 hour).
    Быстро должно работать (и работает, если тренироваться вместо порция на обрезках таблиц по 5 минут)
    Но в matview не могу второй раз таблицу использовать как полную - в этом засада
  • https://t.me/clickhouse_ru
    @den_crane #212043 09:34 PM, 31 Mar 2021
    не заработает так, не получится с MV
  • @261638839 #212044 09:37 PM, 31 Mar 2021
    Ну ок, спасибо! Думал, может уже есть общее решение. Технически не должно быть проблем - ведь другие таблицы можно целиком использовать в matview, просто CH не допилили чтобы одна таблица в обеих ролях выступала. Придётся делать всё-таки T2 как матвью, у меня там вроде можно отфильтровать строки-столбцы, не полную копию делать.
  • https://t.me/clickhouse_ru
    @809096964 #212045 09:40 PM, 31 Mar 2021
    Коллеги,
  • https://t.me/clickhouse_ru
    @809096964 #212046 09:44 PM, 31 Mar 2021
    есть такой еще кейс, как его подскажете побороть... Есть колонка скажем, с неправильным типом (String), ее бы переделать в UInt, как поступить... БД Тб 20 и длительным копированием заниматься совсем не удобно и возможно, рассматривали вариант плавного переноса в виде создания новой колонки и дублирования при инсерте значения с правильным типом, в последствии удаления старой колонки... Как правильно и лучше сделать... Колонок для такого преобразования, скажем с десяток...
  • Мы делали примерно так вроде. Пусть c1 - старая колонка, c2 - новая.

    ALTER TABLE T ADD COLUMN c2 UInt64 DEFAULT toUInt64(c1); -- завершается мгновенно
    OPTIMIZE TABLE T FINAL; -- прописывает DEFAULT в c2
    -- вставлять начинаем в обе колонки
    ALTER TABLE T MODIFY COLUMN c2 UInt64; -- убираем связь со старой колонкой
    -- тут уже в старую перестаём вставлять, чтобы удалить
    ALTER TABLE T DROP COLUMN c1;

    Мутации тоже пробовали вроде, но они какие-то ненадёжные.
  • Ну и делали много колонок сразу:
    много alter add
    один раз optimize final
    много alter modify
    много alter drop
  • https://t.me/clickhouse_ru
    @809096964 #212049 10:02 PM, 31 Mar 2021
    спсб, буду пробовать
  • https://t.me/clickhouse_ru
    а почему кончится? кх не выгружает обратно из памяти таблицу?
  • https://t.me/clickhouse_ru
    ну таблица растет, как только окажется в таблице 10-100 млн. записей и приджойнить ее справа не получится
  • https://t.me/clickhouse_ru
    @JesterDLA #212052 10:26 PM, 31 Mar 2021
    понятно
  • https://t.me/clickhouse_ru
    на самом деле КХ при алтере типа колонки тоже сделает toUInt64(c1)
    но будет проблемой если строка не конвертируется, с дефолтом лучше делать DEFAULT toUInt64OrZero(c1)