• 01 October 2021 (78 messages)
  • https://t.me/clickhouse_ru
    снепшот занимает 0 байт

    это ХАРДЛИНКИ
  • @923476123 #237055 12:10 AM, 01 Oct 2021
    ну тогда клево, спасибо
  • А можете объяснить в чём прикол? Как хардлинки спасают/помогают? Данные ведь закоруптятся и там и там, или это только на дроп рассчитано?
  • https://t.me/clickhouse_ru
    @XasturX #237057 02:56 AM, 01 Oct 2021
    Добрый день, скажите, пожалуйста, если у вас данные идут через spark streaming, то дальше как лучше их заливать в clickhouse? Я знаю, что нужно пачками большими заливать, а у меня по 1-1000 строк может получится, после spark норм будет, если я буду в buffer таблицу складывать, а после в основную либо есть другие решения по объединению строк в большие пачки?
  • https://t.me/clickhouse_ru
    1 Парты (файлы) иммьютабл, КХ никогда не изменяет файлы.
    2 clickhouse-backup задуман чтобы заливать бекап куда-то, например в s3 / ftp ....
  • https://t.me/clickhouse_ru
    Вставить 1 строку не проблема. Проблема вставить миллион раз по одной строке. Если у вас спарк делает пачки раз в секунду или раз в минуту, то всавляйте хоть по одной строке.
  • https://t.me/clickhouse_ru
    Так говорят, что не рекомендуется вставлять по 1 строке. Или это лишь на скорость записи влияет? Деградации при выборке из данной таблицы не будет? И да, в моем случае, заливка,примерно, по 1 строке в секунду будет.
  • https://t.me/clickhouse_ru
    Всавлять по многу более эффективно. Тратится меньше ресурсов. На скорость запросов кол-во инсертов не влияет напрямую. Потому что в фоне идут мержи. И кол-во партов в партиции в среднем меньше 30. Не важно сколько инсертов пока идет 6й инсерт кх смержит предыдущие 5.
    Если совсем никак не собрать более крупные батчи то можно использовать и engine buffer или кафку.
  • https://t.me/clickhouse_ru
    Понял, скорее тогда да, будем использовать buffer по началу, как самый простой вариант. Благодарю за ответы
  • https://t.me/clickhouse_ru
    @patsevanton #237064 04:40 AM, 01 Oct 2021
    Коллеги, Рассшифровал в текст доклад "Учим Kibana работать с Clickhouse". Если кто хочет прочитать/посмотреть глазами ошибки, напишите мне пожалуйста.
  • https://t.me/clickhouse_ru
    @Caside #237065 05:12 AM, 01 Oct 2021
    есть ли какая-то тема с зарезервированным именем load_date?
    Создаю вьюху как
    select
    Date(date_extracted) as load_date,
    Date(date_extracted) as load_date1

    В результате имеем одну колонку с DateTime, другую с Date
  • https://t.me/clickhouse_ru
    кстати, про вставку помногу. А почему питоновский пакет clickhouse-driver говорит, что, наоборот, не надо вставлять сразу много строк? это ж противоречит основной доке
  • https://t.me/clickhouse_ru
    по моему он как. раз и. говорит. вставлять по многу ии не чаще раза в сек. А пример. кода - что надо массив писать а не. одиночные
  • https://t.me/clickhouse_ru
    в доке же про другое написано: не формируйте запрос в виде строки, а используйте массив параметров
  • https://t.me/clickhouse_ru
    @mikhailnovikov #237069 06:26 AM, 01 Oct 2021
    аа, если так прочитать - понятно, спасибо
  • https://t.me/clickhouse_ru
    @1054533597 #237070 08:02 AM, 01 Oct 2021
    Здравствуйте.

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

    Есть относительно большая для словаря (около 1 млн записей, 100 полей) таблица в ORACLE, которая обновляется к примеру 6 000 раз в сутки. Эта таблица должна в идеале быть одним словарём или источником для нескольких словарей. Сделано так, что все обновления заносятся в таблицу КХ. Таблица в источнике не позволяет получить изменения записей, т.е там нет поля для update_field.

    Провел ряд экспериментов, включая различные схемы затягивания данных в словарь, используя синтаксис invalidate_query, update_field, которые отрабатывают корректно. Но в одной схеме затягивания данных столкнулся с ограничением, которое пока не понял как обойти.

    Хотел сделать в КХ, без средств ETL так, чтобы данные, поступающие в stage таблицу в итоге попали в таблицу (назовём ее source_for_dict) с движком VersionedCollapsingMergeTree, т.е. реализовать подход, указанный в доке.

    Думал создать MV, которое получает ID записей из stage таблицы, по ним ищет данные в source_for_dict и дублирует старые данных с Sign -1, а новые данные поступают с Sign = 1. Хотел сделать это в одном MV с использованием UNION, но MV запрещает его использование. Далее хотел сделать два MV, первое вставляет старые данные с Sign = -1, новые данные с Sign = 1. Но это не получилось, т.к. моё MV цепляется в итоге к source_for_dict, а нужно к stage таблице (была надежда, что увидев первый from MV подцепится к нему).
    Всякие join’ы не рассматриваю, конечно.

    Вот схематичный запрос в MV который не туда цепляется и должен вставлять старые данные со знаком -1.
    ——————
    WITH IDs AS (select distinct ID from TESTRAZ.stage_table)
    SELECT ID, Name, last_update,NREC, -1 as Sign
    FROM TESTRAZ.source_for_dict
    GROUP BY ID, Name, last_update,NREC
    HAVING sum(Sign) > 0 and ID in
    (select distinct ID from IDs)
    —————
    Подумал, было бы не плохо иметь хинт, подсказывающий, какую таблицу отслеживать в MV.
    Есть ли известный способ обновлять таблицу с движком VersionedCollapsingMergeTree без ETL?
  • https://t.me/clickhouse_ru
    @innopolis #237071 08:04 AM, 01 Oct 2021
    когда нужно использовать внешние словари, а когда движки? (в случае выбора одного против другого)

    Например, PostgresqlEngine(https://clickhouse.com/docs/en/engines/database-engines/postgresql/) vs Postgresql в external dictionary (https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-postgresql)
    PostgreSQL | ClickHouse Documentation

    PostgreSQL Allows to connect to databases on a remote PostgreSQL server. Supports read and write operations (SELECT and

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237071 #237072 08:39 AM, 01 Oct 2021
    обычно вся эта оптимизация делается для джойнов. Надо соединить много источников данных в отдном отчете. Ответ зависит от того насколько велики данные и сколько вы готовы ждать. Если запросы раз в день и ожидание в несколько минут-часов вас устраивает, то можно джойнить напрямую с таблицами в постгресе. Но если запросы идут огромным потоком, и отвечать надо быстро, то лучше сделать словарь, который живет в памяти сервера. Но памяти тогда нужно достаточное количество.
  • https://t.me/clickhouse_ru
    Но там же написано. PostgresqlEngine по сути postgres_fdw, то есть представление, не хранит данные, выполняется на лету. Postgresql в external dictionary - хранение данных в памяти или на диске (если конечно не указано direct)
  • https://t.me/clickhouse_ru
    в чем тогда разница между MaterializedPostgreSQL и Postgresql в external dictionary ?
  • https://t.me/clickhouse_ru
    @ochumelec #237075 08:44 AM, 01 Oct 2021
    ребята подскажите кто работает на mac с m1 процом, есть какие-то способы в докере или нативно завести clickhouse? не нашел готового образа на dockerhub
  • https://t.me/clickhouse_ru
    Почитайте доку. В целом то что это абсолютно разные способы получения данных из PostgreSQL.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237070 #237077 08:48 AM, 01 Oct 2021
    CollapsingMergeTree подходит когда вы храните старую строку данных где-то ещё. Добывать её из той-же таблицы - это как тянуть себя за волосы из болота.
    Если у вас всего 1 сервер для этой задачи (не кластер), то можно попробовать embeddedRockDB - там есть нормальные апдейты, и вот поверх нее уже можно сделать словари с обновлением по колонке.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237074 #237078 08:52 AM, 01 Oct 2021
    в первом случае вы читаете локальную таблицу (КХ как узел PG кластера), во втором идет обращение по сети к удаленному PG.
    Но вы там поосторожнее с источниками словарей - не все способы хранения поддерживают все источники. Вот к примеру для cached - Supported sources: MySQL, ClickHouse, executable, HTTP.
  • https://t.me/clickhouse_ru
    Это лучше на практике проверить, могли просто забыть добавить
  • @sedoygosha #237080 08:58 AM, 01 Oct 2021
    Добрый день! Подскажите пожалуйста, можно ли как-то просто поменять engine (c ReplicatedMergeTree на ReplicatedReplacingMergeTree)? Или прийдется заниматься перекладыванием данных из старой табл в новую?
  • https://t.me/clickhouse_ru
    Спасибо за ответы
  • https://t.me/clickhouse_ru
    Понял, спасибо. Попробую с embeddedRockDB.
  • @KevinMort #237083 09:41 AM, 01 Oct 2021
    Всем привет! Как я могу сгенерировать поле id и пронумеровать записи от одного до конца в clickhouse?
  • https://t.me/clickhouse_ru
    автоинкремент?
  • https://t.me/clickhouse_ru
    @nyoroon #237085 09:43 AM, 01 Oct 2021
    или просто единоразово в запросе пронумеровать?
  • В запросе единоразово
  • window functions?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237083 #237088 09:44 AM, 01 Oct 2021
    select rowNumberInAllBlocks() from numbers(3);
  • 👍
  • select rowNumberInAllBlocks(),
    stringField0 as `case`,
    stringField1 as `event`,
    timeField0 as `time`
    from kostya.pool_90_main

    Вот так выходит
  • groupArray() + arrayEnumerate
  • groupArray агрегирующая функция, как мне вставить её без подзапроса?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237090 #237093 09:57 AM, 01 Oct 2021
    тогда не знаю. Сейчас кто-то из алтинити придет и все объяснит.
    У меня работает правильно, но проверял на 1-м сервере :
    select rowNumberInAllBlocks() as a,groupArray(uid) as u from table group by a having length(u) > 1; - не дает ничего.
    Может быть для Distributed как-то хитрее получается и это надо учитывать. какой-нибудь hostName()
  • скорее всего никак
    вот пример нашел:
    select g, x, n from (select g, groupArray(x) gx from ( select number%3 g, number x from numbers(10) ) group by g) array Join gx as x, arrayEnumerate(gx) as n
  • https://t.me/clickhouse_ru
    А у вас таблица с каким движком? Попробуйте запрос обернуть в подзапрос и к нему применить функцию, примерно так - select rowNumberInAllBlocks(), *
    from (select stringField0 as case,
    stringField1 as event,
    timeField0 as time
    from kostya.pool_90_main) as tmp
  • https://t.me/clickhouse_ru
    @399999446 #237097 10:10 AM, 01 Oct 2021
    всем привет
    нужно проверить, подходит ли какой-то элемент массива под условие like '%param%'?

    Как это можно сделать,без разворачивания массива?
  • SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res;
  • https://t.me/clickhouse_ru
    @hombit #237099 10:12 AM, 01 Oct 2021
    Что значит без разворачивания, без arrayJoin? arrayExists подходит?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    без array join,выше уже подсказали,спасибо
  • https://t.me/clickhouse_ru
    @shushkaden #237102 10:40 AM, 01 Oct 2021
    Всем привет!
    В документации сказано что тип Map из Avro не поддерживается.
    А может кто знает есть ли планы чтобы он поддерживался?
    И кто как выходит из этой ситуации?
    Использую Kafka engine чтобы переложить данные в КХ, и мне нужна та часть, что в Map лежит.
  • @vladget #237103 11:55 AM, 01 Oct 2021
    Бывает кейс, когда после альтера таблицы не во все партиции добавляется колонка.
    То-есть появляется одна - две партиции, где ругается

    Missing columns: 'column' while processing query: ...
    while reading from part /database/clickhouse/data/db/table/202006_12745222_14108479_43_35722274/

    Кто-то сталкивался?
    Как это правильно чинить?
  • https://t.me/clickhouse_ru
    @kedr275 #237104 12:05 PM, 01 Oct 2021
    Привет, всем.
    Как можно проверить используемые настройки компрессии данных ?
    Какой блок <case> сработал, сработал ли или по умолчанию все ?
  • https://t.me/clickhouse_ru
    @115328525 #237105 12:07 PM, 01 Oct 2021
    Всем привет!

    Делаю вставку из селекта ремоут таблицы:

    в селекте присуствуют подобные выражения:
    countStateIf(event = ‘impression’) AS impressions

    в таблице вставки это поле имеет тип:

    impressions AggregateFunction(count, UInt64),

    в итоге при вставке ошибка:

    DB::Exception: Conversion from AggregateFunction(count) to AggregateFunction(count, UInt64) is not supported: while converting source column impressions to destination column clicks. (CANNOT_CONVERT_TYPE)

    При этом в некоторых других забранных колонках из ремоута значится тип (count, UInt32)

    С чем связано подобное поведение и возможно ли это как-то избежать?
  • https://t.me/clickhouse_ru
    @Raikh #237112 01:37 PM, 01 Oct 2021
    Ребят, столкнулся с проблемой, возможно очень тривиальная, но опыта с кликхаусом нет

    Есть две идентичные таблицы со статистикой полученной из двух разных ресурсов, пытаюсь написать запрос, который получит сумму из двух таблиц, пример -
    SELECT sum(impressions)
    FROM google_campaign_report
    JOIN amazon_campaign_report ON google_campaign_report.campaign_local_id = amazon_campaign_report.campaign_local_id
    Но в итоге получаю результат только из первой таблицы, которая указана в FROM

    Что делаю не так?
  • @s4851 ↶ Reply to #237112 #237113 01:40 PM, 01 Oct 2021
    предполагаю проблему с разностью типов поля campaign_local_id в таблицах
  • https://t.me/clickhouse_ru
    у тебя получается что ты суммируешь impressions только из левой таблицы
  • https://t.me/clickhouse_ru
    @nyoroon #237115 01:41 PM, 01 Oct 2021
    или правой, не важно
  • https://t.me/clickhouse_ru
    @cassej ↶ Reply to #237112 #237116 01:41 PM, 01 Oct 2021
    union
  • https://t.me/clickhouse_ru
    @nyoroon #237117 01:41 PM, 01 Oct 2021
    т.е. при джойне impressions из левой таблицы не суммируются с правыми
  • https://t.me/clickhouse_ru
    @nyoroon #237118 01:41 PM, 01 Oct 2021
    либо правильно используй алиасы, либо union как подсказывают
  • https://t.me/clickhouse_ru
    @Raikh ↶ Reply to #237117 #237119 01:42 PM, 01 Oct 2021
    да, верная теория, спасибо большое!
  • https://t.me/clickhouse_ru
    @cassej #237120 01:43 PM, 01 Oct 2021
    а может кто-то подсказать на что обращать внимание при выборе железа под CH?
  • https://t.me/clickhouse_ru
    @cassej #237121 01:43 PM, 01 Oct 2021
    насколько важен проц?
  • Важно все и важен баланс, если не упираетесь в диски, то упретесь в проц. Проверяйте на своих задачах, самый верный совет.
  • https://t.me/clickhouse_ru
    @chagin_mv #237128 04:11 PM, 01 Oct 2021
    Приветствую!

    Не стартует служба clickhouse-server
    кидает ошибку:

    Application: DB::Exception: Suspiciously many (11) broken parts to remove.: Cannot attach table...

    можно как то это исправить или что то сделать?
  • https://t.me/clickhouse_ru
    я так понимаю данные тестовые. удалить таблицу. переделать partition by
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #237131 06:54 PM, 01 Oct 2021
    приветы! ищу, как можно в CH сделать из длинной таблицы широкую, как на рисунке. подскажите, пж
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @abdulgalimov #237135 08:44 PM, 01 Oct 2021
    Господа, подскажите а хранить строки в КХ это нормально? или лучше переводить в числовой идентификатор? Например чтобы записать язык пользователя, использовать строки ru, en или их числовые эквиваленты ?
  • https://t.me/clickhouse_ru
    Это рабочая таблица. Было выключено питание и сервер упал, после этого КХ не стартует
  • https://t.me/clickhouse_ru
    Скиньте ддл таблицы. Интересно почему так много побилось партов.
  • Практически нет разницы, но удобнее для использования в этом случае кажется строки
  • https://t.me/clickhouse_ru
    @227885018 #237139 10:03 PM, 01 Oct 2021
    А может кто-нибудь дать ссыль на норм материал по кликхаус как новичку? А то документация ужасна просто, правила оформления запроса не написаны
  • Если вам нужны именно запросы, то в CH практически стандартный sql, инфа из любого туториала по sql актуальна
  • https://t.me/clickhouse_ru
    Да вот, например, в кх я не могу прям в SELECT написать подзапрос
  • https://t.me/clickhouse_ru
    @227885018 #237142 10:12 PM, 01 Oct 2021
    В пг такое могу
  • https://t.me/clickhouse_ru
    @227885018 #237143 10:12 PM, 01 Oct 2021
    Мне бы узнать эти особенности
  • https://t.me/clickhouse_ru
    Эм, ну вообще можно
  • https://t.me/clickhouse_ru
    Да никаких нет сложностей
    SELECT name, days FROM months WHERE days = (SELECT MAX(days) FROM months);
  • https://t.me/clickhouse_ru
    А в какие дни? Спланировал бы поездку с Санкт-Петербурга
  • 02 October 2021 (42 messages)
  • @milovidov_an #237150 02:54 AM, 02 Oct 2021
    Пока ещё неизвестно, планируем конец октября, как минимум за две недели будет ясно.
  • https://t.me/clickhouse_ru
    числовые идентификаторы в разы быстрее на реальных бигдата
    и никакие LowCardinality не помогут в реальной bigdata, чисто из-за перекладывания в памяти объема байт
  • @SemyonGalichenko #237154 05:17 AM, 02 Oct 2021
    Привет
    Подскажите, пожалуйста, как происходит применение фильтра для пользователя? Я правильно понимаю, что в фильтре просто указывается выражение, которое будет подставлено в WHERE?
    Как можно посмотреть "полный" запрос который формируется CH после применения фильтра?
    И в чём разница/преимущества использования Row Policies перед фильтрами?
    Спасибо
  • https://t.me/clickhouse_ru
    Возплльзуйтесь табличной функцией merge(), примерно так select * from merge(default,‘campaign_report')
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237135 #237156 06:23 AM, 02 Oct 2021
    так Enum же. Человеку en/ru надо хранить, а не список брендов. Enum - это как раз числа, которые вы пишите как строки. Но при добавлении новых вариантов придется сделать alter
  • @beebeeep #237157 06:56 AM, 02 Oct 2021
    LowCardinality(String) тоже вполне пойдет
  • https://t.me/clickhouse_ru
    @natomist #237158 07:32 AM, 02 Oct 2021
    en/ru это всего 2 байта. А после сжатия оно ещё меньше памяти будет требовать.
  • https://t.me/clickhouse_ru
    Да не, я тебе не про сложность, а про особенность. Где их все найти?
  • https://t.me/clickhouse_ru
    Таблица очень широкая, 282 столбца, может из-за этого? Хотя есть таблица на 701 столбец, с ней всё хорошо.

    А есть какие либо команды на проверку таблицы/партов/столбцов, что бы найти конкретный участок ?
  • @softbot_xxl #237161 07:38 AM, 02 Oct 2021
    Для Array(LowCardinality(String)), или Map(LowCardinality(String), String), словарь будет один на парт, или один на “запись” (не в курсе, как хранятся сложные структуры в КХ)?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237158 #237162 07:46 AM, 02 Oct 2021
    Не два. String в КХ это что-то типа blob и хранится соответсвенно с доп информацией.
    Два байта это FixedString(2)
    Однако Enum8 - это всего 1 байт, и столбец из миллиарда значений сожмется довольно прилично. Нет смысла этим не воспользоваться. Внутри SQL enum выглядит 'как обычная строка'
  • https://t.me/clickhouse_ru
    Вообще словарей несколько на парт (если уник значений больше 8192)

    > или один на “запись” (не в курсе, как хранятся сложные структуры в КХ)?

    Нет, словарь общий
  • Спасибо, то что нужно
  • https://t.me/clickhouse_ru
    В кх исторически можно было создавать пользователей через xml. В прошлом году добавился еще способ, через SQL. Эти способы не связаны и пользователи созданные разными способами тоже. И фильтры и роуполиси это одно и тоже но применяются они для разных типов пользователей.
    К сожалению это не тоже самое что подстановка в where. Для более надежной работы проверка делается на другом уровне поэтому например индексы не используются и те же самые условия заданные в where в sql запросах могут ускорять запросы в разы..
  • https://t.me/clickhouse_ru
    @edyya #237169 12:51 PM, 02 Oct 2021
    Коллеги, подскажите, пожалуйста, про normalizeQuery https://clickhouse.com/docs/en/sql-reference/functions/string-functions/#normalized-query
    Это набор регулярок реализованных внутри КХ или это какая-то библиотека, которую можно использовать отдельно от КХ?
    Strings | ClickHouse Documentation

    Functions for Working with Strings Note Functions for searching and replacing in strings are described separately. empty

  • https://t.me/clickhouse_ru
    ClickHouse/queryNormalization.h at master · 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
    @edyya ↶ Reply to #237170 #237172 12:56 PM, 02 Oct 2021
    понял, спасибо
  • Спасибо большое!)
  • https://t.me/clickhouse_ru
    тогда хотя бы partition by посмотреть бы.
    бекапы/репликаци были?
    можно попробовать выполнить:
    >sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data
    но за результат не отвечаю, лучше забекапиться перед выполнением
  • https://t.me/clickhouse_ru
    ENGINE = MergeTree(EventDate,
    (TVID,
    TypeDataID,
    dtMeasure),
    8192)

    TVID - String
    TypeDataID - String
    dtMeasure - DateTime

    ---
    бекапы/репликаци были?

    нет, не делали
  • https://t.me/clickhouse_ru
    блин, это старый синтаксис. я в нём не секу. фишка в том, что нужно подбирать partition by и order by таким образом, чтобы затрагивалось как можно меньше партов, а также вставлять пачками, а не по штучно. тогда даже при внезапном отключении сервера не будет затронуто куча партов.
    сейчас пожалуй остаётся только один вариант - force_restore_data. у вас много данных в этой таблице?
  • https://t.me/clickhouse_ru
    Вначале строки лежит ее длина в формате leb128, т.е. для коротких строк +1 байт
  • https://t.me/clickhouse_ru
    Это нормальное поведение. Кх не синкает кеш поэтому последние инсерты при отключении питания бьются.
    Есть параметр сколько сломанных партов допустимо, это тупо защита от неверных настроек. Я ставлю 150 что ли партов suspicious
  • https://t.me/clickhouse_ru
    @maga_rs #237182 07:33 PM, 02 Oct 2021
    Привет) Подскажите, есть таблица около 80 млрд строк (22 колонки), хочу перелить все данные (два месяца) в новую таблицу, т.к нужно поменять партишн ключ с месяца на день.
    Подойдет ли просто
    insert into tableB
    select * from tableA
    ?

    Движок ReplicatedReplacingMergeTree
    Версия клика: 21.9.2.17
  • https://t.me/clickhouse_ru
    У меня не получилось такое и на 100 млн строк. Партов много и инсерт валица
  • https://t.me/clickhouse_ru
    @dbalashov #237184 07:35 PM, 02 Oct 2021
    Пишут что clickhouse-copier надо, но я решил проще - перелил за 10 порций по 10 млн записей
  • https://t.me/clickhouse_ru
    а как на порции поделили?
  • https://t.me/clickhouse_ru
    @dbalashov #237186 07:39 PM, 02 Oct 2021
    По месяцам :)
  • https://t.me/clickhouse_ru
    @dbalashov #237187 07:39 PM, 02 Oct 2021
    У меня тут за 10 месяцев данные более менее равномерно
  • https://t.me/clickhouse_ru
    @dbalashov #237188 07:40 PM, 02 Oct 2021
    Примерно по 10млн в каждом
  • https://t.me/clickhouse_ru
    @dbalashov #237190 07:40 PM, 02 Oct 2021
    Insert ... Select from where startofmonth(DT)=...
  • https://t.me/clickhouse_ru
    @dbalashov #237191 07:41 PM, 02 Oct 2021
    И так 10 раз
  • https://t.me/clickhouse_ru
    @Leossb ↶ Reply to #237184 #237192 07:41 PM, 02 Oct 2021
    С копимом сражались месяц наверное, потом плюнули и по секундам просто заинсертили
  • https://t.me/clickhouse_ru
    понял) у меня просто в месяце около 40 млрд записей. И партишн ки задан - месяц))
  • https://t.me/clickhouse_ru
    @dbalashov #237194 07:42 PM, 02 Oct 2021
    Ну сделай батничек и порции по суткам
  • https://t.me/clickhouse_ru
    @dbalashov #237195 07:42 PM, 02 Oct 2021
    Или ещё мельче :)
  • https://t.me/clickhouse_ru
    а пример можно если не сложно?
  • https://t.me/clickhouse_ru
    @dbalashov #237197 07:56 PM, 02 Oct 2021
    Сложно потому что я с планшета
  • https://t.me/clickhouse_ru
    @worldlaboperator #237199 09:21 PM, 02 Oct 2021
    Всем салют!
    Такая дилема, учусь на 4 курсе комплексной безопасности. Все предыдущие три года работал в сфере рекламы и только сейчас понял что не хочу дальше связывать жизнь с этим, остаётся программирование.
    Сам вопрос собственно в том что мне до конца этого года нужно иметь базу знаний достаточных для стажёра, подскажите пожалуйста к какой специальности стоит присмотреться? Я сижу читаю но ничего не могу выбрать, так как вообще не интересовался этим все это время обучения. Их навыков, совсем немного знаю питон.
  • https://t.me/clickhouse_ru
    А почему такой ник странный, хочется забанить
  • https://t.me/clickhouse_ru
    Рабочий аккаунт
    Все норм)
  • @it_chats тут можешь поискать профильные чаты
  • 03 October 2021 (25 messages)
  • https://t.me/clickhouse_ru
    @Krisantis #237205 05:46 AM, 03 Oct 2021
    Подскажите куда копать? На вид что-то рекурсивное.
    Есть таблица с ключами таски, временем таски, и связными ключами-тасками:
    key time linked
    ISD-1 1 [IMD-1;IMD-3]
    IMD-1 1 [IMD-2]
    IMD-2 1
    IMD-3 1
    я хочу получить суммарное время потраченное на каждую таску. Для этого мне нужно просуммировать time самой таски и добавить сумму времени для всех вложенных. Должно получиться так:
    key time
    ISD-1 4
    IMD-1 2
    IMD-2 1
    IMD-3 1
    Хотелось бы, чтобы ограничений по вложенности не было, но если никак, то можно ограничить.
  • https://t.me/clickhouse_ru
    @Krisantis #237206 05:52 AM, 03 Oct 2021
    Хотел обойтись простым ArrayJoin разворотом, с последующей групировкой и джойном. Но в таком случае получается только 1 уровень вложенности.
    А тут мы видим кейс, где IMD-1 для ключа ISD-1, имеет вложенность 2
  • @bvbbz #237208 08:54 AM, 03 Oct 2021
    Подскажите пожалуйста из опыта. Еще не ставил кликхауз, но зависит решение от ответа на вопрос. Влияет ли количество столбцов таблицы на скорость вставки в таблицу движка MergeTree и как влияет (линейно)?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237205 #237209 09:00 AM, 03 Oct 2021
    я бы попробовал сделать из этой таблицы иерархический словарь, и воспользоваться функцией dictGetDescendant
  • https://t.me/clickhouse_ru
    Звучит как хорошее решение, спасибо
  • @vasya_p0pkin #237211 03:18 PM, 03 Oct 2021
    Ни кто не обратил внимание, что новая версия dataGrip перестала создавать скрипт создания materializedview? Раньше создавала, но с ошибками синтаксиса, а сейчас вообще перестала. Только первую строку выводит. В связи с чем вопрос, как сгенерить скрипт для создания matview, в какой системной таблице хранятся служебные данные об этом?
  • https://t.me/clickhouse_ru
    SHOW CREATE mv_name
  • Спасибо ) Но вопрос с Datagrip открыт, может кто знает как настроить чтобы он сам скрипты генерил корректно
  • https://t.me/clickhouse_ru
    @alexanderepin #237215 05:42 PM, 03 Oct 2021
    Коллеги, подскажите пожалуйста:
    имеется две таблицы mergetree, без указанной партиции (пробовал с / без), через curl записываю потоком данные в каждую, но по какой-то причине часть данных не записывает в КХ без информирования об какой-либо ошибки
  • https://t.me/clickhouse_ru
    @alexanderepin #237216 05:42 PM, 03 Oct 2021
    Пишу курлами из под node приложения, где перед пушем вывожу все, что пушу, дабы сверить что приложение корректно строит инсерты
  • https://t.me/clickhouse_ru
    @alexanderepin #237217 05:43 PM, 03 Oct 2021
    Куда копать?
  • https://t.me/clickhouse_ru
    @326452623 #237218 05:45 PM, 03 Oct 2021
    Привет всем. Подскажите как в функцию extractAllGroupsVertical добавить флаги, например IgnoreCase. Вот пример из документации SELECT extractAllGroupsVertical('abc=111, def=222, ghi=333', '("[^"]+"|\\w+)=("[^"]+"|\\w+)') —- подсовываю i перед последней кавычкой — результат становится пустой.
  • https://t.me/clickhouse_ru
    там же где и при работе с любым другим софтом - логи ошибок, например /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    Посмотрите на ключ сортировки и настройку слияние во время инсерта, не помню название что-то наподобие optimize_on_insert. Есть подозрение что у вас несколько записей попадают под один ключ сортировки и движок производит слияние
  • https://t.me/clickhouse_ru
    У меня там дата используется, соответственно для многих записей она одинаковая
  • https://t.me/clickhouse_ru
    @alexanderepin #237222 06:09 PM, 03 Oct 2021
    А чем грозит отключение оптимизации при инсерте?
  • https://t.me/clickhouse_ru
    У вас академический интерес или проблему решить хотите? Если проблему то рекомендую сменить ключ сортировки, а если интерес то просто слияния не будет движок делать пытаться при инсерте, но сделает их позже в фоне или при отправке Команды optimize table …
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @shagen_A #237225 06:41 PM, 03 Oct 2021
    друзья, подскажите плиз. создавая локальный словарь, что нужно прописывать в source?

    все чтиво только про внешние словари, про локальные вообще ничего(
  • @s4851 ↶ Reply to #237225 #237226 07:03 PM, 03 Oct 2021
    SOURCE (CLICKHOUSE(PORT 9000 USER 'default' PASSWORD 'root' DB 'europa' TABLE 'items_new')) LIFETIME (MIN 300 MAX 360) LAYOUT (COMPLEX_KEY_HASHED())
  • https://t.me/clickhouse_ru
    спасибо! но мне походу надо знать user и password в любом случае?(
  • @s4851 ↶ Reply to #237227 #237228 07:13 PM, 03 Oct 2021
    Естественно)
  • @s4851 #237229 07:13 PM, 03 Oct 2021
    Адрес знать не обязательно, а вот авторизация обязательно
  • https://t.me/clickhouse_ru
    ага понял, значит не судьба самому, придется коллег просить) спасибо еще раз!
  • @kazansky85 #237231 11:38 PM, 03 Oct 2021
    Как в Clickhouse получить совпадение по URL, в целом не сложно. А что, если есть набор regexp'ов, по которым хочется получать количество попаданий?
    Например, URL вида /api/user/1234/profile попадёт под regexp /api/user/\d+/profile. Но я хочу count() и потом GROUP BY по таким regexp'ам.
  • 04 October 2021 (119 messages)
  • https://t.me/clickhouse_ru
    А в чем проблема сделать extract(url,regexp), count()?
  • https://t.me/clickhouse_ru
    @shushkaden #237235 05:35 AM, 04 Oct 2021
    Всем привет!
    В документации сказано что тип Map из Avro не поддерживается.
    А может кто знает есть ли планы чтобы он поддерживался?
    И кто как выходит из этой ситуации?
    Использую Kafka engine чтобы переложить данные в КХ, и мне нужна та часть, что в Map лежит.
  • @Logioniz #237238 06:29 AM, 04 Oct 2021
    Всем привет.
    Подскажите, как по-русски называется compaction sstable-ов в clickhouse?

    Где-то слышал, что если compaction вырастает до 100, то clickhouse замедляется, а если до 200, то перестаёт обслуживать. Не могу найти, где услышал такое. Хочется понять, на сколько авторитетные эти заявления и можно ли им верить.
  • https://t.me/clickhouse_ru
    ну вообще это называется
    как таковых sstable из LSM в clickhouse нет
    но да, внутреняя структура это разреженный индекс

    по русски это будет bacground merge или фоновое слияние

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

    clickhouse замедляется когда data parts много на один partition, это да
    это возникает от кривых паттернов вставки (мелкие батчи)
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/18925
    https://github.com/ClickHouse/ClickHouse/pull/10502
    Add support of complex structures to Avro/AvroConfluent formats · Issue #18925 · ClickHouse/ClickHouse

    Use case There is currently no way to access the array of records in Avro. For example data: {"a": 1, "b": [{"c": 100, "d": &...

  • А в документации про это где-то есть? Или может видео, где это рассказывается?
  • https://t.me/clickhouse_ru
    ClickHouse: как устроен MergeTree

    Моя команда использует ClickHouse как хранилище для 100 млрд записей с трафиком по 300 млн в сутки и поиском по таблице. Я расскажу об устройстве движка таблиц M...

  • https://t.me/clickhouse_ru
  • > Дело в том, что ClickHouse сортирует вставляемые строки в оперативке с использованием красно-чёрного дерева, и время от времени сбрасывает его на диск в виде immutable дата-парта.

    Эмм... там memstore есть? вроде бы небыло же)
  • https://t.me/clickhouse_ru
    при вставке данные сортируются имеется ввиду
  • Окей. Спасибо. Извините, что мучаю вопросами)

    Непонятно, зачем для сортировки именно rbtree использовать, когда можно просто посортировать и сложить на диск. Я бы rbtree использовал как раз для memstore)
  • @capricornusx #237247 08:17 AM, 04 Oct 2021
    Добрый день)
    подскажите, что за причина такой ошибки (смотрю в system.errors):

    Cannot open file /var/lib/clickhouse/store/c0a/<uuid>/zeros_mt.sql, errno: 2, strerror: No such file or directory

    за неделю накопилось 1к
  • https://t.me/clickhouse_ru
    @orx4n #237248 08:32 AM, 04 Oct 2021
    Здравствуйте . как сделать чтобы в Таблице или в Materialized View - КХ автоматом удалил старые данные ?
  • TTL?
  • https://t.me/clickhouse_ru
    @orx4n #237250 08:33 AM, 04 Oct 2021
    то есть дать TTL для каждой записи
  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #237249 #237251 08:33 AM, 04 Oct 2021
    да
  • MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #237252 #237253 08:36 AM, 04 Oct 2021
    Спасибо большое . не заметил этого в доке
  • https://t.me/clickhouse_ru
    "просто отсортировать" это как? ;)
    quicksort ? ;)
  • К примеру)

    Вы хотите сказать, что невыйдет?)
  • https://t.me/clickhouse_ru
    =) нет, просто хочу сказать что алгоритмы сортировки разные и некоторые лучше подходят для вставки
    не уверен что в статье на хабре замечание про красно-черные деревья актуальное
    я сам не знаю что именно там ;)
    бегло пробежал по исходникам, по названиям классов не видно
  • https://t.me/clickhouse_ru
    @Xapa6apga #237259 10:57 AM, 04 Oct 2021
    всем привет, а не подскажите, как эффективные реализовать запрос
    есть таблица в которой есть показы рекламы и платежы.
    Нужно найти какой был показ перед платежом

    +-------------------+----------+--------------------------------+-----+----+
    |date |promo_type|uid |shows|deps|
    +-------------------+----------+--------------------------------+-----+----+
    |2021-10-01 19:12:08|bn |ab327f93d15cd2e7fb6cbd3c4902d188|0 |1 |
    |2021-09-30 17:00:00|branding |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:00:00|ma |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:00:00|bn |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:00:00|ma |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:00:00|va |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:10:00|bn |ab327f93d15cd2e7fb6cbd3c4902d188|0 |0 |
    |2021-09-30 17:10:00|ma |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:10:00|branding |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 17:20:00|branding |ab327f93d15cd2e7fb6cbd3c4902d188|2 |0 |
    |2021-10-02 11:20:00|ma |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 19:00:00|branding |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-10-02 16:20:00|ma |ab327f93d15cd2e7fb6cbd3c4902d188|1 |0 |
    |2021-09-30 13:28:14|bn |ab327f93d15cd2e7fb6cbd3c4902d188|0 |1 |
    +-------------------+----------+--------------------------------+-----+----+
  • https://t.me/clickhouse_ru
    @XasturX #237260 10:58 AM, 04 Oct 2021
    Привет всем. Кто-нибудь сталкивался с такой ошибой? Гугл ничего не показывает. "Cannot enqueue query on this replica, because it has replication lag of 15 queries" CREATE TABLE db.table
    (
    col1 DateTime,
    col2 UUID,
    col3 UUID,
    col4 UUID,
    col5 UInt32,
    col6 UInt32
    ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/table_name', '{replica}')
    PARTITION BY toYYYYMMDD(col1)
    ORDER BY (col1, col2, application_id)

    Движок БД Replicated
    Изначально я выполнил данных запрос, но не на тех бд, далее я удалил эти таблицы, хочу создать в новой бд, но получаю ошибку
  • https://t.me/clickhouse_ru
    вы когда удаляли DROP TABLE ... SYNC использовали?
    движок БД какой ? Atomic или Ordinary?
  • https://t.me/clickhouse_ru
    @XasturX #237262 11:01 AM, 04 Oct 2021
    Sync не использовал
  • https://t.me/clickhouse_ru
    @XasturX #237263 11:01 AM, 04 Oct 2021
    Изначально, на который выполнял Ordinary, на нужной Replicated
  • https://t.me/clickhouse_ru
    путь который указываете в ReplicatedReplatingMergeTree - это путь в ZK

    ошибка означает что вам там на эту реплику для заданного пути ZK валятся возможно distributed DDL запросы
  • https://t.me/clickhouse_ru
    Ordinary это движок БД
    Replicated* это движок ТАБЛИЦЫ

    SELECT * FROM system.databases FORMAT Vertical посмотрите вашу БД в которой удаляли что там стоит?
  • https://t.me/clickhouse_ru
    @XasturX #237266 11:03 AM, 04 Oct 2021
    На которой удалял изначально Ordinary, на нужной Replicated
  • https://t.me/clickhouse_ru
    @XasturX #237267 11:04 AM, 04 Oct 2021
    Replicated | Документация ClickHouse

    [экспериментальный] Replicated Движок основан на движке Atomic. Он поддерживает репликацию метаданных через журнал DDL,

  • @milovidov_an #237269 11:33 AM, 04 Oct 2021
    Новые видео про ClickHouse:

    https://www.youtube.com/watch?v=_4HdQqR4kZQ
    https://www.youtube.com/watch?v=qcKwkmzwM_E
    https://www.youtube.com/watch?v=GW07RZVpH4M
    https://www.youtube.com/watch?v=VrTsxMcX4ZA
    https://www.youtube.com/watch?v=MyMl3NN13HQ
    https://www.youtube.com/watch?v=td541Uo1EKQ
    https://www.youtube.com/watch?v=iOXyKRmUxb8
    Сегодня я помержил в ClickHouse 30 пул-реквестов, а он всё ещё не тормозит / Александр Кузьменков

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- HighLoad++ Весна 2021 Крупнейшая профессиональная конференция для разработчиков высоконагруженных систем 17 и 18 мая 2021. Москва, Крокус-Экспо Тезисы и презентация: https://www.highload.ru/spring/2021/abstracts/7229 Не тормозить — основное продуктовое качество ClickHouse, которое возникает как результат целостной работы по многим направлениям: подходящих архитектурных решений, алгоритмической оптимизации, и небольшого количества связующей магии. За последний месяц в основную ветку ClickHouse добавилось 650 самостоятельных изменений — всевозможные улучшения, новая функциональность, исправления багов. Как при такой скорости разработки не потерять достигнутого? Ответ известен: автоматические тесты. Любое важное продуктовое качество необходимо тестировать, чтобы не потерять его в постоянном потоке изменений. ... -------- Нашли ошибку в видео?…

  • Существуют Replicated базы данных.
  • https://t.me/clickhouse_ru
    простите да запамятовал

    ну смотрите, Replicated это Atomic у которого все DDL - это replicated_ddl

    на Ordinary должно нормально чистить ZK
  • @KevinMort #237273 12:19 PM, 04 Oct 2021
    Всем привет! Я удалил кликхаус, но базы данных по прежнему остались, как их можно удалить не через кликхаус?
  • https://t.me/clickhouse_ru
    вы имеете ввиду данные остались в /var/lib/clickhouse?

    ну удалите просто rm -rf /var/lib/clickhouse
  • Да, спасибо!
  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #237269 #237276 12:50 PM, 04 Oct 2021
    Спасибо !
  • @subotic0 #237277 12:59 PM, 04 Oct 2021
    Всем привет, делаю alter table ... delete where...
    Данные дропаются не по всем партициям, в чем может быть причина? мутация завершена (в таблице мутаций флаг is_done=1)
  • https://t.me/clickhouse_ru
    @724279396 #237278 01:47 PM, 04 Oct 2021
    Ребят как можно посмотреть подхватывается ли партицирование при фильтрации по некоторому полю? есть ли что-то наподобие explain в клике?
  • https://t.me/clickhouse_ru
    Есть прям EXPLAIN 🙂
  • @bes626 #237282 02:06 PM, 04 Oct 2021
    Привет тут выше был уже вопрос.
    clickhouse-client куда-то в сторону aws выдаёт

    Code: 210. DB::NetException: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED (host:post). (NETWORK_ERROR)

    openssl s_client -connect host:port туда же вроде всё ок показывает
    Куда копать?
  • https://t.me/clickhouse_ru
    EXPLAIN | ClickHouse Documentation

    EXPLAIN Statement Shows the execution plan of a statement. Syntax: EXPLAIN [AST | SYNTAX | PLAN | PIPELINE] [setting = v

  • https://t.me/clickhouse_ru
    @pankina_hr #237284 02:06 PM, 04 Oct 2021
    #вакансия #архитектор #presale #удаленно

    Вакансия: Технический Pre-sale консультант/ Архитектор
    Город: Москва (м.Алексеевская) или удаленно
    Компания: Arenadata https://www.youtube.com/watch?v=RKZ7Chty98Y&t=38s
    Заработная плата: от 300 тыс. руб. на руки и выше

    Arenadata – российский разработчик платформы управления данными. Мы являемся одним из крупнейших коммитеров и вносим вклад в развитие таких проектов как: Greenplum, Clickhouse, Kafka, Hadoop, Big Top.

    Что нужно делать:
    ✔️ в части заказчиков: выполнять демонстрации продуктов, собирать потребности, консультировать. На этом этапе помогут сейлы.
    ✔️ в части архитектурных решений: разрабатывать, рассчитывать программные и аппаратные конфигурации. На этом этапе помогут инженеры.

    Мы ждем, что вы:
    ✔️ имеете опыт развертывания и решения задач DWH;
    ✔️ имеете опыт проектирования или использования промышленных решений на Greenplum, ClickHouse, Hadoop, или Teradata, Netezza, Vertica, Exasol, Snowflake, Hive, Impala;
    ✔️умеете общаться с людьми (начиная от инженеров, заканчивая руководителями компаний).

    Условия:
    - официальное трудоустройство по ТК РФ с 100% белой зарплатой;
    - возможность работать удаленно или в офисе (на выбор), гибкий график;
    - возможность развивать свои компетенции и экспертизу, компания оплачивает: книги, курсы, тренинги, сертификацию, конференции;
    - заботимся о вашем здоровье: расширенный ДМС со стоматологией, полная оплата больничного до уровня месячного дохода (независимо от стажа и срока работы в компании);
    - обеспечиваем техникой, необходимой для продуктивной и комфортной работы;
    - корпоративная скидка на изучение английского.

    ✉️ Писать можно в телеграм @pankina_hr или на почту poe@arenadata.io
    Корпоративная платформа данных Arenadata Enterprise Data Platform (EDP)

    Данные трансформируют мир и лежат в основе AI-экономики. Arenadata Enterprise Data Platform, разработанная на основе передовых Open Source технологий, обеспечит быстрое, масштабируемое и отказоустойчивое управление данными для цифровой трансформации любого бизнеса или государственной организации. Платформа предусматривает полный цикл управления данными - от хранения до предикативной аналитики. Подробнее в нашем видео.

  • https://t.me/clickhouse_ru
    У меня Syntax error
  • https://t.me/clickhouse_ru
    Версия КХ ?
  • https://t.me/clickhouse_ru
    version 20.1.16.120
  • https://t.me/clickhouse_ru
    @AnKochem #237288 02:09 PM, 04 Oct 2021
    Возможно, в этой версии еще не подвезли EXPLAIN
    Раньше смотрели в лог запроса, там можно было найти полезную инфу
    Есть даже возможность выводить логи запроса прямо в клиент

    Попробуйте SET send_logs_level = 'trace'
  • https://t.me/clickhouse_ru
    Это прям в КХ в запросе прописать?
  • https://t.me/clickhouse_ru
    @AnKochem #237290 02:10 PM, 04 Oct 2021
    прямо в clickhouse-client (вы же через него сидите?) послать такую команду
  • https://t.me/clickhouse_ru
    Я в dbeaver
  • https://t.me/clickhouse_ru
    да прям в запроск
  • https://t.me/clickhouse_ru
    Че то не работает
  • https://t.me/clickhouse_ru
    Как-то можно исправить?
  • https://t.me/clickhouse_ru
    @AnKochem #237299 02:15 PM, 04 Oct 2021
    с DBeaver не подскажу
  • https://t.me/clickhouse_ru
    @umaxfun #237301 02:23 PM, 04 Oct 2021
    Очень важный вопрос, коллеги. Где можно купить новую футболку Clickhouse? Старая поизносилась =(
  • https://t.me/clickhouse_ru
    @ilejn #237302 02:27 PM, 04 Oct 2021
    Добрый день,
    есть ли информация о планах поддержки zookeeper в будущем?
    Эта поддержка со временем исчезнет и произойдет переход на ch keeper, или сохранятся оба варианта?
  • https://t.me/clickhouse_ru
    @minihost #237303 02:30 PM, 04 Oct 2021
    Привет всем. Есть вопрос. Буду благодарен за ответы.
    Использование поля IPv4 вместо UInt32 не накладывает ли ограничения по скорости, функциям и т.д.?
  • https://t.me/clickhouse_ru
    @vladislav_sakun #237304 02:35 PM, 04 Oct 2021
    Привет.
    Ребята которые занимаются k8s оператором для ClickHouse.
    Будет ли в будущем возможность вместо ZooKeeper использовать ClickHouse Keeper?
  • @softbot_xxl #237305 03:03 PM, 04 Oct 2021
    Есть столбец с LowCardinality(String). Почему select count(distinct value) from <table> все равно ведет к достаточно длительному сканированию, разве недостаточно прочитать словари из партов и посчитать значения там?
  • @softbot_xxl #237306 03:04 PM, 04 Oct 2021
    Или эта оптимизация просто не реализована?
  • https://t.me/clickhouse_ru
    Скорее всего не сделано
  • https://t.me/clickhouse_ru
    Значимых не должно
  • https://t.me/clickhouse_ru
    Да, мы собираемся.

    Впрочем я думаю даже сейчас можно уже попробовать так запускать
  • https://t.me/clickhouse_ru
    ch keeper был сделан как drop in замену zookeeper, так что пока не будет переписан ch keeper на новый протокол, все должно работать
  • https://t.me/clickhouse_ru
    да в принципе ничео сложного и сейчас нет
    надо только понять как clickhouse keeper запускать в режиме statefullset
    и как его мониторить
  • https://t.me/clickhouse_ru
    А как через оператор подкинуть ему keeper_server опции?
  • https://t.me/clickhouse_ru
    Ну тут вопрос к размеру кластера.

    clickhouse-keeper имеет смысл крутить в 3 ноды.

    Те если у вас кластер из 10 нод, то на каждом поде запускать кипер смысла нет.
  • https://t.me/clickhouse_ru
    @vladislav_sakun #237314 03:11 PM, 04 Oct 2021
    Ну у меня кластер 2 на 2 (2 шарда по 2 реплики)
  • https://t.me/clickhouse_ru
    @unamedrus #237315 03:14 PM, 04 Oct 2021
    Мб можно просто запустить дополнительный кластер ch, который будет действовать как ансамбль zookeeper
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-zookeeper/clickhouse-keeper/
  • https://t.me/clickhouse_ru
    Пока выглядит как велосипед 🙂
    Лучше конечно дождаться релиза этого в операторе с описание и примером.
    Я думал может есть какой-то roadmap по оператору
  • @ameishutovich #237317 03:19 PM, 04 Oct 2021
    Добрый вечер!
    Может кто сталкивался с подобным и может объяснить почему происходит такая разница в результатах запросов с и без FINAL:
    ---------------------------------------------------------------------------------------------------------------------
    >> select column 0 from FinalExperiment where id < 3

    SELECT column 0
    FROM FinalExperiment
    WHERE id < 3

    Query id: 20c39483-6420-446b-a19a-6a76501e609e

    ┌─column 0─┐
    │ E36KM │
    │ 5MzxQDl │
    └──────────┘

    >> select column 0 from FinalExperiment FINAL where id < 3

    SELECT column 0
    FROM FinalExperiment
    FINAL
    WHERE id < 3

    Query id: 555ee824-08f3-4847-9228-a6e8cfe392cd

    0 rows in set. Elapsed: 0.006 sec.
    ---------------------------------------------------------------------------------------------------------------------
    **во время тестирования никакой вставки не происходит, таблица не меняется

    То же самое происходит если запрашивать count(*)
  • @beebeeep #237318 03:21 PM, 04 Oct 2021
    предположу, что потому что в вашей CollapsingMT таблице есть строки с одинаковым PK, которые еще не схлопнулись в результате очередного мержа
  • нет, все уникально сейчас, я специально это проверяла
    --------------------------------------------------------------------------------
    SELECT count(*)
    FROM FinalExperiment
    ┌─count()─┐
    │ 100000 │
    └─────────┘
    -----------------------------------------------------------------------------------
    SELECT countDistinct(id)
    FROM FinalExperiment

    ┌─uniqExact(id)─┐
    │ 100000 │
    └───────────────┘
  • https://t.me/clickhouse_ru
    см.kubectl explain chi.spec.configuration.files
  • https://t.me/clickhouse_ru
    нет, я бы лучше отдельно clickhouse-keeper через StatfulSet запустил

    по аналогии с текущим ZK

    хотя конечно тут смотря какой паттерн поведения
    будет ли clickhouse keeper отжирать ресурсы у clickhouse на диск
  • https://t.me/clickhouse_ru
    Это я уже увидел, но остаются вопросы.
    Как clickhouse keeper запускать в режиме statefullset и как его мониторить
    То собственно о чём Вы и писали
  • ну присылайте DDL таблицы
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #237310 #237324 03:41 PM, 04 Oct 2021
    Это не вызывает вопросов.

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

    К примеру, уже сейчас м.б. понимание, что каких-то возможностей ZK не хватает, и в прогнозируемом будущем произойдет отказ от него.
  • а покажите как создана таблица? Если у вас collapsing то запись могла не схлопнуться и countDistinct вам выдаёт больше чем есть на самом деле
  • https://t.me/clickhouse_ru
    @lesikv #237326 04:20 PM, 04 Oct 2021
    Привет! а кто-нибудь сталкивался, что String вот такого типа 79272518314 при инсерте в КХ становится 12012010166?
  • https://t.me/clickhouse_ru
    чем вставляете?
    и в каком формате?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237327 #237328 04:22 PM, 04 Oct 2021
    из CVS в таблицу где поле String
  • https://t.me/clickhouse_ru
    а какой язык программирования? или clickhouse-client напрямую?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237329 #237330 04:28 PM, 04 Oct 2021
    Напрямую через input
  • https://t.me/clickhouse_ru
    какая версия clickhouse?
  • https://t.me/clickhouse_ru
    @lesikv #237332 04:28 PM, 04 Oct 2021
    Через datagrip тоже
  • https://t.me/clickhouse_ru
    скорее всего бага в datagrip
    попробуйте вставить через clickhouse-client напрямую
  • https://t.me/clickhouse_ru
    clickhouse-client -mn --echo -q "DROP TABLE IF EXISTS default.t1; CREATE TABLE default.t1(s String) ENGINE=MergeTree() ORDER BY s;"

    echo '79272518314' | clickhouse-client -mn --echo -q "INSERT INTO default.t1 FORMAT CSV"

    clickhouse-client -mn --echo -q "SELECT * FROM default.t1"

    никаких преобразований нет
  • @softbot_xxl #237335 04:35 PM, 04 Oct 2021
    Есть ли в КХ функция, которая удаляет элементы MAP по ключу. Т.е. принимает набор ключей и возвращает MAP без них, если они есть.
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237334 #237336 05:17 PM, 04 Oct 2021
    попробовала через клиент, все равно воспроизвелось
  • https://t.me/clickhouse_ru
    Set send_logs_level='debug'
  • https://t.me/clickhouse_ru
    Попробую завтра, спасибо
  • https://t.me/clickhouse_ru
    через lambda фукнции наверное можно провернуть

    покажите команду как вставляли?

    с данными
  • https://t.me/clickhouse_ru
    что-то хотел сказать "используйте lambda"
    но попробовал сам и что-то приуныл =(
  • https://t.me/clickhouse_ru
    Версия кх?
  • https://t.me/clickhouse_ru
    В бивере никак. Только клиент
  • https://t.me/clickhouse_ru
    В далеком будущем исчезнет. Через годы
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #237343 #237344 05:23 PM, 04 Oct 2021
    Ок, спасибо.
  • https://t.me/clickhouse_ru
    Что такое клиент?
  • 21.7.7.47
  • https://t.me/clickhouse_ru
    cli тулза. clickhouse-client
  • https://t.me/clickhouse_ru
    Ещё один баг видимо.
  • https://t.me/clickhouse_ru
    они разве продавались? Скоро митап, там видимо
  • https://t.me/clickhouse_ru
    недостаточно. Чтобы проверить условия и row policy надо прочитать не только словарь
    Т.е. разговаривали о том чтобы сделать типа функцию чтобы читать из значения из словарей, но там опять заморочки с правами.
  • Что такое Row policy?
  • https://t.me/clickhouse_ru
    т.е. если выбирать не column 0 то результат другой ?
  • https://t.me/clickhouse_ru
    ROW POLICY | ClickHouse Documentation

    CREATE ROW POLICY Creates a row policy, i.e. a filter used to determine which rows a user can read from a table. Warning

  • Что такое row policy? (я узнаю, и стану немного умнее)
  • https://t.me/clickhouse_ru
    ну я не буду документацию пересказывать
  • Я думал, это что-то внутреннее, часть движка. Погуглил, посмотрел, спасибо.
  • @softbot_xxl #237357 07:06 PM, 04 Oct 2021
    Более практический вопрос. На сервере очень много оперативки (300+ГБ), есть таблица в районе 200ГБ с кодеками, 5ТБ без. Исполняется достаточно много запросов, и по ключу выборки, и на полное сканирование, но почему-то UncompressedCacheSize в районе пары гигабайт.
  • @softbot_xxl #237358 07:07 PM, 04 Oct 2021
    Стоит use_uncompressed_cache = 1. Я собираюсь играться с merge_tree_max_[bytes|rows]_to_use_cache, но может надо куда-то еще смотреть?
  • @softbot_xxl #237359 07:10 PM, 04 Oct 2021
    Стоит

    <uncompressed_cache_size>38654705664</uncompressed_cache_size>
    <mark_cache_size>38654705664</mark_cache_size>

    +

    <max_memory_usage>77309411328</max_memory_usage> // Это наверное можно грохнуть, судя по коду
    <max_memory_usage_for_all_queries>231928233984</max_memory_usage_for_all_queries>

    Версия 21.3.13
  • @softbot_xxl #237360 07:12 PM, 04 Oct 2021
    SELECT
    metric,
    formatReadableSize(value)
    FROM asynchronous_metrics
    WHERE metric LIKE 'UncompressedCacheBytes'
    ORDER BY value DESC

    ┌─metric─────────────────┬─formatReadableSize(value)─┐
    │ UncompressedCacheBytes │ 1.24 GiB │
    └────────────────────────┴───────────────────────────┘
  • https://t.me/clickhouse_ru
    @umbertolopes #237361 08:00 PM, 04 Oct 2021
    Добрый день. В логах клика записи отображаются в нехронологическом порядке. Есть некоторые записи на несколько секунд раньше или позже (см. скрин). Заметил случайно сегодня, когда изучал причину замедления запросов в конкретный момент времени. Кто-нибудь сталкивался с таким? Что бы это значило?

    Причем, до определенного момента хронология четкая, и после тоже стало все норм...
  • https://t.me/clickhouse_ru
    Попробуйте detach/attach этих партиций.
  • https://t.me/clickhouse_ru
    фигней вы занимаетесь. Надо разбираться почему тормозит потом улучшать, а не крутить ручки которые делают все только хуже.
  • https://t.me/clickhouse_ru
    кто-то вызывает show create table system.zeros_mt
    ищите в логе КХ кто это делает

    ааа, я нашел, это usability issue
    это select * from system.tables;
    просто zeros_mt самая последняя по алфавиту

    https://github.com/ClickHouse/ClickHouse/issues/29754
    system.errors FILE_DOESNT_EXIST initated by system.tables.create_table_query · Issue #29754 · ClickHouse/ClickHouse

    select name, value, last_error_message from system.errors where name = 'FILE_DOESNT_EXIST'; 0 rows in set. Elapsed: 0.001 sec. select * from system.tables format Null; select * from...

  • 05 October 2021 (237 messages)
  • https://t.me/clickhouse_ru
    @1303895849 #237368 02:21 AM, 05 Oct 2021
    Clickhous подойдет для хранения пар: метка времени(datatime) - значение(float)?
  • https://t.me/clickhouse_ru
    @1303895849 #237369 02:21 AM, 05 Oct 2021
    Каждые 5 секунд необходимо сохранять около 5 тыс таких пар
  • https://t.me/clickhouse_ru
    @patsevanton #237370 03:03 AM, 05 Oct 2021
    Так это же time series. Попробуйте использовать time series бд.
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237339 #237371 03:36 AM, 05 Oct 2021
    cat ok_phones_2.csv | clickhouse-client -h ch12345 --query "INSERT INTO temp.ok_phones SELECT * from input('ok_phone String') FORMAT CSV"
  • https://t.me/clickhouse_ru
    Например?
  • https://t.me/clickhouse_ru
    Я не нашел бесплатную работающую под windows
  • https://t.me/clickhouse_ru
    @ondanna #237374 03:44 AM, 05 Oct 2021
    Influxdb? На эти интенсивности должен быть бесплатен
  • https://t.me/clickhouse_ru
    @patsevanton #237375 03:44 AM, 05 Oct 2021
    Открыт код VictoriaMetrics, СУБД для временных рядов, совместимой с Prometheus
    https://www.opennet.ru/opennews/art.shtml?num=50745
    Открыт код VictoriaMetrics, СУБД для временных рядов, совместимой с Prometheus

    Открыты исходные тексты VictoriaMetrics - быстрой и масштабируемой СУБД для хранения и обработки данных в форме временного ряда (запись образует время и набор соответствующих этому времени значений, например, полученных через периодический опрос состояния датчиков или сбор метрик). Проект конкурирует с такими решениями, как InfluxDB, TimescaleDB, Thanos, Cortex и Uber M3. Код написан на языке Go и распространяется под лицензией Apache 2.0.

  • https://t.me/clickhouse_ru
    @patsevanton #237376 03:44 AM, 05 Oct 2021
    VictoriaMetrics_ru

    Обсуждаем VictoriaMetrics https://victoriametrics.com https://kutt.it/GithubVM https://kutt.it/VM-CHANGELOG https://kutt.it/VM-alerts https://kutt.it/VM-cluster-alerts https://kutt.it/k8s-guides

  • https://t.me/clickhouse_ru
    @1303895849 #237377 03:45 AM, 05 Oct 2021
    Из винды же получится запустить базы которые работают на linux?
  • https://t.me/clickhouse_ru
    @Krisantis #237379 03:50 AM, 05 Oct 2021
    Подскажите как создать внешний словарь с сорсом в виде таблицы(CH) в этой же базе без прописывания юзера и пароля?
    А то ведь получается в DDL всё видно будет. И пароль и юзера, или я что-то путаю?
  • https://t.me/clickhouse_ru
    @Krisantis #237380 03:54 AM, 05 Oct 2021
    Или параллельный вопрос. Можно ли делать трансформацию внутри объявления словаря при
    ENGINE = URL
    Например такое:
    CREATE TABLE internal_analytics.name
    (
    `id` Nullable(String),
    ArrayJoin(`id_2`) Nullable(String)
    )
    ENGINE = URL('https://...', 'CSVWithNames')
    ———
    что-то мне подсказывает, что нет
  • https://t.me/clickhouse_ru
    Либо через xml, либо не давать пользователям права на show / create dictionary
  • https://t.me/clickhouse_ru
    А трансформации?
  • https://t.me/clickhouse_ru
    expression
  • https://t.me/clickhouse_ru
    там одна колонка что-ли в CSV ?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237384 #237385 04:04 AM, 05 Oct 2021
    ага...
  • https://t.me/clickhouse_ru
    там id-родительский и массив дочерних. Нужно arrayJoin-ом развернуть это и сделать иерархический словарь
  • https://t.me/clickhouse_ru
    чта?
  • https://t.me/clickhouse_ru
    @Krisantis #237388 04:06 AM, 05 Oct 2021
    =D
  • https://t.me/clickhouse_ru
    id_key lincked_issue
    ISD-1 [IMD-1;IMD-2]
    ISD-2 [IS-3]
  • https://t.me/clickhouse_ru
    вы не туда отвечаете, два треда запутали, внимательнее надо
  • https://t.me/clickhouse_ru
    это до КХ надо сделать, если источник URL('https://
    у вас где данные лежат? Почему вы и про КХ как источник и про URL?
  • https://t.me/clickhouse_ru
    а версия КХ какая?
  • https://t.me/clickhouse_ru
    пытаюсь понять какой путь лучше выбрать. Но я вас понял: либо в источнике трансформировать, либо в кх и как-то закрывать креды в SOURCE
    Спасибо
  • https://t.me/clickhouse_ru
    ну и можно сделать пользователя без пароля и разрешить ему ходить только c localhost
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237392 #237395 04:14 AM, 05 Oct 2021
    ClickHouse 21.7.5.29
  • https://t.me/clickhouse_ru
    а зачем input function ? если просто insert format CSV то тоже проблема?
  • https://t.me/clickhouse_ru
    @konnectrl #237397 04:16 AM, 05 Oct 2021
    Приветствую, как можно вставить данные из PG в CH (Таблица большая)
  • https://t.me/clickhouse_ru
    PostgreSQL | ClickHouse Documentation

    PostgreSQL The PostgreSQL engine allows to perform SELECT and INSERT queries on data that is stored on a remote PostgreS

  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237396 #237399 04:17 AM, 05 Oct 2021
    попробовала, такая же ситуация
  • https://t.me/clickhouse_ru
    а в CSV много строк?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237400 #237401 04:19 AM, 05 Oct 2021
    ~10M
  • https://t.me/clickhouse_ru
    а что показывает команда file ok_phones_2.csv
  • https://t.me/clickhouse_ru
    @lesikv #237403 04:19 AM, 05 Oct 2021
    ok_phones_2.csv: ASCII text
  • https://t.me/clickhouse_ru
    а SQL
    desc temp.ok_phones
  • https://t.me/clickhouse_ru
    @lesikv #237405 04:21 AM, 05 Oct 2021
    DESCRIBE TABLE temp.ok_phones

    Query id: 9cfe703f-9d89-4dc5-ac1e-d886deffc804

    ┌─name─────┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
    │ ok_phone │ String │ │ │ │ │ │
    └──────────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘

    1 rows in set. Elapsed: 0.044 sec.
  • https://t.me/clickhouse_ru
    а вот эта

    cat ok_phones_2.csv|grep 79272518314|hexdump -C
  • https://t.me/clickhouse_ru
    @lesikv #237407 04:22 AM, 05 Oct 2021
    ovasina@adm512:~$ cat ok_phones_2.csv|grep 79272518314|hexdump -C
    00000000 37 39 32 37 32 35 31 38 33 31 34 0a |79272518314.|
    0000000c
  • https://t.me/clickhouse_ru
    а format TSV тоже самое?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237408 #237409 04:24 AM, 05 Oct 2021
    в смысле поменять расширение?
  • https://t.me/clickhouse_ru
    нет

    cat ok_phones_2.csv| clickhouse-client -h ch12345 --query "INSERT INTO temp.ok_phones FORMAT TSV"
  • https://t.me/clickhouse_ru
    @den_crane #237411 04:25 AM, 05 Oct 2021
    для одной колонки не важно TSV или CSV, файл одинаковый
  • https://t.me/clickhouse_ru
    @lesikv #237412 04:26 AM, 05 Oct 2021
    да тоже самое((
  • https://t.me/clickhouse_ru
    а точно в файле нету 12012010166 ?

    cat ok_phones_2.csv|grep 12012010166
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237413 #237414 04:28 AM, 05 Oct 2021
    блин, есть
  • https://t.me/clickhouse_ru
    @lesikv #237415 04:28 AM, 05 Oct 2021
  • https://t.me/clickhouse_ru
    @lesikv #237416 04:28 AM, 05 Oct 2021
    но оч странно выглядит такой телефон
  • https://t.me/clickhouse_ru
    @lesikv #237417 04:29 AM, 05 Oct 2021
    как бы теперь все проверить
  • https://t.me/clickhouse_ru
    в таблице будет не такой порядок строк как в файле.
    и это правильно.
  • https://t.me/clickhouse_ru
    @lesikv #237419 04:29 AM, 05 Oct 2021
    а КХ при вставке как-то сортирует данные? порядок не совпадает с CSV
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237418 #237420 04:30 AM, 05 Oct 2021
    а ну вот опередили вопрос
  • https://t.me/clickhouse_ru
    select без orderby выдает строки в рандомном порядке
  • https://t.me/clickhouse_ru
    вы можете отсортировать файл

    cat ok_phones_2.csv|sort > ok_phones_2_sorted.csv

    тогда порядок в файле ok_phones_2_sorted.csv будет совпадать с select * from .table. order by phone
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237422 #237423 04:32 AM, 05 Oct 2021
    сейчас попробую
  • https://t.me/clickhouse_ru
    @lesikv #237424 04:32 AM, 05 Oct 2021
    спасибо огромное!
  • https://t.me/clickhouse_ru
    Wsl не пробовали?
  • https://t.me/clickhouse_ru
    Уже пробую )
  • https://t.me/clickhouse_ru
    У меня создалось, и работает. SOURCE (CLICKHOUSE(
    DB 'test'
    TABLE 'test_table'))
    LIFETIME (MIN 10 MAX 20)
    LAYOUT (HASHED)
  • https://t.me/clickhouse_ru
    Не получиться. я делаю представление (обычное view), в нем логика запроса например, и всякие преобразования - а к нему делаю словарь.
  • https://t.me/clickhouse_ru
    спасибо, за информацию. Я ещё не успел поэкспериментировать.
  • https://t.me/clickhouse_ru
    а зачем тут SELECT *?

    можно просто FORMAT CSV

    SHOW CREATE TABLE temp.ok_phones;
    покажите?

    но все равно не воспроизводится
    echo '79272518314' > ok_phones_2.csv

    clickhouse-client -mn -q "CREATE DATABASE temp; CREATE TABLE ok_phones(ok_phone String) ENGINE=MergeTree() ORDER BY ok_phone;"

    cat ok_phones_2.csv | clickhouse-client --query "INSERT INTO temp.ok_phones SELECT * from input('ok_phone String') FORMAT CSV"

    смотрите в свои данные
  • https://t.me/clickhouse_ru
  • Спасибо!
  • https://t.me/clickhouse_ru
    @dmbesedin #237434 06:15 AM, 05 Oct 2021
    Всем привет. А не подскажете какие подводные камни есть при использовании движка kafka в реплицированной базе и вообще можно ли так делать?
  • https://t.me/clickhouse_ru
    Там булыжник огромный))) лучше не делать
  • @KevinMort #237437 06:22 AM, 05 Oct 2021
    Всем привет! Кто-нибудь использовал движок MaterializedPostgreSQL?
    Настроил репликацию в postgres
    wal_level = 1
    max_replication_slots = 10
    replica identity = full
    Создал юзера с правами на чтение
    Но почему-то при создании коннекта не реплицирует

    CREATE DATABASE IF NOT EXISTS test_postgres
    ENGINE = MaterializedPostgreSQL('host:5432', 'postgres', 'replica_user', 'pass')
    SETTINGS materialized_postgresql_tables_list = 'my_table';
  • https://t.me/clickhouse_ru
    А чуть больше информации можно?) Мы попробовали и кажется уронили кластер этим движком. Упал на алокации памяти. Вот интересно куда копать. Но я так понимаю копать не стоит и просто руками переливать из кафки в кх?
  • https://t.me/clickhouse_ru
    Именно. Лучше взять управление на себя.
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    У нас работает. 21.3, что я делаю не так?
  • https://t.me/clickhouse_ru
    Мы используем. Вполне успешно.
    Есть проблемы с дублированием записей, которые решаются правильными запросами с дистинктами.
  • https://t.me/clickhouse_ru
    Сначала у всех работает, особенно в простых сценариях. Но я никого ни от чего не отговариваю, я к тому, что нужен хороший опыт и понимание этих двух технологий для безпыльной эксплуатации.
  • @KevinMort #237444 06:59 AM, 05 Oct 2021
    При использовании движка
    ENGINE = PostgreSQL
    Я создаю таблицу, которая общается и подтягивает данные из postgres
    Если без репликации я буду проводить агрегацию, на чем это может сказаться?
  • https://t.me/clickhouse_ru
    Поделитесь вашим отрицательным опытом, не будет лишним.
  • https://t.me/clickhouse_ru
    Ок, у нас там некритичное. Раньше был 19.15, после обновления стало лучше (очереди меньше), главное интервал флаша 100мс не ставить, база инсерты режектит по кол-ву партов
  • https://t.me/clickhouse_ru
    Мы не стали развивать у себя эту функциональность, сразу пошли по более управляемому пути: написали несложное приложение консюмер, нужно быстрее - добавляем N инстансов, нужно стопнуть чтение - убиваем апликуху, почти полная прозрачность и управляемость пррцессом.
  • https://t.me/clickhouse_ru
    Количество сообщений/топиков/объём данных?
  • https://t.me/clickhouse_ru
    5k rps/10/~2тб в кх
  • @subotic0 #237450 07:42 AM, 05 Oct 2021
    Привет, пытаюсь юзать табличную функцию для доступа к мсскл базе odbc('DSN=...;UID=...;PWD=...;Database=...', '...', '...');)
    конфиг odbc.ini заполнен
    на любой запрос пишет что
    [FreeTDS][SQL Server]Database '...' does not exist. Make sure that the name is entered correctly
    Если вбить неверный пасс, то пишет ошибку о неверном пароле, тоесть до базы доходит
  • https://t.me/clickhouse_ru
    попробуйте официальные драйвера ODBC от Microsoft вместо FreeDTS

    вот тут

    https://gist.github.com/Slach/9f9449a722091a13a9069b79f8dc7da7
    я сделал стенд для всех крупных БД

    проблемы были только для Oracle
    с табличной функцией...
    clickhouse with odbc, for docker-compose and kubernetes

    clickhouse with odbc, for docker-compose and kubernetes - Dockerfile

  • https://t.me/clickhouse_ru
    @patsevanton #237453 07:55 AM, 05 Oct 2021
    Коллеги, возможно вам будет интересно
    https://habr.com/ru/post/581586/
    Учим Kibana работать с Clickhouse (Ярослав Саган, Николай Нестеренко)

    Сотрудники ECOMMPAY IT Ярослав Саган и Николай Нестеренко на конференции HighLoad++2019 рассказали об архитектурном решении для компактного хранения логов в ClickHouse. На основе их доклада я...

  • https://t.me/clickhouse_ru
    @BloodJazMan #237454 08:00 AM, 05 Oct 2021
    интересно да. только в проект год никто не коммитил =\
  • https://t.me/clickhouse_ru
    просто никто про проект не знал.. наверное
  • https://t.me/clickhouse_ru
    потмоу что все работает 😎
  • https://t.me/clickhouse_ru
    @dmitriynvkv #237457 08:01 AM, 05 Oct 2021
    комитят там где все плохо
  • https://t.me/clickhouse_ru
    Эксперимент с фуллтекст поиском на Clickhouse был признан неуспешным и в прод не пошёл
  • @1063161973 #237459 08:08 AM, 05 Oct 2021
    Добрый день. Попробовал в новой версии (21.9.4.35) пользовательские функции, не работают. Пример из документации возвращает ошибку. Может какие-то настройки нужно включить ?
  • @Crawles #237460 08:13 AM, 05 Oct 2021
    Это доступно с 21.10, насколько я вижу: https://clickhouse.com/docs/ru/whats-new/changelog/
    2021 | ClickHouse Documentation

    ClickHouse release v21.10, 2021-10-16 Backward Incompatible Change Now the following MergeTree table-level settings: rep

  • Про 21.10 здесь нет ни слова: https://clickhouse.com/docs/ru/whats-new/changelog/
    И дистрибутива еще нет здесь: https://repo.clickhouse.tech/deb/stable/main/
    И в других ветках (testing, prestable) тоже не нашел
    2021 | ClickHouse Documentation

    ClickHouse release v21.10, 2021-10-16 Backward Incompatible Change Now the following MergeTree table-level settings: rep

  • @1063161973 #237463 08:25 AM, 05 Oct 2021
    Странно, у меня по той же ссылке в документации другая страница:
  • https://t.me/clickhouse_ru
    @temurlord #237464 08:26 AM, 05 Oct 2021
    У меня по-русски без 21.10, а по-английски с ней
  • У меня только по японски 21.10 😁
  • @Crawles #237466 08:28 AM, 05 Oct 2021
    сайт кликхауса хочет свести нас с ума, ну или хотя бы поссорить :)
  • https://t.me/clickhouse_ru
    @baltazorbest #237467 09:07 AM, 05 Oct 2021
    на сайте вижу 21.10 , но действительно еще нету deb пакетов )
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237431 #237468 09:12 AM, 05 Oct 2021
    Спасибо! действительно данные такие, извините за беспокойство
  • https://t.me/clickhouse_ru
    дак а в чем проблема то была?

    =) откуда вы взяли что у вас преобразование строки случилось?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #237469 #237470 09:29 AM, 05 Oct 2021
    да меня смутил коллега, начал бить тревогу
  • https://t.me/clickhouse_ru
    @lesikv #237471 09:29 AM, 05 Oct 2021
    я повелась(
  • https://t.me/clickhouse_ru
    @Hardstep83 #237472 09:46 AM, 05 Oct 2021
    Не знаю как вы ищете, я нашел пакеты deb 21.10, поставил локально, все ок, даже пользовательские функции есть. Как и документация уже кстати. Правда функции не совсем те что ожидалось - можно использовать выражения, операторы и другие функции. Можно правда грязно хакать - например используя функции словарей или merge, подставляю регулярку точно указывающую на конкретную таблицу ;)
  • https://t.me/clickhouse_ru
    ну так вы сделайте gist.github.com с грязными хаками =) это ж круто когда есть возможности о которых другие не знают
  • https://t.me/clickhouse_ru
    деб пакеты есть в testing репозитории для 21.10

    в докере только stable deb представлены

    https://clickhouse.com/docs/en/getting-started/install/
  • https://t.me/clickhouse_ru
    @patsevanton #237476 10:11 AM, 05 Oct 2021
    Коллеги, если импортировать данные из json, то весь json будет как строка в 1 колонке или разобьется по колонкам?
  • Смотря как импортировать
  • https://t.me/clickhouse_ru
    @patsevanton #237478 10:13 AM, 05 Oct 2021
    Среди них есть множество вариаций JSON, но чаще всего для импорта данных используют JSONEachRow: один JSON-объект в строке, каждый объект с новой строки.
  • Вот это читали? Там и про вставку есть https://clickhouse.com/docs/en/interfaces/formats/#jsoneachrow
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    Читал. Но так как я с CH не работал. гуглил в других местах, например https://dba.stackexchange.com/questions/268997/clickhouse-create-database-structure-for-json-data
    Clickhouse create database structure for json data

    New to clickhouse and stuck on the database creation structure for importing json data which is nested Take for example the json data that looks like the following when there is data populated "

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Как хотите, так и будет
    https://kb.altinity.com/altinity-kb-schema-design/altinity-kb-jsonasstring-and-mat.-view-as-json-parser/
  • https://t.me/clickhouse_ru
    Не знал что так можно =), спасибо - сделаю.
  • https://t.me/clickhouse_ru
    @datamanager #237484 10:49 AM, 05 Oct 2021
    Коллеги! Подготовил данные и загрузил их в таблицу из файла! Залетело не просто быстро, а очень быстро! Пишу чисто похвастаться 😀😀😀
  • https://t.me/clickhouse_ru
    @Fullherdi #237485 10:51 AM, 05 Oct 2021
    Привет всем
    Есть storage policy на 2 диска
    Нужно поменять один из дисков, где почитать как перенести данные на другой диск или забекапить их как-то?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    спасибо, ознакомлюсь
  • https://t.me/clickhouse_ru
    @ademidov #237488 11:18 AM, 05 Oct 2021
    Есть партиционированная таблица (`PARTITION BY toYYYYMM(date)`). Поверх этой таблицы построено множество MV, которые по сути просто агрегируют данные, которые вставляются в эту таблицу. Нужно поменять ключ партиционирования у этой таблицы. Данные в самой таблице ценности не имеют (я могу сделать `ALTER TABLE … DROP PARTITION`), но вот MV, которые были построены поверх этой таблицы нужны. Можно ли поменять схему партиционирования таблицы не пересоздавая ее ?
  • https://t.me/clickhouse_ru
    @ademidov #237489 11:18 AM, 05 Oct 2021
    Смотрел в сторону ALTER TABLE … MODIFY QUERY но, вроде, она не даст изменить ключ партиционирования
  • https://t.me/clickhouse_ru
    @nshumshurova #237490 11:52 AM, 05 Oct 2021
    вопрос, вроде есть документация по регуляркам, но не поддерживается [A-Z] и \u как в регулярку добавить upper case?
  • https://t.me/clickhouse_ru
    @AlexMig #237491 11:56 AM, 05 Oct 2021
    кто подскажет
    есть реплицируемая таблица - заполняется через Zookeeper, прямых INSERT в нее нет
    вешаю на нее MATERIALIZED VIEW, что бы из нее заполнялась следующая, но ничего не происходит, данные не идут
  • Это стандартная засада КХ, надо делать МВ тоже реплицируемым.
  • https://t.me/clickhouse_ru
    @AlexMig #237493 11:58 AM, 05 Oct 2021
    это как? не видел таких настроек
  • @softbot_xxl #237496 11:59 AM, 05 Oct 2021
    16 страница и дальше
  • https://t.me/clickhouse_ru
    @AlexMig #237497 12:00 PM, 05 Oct 2021
    спс
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237488 #237498 12:09 PM, 05 Oct 2021
    таблица никак не связана с другими таблицами. Можете хоть удалить её, можете создать с Engine=Null. MV - это insert trigger.
  • https://t.me/clickhouse_ru
    @ademidov #237499 12:10 PM, 05 Oct 2021
    да, спс, вроде уже понял, что можно пересоздать MV и указать для хранения данных старую таблицу
  • https://t.me/clickhouse_ru
    @akrasnow #237501 12:41 PM, 05 Oct 2021
    Вопрос по доступам
    У меня есть роль с набором доступов
    Эта роль присвоена ~30 пользователям
    Даю ей новый доступ на чтение
    GRANT SELECT ON appsflyer.* TO analyst;
    Но доступ появляется не сразу, а через неопеределенный промежуток времени больше 20 минут

    Помогите, пожалуйста
    Почему он может не сразу появляться? Есть ли какая-нибудь команда, чтобы ускорить этот процесс?
  • https://t.me/clickhouse_ru
    а без MV, на обычной таблице можно поменять ключ партицирования с alter или только пересоздавать?
  • https://t.me/clickhouse_ru
    @ufaweb #237506 12:51 PM, 05 Oct 2021
    подскажите пожалуйста, с чем может быть связана ошибка

    auto DB::IBackgroundJobExecutor::jobExecutingTask()::(anonymous class)::operator()() const: Code: 432, e.displayText() = DB::Exception: Unknown codec family code: 0

    полный лог: https://pastebin.com/Gcic437i
    2021.10.05 12:41:40.539332 [ 3994 ] {} <Debug> system.part_log (ba194f57-a3fb-43 - Pastebin.com

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

  • https://t.me/clickhouse_ru
    Unknown codec family code: 0: (while reading column query_id)

    файл query_id.bin состоит из ноликов в 202110_680294_680299_1, потому что побился при внезапном рестарте
  • https://t.me/clickhouse_ru
    чудно. Пруфы есть? Distributed запросы?
  • https://t.me/clickhouse_ru
    вроде только пересоздать
  • попробовал, через словарь все работает, через табличную odbc() не хочет
  • https://t.me/clickhouse_ru
    она еще не релизилась, просто notes опубликованы раньше времени, потому что документация перегенерится кроном
  • https://t.me/clickhouse_ru
    вроде всё ок.
    >SELECT match('abcd', '[A-Z]+'), match('Abcd', '[A-Z]+')
    0,1
  • https://t.me/clickhouse_ru
    а что говорит? и какая версия clickhouse?
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #237507 #237516 01:12 PM, 05 Oct 2021
    данная ошибка проявляется на одной из реплик, действительно после рестатра, как правильно поступить в данной ситуации?
  • 21.8.5.7
    если пишу odbc('строка подключения', 'схема', 'таблица') то
    HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:4806: 0800: [FreeTDS][SQL Server]Database 'схема' does not exist. Make sure that the name is entered correctly.

    если odbc('строка подключения', 'схема.таблица') то
    500 Internal Server Error, body: Error getting columns from ODBC 'Code: 36, e.displayText() = DB::Exception: Table 'схема.таблица' not found
  • https://t.me/clickhouse_ru
    это ваша таблица? или системная? query_id намекает что это system.query_log или типа того
  • https://t.me/clickhouse_ru
    регистр буков в 'схема.таблица' какой?
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #237518 #237520 01:15 PM, 05 Oct 2021
    системная, у нас нет таких колонок
  • нижний, и словарь и табличная odbc, все в плане регистра одинаково
  • https://t.me/clickhouse_ru
    дропните этот парт system stop merges system.query_log alter table system.query_log drop part '.....бубу'
  • https://t.me/clickhouse_ru
    ну пробуйте верхний,
    а при чем тут " и словарь и табличная odbc" ?
  • если создаю словарь SOURCE ( ODBC(...)) то работает, если табличная odbc() то нет
  • https://t.me/clickhouse_ru
    а как в словаре написано?
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #237522 #237526 01:21 PM, 05 Oct 2021
    спасибо
  • SOURCE ( ODBC( connection_string 'DSN=mssql;UID=test;PWD=test2021PASSWORD;Database=test' table 'schema.test') )

    src:
    https://gist.github.com/Slach/9f9449a722091a13a9069b79f8dc7da7
  • https://t.me/clickhouse_ru
    да, я забыл что там только словари тестил
  • https://t.me/clickhouse_ru
    понятно, скорее всего odbc таблица оборачивает в " и получается фигня, в словарях это чинили. Поставьте пользователю схему как дефолтную в mssql и не пишите схему в КХ
  • @cheetahfm #237530 01:46 PM, 05 Oct 2021
    Привет. При попытке сделать insert into table select * from remote получаю следующую ошибку:
    1 error occurred: * code: 519, message: All attempts to get table structure failed. Log:
    Code: 102, e.displayText() = DB::NetException: Unexpected packet from server server:9440 (expected Hello or Exception, got Unknown packet) (version 20.12.7.3)
    Видел, что в https://github.com/ClickHouse/ClickHouse/issues/15596 помогло увеличение connect_timeout_with_failover_ms. Тоже попробовал - не помогло.
    Что может ещё вызывать такую ошибку?
    Strange connection behavior between replicas of different regions. · Issue #15596 · ClickHouse/ClickHouse

    We are facing unexpected behavior in ClickHouse. We have a ClickHouse cluster of 30 nodes (10 shards, 3 replicas each). The nodes are deployed in two different regions (20 replicas in region 1 and ...

  • https://t.me/clickhouse_ru
    @yakimka #237532 02:47 PM, 05 Oct 2021
    Добрый день. Подскажите пожалуйста, хочу обновить кликхаус с версии 20.6 до последней LTS. Я могу просто взять обновить, прогнать тесты и успокоиться или есть какие-то подводные камни о которых я должен знать?
  • https://t.me/clickhouse_ru
    Понятное дело, читаю все Backward Incompatible Changes и исправлю если что-то из этого использую
  • https://t.me/clickhouse_ru
    Это очень сложный вопрос, зависит насколько большой у вас кластер и насколько сложное приложение. И на сколько критичен КХ для вас.
    Т.е. например если у вас 2000 Replicated таблиц, то вам придется занятся дополнительным тюнингом, если вы пользовались LowCardinality(Nullable(String)) то, и этот список бесконечный.
  • https://t.me/clickhouse_ru
    Кластер из двух шардов по две реплики, маленький, и настройки мы практически не тюнили
  • https://t.me/clickhouse_ru
    @yakimka #237536 02:51 PM, 05 Oct 2021
    да и данных не то чтобы прям очень много, но они важные
  • https://t.me/clickhouse_ru
    а что говорит curl если пытаться сделать запрос на этот порт ?
  • https://t.me/clickhouse_ru
    @yakimka #237538 02:52 PM, 05 Oct 2021
    но посыл понял, нужно обновляться, отгребать проблем, решать их)
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #237522 #237539 02:53 PM, 05 Oct 2021
    в целом разобрался, подскажите пожалуйста что такое committed state у партов? те на диске есть несколько "битых" партов (внутри их директории нет части файлов колонок), какие-то удаляются (через drop part), у других же запрос alter table ... drop part завершается ошибкой 'No part 202110_681320_681320_0 in committed state'
  • https://t.me/clickhouse_ru
    это значит в ЗК нету информации про них. Можно просто удалить на диске (переложить например временно в detached)
  • https://t.me/clickhouse_ru
    @ufaweb #237541 02:56 PM, 05 Oct 2021
    спасибо
  • https://t.me/clickhouse_ru
    @ptylopsis #237542 03:20 PM, 05 Oct 2021
    Добрый вечер, у меня есть база на atomic (3 шарда, 1 реплика), которую я хочу перенести на другую машину. Clickhouse-backup создаёт бекап содержащий metadata.json и директорию metadata, без чего либо похожего на shadow (как в случае с переносом обычной базы), в связи с чем я не могу просто перекинуть rsync-ом файлы и сделать restore на новом сервере . Вопрос, как мне правильно мигрировать эту базу?
    P.S. В Elasticsearch например можно добавить новую ноду в кластер, и после релокации шардов вывести из кластера старую ноду, после того как все реплики переедут. Может быть и в CH есть какой-то похожий путь?
  • Разобрались. Глупая ошибка была, порт 9440 использовался вместо 9000.
  • https://t.me/clickhouse_ru
    Clickhouse-backup последние версии поддерживают atomic
  • https://t.me/clickhouse_ru
    >P.S. В Elasticsearch например можно добавить новую ноду в кластер, и после релокации шардов вывести из кластера старую ноду, после ?>того как все реплики переедут. Может быть и в CH есть какой-то похожий путь?
    в КХ добавляете реплику, ждете завершения репликации, дропаете старую реплику
  • https://t.me/clickhouse_ru
    @sergeif #237546 03:48 PM, 05 Oct 2021
    всем привет! скажите, поймет ли кликхаус такое:

    "payment_period":18905

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

    payment_period DateTime DEFAULT now()

    это число дней с 1 января 1970 года
  • https://t.me/clickhouse_ru
    Date
  • https://t.me/clickhouse_ru
    @den_crane #237548 03:59 PM, 05 Oct 2021
    SELECT toDate(18905)
    ┌─toDate(18905)─┐
    │ 2021-10-05 │
    └───────────────┘
    Date в КХ это число дней с 1 января 1970 года
  • https://t.me/clickhouse_ru
    о, премного благодарен! а если у меня льется в кх из двух источников, все одинаковое, а только это поле - из первого источника:

    18905

    из второго:

    2021-10-05

    будет работать так?
  • https://t.me/clickhouse_ru
    я вообще ничего не понял
  • https://t.me/clickhouse_ru
    @sergeif #237551 04:04 PM, 05 Oct 2021
    в кликхаус планируется наливать данные из кафки и из mysql.

    в mysql payment_period хранится так:

    "payment_period":2021-10-05

    в кафке так:

    "payment_period":18905

    все это нужно слить в одну таблицу кликхауса. будет ли это работать, если создать таблицу (в КХ) со значением payment_period:

    payment_period Date DEFAULT now()

    может ли Date хранить и число дней с 1 января 1970, и YYYY-MM-DD?
  • https://t.me/clickhouse_ru
    @sergeif #237552 04:18 PM, 05 Oct 2021
    в общем похоже что да:

    SELECT toDate(18905)

    ┌─toDate(18905)─┐
    │ 2021-10-05 │
    └───────────────┘

    SELECT toDate('2021-10-05')

    ┌─toDate('2021-10-05')─┐
    │ 2021-10-05 │
    └──────────────────────┘
  • https://t.me/clickhouse_ru
    КХ понимает оба формата при заливке 2021-10-05 = текст , 18905 = число, для типа Date.
    Под капотом хранится 18905, но это не важно
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @ufaweb #237555 04:42 PM, 05 Oct 2021
    @den_crane просто интересно - почему в директории с системным таблицами есть директории с _0 в конце? system/query_log и рядом с ней system/query_log_0. и так для каждой таблицы.
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/

    Note 2: Log tables with numeric postfixes (_1 / 2 / 3 …) query_log_1 query_thread_log_3 are results of Clickhouse upgrades. When a new version of Clickhouse starts and discovers that a system log table’s schema is incompatible with a new schema, then Clickhouse renames the old query_log table to the name with the prefix and creates a table with the new schema. You can drop such tables if you don’t need such historic data.
  • https://t.me/clickhouse_ru
    @ufaweb #237557 04:44 PM, 05 Oct 2021
    Спасибо
  • https://t.me/clickhouse_ru
    Он создаёт бекап, в котором сожержатся только метаданные. Мне нужно сами партиции переносить отдельно чтобы эти метаданные на что-то могли ссылаться при ресторе бекапа?
  • https://t.me/clickhouse_ru
    нет он создает бекап с данными. Проблема в том что вы используете древний clickhouse-backup
  • @vvvjhaq #237560 04:54 PM, 05 Oct 2021
    Добрый вечер, подскажите, почему при запуске вью с параметром, отвечает, что параметр не найден, хотя он есть.
    https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-parameterized-views/
    тут в последнем примере сказано, что вью надо создать с перечисленными полями, у меня так и сделано.
    версия 21.7.2
  • https://t.me/clickhouse_ru
    это баг в 21.7.2 , это починено в 21.7
  • спасибо, понял
  • https://t.me/clickhouse_ru
    v.1.0.0 указана как latest
  • https://t.me/clickhouse_ru
    @ptylopsis #237564 04:57 PM, 05 Oct 2021
    Видимо у меня что-то не так
  • https://t.me/clickhouse_ru
    не знаю, попробуйте наш форк https://github.com/Altinity/clickhouse-backup/
    GitHub - Altinity/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

    Tool for easy ClickHouse backup and restore with cloud storages support - GitHub - Altinity/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

  • https://t.me/clickhouse_ru
    @ptylopsis #237566 04:58 PM, 05 Oct 2021
    Благодарю, сейчас попробую
  • https://t.me/clickhouse_ru
    @SvPupok #237567 05:09 PM, 05 Oct 2021
    подскажите плз, как в ch лучше обновить польностью всю колонку таблицы? нужно что то типа аналога update table tbl set column = value; Мне нужно проставить одно и тоже значение по всему столбцу
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/sql-reference/statements/alter/update/

    только прочитайте сначала вот это
    https://clickhouse.com/docs/en/sql-reference/statements/alter/#synchronicity-of-alter-queries
    UPDATE | ClickHouse Documentation

    ALTER TABLE … UPDATE Statements ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr Manipulates data

  • https://t.me/clickhouse_ru
    Alter table <table> update <column> = <new_val> where 1
  • https://t.me/clickhouse_ru
    Заведите себе несколько стендов, тест, разработка, продакшн… и тогда обновлять и ловить камни будет намного безболезненней
  • https://t.me/clickhouse_ru
    Да так в принципе и есть, решил спросить, вдруг что-то совсем очевидное есть из проблем
  • https://t.me/clickhouse_ru
    ловил аналогичную ошибку. Мне кажется что можно дополнить вашу статью. Дело в том что переменная которую вы используете в представлении не инициализирована до того момента как вы её указываете в запросе. То есть порядок использования таких настроек: 1. Объявляете в глобальном конфиге префикс своих переменных. 2. Объявляете в пользовательском конфиге дефолт для конкретной переменной. 3. Перезапуск сервера 4. Используете.
  • https://t.me/clickhouse_ru
    @den_crane #237573 05:46 PM, 05 Oct 2021
    я говорил про вот эту проблему https://github.com/ClickHouse/ClickHouse/issues/27539
    21.7 Parameterized views do not work anymore · Issue #27539 · ClickHouse/ClickHouse

    I suppose it was broken in #24095. Will it be fixed by #27227 ? CREATE VIEW custom ( `name` String ) AS SELECT name FROM system.tables WHERE database = getSetting('custom_db') Ok. -...

  • https://t.me/clickhouse_ru
    Вопрос вдогонку.

    У нас есть хранилище сырых финансовых данных, откуда бизнес периодически просит вытащить всякие интересные показатели для аналитики. Мы хотим эти показатели хранить в clickhouse. Если для реализации новой идеи я добавляю колонку, то есть какая-то возможность эффективно записать исторические данные только в неё?
  • https://t.me/clickhouse_ru
    нет такой возможности

    лучший совет
    возьмите и загрузите сырые данные как есть, в тот же clickhouse

    а потом через какой нибудь dbt
    научитесь извлекать витрины данных такие которые вам нужно
  • https://t.me/clickhouse_ru
    @vchernyshev #237576 06:01 PM, 05 Oct 2021
    Нам на создание копии сырых данных в clickhouse никто ресурсы, увы, не выделит. Их очень много 😔 Какие альтернативы тогда есть? Медленно в фоне лить старые данные заново в какой-нибудь replacing/collapsing merge tree, следя за тем, чтобы эта операция как можно меньше партиций за раз затрагивала?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237576 #237577 06:13 PM, 05 Oct 2021
    так вы не сырые копируйте, а аггрегированные. Их уже сильно меньше, и джойны/словари могут заработать и помочь соединить одно с другим. Вы зря отказываетесь от витрин и прочих звезд аля кимбал. Что-то подобное надо делать для аналитики, хоть с кликхаусом, хоть без него.
  • https://t.me/clickhouse_ru
    как вы себе это представляете? очень тяжело понять что вы хотите.

    Типа у вас в КХ есть таблица с 30 полями и в ней 400млрд строк, и есть данные во внешней системе которые позволят обогатить эти строки и добавить еще 10 полей и надо обновить строки по ключу?
  • https://t.me/clickhouse_ru
    Да, что-то вроде этого.
  • https://t.me/clickhouse_ru
    Мы и так уже стараемся вытащить из этого хранилища как можно больше информации заранее, чтобы положить это в кликхауз в агрегированном виде. Но я не могу гарантировать, что никогда не возникнет необходимость долить туда что-то ещё.
  • https://t.me/clickhouse_ru
    ну заново залить тогда
  • https://t.me/clickhouse_ru
    @den_crane #237582 06:42 PM, 05 Oct 2021
    а где эти данные лежат? Я вот не могу найти хранилища дешевле чем КХ. В КХ наиболее компактное хранение если хранить тупо json в таблице из 2 полей и при этом еще кверять можно. Диски + Сервера + КХ, дешевле чем S3.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237580 #237583 06:43 PM, 05 Oct 2021
    зачем туда-же? Это же другие факты, скорее всего с иной гранулярностью. То что вы хотите сделать - это джойн двух разных таблиц фактов. Не надо так делать - ничего хорошего не получится, даже если база осилит. Делайте аггрегации по совместимым "измерениям" и вот их уже можно попробовать поджойнить друг с другом. По крайней мере в этом действе можно поймать смысл. В отличии от джойна разных слабо связанных фактов.
  • https://t.me/clickhouse_ru
    Я в Bloomberg работаю, у нас для хранения tick-by-tick информации с бирж своя собственная "база данных" есть. Для того, чтобы просто вытаскивать оттуда данные, она работает достаточно прилично, но вот аналитику по ней гонять в принципе невозможно.
  • https://t.me/clickhouse_ru
    а ну так у вас и так все хорошо, с полной перезаливкой
  • https://t.me/clickhouse_ru
    Спасибо! Перелить да, не проблема, просто хотелось знать, есть ли более эффективный подход.

    Вообще цель текущего проекта, для которого мы смотрим clickhouse — хранение предагрегированных (посекундная точность) финансовых индикаторов, которые позволят гораздо быстрее считать всякие volume weighted average price и прочие штуки для исторических данных.
  • https://t.me/clickhouse_ru
    Если это абсолютно независимые факты, то я согласен, что они должны лежать отдельно, с этим проблем нет. Мне интересны были рекомендации на случай, когда что-то упустили, и зависимость таки есть 😂 У нас даже с предагрегацией будут десятки миллиардов событий в день. Джоинить такое, насколько я понял, можно и не пытаться.
  • @bashlykevich #237590 10:58 PM, 05 Oct 2021
    Есть уже какой-то позитивный опыт использования кластера нод КХ с какой-нибудь большой shared хранилкой NAS на пару петабайт?
    Видится
    потенциально узкое место в шине хранилки на фул-скан запросах, но может это не так уж и критично. Какие подводные камни?
  • https://t.me/clickhouse_ru
    Вы не дождетесь выполнения запросов в таком случае.

    Для нескольких петабайт вам нужны несколько десятков шардов кх.

    А в случае десятков шардов, то та один шард там получается разумное кол-во ТБ данных (сотни)

    https://github.com/ClickHouse/ClickHouse/issues/26748

    https://github.com/ClickHouse/ClickHouse/issues/28961
    Parallel processing on replicas, reworked. · Issue #26748 · ClickHouse/ClickHouse

    We want to parallelize data processing using multiple replicas of single shard. Every replica should process some split of data. There are the following considerations that makes the task non-trivi...

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

    Берите s3/hdfs диск
  • https://t.me/clickhouse_ru
    вам понадобится нереально дорогая железка, от ляма баксов (не шучу)
  • https://t.me/clickhouse_ru
    @den_crane #237595 11:11 PM, 05 Oct 2021
    и 100 серверов со своими дисками будут в 10 раз дешевле и порвут ее в тряпки
  • Цены мы знаем :(
  • @bashlykevich #237597 11:12 PM, 05 Oct 2021
    Предположим, у заказчика есть уже хранилка и он не хочет покупать диски
  • @bashlykevich #237598 11:14 PM, 05 Oct 2021
    Как правильно рассчитывать производительность в таком случае? Сравнивать bandwidth хранилки и суммарную скорость чтения с дисков на шардах?
  • https://t.me/clickhouse_ru
    Посчитайте на сколько серверов вам хватит сети в хранилке
  • @bashlykevich #237600 11:17 PM, 05 Oct 2021
    Спс, будем прикидывать.
  • https://t.me/clickhouse_ru
    Вопрос, что делать с репликацией.

    Ибо хранилка в себе уже реплицирует, и хранить те же данные два раза будет странно.
  • https://t.me/clickhouse_ru
    @nyoroon #237602 11:18 PM, 05 Oct 2021
    Хранилку можно использовать для холодного архива
  • Так и есть, это отдельный вопрос, вторую хранилку заводить вроде как нет смысла, так что просто одна реплика
  • https://t.me/clickhouse_ru
    Ну тогда, что делать если сервер кх сам по себе поплохел, от этого же тоже нужно защищаться.
  • брать другой из стэндбая и перемонтировать к нему данные больного сервера
  • https://t.me/clickhouse_ru
    Ну это не очень быстро же.
    Плюс реплики помогают с параллельностью.
  • пока только на сэмплированных запросах, а у нас сэмплы не катят
  • https://t.me/clickhouse_ru
    Параллельные запросы могут прилетать на разные реплики
  • https://t.me/clickhouse_ru
    Нет, почему

    Два запроса параллельно идут.

    Один на первой реплики, а второй на другой
  • резонно, можно разные кластеры на разные реплики повесить
  • @bashlykevich #237611 11:24 PM, 05 Oct 2021
    Кстати, интересно, s3 используется реально с КХ кем-то на нормальных инсталляциях? Или это только для поиграться в облаке?
  • https://t.me/clickhouse_ru
    @unamedrus #237612 11:25 PM, 05 Oct 2021
    Некоторые наши клиенты пользуются.
    Но там не такие крупные инсталляции конечно.

    Основные проблемы:
    Кх утилизирует пока не весь throughput сети.
    Нет кеширования для данных. (есть для марок и ключа)

    Ну и сегодня вот креш вылез.
    https://github.com/ClickHouse/ClickHouse/issues/29788
    Startup crash: STSResourceClient Address: NULL pointer. Access: read. Address not mapped to object. · Issue #29788 · ClickHouse/ClickHouse

    Describe what's wrong Clickhouse server crashes with a traceback on startup in my deployment when I add an S3 storage policy to the /etc/clickhouse-server/config.d folder. Does it reproduce...

  • https://t.me/clickhouse_ru
    каждый сервер с дисками может читать 1 GB/s (8 Gbit) со своих дисков (raid 10 HDD), ваша хранилка должна выдавать 800 Gbit/s.
  • спасибо, эпично звучит
  • @bashlykevich #237615 11:38 PM, 05 Oct 2021
    Сколько данных в 2021 на топовых процах на ноду можно накидвать?
    Например, у нас есть инсталляция с 20-поточными Xeon Gold 5115@2.40GHz c 126GB RAM по 15ТБ полезного хранения на сервере - и есть ощущение, что можно было и побольше дисков насовать туда. Но это от профиля запросов сильно зависит, наверное.
  • https://t.me/clickhouse_ru
    10 - 20 дисков
  • https://t.me/clickhouse_ru
    @den_crane #237617 11:41 PM, 05 Oct 2021
    У нас есть клиенты которые используют Lustre и сервера используют хранилкой Lustre, но там не используется шардирование, все КХ сигл-инстанс, и сеть у них 40gbit в каждом серваке , чтобы нормально работало.
  • @bashlykevich #237618 11:45 PM, 05 Oct 2021
    интересный кейс, спасибо
  • 06 October 2021 (147 messages)
  • https://t.me/clickhouse_ru
    @datamanager #237619 07:01 AM, 06 Oct 2021
    Коллеги, просветите плиз. Пытаюсь разобраться с индексами. Вроде как индекса отдельного нет, это входит в движок таблицы. Нашел пример, где указано, как это делать: engine = mergetree(список столбцов). А в документации пишут, что параметров у mergetree нет. К
  • https://t.me/clickhouse_ru
    @datamanager #237620 07:01 AM, 06 Oct 2021
    Кому верить и как создать индекс?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237619 #237621 07:21 AM, 06 Oct 2021
    индексов нет, есть сортировка данных на диске по указанным вами полям, которая помогает читать меньше. писать надо так engine= MergeThree order by (список, столбцов).
    Имеет смысл внимательно от начала до конца прочитать статью в документации - https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/
    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
    @vchernyshev #237622 07:27 AM, 06 Oct 2021
    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
    @bvt123 ↶ Reply to #237622 #237623 07:32 AM, 06 Oct 2021
    они конечно есть, и об этом сказано в документе, который обязательно надо прочитать прежде чем что-то проектировать на КХ. Но это не те индексы, которые представляют себе люди, пришедшие с другиъ субд. И там не сказано, что эти скип индексы хоть как-то полезны, если у вас примерно миллиард записей, и встречаются довольно длинные куски относительно однородных по какому-то полю данных. Если нет, то эти "индексы" не помогут никак.
  • https://t.me/clickhouse_ru
    Да, это правда.
  • @k_i_r_y #237626 07:51 AM, 06 Oct 2021
    Коллеги добрый день. Есть кластер кликхауса в кубере версия 21.3.15. Возникают алерты вида ClickHouseReplicatedPartChecksFailed. В логах вижу ошибки вида Found parts with the same min block and with the same max block as the missing part. Попробовал https://github.com/ClickHouse/ClickHouse/issues/10368#issuecomment-616310015 но ничего не выдается. Есть советы по траблешутингу такого?
    Some merges may stuck · Issue #10368 · ClickHouse/ClickHouse

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

  • @k_i_r_y #237627 08:04 AM, 06 Oct 2021
    вообще стоит ли начинать пониковать при получении alertoв вида ReplicatedPartFailedFetches и ReplicatedPartCheckFailed?
  • https://t.me/clickhouse_ru
    @IgorRekun #237628 08:07 AM, 06 Oct 2021
    Чат, есть идеи как элегантнее всего покрыть следующий кейс?

    Есть таблица с колонками A, B, C и движком ReplacingMergeTree.
    Нужно чтобы дедупликация работала только по колонкам (A, B) но order by C тоже должен летать (лимит офсет чтобы не хворали).
  • https://t.me/clickhouse_ru
    @386851661 #237629 08:09 AM, 06 Oct 2021
    Всем добрый день! У меня есть таблица с данными, в которых столбцы закодированы. И есть справочник к нему. Подскажите как кодовые значения заменить на названия из справочника. Таблицы выглядят так:
  • https://t.me/clickhouse_ru
  • dictGet()
  • https://t.me/clickhouse_ru
    @m1khal3v #237632 08:50 AM, 06 Oct 2021
    Всем привет. Немного запустался в параметре injective в словарях. Во первых не очень понятно проставляется он к ключу или аттрибуту. В доке по CREATE DICTIONARY этот параметр указан у ключей

    https://clickhouse.com/docs/ru/sql-reference/statements/create/dictionary/
    ...
    key2 type2 [DEFAULT|EXPRESSION expr2] [HIERARCHICAL|INJECTIVE|IS_OBJECT_ID],
    attr1 type2 [DEFAULT|EXPRESSION expr3],
    ...

    При этом в доке по ключам и аттрибутам словарям он указан для аттрибутов

    https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure/
    <structure>
    ...
    <attribute>
    ...
    <injective>true</injective>
    ...
    </attribute>
    </structure>

    По доке нашёл лишь такое описание этого параметра

    https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/
    Помечать извлекаемые атрибуты как инъективные. Атрибут называется инъективным, если разным ключам соответствуют разные значения атрибута. Тогда при использовании в GROUP BY функции, достающей значение атрибута по ключу, эта функция автоматически выносится из GROUP BY.

    Кто-нибудь может переформулировать для особо одарённых ?
    Словарь | Документация ClickHouse

    CREATE DICTIONARY CREATE DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster] ( key1 type1 [DEFAULT|EXPR

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237632 #237634 09:25 AM, 06 Oct 2021
    есть словарь с однозначным маппингом id->name, и хочется оптимизировать запрос вида:
    select sum(x) c, dictGet('users_dict','name',id) as name from table group by name
    допустим этот запрос из 1М делает 100 записей. Что быстрее сделать 1М обращений к словарю до group by или 100 после? Может ли оптимизатор самостоятельно принять решение о замене и сделать group by по id?
  • https://t.me/clickhouse_ru
    Спасибо 🙏
  • https://t.me/clickhouse_ru
    @apluhin #237636 09:55 AM, 06 Oct 2021
    Привет, подскажите пожалуйста, как предпочтительнее удалить большую часть (600гб из 700гб) данных из таблицы ReplicatedMergeTree,
    воспользоваться ttl на таблицу с настройкой ttl_only_drop_parts, или же можно просто сделать через ALTER TABLE?
    не хочется, чтобы встала запись в эту таблицу
  • https://t.me/clickhouse_ru
    @S_Dimitry #237637 09:56 AM, 06 Oct 2021
    господа, подскажите где неправ. Есть таблица:
    CREATE TABLE default.tmp3_transaction_ids_of_null_bonus_expired_at
    (

    transaction_id UInt64,

    account_expired_at DateTime
    )
    ENGINE = Join(ANY,
    LEFT,
    transaction_id)
    делаю запрос в котором
    FROM transactions t
    LEFT JOIN tmp3_transaction_ids_of_null_bonus_expired_at as b using (t.transaction_id)
    получаю ошибку: DB::Exception: Table default.tmp3_transaction_ids_of_null_bonus_expired_at has incompatible type of JOIN
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237637 #237638 10:00 AM, 06 Oct 2021
    Делайте LEFT ANY JOIN
  • https://t.me/clickhouse_ru
    SQL Error [1002]: ClickHouse exception, code: 1002, host: localhost, port: 8123; null
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237639 #237640 10:11 AM, 06 Oct 2021
    попробуйте вместо using (t.transaction_id) сделать on b.transaction_id = t.transaction_id или using (transaction_id)
  • https://t.me/clickhouse_ru
    попробовал 4 варианта с (2 с ANY\outer и 2 с ON\using) либо NULL kb,j has incompatible type of JOIN. (version 21.8.8.29 (official build))
  • https://t.me/clickhouse_ru
    @S_Dimitry #237642 10:15 AM, 06 Oct 2021
    читаю документашку и пока вижу фигу
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237641 #237643 10:23 AM, 06 Oct 2021
    А можете запрос с left any join прислать? Я просто буквально час назад рефакторил вьюхи и натыкался на эту ошибку: был запрос select * from t1 left join t2 on t1.key = t2.key с обычной таблицей t2, стал запрос `select * from t1 left ANY join t2 on t1.key = t2.key` с таблицей t2 вида create table t2(key Int32, val String) engine = Join(ANY, LEFT, key).
  • https://t.me/clickhouse_ru
    @bvt123 #237644 10:25 AM, 06 Oct 2021
    подскажите - в чем преимущества Join Engine по сравнению со словарем?
  • https://t.me/clickhouse_ru
    @Hardstep83 #237645 10:26 AM, 06 Oct 2021
    Подскажите есть ли возможность хоть как то кроме иерархических словарей использовать рекурсию в ClickHouse? В доке не нашел.
  • https://t.me/clickhouse_ru
    select
    t.transaction_id,
    t.account_created_at,
    t.account_type,
    t.account_amount,
    t.account_reason,
    CASE WHEN t.account_expired_at IS NULL and b.account_expired_at = '1970-01-01 00:00:00' THEN NULL WHEN b.account_expired_at IS NOT NULL THEN b.account_expired_at ELSE t.account_expired_at END as account_expired_at ,
    t.account_max_win_rate
    FROM transactions t
    LEFT JOIN tmp3_transaction_ids_of_null_bonus_expired_at as b using (t.transaction_id)
    WHERE transaction_created_at >='2016-01-01' AND transaction_created_at <'2017-01-01'
    Укоротил количество столбцов в селекте (там их порядка 100 еще)
  • https://t.me/clickhouse_ru
    у меня относительно разовая задача, пытаюсь за счет JOIN движка ускорить работу (обычный классический join очень долго выполняется)
  • https://t.me/clickhouse_ru
    По моему наоборот словарь удобнее чем join Engine, единственные преимущества видятся в том что можно задать тип соединения в join, в то время как словарь это по сути inner join только может быть или left join если вынести словарь в предложение select и потом выбрать всё
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237648 #237650 10:30 AM, 06 Oct 2021
    это понятно. непонятно почему вас понесло в join движок. Он очень похож на какую-то КХ легаси. Словари явно у него выигрывают и решают те-же самые задачи.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237646 #237651 10:31 AM, 06 Oct 2021
    В блоке using(t.transaction_id) уберите t. - там должно быть только название столбца без алиаса таблицы.
  • https://t.me/clickhouse_ru
    это тоже пробовал =(
  • @Yerzhan1997 #237653 10:31 AM, 06 Oct 2021
    Добрый день коллеги!
    Сегодня только начал работать с clickhouse и возник вопрос: обязательно ли покупать виртуальную машину Яндекс облако или можно без него обойтись и спокойно пользоваться локальной системой?
  • https://t.me/clickhouse_ru
    Необязательно
  • https://t.me/clickhouse_ru
    @gridleak #237655 10:33 AM, 06 Oct 2021
    Пытался посмотреть в query_log на предмет чем занят clickhouse (top по total_time). Пока не понял где искать статистику по INSERT, которые внутри MV который тянет данные из кафки. Только по логам? (21.3)
  • Спасибо за ответ) А вы не знаете можно ли подключить базы данных clickhouse к Analysis server для создание Olap кубов?
  • @Yerzhan1997 #237657 10:35 AM, 06 Oct 2021
    У меня не получилось postgre соединить к visual studio даже с odbc драйверами и теперь боюсь, что также будет и с clickhouse.
  • https://t.me/clickhouse_ru
    А это не часть MSSQL? оно вообще куда-то еще умеет?
  • @Yerzhan1997 #237659 10:52 AM, 06 Oct 2021
    Analysis server от Microsoft.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237652 #237660 10:52 AM, 06 Oct 2021
    Очень странно.

    А если убрать left join вообще и в блоке CASE заменить b.account_expired_at на joinGet(tmp3_transaction_ids_of_null_bonus_expired_at, 'transaction_created_at', t.transaction_id) as account_expired_at2, например?
  • https://t.me/clickhouse_ru
    кое-что выдал, сейчас посмотрю далее. Отпишусь
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #237645 #237663 11:13 AM, 06 Oct 2021
    connect by & recursive CTE не завезли пока. Голосуйте тут - https://github.com/ClickHouse/ClickHouse/issues/16907 Если словари вам не угодили, то попробуйте сделать на вложенных подзапросах с фиксированным количеством уровней рекурсии (например 5).
    Reusing expression in a subquery (CTE) · Issue #16907 · ClickHouse/ClickHouse

    ClickHouse server version 20.9.3 revision 54439. Describe the issue Example in docs: https://clickhouse.tech/docs/en/sql-reference/statements/select/with/ Example 4: Reusing expression in a subquer...

  • https://t.me/clickhouse_ru
    вообщем, joinget работает без CASE. если использовать такую структуру:
    select
    t.transaction_id,
    t.account_created_at,
    t.account_type,
    t.account_amount,
    t.account_reason,
    CASE WHEN t.account_expired_at IS NULL and joinGet(tmp3_transaction_ids_of_null_bonus_expired_at, 'account_expired_at', t.transaction_id)='1970-01-01 00:00:00' THEN NULL
    WHEN joinGet(tmp3_transaction_ids_of_null_bonus_expired_at, 'account_expired_at', t.transaction_id) IS NOT NULL THEN joinGet(tmp3_transaction_ids_of_null_bonus_expired_at, 'account_expired_at', t.transaction_id)
    ELSE t.account_expired_at END as account_expired_at ,
    t.account_max_win_rate
    FROM transactions t
    WHERE transaction_created_at >='2016-01-01' AND transaction_created_at <'2017-01-01'
  • https://t.me/clickhouse_ru
    @S_Dimitry #237665 11:24 AM, 06 Oct 2021
    то нет
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237664 #237666 11:25 AM, 06 Oct 2021
    Как ругается?
  • https://t.me/clickhouse_ru
    SQL Error [1002]: ClickHouse exception, code: 1002, host: localhost, port: 8123; null
  • https://t.me/clickhouse_ru
    думаю можно CASE убрать флагом join_use_nulls=1
  • есть joinGetOrNull для такого
  • https://t.me/clickhouse_ru
    Лучи добра вам и Алексею!
  • @bashlykevich #237673 12:01 PM, 06 Oct 2021
    какую stable/lts версию КХ из последних сейчас не боязно брать в прод?
  • https://t.me/clickhouse_ru
    Возьмите версию от Алтинити
  • https://t.me/clickhouse_ru
    21.3 последняя которую мы апрувнули.

    Вот на днях должны апрувнуть 21.8 как altinity stable
  • https://t.me/clickhouse_ru
    @konnectrl #237676 12:09 PM, 06 Oct 2021
    Кто-нибудь пользуется dbt в clickhouse ?
  • https://t.me/clickhouse_ru
    а у вас какой примерно разрыв по времени\версиям обычно между аппрувом stable от Яндекса и, собственно, вами?
  • https://t.me/clickhouse_ru
    есть в MergeTree таблицах главный индекс, он совпадает с сортировкой таблицы.

    раньше до декабря 2017 года использовался синтаксис MergeTree(partititonkey, orderkey, samplekey, granularity)
    после декабря 2017 MergeTree partition by (partititonkey) order by (orderkey) sample by (samplekey) settings (granularity)
    новый синтаксис имеет больше фич, нужно использовать только его.

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

    главный индекс -- может быть префиксом сортировки, можно задать PRIMARY KEY( a, b) ORDER BY (a,b,c,d) -- PRIMARY KEY==главный(первичный) индекс.

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

    как вариант выкинуть кубернетис, там сеть одна большая проблема
  • не не вариант ок буду попробую в сторону сети ковырять
  • @k_i_r_y #237685 12:34 PM, 06 Oct 2021
    спасибо
  • https://t.me/clickhouse_ru
    @den_crane #237686 12:37 PM, 06 Oct 2021
    раньше в любой непонятной ситуации я крошил батон на SELinux, теперь на кубернетис. Если что-то необяснимо глючит -> виноват кубернетис.
  • https://t.me/clickhouse_ru
    не будет вам счастья. Это невозможно реализовать потому что мержи (Replacing) используют сортировку таблицы, а у вас надо отсортировать вообще по другому.
  • https://t.me/clickhouse_ru
    Перелил все в replacing только по (a, b) и переписал селект вынеся сортировку по C в подзапрос, вроде стало летать. Но да, элегантного варианта кажется действительно нет.
  • https://t.me/clickhouse_ru
    в доке ошибка, это про атрибуты
  • https://t.me/clickhouse_ru
    @sarirworld #237692 12:51 PM, 06 Oct 2021
    Здравствуйте, такая проблема

    Есть ReplacingMergeTree
    На основе ее создается final MergeTree (CREATE TABLE ..... AS SELECT * FROM .... FINAL)

    Перед созданием если такая таблица уже существует, то она удаляется

    В какой-то момент(непонятно в какой), запросы DROP(а так же и KILL QUERY этого запроса) просто намертво зависают (для этой final таблицы), помогает только рестарт кликхауса

    Версия 21.4.3.21

    Есть идеи? Спасибо
  • https://t.me/clickhouse_ru
    alter table drop partition ?
  • https://t.me/clickhouse_ru
    это не настоящая ошибка. Это ошибка в jdbc драйвере.
  • https://t.me/clickhouse_ru
    партицирование по дням, а нужно удалить по другому полю
  • https://t.me/clickhouse_ru
    @390624838 #237697 12:55 PM, 06 Oct 2021
    Добрый день.
    Подскажите best practices по отказоустойчивой схеме работы в KX, при условии, что поставщик данных для КХ один - Kafka. Есть таблицы с движком Kafka, есть таблицы MergeTree, eсть матвью "from kafka to mergeTree". Хочется иметь, как минимум, защиту от потери данных.

    Вижу варианты:
    1. Однонаправленная репликация (аля standby). Все финальные таблицы делаем Replicated, на копии БД имеем только финальные таблицы.
    2. Двунаправленная репликация. Полная копия всех объектов БД на обеих репликах, финальные таблицы - Replicated. Таблицы Kafka работают в рамках одной consumer-group. Т.е. одна реплика обрабатывает половину данных из топика, реплики обмениваются данными в финальных таблицах
    3. Независимый дубль без репликации. Таблицы Kafka работают в рамках разных consumer-group (каждая копия получает полный набор данных и обрабатывает его)

    Подскажите, как лучше? Может, есть еще варианты?
  • https://t.me/clickhouse_ru
    да никак. Иерархия это рандомное чтение (если это не специально организованное left-right Readonly дерево)
    рандомное чтение не совместимо с OLAP
  • https://t.me/clickhouse_ru
    alter table delete
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    запросы от MV пока не логируются в query_log. Только в логах да. В part_log еще что-то видно
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    ну мерж идет на этой таблице и блокирует drop table.

    >Версия 21.4.3.21
    проверьте в свежих версиях КХ, кажется мерж должен отменяться если сделан drop
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    или 2 или 3.

    у 3 проблема что данные будут немного разные всегда, но есть достоинтсво, можно сделать в разных гео-регионах, если осилите гео-регионы в кафка.
  • https://t.me/clickhouse_ru
    @AlexTheDolphin #237706 01:04 PM, 06 Oct 2021
    Коллеги, подскажите, как сделать так, чтоб подзапрос вычислялся на хосте запроса, а не улетал по кластеру через Distributed?
  • https://t.me/clickhouse_ru
    сделать скобки (select ) вокруг запроса
  • https://t.me/clickhouse_ru
    Так и попробоал, всё равно улетает
  • https://t.me/clickhouse_ru
    приблизительно запрос покажите
  • https://t.me/clickhouse_ru
    select field1 from disributed_table where field2 in (select field1 from local_table where field2 = 'const')
  • https://t.me/clickhouse_ru
    Спасибо за ответ. Буду пробовать. Как я понимаю, на варианте 3 в случае потери одной копии для восстановления на новом месте достаточно остановить вставку и на холодную скопировать данные средствами файловой системы?
  • https://t.me/clickhouse_ru
    посчитать (select field1 from local_table where field2 = 'const') на инициаторе и разослать на шарды
    select field1 from disributed_table where field2 global in (select field1 from local_table where field2 = 'const')

    стянуть на инициатор (select field1, field2 from disributed_table) и фильтровать where in на инициаторе
    select field1 (select field1 from disributed_table where field2) where field2 in (select field1 from local_table where field2 = 'const')
  • https://t.me/clickhouse_ru
    Большое спасибо, сработало!
  • https://t.me/clickhouse_ru
    да, типа того
  • https://t.me/clickhouse_ru
    @yakimka #237715 01:31 PM, 06 Oct 2021
    Добрый день. В документации есть пример подключения постгри как источника словаря.

    <source>
    <postgresql>
    <port>5432</port>
    <user>clickhouse</user>
    <password>qwerty</password>
    <db>db_name</db>
    <table>table_name</table>
    <where>id=10</where>
    <invalidate_query>SQL_QUERY</invalidate_query>
    </postgresql>
    </source>

    а можно как-то параметры
    <port>5432</port>
    <user>clickhouse</user>
    <password>qwerty</password>
    <db>db_name</db>

    Вынести в подключаемый файл\переменные среды или еще как-то чтобы
    а) не хранить в плейн тексте креденшиалсы
    б) не дублировать настройки подключения в каждом файле словарей
  • https://t.me/clickhouse_ru
    @yakimka #237716 01:32 PM, 06 Oct 2021
    ODBC у меня например так сейчас подключается

    <source>
    <odbc>
    <connection_string>DSN=DSN_VALUE</connection_string>
    <table>TABLE</table>
    </odbc>
    </source>

    можно что-то похожее сделать с постгри?
  • https://t.me/clickhouse_ru
    да можно

    https://gist.github.com/filimonov/cbafa8ca85268693b7bf28c14473ab34
    https://gist.github.com/den-crane/d6e0f1c7849a0bc44c27eab2de51c911
    ClickHouse dictionaries with connection credentials substituted from another file

    ClickHouse dictionaries with connection credentials substituted from another file - _etc_clickhouse-server_dict_sources.xml

  • https://t.me/clickhouse_ru
    @ogornostaev #237719 01:54 PM, 06 Oct 2021
    всем привет. напомните, можно ли в настройках юзера ограничить число параллельных запросов?

    есть квоты, но это не совсем то.
    мне нужно запретить юзеру создавать больше 2 паралельных селектов скажем
  • https://t.me/clickhouse_ru
    Огромное спасибо!
  • https://t.me/clickhouse_ru
    max_concurrent_queries_for_user

    create user foo2 identified by '123' ;
    CREATE SETTINGS PROFILE OR replace max_concurrent_queries_for_user2
    SETTINGS max_concurrent_queries_for_user = 1 READONLY,
    max_threads = 3 READONLY,
    max_memory_usage_for_user = '8G' READONLY,
    max_memory_usage = '8G' READONLY,
    max_execution_time = 200 READONLY,
    max_rows_to_read = 1000000000 READONLY,
    max_bytes_to_read = '500G' READONLY
    TO foo2;
  • https://t.me/clickhouse_ru
    понял, спасибо. пропустил его
  • https://t.me/clickhouse_ru
    кликхаус автоматически подгружает xml из etc, которые начинаются с тега yandex?
  • https://t.me/clickhouse_ru
    нет, это очень старый гист.
    вам надо осознать что есть специальный файл /etc/metrica.xml
    и он специально описывался в дефолтном конфиге с помощью <include_from>
    читайте доку
  • https://t.me/clickhouse_ru
    @yakimka #237725 02:00 PM, 06 Oct 2021
    ааа, понял, спасибо
  • https://t.me/clickhouse_ru
    @den_crane #237726 02:00 PM, 06 Oct 2021
    похоже что /etc/metrica.xml это спец файл в яндексе в метрике, который есть везде и всегда и там какие-то конфиги которые используются не только КХ, а всеми прикладухами
  • https://t.me/clickhouse_ru
    @AlexTheDolphin #237727 02:05 PM, 06 Oct 2021
    Кстати, обновился сегодгя с древней версии на latest и у меня перестало работать слияние /etc/clickhouse-server/config.xml и /etc/clickhouse-server/config.d
    В preprocessed_configs/config.xml получилось две секции remote_servers, кликхаус видит только кластеры из первой секции. Помогло добавить replace="replace" в моём случае.

    Это с какой-то версии поменялось поведение или баг?
  • а для SQL словарей можно так сделать?
  • https://t.me/clickhouse_ru
    в смылсе про /etc/metrica.xml ? да известная хрень, я писал на гитхабе в чем проблема, но не хотят чинить
  • https://t.me/clickhouse_ru
    пока нет
  • https://t.me/clickhouse_ru
    Да, именно. Понятно, спасибо =)
  • https://t.me/clickhouse_ru
    вообще не надо пользоваться include для remote_servers

    include нужен если вы собираетесь заюзать секцию многократно например пароль для mysql для словаря.
    если вам нужен просто remote_servers то все это не нужно

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files/
    Server config files

    How to manage server config files in Clickhouse

  • https://t.me/clickhouse_ru
    @romul87 #237733 02:26 PM, 06 Oct 2021
    Всем привет!
    Продолжаю свою эпопею с TTL.
    Есть шард из двух реплик.
    На одной реплике делаю
    set materialize_ttl_after_modify=0;
    ALTER TABLE table modify TTL ttl_date
    Те же действия пытаюсь сделать на второй реплике и на команде alter table modify у меня появляется ошибка про то что метаданные в zk не соответсвуют. Делаю рестарт реплики и все выполняется.
    Почему может ругаться на метаданные в zk? И как правильно на двух репликах сделать alter table, чтобы не получить ошибку с zk?
    Запустил на реплике выполнение alter table mater TTL partition. На двух репликах шарда запустились мутации и мерджи. Прошел день, все мерджи выполнились данные почистились на двух репликах. Но на одной реплике все завершилось, а на другой висит мутация и процесс.
  • сгенерил для теста join таблицу и словарь с составными ключами
    1) джойн занял в памяти 64Gb, словарь - 82Gb
    2) в джойн таблицу можно на лету без блокировки дописывать, словарь такого размера обновляется пару минут
    3) в джойн таблице можно хранить хэшированный составной ключ, тогда память становится 48Gb и скорость почти в 2 раза лучше становится
  • @vladget #237735 02:45 PM, 06 Oct 2021
    > We do not recommend using LVM
    Почему? Какие подводные камни?
  • https://t.me/clickhouse_ru
    @ivanbrrr #237736 02:49 PM, 06 Oct 2021
    Товарищи, подскажите, что пошло не так?
    Code: 76, e.displayText() = DB::ErrnoException: Cannot open file /opt/clickhouse-server/clickhouse/data/tempdb/objects_v9/202012_1_25_2_86/uuid.null.bin, errno: 5, strerror: Input/output error: While executing MergeTree (version 21.8.4.51 (official build))
  • https://t.me/clickhouse_ru
    при этом отвалилось будто бы само, без внешних вмешательств
  • https://t.me/clickhouse_ru
    да, TTL кривой напроч, там 100500 проблем. В какой версии вы это делаете?
  • https://t.me/clickhouse_ru
    @pic_Nick77 #237739 03:02 PM, 06 Oct 2021
    Подскажите, почему select parseDateTimeBestEffort(null) выполняется без ошибки, а select parseDateTimeBestEffort(nullIf('', '')) с ошибкой: Code: 41, e.displayText() = DB::ParsingException: Cannot read DateTime: neither Date nor Time was parsed successfully: While processing parseDateTimeBestEffort(nullIf('', '')) (version 21.8.8.29 (official build))
  • https://t.me/clickhouse_ru
    джойн хранит все атрибуты в одной хештаблице, т.е. жрет меньше памяти, и быстрее рабоатает если надо извлекать несколько атрибутов.
    словарь хранит каждый атрибут в своей хештаблице поэтому жрет больше памяти и быстрее работает если надо извлечь один атрибут.
    у словарей есть layout SPARSE_HASHED https://kb.altinity.com/altinity-kb-dictionaries/altinity-kb-sparse_hashed-vs-hashed/
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/69319 это просто ложная память

    в 2021 году LVM не нужен.

    LVM замедляет рандом i/o операции на несколько процентов, потому что там есть пересчет логических адресов в "физические" (lmv -> pvm)
    Alexey Milovidov in ClickHouse не тормозит

    Уже давно используем на серверах mdadm без LVM. Один раз были подозрения на старом сервере, что mdadm поверх LVM разделов может приводить к деградации производительности. Но мы это не подтвердили и не опровергнули. То есть получается, что совет не серьёзный (на уровне народной приметы).

  • @zhora9001 #237742 03:09 PM, 06 Oct 2021
    добрый день! есть ли какая-либо возможность использовать dictGetChildren для словарей, у которых ключ - не число (строка или тапл, например)?
  • https://t.me/clickhouse_ru
    потому что ветления вычисляют и then и else , до версии 21.9 но это не точно.

    ваша проблема в том что вам не нужен if вообще.
    parseDateTimeBestEffortOrNull
    parseDateTimeBestEffortOrZero
  • https://t.me/clickhouse_ru
    О! отлично! спасибо!
  • https://t.me/clickhouse_ru
    Версия 20.9
  • https://t.me/clickhouse_ru
    я тут перечитал ваше сообщение.
    ВСЕ alter команды реплицируются , никогда не делайте alter на обеих(всех) репликах, вы удваиваете команду, это приводит к ошибке про версию таблицы
    лучше все alter всегда выполнять на одной и той же реплике, особенно если они выполняются подряд
  • https://t.me/clickhouse_ru
    То есть если я даже добавляю столбы в одну таблицу на одной реплике, то на второй реплике автоматом добавятся столбцы ?
  • https://t.me/clickhouse_ru
    да конечно,
    вы реплики и шарды не путаете?
  • https://t.me/clickhouse_ru
    Нет. Шард состоит из реплик.
  • https://t.me/clickhouse_ru
    ВСЕ alter команды реплицируются самой Replicated.... таблицей , optimize тоже
  • https://t.me/clickhouse_ru
    Понял.
  • https://t.me/clickhouse_ru
    @romul87 #237752 03:31 PM, 06 Oct 2021
    А если мутация и процесс будут долго висеть их можно просто кильнуть ?
  • https://t.me/clickhouse_ru
    Просто остальные я знал, я думал когда меняем ddl таблицы надо делать на каждой реплике отдельно
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    Что можно с ними сделать?
  • https://t.me/clickhouse_ru
    спрашивайте про конкретные ситуации. Вы не знаете что такое мутация и что такое процесс, поэтому ваш вопрос не имеет смысла, это все равно что спросить, а можно пить? пить что ? когда? кому?
  • https://t.me/clickhouse_ru
    @romul87 #237757 03:35 PM, 06 Oct 2021
    Мутация вызванная alter table materal TTL, висит мутация вызванная им и соответственно в таблице processes я вижу processes вызванный alter mater TTL
  • https://t.me/clickhouse_ru
    @romul87 #237758 03:36 PM, 06 Oct 2021
    На соседней реплике уже все закончилось
  • https://t.me/clickhouse_ru
    покажите что в system.mutations для нее
  • https://t.me/clickhouse_ru
    @romul87 #237760 03:42 PM, 06 Oct 2021
    Какие поля необходимы иначе все придется перепечатывать
  • https://t.me/clickhouse_ru
    @den_crane #237761 03:42 PM, 06 Oct 2021
    create_time parts_to_do latest_failed_part latest_fail_time latest_fail_reason
  • https://t.me/clickhouse_ru
    @den_crane #237762 03:43 PM, 06 Oct 2021
    и что в system.merges про нее?
  • https://t.me/clickhouse_ru
    Create time 2021-10-05 12:05
    Parts to do 23
    Latest failed part пусто
    Latest fail time 1970-01-01
    Latest fail reason пусто
  • https://t.me/clickhouse_ru
    Нет записей
  • https://t.me/clickhouse_ru
    ну тогда kill mutation
    процесс не надо убивать, сам отвалится, он ничего не делает
  • https://t.me/clickhouse_ru
    Спасибо. Сейчас пойду делать
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #237770 06:30 PM, 06 Oct 2021
    приветы!
    а как грохнуть ключ семплирования в существующей таблице?
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #237771 06:32 PM, 06 Oct 2021
    мы тут обновились, КХ перестал соглашаться на строковый столбец в ключе семплирования, хотим убрать ключ семплирования
  • @fdeh75 ↶ Reply to #237770 #237772 06:33 PM, 06 Oct 2021
    Могу посоветовать перелить таблицу в новую без этого ключа.
  • https://t.me/clickhouse_ru
    таблица replicated ?
  • https://t.me/clickhouse_ru
    However, in fresh versions you can set compatibility setting check_sample_column_is_correct = false in MergeTree settings

    https://github.com/ClickHouse/ClickHouse/issues/29005
    UUID as a sampling key don't work anymore since 21.9 · Issue #29005 · ClickHouse/ClickHouse

    2021.09.13 06:59:35.799363 [ 11 ] {} <Error> Application: DB::Exception: Invalid sampling column type in storage parameters: UUID. Must be one unsigned integer type: Cannot attach tab...

  • https://t.me/clickhouse_ru
    @artemy_kravtsov #237775 06:39 PM, 06 Oct 2021
    да, replicated
    спасибо
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #237776 06:39 PM, 06 Oct 2021
    ❤️
  • @milovidov_an #237779 11:02 PM, 06 Oct 2021
    Типичные грабли аналитики на примере данных из Git:
    https://www.youtube.com/watch?v=y8HsXqQEyfE
    Алексей Миловидов, ClickHouse - Типичные грабли аналитики на примере данных из Git

    Алексей демонстрирует примеры решения аналитической задачи: изучение и упрощение модели данных; выбор структуры хранения; подготовка, обогащение и загрузка данных; как быстро изучить данные и избежать неправильных выводов; применимость данных для конкретных задач. Пример exploratory data analysis - изучение данных в поисках инсайтов без изначально поставленной задачи.

  • None
  • 07 October 2021 (197 messages)
  • https://t.me/clickhouse_ru
    @270358043 #237781 12:57 AM, 07 Oct 2021
    работает ли у кого-то apache superset с кликхаусом? Интересует какие версии суперсета и clickhouse-sqlalchemy
  • https://t.me/clickhouse_ru
    @351787200 #237783 03:26 AM, 07 Oct 2021
    Возможно ли такое исправить?
    Macro 'uuid' and empty arguments of ReplicatedMergeTree are supported only for ON CLUSTER queries with Atomic database engine.
  • https://t.me/clickhouse_ru
    что тут исправлять? кривой SQL. такой create table можно делать только в atomic базах
  • https://t.me/clickhouse_ru
    @351787200 #237785 03:29 AM, 07 Oct 2021
    База создана давно, может быть, что она не Atomic?
  • https://t.me/clickhouse_ru
    @351787200 #237786 03:29 AM, 07 Oct 2021
    Ранее не было репликации вовсе.
  • https://t.me/clickhouse_ru
    @351787200 #237787 03:30 AM, 07 Oct 2021
    На тестовых средах все создавалось без проблем.
  • https://t.me/clickhouse_ru
    может. Дело в том что у Engine = ReplicatedMergeTree(надо задавать параметры) в Atomic базах они могут быть заданы автоматом.
    вам сложно написать ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') ?
  • https://t.me/clickhouse_ru
    @351787200 #237789 03:33 AM, 07 Oct 2021
    Попробую. Конвертация базы в Аtomic бывает?
  • https://t.me/clickhouse_ru
    @351787200 #237790 03:33 AM, 07 Oct 2021
    Плюс применяю макрос uuid. Будет ли он работать?
  • https://t.me/clickhouse_ru
    бывает
  • https://t.me/clickhouse_ru
    вот так CREATE TABLE db.tablename UUID '3bd68e3c-2693-4352-ad66-a66eba9e345e' on cluster
  • https://t.me/clickhouse_ru
    @351787200 #237793 03:36 AM, 07 Oct 2021
    Макрос uuid не поддерживается, как и было сказано.
  • https://t.me/clickhouse_ru
    @351787200 #237794 03:37 AM, 07 Oct 2021
    По конвертации в Atomic, это опасно, как сделать?
  • https://t.me/clickhouse_ru
    Тут предполагается сгенерировать вручную и подставить UUID? В пути ZK тогда тоже подставить тот же UUID? У меня вот такой путь: {zk_path_prefix}/tables/{uuid}/{shard}. Тут zk_path_prefix некий префикс.
  • https://t.me/clickhouse_ru
    ну подставьте вручную любой uuid вместо {uuid}, а что вам имя таблицы например не нравится?
  • https://t.me/clickhouse_ru
    @den_crane #237797 03:41 AM, 07 Oct 2021
    {zk_path_prefix}/tables/{table}/{shard}
  • https://t.me/clickhouse_ru
    @351787200 #237798 03:42 AM, 07 Oct 2021
    По имени были проблемы скорее при тестировании. После удаления таблицы не создается опять с тем же именем.
  • https://t.me/clickhouse_ru
    @351787200 #237799 03:43 AM, 07 Oct 2021
    Плюс унификация, я уже "наплодил" таблиц именно так :)
  • https://t.me/clickhouse_ru
    @351787200 #237800 03:44 AM, 07 Oct 2021
    Скажите мне, пожалуйста, по конвертации базы в Atomic. Не смог ничего найти по этому.
  • https://t.me/clickhouse_ru
    Drop table ... sync;
  • https://t.me/clickhouse_ru
    Переименованием таблиц
  • https://t.me/clickhouse_ru
    @a4104c504 #237803 03:45 AM, 07 Oct 2021
    Доброе утро
    Можете подсказать пожалуйста, как организовать синхронизацию (в одну сторону) с mssql на clickhouse одной таблицы
    Чтобы при записи/изменении/удалении записи в mssql данные грабились в clickhouse
    Спасибо
  • https://t.me/clickhouse_ru
    @a4104c504 #237804 03:46 AM, 07 Oct 2021
    Как лучше всего и правильнее*
  • 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
    работает
    superset 1.x (проверял на 1.0, 1.1 и 1.3)
    https://gist.github.com/ad926dfa30ceb4fe1d168c00c3da98e0

    clickhouse-sqlalchemy тупо из master с git ставил

    смотрите bootstrap.sh
    superset 1.x + clickhouse docker-compose bootstrap

    superset 1.x + clickhouse docker-compose bootstrap - Dockerfile

  • https://t.me/clickhouse_ru
    @konnectrl #237812 05:53 AM, 07 Oct 2021
    Приветствую, как можно посмотреть сколько весит один столбец в таблице ?
  • https://t.me/clickhouse_ru
    SELECT field FROM table
  • https://t.me/clickhouse_ru
    из какой таблицы выбираете?
    Distributed?
  • https://t.me/clickhouse_ru
    Если нет элегантных способов, то будем делать синхронизатор
    Просто вроде что-то видел про engine или что-то в этом духе, где можно прокинуть источник
  • https://t.me/clickhouse_ru
    в смысле у вас там каскад MV какой то??

    SELECT FROM обычный VIEW WHERE .. -> который уже выбирачет через SELECT FROM materialized view UNION SELECT another materialized view ?

    сервер один?
  • https://t.me/clickhouse_ru
    ну вообще вы попробуйте сравнить
    EXPLAIN SYNTAX SELECT ... FROM view WHERE ...
    и
    EXPLAIN SYNTAX SELECT ... FROM view

    есть подозрение что дело не в группировке. а в том что WHERE условия прокидываются внутрь SELECT которыми view ограничен ...

    и GROUP BY на выходе порождает другое кол-во строк...
  • https://t.me/clickhouse_ru
    А как то подругому можно ? А то таблица около 200 гигов уже весит. Именно в сжатом формате
  • https://t.me/clickhouse_ru
    Попробуйте вот так
    SELECT formatReadableSize(data_compressed_bytes), formatReadableSize(data_uncompressed_bytes) FROM system.columns WHERE database = 'my_db' AND `table` = 'my_table' and name = 'my_col'
  • https://t.me/clickhouse_ru
    ой извините, ерунду написал, прочитал "как посмотреть один столбец в таблице"
  • https://t.me/clickhouse_ru
    Спасибо, это помогло
  • https://t.me/clickhouse_ru
    Бывает, но интересно, что показатели в select column from table не совпадают с данными в system.columns.data_uncompressed_bytes.
  • https://t.me/clickhouse_ru
    @baltazorbest #237828 08:26 AM, 07 Oct 2021
    Приветствую, подскажите пожалуйста, столкнулся с такой проблемой, есть таблица в ней есть партиции с типом поля Enum8 , бьыли откреплены не сколько партиций , сейчас при попытке вернуть они не возвращаются с ошибкой:
    DB::Exception: Type mismatch for column xxxxxxx. Column has type Enum8 got type Enum8

    нашел баг на эту тему:
    https://github.com/ClickHouse/ClickHouse/issues/26672
    и некий pull request
    https://github.com/ClickHouse/ClickHouse/pull/28028

    но не могу понять как использовать то что было в пулл реквесте
    attaching parts with 'compatible' enum types · Issue #26672 · ClickHouse/ClickHouse

    Got something like that in practice with backup recovery - IRL most probably the sequence of events leading to that discrepancy was different (not clear yet). drop table enum_alter_issue; create ta...

  • https://t.me/clickhouse_ru
    @baltazorbest #237829 08:27 AM, 07 Oct 2021
    Может кто то подсказать можно ли обойти это и подцепить партиции назад?
  • https://t.me/clickhouse_ru
    @baltazorbest #237831 08:44 AM, 07 Oct 2021
    Ни у кого идей нету?
  • https://t.me/clickhouse_ru
    @unknown_name13 #237832 08:48 AM, 07 Oct 2021
    #вакансия ищем DBA Clickhouse, OZON удаленка
  • @KevinMort #237835 09:07 AM, 07 Oct 2021
    Всем привет!
    Создаю подключение к кафке таким образом, но не вижу данных
    Что я делаю не так, нужно настраивать в конфиге?
    CREATE TABLE queue (
    `stringfield1` String
    ) ENGINE = Kafka('host:9092', 'testTool', 'test', 'JSONEachRow');
  • https://t.me/clickhouse_ru
    @beeblebrox #237836 09:30 AM, 07 Oct 2021
    привет, чат!

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

    ClickHouse завязан не некоторые ZooKeeper концепты.

    Вынесите ZooKeeper на отдельные ноды-диски
  • https://t.me/clickhouse_ru
    @Artemsafiyulin #237839 09:35 AM, 07 Oct 2021
    Всем привет!
    Прошу помочь советом, как лучше организовать несколько отдельных кластеров clickhouse:
    - настроить их на работу с одним кластером zookeeper
    - делать под каждый кластер клика отдельный кластер zookeeper
    Может быть есть какие то общепринятые нормы и решения? В доке и гугле не нашел на эту тему особо информации
  • https://t.me/clickhouse_ru
    штош, спасибо
  • @Migandy #237843 10:04 AM, 07 Oct 2021
    добрый день. У меня проблема с пингом сервера
  • @Migandy #237844 10:04 AM, 07 Oct 2021
    хотя вроде бы подключение есть
  • @Migandy #237845 10:04 AM, 07 Oct 2021
    а пинг не проходит
  • @Migandy #237846 10:05 AM, 07 Oct 2021
    кто-нибудь помочь может?
  • @satanch #237847 10:05 AM, 07 Oct 2021
    добрый день!

    сделал запрос ALTER TABLE tblname DELETE WHERE createdAt < '2021-07-01'
    мутация успешно завершилась, удалил огромную пачку данных, но местао на диске увеличилось совсем на немного, оно будет увеличиваться со временем или же диск забит какими то другими данными (логами типа)?
  • @satanch #237848 10:06 AM, 07 Oct 2021
    место стало освобождаться на 1гб в 5 минут, это путает еще больше
  • @KevinMort #237849 10:15 AM, 07 Oct 2021
    Мне из кафки приходят данные в таком формате
    {"some_int":42,"some_str":"hello"}
    Какой формат мне указать, чтобы преобразовать их в строку и записать в таблицу в 2 столбца?
  • @KevinMort #237850 10:22 AM, 07 Oct 2021
    Если сообщения из кафка не могут записаться по какой-то причине, где можно посмотреть это в clickhouse?
  • https://t.me/clickhouse_ru
    логи КХ или проверьте system.errors
  • https://t.me/clickhouse_ru
    SELECT column FROM table
    это просто вывод содержимого колонки
    я не понял как вы его с размером сравниваете
  • Спасибо!
  • https://t.me/clickhouse_ru
    Есть же в кликхаус клиенте счётчики сколько использовано данных
  • может быть добавите описание, откуда пинг делаете, откуда подключение существует?
  • решилось уже, спс
  • https://t.me/clickhouse_ru
    это вообще сколько было "прочитано в течении запроса", ну тупо счетчик байтов

    это не размер данных на диске...

    на диске еще например есть system.parts у которых active=0
  • https://t.me/clickhouse_ru
    Вы прицепите столбец к временной таблице с enum как парте. Сделайте alter. Потом opyimize final. Потом перецпите attach from
  • @KevinMort #237861 11:22 AM, 07 Oct 2021
    Как я могу преобразовать значения внутри data в строки и записать их в таблицу?

    {"data":{"Organisation name":"Rochdale Borough Council","Purchase Order Number":"ph100669","Order date":"30/12/2014","Total_Value":"£227,150.00","Supplier_Name":"PENNINE CARE NHS","Account_Name":"PH PENNINE CARE CONTRACT","Service":"PUBLIC HEALTH"}}

    Беру данные из кафка, нужно распарсить данные внутри data
  • https://t.me/clickhouse_ru
    собственно я сделал приблизительно так же, просто create table temporarytbl mergetree с старым enum8, дальше alter table modify columnt enum8(с новыми данными) и на последок alter table tnl attach partition from temporarytbl
  • https://t.me/clickhouse_ru
    @baltazorbest #237863 11:24 AM, 07 Oct 2021
    заняло правда чуть больше времени чем хотелось бы, но уже как есть (
  • https://t.me/clickhouse_ru
    Спасибо. Он-то работает действительно. Но не работает оказывается если встречается в базе Enum с пустой строкой как скажем тут https://clickhouse.com/docs/en/getting-started/example-datasets/cell-towers/ radio Enum8('' = 0, 'CDMA' = 1, 'GSM' = 2, 'LTE' = 3, 'NR' = 4, 'UMTS' = 5)
    Cell Towers | ClickHouse Documentation

    Cell Towers This dataset is from OpenCellid - The world's largest Open Database of Cell Towers. As of 2021, it contains

  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/27578

    Есть setting optimize который выключает это. Переберите все сеттинги
    Incorrect count optimization with UNION DISTINCT · Issue #27578 · ClickHouse/ClickHouse

    ClickHouse chooses a column to calculate count, and then UNION DISTINCT collapses the result set. SELECT * FROM system.databases UNION DISTINCT SELECT * FROM system.databases ┌─name ───┬─engine ─────...

  • https://t.me/clickhouse_ru
    так zk грузит диски потому что делает синк каждой транзакции. любая бд так будет грузить диск. Отключите в зк синк и он перестанет грузить диск. Пока сервер не сребутится все будет ок
  • https://t.me/clickhouse_ru
    Один клстер zk. Один кластер zk способен обслуживать пару сотен нод кх.
  • https://t.me/clickhouse_ru
    интересный кейс, а можете issue на github создать и меня @Slach там упомянуть?
  • https://t.me/clickhouse_ru
    Через 8 минут удаляются старые парты
  • https://t.me/clickhouse_ru
    кей я завел да #147
  • спасибо, однако места особо не освободилось, видимо мусор вне таблицы где-то лежит, буду копать
  • https://t.me/clickhouse_ru
    В mat.view можно в select написать что угодно. Jsonextract и дальше ....
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • А как взять из поля data json, если структура такая ?

    {"id": "005bc2df-5723-48f7-9b53-a94f4bc0d7d7", "data":{"name":"Vasya"}}

    CREATE TABLE readings_queue (
    `id` String,
    `data` String
    )
    ENGINE = Kafka
    SETTINGS kafka_broker_list = kafka:9092',
    kafka_topic_list = 'testTool',
    kafka_group_name = 'readings_consumer_group1',
    kafka_format = 'JSONEachRow',
    kafka_max_block_size = 1048576;
  • https://t.me/clickhouse_ru
    Tuple(name Tuple
  • Спасибо большое!!
  • https://t.me/clickhouse_ru
    Спасибо за совет
  • https://t.me/clickhouse_ru
    SELECT
    '{"id": "005bc2df-5723-48f7-9b53-a94f4bc0d7d7", "data":{"name":"Vasya"}}' AS j,
    JSONExtract(j, 'Tuple(id String, data Tuple(name String))')
  • https://t.me/clickhouse_ru
    @den_crane #237881 12:06 PM, 07 Oct 2021
    SELECT
    '{"id": "005bc2df-5723-48f7-9b53-a94f4bc0d7d7", "data":{"name":"Vasya"}}' AS j,
    JSONExtract(j, 'Tuple(id String, data Tuple(name String))') AS x,
    toUUIDOrZero(tupleElement(x, 'id')) AS id,
    tupleElement(tupleElement(x, 'data'), 'name') AS name
    FORMAT Vertical

    Row 1:
    ──────
    j: {"id": "005bc2df-5723-48f7-9b53-a94f4bc0d7d7", "data":{"name":"Vasya"}}
    x: ('005bc2df-5723-48f7-9b53-a94f4bc0d7d7',('Vasya'))
    id: 005bc2df-5723-48f7-9b53-a94f4bc0d7d7
    name: Vasya
  • То есть когда я создаю материализованное представление, я делаю его так?

    CREATE MATERIALIZED VIEW readings_queue_mv TO readings AS
    SELECT `id`,
    tupleElement(`data`, `name`) ,
    FROM readings_queue;
  • @KevinMort #237883 12:08 PM, 07 Oct 2021
    Если data
    `data` Tuple(`name` String)
  • https://t.me/clickhouse_ru
    нет. JSONEachRow вам не подходит

    В кафка engine таблице у вас будет одно поле j String
    format данных В кафка engine JSONAsString

    В mat view вы напишете извлечение из строки (из j)
    JSONExtract(j, 'Tuple(id String, data Tuple(name String))') AS x,
    toUUIDOrZero(tupleElement(x, 'id')) AS id,
    tupleElement(tupleElement(x, 'data'), 'name') AS name
  • Спасибо большое?
    А почему вы помогаете нам всем?)
  • https://t.me/clickhouse_ru
    Делай добро и бросай его в воду… )
  • https://t.me/clickhouse_ru
    Повышаю ЧСВ.
  • https://t.me/clickhouse_ru
    @den_crane #237890 12:48 PM, 07 Oct 2021
    В принципе а Альтинити это часть работы писать в паблик чатиках, но конечно лучше не в русскоязычных.
  • https://t.me/clickhouse_ru
    @den_crane #237891 12:50 PM, 07 Oct 2021
    И создание открытой kb.altinity.com/ я продвигал как часть маркетинга
  • Статьи у вас хорошие в Альтинити
  • @KevinMort #237893 12:50 PM, 07 Oct 2021
    Даже отличные)
  • https://t.me/clickhouse_ru
    @den_crane #237894 12:52 PM, 07 Oct 2021
    Статьи я не пишу, хотя за них платят кучу денег дополнительно к зарплате, но лень писать
  • @KevinMort #237895 12:52 PM, 07 Oct 2021
    Я разобрался со всем этим
    теперь стоит вопрос.
    У меня создаётся таблица очереди, куда идут сообщения из кафки, таблица куда я транслирую представление, само представление.
    Не избыточно ли это все?
  • https://t.me/clickhouse_ru
    Давай за вас буду писать :D
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #237891 #237897 12:53 PM, 07 Oct 2021
    За это отдельное спасибо, Денис.
  • https://t.me/clickhouse_ru
    почему за меня?, пишите статьи для блога и получайте бабло, это вообще не проблема.
  • https://t.me/clickhouse_ru
    ммм, а что можно по другому как-то?
  • https://t.me/clickhouse_ru
    @den_crane #237901 12:56 PM, 07 Oct 2021
    хотите написать приложение которое будет читать из кафки, делать трансформацию и писать в таблицу?
  • https://t.me/clickhouse_ru
    @den_crane #237902 12:56 PM, 07 Oct 2021
    это типа проще?
  • Просто поинтересовался. Ещё вопросик.
    Я собираюсь переливать через кафку в кликхаус данные пользователей,
    Для каждого создавать такую структуру?
  • @KevinMort #237904 12:58 PM, 07 Oct 2021
    Данные всегда разные
  • https://t.me/clickhouse_ru
    ну а как еще? Какое решение вы видите? Можете просто хранить как JSON как строки в КХ таблице.
  • https://t.me/clickhouse_ru
    @rukavkov #237906 01:00 PM, 07 Oct 2021
    Господа есть вот такой docker-compose чтобы поднять 2 шарды + 2 реплики

    version: "3"
    services:
    zookeeper:
    container_name: clickhouse-zookeeper
    hostname: clickhouse-zookeeper
    image: zookeeper:3.6.2
    ports:
    - 2181:2181
    - 2182:2182
    - 8088:8080
    networks:
    clickhouse-network:
    ipv4_address: 172.23.0.10
    clickhouse1:
    hostname: clickhouse-main-shard01
    container_name: clickhouse-main-shard01
    image: yandex/clickhouse-server:21.8.8
    volumes:
    - ./data/clickhouse1:/var/lib/clickhouse # persist data outside of container
    - ./log/clickhouse1:/var/log/clickhouse-server # log
    - ./config/config.xml:/etc/clickhouse-server/config.xml # config
    - ./config/metrika.xml:/etc/clickhouse-server/metrika.xml # config replacements
    - ./config/users.xml:/etc/clickhouse-server/users.xml # users
    - ./config/macros/clickhouse1-macros.xml:/etc/clickhouse-server/config.d/macros.xml # macros
    ports:
    - 9000:9000 # native tcp/ip
    - 8123:8123 # http
    cap_add:
    - IPC_LOCK
    - NET_ADMIN
    networks:
    clickhouse-network:
    ipv4_address: 172.23.0.11
    depends_on:
    - zookeeper
    clickhouse2:
    hostname: clickhouse-main-replica01
    container_name: clickhouse-main-replica01
    image: yandex/clickhouse-server:21.8.8
    volumes:
    - ./data/clickhouse2:/var/lib/clickhouse
    - ./log/clickhouse2:/var/log/clickhouse-server # log
    - ./config/config.xml:/etc/clickhouse-server/config.xml
    - ./config/metrika.xml:/etc/clickhouse-server/metrika.xml
    - ./config/users.xml:/etc/clickhouse-server/users.xml # users
    - ./config/macros/clickhouse2-macros.xml:/etc/clickhouse-server/config.d/macros.xml
    ports:
    - 9001:9000 # native tcp/ip
    - 8124:8123 # http
    cap_add:
    - IPC_LOCK
    - NET_ADMIN
    networks:
    clickhouse-network:
    ipv4_address: 172.23.0.12
    depends_on:
    - zookeeper
    clickhouse3:
    hostname: clickhouse-main-shard02
    container_name: clickhouse-main-shard02
    image: yandex/clickhouse-server:21.8.8
    volumes:
    - ./data/clickhouse3:/var/lib/clickhouse
    - ./log/clickhouse3:/var/log/clickhouse-server # log
    - ./config/config.xml:/etc/clickhouse-server/config.xml
    - ./config/metrika.xml:/etc/clickhouse-server/metrika.xml
    - ./config/users.xml:/etc/clickhouse-server/users.xml # users
    - ./config/macros/clickhouse3-macros.xml:/etc/clickhouse-server/config.d/macros.xml
    ports:
    - 9002:9000 # native tcp/ip
    - 8125:8123 # http
    cap_add:
    - IPC_LOCK
    - NET_ADMIN
    networks:
    clickhouse-network:
    ipv4_address: 172.23.0.13
    depends_on:
    - zookeeper
    clickhouse4:
    hostname: clickhouse-main-replica02
    container_name: clickhouse-main-replica02
    image: yandex/clickhouse-server:21.8.8
    volumes:
    - ./data/clickhouse4:/var/lib/clickhouse
    - ./log/clickhouse4:/var/log/clickhouse-server # log
    - ./config/config.xml:/etc/clickhouse-server/config.xml
    - ./config/metrika.xml:/etc/clickhouse-server/metrika.xml
    - ./config/users.xml:/etc/clickhouse-server/users.xml # users
    - ./config/macros/clickhouse4-macros.xml:/etc/clickhouse-server/config.d/macros.xml
    ports:
    - 9003:9000 # native tcp/ip
    - 8126:8123 # http
    cap_add:
    - IPC_LOCK
    - NET_ADMIN
    networks:
    clickhouse-network:
    ipv4_address: 172.23.0.14
    depends_on:
    - zookeeper

    networks:
    clickhouse-network:
    ipam:
    config:
  • https://t.me/clickhouse_ru
    @rukavkov #237907 01:00 PM, 07 Oct 2021
    - subnet: 172.23.0.0/24

    Запускаешь “кластер” первый раз - все работает. Делаешь docker-compose stop. Потом запускаешь заново - получаю ошибку:

    ClickHouse.Client.ClickHouseServerException (0x000000F2): Code: 242, e.displayText() = DB::Exception: Table is in readonly mode (zookeeper path: /clickhouse/tables/01/search_request_local) (version 21.8.8.29 (official build))

    Еще вот такая ошибка есть zookeeper_exception: Code: 999, e.displayText() = Coordination::Exception: No node, path: /clickhouse/tables/01/search_result_gds_local/log (version 21.8.8.29 (official build))

    Подскажите куда копать???

    Воспроизводится стабильно. Все удаляешь, поднимаешь заново - все работает. Один стоп и все - кластер мертв
  • Я ничего не имею против этого решения, просто хочу прояснить, правильно ли я мыслю)
  • @KevinMort #237909 01:01 PM, 07 Oct 2021
    Мне нужно лить террабайты данных из более 50 источников, и вот думаю, правильный ли способ я выбрал для этого.
    Источник -> kafka -> clickhouse
  • https://t.me/clickhouse_ru
    50 и mergeTree таблиц лучше не делать, надо как-то унифицировать
  • https://t.me/clickhouse_ru
    а где зукипер свои данные хранит?
  • Данные в едином формате, id, data{...}
    в data могут быть любые ключи и значения
  • https://t.me/clickhouse_ru
    Намек понял =) Спасибо
  • https://t.me/clickhouse_ru
    монга? elastic ?
  • @KevinMort #237916 01:07 PM, 07 Oct 2021
    Данные в data это кейсы и события (логи бизнес процессов), столбцов немного, строк очень, связей между таблицами нет
  • @KevinMort #237917 01:08 PM, 07 Oct 2021
    По этим столбцам в таблицах, которые могут быть размером в миллиарды записей, нужно проводить агрегацию
  • Для агрегации же кликхаус идеально подходит?
  • https://t.me/clickhouse_ru
    @irina_zakharovaa #237919 01:11 PM, 07 Oct 2021
    Подкажите, пожалуйста, как из кх забирать данные из vertica?
  • https://t.me/clickhouse_ru
    @melkayalenka #237920 01:12 PM, 07 Oct 2021
    Добрый день, подскажите, пожалуйста, как правильнее выбрать ключ сортировки и primary key для таблицы с движком CollapsingMergeTree, - для более эффективного хранения и поиска? есть много столбцов, ключевыми являются (env, agent, client, id) - расположены от более общих к более распределенным данным. Надо ли делать различные ключи сортировки и primary, или достаточно будет только order by (env, agent, client, id)?
  • При таком раскладе

    CREATE MATERIALIZED VIEW readings_queue_mv TO readings AS
    SELECT
    JSONExtract(j, 'Tuple(id String)') AS id
    FROM readings_queue;

    SELECT * FROM readings;
    CREATE TABLE readings
    (
    `id` String
    ) ENGINE = MergeTree PRIMARY KEY `id` SETTINGS index_granularity = 8192;

    Как это работает, данные из MV не сохраняются в таблицу?
  • @KevinMort #237922 01:13 PM, 07 Oct 2021
    Как тогда раскидать данные из очереди по разным нодам в кластере?
  • https://t.me/clickhouse_ru
    @paulineoskolkoff #237924 01:17 PM, 07 Oct 2021
    Добрый день! Есть таблица с бухг проводками, поля debitAccount, creditAccount, Amount. Подскажите, пожалуйста, можно как-то средствами clickhouse посчитать балансы, не используя join? В обычном sql я понимаю как это сделать, но вдруг у clickhouse есть какая-то крутая штука для этого? Спасибо!
  • https://t.me/clickhouse_ru
    тогда возможно можно все унифицировать и запихать в массивы или map
  • Чтобы структура у всех таблиц была одинаковая?
  • @stopost0 #237927 01:24 PM, 07 Oct 2021
    крутая штука - не хранить бухгалтерские проводки в нетранзакционной БД)))
    А чисто по sql тут тоже самое
    SELECT(
    (SELECT SUM(Amount) FROM acc WHERE CreditAccount=? and date <=? )
    -
    (SELECT SUM(Amount) FROM acc WHERE DebitAccount=? and date <=? )
    )
  • @KevinMort #237928 01:25 PM, 07 Oct 2021
    Вы имеете ввиду прям вот так?
    id и данные в дата с разными значениями и ключами?
    id | data
    005bc2df-5723-48f7-9b53-a94f4bc0d7d7 | []
  • https://t.me/clickhouse_ru
    Спасибо! Про нетранзакционную бд это даа, но я храню для истории и статистики, так сказать)))
    По поводу sql, да, спасибо, так я могу) Но задача посчитать сразу для всех счетов, не передавая их в качестве параметра. Что-то вроде сделал group by по кредиту, потом по дебету, а потом все сложил/вычел через джоин. Но вот хотелось бы без джоина..
  • @StanislavSoms #237930 01:36 PM, 07 Oct 2021
    помогите с clickhouse-copier, при переливе теряет части партиций или целиком, всегда по разному (запускается в контейнерах в количестве 32 штук) со следующей конфигурацией

    <yandex>
    <!-- Configuration of clusters as in an ordinary server config -->
    <remote_servers>
    <!--
    source cluster & destination clusters accept exactly the same
    parameters as parameters for the usual Distributed table
    see https://clickhouse.com/docs/ru/engines/table-engines/special/distributed/
    -->
    <source_cluster>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>source-clickhouse-DC1-1</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    <replica>
    <host>source-clickhouse-DC2-1</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    </shard>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>source-clickhouse-DC1-2</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    <replica>
    <host>source-clickhouse-DC2-2</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    </shard>
    </source_cluster>
    <destination_cluster>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>dest-clickhouse-DC1-1</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    <replica>
    <host>dest-clickhouse-DC2-1</host>
    <port>9000</port>
    <user>clickhouse_copier</user>
    <password>***</password>
    </replica>
    </shard>
    </destination_cluster>
    </remote_servers>

    <!-- How many simultaneously active workers are possible. If you run more workers superfluous workers will sleep. -->
    <max_workers>32</max_workers>

    <!-- Setting used to fetch (pull) data from source cluster tables -->
    <settings_pull>
    <readonly>1</readonly>
    </settings_pull>

    <!-- Setting used to insert (push) data to destination cluster tables -->
    <settings_push>
    <readonly>0</readonly>
    </settings_push>

    <!-- Common setting for fetch (pull) and insert (push) operations. Also, copier process context uses it.
    They are overlaid by <settings_pull/> and <settings_push/> respectively. -->
    <settings>
    <connect_timeout>3</connect_timeout>
    <insert_distributed_sync>1</insert_distributed_sync>
    <replication_alter_partitions_sync>1</replication_alter_partitions_sync>
    </settings>
  • @StanislavSoms #237931 01:36 PM, 07 Oct 2021
    <tables>
    <my_table_local>
    <cluster_pull>source_cluster</cluster_pull>
    <database_pull>my_database</database_pull>
    <table_pull>my_table_local</table_pull>
    <cluster_push>destination_cluster</cluster_push>
    <database_push>my_database</database_push>
    <table_push>my_table_local</table_push>
    <number_of_splits>16</number_of_splits>
    <engine>ENGINE = ReplicatedReplacingMergeTree('/clickhouse/{shard}/my_database/tables/my_table_local_3', '{replica}') PARTITION BY date ORDER BY (user_id, date) SETTINGS index_granularity = 8192, enable_mixed_granularity_parts = 1</engine>
    <sharding_key>sipHash64(user_id)</sharding_key>
    <enabled_partitions>
    <partition>'2021-09-12'</partition>
    <partition>'2021-09-14'</partition>
    <partition>'2021-09-16'</partition>
    <partition>'2021-09-17'</partition>
    <partition>'2021-09-18'</partition>
    <partition>'2021-09-19'</partition>
    <partition>'2021-09-20'</partition>
    <partition>'2021-09-21'</partition>
    <partition>'2021-09-22'</partition>
    <partition>'2021-09-23'</partition>
    </enabled_partitions>
    </my_table_local>
    </tables>
    </yandex>
  • @StanislavSoms #237932 01:37 PM, 07 Oct 2021
    при этом очень низкая скорость передаич данных около 150 мегабайт/с
  • @246795625 #237933 01:41 PM, 07 Oct 2021
    Здравствуйте! Существует ли функция в CH по переводу Uint64 в IPv6? Найти такую функцию в документации к СH не удалось, нашел только функция по переводу Uint32 в IPv6
  • @246795625 #237934 01:41 PM, 07 Oct 2021
    прошу прощения, не в IPv6, а в string
  • @246795625 #237935 01:41 PM, 07 Oct 2021
    ipv6 в формате UInt64 в string
  • https://t.me/clickhouse_ru
    @dbalashov #237936 01:42 PM, 07 Oct 2021
    ipv6 в формате UInt64? ipv6 это 128 бит же
  • https://t.me/clickhouse_ru
    @nyatmeat #237938 01:46 PM, 07 Oct 2021
    Всем привет. Вопрос по nested структурам. После создания таблицы можно ли изменять ее? Если да, то насколько дорогим будет изменение структуры на большой таблице?
  • https://t.me/clickhouse_ru
    @nyatmeat #237939 01:46 PM, 07 Oct 2021
    Дорогой имею ввиду по времени
  • https://t.me/clickhouse_ru
    А вы теперь правда в альтинити? К слову раньше вы тоже помогали))
  • https://t.me/clickhouse_ru
    @pnm000 ↶ Reply to #237919 #237941 02:04 PM, 07 Oct 2021
    jdbc | ClickHouse Documentation

    jdbc jdbc(datasource, schema, table) - returns table that is connected via JDBC driver. This table function requires sep

  • @KevinMort #237942 02:26 PM, 07 Oct 2021
    Где можно почитать, какие типы дат поддерживает кликхаус, как конвертировать свой тип даты в нужный?
    Встретил вот такой формат 11/12/2014
  • https://t.me/clickhouse_ru
    parseDateTimeBestEffort
  • Спасибо большое!
  • https://t.me/clickhouse_ru
    да он вроде уже как сто лет в алтинити :)
  • https://t.me/clickhouse_ru
    что-то типа такого:
    SELECT d, sumIf(c, d=b)-sumIf(c, d=a)
    FROM
    (SELECT 'x' as a, 'y' as b, 1 as c
    UNION ALL
    SELECT 'y' as a, 'x' as b, 2 as c) t
    ARRAY JOIN [a,b] as d
    GROUP BY d;
  • https://t.me/clickhouse_ru
    возьмите dockerize и ждите пока zk будет доступен по 2181 порту
    https://github.com/jwilder/dockerize
    GitHub - jwilder/dockerize: Utility to simplify running applications in docker containers

    Utility to simplify running applications in docker containers - GitHub - jwilder/dockerize: Utility to simplify running applications in docker containers

  • @KevinMort #237949 03:13 PM, 07 Oct 2021
    Товарищи!
    Есть такая ситуация, лью через кафку в кликхаус 50 гигов, как узнать, что все данные перелились из моего приложения, есть ли в кликхаусе какое-то оповещение или кафке?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #237948 #237950 03:13 PM, 07 Oct 2021
    ++
  • @fps70 #237952 03:29 PM, 07 Oct 2021
    А по odbc можно кликхаус к кликхаусу приконнектить?
  • можно, но не нужно )
  • @Migandy #237955 04:01 PM, 07 Oct 2021
    Подскажите пожалуйста что с данным скриптом не так?``` CREATE TABLE IF NOT EXISTS my_logs (
    log_text String,
    event_name String,
    eventDate Date
    ) engine = Kafka(‘localhost:9092’, ‘addUsersLog’, ‘slurm’, ‘JSONEachRow’);
  • @Migandy #237956 04:01 PM, 07 Oct 2021
    выдает ошибку
  • @Migandy #237957 04:01 PM, 07 Oct 2021
    message: Syntax error: failed at position 123 ('�') (line 5, col 20): ‘localhost:9092’, ‘addUsersLog’, ‘slurm’, ‘JSONEachRow’);
    . Unrecognized token: '�'
  • https://t.me/clickhouse_ru
    @nikitosiusis #237958 04:05 PM, 07 Oct 2021
    кавычка какая-нить ненастоящая затесалась?
  • @Migandy #237959 04:06 PM, 07 Oct 2021
    да нет вроде
  • https://t.me/clickhouse_ru
    @nikitosiusis #237960 04:07 PM, 07 Oct 2021
    я бы даже сказал что все
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nikitosiusis #237962 04:07 PM, 07 Oct 2021
    красиво, но для кх не подойдет)
  • аа понял
  • https://t.me/clickhouse_ru
    @nikitosiusis #237964 04:11 PM, 07 Oct 2021
    � вот эта штука явно намекает что у тебя что-то юникодное где-то затесалось, где его не ждали
  • @Migandy #237965 04:11 PM, 07 Oct 2021
    кстати как сделать инкрементный тип( как в Postgres SERIAL) ?
  • https://t.me/clickhouse_ru
    Очень круто, спасибо большое!!!
  • @tormew #237968 04:47 PM, 07 Oct 2021
    как внешний словарь подключить?

    unknown dictionary source type: postgresql (version 21.1.2.15 (official build))
  • https://t.me/clickhouse_ru
    Словарь постгрес доступен с 21.3
  • @tormew ↶ Reply to #237969 #237970 04:56 PM, 07 Oct 2021
    спасибо
  • https://t.me/clickhouse_ru
    @trinitroturbotron #237972 05:18 PM, 07 Oct 2021
    Странный вопрос. А CH никогда никем не используется в режиме "куча простых селектов в секунду (1-2K RPS)" (т.е. как высоконагруженная на чтение хранилка)?
  • https://t.me/clickhouse_ru
    эээээээ, ну простите, такое количество данных КХ нормальных сжует, емнип
  • https://t.me/clickhouse_ru
    @critskiy #237974 05:20 PM, 07 Oct 2021
    а что за контекст проблемы?
  • https://t.me/clickhouse_ru
    Вопрос не про количество данных, а про количество отдельных запросов.
  • https://t.me/clickhouse_ru
    @critskiy #237976 05:21 PM, 07 Oct 2021
    а вы полагаете, что не пройдет?
  • https://t.me/clickhouse_ru
    Ничего не полагаю, поэтому спрашиваю.
  • https://t.me/clickhouse_ru
    @critskiy #237978 05:22 PM, 07 Oct 2021
    нууу проведите эксперименты, проверьте, проблем у КХ с таким количнеством запросов вроде нетуть до поры до времени :)
  • https://t.me/clickhouse_ru
    @critskiy #237979 05:22 PM, 07 Oct 2021
    Или посмотрите доклады и статьи)
  • https://t.me/clickhouse_ru
    @Sablast #237980 05:25 PM, 07 Oct 2021
    как то слабо верится в 2к RPS
  • https://t.me/clickhouse_ru
    Очееь простые запросы которые читают мало данных может быть посмотрмтк наши статьи clickhouse in the storm
  • @480131917 #237982 06:07 PM, 07 Oct 2021
    Привет, подскажите есть ли возможность быстро искать текст в clickhouse? Строки до 10 т символов, подойдёт ли накатывание индекса ngrambuf_1? Если да, то как лучше сконфигурировать индекс
  • https://t.me/clickhouse_ru
    Во-первых, индекс, о котором вы упоминаете, это не тот индекс в понимании SQL, а data skipping indexes, это написано у них и в документации, и в блоге альтинити.
    Во-вторых, если вы планируете полнотекстовый поиск, то вам необходимо понимать, что вам нужно именно: полнотекстовый движок или все-таки база. Если, например, вам надо хранить логи, а поиск будет не столь частый как предполагает, то полнотекстовый движок вам может и не понадобиться
  • https://t.me/clickhouse_ru
    @critskiy #237984 06:12 PM, 07 Oct 2021
    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
    А Кассандра не?
    Используется кх и так тоже, просто нод надо больше, от 10ти
  • https://t.me/clickhouse_ru
    Ну здесь сам вопрос по себе странный, без примера запросов, которые должны удовлетворять требованию... ХЗ
  • Нужно хранить логи и быстро искать текст, в clickhouse это можно сделать?
  • https://t.me/clickhouse_ru
    В кх есть ишью по full-text search, но на мой взгляд, это не к КХ на данный момент:
    https://github.com/ClickHouse/ClickHouse/issues/19970
    full-text search support · Issue #19970 · ClickHouse/ClickHouse

    Do we have plan to add support for full-text search by integrating lucene, sphinx,or some similar stuffs?

  • https://t.me/clickhouse_ru
    @critskiy #237991 07:00 PM, 07 Oct 2021
    Плюс, у вас еще не особо понятны такие условия как частота поиска по логам и какого типа поисковые запросы ожидаются для них
  • https://t.me/clickhouse_ru
    @critskiy #237992 07:00 PM, 07 Oct 2021
    Вы, конечно, можете почитать и это:
    https://altinity.com/faqs/clickhouse-and-elasticsearch-faqs
    ClickHouse and Elasticsearch FAQs

    Is ClickHouse a good alternative to Elasticsearch? Read our FAQ to see how ClickHouse compares against Elasticsearch in benefits, use cases, query performance, database security, and more.

  • https://t.me/clickhouse_ru
    @critskiy #237993 07:01 PM, 07 Oct 2021
    или еще посмотреть на sphinx или,например, на готовые коробочные решения типа грейлог
  • https://t.me/clickhouse_ru
    @critskiy #237994 07:01 PM, 07 Oct 2021
    Но опять же, дать точный ответ на ваш вопрос - 50/50.
  • https://t.me/clickhouse_ru
    если надо найти текст в логах за период в три часа, то КХ фулсканом это сделает быстро, возможно быстрее эластика,
    если надо найти текст в логах за период год, то КХ будет искать 4 часа.
  • https://t.me/clickhouse_ru
    отправляйте логи сразу и в эластик и в кх, в эластике просто можно хранить чуть-чуть, даже пару часов, за это время можно заалертить например по логам найдя там нужное полнотекстом
  • То есть для полнотекстового поиска можно использовать elasticsearch и хранить в нем текст, либо попробовать настроить ngrambuf на колонку?
  • https://t.me/clickhouse_ru
    @sergeif выше сказал
  • https://t.me/clickhouse_ru
    @critskiy #237999 07:30 PM, 07 Oct 2021
    определитесь с четкими условиями от меня сверху вам совет
  • Условие простое, быстрый поиск по подстроке в тексте
  • https://t.me/clickhouse_ru
    For Searching in Strings | ClickHouse Documentation

    Functions for Searching in Strings The search is case-sensitive by default in all these functions. There are separate va

  • https://t.me/clickhouse_ru
    @critskiy #238002 07:36 PM, 07 Oct 2021
    чекать edge-case через бенчмарки
  • https://t.me/clickhouse_ru
    угнали телегу?
  • https://t.me/clickhouse_ru
    @time_2_work #238006 09:44 PM, 07 Oct 2021
    Пошла жара. Раскоксовка и трейдинг
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #237972 #238007 10:03 PM, 07 Oct 2021
    Забиваем телескопом гвозди или нестандартные способы использования ClickHouse. Александр Зайцев (2018г)

    ClickHouse — open-source DBMS от Яндекса — традиционно используется для аналитики различного рода логов или потоков событий от онлайн-систем. Однако, гибкость ClickHouse позволяет применять его для...

  • @StanislavSoms #238009 11:57 PM, 07 Oct 2021
    кто ни будь сталкивался с ошибкой в работе clickhouse-copier "Cannot assign ALTER PARTITION, because another ALTER PARTITION query was concurrently executed"? Происходит на этапе когда копир собирает данные из временных таблиц в основную, в результате часть данных теряется
  • 08 October 2021 (89 messages)
  • @StanislavSoms #238010 12:25 AM, 08 Oct 2021
    Что можно с этим сделать при работе clickhouse-copier ? DB::Exception: Cannot assign ALTER PARTITION, because another ALTER PARTITION query was concurrently executed. (version 21.3.13.9 (official build))
  • https://t.me/clickhouse_ru
    @mangoat #238011 12:34 AM, 08 Oct 2021
    Кто-то сталкивался с ошибкой?
    2021.10.08 11:33:04.133938 [ 3478 ] {} <Error> noc.cpu.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: Connection refused (nocch02:9001), Stack trace (when copying this message, always include the lines below):

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x126cccbc in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x8eb1999 in /usr/bin/clickhouse
    2. ? @ 0x8afa503 in /usr/bin/clickhouse
    3. DB::Connection::forceConnected(DB::ConnectionTimeouts const&) @ 0xfbf49cb in /usr/bin/clickhouse
    4. DB::ConnectionPool::get(DB::ConnectionTimeouts const&, DB::Settings const*, bool) @ 0x8f77702 in /usr/bin/clickhouse
    5. DB::StorageDistributedDirectoryMonitor::processFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xfa3108f in /usr/bin/clickhouse
    6. DB::StorageDistributedDirectoryMonitor::run() @ 0xfa34060 in /usr/bin/clickhouse
    7. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0xfe92bd2 in /usr/bin/clickhouse
    8. DB::BackgroundSchedulePool::threadFunction() @ 0xfe92ffa in /usr/bin/clickhouse
    9. ? @ 0xfe930ff in /usr/bin/clickhouse
    10. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8eb9fcd in /usr/bin/clickhouse
    11. ? @ 0x8eb867f in /usr/bin/clickhouse
    12. start_thread @ 0x7e25 in /usr/lib64/libpthread-2.17.so
    13. __clone @ 0xfebad in /usr/lib64/libc-2.17.so
    (version 20.8.12.2) ?
    Не могу найти похожих запросов в истории чата.
  • https://t.me/clickhouse_ru
    @mangoat #238012 12:36 AM, 08 Oct 2021
    Может быть проблема с доступом или правами?
  • https://t.me/clickhouse_ru
    @patsevanton #238013 01:11 AM, 08 Oct 2021
    Connection refused (nocch02:9001)
  • https://t.me/clickhouse_ru
    Ага, только это во время старта CH
  • https://t.me/clickhouse_ru
    @mangoat #238015 01:51 AM, 08 Oct 2021
    Т.е. Он не может подключиться сам к себе
  • https://t.me/clickhouse_ru
    DirectoryMonitor это компонент Distributed таблицы который проталкивает инсерты в нижележащую таблицу. Т.е. когда вы делаете инстерт в Distributed таблицу, асинхронные инсерты сохраняются в ее каталоге в виде .bin файлов, DirectoryMonitor постоянно сканирует директории и пытается сделать инсерт в настоящую таблицу, тут он просто попытался подключиться к nocch02:9001 и его отбили, потому что порт 9001 (почему кстати 9001 ? по умолчанию 9000) никто не слушает. Это минорная проблема, DirectoryMonitor просто повторит попытку, до успеха. Если это ошибочный инсерт и его не должно быть можно просто удалить .bin файл из под-каталога noc.cpu / nocch02:9001 /
  • https://t.me/clickhouse_ru
    Спасибо
    Если удалить bin файлы, то инсерты потеряются?
  • https://t.me/clickhouse_ru
    да, если они нужны и лежат в неправильной подпапке их можно переложить, или можно сделать insert select используя Distributed format
    select * from file('/var/lib/clickhouse/data/default/distr_1/default@not_existing:9000/1.bin', 'Distributed'
  • https://t.me/clickhouse_ru
    Отлично
    Спасибо!!
  • https://t.me/clickhouse_ru
    @konnectrl #238020 04:28 AM, 08 Oct 2021
    Есть где то на английском/русском примеры использования bitmap функций ? А то только на китайском находил
  • https://t.me/clickhouse_ru
    @decembrin #238021 05:35 AM, 08 Oct 2021
    Доброго времени суток. Подскажите пожалуйста, движок CollapsingMergeTree если в нем есть записть с sign -1 без пары, при мердже она будет удалена или оставлена?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #238021 #238022 05:40 AM, 08 Oct 2021
    Она останется
  • https://t.me/clickhouse_ru
    Спасибо
  • @1542923331 #238024 06:17 AM, 08 Oct 2021
    Здравствуйте.
    Помогите разобраться с TTL:
    У меня есть таблица с дефолтной политикой хранения и один диск / волум
    В таблице уже есть данные
    Теперь я хочу сделать так чтобы данные за последний месяц у меня хранились в горячем хранилище, остальные данные были в холодном
    Я добавил в конфиге новую политику хранения с двумя новыми дисками, то есть теперь у меня есть

    storage_policy: default
    volume: default

    storage_policy: hot_and_cold
    volume: hot_volume, cold_volume

    Можно ли изменить существующую таблицу так, чтобы она использовала новую политику хранения и при этом оставить данные?
    И еще вопрос, можно ли использовать диск с дефолтной политики хранения как холодное хранилище (то есть один и тот же диск будут использовать обе политики хранения)?
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/sql-reference/statements/alter/setting/
    ALTER TABLE db.table MODIFY SETTINGS storage_policy='hot_and_cold';
    SETTING | ClickHouse Documentation

    Table Settings Manipulations There is a set of queries to change table settings. You can modify settings or reset them t

  • @murzilko68 #238027 07:38 AM, 08 Oct 2021
    Добрый день! Возможно ли в CH реализовать сортировку выдачи с учетом группировки? Т.е. использую group by with rollup, получаю итоги по коллекции измерений, хочу отсортировать результат по суммируемому полю, но хочу, чтобы результат сортировался с учетом уже сгруппированных значений.
  • https://t.me/clickhouse_ru
    @sprintweb #238029 07:54 AM, 08 Oct 2021
    Добрый день!
    Простой вопрос у меня...
    Если использовать тип String вместо Uuid - будет ли просадка в производительности во время запросов?
  • https://t.me/clickhouse_ru
    @flamefork #238031 08:09 AM, 08 Oct 2021
    Подскажите плз, есть ли возможность CTE рассчитать один раз, а и использовать несколько раз в рамках одного запроса?

    Сейчас у нас есть такой примерно запрос:

    with some_ids as (select blah blah)
    select something where something in some_ids
    union all
    select something else where something in some_ids
    ...
    union all
    select something else where something in some_ids

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

    Вариант, котороый вижу — использовать вместо CTE временную таблицу. Оно работает, но может быть можно проще/чище решить ту же задачу?
  • https://t.me/clickhouse_ru
    вроде CTE в CH в настоящее время не матереализуется. То есть будет считаться каждый раз заново. Лучше создать временную таблицу.
  • https://t.me/clickhouse_ru
    @ptylopsis #238033 08:21 AM, 08 Oct 2021
    Добрый день, можно ли как-то в лайв режиме посмотреть пишутся ли какие-то данные в CH? Хочу понять есть ли какие-то ещё источники данных, кроме известных мне, которые я приостановил
  • select * from system.processes;
  • https://t.me/clickhouse_ru
    @ajIeks #238035 08:33 AM, 08 Oct 2021
    Привет всем, а как можно запустить инст клика, если после рестарта сыпыт кучу ошибок

    Empty part 20190713_0_0_0_1 is not created instead of lost part because there are no parts in partition 20190713 (it's empty), resolve this manually using DROP PARTITION.

    И в конце прилетает

    Application: DB::Exception: Suspiciously many (312) broken parts to remove.

    Есть ли save mode?
  • спасибо за ответ, возможно подскажете в чем дело:
    если я указываю SETTING storage_policy='hot_and_cold' при создании таблицы, то все ок
    но когда пытаюсь изменить для существующей:
    ALTER TABLE test_db.test_tb MODIFY SETTING storage_policy='hot_and_cold';
    получаю следующее:
    DB::Exception: New storage policy default shall contain volumes of old one (version 21.6.3.14 (official build))

    почему ругает default если я пытаюсь поменять на 'hot_and_cold'?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #238035 #238038 09:08 AM, 08 Oct 2021
    в продолжении вопроса, как удалить сбойные партиции без клика 😕? не могу найти где они хранятся
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/blob/525999145e794c053669e2ed25730d768a7b159c/src/Disks/StoragePolicy.cpp#L273-L282

    вот тут логика ошибки

    вы слишком аггрессивно переименованиями volume занялись
    там либо диска нет либо volume
    ClickHouse/StoragePolicy.cpp at 525999145e794c053669e2ed25730d768a7b159c · 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
    /var/lib/clickhouse/data/db/table
  • @artem_longtraveller #238044 09:21 AM, 08 Oct 2021
    Всем привет. Подскажите плз как задать фильтр выбирающий даты между началом месяца и текущим днем?
    Прописываю FTDAt >= toStartOfMonth and FTDAt <= toDate(now())

    Запрос не проходит
  • https://t.me/clickhouse_ru
    toStartOfMonth(now())
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #238043 #238046 09:21 AM, 08 Oct 2021
    там их как раз и не было ) на то и ругался, нашел как завести через flags
  • https://t.me/clickhouse_ru
    @ajIeks #238047 09:23 AM, 08 Oct 2021
    называется подключили HDFS как volume )
  • Спасибо
  • https://t.me/clickhouse_ru
    @kislik1 #238050 10:10 AM, 08 Oct 2021
    Привет
    А что означает сообщение от CH, когда я хочу выполнить INSERT в реплицируемую таблицу:
    ode: 242. DB::Exception: Table is in readonly mode (zookeeper path: /clickhouse/tables/01/default/test_03). (TABLE_IS_READ_ONLY) (version 21.9.4.35 (official build))
    Read only это по отношению к таблице или к zookeeper?
    Вижу в zookeeper что директория появилась, после создания самой таблицы
    ls /clickhouse/tables/01/default/test_03
    [alter_partition_version, block_numbers, blocks, columns, leader_election, log, metadata, mutations, nonincrement_block_numbers, part_moves_shard, pinned_part_uuids, quorum, replicas, temp, zero_copy_hdfs, zero_copy_s3]
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #238050 #238051 10:13 AM, 08 Oct 2021
    это значит что репликация не работает, и не может подключиться к zookeeper либо таблица повреждена
  • https://t.me/clickhouse_ru
    @kislik1 #238052 10:14 AM, 08 Oct 2021
    Т.е. это возможно если допустим одна из нод в реплике не может подключится к zookeeper?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #238050 #238053 10:14 AM, 08 Oct 2021
    Метаданных в ЗК может не быть
  • https://t.me/clickhouse_ru
    @solard #238054 10:14 AM, 08 Oct 2021
    Да
  • https://t.me/clickhouse_ru
    @solard #238055 10:14 AM, 08 Oct 2021
    Одна из причин
  • https://t.me/clickhouse_ru
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    @kislik1 #238057 10:15 AM, 08 Oct 2021
    А как обычно такие вещи можно отследить допустим через логи? Нужно выставлять уровень логирования в CH?
  • https://t.me/clickhouse_ru
    Хм, понял, не туда смотрел, логи из коробки есть. Спасибо.
  • https://t.me/clickhouse_ru
    метрика есть называется ReadOnlyReplica
  • https://t.me/clickhouse_ru
    см. system.metrics
    и встроенный prometheus enpoint
  • https://t.me/clickhouse_ru
    @kislik1 #238062 10:27 AM, 08 Oct 2021
    О, спасибо! То что надо.
  • https://t.me/clickhouse_ru
    @mrpavelk #238064 01:24 PM, 08 Oct 2021
    Всем привет, есть ли разумное объяснение этой дичи?
  • https://t.me/clickhouse_ru
    @mrpavelk #238065 01:24 PM, 08 Oct 2021
    select arrayStringConcat(t1.arrOfShit, ';') as y from (SELECT arrayFilter(x->x is not null, ['a', 'b', null]) as arrOfShit) t1
  • https://t.me/clickhouse_ru
    @mrpavelk #238066 01:24 PM, 08 Oct 2021
    SQL Error [43]: ClickHouse exception, code: 43, host: 127.0.0.1, port: 36011; Code: 43, e.displayText() = DB::Exception: First argument for function arrayStringConcat must be array of strings.: While processing arrayStringConcat(arrOfShit, ';') AS y (version 21.8.4.51 (official build))
  • https://t.me/clickhouse_ru
    @mrpavelk #238068 01:26 PM, 08 Oct 2021
    У нас очевидно что массив строк выходит
  • https://t.me/clickhouse_ru
    А не nullable(string)?
  • https://t.me/clickhouse_ru
    @mrpavelk #238070 01:32 PM, 08 Oct 2021
    Фильтр же убирает null
  • https://t.me/clickhouse_ru
    Я не знаю, я гадаю судя по ошибке.
    Фильтр убирает, но тип может и не менять
  • https://t.me/clickhouse_ru
    @mrpavelk #238072 01:34 PM, 08 Oct 2021
    Ну это же маразматично, хочешь убрать null и сджойнить, а получаешь какие типозависимые ошибки
  • https://t.me/clickhouse_ru
    SELECT toTypeName(arrayFilter(x->x is not null, ['a', 'b', null]))

    Array(Nullable(String))
  • https://t.me/clickhouse_ru
    Вы хотите, что бы arrayFilter особым образом обрабатывал условие is not null.
    По мне, вот это странно.
    И то, что в зависимости от условия она возвращает разные типы
  • https://t.me/clickhouse_ru
    @mrpavelk #238075 01:40 PM, 08 Oct 2021
    Ну arrayFilter как раз таки работает как надо, и dbeaver отображает колонку как array(string)
  • https://t.me/clickhouse_ru
    @s1nshine #238076 01:43 PM, 08 Oct 2021
    привет!
    кто-нибудь знает, почему деление на 0 не преобразуется в Infinity?
  • https://t.me/clickhouse_ru
    а какого типа у вас f?
  • https://t.me/clickhouse_ru
    хз что там показывает dbeaver и почему, но выше вам уже написали, что запрос:
    SELECT toTypeName(arrayFilter(x->x is not null, ['a', 'b', null]))
    возвращает Array(Nullable(String)).
    по крайней мере на версии 21.3
  • https://t.me/clickhouse_ru
    float64
  • https://t.me/clickhouse_ru
    А в array(string) переделать возможно как-то?
  • @Migandy #238081 02:14 PM, 08 Oct 2021
    {eb52deef-f288-4f16-a6b6-082f0e22e4b7} <Warning> StorageKafka (my_logs): Can't get assignment. Will keep trying. Что делать если такая ошибка в clickhouse при попытке подключиться к kafka
  • https://t.me/clickhouse_ru
    конечно, например, с помощью CAST
    SELECT toTypeName(CAST(arrayFilter(x->x is not null, ['a', 'b', null]), 'Array(String)'));
  • https://t.me/clickhouse_ru
    можно поиском по чату, такие вопросы уже были
  • https://t.me/clickhouse_ru
    @sadko4u #238085 02:21 PM, 08 Oct 2021
    Всем привет!

    Возможно, нубский вопрос, но что я сделал не таки почему движок БД не завёлся?
    CREATE DATABASE psql_files2
    ENGINE = PostgreSQL('10.54.197.137:5433', 'postgres', 'test', 'test', public)

    Received exception from server (version 18.16.1):
    Code: 336. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Unknown database engine:
    ENGINE = PostgreSQL('10.54.197.137:5433', 'postgres', 'test', 'test', public).
  • https://t.me/clickhouse_ru
    старая версия кликхауса?
  • https://t.me/clickhouse_ru
    Есть информация, с какой версии ClickHouse поддерживается движок PostgreSQL?
  • https://t.me/clickhouse_ru
    нету. обновите кликхаус )
  • а ответа на них не было
  • @sergey_alaev #238091 02:45 PM, 08 Oct 2021
    Можете подсказать по https://clickhouse.com/docs/en/interfaces/http/#response-buffering ?
    Что это за ошибки такие, которые пишутся в конец ответа?
    HTTP Interface | ClickHouse Documentation

    HTTP Interface The HTTP interface lets you use ClickHouse on any platform from any programming language. We use it for w

  • https://t.me/clickhouse_ru
    были ответы. вы что-нибудь из них пробовали?
  • @Migandy #238093 02:48 PM, 08 Oct 2021
    и смотрел там ничего нет
  • https://t.me/clickhouse_ru
    Denny Crane [Starship Captain at Altinity (NB,Canada)] in ClickHouse не тормозит

    а рестарт КХ был? Кажется для <yandex><kafka> нужен рестарт

  • @Migandy #238095 02:50 PM, 08 Oct 2021
    я весь docker-compose почистил
  • @Migandy #238096 02:50 PM, 08 Oct 2021
    ой
  • https://t.me/clickhouse_ru
    можно чуть подробнее?
  • По ссылке написано, что некоторые ошибки в кликхаусе определяются уже после того, как были посланы HTTP заголовки
  • https://t.me/clickhouse_ru
    @edyya #238099 02:57 PM, 08 Oct 2021
    Коллеги, привет!

    Подскажите, пожалуйста, какой правильный конфиг для кафки при авторизации SCRAM-SHA-512?

    При таком конфиге :

    <kafka_topic_name>
    <sasl_mechanism>SCRAM-SHA-512</sasl_mechanism>
    <security_protocol>SASL_PLAINTEXT</security_protocol>
    <sasl_username>user</sasl_username>
    <sasl_password>password</sasl_password>
    </kafka_topic_name>


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

    2021.10.06 17:45:14.047832 [ 19355 ] {} <Error> StorageKafka (topic_name): [rdk:FAIL] [thrd:sasl_plaintext://host.ru:9093/bootstrap]: sasl_plaintext://host.ru:9093/bootstrap: SASL PLAIN mechanism handshake failed: Broker: Unsupported SASL mechanism: broker's supported mechanisms: SCRAM-SHA-512 (after 301ms in state AUTH_HANDSHAKE, 4 identical error(s) suppressed)
    2021.10.06 17:45:14.047910 [ 19355 ] {} <Error> StorageKafka (topic_name): [rdk:ERROR] [thrd:sasl_plaintext://host.ru:9093/bootstrap]: 3/3 brokers are down
  • https://t.me/clickhouse_ru
    например если выставленный таймаут на запрос сработает
  • Не уверен, что это можно полечить частичной буферизацией ответа
  • решил проблему установив offsets.topic.replication.factor=1 в kafka
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #238104 03:05 PM, 08 Oct 2021
    всем добра!

    system.query_log возвращает несколько метрик, к которым нигде нет описаний. может, кто-нибудь с чем-то из этого знаком? расскажите в двух словах 🤔

    IOBufferAllocs
    IOBufferAllocBytes
    FunctionExecute
    RWLockAcquiredReadLocks
    SoftPageFaults
    HardPageFaults
  • https://t.me/clickhouse_ru
    @sadko4u #238105 03:21 PM, 08 Oct 2021
    Ещё такой вопрос: пытаюсь выбрать из здоровенной PostgreSQL-таблички 10 первых строчек. Почему выполнение зависает?
    select hash from psql_files2.files limit 10;

    SELECT hash
    FROM psql_files2.files
    LIMIT 10

    Query id: 139bbed9-ff80-4fbe-82c5-36fe7227267a

    → Progress: 10.00 rows, 490.00 B (0.63 rows/s., 30.70 B/s.)

    И всё.
  • @alekspablov #238107 03:35 PM, 08 Oct 2021
    Добрый день, кто-нибудь сталкивался с проблемой, что при insert с русскими буквами, он выдает ошибку Cannot parse expression of type String here: 'tвest' , а если послать только английские буквы, все работает нормально?
  • https://t.me/clickhouse_ru
    >Все операции объединения, аггрегации, сортировки, условия IN [ array ] и ограничения LIMIT выполняются на стороне ClickHouse только после того, как запрос к PostgreSQL закончился.
    https://clickhouse.com/docs/ru/engines/table-engines/integrations/postgresql/
    PostgreSQL | Документация ClickHouse

    PostgreSQL Движок PostgreSQL позволяет выполнять запросы SELECT и INSERT для таблиц на удаленном сервере PostgreSQL. Соз

  • https://t.me/clickhouse_ru
    Ох, не увидел. Спасибо.
  • @V_0o_V #238110 04:30 PM, 08 Oct 2021
    Какими конфигурационными параметрами надо приправить блюдо из clickhouse и liquidbase, чтобы при запекании в кластере из одного шарда и двух реплик стабильно получать актуальную структуру БД?
    Перебрал уже кучу параметров которые кажутся похожими на то что нужно:
    mutations_sync = 2, replication_alter_partitions_sync=2, distributed_ddl_task_timeout= -1, database_atomic_wait_for_drop_and_detach_synchronously = 1, load_balancing=in_order
    Но всеравно через раз накат падает на каком нибудь ddl
  • @vlad_snap #238112 05:36 PM, 08 Oct 2021
    Подскажите плиз, можно ли с помощью clickhouse-copier перекинуть данные в кластер, где таблицы немного отличаются (убрал nullable).
    Так же какую-то обработку данных провернуть (типо toUpper) перед вставкой в место назначения.
    Перерыл инет, не нашел.

    Как это еще можно провернуть, не написав свой "clickhouse-copier" ?
    Либо таки привести старую таблицу в соответствие с новой (около 100гб данных)?
  • https://t.me/clickhouse_ru
    Потому что в самом постгресе обрабатываются только простые операторы типа =,>,< а все остальное на стороне КХ в том числе и лимиты
  • @Funky_Byte #238116 07:07 PM, 08 Oct 2021
    Всем привет, подскажите пожалуйста, как можно отключить OPTIMIZE DEDUPLICATE во время выполнения переноса clickhouse-copier'ом ?
    Версия сервера: 20.6.10.2
    На самой свежей есть: optimize_on_insert = 0 и если сделать select count() from db.table то данные совпадают.
  • 09 October 2021 (27 messages)
  • https://t.me/clickhouse_ru
    @s333kr #238117 03:54 AM, 09 Oct 2021
    Есть ли уже книги или учебные пособия по ClickHouse?
  • https://t.me/clickhouse_ru
    Те что есть в основном пересказ документации
  • https://t.me/clickhouse_ru
    @s333kr ↶ Reply to #238118 #238119 04:20 AM, 09 Oct 2021
    Понятно, спасибо.
  • https://t.me/clickhouse_ru
    Добрый день, получилось разрешить? аналогичная проблема только с другим форматом
  • https://t.me/clickhouse_ru
    Попробуйте новый клиент, возможно в вашей версии не было протобафа
  • https://t.me/clickhouse_ru
    Аналогично
  • https://t.me/clickhouse_ru
    Попробуйте выполнить просто select без создания матвьюхи. Он наверно ничего не вернёт потому что там where кривой или в источнике нет данных.
  • https://t.me/clickhouse_ru
    Select? И много там строк?
  • https://t.me/clickhouse_ru
    Тогда запрос на создание матвьюхи покажите.
  • https://t.me/clickhouse_ru
    Select бы тоже не помешал
  • https://t.me/clickhouse_ru
    Т.е. where вообще нету?
  • https://t.me/clickhouse_ru
    Можно Для теста попробовать поменять SummingMergeTree на MergeTree.
  • https://t.me/clickhouse_ru
    у меня такой запрос не отрабатывает, из доков: SELECT SearchPhrase, count() AS c FROM test.hits GROUP BY SearchPhrase ORDER BY c DESC LIMIT 5 FORMAT Template SETTINGS format_template_resultset = '/some/path/resultset.format', format_template_row = '/some/path/row.format', format_template_rows_between_delimiter = '\n '
  • https://t.me/clickhouse_ru
    @ebukharev #238140 10:57 AM, 09 Oct 2021
    Есть у кого нибудь пример работающего запроса с ... FORMAT Template SETTINGS ... ?
  • https://t.me/clickhouse_ru
    да вы правы, поставил новый клиент проблема исчезла, но появилась другая ошибка) будем курить дальше
  • https://t.me/clickhouse_ru
    Значит фиксите параметры SummingMergeTree. Если есть не числовые параметры, отсутствующие в order by / primary key, то могут быть проблемы.
  • https://t.me/clickhouse_ru
    @ployd #238144 01:51 PM, 09 Oct 2021
    Есть ли возможность выключить Compact представление партов? Такое впечатление, что есть где-то баг с агрегированными запросами в такие парты, хочется проверить
  • https://t.me/clickhouse_ru
    можно, смотрите настройки

    SELECT * FROM system.merge_tree_settings WHERE name LIKE '%wide%';
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #238145 #238146 01:52 PM, 09 Oct 2021
    На лету смогу переключить?
  • https://t.me/clickhouse_ru
    ALTER TABLE xxx ON CLUSTER 'xxx' MODIFY SETTING
  • https://t.me/clickhouse_ru
    @unamedrus #238148 01:53 PM, 09 Oct 2021
    да
  • https://t.me/clickhouse_ru
    @ployd #238149 01:53 PM, 09 Oct 2021
    Спасибо, поиграюсь
  • https://t.me/clickhouse_ru
    Продолжайте дебажить.
  • https://t.me/clickhouse_ru
    @Oleg_Oleg_Oleg #238152 02:10 PM, 09 Oct 2021
    Привет, нужна помощь

    Есть сотня поставщиков данных, которые передают в среднем по 2 млн идентификаторов (int64).

    Есть задачи:
    - хранить последний переданный набор
    - по запросу получать массивы непересекающихся id от двух заданных поставщиков

    С clickhouse знаком поверхностно, нужна помощь в формировании
    - схемы базы данных
    - запросов

    Само-собой не беслпатно 🙂
    Напишите, в лс, плз
  • https://t.me/clickhouse_ru
    @ployd #238153 02:20 PM, 09 Oct 2021
    Хм. А какие могут быть причины, почему buffer таблица не сбрасывает данные до получаса в низлежащую таблицу, хотя max_time стоит 15 секунд?
  • https://t.me/clickhouse_ru
    @ployd #238154 02:24 PM, 09 Oct 2021
    Ага, вижу flush_time добавили какой-то
  • https://t.me/clickhouse_ru
    @Makasinov #238160 09:05 PM, 09 Oct 2021
    Всем привет! После обновления корневых сертификатов и рестарта всего кластера из кликхаусов, один из них стал набирать место. Таблица перестала чиститься по ттл. Кто нибудь сталкивался с такой особенностью? Врятли только обновление серта на это повлияло... Версия 21.6.6.51
  • 10 October 2021 (22 messages)
  • https://t.me/clickhouse_ru
    Summingmgt не хранит строки с 0 в метриках. Курите доку
  • https://t.me/clickhouse_ru
    Скорее всего мерж идет. В новых версиях мерж отменяется при truncate
  • https://t.me/clickhouse_ru
    А начиная с какой версии?
  • @vlad_snap #238164 07:09 AM, 10 Oct 2021
    Привет всем, а clickhouse-copier может копировать не из кластера?
    И нет ли более подробной о нем инфы, помимо документации?
  • https://t.me/clickhouse_ru
    v21.8
    Cancel already running merges in partition on DROP PARTITION and TRUNCATE for ReplicatedMergeTree. Resolves #17151. #25684 (tavplubix
  • https://t.me/clickhouse_ru
    Там используется зукипер, нужен самому копиру. Зачем вам копир? можно без него insert select from remote
  • Данных 170+ гб, в одной из таблиц 9 лярдов записей.
  • @vlad_snap #238169 07:18 AM, 10 Oct 2021
    Или для такого решения плевый обьем данных?) Я бы ещё плюс ко всему хотел немного подправить данные перед вставкой. Получается только это вариант есть? Спасибо
  • https://t.me/clickhouse_ru
    @den_crane #238170 07:21 AM, 10 Oct 2021
    Копир тоже insert select делает. Вот в select и исправите
  • Спасибо 👍 понял, буду делить запросы на пачки тогда.
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    А вы матвью на таблицу делаете?
  • https://t.me/clickhouse_ru
    Каскадно матвью не работает. Точно не знаю почему, но логика подсказывает что в матвью приходят строки из той таблицы в которую строки вставляют. Таким образом в первую матвью данные попадают в результате инсерта, но при этом во вторую не попадают ведь в первую матвью прямого инсерта не происходит
  • https://t.me/clickhouse_ru
    Попробуйте сделать инсерт в первую матвью
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/7195 возможно дело в этом
    Data not insert to MATERIALIZED created from another MATERIALIZED VIEW · Issue #7195 · ClickHouse/ClickHouse

    Describe the bug or unexpected behaviour When I create MATERIALIZED view from another MATERIALIZED view, data not auto insert from the first view to the second view. How to reproduce Create table a...

  • https://t.me/clickhouse_ru
    @den_crane #238182 01:14 PM, 10 Oct 2021
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/summingmergetree/

    Common Rules for Summation
    ...
    If the values were 0 in all of the columns for summation, the row is deleted.
  • https://t.me/clickhouse_ru
    @den_crane #238183 01:15 PM, 10 Oct 2021
    create table S(key Int64, amount Int64) Engine=SummingMergeTree order by key;
    insert into S values(1, 0);
    select * from S;
    0 rows in set. Elapsed: 0.001 sec.

    create table A(key Int64, amount SimpleAggregateFunction(sum, Int64)) Engine=AggregatingMergeTree order by key;
    insert into A values(1, 0);
    select * from A;
    ┌─key─┬─amount─┐
    │ 1 │ 0 │
    └─────┴────────┘
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    вы издеваетесь?
  • https://t.me/clickhouse_ru
    Есть парт 1 и парт 2 в партиции 202109.
    Идет мерж который из них уже 3 часа создает парт 3, и будет идти еще час.
    Запускаем alter table drop partition 202109.
    Ваши предложения как сделать drop partition без его блокировки?
  • https://t.me/clickhouse_ru
    @den_crane #238190 01:32 PM, 10 Oct 2021
    или вот пример база Ordinary

    create table dt(a Int64) Engine=MergeTree order by a;
    insert into a.dt select number from numbers(100000000);
    select a, sleepEachRow(3) from dt format Null;

    запускаем селект
    select a, sleepEachRow(3) from dt format Null;

    в другом окне
    drop table dt; -- зависает на блокировке на 120с

    в третьем окне
    select * from system.tables; -- зависает на блокировке на 120с
  • https://t.me/clickhouse_ru
    я же написал -- отменяет мерж.
  • 11 October 2021 (118 messages)
  • @mAX3773 #238199 05:04 AM, 11 Oct 2021
    Товарищи, подскажите пожалуйста!

    Установил ClickHouse на дохлую виртуалку в облаке за 5$ с 1Гб памяти для разработки, отладки
    рядом крутится еще много чего, но все нормально себя чувствует..
    Ничего с ним не делал, из коробки запущен + пара тестовых строк в одну таблицу.. периодически он что-то начинал делать, вешал систему на некоторое время так что подвисала вообще вся сетевая подсистема, даже подключение по ssh отваливалось и клиенты от моего backend приложения (срабаотывали таймауты в аж 10 секунд)
    Удалил его т.к. эта проблема мешала работе других сервисов, но хотелось бы понять что он делал и можно ли как-то настроить чтобы и на дохлой машине можно было с ним жить
  • @mAX3773 #238200 05:21 AM, 11 Oct 2021
    для эксперимента установил снова по инструкции отсюда https://clickhouse.com/docs/ru/getting-started/install/
    запустил, сразу же полезла нагрузка..
    месяцами там крутится postgresql, redis, tarantool и еще всякого по мелочи, но весь зоопарк ресурсов без дела не потребляет
  • https://t.me/clickhouse_ru
    @vadvmkn #238201 05:36 AM, 11 Oct 2021
    2021.10.11 05:34:51.499304 [ 22 ] {} <Error> TABLE_NAME DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected columns format version: 1\n at end of stream., Stack trace:

    0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x78d5e46]
    1. /usr/bin/clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x22) [0x37ef832]
    2. /usr/bin/clickhouse-server(DB::throwAtAssertionFailed(char const*, DB::ReadBuffer&)+0x17f) [0x7901baf]
    3. /usr/bin/clickhouse-server() [0x7901ca6]
    4. /usr/bin/clickhouse-server(DB::NamesAndTypesList::readText(DB::ReadBuffer&)+0x44) [0x6ac4234]
    5. /usr/bin/clickhouse-server(DB::MergeTreeDataPart::loadColumns(bool)+0x3e1) [0x6f57771]
    6. /usr/bin/clickhouse-server(DB::MergeTreeDataPart::loadColumnsChecksumsIndexes(bool, bool)+0x3d) [0x6f58fdd]

    привет, закончилось место и что-то осталось криво записаное на диске, как найти то что лосмалось и зачинить?
  • https://t.me/clickhouse_ru
    1 Gb
    и при этом у тебя там фоновые процессы идут какие нибудь наверняка
    в том числе связанные с clickhouse

    background_pool_size = 1 поставь
    и
    max_threads= 1

    будет поменьше памяти жрать и в свап не сваливаться

    но тебе скорее всего clickhouse не нужен
  • https://t.me/clickhouse_ru
    какая версия clickhouse?

    в новых версиях вроде довольно подробно показывается где все случилось...
  • https://t.me/clickhouse_ru
    19.8.5 🙁
  • https://t.me/clickhouse_ru
    подскажите плиз, апгрейд через pkg-manager install прокатит? кроме конфигов обычно надо что-то дополнительно присядать ?
  • https://t.me/clickhouse_ru
    А ещё логи посмотри, КХ любит их забивать. По умолчанию настроено логирование на события begin_query & end_query. У меня таким образом место в 0 съело как то. Таблица 1 гб и логи 70гб)
  • https://t.me/clickhouse_ru
    ну прокатить то прокатит, но все равно надо проверять
    слишком старая версия

    я вам последовательно сначала до 20.3 сначала обновиться советую, потом до 21.3 потом 21.8
  • https://t.me/clickhouse_ru
    ну он вроде как в логи и смотрит...

    но да, надо парой строк выше посмотреть, может там есть конркетная таблица...
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238200 #238209 06:15 AM, 11 Oct 2021
    Collect common system metrics (in system.asynchronous_metrics and system.asynchronous_metric_log) on CPU usage, disk usage, memory usage, IO, network, files, load average, CPU frequencies, thermal sensors, EDAC counters, system uptime; also added metrics about the scheduling jitter and the time spent collecting the metrics. It works similar to atop in ClickHouse and allows access to monitoring data even if you have no additional tools installed.
    Можно выключить в конфиге.
  • https://t.me/clickhouse_ru
    @Sablast #238210 08:20 AM, 11 Oct 2021
    подскажите, пожалуйста, как то можно оптимизировать MV с агрегатными состояниями?
    Хочется получить таблицу вида:
    CREATE MATERIALIZED VIEW test_mv
    (`id` String, `created_dttm` AggregateFunction(min, DateTime),
    `event` AggregateFunction(argMin, String, DateTime) )
    но при этом с использованием в PARTITION KEY & ORDER KEY created_dttm? это вообще достижимо или я хочу странного?)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238210 #238211 08:32 AM, 11 Oct 2021
    чего вы хотите добиться делая order by AggregateFunction? Как это должно работать?
    для min лучше применять simpleaggregatefunction.
  • https://t.me/clickhouse_ru
    в голове это выглядит так, что я хочу иметь какую то конструкцию из которой можно максимально быстро доставать записи для которых minMerge(created_dttm) соответствовал today()
    а чем simpleaggregatefunction будет лучше?
  • https://t.me/clickhouse_ru
    @ivolake #238213 08:53 AM, 11 Oct 2021
    Добрый день
    Подскажите пожалуйста, какой формат надо выбрать (и с какими настройками, если необходимо), чтобы положить с помощью curl файл в формате csv в уже созданную таблицу в CH? Разделителем в файле является символ ";"
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/interfaces/formats/#csv скорее всего. Там также описана настройка, которая позволяет разделитель задать.
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    @ivolake #238215 08:58 AM, 11 Oct 2021
    Уже попробовал
    Выдает такую ошибку:
  • https://t.me/clickhouse_ru
    @ivolake #238217 09:07 AM, 11 Oct 2021
    я правильно понял, что ошибка в том, что после неэкранированной точки программа ожидала увидеть формат колонки?
  • https://t.me/clickhouse_ru
    @ivolake #238218 09:11 AM, 11 Oct 2021
    Только странно
    В данных на самом деле там нет точки
  • https://t.me/clickhouse_ru
    вы CSVWithNames используете?
  • https://t.me/clickhouse_ru
    @ivolake #238220 09:12 AM, 11 Oct 2021
    нет
  • https://t.me/clickhouse_ru
    @ivolake #238221 09:12 AM, 11 Oct 2021
    попробую сейчас
  • https://t.me/clickhouse_ru
    @ivolake #238222 09:13 AM, 11 Oct 2021
    попробовал
    ровно такая же ошибка
  • https://t.me/clickhouse_ru
    хранит просто число, не нужно использовать комбинаторы State Merge

    https://kb.altinity.com/altinity-kb-queries-and-syntax/simplestateif-or-ifstate-for-simple-aggregate-functions/
  • https://t.me/clickhouse_ru
    А если включить input_format_allow_errors_num=1,input_format_allow_errors_ratio=0.1
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #238225 09:19 AM, 11 Oct 2021
    Всем привет, вопрос про direct внешний словарь https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#direct

    Что делает кликхауз при запросе данных из такого словаря с условиями либо когда словарь джойнят с таблицей из кликхауса? Он же не выкачивает все данные из внешней базы (например, postgress) для того чтобы потом самостоятельно фильтровать или джойнить?
    Хранение словарей в памяти | Документация ClickHouse

    Хранение словарей в памяти Словари можно размещать в памяти множеством способов. Рекомендуем flat, hashed и complex_key_

  • https://t.me/clickhouse_ru
    возникла какая-то похожая ошибка
  • https://t.me/clickhouse_ru
    @ivolake #238227 09:20 AM, 11 Oct 2021
    Может, я что-то не так в запросе написал?
  • https://t.me/clickhouse_ru
    Этой точки нет во второй строке?
  • https://t.me/clickhouse_ru
    @ivolake #238229 09:24 AM, 11 Oct 2021
    Да, ее тоже нет. Более того, можно заметить, что сейчас программа подняла ошибку раньше по строке, чем в ошибке на первом скрине. Также видно, что и в том, и в этом случае программа застопорилась перед сочетанием символов "NUM" (в первый раз на названии колонки SHIFTNUM, а сейчас на CHECKNUM).
  • https://t.me/clickhouse_ru
    @unamedrus #238230 09:27 AM, 11 Oct 2021
    А в таблице кол-во колонок совпадает?

    echo "a;b;c.\n1;2;3" | clickhouse-local --input-format CSVWithNames -S "a UInt32, b UInt32, c UInt32" --query "SELECT * FROM table" --format_csv_delimiter=";" --input_format_with_names_use_header 0
  • https://t.me/clickhouse_ru
    @ivolake #238231 09:31 AM, 11 Oct 2021
    Да
    Я проверил питоном
    Первый список получен через split первой строки csv-файла по символу ";"
    Второй - из запроса в sql-консоли в веб-интерфейсе ClickHouse, которым я создавал целевую таблицу
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ivolake #238233 09:32 AM, 11 Oct 2021
    разница только в названии одной колонки (так как слово TABLE - зарезервированное)
  • https://t.me/clickhouse_ru
    @unamedrus #238234 09:32 AM, 11 Oct 2021
    input_format_with_names_use_header 0 попробуйте эту настройку
  • https://t.me/clickhouse_ru
    @ivolake #238235 09:32 AM, 11 Oct 2021
    в конце добавить через запятую?
  • https://t.me/clickhouse_ru
    @unamedrus #238237 09:33 AM, 11 Oct 2021
    Да, можно
  • https://t.me/clickhouse_ru
    @MagiaGroz #238238 09:38 AM, 11 Oct 2021
    стоит ли в миграции добавлять материализацию индекса? или лучше один раз применить через консоль
  • https://t.me/clickhouse_ru
    @ivolake #238239 09:39 AM, 11 Oct 2021
    Ошибка
    Я заметил еще одну закономерность
    Чем длиннее строка с запросом, тем короче строка с столбцами. При том точка возникновения ошибки, согласно отладочному сообщению, все три раза была на позиции 91, что навевает некие подозрения
  • https://t.me/clickhouse_ru
    --data-binary а если такое использовать?
  • https://t.me/clickhouse_ru
    @ivolake #238241 09:50 AM, 11 Oct 2021
    это надо вместо -d написать на том же самом месте?
  • https://t.me/clickhouse_ru
    Сделал так
    Та же ошибка
    И мне пришло в голову - скорее всего, запятые, как и пробелы, в url-кодировке выглядят иначе
    И правда
  • https://t.me/clickhouse_ru
    @ivolake #238243 10:01 AM, 11 Oct 2021
    Нет
    Ничего не изменилось
    Обработчик ClickHouse в сообщении ошибки указывает, что на позиции 91 он падает
    В ClickHouse-диалекте SQL случайно не надо экранировать точки с запятой внутри строк?
  • https://t.me/clickhouse_ru
    @ivolake #238244 10:19 AM, 11 Oct 2021
    Я вспомнил, что двойными кавычками в синтаксисе ClickHouse обозначаются названия колонок, а "string literal" надо обозначать одинарными
    Ошибка поменялась)
    Code: 117, e.displayText() = DB::Exception: Expected end of line (version 21.3.17.2 (official build))
  • https://t.me/clickhouse_ru
    @i1smetana #238245 11:30 AM, 11 Oct 2021
    добрый день!
    подскажите, как можно перевести в lowerCase стринги в двумерном массиве?
    пример массива
    ['[gmail.com, 6]','[denwer.ru, 7]']
  • @nahsi_at_tg #238246 11:32 AM, 11 Oct 2021
    Пока ALTER TABLE ... FREEEZE ... работает, в таблицу можно писать или нет? В доках написано что The entire backup process is performed without stopping the server., но непонятно что имеется ввиду под stop. Без остановки процесса? Без каких-либо ограничений на чтение/запись?
  • SELECT ['[gmail.com, 6]','[denwer.ru, 7]'] as arr
    , arrayMap(x -> lower(tuple(x).1), arr) as result
    ;
  • https://t.me/clickhouse_ru
    @i1smetana #238248 11:35 AM, 11 Oct 2021
    спасибо!
  • чуть проще тоже работает
    select arrayMap(x->lower(x),['[GMAIL.com, 6]','[DENWER.ru, 7]']), ['[GMAIL.com, 6]','[DENWER.ru, 7]'];
  • Конечно можно писать и читать
  • Спасибо 👍
  • 👍🏼
  • https://t.me/clickhouse_ru
    @critskiy #238253 01:01 PM, 11 Oct 2021
    Слушайте, а правильно ли я понимаю, что DateTime лучше всего создавать с tz все-таки в большинстве случаев? Просто сталкиваюсь сейчас с проблемой, что написано в ответе по данному issues относительно времени:
    https://github.com/ClickHouse/ClickHouse/issues/24070
    и прихожу к выводу, что timestamp (судя как и по документации), логически хранить с timezone, правильно? или нет?)
    various time values from now() · Issue #24070 · ClickHouse/ClickHouse

    This query returns various values of time (screenshot attached) {code:sql} select now(), toStartOfHour(now()), toHour(now()), toString(now()), toDateTime(now()) {code} Why is the difference between...

  • https://t.me/clickhouse_ru
    нет.

    Надо просто понять что TZ это просто метаданные колонки (и даже не колонки в таблице) , а колонки select-а и insert-а

    JDBC драйвер 100500 раз переделали уже, в будущем JDBC драйвер будет показывать время в TZ колонки селекта а не в TZ jvm.
    но JDBC драйвер на самом деле ничего не показывает, он передает в java в TZ, а java при рендеринге в строку, конвертирует в TZ jvm
  • https://t.me/clickhouse_ru
    даааа, понятна, окей, спасибо, надо подумать
  • https://t.me/clickhouse_ru
    @den_crane #238256 01:11 PM, 11 Oct 2021
    в КХ все значения DateTime лежат в UTC (число секунд от 1970), TZ это просто намек как парсить и рендерить строки.
    дефолтная TZ задается 3 способами, в конфиге, через env переменную TZ, через таймзону сервера (линукс)
  • https://t.me/clickhouse_ru
    @critskiy #238257 01:13 PM, 11 Oct 2021
    Да, это вижу и припоминаю по документации. Спасиб.
  • https://t.me/clickhouse_ru
    @SvPupok #238258 01:14 PM, 11 Oct 2021
    Камрады, а есть какая нить дока по добавлению новой ноды в ch кластер? таблицы не шардированы, если что
  • https://t.me/clickhouse_ru
    в смысле добавления новой реплики?
  • https://t.me/clickhouse_ru
    @SvPupok #238260 01:18 PM, 11 Oct 2021
    да, есть кластер из 2х реплик, стоит задача добавления 3й реплики
  • https://t.me/clickhouse_ru
    устанавливаете КХ, копируете etc/cli... конфиги
    запускаете КХ, берете с существующей реплики create table .... , можно взять в system.tables там есть поле,
    прогоняете все create database, create table
  • https://t.me/clickhouse_ru
    @SvPupok #238262 01:20 PM, 11 Oct 2021
    а данные отреплицируются в фоне?
  • https://t.me/clickhouse_ru
    вы используете Replicated таблицы? Зукипер используется?
  • https://t.me/clickhouse_ru
    @SvPupok #238264 01:21 PM, 11 Oct 2021
    да
  • https://t.me/clickhouse_ru
    отреплицируются в фоне
  • https://t.me/clickhouse_ru
    @AnKochem #238267 01:31 PM, 11 Oct 2021
    Подскажите, пожалуйста, почему
    SELECT * FROM system.mutations where not is_done отдает 100 записей
    а
    select * from system.metrics where metric = 'PartMutation'
    говорит, что 0 ?
  • https://t.me/clickhouse_ru
    @s_ageev #238269 01:46 PM, 11 Oct 2021
    Всем привет!
    Вопрос по занимаемому месту в памяти словарями

    Есть словарь со структурой:
    CREATE DICTIONARY dict (
    `id` UInt64,
    `from` DATE,
    `to` DATE,
    `count` UInt32
    ) PRIMARY KEY ws_id SOURCE(CLICKHOUSE())
    LIFETIME(0)
    LAYOUT(RANGE_HASHED())
    RANGE(MIN from MAX to)

    Фактически, в словаре 3 423 993 записей и он занимает 536871056 байт, а это 512 МБ памяти.

    На мой взгляд, должно быть в 10 раз меньше тк каждая строчка это Uint64 + date + date + uint32 = 8 + 2 + 2 + 4 = 16 байт на 1 строчку.
    3423993 (строчек) * 16 (размер строчки) = 54783888 байт = 52,25 МБ

    Вопрос в том, почему он сожрал 512МБ, что почти в 10 раз больше расчетного?
  • https://t.me/clickhouse_ru
    10 times mem overhead on complex_key_hashed dictionary ( 227 MiB table eats 2.50 GiB) · Issue #2738 · ClickHouse/ClickHouse

    create table test(a Int64, b Int64, s String) Engine=MergeTree partition by tuple() order by b; insert into test select rand64(), number, toString(number) from numbers(10000000); optimize table tes...

  • https://t.me/clickhouse_ru
    вторая метрика совпадает с system.merges
    у вас есть мутации, но они не выполняются, возможно там например синтаксическая ошибка
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    в словаре каждый атрибут в своей хештаблице и сами хештаблицы имеют суровый оверхед.

    есть SPARSE_HASHED https://kb.altinity.com/altinity-kb-dictionaries/altinity-kb-sparse_hashed-vs-hashed/
  • https://t.me/clickhouse_ru
    если к запросу с мутациями добавить
    AND latest_fail_reason = ''
    то результат такой же. То есть мутации не падают. Почему тогда они не выполняются?
  • https://t.me/clickhouse_ru
    может в пуле нет свободных тредов, может еще одна из 49 причин.
    надо смотреть system.merges / mutations / replication_queue / текстовые логи

    а может качается парт с реплики который должен быть мутирован, и не может скачаться
    а может есть парт в ZK , а на диске его нет, он давно потерялся, и мутации его ждут
  • https://t.me/clickhouse_ru
    Спасибо, пойду изучать! )
  • https://t.me/clickhouse_ru
    Я смотрел, на некоторых мутациях количество parts_to_do уменьшается , то есть что-то происходит
  • https://t.me/clickhouse_ru
    @Tiloaria #238278 02:10 PM, 11 Oct 2021
    Подскажите пожалуйста, а как подключить WINDOW, кликхаус не знает это как функцию и не может соответственно выполнить
  • https://t.me/clickhouse_ru
    Кажется, нужен КХ 21.6+ (в версии могу ошибиться, поправьте),
    и включить экспериментальную фичу окон:
    <allow_experimental_window_functions>1</allow_experimental_window_functions>
  • https://t.me/clickhouse_ru
    @m1khal3v #238280 02:33 PM, 11 Oct 2021
    Всем привет! Столкнулся с проблемой хранения Array(UInt64) в качестве аттрибута словаря. Словарь переходит в статус LOADED, но при запросе к нему нода уходит в рестарт. В логах при этом такое:

    Cannot open file /var/lib/clickhouse/store/da9/da9e0f5d-ab6c-48e8-b768-33a16bbb9fea/dictionaries.sql, errno: 2, strerror: No such file or directory,

    Максимальный размер массива который пытаюсь загрузить 166.5к айтемов, средний 3.5к. Пробовал с Flat и Hashed - результат один и тот же. Версия клика - 21.3.13. Как костыль пока приходится писать вместо массива строку с делимитером, так работает. Никто с таким не сталкивался?
  • https://t.me/clickhouse_ru
    обновитесь до 21.8
    https://github.com/ClickHouse/ClickHouse/pull/25119
    Dictionaries support array type by kitaisreal · Pull Request #25119 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Closes #2135. Closes #1640. Closes #25085. Changelog category (leave one): New Feature Changelog entry (a...

  • https://t.me/clickhouse_ru
    А, вот оно что. Спасибо!
  • @milovidov_an #238284 04:08 PM, 11 Oct 2021
    Ура, следующий ClickHouse Meetup совсем скоро!

    19 октября команда разработки аналитической СУБД ClickHouse вновь проведёт онлайн-встречу с сообществом.
    У нас много новостей :)
    Расскажем о больших организационных изменениях в ClickHouse, об UDF in ClickHouse о шифровании хранимых данных в ClickHouse.
    Вы можете заранее прислать вопросы через форму регистрации или задать их в чате во время трансляции. Ссылку на прямой эфир мы отправим вам на почту в день встречи.

    Узнать программу выступлений и зарегистрироваться можно по ссылке: https://events.yandex.ru/events/click-house-19/10/2021?from=tg.
    Участие бесплатное.🙂
    Link

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

  • None
  • @milovidov_an #238286 04:09 PM, 11 Oct 2021
    Онлайн, но как полноценная конференция - запись из студии и т. п.
  • https://t.me/clickhouse_ru
    @ExplosiveJam #238287 04:09 PM, 11 Oct 2021
    Прям на мой др)
  • https://t.me/clickhouse_ru
    @w1n2k ↶ Reply to #238284 #238288 04:09 PM, 11 Oct 2021
    Форма не найдена
    Возможно, вы получили неверную ссылку или форма была удалена.
  • @milovidov_an #238289 04:09 PM, 11 Oct 2021
    Минуту, сейчас поправим.
  • https://t.me/clickhouse_ru
    @w1n2k #238290 04:10 PM, 11 Oct 2021
  • https://t.me/clickhouse_ru
    @alibekam #238291 04:10 PM, 11 Oct 2021
  • https://t.me/clickhouse_ru
    @atutik #238293 04:10 PM, 11 Oct 2021
    уже правят =)
  • @mlmdev ↶ Reply to #238284 #238294 04:11 PM, 11 Oct 2021
    Не действительна форма для регистрации
  • @mlmdev ↶ Reply to #238293 #238295 04:11 PM, 11 Oct 2021
    Благодарю
  • https://t.me/clickhouse_ru
    @Ann_Bocharova #238296 04:15 PM, 11 Oct 2021
    Пофиксили!
    можно регаться!
  • https://t.me/clickhouse_ru
    @irina_zakharovaa #238300 04:24 PM, 11 Oct 2021
    Всем привет! Подскажите, пж, как запустить скрипт с этим куском, выдает ошибку, не понимаю из за чего, скрипт отдельно запускается
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    С флагами -m -n попробуйте запустить
  • https://t.me/clickhouse_ru
    @EKbfh ↶ Reply to #238296 #238304 04:25 PM, 11 Oct 2021
    Передавайте привет разработчику виджета ввода даты рождения
  • https://t.me/clickhouse_ru
    а можно подробнее пожалуйста?)
  • https://t.me/clickhouse_ru
    Откуда запросы идут?
  • https://t.me/clickhouse_ru
    с базы кх через dbeaver
  • https://t.me/clickhouse_ru
    Эта задача есть в беклоге)
    Подниму её приоритет
  • https://t.me/clickhouse_ru
    Про dbeaver не подскажу. Если запросы идут в одной сессии, попробуйте все команды по одной выполнить
  • https://t.me/clickhouse_ru
    по 1 вместе со скриптом тоже на запускает
  • @falsebyte #238312 04:57 PM, 11 Oct 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #238313 b o t 04:57 PM, 11 Oct 2021
    Total messages: 238312
  • @falsebyte #238314 04:57 PM, 11 Oct 2021
    /stop
  • https://t.me/clickhouse_ru
    Валится на первом же запросе?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    @AnKochem #238317 05:13 PM, 11 Oct 2021
    С той же ошибкой?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    Не может быть. Один же запрос посылается. Попробуй убрать точку с запятой что ли)
  • https://t.me/clickhouse_ru
    убирала
  • https://t.me/clickhouse_ru
    dbeaver использует HTTP протокол для работы
    там параметры задаются не через SET а через query stirng

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

    или используйте clickhouse-client для запуска запросов
  • https://t.me/clickhouse_ru
    Можно попробовать параметры в SETTINGS перенести: https://clickhouse.com/docs/en/sql-reference/statements/select/#settings-in-select
    SELECT Query

    SELECT Query SELECT queries perform data retrieval. By default, the requested data is returned to the client, while in c

  • https://t.me/clickhouse_ru
    @den_crane #238327 06:02 PM, 11 Oct 2021
    set можно писать в одну команду (через запятую) set a=5,b=5,c=6;
    через dbeaver конечно можно сделать set но нужен session_id
    и receive_timeout смысла ставить нет (хотя может фиг знает, но в общем он повлияет на distributed запросы, но не на клиента)
  • https://t.me/clickhouse_ru
    @morozovsk #238329 06:40 PM, 11 Oct 2021
    два вопроса:
    1) как проапдейтить одно поле в колонке с json.
    2) как проапдейтить одно поле в колонке с массивом.
  • https://t.me/clickhouse_ru
    ну никак

    https://stackoverflow.com/questions/63287790/set-array-value-at-specific-index-in-clickhouse
    Set array value at specific index in ClickHouse

    Is it possible to update an array at specific index in existing row in ClickHouse db? Something like alter table mytable set arr[3]=8

  • https://t.me/clickhouse_ru
    чёт сложно
  • 12 October 2021 (113 messages)
  • https://t.me/clickhouse_ru
    Здравствуйте. Время МСК?
  • Да.
  • https://t.me/clickhouse_ru
    @altlinux #238338 05:36 AM, 12 Oct 2021
    Доброе утро! Подскажите пожалуйста, не могу найти - где глобально для сервера включить настройку allow_experimental_live_view ?
  • https://t.me/clickhouse_ru
    В конфиге пользователя или в отдельном конфиге в папке config.d
  • https://t.me/clickhouse_ru
    В профиле default почему-то не сработало. Сервер не запускается
  • @1063161973 #238341 07:10 AM, 12 Oct 2021
    Добрый день.
    Можете подсказать возможную причину зависания
    команды DROP TABLE ?
    Незавершенных мутаций и слияний нет, полные права. После рестарта сервера CH команда выполняется успешно.
    Версия сервера: 21.6.4.26
  • @1063161973 #238342 07:11 AM, 12 Oct 2021
    Зависание случается редко, но причина непонятна
  • https://t.me/clickhouse_ru
    SELECT * FROM system.databases WHERE name='your_db' FORMAT Vertical

    если Ordinal, тогда это попытка взятия экслюзивной блокировки, если вставка идет например или чтение...

    если Atomic
    тогда используйте DROP TABLE ... SYNC
  • Спасибо за ответ. База Atomic. Попробую ...SYNC
  • https://t.me/clickhouse_ru
    Всё, разобрался. В документации значение 1/0, а реально в конфиге работает True/False
  • https://t.me/clickhouse_ru
    странно, у меня сработало через 1
  • https://t.me/clickhouse_ru
    Тоже сработало. Пробел был.
  • Да, забыл написать. Сервер КХ один, без реплик и шардов
  • https://t.me/clickhouse_ru
    @z0omal1 #238351 07:35 AM, 12 Oct 2021
    добрый день, коллеги! сразу прошу тапками не кидаться, с КХ работаю впервые. суть такова: планируется использоваться КХ как хранилище метрик графит-мониторинга, в целом всё развернуто и работает, единственный момент, с которым я очевидно накосячил - репликация и шардирование. кластер КХ на данный момент состоит всего из 2 нод с репликацией через зукипер. Задача в том, чтобы при отвале по каким-либо причинам одной из нод вторая обладала полным набором данных. я своими кривыми руками сделал две шарды, в каждой из которых описал в качестве реплик обе ноды кластера (зачем - сам не знаю). и, насколько я понимаю, правильнее было бы использовать один шард с двумя репликами для данной задачи. вопрос в следующем: как не потерять исторические данные и не оставить дублей при переходе на один шард с двумя репликами? заранее спасибо
  • А вы какие таблицы сделали? Пишите через дистрибьютед?
  • https://t.me/clickhouse_ru
    пишу через обычные, а читаю через дистрибьютед
  • https://t.me/clickhouse_ru
    @z0omal1 #238354 07:38 AM, 12 Oct 2021
    таблицы создавал DDL
  • Через обычные это какие?
    можете прислать DDL
  • https://t.me/clickhouse_ru
    CREATE TABLE graphite.graphite_index ON CLUSTER test_cluster_two_shards (`Date` Date, `Level` UInt32, `Path` String, `Version` UInt32) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/{database}/{table}', '{replica}', Version) PARTITION BY toYYYYMM(Date) ORDER BY (Level, Path, Date) SETTINGS index_granularity = 8192;

    CREATE TABLE graphite.graphite_reverse ON CLUSTER test_cluster_two_shards (`Path` String, `Value` Float64, `Time` UInt32, `Date` Date, `Timestamp` UInt32) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/{shard}/{database}/{table}', '{replica}', Date, (Path, Time), 8192, 'graphite_rollup');

    CREATE TABLE graphite.graphite_tagged ON CLUSTER test_cluster_two_shards (`Date` Date, `Tag1` String, `Path` String, `Tags` Array(String), `Version` UInt32, `Deleted` UInt8) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/{database}/{table}', '{replica}', Date, (Tag1, Path, Date), 1024, Version);
  • я, видимо не понимаю, у вас таблицы Replicated
    если таблицы созданы на двух серверах, то данные будут на двух серверах.
  • https://t.me/clickhouse_ru
    ну, мне и нужно, чтобы они были на двух серверах. каждый должен иметь полный набор данных на случай выхода из строя одного из узлов кластера, но мне видится, что я все равно что-то сделал неправильно
  • https://t.me/clickhouse_ru
    @z0omal1 #238359 07:47 AM, 12 Oct 2021
    сейчас еще покажу как я создавал distributed таблицы
  • https://t.me/clickhouse_ru
    @z0omal1 #238360 07:49 AM, 12 Oct 2021
    CREATE TABLE graphite.graphite_index_distributed ON CLUSTER test_cluster_two_shards AS graphite.graphite_index ENGINE = Distributed('test_cluster_two_shards', 'graphite', 'graphite_index');

    CREATE TABLE graphite.graphite_reverse_distributed ON CLUSTER test_cluster_two_shards AS graphite.graphite_reverse ENGINE = Distributed('test_cluster_two_shards', 'graphite', 'graphite_reverse');

    CREATE TABLE graphite.graphite_tagged_distributed ON CLUSTER test_cluster_two_shards AS graphite.graphite_tagged ENGINE = Distributed('test_cluster_two_shards', 'graphite', 'graphite_tagged');
  • так вы прислали 3 разные таблицы, если они есть на обоих серверах, то данные будут идентичны на двух.
    Зачем читать через Distributed если данные одинаковы на двух серверах?
    вам достаточно читать из одной таблицы одного сервера
  • https://t.me/clickhouse_ru
    а движок БД то какой? Atomic или Ordinary ?
  • https://t.me/clickhouse_ru
    насколько я понял, запрос в distributed таблицы при определенных условиях позволяет распределять выполнение на узлах, обладающих запрашиваемыми данными, что позволяет ускорять выполнение. запросы отправляет Grafana, данных может быть запрошено достаточно много, поэтому если это действительно ускоряет выполнение запросов, я бы хотел это использовать
  • если вы хотите и репликацию и шардирование, то, вероятно вам мало машин, нужно 2х2 сделать минимум
  • https://t.me/clickhouse_ru
    то есть если я правильно понимаю, с моим текущим количеством серверов, мне не нужно использовать шардирование и дистрибьютед таблицы, а просто использовать репликацию, а читать данные из любого узла кластера, да?
  • в зависимости что вам нужнее, если нужна надежность в хранении, то оставляйте репликацию, если есть прирост в скорости выполнения и вам это важно, то используйте шард
    я до сих пор не понял вашу конфигурацию)
    у вас 3 репликейтед таблиц-это означает что вы сделали реплицированные таблицы. у вас 2 машины. Если вы создали обе таблицы на двух машинах - у вас данные должны быть одинаковыми на обоих. И поверх этих двух таблиц у вас дистрибьютед таблица. То есть она читает данные с двух одинаковых таблиц, итого получается, что вы просто читатете 2 раза одни и те же данные, получаете дубликаты.
  • https://t.me/clickhouse_ru
    да, так и есть, я очевидно ошибся в конфигурации. сейчас передо мной стоит дилемма как исправить конфигурацию не потеряв данных. допустим на данный момент я готов отказаться от распределенных запросов и хочу сделать, чтобы у меня был один шард с 2 репликами 3 таблиц, чтобы я мог читать из любого узла кластера. не получится же просто изменить конфигурацию сервера с
    <test_cluster_two_shards>
    <shard>
    <replica>
    <host>server1</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <replica>
    <host>server2</host>
    <port>9000</port>
    </replica>
    </shard>
    </test_cluster_two_shards>
    на
    <test_cluster_two_shards>
    <shard>
    <replica>
    <host>server1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>server2</host>
    <port>9000</port>
    </replica>
    </shard>
    </test_cluster_two_shards>
  • так вам и не нужно вообще использовать remote_servers для двух реплик
    он ходит по interserver_http_port+interserver_http_host+zookeeper
    насколько я помню это достаточно для репликации
  • https://t.me/clickhouse_ru
    спасибо, сейчас полистаю документацию!
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #238373 09:34 AM, 12 Oct 2021
    Всем привет, есть вот такой драйвер github.com/mailru/go-clickhouse для golang, мы пытаемся использовать дополнительный батчер github.com/nikepan/clickhouse-bulk перед сервером кликхауса. Все инсерты попадают в батчер, но в кликхауз не уходят, при этом батчер не пишит ошибок и доп логов для того чтобы можно было бы понять в чем проблема.

    Конфиг батчера

    # enable debug logging
    CLICKHOUSE_BULK_DEBUG=true

    # count of rows for insert.
    CLICKHOUSE_FLUSH_COUNT=100

    # insert interval. milliseconds
    CLICKHOUSE_FLUSH_INTERVAL=100

    # how often cleanup internal tables - e.g. inserts to different temporary tables, or as workaround for query_id etc. milliseconds
    CLICKHOUSE_CLEAN_INTERVAL=0

    CLICKHOUSE_REMOVE_QUERY_ID=true

    # interval for try to send dumps (seconds); -1 to disable
    DUMP_CHECK_INTERVAL=5

    # wait if server in down (seconds)
    CLICKHOUSE_DOWN_TIMEOUT=60

    # wait for server connect (seconds)
    CLICKHOUSE_CONNECT_TIMEOUT=10

    # override TLS serverName for certificate verification (e.g. in cases you share same "cluster" certificate across multiple nodes)
    # CLICKHOUSE_TLS_SERVER_NAME=

    # INSECURE - skip certificate verification at all
    CLICKHOUSE_INSECURE_TLS_SKIP_VERIFY=true

    # comma separated list of servers
    CLICKHOUSE_SERVERS=http://user:password@clickhouse:8123/db

    Пытались менять интервалы и использовать remove query id, но ничего не происходит.

    В сервисе перед батчером сейчас дополнительно копится мелкий батч (старое решение) и потом через tx и prepare отправляется дальше.

    В чем может быть проблема не попадания инсертов в кликхауз даже не знаю, может быть кто то сталкивался с этой проблемой?
  • https://t.me/clickhouse_ru
    Разобрался, вот тут mailru авторы драйвера говорят что совместим с https://github.com/nikepan/clickhouse-bulk, но в реальности их пример https://github.com/mailru/go-clickhouse/tree/v1.7.0#example не работает вместе с clickhouse-bulk.

    РЕШЕНИЕ не использовать Tx и Stmt все инсерты выполнять по одному а не батчем.
  • https://t.me/clickhouse_ru
    @BloodJazMan #238379 10:13 AM, 12 Oct 2021
    ну поскольку там HTTP транспорт, можно пытаться смотреть как оно там по HTTP прилетает и в чем разница на уровне HTTP
  • @ameishutovich #238381 10:50 AM, 12 Oct 2021
    Добрый день!
    мы в команде проводим performance тестирование Clickhouse, чтобы определиться со схемой и дизайном работы приложения с бд. И недавно получили неожиданные для меня результаты сравнения дедупликационных функций - final, limit by, subquery, argMax.
    Для одной широкой таблицы ReplacingMergeTree с 10 миллионами строк, у которой регулярно делается update (insert with duplicated primary key + merge), Final оказался стабильнее и шустрее.
    это расходится с выводами TinyBird вот в этой статье https://guides.tinybird.co/guide/deduplication-strategies
    Может у кого-нибудь будут идеи с чем это могло бы быть связано?
    Deduplication Strategies in ClickHouse · Tinybird Guide

    Deduplicating data on query time, doing upserts on ClickHouse and using Materialized views to do last-point analytics.

  • @glekro #238382 10:58 AM, 12 Oct 2021
    Привет!
    Подскажите, пожалуйста
    Таблица партиционирована по 2м колонкам (2 ключа). Как дропнуть партиции с условием только на один из ключей?
    Например, партиционирование по (A, B), нужно дропать, где B = 0 (при любых A)
  • https://t.me/clickhouse_ru
    >у которой регулярно делается update
    насколько регулярно? сколько раз в минуту?
  • https://t.me/clickhouse_ru
    можно выбрать нужные партиции из system.parts, и дропнуть их
  • не могу сказать сколько в минуту, так как мы создаем thread pool из 10 потоков и создаем длинный список runnable jobs , которые и делают insert/deduplicated read. Каждый поток по мере выполнения работы берет следующую
    Мы пытались сделать тест как можно более натуральным
  • https://t.me/clickhouse_ru
    @NUR_rkupriianov #238386 11:16 AM, 12 Oct 2021
    Всем привет. Может кто сталкивался с такой проблемой.

    Есть foreign table на постгре, которая завязана на таблицу на кликхаусе.
    При попытке селекта из этой таблицы на постгре выбрасывает clickhouse_fdw: unsupported type
    Причем ругается на колонки которые на кх имеют тип decimal(20,5) а на постгре numeric( хотя уже все перепробовал)
    Как такую проблему устранить?
  • https://t.me/clickhouse_ru
    вы же пачками вставляете? хоть приблизительно как часто? можно хоть чутка инфы плиз?
    много вопросов - мало ответов. и у вас и в статье, на которую вы дали ссылку нет никаких цифр. здесь в чатике выше выкладывали такое сравнение. final был медленнее как и в статье, но не сильно. на разных данных и настройках цифры могут поменяться и в обратную сторону.
    мне проще FINAL юзать.
    >Final оказался стабильнее и шустрее.
    а чем argMax оказался менее стабильным? падают запросы?
  • конкретно этот сценарий мы специально сделали как единичные вставки, так как в реальном приложении относительно редко (в среднем раз в пару минут), но юзера редактируют отдельные строки и хотят видеть актуальный результат действий.
    по цифрам если говорить - single table ReplacingMergeTree c 10 миллионами строк и 3 колонки (id, timestamp, custom column).
    Мы создаем 100 батчей с 100_000 строк для фоновой вставки (симулировать живую активную платформу) и еще 100 пар insert/deduplicated read queries и все это стримим в виде runnable jobs (~ 200 in total) для 10 потоков.
    Читаем мы 50_000 строк за раз (с where & primary index), используя Final или другие способы.
    Если так правильно делать расчеты, то по формуле (read batch size)/time : final дает 200-230 rows per sec производительность

    > argMax не падал, скорее ее производительность оказалась более чувствительной к изменениям read batch size или самой таблицы вцелом.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Enchantner #238392 12:20 PM, 12 Oct 2021
    товарищи, у меня наивный вопрос по архитектуре - я правильно понимаю, что CH хорошо в целом подходит для систем потипу event-sourcing, но только когда у нас не так много типов эвентов и мы можем все лить потоком в одну табличку?
  • https://t.me/clickhouse_ru
    @Enchantner #238393 12:21 PM, 12 Oct 2021
    грубо говоря, есть с десяток видов эвентов, мы берем всегда по диапазону таймстемпов и внутри фильтруем конкретные типы и прочие штуки
  • https://t.me/clickhouse_ru
    @Enchantner #238394 12:21 PM, 12 Oct 2021
    я верно рассуждаю?
  • нет, сейчас почитаю, спасибо!
  • https://t.me/clickhouse_ru
    В целом да
  • https://t.me/clickhouse_ru
    @Enchantner #238397 12:22 PM, 12 Oct 2021
    максимально избегаем джойнов, пишем все в широкую таблицу
  • https://t.me/clickhouse_ru
    @Enchantner #238398 12:25 PM, 12 Oct 2021
    а чем лучше заливать поток данных? я слышал, что чтение из кафки нативное у CH работает не очень
  • @vvvjhaq #238399 12:26 PM, 12 Oct 2021
    Добрый день, подскажите как можно подключить словарь из PG. PG в одном докере, CH на другой машине и также в докере. Возможно ли это? Если есть изящнее способы, то подкиньте идею.
  • https://t.me/clickhouse_ru
    В целом допиливается и вполне ок (многие наши клиенты используют Kafka engine)
    Гарантии -> at least once

    Сейчас делают транзакции для кх, тогда и будут атомарные вставки.
  • https://t.me/clickhouse_ru
    А где то можно подробнее про транзакции узнать, что там готовится?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/22086

    https://github.com/ClickHouse/ClickHouse/pull/24258
    [RFC] Limited support for transactions in MergeTree tables · Issue #22086 · ClickHouse/ClickHouse

    Use case Main use cases: Ability to execute multiple INSERTs (maybe into multiple MergeTree tables, including materialized views, #11909) in a single "transaction". All INSERT que...

  • https://t.me/clickhouse_ru
    @dmitry_fomin #238405 01:11 PM, 12 Oct 2021
    подскажите пожалуйста нет ли какого-то решения для интеграции Greenplum и ClickHouse вроде решения от Arenadata https://docs.arenadata.io/adb/adbClickhouse/Configuration.html
  • https://t.me/clickhouse_ru
    не припоминаю, в КХ вроде интеграций нет. Разве что самим придумать как мигрировать данные.
  • можете через ODBC попробовать подключиться
  • https://t.me/clickhouse_ru
    из CH можно можно подключиться к GP через https://clickhouse.com/docs/en/sql-reference/table-functions/postgresql/ но тут вопрос в том что подключение в GP будет идти через мастер (а не напрямую на сегменты) поэтому будет довольно медленно. Думал может кто решал подобную задачу и есть какой-то более быстрый подход :) (судя по всему Arenadata часто решала такие проблемы и запилила свой коннектор, но он часть EE версии)
    postgresql | ClickHouse Documentation

    postgresql Allows SELECT and INSERT queries to be performed on data that is stored on a remote PostgreSQL server. Syntax

  • https://t.me/clickhouse_ru
    @No1zzz #238409 01:29 PM, 12 Oct 2021
    Можно же в кафку сливать, а из неё что хотите и куда угодно
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #238398 #238410 01:30 PM, 12 Oct 2021
    Привет! На свежих версиях работает нормально.
    По меньшей мере со сценарием Kafka > mv > таблица одним полем message и тех поля > mv > основная таблица справляется без нареканий
  • https://t.me/clickhouse_ru
    о, какие люди :) привет
  • https://t.me/clickhouse_ru
    @Enchantner #238412 01:32 PM, 12 Oct 2021
    спасибо, попробую
  • https://t.me/clickhouse_ru
    @edyya #238413 01:32 PM, 12 Oct 2021
    👍
  • https://t.me/clickhouse_ru
    @Diroman #238415 01:54 PM, 12 Oct 2021
    привет, поделитесь опытом, нужна идея для решения
    нужно в несколько запросов выбрать данные из таблицы, но сохранить порядок первого запроса
    объясню, нужно получить 1000 записей, батчами по 100 штук, во время выборки могут появится новые данные что приведет к потере или дублированию при использовании limit/offset
    возможно ли как-то при повторном запросе начать выгрузку опираясь на последнюю запись предыдущей выборки?
    уникальный идентификатор не хочется использовать для сортировки при создании таблицы, так как он сломает сортировку по остальным полям
  • https://t.me/clickhouse_ru
    в users.d. config.d для серверных настроек

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files/
    Server config files

    How to manage server config files in Clickhouse

  • https://t.me/clickhouse_ru
    Спасибо. То что надо.
  • https://t.me/clickhouse_ru
    drop table в базе atomic должен работать моментально, это какой-то баг, у вас КХ который уже end of support. Проверяйте на 21.8 , если воспроизводится то в github

    про sync это чушь собачья
  • https://t.me/clickhouse_ru
    а что со значением макроса shard на обоих серверах?
  • https://t.me/clickhouse_ru
    на одном сервере кластера <shard>01</shard>, на втором <shard>02</shard>
  • https://t.me/clickhouse_ru
    понятно, в общем создаете на сервере с shard 01 временные таблицы без макроса shard

    CREATE TABLE graphite.graphite_index_temp (`Date` Date, `Level` UInt32, `Path` String, `Version` UInt32) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/02/{database}/{table}', '{replica}', Version) PARTITION BY toYYYYMM(Date) ORDER BY (Level, Path, Date) SETTINGS index_granularity = 8192;

    данные с 02 реплицируются на 01 в graphite.graphite_index_temp проверяйте system.replication_queue и тупо select count()
    затем остнавливаете заливку,
    на 01 выполняет alter table graphite.graphite_index_temp freeze
    в /shadow у вас появляются забекапленные парты, перекладывете их в подпапку detached у graphite.graphite_index
    идете в detached выполняете
    let i=1;for f in `ls -1` ; do echo $i $f;((i++)); echo "alter table graphite.graphite_index attach part '$f';"|clickhouse-client ; done

    (тоже самое можно достичь без freeze и перекладывания, сделал alter table attach partition from ....)
    теперь у вас на сервере 01 все данные
    дропаете все таблицы на 02.
    меняете макрос на 02 на 01
    создаете таблицы, дожидаете репликации всех данных
    меняете remote_servers на обоих серверах
    проверяете что все хорошо,
    запускаете заливку
    удаляете временные таблицы (drop table)
  • https://t.me/clickhouse_ru
    спасибо вам большущее
  • https://t.me/clickhouse_ru
    @z0omal1 #238425 02:13 PM, 12 Oct 2021
    буду пробовать
  • https://t.me/clickhouse_ru
    на всякий случай сделайте alter table .... freeze на обоих серверах до начала всего, это бекап который не занимает места почти
  • https://t.me/clickhouse_ru
    and not in (...)
  • https://t.me/clickhouse_ru
    м?
  • https://t.me/clickhouse_ru
    перекладываете первым запросом 1000 записей во временную таблицу engine=Log, достаете оттуда limit offset
  • https://t.me/clickhouse_ru
    @Diroman #238431 02:19 PM, 12 Oct 2021
    а если их в районе 10млн
  • https://t.me/clickhouse_ru
    @Diroman #238432 02:20 PM, 12 Oct 2021
    и они часто запрашиваются
  • https://t.me/clickhouse_ru
    я думаю даже 100млн прокатит.
  • https://t.me/clickhouse_ru
    10млн. с пагинацей, часто ? у вас там гугл?
  • https://t.me/clickhouse_ru
    @Diroman #238435 02:21 PM, 12 Oct 2021
    грубо говоря логи)
  • https://t.me/clickhouse_ru
    грубо говоря вы хотите имплементировать то что нахер не нужно пользователям
  • https://t.me/clickhouse_ru
    @Diroman #238437 02:22 PM, 12 Oct 2021
    довольно грубо
  • https://t.me/clickhouse_ru
    @Diroman #238438 02:22 PM, 12 Oct 2021
    это нужно
  • https://t.me/clickhouse_ru
    @Diroman #238439 02:22 PM, 12 Oct 2021
    вопрос в реализации
  • https://t.me/clickhouse_ru
    @akofi1e #238440 02:23 PM, 12 Oct 2021
    Привет, подскажите, пожалуйста, как запрос лучше составить. У меня есть группировка по двум колонкам и подсчёт среднего в третьей. Однако есть четвёртая колонка (которое я сейчас сделал через функцию groupArray), но по ней нужно оставить запись с минимальными значением. Как оставить запись с минимальный значением из массива в этом запросе?
  • https://t.me/clickhouse_ru
    если это точно 100% нужно, то у вас только один путь:
    Всегда фетчить все записи из запроса на сервер приложений, там складывать в CSV файл и делать пагинацию по этому CSV.
    трастми
  • https://t.me/clickhouse_ru
    @Diroman #238442 02:24 PM, 12 Oct 2021
    благодарю
  • https://t.me/clickhouse_ru
    на самом деле не нужен groupArray и массив. Вы ищите функцию argMin
  • https://t.me/clickhouse_ru
    Да! Похоже на то, спасибо)
  • https://t.me/clickhouse_ru
    final улучшили с тех пор
  • https://t.me/clickhouse_ru
    я попробовал, там ведь возвращает только одно (первое попавщееся) из значений, соответствующее минимальному, а мне нужны все значения с минимальными (одинаковыми и минимальными) val.

    Больше похожих функций не вижу или плохо смотрю?
  • https://t.me/clickhouse_ru
    ну тогда возращайте groupArray.
    groupArray( (value), колонкасострокой) ) x , находите arrayReduce min минимальное значение x.1 , дальше arrayFilter

    если сделаете create table / insert 3 строк с примерами , я могу написать select
  • https://t.me/clickhouse_ru
    Еще можно через оконку, мб будет быстрее чем reduce + filter
  • https://t.me/clickhouse_ru
    @akofi1e #238449 02:59 PM, 12 Oct 2021
    я вот так сделал, насколько адекватное решение ? или не очень понятно по коду?
  • @7699150 #238450 03:08 PM, 12 Oct 2021
    Всем привет!
    Кто-то сталкивался с подобными ошибками в MaterializedMySQL? Как их побороть?

    Code: 10. DB::Exception: Received from my_clickhouse_cluster.com:9000. DB::Exception: Not found column project_id in block: while executing 'INPUT : 4 -> project_id Nullable(Int8) : 4'.
  • upd.
    нашел решение
    в 21.5 это исправили
    https://github.com/ClickHouse/ClickHouse/issues/22432
    Ошибка ClickHouse Code: 10, e.displayText() = DB::Exception: Not found column equals(catalog_id, 1041) in block · Issue #22432 · ClickHouse/ClickHouse

    Имеется Materialized база, данные реплицируюся нормально, в базе данные есть Если выполнить запрос SELECT DISTINCT P.id, P.name, P.catalog_id FROM products P WHERE P.name ILIKE '%Легкие%&am...

  • https://t.me/clickhouse_ru
    на первый взгляд что-то странное написано select min(x) group by x == select x group by x
    avg от avg вообще считать нельзя.
  • @bes626 #238453 03:59 PM, 12 Oct 2021
    Multiple CROSS/COMMA JOIN do not support USING

    вроде тут решили https://github.com/ClickHouse/ClickHouse/issues/873
    или это не тоже самое?
    Why ClickHouse didn't allow more than one JOIN in query? · Issue #873 · ClickHouse/ClickHouse

    Dear All, I'm just moving MySQL to ClickHouse. However, when I wrote my query with more than one JOIN. ClickHouse is unable to execute. The following is my query. select hours.hour, IFNULL(...

  • https://t.me/clickhouse_ru
    вместо USING напишите ON
  • @bes626 ↶ Reply to #238454 #238455 04:30 PM, 12 Oct 2021
    Спасибо! Так меньше магии, конечно, пришлось прописать что к чему стыкуется.
  • @549781487 #238461 09:10 PM, 12 Oct 2021
    Всем привет! Если кто сможет помочь-буду несказанно благодарна. Суть проблемы-есть ВМ тачка с CH, 64 GB RAM, 20 TB SSD, 10 дисков по 2 ТВ. Очень хочется сделать full outer join таблички в 15 лярдов записей саму на себя (не спрашивайте зачем, очень нада 😅 ). Таблица MergeTree order by (col1, col2), размазана по всем 10 дискам, по этим полям col1, col2 и идёт селф джойн. Запрос падает на memory limit exceeded 56 GB. Собственно, не слишком ли много я хочу от CH с такими исходными данными и такими хотелками?) Заранее спасибо за ответ!
  • https://t.me/clickhouse_ru
    Хотите много, лучше пробуйте сделать через GROUP BY
  • https://t.me/clickhouse_ru
    @unamedrus #238463 09:27 PM, 12 Oct 2021
    > Таблица MergeTree order by (col1, col2), размазана по всем 10 дискам, по этим полям col1, col2 и идёт селф джойн.

    https://clickhouse.com/docs/ru/sql-reference/statements/select/group-by/#aggregation-in-order
    GROUP BY | Документация ClickHouse

    Секция GROUP BY Секция GROUP BY переключает SELECT запрос в режим агрегации, который работает следующим образом: Секция

  • Спасибо за ответ! А касательно самой структуры таблицы-может лучше сделать order by col1, а отдельный индекс навесить на col2 (или наоборот)? Как наилучшим образом организовать саму структуру таблицы? То что размазали её по всем 10 дискам-это ок?
  • https://t.me/clickhouse_ru
    @unamedrus #238465 09:30 PM, 12 Oct 2021
    > order by col1, а отдельный индекс навесить на col2 (или наоборот)?

    skip index это не обычный индекс, они нужны для специфичных целей.

    https://kb.altinity.com/altinity-kb-queries-and-syntax/skip-indexes/

    >Как наилучшим образом организовать саму структуру таблицы?

    Зависит от того, что вам нужно

    > о что размазали её по всем 10 дискам-это ок?

    Нормально (но raid был бы побыстрее)
  • https://t.me/clickhouse_ru
    если не хватает памяти, то наверно лучше использовать merge join
    https://clickhouse.com/docs/ru/sql-reference/statements/select/join/#memory-limitations
    JOIN | Документация ClickHouse

    Секция JOIN JOIN создаёт новую таблицу путем объединения столбцов из одной или нескольких таблиц с использованием общих

  • @549781487 #238467 09:38 PM, 12 Oct 2021
    @unamedrus @morozovsk Большое спасибо за советы! Поэкспериментирую
  • https://t.me/clickhouse_ru
    CH не использует индексы и сортированность таблиц для join.
    merge join не закончится никогда, ну либо года 3 займет.

    Дмитрий предлагал преобразовать join -> ( select union all select ) group by , тут тоже может места на диске не хватить, зависит от размера таблички
  • https://t.me/clickhouse_ru
    self join же, даже union ненужен
  • https://t.me/clickhouse_ru
    а ну да, может быть
  • 13 October 2021 (201 messages)
  • Спасибо, а вот это возможно тогда грустные новости. Может мы в принципе ошиблись с выбором СН для наших задач и нам нужно нечто иное.. Ибо мы как раз и надеялись использовать индексы и физику хранения таблиц для своих потребностей. Сейчас опишу, что мы хотим, и возможно Вы вообще скажете, что СН это в принципе не вывезет. У нас планируется хранить порядка 20 ТВ данных истории + ежедневно подливать разумного размера инкремент. Также нужно уметь реализовывать кастомные поисковые запросы к этим данным, которые будет формулировать Бизнес. Например, Бизнес говорит "хочу в разумное время получать результат поискового запроса "col25 like '%text%' and col_dt between <dt1> and <dt2>". Мы пробовали : 1) оракл-не вывозит из-за обьемов; 2) постгрес-ещё хуже чем оракл; 3) эластик-по поиску шикарно, есть проблемы с дозаливкой и особенно переливкой. Плюс тут мы получается используем по сути эластик как хранилище данных, а он концептуально для этого не предназначен. 4) HBase-наоборот по хранению и дозаливке шикарно, но доступ только по ключу, не смогли реализовать кастомные поисковые запросы Бизнеса 5) КликХаус-на стадии исследования 6) есть возможность попробовать Cassandra/Apache Ignite, но после ознакомления с документацией показалось, что данные системы не для наших потребностей.
  • @549781487 #238473 04:24 AM, 13 Oct 2021
    @den_crane Были мысли для поиска использовать или вьюшки, или делать отдельным процессом предрасчет данных и складывать их отдельно, учитывая в физике и индексах особенности поисковых запросов к ним
  • https://t.me/clickhouse_ru
    Oracle для like '%text%' всегда будет делать полное сканирование таблицы. 20TB если их правильно организовать - разбить на партиции создать нужные индексы - все будет работать нормально я думаю.
    Вопрос только в цене.
    Хотя я сам тут к CH активно присматриваюсь, аналитику он считает намного шустрее Oracle.
  • Спасибо! Осталось лишь понять, как правильно организовать структуру данных и сколько это будет стоить) Да, в оракле и постгри получаем фулл скан, а в CH как раз для этих like-запросов есть спец ngram-индексы, их тоже хотим протестировать
  • https://t.me/clickhouse_ru
    Если Like ограничить с одной стороны 'text%' индексы будут использоваться.
  • https://t.me/clickhouse_ru
    Еще у Oracle есть технология http://oraclestart.blogspot.com/2013/08/oracle-text.html

    больше про другие БД писать в этом чате не буду
    Полнотекстовый поиск при помощи Oracle Text

    Oracle Text - это бесплатная компонента, входящая в состав Oracle Database, предназначенная для создания приложений с использованием полноте...

  • Спасибо! С Oracle есть ещё проблемка, что Компания в перспективе хочет вообще максимально возможно слезть с его иглы. И плюс запрос like- это лишь верхушка айсберга, как пример, какие поисковые запросы в будущем захочет Бизнес-крайне сложно предугадать. Поэтому и исследуем ClickHouse)
  • https://t.me/clickhouse_ru
    Тогда наверное комбинация Postgresql и CH
    у Postgresql тоже есть полнотекстовый поиск
    https://eax.me/postgresql-full-text-search/
    Основы полнотекстового поиска в PostgreSQL | Записки программиста

    Полнотекстовый поиск (Full-Text Search, FTS) это когда вы ищите какие-то документы, скажем, товары в интернет-магазине или статьи в блоге, по текстовому запросу

  • https://t.me/clickhouse_ru
    Полнотекстовый поиск - отдельная задача, если она основная, то с точки зрения времени ответа лучше использовать движок для поиска - elasticsearch, sphinx (?). Может оказаться, что надо строить несколько конвееров/бд под более узкие задачи.
    Ps: можно реализовать обратные индексы (руками), но для неселективных запросов оно будет получать огромные списки документов, например для 'like %a% and like %e%'
    +
    https://altinity.com/faqs/clickhouse-and-elasticsearch-faqs
    ClickHouse and Elasticsearch FAQs

    Is ClickHouse a good alternative to Elasticsearch? Read our FAQ to see how ClickHouse compares against Elasticsearch in benefits, use cases, query performance, database security, and more.

  • А если всё-таки полнотекстовый поиск не основная задача, а как дополнение/комбинация к другим типам поисковых запросов-то тогда всё-таки есть смысл остановиться на ClickHouse?
  • https://t.me/clickhouse_ru
    Если у вас всегда есть ограничивающее условие сканирования (по дате например) так, что время сканирования вас устраивает - почему нет
  • https://t.me/clickhouse_ru
    конечно есть смысл. Но вы протестируйте.
    И имейте ввиду пока транзакций в CH нет.
  • На эти грабли уже наступили:)
  • https://t.me/clickhouse_ru
    Вот поэтому может вам 2 БД postgresql и CH держать рядом
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238472 #238487 06:11 AM, 13 Oct 2021
    > 20 ТВ данных ..... запроса "col25 like '%text%' and col_dt between <dt1> and <dt2>"
    если разбить это на 40 партиций по датам то один запрос будет обращаться к 0.5-1Tb данным. Первичный индекс по дате ещё немного ограничит объем, но это все равно очень много для полного перебора через like. skip индексы помогают для специфических данных, где есть большие куски однородных данных, которые можно пропускать, в общем случае - не помогут.

    То что вы делаете, больше всего похоже на full text search, которого тут пока нет. Если это задача про логи, то лучше структурировать свои данные - преобразовать строки в какие-то значимые для вашей задачи типы/структуры. С этим уже можно что-то придумать.

    Для полного FTS можно попробовать сделать обратный индекс (для каждого столбца отдельно) - превратить все слова в хешики и сделать дополнительную табличку с указанием на id строки в огромной табличке. Но тут есть проблема - если результирующих строк на одно слово будет много, то эти списки id будут огромные, и вычитывание их с диска займет много времени. Так что в обратный индекс придется добавить дату, и иметь эти списки за дату. Выбираем id'шники с фильтром по дате, мерджим вместе, идем за строками, но списки все равно могут быть огромными..... Итд - попытка сделать FTS практически с нуля на элементарных примитивах. Можно наверное, но потребует усилий.
  • Огромное спасибо за такой детальный ответ! А разве ngram индексы в CH как раз не для полнотекстового поиска используются? Пока их не щупала, только документацию видела, но на первый взгляд показалось, что что-то похожее на like запросы.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238488 #238490 06:27 AM, 13 Oct 2021
    > Stores a Bloom filter that contains all ngrams from a block of data.
    в КХ мы имеем не обычные индексы, которые как бы должны сразу приводить нас к нужной записи, а skip index, который пропускает данные. Т.е. в вашей задаче все равно будет полный перебор блоков внутри диапазона дат, но для каждого блока можно будет не проверять каждую отдельную строку, а разом проверить несколько строк блока, и побежать дальше. Конечно лучше так, чем просматривать все подряд, но эффект появляется на больших объемах однородных данных, когда в одном блоке ничего не находится. Попробуйте - может у вас как раз такие данные и вы сможете подобрать правильный размер блока (придется разобраться как работает блум фильтр).
  • Посоветовалась с коллегами, всё-таки у нас полнотекстовый поиск будет всего лишь по 2-3 полям, то есть очень маленькая часть от общей постановки задачи. Данные очень хорошо бьются по датам, но это не анализ логов. То есть 40 партиций по дате далеко не предел для наших 20 ТВ данных
  • https://t.me/clickhouse_ru
    Насколько часто будет осуществляться полнотекст поиск по 2 полям? Если это 80% запросов бизнеса - это не в КХ
  • https://t.me/clickhouse_ru
    @critskiy #238493 06:32 AM, 13 Oct 2021
    и то, что говорили вам выше про sphinx с постгрей - одно из решений
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238491 #238495 06:43 AM, 13 Oct 2021
    если всего по 2-3 полям и хорошо разбивается по датам, то это не 20Tb данных.
    - посмотрите сколько занимают нужные колонки:
    select formatReadableSize(data_compressed_bytes) from system.columns
    where table='table' and name in ['column'] ;
    - если один запрос ищет по одной колонке, то это 1 колонка - не надо суммировать.
    - определитесь сколько дней/недель/месяцев вы будете запрашивать за 1 раз.
    Может быть все не так страшно, и обычный like даст удовлетворительный результат, без лишних сложностей.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238491 #238496 06:50 AM, 13 Oct 2021
    > То есть 40 партиций по дате далеко не предел для наших 20 ТВ данных
    40 партиций - это хороший ориентир. Партиция в месяц, два-три года хранения, несколько партов на партицию - вот вы уже на сотнях партов. А больше и не надо - будет тормозить.
  • Сложно сказать, какие запросы и в каком соотношении Бизнес будет использовать. Всё-таки скорее всего меньше 80%, но опять же поведение пользователей тяжело поддаётся предсказанию. И в крайнем случае, мы сможем именно для таких запросов эти поля вынести в эластик
  • Попробуем, спасибо Вам огромное за советы!
  • https://t.me/clickhouse_ru
    @orx4n #238499 07:15 AM, 13 Oct 2021
    Здравствуйте. Как зделать выборку на последние N ое количество данных в каждой группе ?
  • https://t.me/clickhouse_ru
    LIMIT N BY column_name
  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #238500 #238501 07:24 AM, 13 Oct 2021
    Это не то . Ситуация: есть таблица request_logs . внутри есть столбец - domain ( домены дублируются ) . мне нужен напр. 100 строк из этой таблицы с GROUP BY domains . А это выдаёт только 1 домен. Мне нужен максимум 3 домена.
  • https://t.me/clickhouse_ru
    @rukavkov #238502 07:29 AM, 13 Oct 2021
    Доброе утро. Поднял zookeeper из 3 нод. Если удалить таблицу и попытаться создать падает ошибка:

    Code: 253, e.displayText() = DB::Exception: There was an error on [clickhouse-main-replica01.prod.g2s:9000]: Code: 253, e.displayText() = DB::Exception: Replica /clickhouse/tables/01/passenger_segment_local/replicas/clickhouse-main-replica01.prod.g2s already exists (version 21.8.8.29 (official build)) (version 21.8.8.29 (official build))

    На всех 3 нодах зукипера лежит данная таблица. В самом кластере (2 shard + 2 replica) таблица удаляется. Подскажите куда копать. В логах зукипера никакх аномалий не вижу. Не понятно почему не удаляется из зукипера
  • https://t.me/clickhouse_ru
    Движок базы данных Atomic ?
  • https://t.me/clickhouse_ru
    @ikkalinkin #238504 07:44 AM, 13 Oct 2021
    Привет! Подскажите, как называется настройка, которая включает использование распараллеливания запроса черещ семплирование на репликах? Или так по умолчанию работает?
  • https://t.me/clickhouse_ru
    Кажется понял. Спасибо. Надо иногда читать оф доки =) https://clickhouse.com/docs/ru/engines/database-engines/atomic/#drop-detach-table
    Atomic | Документация ClickHouse

    Atomic Поддерживает неблокирующие запросы DROP TABLE и RENAME TABLE и атомарные запросы EXCHANGE TABLES. Движок Atomic и

  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #238499 #238506 07:47 AM, 13 Oct 2021
    .
  • https://t.me/clickhouse_ru
    max_parallel_replicas
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    пока не понятно что на выходе, приведите пожалуйста пример исходных данных и как это должно выглядеть в результате
  • https://t.me/clickhouse_ru
    @orx4n ↶ Reply to #238509 #238510 08:01 AM, 13 Oct 2021
    Точно такой же вопрос но только для КХ
    https://dba.stackexchange.com/questions/84157/how-to-select-top-10-records-from-each-category
    How to select top 10 records from each category

    I have a table with fields Hour, PathId, Duration, Event, CellId, Channel I have 50+ CellId. Each CellId has four PathId (i.e. 0, 1, 2, 3). Each PathId has many Events and Durations. Now I want to

  • https://t.me/clickhouse_ru
    SELECT CellId, PathId, sum(Duration)
    FROM (
    (SELECT
    CellId, PathId, Duration
    FROM table)
    )
    GROUP BY CellId, PathId
    ORDER BY CellId, sum(Duration) DESC
    LIMIT 10 BY CellId
  • https://t.me/clickhouse_ru
    А зачем ты так делаешь? Что мешает сразу сгруппировать
  • https://t.me/clickhouse_ru
    ничего, просто для наглядности)
  • https://t.me/clickhouse_ru
    ну лучше сразу группировать, а то подзапрос дофига памяти отожрет
  • https://t.me/clickhouse_ru
    @Sablast #238515 08:14 AM, 13 Oct 2021
    ребята, не пинайте, я просто это использовал чтобы была наглядно видна структура данных как по ссылке выше)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238514 #238516 08:39 AM, 13 Oct 2021
    а вот тут поподробнее. с чего бы он отожрет? там разве не конвеер запросов строится?
  • https://t.me/clickhouse_ru
    да, там нет ORDER BY и GROUP BY в подзапросе, так что он будет просто стриминговый, вы правы
  • https://t.me/clickhouse_ru
    @724279396 #238518 08:48 AM, 13 Oct 2021
    ребят, привет, как-то можно из 3 столбцов: даты, часа, минуты один столбец с временем?
  • https://t.me/clickhouse_ru
    соединяете как строки, а затем toDateTime()
  • https://t.me/clickhouse_ru
    toDateTime(concat(toString(date),' ',hour,':',minute,':00')
  • https://t.me/clickhouse_ru
    Спасибо, сейчас чекну)
  • https://t.me/clickhouse_ru
    вам только для вывода или где это это в WHERE будет участвовать?
  • https://t.me/clickhouse_ru
    только для вывода
  • https://t.me/clickhouse_ru
    @Sablast #238524 08:52 AM, 13 Oct 2021
    там только возможно еще надо будет условие на количество символов в часах и минутах добавить
  • https://t.me/clickhouse_ru
    @AnKochem #238525 08:52 AM, 13 Oct 2021
    Объясните мне пожалуйста эту настройку

    optimize_skip_unused_shards
    Включает или отключает пропуск неиспользуемых шардов для запросов SELECT , в которых условие ключа шардирования задано в секции WHERE/PREWHERE. Предполагается, что данные распределены с помощью ключа шардирования, в противном случае настройка ничего не делает.

    Я все не могу понять, как она работает, Кликхаус же ничего не знает о шардировании
  • почему не знает, вы же задаёте его в Distributed таблице, если запрос выполняете через неё, то можно скипнуть
  • https://t.me/clickhouse_ru
    почему это не знает
    знает
    когда вы делаете SELECT ... FROM distributed_table
    WHERE field = XXX
    если WHERE содержит условие которое позволяет не инициировать на части шардов подзапрос
    не происходит иницализации подзапроса
    вот и все
  • https://t.me/clickhouse_ru
    Я думал, эта настройка работает только на запись
    Более того, я же могу в шарды напихать все, что угодно через локальные таблицы в обход Distributed
  • https://t.me/clickhouse_ru
    все правильно , поэтому и написано что "предполагается что данные вы вставляли по ключу шардирования"
    а как именно вы их вставляли, Engine=Distributed не знает
  • https://t.me/clickhouse_ru
    @AnKochem #238530 08:57 AM, 13 Oct 2021
    То есть, если я
    1. навставлял руками абы как шардировано в локальные таблицы
    2. в Distributed таблице указал какой-то ключ шардирования
    3. Выставил optimize_skip_unused_shards = 1

    То селекты могут отдавать некорректные результаты?
  • да
  • @simpl1g #238532 08:58 AM, 13 Oct 2021
    это уже вам решать включать или нет настройку
  • https://t.me/clickhouse_ru
    @AnKochem #238533 08:58 AM, 13 Oct 2021
    Понял, спасибо !
  • https://t.me/clickhouse_ru
    А есть документация по которой это можно понять?)
  • https://t.me/clickhouse_ru
    что именно понять?
    что ORDER BY будет сортировать в памяти и сбрасывать промежуточные результаты диск если данных много?
    и что GROUP BY тоже будет группировать в памяти и если много данных то сбрасывать промежуточные результаты на диск?
  • https://t.me/clickhouse_ru
    @ikkalinkin #238536 09:00 AM, 13 Oct 2021
    Понять, что в таком случае подзапрос не будет ухудшать производительность
  • https://t.me/clickhouse_ru
    Блин, он только распарсить однозначные числа не может, только двухзначные
  • https://t.me/clickhouse_ru
    Что подзапрос «стриминговый», и что это за тип подзапросов такой)
  • https://t.me/clickhouse_ru
    Strings | ClickHouse Documentation

    Functions for Working with Strings Note Functions for searching and replacing in strings are described separately. empty

  • https://t.me/clickhouse_ru
    использовать функцию leftPad
  • https://t.me/clickhouse_ru
    Понял, спасибо)
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    аа... ну это скорее общее определение, "стриминговый" значит что можно не выделять память под весь результат, а читать по блочно и отправлять на выход в ковейере

    про это есть немного вот тут
    https://clickhouse.com/docs/en/development/architecture/#block-streams
    Architecture Overview | ClickHouse Documentation

    Overview of ClickHouse Architecture ClickHouse is a true column-oriented DBMS. Data is stored by columns, and during the

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

    SELECT leftPad(toString(33), 2, '0')
  • https://t.me/clickhouse_ru
    Дополняет текущую строку слева пробелами или указанной строкой (несколько раз, если необходимо), пока результирующая строка не достигнет заданной длины. Соответствует MySQL функции LPAD.
  • https://t.me/clickhouse_ru
    Да, на моей версии, она отсутсвует(
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    ну тогда вместо toDateTime
    попробуйте
    parseDateTimeBestEffort
    чтобы оно попробовало преобразовать как положено

    ну или
    еще проще

    SELECT date + INTERVAL hour_field HOUR + INTERVAL minute_field MINUTE
  • вы хотите чтобы в union было и null и date?
  • Нет, мне надо заменить нуловое значение, полученное из запроса этого.
  • так а что не работает?
    SELECT coalesce(toDateOrNull(''), now()) as date_time
    union all
    select toDate('2021-10-13') as date_time
  • какая ошибка?
  • https://t.me/clickhouse_ru
    да типы у него кривые, зачем опять в подзапрос то тащить???
  • https://t.me/clickhouse_ru
    Здорово! Сработало!)
  • прост у меня версия 21+ и все ок)
  • Unknown function todate
    toDate???
  • https://t.me/clickhouse_ru
    можете использовать deepl.com чтобы понять что написано?
  • https://t.me/clickhouse_ru
    @sibbarb #238566 10:23 AM, 13 Oct 2021
    В кликхаус пока не завезли роу намбер??? всем привет
  • https://t.me/clickhouse_ru
    есть rowNumberInAllBlocks
  • https://t.me/clickhouse_ru
    @sibbarb #238568 10:28 AM, 13 Oct 2021
    Мне бы с партициями
  • https://t.me/clickhouse_ru
    Завезли, точно есть в 21.8 оконки и row_number
  • https://t.me/clickhouse_ru
    @hatedabamboo #238570 10:56 AM, 13 Oct 2021
    Привет. Подскажите, пожалуйста,
    CREATE USER IDENTIFIED WITH ldap SERVER server_name
    работает?

    Code: 62. DB::Exception: Received from DB::Exception: Syntax error: failed at position 48 ('LDAP_SERVER'): LDAP_SERVER BY 'ldap_server';. Expected one of: NO_PASSWORD, PLAINTEXT_PASSWORD, end of query, LDAP, SHA256_
    PASSWORD, DOUBLE_SHA1_PASSWORD, KERBEROS, DOUBLE_SHA1_HASH, SHA256_HASH.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238570 #238571 11:28 AM, 13 Oct 2021
    в принципе работает. но какие-то страные грабли там были. у меня сейчас так:
    create user user1 identified with ldap server 'openid' host any default role analyst;
    версия 21.7.4
  • https://t.me/clickhouse_ru
    А версия кх какая?
    21.7.5.29 всё равно жалуется.
    Да даже на последней lts жалуется.
  • https://t.me/clickhouse_ru
    @skirpichenok #238573 11:41 AM, 13 Oct 2021
    Добрый день.

    CREATE TABLE test (
    id UInt64,
    subject_id UInt64
    ) ENGINE = MergeTree()
    ORDER BY (id, subject_id)
    PRIMARY KEY (id)

    select * from test order by id

    select * from test order by id, subject_id

    при сортировке индекс будет использоваться?
  • должен использоваться если включена настройка optimize_read_in_order
  • https://t.me/clickhouse_ru
    Под другой учёткой удалось создать. Вообще неочевидно.
  • https://t.me/clickhouse_ru
    ок попробую. а то я вижу key_condition = unknown
  • https://t.me/clickhouse_ru
    @AnKochem #238577 11:45 AM, 13 Oct 2021
    Скажите пожалуйста, операции alter delete становятся в очередь?
    Такой кейс: Есть большая таблица, туда идут вставки постоянно
    пришел запрос ALTER DELETE, он ушел в фон
    через 5 минут пришел еще один ALTER DELETE (первый еще не завершился)

    Они встанут в очередь? Если нет, то как будут "делить" пересекающиеся парты?
  • https://t.me/clickhouse_ru
    там не очередь там пул background threads, ну в общем да, очередь с несколькими исполнителями

    почитайте документацию вот тут
    https://clickhouse.com/docs/en/sql-reference/statements/alter/#mutations
    ALTER | ClickHouse Documentation

    ALTER Most ALTER TABLE queries modify table settings or data: COLUMN PARTITION DELETE UPDATE ORDER BY INDEX CONSTRAINT T

  • https://t.me/clickhouse_ru
    а как ее установить? в консоле SET optimize_read_in_order = 1 не дает желаемого эффекта.
  • https://t.me/clickhouse_ru
    мутации происходят при слиянии партов
    если несколько мутаций для одного парта, то первой выполняется та, которая первой стартанула...
  • https://t.me/clickhouse_ru
    @AnKochem #238581 11:53 AM, 13 Oct 2021
    Ага, то есть в рамках одного парта - они как бы становятся в очередь?
  • https://t.me/clickhouse_ru
    @AnKochem #238582 11:54 AM, 13 Oct 2021
    Немного не понял документацию
    "For replicated tables, the query just adds instructions for the appropriate actions to ZooKeeper, and the actions themselves are performed as soon as possible. However, the query can wait for these actions to be completed on all the replicas."

    запросы становятся в зукипер и исполняются, как только смогут. Не понимаю тут про параллелизм)
  • https://t.me/clickhouse_ru
    Mutations are totally ordered by their creation order and are applied to each part in that order.

    да, в рамках одного парта типа очередь
  • https://t.me/clickhouse_ru
    когда вы запускаете ALTER TABLE ... DELETE для таблицы которая ReplicatedMergeTreee
    вы ее на одной из реплик запускаете
    и запрос через Zookeeper реплицируется на другие реплики и там отдельно выполняется
  • https://t.me/clickhouse_ru
    @AnKochem #238585 11:56 AM, 13 Oct 2021
    Ага, понял, спасибо
  • https://t.me/clickhouse_ru
    попробовал в users.xml <optimize_read_in_order>1</optimize_read_in_order>
    тоже не работает
  • https://t.me/clickhouse_ru
    node1 :) select name, value from system.settings where name = 'optimize_read_in_order';

    ┌─name───────────────────┬─value─┐
    │ optimize_read_in_order │ 1 │
    └────────────────────────┴───────┘

    но все равно key_condition = unknown на простом примере

    почему для

    select * from test order by id

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

    если вы про то что медленно работает select * , а полей 300 штук, то проблема не в индексе
  • https://t.me/clickhouse_ru
    намекаете что надо много записей для создания индекса?

    просто хотел убедится что он используется на нескольких записях. но увидел в логе - key_condition = unknown
  • https://t.me/clickhouse_ru
    нет. Я не про это вообще.

    добавьте limit 1 и покажите строку со статистикой
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    CREATE TABLE test (
    id UInt64,
    subject_id UInt64
    ) ENGINE = MergeTree()
    ORDER BY (id, subject_id)
    PRIMARY KEY (id);

    insert into test select number, number%101 from numbers(1000000000);

    select * from test order by id limit 1;
    0.025 sec. Processed 1.61 million rows

    select * from test order by id, subject_id limit 1;
    Elapsed: 0.029 sec. Processed 1.61 million rows

    set optimize_read_in_order=0;
    select * from test order by id limit 1;
    Elapsed: 2.788 sec. Processed 1.00 billion rows
  • https://t.me/clickhouse_ru
    это про филтрацию, про where , у вас нету секции where поэтому unknown
  • https://t.me/clickhouse_ru
    ok. тогда буду использовать настройку и сверять до и после.
    спасибо
  • https://t.me/clickhouse_ru
    в реальности, так лучше не делать ORDER BY (id, subject_id) PRIMARY KEY (id)
    не надо в OLAP сортировать по id как первому полю. Это убивает перформанс и увеличивает размер таблицы на диске (это не про КХ, это вообще про OLAP)
  • https://t.me/clickhouse_ru
    @330947330 #238597 01:00 PM, 13 Oct 2021
    Добрый день!
    Может кто подскажет
    У меня не хочет работать http интерфейс. при обращению по порту 8123 говорит "ОК", а при использовании /play выдает вот это:
  • https://t.me/clickhouse_ru
    можно ли как-то сделать так что бы при использовании ReplicatedVersionedCollapsingMergeTree

    первичный ключ ID использовался для схлопывания записей

    а для сортировки использовался другой индекс (который не начинается c primary key ID)
  • https://t.me/clickhouse_ru
    нет. Записи коллапсятся за счет того что мерж идет по сортированным записям.
    Collapsing это побочный продукт мержа. Мержи не сортируют записи, они слияют.
  • https://t.me/clickhouse_ru
    max_parallel_replicas не работает ни у кого, оно не может работать если реплик меньше 10.
    потому что это была кривая идея изначально.
    sampling 0.5 не дает ускорения в 99.999% случаев.
    Максимальный sampling который имеет хоть какой-то смысл это 0.1

    "потому что это была кривая идея изначально."
    никто не пользуется max_parallel_replicas, ее Алексей порывался выпилить раза 3 уже
  • https://t.me/clickhouse_ru
    т.е добиться желаемого возможности нет?

    primary key - ID
    order by (set of other fields)

    это бы улучшило те отчеты которые использую сотировку
  • 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
    поправьте, если путаю
    но можно order by (s1,s2, ..., id) primary key (s1, s2, ...)
    НО ТОЛЬКО если для одного id набор (s1, s2, ...) уникален
  • https://t.me/clickhouse_ru
    в данном случае ключ схлопывания не тот что нужно
  • https://t.me/clickhouse_ru
    вот так будет работать https://github.com/ClickHouse/ClickHouse/issues/26748
    Parallel processing on replicas, reworked. · Issue #26748 · ClickHouse/ClickHouse

    We want to parallelize data processing using multiple replicas of single shard. Every replica should process some split of data. There are the following considerations that makes the task non-trivi...

  • https://t.me/clickhouse_ru
    @ikkalinkin #238609 01:09 PM, 13 Oct 2021
    Спасибо большое!
  • https://t.me/clickhouse_ru
    ок, просто хотел обратить внимание
  • https://t.me/clickhouse_ru
    либо КХ очень старый, либо http хендлер переопределен
  • @nahsi_at_tg #238612 01:11 PM, 13 Oct 2021
    На terraform провайдер никто не натыкался для кликхауса? По типу такого https://github.com/cyrilgdn/terraform-provider-postgresql
    GitHub - cyrilgdn/terraform-provider-postgresql: Terraform PostgreSQL provider

    Terraform PostgreSQL provider. Contribute to cyrilgdn/terraform-provider-postgresql development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    я переделал

    Предполагается, что данные распределены с помощью ключа шардирования, в противном случае запрос выдаст неверный результат.
  • https://t.me/clickhouse_ru
    @alex_spiridonov #238615 01:23 PM, 13 Oct 2021
    всем привет! здесь можно задавать вопросы по настройке clickhouse в контейнере? или есть какое-то более подходящее место?
  • Это лучшее место, где можно задать вопрос о clickhouse)
  • https://t.me/clickhouse_ru
    ну КХ создан совсем не для вашей задачи. Я бы мучал эластик дальше. Мне кажется с ним больше шансов.
  • https://t.me/clickhouse_ru
    @alex_spiridonov #238618 01:32 PM, 13 Oct 2021
    ситуация:
    1. есть настроенный рабочий контейнер с kafka. Сообщения в него пишутся, из него всё читается. с ним работают kafka-manager, zookeeper из скоих контейнеров и десятки программ из локального окружения (windows). Т.е. рабочий вариант
    2. разворачиваю контейнер clickhouse:
    docker run -d --name md-clickhouse -p 8123:8123 --ulimit nofile=262144:262144 -v=e:/.docker-mount/storage/clickhouse:/var/lib/clickhouse -v=e:/dev/_clickhouse/initdb.d:/docker-entrypoint-initdb.d -v=e:/dev/_clickhouse/logs:/var/log/clickhouse-server yandex/clickhouse-server

    в результате на старте контейнера из папки docker-entrypoint-initdb.d исполняется 0001_init.sql.
    Исполняется без ошибок. Clickhouse стартует, всё, что должно создаться, создаётся

    В числе прочего в этом файле создаётся таблица с движком Kafka, типа такой (опущены некоторые столбцы):
    create table auditTrail.SpanBuffer
    (
    async_trace_id UUID,
    type UInt8
    )
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'host.docker.internal:9092',
    kafka_topic_list = 'Topic.Name',
    kafka_group_name = 'Group.Clickhouse.Kafka.Engine',
    kafka_format = 'JSONEachRow',
    kafka_max_block_size = 1048576;

    Но в логах clickhouse видно, что соединиться он пытается по 127.0.0.1:9092:

    2021.10.13 12:59:14.091724 [ 57 ] {} <Warning> Context: Effective user of the process (clickhouse) does not match the owner of the data (root).
    2021.10.13 12:59:17.967427 [ 228 ] {} <Error> StorageKafka (SpanBuffer): [rdk:FAIL] [thrd:GroupCoordinator]: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)
    2021.10.13 12:59:17.968299 [ 212 ] {} <Error> StorageKafka (SpanBuffer): [rdk:ERROR] [thrd:app]: ClickHouse-2ca3cfcc592b-auditTrail-SpanBuffer#consumer-1: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)

    что я делаю не так, как заставить clickhouse подключаться через host.docker.internal:9092?
  • @subotic0 #238619 01:37 PM, 13 Oct 2021
    Добрый день,
    create table test_table engine MergeTree order by my_column as
    select *
    from (
    select case when 1 = 1 then 1 else 2 end as my_column,
    case when 1 = 1 then 1 else 2 end as my_column
    );
    а есть объяснение почему эта кверя работает?
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    вам сеть надо общую создать и запускать контейнеры указав эту сеть https://runnable.com/docker/basic-docker-networking
    Basic Networking with Docker

    The fundamentals of container networking with Docker.

  • https://t.me/clickhouse_ru
    в смысле почему? так задумано? это называется CTAS , create table as select ?
  • пардон, вопрос касался одинаковых названий столбцов внутри, по логике эта кверя не должна работать. Обнаружил такое поведение случайно, и просто интересно с чем связано
  • https://t.me/clickhouse_ru
    разве host.docker.internal не решает эту проблему за меня (хотя для целей локальной разработки, не берём сейчас продакшн)?
    почему clickhouse судя по логам и не пытается использовать host.docker.internal, а обращается к 127.0.0.1?
  • https://t.me/clickhouse_ru
    потому что у вас фактически написано select 1 x, x
    в КХ выражения редьюсятся. т.е. select x+1 as y, x+1 --> select x+1 as y, y
  • спасибо
  • https://t.me/clickhouse_ru
    я хз про host.docker.internal, все это зависит от оси, в линуксе может и будет работать
  • https://t.me/clickhouse_ru
    это не имеет отношения к КХ, если вы подключитесь в контейнер кх, то можете там проверить курлом например ping host.docker.internal , curl host.docker.internal:9092
  • https://t.me/clickhouse_ru
    20ТБ - это в какой базе? практика показывает, что данные из эластика перенесённые в кликхаус занимают раз в 10 меньше места, а памяти ещё меньше.
    Полнотекстовый поиск и "col25 like '%text%' не совсем одно и тоже. вы в одном месте пишите про полнотекст, а в другом про лайк. не совсем понятно что конкретно вам нужно.
    если у вас полнотекст, то ещё можно рассматривать альтернативы. если лайк, то можно даже не тратить время, а сразу брать кликхаус.
    в принципе даже без индексов кликхаус лайком перелопатит одну колонку фуллсканом за вменяемое время и гораздо быстрее других бд.
    у эластика есть интерфейс кибана, полнотекстовый поиск из коробки и гибкая структура. на этом его плюсы закончились, всё остальное - сплошные минусы.
  • Да, Вы правы, на самом деле именно полнотекстовый поиск нам не нужен, вполне хватит like на трех полях. 20 ТВ данных занимают в HBase
  • https://t.me/clickhouse_ru
    root@ffacb257f26f:/# curl 127.0.0.1:9092
    curl: (7) Failed to connect to 127.0.0.1 port 9092: Connection refused
    root@ffacb257f26f:/# curl host.docker.internal:9092
    curl: (52) Empty reply from server
    root@ffacb257f26f:/# ping host.docker.internal
    PING host.docker.internal (192.168.65.2) 56(84) bytes of data.
    64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=0.460 ms

    есть ощушение, что если бы clickhouse обращался по host.docker.internal, а не по 127.0.0.1, то всё бы заработало
  • @549781487 #238632 02:01 PM, 13 Oct 2021
    Ещё маленький вопрос - ClickHouse позволяет создавать параметризованные вьюшки?
  • https://t.me/clickhouse_ru
    не припоминаю, вроде в старых версиях нет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #238632 #238635 02:03 PM, 13 Oct 2021
    Можно использовать пользовательские переменные, которые передаются во вьюху через добавление settings prefix_userparam = <uservalue> к запросу ко вьюхе.
  • @549781487 #238636 02:05 PM, 13 Oct 2021
    @morozovsk @brbrbr Супер, спасибо!
  • https://t.me/clickhouse_ru
    "всё что вы хотели узнать уже есть в kb" :)
    помню здесь ссылку кидали, поэтому просто вбил в гугле "kb parameterized view" и сразу всё нашлось
  • https://t.me/clickhouse_ru
    ок, просто если это натянуть на тот use-case, что хочет топик-стартер, то вряд ли поможет
  • https://t.me/clickhouse_ru
    какой у неё юзкейс ещё не известно, но лучше что-то чем ничего
  • https://t.me/clickhouse_ru
    с кафкой есть такая проблема, что это адрес host.docker.internal:9092 service discovery.
    Дальше брокер говорит откуда забирать партиции этого топика, там в кафке настраивается какой хостнейм отдавать.
    Т.е. брокеров много, и куда ходить за партициями топика знают только сами брокеры, клиенту кафки надо знать только одну точку входа, дальше ему рассказывают где вещи лежат.
    возможно в вашем случае кафка говорит ходить в локалхост
  • https://t.me/clickhouse_ru
    внимательно проверьте в своей версии КХ, settings были сломаны через месяц после того как я написал https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-parameterized-views/
  • https://t.me/clickhouse_ru
    @antonshchukin #238642 02:17 PM, 13 Oct 2021
    всем привет. немного глупый вопрос.
    а где можно взять утилиту clickhouse-format, описанную здесь https://clickhouse.com/docs/en/operations/utilities/clickhouse-format/ ?
    clickhouse-format | ClickHouse Documentation

    clickhouse-format Allows formatting input queries. Keys: --help or-h — Produce help message. --hilite — Add syntax highl

  • https://t.me/clickhouse_ru
    все утилиты КХ - это один бинарник, и симлинки

    можно просто через пробел аргументом clickhouse format

    $ clickhouse client
  • https://t.me/clickhouse_ru
    гуд, понял.
    благодарю.
  • https://t.me/clickhouse_ru
    я сейчас пересобрал контейнер, указав вместо host.docker.internal:9092 вообще заведомо некорректное значение:

    engine = Kafka SETTINGS kafka_broker_list = 'some.invalid.address:9999'

    в логах ничего не поменялось:
    2021.10.13 14:25:55.984670 [ 220 ] {} <Error> StorageKafka (SpanBuffer): [rdk:FAIL] [thrd:GroupCoordinator]: GroupCoordinator: 127.0.0.1:9092: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)

    т.е. до использования указанного адреса дело даже не доходит, а clickhouse что-то пытается найти локально на порту 9092

    p.s. проверил DDL таблицы - там именно то, что я указал при создании контейнера. Т.е. в kafka_broker_list значение одно, а в логах другое.

    непонятное что-то
  • https://t.me/clickhouse_ru
    сколько памяти у сервера?
  • https://t.me/clickhouse_ru
    баг в КХ, создавайте https://github.com/ClickHouse/ClickHouse/issues/new?assignees=&labels=potential+bug&template=85_bug-report.md&title=
    и приложите create table для view и для таблиц которые во вью
  • https://t.me/clickhouse_ru
    @IvanTulaev #238660 03:03 PM, 13 Oct 2021
    Всем доброго дня! При попытке сделать запрос с with ругается.
  • https://t.me/clickhouse_ru
    @IvanTulaev #238661 03:03 PM, 13 Oct 2021
    WITH test1 AS (SELECT 1)
    SELECT * FROM test1;
  • https://t.me/clickhouse_ru
    @IvanTulaev #238662 03:03 PM, 13 Oct 2021
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 15 ('(') (line 1, col 15): (SELECT 1)
    SELECT * FROM test1
    FORMAT TabSeparatedWithNamesAndTypes;. Expected identifier (version 20.8.3.18)
  • https://t.me/clickhouse_ru
    @IvanTulaev #238663 03:04 PM, 13 Oct 2021
    Что я делаю не так?
  • https://t.me/clickhouse_ru
    @asreto_asper #238665 03:05 PM, 13 Oct 2021
    Всем привет, подскажите пожалуйста, хочу реализовать конструкцию типа:
    SELECT if(SELECT count(*) from analytics.test where id = 5, plus(2, 2), plus(2, 6));
    Но БД ругается:
    Syntax error: failed at position 18 ('count') (line 1, col 18): count(*) from analytics.test where id = 5, plus(2, 2), plus(2, 6))
    FORMAT TabSeparatedWithNamesAndTypes;. Expected one of: DoubleColon, LIKE, GLOBAL NOT IN, end of query, AS, DIV, IS, UUID, OR, QuestionMark, BETWEEN, NOT LIKE, MOD, AND, Comma, alias, IN, ILIKE, Dot, NOT ILIKE, NOT, Arrow, token, NOT IN, GLOBAL IN. (SYNTAX_ERROR) (version 21.9.4.35 (official build))
    Подскажите пожалуйста, как такое можно реализовать?

    По запрос, как в примере:
    SELECT if(1, plus(2, 2), plus(2, 6));
    Только у меня cond (проверяемое условие. Может быть UInt8 или NULL.) это результат запроса.
  • https://t.me/clickhouse_ru
    @myaksheva #238666 03:06 PM, 13 Oct 2021
    #вакансия #Clickhouse #dba #удалёнка

    Вакансия: Web Analyst/Веб-аналитик
    Формат работы: проектная работа, гибкий график
    Зарплатная вилка: с успешным кандидатом готовы обсуждать индивидуальные условия.

    Задачи
    1. Аудит Яндекс Метрики и Google Analytics (оптимизация, если требуется)
    2. Настройка Google analytics 4
    3. Внедрение сквозной аналитики, динамического коллтреккинга, учет оффлайн конверсий и возвратов, конверсий со сторонних площадок (тематика - авто), настройка атрибуции.
    4. Юнит экономика - Разобраться что нужно доработать, чтобы считать юнит экономику. Разработать отчет по юнит экономике
    5. Разработать дашборд по основным показателям
  • https://t.me/clickhouse_ru
    20.8 такого не умел, 20.8 уже out of support
  • https://t.me/clickhouse_ru
    🙏
  • https://t.me/clickhouse_ru
    попробуйте добавить скобочки вокруг подзапроса. даже я не сразу понял, почему у вас вместо and используется запятая, а парсеру ещё сложнее
  • https://t.me/clickhouse_ru
    5 лямов в таблице или во вьюхе? а сколько выдаёт select count() from view_v ?
  • https://t.me/clickhouse_ru
    + кх не умеет коррелированные подзапросы, у вас SELECT count(*) from analytics.test where id = 5 константа? одинаковая для всех строк?
  • https://t.me/clickhouse_ru
    ну и само собой первым аргументом функции If у вас должно быть условие, а не количество:
    (SELECT count(*) from analytics.test where id = 5) > 0
  • https://t.me/clickhouse_ru
    это было оно! Неверное значение advertised.listeners в настройках кафки. Спасибо за наводку!
  • https://t.me/clickhouse_ru
    спасибо большое, помогло!
    Он ругался еще на тип данных, count() Uint64 возвращает, я добавил сравнение и все заработало)
    SELECT if((SELECT count(*) from analytics.test where id = 5) = 0, plus(2, 2), plus(2, 6));
  • @CHERTS #238679 06:15 PM, 13 Oct 2021
    Коллеги, приветствую. А кто какой прокси для Clickhouse использует? chproxy, KittenHouse или ClickHouse-Bulk ?
  • https://t.me/clickhouse_ru
    haproxy/nginx
    KittenHouse, ClickHouse-Bulk одиночные инсерты клеят в пачки
  • @CHERTS ↶ Reply to #238680 #238681 06:19 PM, 13 Oct 2021
    Ну то есть прок от них если только само приложение не умеет пачками отправлять?
  • https://t.me/clickhouse_ru
    ну да
    в новых КХ это будет встроенным механизмом
  • @CHERTS ↶ Reply to #238682 #238683 06:20 PM, 13 Oct 2021
    Спасибо, значит haproxy наше все, как я и предполагал.
  • https://t.me/clickhouse_ru
    @den_crane #238684 06:22 PM, 13 Oct 2021
    chproxy глючит кажется под нагрузкой, если в него 100rps послать или больше, не помню, но в общем тесты показали что без него лучше чем с ним если надо много rps
  • https://t.me/clickhouse_ru
    Мы его использовали для раскидывания запросов по 10 ножам равномерного. Вроде более 200rps нормально держал
  • https://t.me/clickhouse_ru
    возможно он глючит только если включена компрессия
    кидает error while read compressed stream Magic is not correct: 69
    причем не сразу, какое-то время работает ОК, а через минуту начинается проблема.
  • https://t.me/clickhouse_ru
    @time_2_work #238687 06:35 PM, 13 Oct 2021
    Мы его использовали чтобы ограничивать максимальное количество запросов в работе, потому что иначе сам ch брал запросы и сильная была деградация по производительности. Но это пару лет назад было. Стоял chproxy - следил за количеством запросов и раскидывал по годам онные
  • @simpl1g #238689 08:56 PM, 13 Oct 2021
    подскажите, можно как-то сделать чтобы with fill учитывал другие колонки в order by

    select x, y from (select number x, number * 2 y from numbers(1, 2)) order by x, y with fill from 1 to 6

    возвращает

    ┌─x─┬─y─┐
    │ 0 │ 1 │
    │ 1 │ 2 │
    │ 0 │ 3 │
    │ 2 │ 4 │
    │ 0 │ 5 │
    └───┴───┘

    а хотелось бы

    ┌─x─┬─y─┐
    │ 1 │ 1 │
    │ 1 │ 2 │
    │ 1 │ 3 │
    │ 1 │ 4 │
    │ 1 │ 5 │
    │ 2 │ 1 │
    │ 2 │ 2 │
    │ 2 │ 3 │
    │ 2 │ 4 │
    │ 2 │ 5 │
    └───┴───┘
  • https://t.me/clickhouse_ru
    select x, y from (select number x, number * 2 y from numbers(1, 2)) order by x with fill, y with fill from 1 to 6 ;
    ┌─x─┬─y─┐
    │ 1 │ 1 │
    │ 1 │ 2 │
    │ 1 │ 3 │
    │ 1 │ 4 │
    │ 1 │ 5 │
    │ 2 │ 1 │
    │ 2 │ 2 │
    │ 2 │ 3 │
    │ 2 │ 4 │
    └───┴───┘
    ┌─x─┬─y─┐
    │ 2 │ 5 │
    └───┴───┘
  • а если x не идёт подряд?

    select x, y from (select number * 2 + 1 x, number * 2 y from numbers(1, 2)) order by x with fill, y with fill from 1 to 6

    надо чтобы вернуло

    ┌─x─┬─y─┐
    │ 3 │ 1 │
    │ 3 │ 2 │
    │ 3 │ 3 │
    │ 3 │ 4 │
    │ 3 │ 5 │
    │ 5 │ 1 │
    │ 5 │ 2 │
    │ 5 │ 3 │
    │ 5 │ 4 │
    │ 5 │ 5 │
    └───┴───┘
  • https://t.me/clickhouse_ru
    order by x with fill step 2 ?
  • это просто пример, это айдишники юзеров и могут быть рандомными)
  • https://t.me/clickhouse_ru
    я не понимаю какую проблему решаем, в реальной жизни в 99% случаев with fill неприменим, потому что умеет только числа
  • https://t.me/clickhouse_ru
    @den_crane #238695 09:21 PM, 13 Oct 2021
    если это join с календарем, то делается это по другому
  • по сути да, сгенерить структуру со всеми датами
  • https://t.me/clickhouse_ru
  • спасибо
  • @MagnussonEVG #238700 09:43 PM, 13 Oct 2021
    Подскажите пожалуйста, как можно в кликхаусе сгруппировать строки между которыми меньше N минут? Без оконных функций
    То есть, если между событиями прошло мало времени, то будет одно событие с агрегатами значений из столбцов
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #238700 #238701 09:48 PM, 13 Oct 2021
    Не совсем то, но посмотрите на функции toStartOf*. Схлопнет по периодам.
  • @MagnussonEVG #238702 09:58 PM, 13 Oct 2021
    Спасибо, попробую

    Хотел сначала через массивы, но arrayMap тяжелый достаточно
  • https://t.me/clickhouse_ru
    Это тяжёлая задача для olap. Нельзя распаралелить.
  • 14 October 2021 (100 messages)
  • https://t.me/clickhouse_ru
    @alex_spiridonov #238705 06:03 AM, 14 Oct 2021
    кажется, имеется типовая задача
    вводная: есть много событий от некоторых источников.
    свойства источников:
    1. список источников открыт (т.е. в процессе сбора данных иногда могут появляться новые источники), но не будет бурного роста их числа. Скажем, количество источников - единицы десятков тысяч. Количество событий: миллионы, сотни миллионов.
    2. источник в событии идентифицируется строкой (обычно это 50...300 символов)

    запросы к системе будут:
    1. Как по общему набору событий (какие-то агрегации)
    2. Так и выборки по конкретным источникам

    вопросы:
    1. По привычке хочется пронумеровать источники и нормализовать схему. Надо ли это делать в clickhouse?
    2. Если нормализовать надо (выгодно), то как это сделать на лету?

    что-то такое сходу набросал (https://www.db-fiddle.com/f/f6k6T5rJnN3yt3php9QrN6/0):

    -- сюда будут писаться миллионы (миллиарды?) записей
    create table myDb.event_buffer
    (
    event_prop1 String,
    -- ...
    event_propN String,
    event_source String -- строка обычно на 50...300 символов
    ) engine = Kafka -- например, читаем из kafka
    ;

    create table myDb.event
    (
    event_source_id UInt64
    event_prop1 String,
    -- ...
    event_propN String,
    ) engine MergeTree();

    -- уникальных значений name ожидатся в районе нескольких десятков тысяч
    create table myDb.event_source
    (
    id UInt64,
    name String
    ) engine -- КАКОЙ ВЫБРАТЬ?

    create materialized view myDb.event_extractor to myDb.event as
    select
    sipHash64(event_source) as event_source_id,
    event_prop1, /* ... */, event_propN
    from myDb.event_buffer;

    create materialized view myDb.event_souce_extractor to myDb.event_source as
    select
    sipHash64(event_source) as id,
    event_source as name
    from myDb.event_buffer;

    это похоже на рабочую схему? В ней для myDb.event_source какой движок выбрать, чтобы обеспечить уникальность строк таблицы?
    DB Fiddle - SQL Database Playground

    An online SQL database playground for testing, debugging and sharing SQL snippets.

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238705 #238706 06:40 AM, 14 Oct 2021
    > myDb.event_source ... engine -- КАКОЙ ВЫБРАТЬ?

    если кластер, то вариантов немного - ReplicatedReplacingMT. Если singleserver, то я бы попробовал Join(Any,Left,id) settings join_any_take_last_row=1
    Но даже если и кластер, то при наличии кафки можно паралельно несколько таких таблиц поддерживать на нодах
  • https://t.me/clickhouse_ru
    @hidcontrol #238707 06:40 AM, 14 Oct 2021
    Ребят, поделитесь опытом. Планирую использовать Clickhouse для интеграционной подсистемы на основе паттерна EAV https://dimonsmart.wordpress.com/2017/12/04/eav-entity-attribute-value/, логику трансформации данных планирую разместить в API. Есть противопоказания? Было бы здорово, если @milovidov_an как-то прокомментировал
    EAV (Entity attribute value)

    Введение Одним из желаний разработчиков баз данных всегда было отсутствие внезапных изменений структуры базы. И, увы, оно несбыточно! Совсем без этих изменений не получается. То у клиента в клиентс…

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238707 #238708 06:47 AM, 14 Oct 2021
    какой смысл такое делать в колоночной базе данных? Вы же теряете все её преимущества. Вместо чтения отдельных колонок приходится лопатить все данные подряд. И компрессия по разнородным данным плохо сработает.
  • https://t.me/clickhouse_ru
    @dbalashov #238709 06:47 AM, 14 Oct 2021
    вот я чот тоже не понял :)
  • https://t.me/clickhouse_ru
    @dbalashov #238710 06:48 AM, 14 Oct 2021
    EAV на реляционных ложица неплохо, когда ты раскладываешь AV по таблицам по типам данных
  • https://t.me/clickhouse_ru
    @dbalashov #238711 06:48 AM, 14 Oct 2021
    а в колоночных я даже хз. Надо будет вагон джойнов делать опять же при выборке
  • https://t.me/clickhouse_ru
    @hidcontrol #238712 06:49 AM, 14 Oct 2021
    объект любой сущности можно разместить в табличной структуре примерно такого вида
  • https://t.me/clickhouse_ru
    @hidcontrol #238713 06:49 AM, 14 Oct 2021
    dictionaryCode String COMMENT 'Код справочника',
    dictionaryName String COMMENT 'Название справочника, по-русски',
    elementId String COMMENT 'Идентификатор записи справочника',
    attributeCode String COMMENT 'Код атрибута, название столбца',
    attributeName String COMMENT 'Название атрибута, по-русски',
    attributeType String COMMENT 'Тип атрибута',
    attributeValues array(String) COMMENT 'Значение (идентификаторов)',
  • https://t.me/clickhouse_ru
    @dbalashov #238714 06:49 AM, 14 Oct 2021
    да я в курсе что такое EAV
  • https://t.me/clickhouse_ru
    @dbalashov #238715 06:49 AM, 14 Oct 2021
    но я всё таки склоняюсь к мысли что это не лучший вариант модели БД для CH
  • https://t.me/clickhouse_ru
    @bvt123 #238716 06:50 AM, 14 Oct 2021
    Можно аккуратно, местами, для небольших наборов данных сделать колонку типа Map(String,String). Но всю схему так строить на колоночной базе????
  • https://t.me/clickhouse_ru
    @hidcontrol #238717 06:50 AM, 14 Oct 2021
    В случае, если справочник ссылается на другой справочник, то в типе необходимо указать в формате: attributeType='Entity($dictionaryCode)', а attributeValues=[$elementId..]
  • https://t.me/clickhouse_ru
    @dbalashov #238718 06:51 AM, 14 Oct 2021
    а целостность как собираешься контролировать? В реляционных можно обмазать триггерами и констрейнтами
  • https://t.me/clickhouse_ru
    @hidcontrol #238719 06:52 AM, 14 Oct 2021
    ETL процедурой, которая будет заполнять интеграционную таблицу Clickhouse
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238717 #238720 06:52 AM, 14 Oct 2021
    вы ответьте прежде всего на вопрос про производительность (и компрессию). Зачем вобще вам тут КХ? Сколько миллиардов строк (обычных, без EAV) у вас будет?
  • https://t.me/clickhouse_ru
    @dbalashov #238721 06:53 AM, 14 Oct 2021
    вообще тут теряется смысл колоночной СУБД, в которой данные храняца по полям, а не по записям. В EAV тебе практически всегда для работы понадобица вся запись в AV, что вобщеемто идеально ложица на реляционную СУБД, но несёт допрасходы на колоночную которой нужно будет не одну колонку читать а все.
  • https://t.me/clickhouse_ru
    заполнять ОТКУДА
  • https://t.me/clickhouse_ru
    из основной учетной системы
  • https://t.me/clickhouse_ru
    @dbalashov #238724 06:55 AM, 14 Oct 2021
    а там реляционная СУБД ?
  • https://t.me/clickhouse_ru
    @hidcontrol #238725 06:55 AM, 14 Oct 2021
    да
  • https://t.me/clickhouse_ru
    @dbalashov #238727 06:55 AM, 14 Oct 2021
    тогда я не понимаю зачем CH вообще здесь
  • https://t.me/clickhouse_ru
    @dbalashov #238728 06:56 AM, 14 Oct 2021
    если вам нужен видеть данные в формате EAV -может быть проще сделать view в той системе или процедурки чтобы они отдавали данные в этом формате
  • https://t.me/clickhouse_ru
    @dbalashov #238729 06:57 AM, 14 Oct 2021
    таким образом у вас не будет избыточности данных и лишнего сервиса
  • Специально делать EAV имеет мало смысла, разве что если данные изначально представлены в таком виде или если только небольшая часть данных требует такого представления.

    Если сделать EAV таблицу, то ClickHouse будет стараться, будет сканировать данные так быстро, как может... но всё-таки будет косо посматривать на ваши данные.
  • https://t.me/clickhouse_ru
    @SanDevl #238732 07:07 AM, 14 Oct 2021
    Всем привет. Не нашел инфы а сюда можно вакансии выкладывать?
  • https://t.me/clickhouse_ru
    @critskiy #238733 07:09 AM, 14 Oct 2021
    Вроде не запрещено
  • Можно, если вакансии про ClickHouse, например, требуется знание ClickHouse, или вы указываете, что в компании уже используется ClickHouse.
  • https://t.me/clickhouse_ru
    Мотивация:
    1.Сделать "гальваническую развязку" для учетной системы, чтобы не нагружать учетную СУБД в процессе рабочего дня
    2.Обеспечение историчности инфообмена(до 3-5 лет) при взаимодействии с другими системами не подконтрольными нам(компактность хранения данных с Clickhouse), т.к. в учетной системе только последнее состояние сущности. Полезно в расследовании инцидентов и в случае подключения нового участника инфообмена, которому могут потребоваться исторические данные.
    3.Работу над изменениями контрактов сущностей сфокусировать только в АПИ, выгрузка и структура хранения будут практически неизменны, за счет: EAV и универсальной хранимой процедуры для выгрузки объектов любой учетной сущности, потребует использования только конфига со списков выгружаемых таблиц.
    4.Сделали конвеер обработки запросов API, связанных с Clickhouse, который позволяет обрабатывать до 900 запросов к апи в секунду. Что обеспечит выгрузку загрузку необходимых интеграционых сведений
    5.Привлекают другие возможности Clickhouse по интеграции
  • @milovidov_an #238736 07:14 AM, 14 Oct 2021
    Тогда делайте прототип и проверяйте, как будет работать. Может быть всё будет хорошо.
  • https://t.me/clickhouse_ru
    отдельные элементы уже используем, немного беспокоюсь т.к. не все коллеги разделяют идею, поэтому решил обратиться к сообществу....спасибо за критику)))
  • https://t.me/clickhouse_ru
    В экспериментальных оконных функциях есть
  • https://t.me/clickhouse_ru
    «И кстати есть rowNumberInAllBlocks» - да, можно же блок задать через limit by
  • https://t.me/clickhouse_ru
    @hidcontrol #238741 07:21 AM, 14 Oct 2021
    Будет здорово, если кто-то поделится способами транспонирования.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238741 #238743 07:27 AM, 14 Oct 2021
    kb.altinity.com search pivot
  • https://t.me/clickhouse_ru
    @hidcontrol #238745 07:41 AM, 14 Oct 2021
    Мы планировали использовать следующий способ
    create table tbl (entityId UInt32, field String, value Float32) Engine=Memory;
    insert into tbl values
    (1,'width', 1.0),
    (1,'height',2.0),
    (1,'length',0.5),
    (2,'width', 10.0),
    (2,'height',24.0),
    (3,'length',33.5)

    SELECT entityId,
    max(case when field = 'width' then value else 0.0 end) width,
    max(case when field = 'height' then value else 0.0 end) height,
    max(case when field = 'length' then value else 0.0 end) length
    FROM tbl
    GROUP BY entityId
  • https://t.me/clickhouse_ru
    ☺️ спасибо
  • https://t.me/clickhouse_ru
    @hidcontrol #238747 07:42 AM, 14 Oct 2021
    pivot-table - Pivot или эквивалент в clickhouse - Question-It.com

    Я новичок в Clickhouse или в этом отношении в любом столбце БД. Мне нужно повернуть таблицу, как мы делаем в sql-server, postgres или любой другой базе данных на основе строк. Я ищу общее решение, однако решение для примера здесь будет хорошо. Таблица: Магазин Tag Slot Reading --- ---- --------....

  • https://t.me/clickhouse_ru
    @TonyGeecko #238748 07:42 AM, 14 Oct 2021
    Добрый день!

    Вакансия от компании X5 Retail Group

    Позиция: Старший администратор СУБД ClickHouse

    Задачи:
    -Администрирование СУБД ClickHouse (single instance, Cluster);
    -Автоматизация задач по сопровождение СУБД по средствам Ansible;
    -Развитие мониторинга СУБД на базе Zabbix;
    -Решение инцидентов, запросов пользователей в части БД как 3 линия поддержки;
    Что нужно уметь:
    Знание СУБД ClickHouse в части DBA;
    Beckup/recovery/DRP для СУБД ClickHouse;
    Уверенные знания SQL;

    Условия:
    -Официальное оформление с белой ЗП, премии по результатам работы;
    -Удобный офис с бесплатной парковкой на м. «Волгоградский проспект» / МЦД «Калитники»
    -График работы: 5/2, с 9:00 до 18:15 (в пятницу — до 17:00);
    -Возможность работать удалённо (X5 Home Office) /или в гибридном формате
    -Широкий пакет ДМС (включая выезд за рубеж и стоматологию), страхование жизни и здоровья;

    Отвечу на Ваши вопросы в любое время ✌️, пишите: @TonyGeecko
  • https://t.me/clickhouse_ru
    Join(Any,Left,id) settings join_any_take_last_row=1
    а мощность event_source не будет равна мощности таблицы в этом случае? типа в event 100М и в event_source получим 100М
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238750 #238751 07:52 AM, 14 Oct 2021
    тут же Any. Там хеш таблица. Одна строка для одного id. По умолчанию - первая, с указанным сеттингом - последняя. Вы же говорили что источников десятки тысяч - это нормально. Вот так проверить сколько займет RAM:
    SELECT name, formatReadableSize(total_bytes) FROM system.tables WHERE engine = 'Join';
  • https://t.me/clickhouse_ru
    @alex_spiridonov #238752 07:57 AM, 14 Oct 2021
    о, спасибо!
  • https://t.me/clickhouse_ru
    Спасибо!
  • Понял, а какими тогда способами можно попробовать адекватно это сделать?
  • https://t.me/clickhouse_ru
    @atutik #238755 08:41 AM, 14 Oct 2021
    rows_before_limit_at_least - не менее скольких строчек получилось бы, если бы не было LIMIT-а. Выводится только если запрос содержит LIMIT.
    В случае, если запрос содержит GROUP BY, rows_before_limit_at_least - точное число строк, которое получилось бы, если бы не было LIMIT-а.
    при запросе select * from test_stat limit 1 FORMAT JSON
    rows_before_limit_at_least равен 1 хотя в таблице 44 записи.
    раньше это работало замечательно.
    может этот параметр зависит от типа колонок? которые я использую в таблице MergeTree?
    версия сервера 20.4.2.9
  • https://t.me/clickhouse_ru
    @XasturX #238756 09:09 AM, 14 Oct 2021
    Привет всем, подскажите те, кто использует clickhouse-driver для записи, раз в секунду или менее я пишу по 1 строке в 800 колонок, в рандомное время появляется запись ниже. Если взять тот же список строк и повторно записать, то может записаться, а может снова выпасть в ошибку. Никто не сталкивался?
    File "clickhouse_driver\varint.pyx", line 62, in clickhouse_driver.varint.read_varint
    File "clickhouse_driver\bufferedreader.pyx", line 55, in clickhouse_driver.bufferedreader.BufferedReader.read_one
    File "clickhouse_driver\bufferedreader.pyx", line 240, in clickhouse_driver.bufferedreader.BufferedSocketReader.read_into_buffer
    EOFError: Unexpected EOF while reading bytes
  • https://t.me/clickhouse_ru
    @AnKochem #238758 09:52 AM, 14 Oct 2021
    Скажите, как-то можно переместить данные полностью из одной таблицы в другую (таблицы полностью идентичны) одним запросом?
    Не хочется выбирать все партиции из system.parts и таскать их по одной. Хочется типа
    ALTER TABLE table 1 MOVE PARTITION * TO TABLE table2
  • https://t.me/clickhouse_ru
    @S_Dimitry #238759 10:03 AM, 14 Oct 2021
    господа, ге нашел по чату, что будет при удалении partition 'tuple()'в MergeTree таблице, которая не партицирована?
  • https://t.me/clickhouse_ru
    я делаю это питоном в цикле по партициям
  • https://t.me/clickhouse_ru
    Наверно, снесутся все данные?
  • https://t.me/clickhouse_ru
    я это и хочу) просто кто точно пробовал
  • https://t.me/clickhouse_ru
    Да, я так тоже делаю, только башом. Хотелось в один запрос.
    Возможно так нельзя делать, потому что мув партиции - атомарная операция. А мув всех данных = мув всех партиций - уже не атомарная..
  • truncate table не подходит?)
  • https://t.me/clickhouse_ru
    только что попробовал - снесло все, что было. Правда было всего две записи
  • https://t.me/clickhouse_ru
    ограничение не снято на 50 Гб на размер таблы
  • https://t.me/clickhouse_ru
    @S_Dimitry #238767 10:06 AM, 14 Oct 2021
    рестарт не хочется делать
  • drop partition тогда не поможет
  • @simpl1g #238769 10:06 AM, 14 Oct 2021
    там тоже 50гб на партишен
  • https://t.me/clickhouse_ru
    ммм, дропается, еще как, проверено на проде
  • https://t.me/clickhouse_ru
    @S_Dimitry #238771 10:07 AM, 14 Oct 2021
    толкьо на партицированной
  • значит max_partition_size_to_drop правили
  • @softbot_xxl #238775 10:46 AM, 14 Oct 2021
    Есть КХ 21.3.13, как посмотреть какие индексы используются для запроса? Есть order by и bloom filter на колонку. EXPLAIN indexes = 1 еще не работает в этой версии.
  • https://t.me/clickhouse_ru
    @vladislav_sakun #238776 10:57 AM, 14 Oct 2021
    Добрый день!
    У кого-то был опыт переезда зукипера развёрнутого через k8s в разные ДЦ?
  • https://t.me/clickhouse_ru
    @yaroslav_zinchenko #238778 11:36 AM, 14 Oct 2021
    Подскажите, как в КХ можно обновить значение определённого ключа в JSONе? В мускуле, например, есть функция JSON_SET. Есть ли что-то подобное в КХ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238778 #238779 11:40 AM, 14 Oct 2021
    никак. надо прочитать всю строчку, вычислить новое значение и записать новую. а со старой как-то побороться, чтобы не мешалась. Как конкретно зависит от table Engine.
  • https://t.me/clickhouse_ru
    Я так понимаю, вычисление нового значения проводится не в самом КХ, а в ЯПе? Движок ReplacingMergeTree.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238780 #238781 11:49 AM, 14 Oct 2021
    если чуть-чуть поправить, то можно и в КХ через regexp. главное точно прицелится.
  • https://t.me/clickhouse_ru
    Понял, благодарю
  • @emd1tey #238783 12:04 PM, 14 Oct 2021
    Добрый день, на что опираться при определение частоты партиционирования в MergeTree ?
  • @Funky_Byte #238784 12:04 PM, 14 Oct 2021
    Привет, в доке по кликхаусу есть туториал, делаю все по нему, но тестирую в докере на разных версиях и получаю разный результат при раскатке базы, почему?

    на версии: 21.9.2
    select count() from tutorial.visits_v1 — 1679791

    на версии: 20.6.10
    select count() from tutorial.visits_v1 — 1681077

    движки БД на обоих Ordinary
  • https://t.me/clickhouse_ru
    CollapsingMergeTree в доке почитайте
  • @Funky_Byte #238788 12:18 PM, 14 Oct 2021
    спасибо
  • https://t.me/clickhouse_ru
    Тут обычно говорят: не знаешь как партициорировать - партициорируйте по месяцам
  • https://t.me/clickhouse_ru
    Для этого нужно посмотреть на таблицу и будущие селекты, если не знаешь селекты то делай по месяцам
  • @733927470 #238795 01:32 PM, 14 Oct 2021
    Добрый день, а кто-нибудь сможет подсказать такой вопрос - вот если удалил данные из таблицы через alter table delete, данные пропали из папки data но остались в папке stat, это потому что бэкапы есть или вообще какая может быть причина?
  • https://t.me/clickhouse_ru
    @ilejn #238797 02:18 PM, 14 Oct 2021
    Добрый день, как правильно оценивать ОЗУ, нужное для вставки данных в таблицу одним INSERTом?
    В идеале хочется
    - получить f(ОЗУ, природа_данных) = количество_строк_в_батче
    - немного управлять расходуемой памятью

    Сделал игрушечный пример, на котором наблюдаю примерно следующее:
    если количество полей 10, а строк 2*10^7, нужно 850М
    если количество полей 1000, а строк 2*10^5, нужно примерно 4Г
    данных что-то типа 500М, т.е. при большом количестве колонок требуется в 8 раз больше памяти.
    max_threads не влияет.
    версия 21.3
    Скрипт вставляющий данные https://pastebin.com/hJaFyxKN , скрипт создающий таблицу https://pastebin.com/2W7XS0qw
    import timeNUM_FIELDS = 1000NUM_ROWS = 20000COEFF = 300print("set max_me - Pastebin.com

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

  • https://t.me/clickhouse_ru
    @ilejn #238798 02:21 PM, 14 Oct 2021
    Ну и уж сразу. Вижу в system.trace_log только события Real и CPU. Memory и MemorySample в 21.3 еще не появились?
  • https://t.me/clickhouse_ru
    EXCHANGE TABLES точно не подойдёт?
    https://clickhouse.com/docs/ru/sql-reference/statements/exchange/
    EXCHANGE | Документация ClickHouse

    EXCHANGE Атомарно обменивает имена двух таблиц или словарей. Это действие также можно выполнить с помощью запроса RENAME

  • https://t.me/clickhouse_ru
    Не-а. Хочу дописать данные из одной в другую
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #238800 #238801 03:20 PM, 14 Oct 2021
    смотрите выше по чату. там Денни пару дней назад показывал мастерство как отцепить парт и прицепить его к другой таблице.
  • https://t.me/clickhouse_ru
    Эт я и сам могу
  • https://t.me/clickhouse_ru
    @AnKochem #238803 03:21 PM, 14 Oct 2021
    Оригинальный вопрос был - можно ли все парты(иции) одной командой двинуть
  • https://t.me/clickhouse_ru
    INSERT INTO SELECT не пойдет? За нужные даты
  • https://t.me/clickhouse_ru
    Не удалит ничего в старой таблице
    +
    Долго и тяжело)
  • https://t.me/clickhouse_ru
    @bralbral #238807 04:29 PM, 14 Oct 2021
    Добрый вечер. Подскажите, правильно ли я понимаю, что отличие формата JSONEachRow от JSONStringsEachRow в том, что при вставке любые записи будут восприниматься как строковые ?

    https://clickhouse.com/docs/en/interfaces/formats/#jsonstringseachrow
    Input and Output Formats | ClickHouse Documentation

    Formats for Input and Output Data ClickHouse can accept and return data in various formats. A format supported for input

  • https://t.me/clickhouse_ru
    @graid2030 #238809 05:14 PM, 14 Oct 2021
    Подскажите где подсмотреть даты поддержки версий кликхауса?
  • https://t.me/clickhouse_ru
    @graid2030 #238810 05:14 PM, 14 Oct 2021
    Что-то не гуглится
  • https://t.me/clickhouse_ru
    Altinity Stable Builds

    ClickHouse tested and verified for production.

  • https://t.me/clickhouse_ru
    Спасибо, получается 20 версия уже все?
  • @alexander_sabaev #238814 07:34 PM, 14 Oct 2021
    Добрый вечер. Обновил один сервер с 21.8 до 21.9.4.35
    второй не успел обновить - на обоих в реплику завели таблицу - CH ругается в логах при попытке репликации

    2021.10.14 22:29:22.270136 [ 7655 ] {} <Error> prism.web_vitals: auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 40. DB::Exception: Part 20210124_20210124_9_9_0 from 192.168.0.19 has different columns hash. (CHECKSUM_DOESNT_MATCH), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x936a17a in /usr/bin/clickhouse
    1. DB::Exception::Exception<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(int, 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> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x105e339e in /usr/bin/clickhouse
  • @alexander_sabaev #238815 07:34 PM, 14 Oct 2021
    обновил второй сервер - не помогло
  • @alexander_sabaev #238816 07:34 PM, 14 Oct 2021
    пересоздавал таблицу - тоже
  • @alexander_sabaev #238817 07:35 PM, 14 Oct 2021
    структура таблицы:
    CREATE TABLE prism.web_vitals
    (
    date Date DEFAULT toDate(now()),
    geo_id UInt32,
    prism_site_id UInt32,
    prism_site_template_id UInt32,
    ext_site_id UInt32,
    prism UInt8,
    mobile UInt8,
    layout_id UInt32,
    policy UInt8,
    experiment String,
    client_os String,
    client_os_version String,
    client_browser String,
    client_browser_version String,
    url_path String,
    custom_dimensions Map(String, String),
    request_count UInt64,
    zero_cls_count UInt32,
    cls_green Float32,
    fid_green Float32,
    fcp_green Float32,
    lcp_green Float32,
    ttfb_green Float32,
    cls_green_count Int32,
    fid_green_count UInt32,
    fcp_green_count UInt32,
    lcp_green_count Int32,
    ttfb_green_count UInt32,
    cls_yellow Float32,
    fid_yellow Float32,
    fcp_yellow Float32,
    lcp_yellow Float32,
    ttfb_yellow Float32,
    cls_yellow_count Int32,
    fid_yellow_count UInt32,
    fcp_yellow_count UInt32,
    lcp_yellow_count Int32,
    ttfb_yellow_count UInt32,
    cls_red Float32,
    fid_red Float32,
    fcp_red Float32,
    lcp_red Float32,
    ttfb_red Float32,
    cls_red_count Int32,
    fid_red_count UInt32,
    fcp_red_count UInt32,
    lcp_red_count Int32,
    ttfb_red_count UInt32,
    is360 UInt8,
    resolution String DEFAULT ''
    )
    ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/prism_web_vitals', '{replica}', date, (date, geo_id, prism_site_id, prism_site_template_id, ext_site_id, prism, mobile, layout_id, policy, experiment, client_os, client_os_version, client_browser, client_browser_version, url_path, custom_dimensions, is360, resolution), 8192)
  • @alexander_sabaev #238818 08:01 PM, 14 Oct 2021
    пересоздал таблицы после обновления версии и перезалил данные - заработала репликация :(
  • @simpl1g #238823 10:03 PM, 14 Oct 2021
    подскажите, в статье https://altinity.com/blog/tips-for-high-performance-clickhouse-clusters-with-s3-object-storage
    говорится что для s3Cluster можно использовать кастомный конфиг файл чтобы прокинуть правильные настройки по потокам на шарды. Но не совсем понятно как именно он применяется? почему он не приментися ко всем запросам, а только для s3?

    users.d/defaults_for_s3.xml:

    <yandex>
    <profiles>
    <default>
    <max_threads>8</max_threads>
    <max_insert_threads>8</max_insert_threads> <input_format_parallel_parsing>0</input_format_parallel_parsing>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    Ко всем будет применяться
  • хм, тогда это не очень вариант, я не хочу менять max_insert_threads для всех запросов)
  • https://t.me/clickhouse_ru
    Вы часто делаете insert select?
  • наверное в районе пары тысяч в день, но там скорее вопрос в том что они отжирают объём памяти близкий к максимуму, а увеличение max_insert_threads может ещё больше поднять потребление памяти
  • 15 October 2021 (112 messages)
  • https://t.me/clickhouse_ru
    каждая колонка создает 2 буфера по 1МБ для инсерта, не важно сколько строк вставляется, параллельные инсерты из-за parallel parsing вроде увеличивают
  • https://t.me/clickhouse_ru
    поддерживаются последние 3 stable и два LTS (LTS поддерживаются год)
    последний stable 21.9, т.е. stable = 21.9, 21.8, 21.7
    LTS 21.8, 21.3, т.е. 21.3 будет поддерживаться до 2022.3, 21.8 до 2022.8
    скоро выйдет 21.10, значит 21.7 перестанет поддерживаться
  • https://t.me/clickhouse_ru
    вы создаете таблицы в формате который устарел в декабре 2017 года. Этот формат не поддерживает новые фичи.
  • https://t.me/clickhouse_ru
    stat? или store ?
  • https://t.me/clickhouse_ru
    Давно можно без рестарта этот параметр поменять
  • https://t.me/clickhouse_ru
    set send_logs_level='debug'
    Explain не показывает этого.
  • извиняюсь, конечно же store папка, в общем delete данных не удаляет партицию как я понимаю
  • https://t.me/clickhouse_ru
    @Krisantis #238838 05:36 AM, 15 Oct 2021
    Здравствуйте, подскажите, это нормальное поведение функции trim?
    SELECT trim(BOTH ' ,' FROM '5935,5998,6014, ') as t
    ———
    Результат:
    '5935,5998,6014, '

    v=21.7.5.29
  • https://t.me/clickhouse_ru
    Какое вы ожидаете поведение ?
  • https://t.me/clickhouse_ru
    @Krisantis #238841 06:14 AM, 15 Oct 2021
    '5935,5998,6014'
  • https://t.me/clickhouse_ru
    @atutik ↶ Reply to #238838 #238842 06:14 AM, 15 Oct 2021
    попробуй вот так
    SELECT trim(BOTH '\, ' FROM ' 5935,5998,6014, ') as t
  • https://t.me/clickhouse_ru
    не помогает
  • https://t.me/clickhouse_ru
    TRAILING и будет как вы ожидаете работать
    SELECT trim(TRAILING ' ,' FROM '5935,5998,6014, ') as t
  • https://t.me/clickhouse_ru
    ну если бы мне нужен был TRAILING я бы его использовал
  • https://t.me/clickhouse_ru
    тут вопрос к работе функции, а не к тому как сделать чтобы работало
  • https://t.me/clickhouse_ru
    @1516245565 #238849 07:08 AM, 15 Oct 2021
    Доброе утро! Обновились с 21.5 до 21.9. В продакшене начались проблемы по причине отсутствия arrayFold (её убрали в 21.6). Какие варианты у нас есть по ее замене и по какой причине ее убрали? Спасибо.
  • https://t.me/clickhouse_ru
    @1516245565 #238850 07:14 AM, 15 Oct 2021
    Очевидной замены не видим в текущее время.
  • https://t.me/clickhouse_ru
    Функция случайно попала в релиз 21.5, и сразу же была убрана. Требуется ускорение на несколько порядков, чтобы можно было ей реально пользоваться. Но штука очень нужная и полезная, поэтому у нас (Altinity) стоит в планах ее сделать до конца года. Но, может, кто поможет и раньше.
  • https://t.me/clickhouse_ru
    @724279396 #238852 07:36 AM, 15 Oct 2021
    Ребят, кто знает как в версии 20.1 изменить имя столбца?
  • https://t.me/clickhouse_ru
    @i1smetana #238853 07:45 AM, 15 Oct 2021
    добрый день!
    может кто-то подсказать экпортер кастомных метрик (по select'ам) в прометеус?
  • @softbot_xxl #238854 07:47 AM, 15 Oct 2021
    Материализую индекс, вижу мутацию на фоне. Можно ли как-то ее “подстегнуть”? Мне некритична блокировка КХ.
  • Таблица создана несколько лет назад. И она не одна. Мне их все пересоздавать и перезаливать ?
  • https://t.me/clickhouse_ru
    20.3 и 20.8 мы еще в Альтинити поддерживаем. Надо бы добавить в список
  • https://t.me/clickhouse_ru
    Спасибо. Есть ли какие то предложения по тому как аггрегировать строки в виде product? Чтобы 1,2,3 аггрерировать в 1*2*3=6?
  • https://t.me/clickhouse_ru
    select arrayProduct([1,2,3]);
  • https://t.me/clickhouse_ru
    ALTER TABLE RENAME column не подходит?
    https://clickhouse.com/docs/en/sql-reference/statements/alter/column/#alter_rename-column
    COLUMN | ClickHouse Documentation

    Column Manipulations A set of queries that allow changing the table structure. Syntax: ALTER TABLE [db].name [ON CLUSTER

  • https://t.me/clickhouse_ru
    Ну и старый классический способ, который можно на строках использовать — сумма логирифмов и потом экспонента.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @maria_kirjanova #238867 09:23 AM, 15 Oct 2021
    Всем привет! Можно ли как-то средствами clickhouse вернуть экранированные символы в обычные, или это нужно уже в другой среде делать (например python)?
    Пробовала с помощью Cast перевести в формат TabSeparatedRaw, но выдал ошибку, что не знает такой тип.
  • Мне кажется, что сдесь какой-то жук зарылся
    SELECT replaceRegexpAll('5935,5998,6014, ', '^[ ,]*|[ ,]*$', '') AS t

    ┌─t────────────────┐
    │ 5935,5998,6014, │
    └──────────────────┘

    1 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    мне тоже так показалось)
  • что-то похожее было уже
    https://github.com/ClickHouse/ClickHouse/issues/214
    replaceAll + FixedStrings: unexpected behaviour · Issue #214 · ClickHouse/ClickHouse

    Seems that calling replaceAll for a FixedString makes it lose the last character regardless of the replacements. This is reproducible in tables (i've tried Memory, TinyLog and MergeTree per...

  • @softbot_xxl #238876 11:24 AM, 15 Oct 2021
    Для data-skipping indexes, что означает параметр GRANULARITY? Чего конкретно гранулярность?
  • сколько гранул данных будет в 1 грануле индекса, как-то так)
  • В смысле, гранул = значений?
  • @softbot_xxl #238879 11:32 AM, 15 Oct 2021
    Допустим у меня есть мердж-три с гранулярностью 256 (так надо), я создаю дополнительный блюм фильтр с гранулярностью 1. Что будет в грануле индекса?
  • 1 гранула мержтри, 256 строк
  • Спасибо.
  • https://t.me/clickhouse_ru
    @nshumshurova #238882 12:13 PM, 15 Oct 2021
    есть вопрос, кликхаус не имея текущих операций после запуска одной из программ не освобождает добровольно память, при том что запросы в текущий момент не выполняются
  • https://t.me/clickhouse_ru
    @nshumshurova #238885 12:18 PM, 15 Oct 2021
    sudo pmap -d 23828
    23828: /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid
    Address Kbytes Mode Offset Device Mapping
    0000000000200000 136828 r---- 0000000000000000 0fd:00001 clickhouse
    000000000879f000 188920 r-x-- 000000000859e000 0fd:00001 clickhouse
    000000001401e000 20 r---- 0000000013e1c000 0fd:00001 clickhouse
    0000000014023000 72 rw--- 0000000013e20000 0fd:00001 clickhouse
    0000000014035000 4108 rw--- 0000000000000000 000:00000 [ anon ]
    00007f31bc400000 1658880 rw--- 0000000000000000 000:00000 [ anon ]
    00007f32219ff000 720896 rw--- 0000000000000000 000:00000 [ anon ]
    00007f324e200000 36864 rw--- 0000000000000000 000:00000 [ anon ]
    00007f32507fb000 3817472 rw--- 0000000000000000 000:00000 [ anon ]
    00007f333c000000 135168 rw--- 0000000000000000 000:00000 [ anon ]
    00007f33445f8000 1933312 rw--- 0000000000000000 000:00000 [ anon ]
    00007f33be600000 1951744 rw--- 0000000000000000 000:00000 [ anon ]
    00007f3435800000 589824 rw--- 0000000000000000 000:00000 [ anon ]
    00007f3459800000 417792 rw--- 0000000000000000 000:00000 [ anon ]
    00007f3473000000 262144 rw--- 0000000000000000 000:00000 [ anon ]
    00007f3483000000 262144 rw--- 0000000000000000 000:00000 [ anon ]
    00007f3493000000 131072 rw--- 0000000000000000 000:00000 [ anon ]
    00007f349b000000 57344 rw--- 0000000000000000 000:00000 [ anon ]
    00007f349e800000 196608 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34bb000000 8192 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34bb800000 98304 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34c1800000 65536 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34c5800000 221184 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34d3000000 131072 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34db000000 49152 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34de000000 65536 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34e2000000 253952 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34f1800000 65536 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34f5800000 81920 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34fa95f000 28672 rw--- 0000000000000000 000:00000 [ anon ]
    00007f34fc55f000 131072 rw--- 0000000000000000 000:00000 [ anon ]
    00007f350455f000 323584 rw--- 0000000000000000 000:00000 [ anon ]
    00007f351815f000 4 ----- 0000000000000000 000:00000 [ anon ]
  • https://t.me/clickhouse_ru
    WHERE engine IN ('Memory','Set','Join') а если нет таких движков? у меня GraphiteMergeTree
  • значит они не занимают памяти. Это двжки, которые хранят данные в оперативной памяти.
  • https://t.me/clickhouse_ru
    @mib32 #238889 12:49 PM, 15 Oct 2021
    Ааа выход при команде "учше" это то что надо в пятницу вечером
  • https://t.me/clickhouse_ru
    чего-то жирно там маппингов осталось... предположу, что это просто кеш ondisk-данных типа LRU, какие есть буквально в любой СУБД. если рестартануть процесс, то этих маппингов нет до первого запроса к базе?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @nshumshurova #238893 01:07 PM, 15 Oct 2021
    их чем-то можно убирать? для очистки?
  • https://t.me/clickhouse_ru
    @enclaved #238894 01:08 PM, 15 Oct 2021
    нет, это должен сделать сам кх по ему одному ведомой логике.
  • https://t.me/clickhouse_ru
    @enclaved #238895 01:09 PM, 15 Oct 2021
    не факт, что это committed-страницы, под которые реально существуют маппинги из виртуального адресного пространства в физическое. то есть они могут быть в таблице выделенной памяти, но физическую не занимать в тот или иной момент времени, если у ядра включено overcommit_memory
  • https://t.me/clickhouse_ru
    @enclaved #238896 01:10 PM, 15 Oct 2021
    я бы копал в сторону настроек буферизации самого кх, если они у него есть (не слишком глубоко знаком с кх, но могу судить по опыту с MySQL/Postgres)
  • @allexdav #238898 01:22 PM, 15 Oct 2021
    Всем привет. Возможно самый тупой вопрос дня - но тем не менее... Есть табличка в кликхаусе, в ней дубликаты. табличка дополняется, и она просто MergeTree. Я хочу сделать такую же табличку с ReplacingMergeTree, чтобы она загрузажала в себя дельты из первой таблички и когда-нибудь удаляла дубликаты. order by у них разный. Я понимаю как это сделать из ETL тулзов типа airflow но не понимаю как это правильно сделать средствами кликхаус
  • https://t.me/clickhouse_ru
    можно с помощью materialized view дублировать вставку во вторую таблицу
  • https://t.me/clickhouse_ru
    Да, один вариант - Materialized View

    Второй вариант - это относительно новая фича projections.
  • https://t.me/clickhouse_ru
    @ademidov #238902 01:45 PM, 15 Oct 2021
    а не подскажете где посмотреть описание old syntax merge tree ? пытаюсь понять ReplicatedMergeTree('/clickhouse/tables/{shard}/metrics', '{replica}', date, (date, source_name), 8192) чему соответствуют тут три последних параметра
  • https://t.me/clickhouse_ru
    @ademidov #238903 01:46 PM, 15 Oct 2021
    date - partition by; (date, source_name) - order by ?
  • date партиции по месяца
    (date, source_name) - primary key
  • https://t.me/clickhouse_ru
    @ademidov #238905 01:49 PM, 15 Oct 2021
    спасибо
  • @beebeeep #238906 01:53 PM, 15 Oct 2021
    всем привет
    наткнулся на то, что новая реплика не может создать себе схему, CREATE TABLE для одной таблички ругается на “Table columns structure in ZooKeeper is different from local table structure”. Путем пристального взгляда обнаружил, что порядок колонок в SHOW CREATE TABLE для этой таблички в существующих репликах действительно отличается от того, что пытается создать новая реплика, и оригинальный CREATE TABLE подходит
    Вопрос: это поведение менялось где-то между 20.12 и 21.3.17, или раньше порядок колонок не особо учитывался? У меня есть подозрение, что баг, из-за которого у меня колонки в схеме менялись местами, был всегда, но не вызывал проблем, когда кластер был на 20.12
  • https://t.me/clickhouse_ru
    @sadko4u #238907 01:57 PM, 15 Oct 2021
    Подскажите, пожалуйста, а как перетащить жирную таблицу из postgresql в clickhouse, у меня ругается, что выделенных 16 Гб не хватает:
    w-gpu-03 :) insert into default.files(hash, file) select hash, file from files_wgpu02.files;

    INSERT INTO default.files (hash, file) SELECT
    hash,
    file
    FROM files_wgpu02.files

    Query id: 8fb906c1-b1fb-4390-b13b-56a26082be61

    → Progress: 1.05 million rows, 7.11 GB (1.52 thousand rows/s., 10.34 MB/s.)
    0 rows in set. Elapsed: 691.305 sec. Processed 1.05 million rows, 7.11 GB (1.52 thousand rows/s., 10.29 MB/s.)

    Received exception from server (version 21.9.4):
    Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 16.17 GiB (attempt to allocate chunk of 268435456 bytes), maximum: 16.00 GiB: While executing SinkToOutputStream. (MEMORY_LIMIT_EXCEEDED)
  • Спасибо
  • @simpl1g #238914 02:49 PM, 15 Oct 2021
    подскажите, а MaterializedPostgreSQL движок под капотом юзает CollapsingMergeTree или там что-то кастомное?
  • https://t.me/clickhouse_ru
    @peter_ll #238917 04:03 PM, 15 Oct 2021
    ребята, такой вопрос:
    тестируем 21.9.4
    есть storage_policies (ssd и hdd)

    и все бы ничего, но в /var/lib/clickhouse/data/{database_name}/ я вижу линки на /var/lib/clickhouse/store/{abc}/{uuid}
    но по пути линка нету объекта, он находится в
    {/path_from_system.disks/}store/{abc}/{uuid}

    это нормально, или хрень какая-то с конфигами/путями?
    *таблицы квэряются без проблем, exchange table1 and table2 тоже без проблем
  • https://t.me/clickhouse_ru
    Возможно "бага"

    Кх не использует /var/lib/clickhouse/data/ линки для себя, это чисто для людей, что бы понятно было.
  • https://t.me/clickhouse_ru
    есть рабочий способ - на стороне pg сделать несколько view на куски таблицы и лить из них

    upd: работает если в таблицу не льются данные и можно выбрать непересекающиеся куски
    (hash, file) как бы намекают, что это сделать не тривиально
  • https://t.me/clickhouse_ru
    @hatedabamboo #238921 04:13 PM, 15 Oct 2021
    Господа, подскажите, пожалуйста, в чём может быть затык, что юзера не пускает по паролю с записью pass_sha256_hex в users.xml?
    Например, если указать авторизацию через лдап и ввести тот же самый пароль, то получается успешно, а если захешировать его — фиг.
  • https://t.me/clickhouse_ru
    Печально. Если бы КХ то, что из постгри, дампил в какой-нибудь temp-file перед обработкой, думаю, было бы вообще супер. Но, похоже, он только при обработке своих запросов такое умеет.
  • https://t.me/clickhouse_ru
    @sadko4u #238924 05:29 PM, 15 Oct 2021
    Короче, сошёлся на том, что проще написать на java тулзу, которая будет пачками перетаскивать данные из PostgreSQL в Clickhouse.
  • https://t.me/clickhouse_ru
    Я скажу больше. Мне недавно надо было перетащить данные из одного кликхауса в другой (переезд с площадки на площадку). Ну, думаю, дай запущу два клиента через unix pipe: один вычитывает из "старого" кликхауса, передает другому клиенту, второй пишет в "новый" кликхаус. Ага, щаз, разбежался. То же самое: не хватило памяти. Пришлось писать bash-скрипт, который разбивал таблицу на куски и SELECT-ом оттуда маленькими порциями.
  • https://t.me/clickhouse_ru
    @sadko4u #238926 06:12 PM, 15 Oct 2021
    Ну в случае с кликхаусом выбирать порциями не так накладно. А с PostgreSQL и прочими реляционными БД - уж лучше один запрос запустить на большой таблице, чем пытаться читать кусками.
  • https://t.me/clickhouse_ru
    @sadko4u #238927 06:13 PM, 15 Oct 2021
    Если там 150 млн жирненьких записей, то можно несколько недель так мигрировать.
  • https://t.me/clickhouse_ru
    @ikushmantsev #238928 06:15 PM, 15 Oct 2021
    Есть ли какой-то быстрый способ для миграции MergeTree таблицы на новый синтаксис кроме “insert into new select from old” ?
  • https://t.me/clickhouse_ru
    официально нет. Если вам очень надо и вы готовы потратить много сил (человеков) и денег, то есть.
    В исходниках КХ есть утилита которая конвертирует каталоги и файлы.
  • https://t.me/clickhouse_ru
    вы наверное об этом https://github.com/ClickHouse/ClickHouse/issues/14576#issuecomment-689134560? а почему еще и много денег?
    Migrating data from old Merge Tree Syntax · Issue #14576 · ClickHouse/ClickHouse

    Hello Everyone, I have a table with this signature i will name it as TABLE1 ENGINE = MergeTree(BookingDate, (Year, EmailID, RouteID, OperatorId, TIN, JourneyDate, BookingDate), 8192) and this table...

  • https://t.me/clickhouse_ru
    я опечатался "или денег" , в смысле кто-то другой сделает, наверное мы в Альтинити бы сделали для клиента если ему сильно надо.
  • https://t.me/clickhouse_ru
    @den_crane #238932 06:30 PM, 15 Oct 2021
    это будет довольно сложный процесс, потому что надо понимать как это сделать не переналивая данные на реплики и не запоров все.
  • https://t.me/clickhouse_ru
    Что-то математика не сходиться, зачем ch тащить такую таблицу? Выходит, что средний (hash, file) 7kb
  • https://t.me/clickhouse_ru
    я не особо понимаю версия КХ у вас какая. В последних версиях уже появился движок postgresql, по крайней мере, можно придумать насчет buffer таблицы или посмотреть инструменты для такого
  • https://t.me/clickhouse_ru
    @critskiy #238935 06:36 PM, 15 Oct 2021
    а уж в самый крайний момент писать скрипт
  • https://t.me/clickhouse_ru
    да баг конечно, там регулярка неправильная, трим сделан регэксом
  • https://t.me/clickhouse_ru
    что если

    set max_threads=1, max_block_size=10000;
    insert ....

    16 GB конечно мало, КХ из коробки не готов к такому (проблема не в том что 16 мало, а в том что КХ писали под машины у которых 64+)
  • https://t.me/clickhouse_ru
    Так кх радает по памяти. Там 150 млн записей по 8к в среднем.
  • https://t.me/clickhouse_ru
    Да. Там хеш и бинарные данные (сам файл).
  • https://t.me/clickhouse_ru
    как говорил тогда @den_crane, но будет оч долгооо
  • https://t.me/clickhouse_ru
    @critskiy #238941 06:44 PM, 15 Oct 2021
    самый хороший вариант - запрос сделать на расширение памяти
  • https://t.me/clickhouse_ru
    @critskiy #238942 06:45 PM, 15 Oct 2021
    до 64
  • https://t.me/clickhouse_ru
    @sadko4u #238943 06:45 PM, 15 Oct 2021
    Не. Я сделал один большой запрос на postgresql, а вставку в кх по 100000 записей. Вроде уже 3 млн записей проимпортировало.
  • https://t.me/clickhouse_ru
    там проверка не делается при attach. Я видел пример как такого добиться, но давно, Николай Варталомей кажется показывал, но это нелегко.
  • такого - это какого? То есть обычно порядок колонок не учитывается, лишь бы все остальное совпадало?
  • https://t.me/clickhouse_ru
    такого что бы порядок был разный.
    У вас разный порядок в ZK в ветке таблицы и на диске в .sql у одной реплики?
    Или вас разный порядок в .sql файлах у двух реплик?
    Порядок колонок в метаданных влияет на порядок полей в инсертах и select-ах
  • https://t.me/clickhouse_ru
    date, (date, source_name), 8192)

    partition by toYYYYMM(date) order by (date, source_name) settings index_granularity = 8192
  • https://t.me/clickhouse_ru
    @ademidov #238948 07:03 PM, 15 Oct 2021
    ага, спасибо
  • https://t.me/clickhouse_ru
    jemalloc -- это библиотека для управления памятью которой пользуется КХ, не освобождает память моментально, чтобы не тратить время на аллокацию
    плюс в КХ есть кеш марков который раздувается до 5ГБ. mark_cache_size
  • https://t.me/clickhouse_ru
    Частями, только учитывайте что с табличной функцией postgresql на стороне удаленного сервера работают только простые условия типа =><, подробней в доке. А всякие лимиты и почее навешиваются уже после полной выборки что также вызовет нехватку памяти
  • @dj_mixer #238951 07:08 PM, 15 Oct 2021
    всем доброго времени суток... при попытке переименовать колонку из PK портится метадата, этот баг был уже ? в 21.3...
  • https://t.me/clickhouse_ru
    Спасибо за совет, но я уже разобрался: пишем клиента на Java, в котором выбираем всю таблицу из postgresql одним запросом, а в КХ вставляем порциями по 100000 записей.
  • https://t.me/clickhouse_ru
    @graid2030 #238953 07:28 PM, 15 Oct 2021
    Ребят куда копать если OPTIMIZE не происходит в фоне
  • https://t.me/clickhouse_ru
    @graid2030 #238954 07:29 PM, 15 Oct 2021
    Руками выполняется, все норм
  • https://t.me/clickhouse_ru
    @ProffUst #238955 07:33 PM, 15 Oct 2021
    Так вроде всё верно. Автоматически только в текущей патриции он произходит, в старых руками дёргать
  • https://t.me/clickhouse_ru
    @graid2030 #238956 07:40 PM, 15 Oct 2021
    Печально
  • https://t.me/clickhouse_ru
    Проверил в текущей партиции не мержаться
  • https://t.me/clickhouse_ru
    вроде просто не дает еще до начала, не помню такого бага
  • @dj_mixer #238961 08:24 PM, 15 Oct 2021
    Не дает, но что то в метадате меняется... Благо обратно так же не дает и оно чинится )
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    интересно, ну в гитхаб
  • @dj_mixer #238964 08:25 PM, 15 Oct 2021
    Аха,будет. Чуть ноги не прострелили
  • https://t.me/clickhouse_ru
    @qwerty_by19 #238965 08:30 PM, 15 Oct 2021
    Привет, можете подсказать, почему у меня обычный запрос с двумя джойнами и группировкой грузится целую минуту? (использую tabix.io)
  • Может спилится на диск, может сваливаться в "merge" join, много еще чего. Включите трейс лог, без него не разберетесь
  • https://t.me/clickhouse_ru
    @qwerty_by19 #238968 08:47 PM, 15 Oct 2021
    Точно не merge.
    Спасибо, попробую трейс.
  • https://t.me/clickhouse_ru
    150GB не привышает
  • https://t.me/clickhouse_ru
    @graid2030 #238971 09:55 PM, 15 Oct 2021
    Вот атк воспроизводится

    DROP TABLE IF EXISTS test_log ON CLUSTER 'my_cluster';
    CREATE TABLE test_log ON CLUSTER 'my_cluster'
    (
    messageId String,
    timeQueued DateTime,
    step AggregateFunction(max, UInt8)
    )
    engine = ReplicatedAggregatingMergeTree('/clickhouse/tables/test_log', '{replica}')
    PARTITION BY toYYYYMM(timeQueued)
    ORDER BY messageId
    SETTINGS index_granularity = 8192;

    INSERT INTO test_log (messageId, timeQueued, step)
    VALUES
    ('mid1', '2021-05-03 17:11:00', initializeAggregation('maxState', 0)),
    ('mid2', '2021-05-03 17:11:00', initializeAggregation('maxState', 0)),
    ('mid1', '2021-05-03 17:11:00', initializeAggregation('maxState', 1)),
    ('mid2', '2021-05-03 17:11:00', initializeAggregation('maxState', 1));

    SELECT messageId,
    timeQueued,
    finalizeAggregation(step)
    FROM test_log
  • 16 October 2021 (55 messages)
  • https://t.me/clickhouse_ru
    все запросы к движкам AggregatingMergeTree / SummingMergeTree надо домерживать-groupby.
    схлопывание строк это всего лишь побочный продукт мержей. Мержи нужны не для того чтобы схлопнуть записи и сделать вам удобно, а совсем для другого.

    SELECT messageId,
    timeQueued,
    maxMerge(step)
    FROM test_log
    group by messageId, timeQueued

    здесь проще использовать SimpleAggregateFunction(max,)
  • https://t.me/clickhouse_ru
    По поводу группировки нет проблем она есть, но у меня нет понимания будут ли они смержены в принципе, меня волнует количество данных и нигде ли я не затупил)
  • https://t.me/clickhouse_ru
    За SimpleAggregate отдельное спасибо
  • https://t.me/clickhouse_ru
    Шедулер мержей назначает мержи исходя из скорости добавленя данных и количества и размеров партов. Как только вы сделаете 5-6 однострочных инсертов они будут смержены. В среднем в партииции куда индет вставка будет 22-40 партов, в неактивной партиции 4-5. У кх нет цели смержить все в один парт, это не имеет смысла, на мержи больших партов уходит огромное кол-во ресурсов и не приносит никакой пользы, если тысячу мелких партов смержить в 3 то скорость селектов вырастет в 10 раз, если 3 огромных парта смержить в один, скрость селектов вообще не изменится, при этом для такого мержа придется перелопатить сотни гигабайт.
  • С виду, генерируемая регулярка рабочая
  • https://t.me/clickhouse_ru
    @1765297843 #238982 10:21 AM, 16 Oct 2021
    Добрый день, товарищи. Столкнулся с необходимостью расширить в таблицах некоторые столбцы c типом Uint8 до Uint16. И тут случилось мое малое кол-во знаний. На Вас уповая, прошу наставить на путь истиный.
    Вводные:
    1. Версия клика - version 19.16.7.24. Переход на последнюю не за горами, сейчас на тестовом сервере гоняем ее.
    2. 1 шард, 2 реплики.
    3. Таблицы с движком ReplicatedMergeTree и ReplicatedSummingMergeTree
    4. Столбцы, которые хочу изменить - они в секции ORDER BY, т.е. ключи.

    Решил пойти путем создания аналогичных таблиц с другим именем, но измененным типом столбцов. Далее по пунктам:
    1. Create table tab_a_new;
    2. Detach table tab_a on cluster my_cluster;
    3. Перенос данных из каталога /data/default/tab_a/detached в каталог /data/default/tab_a_new/detached
    4. Attach table tab_a_new on cluster my_cluster
    5. Drop/delete table tab_a и всю data.
    6. Rename table tab_a_new to tab_a on cluster my_cluster

    Вопросы:
    1. Нужно ли после пункта 1 и перед пунктом 3 сделать Detach table tab_a_new?
    2. После пункта 2 в каталоге /data/default/tab_a/detached данных не появилось. Detach не перенесет данные в этот каталог?
    Или мне надо из каталога /data/default/tab_a данные перекинуть в /data/default/tab_a_new/detached
    3. Перенос данных надо на каждой реплике делать, или лучше на одной, и потом после пункта 4 выполнить system restart replica tab_a_new?
    4. Правильный ли путь выбран или есть более корректные варианты?
  • https://t.me/clickhouse_ru
    Help, pls.
  • https://t.me/clickhouse_ru
    а как именно генерили пароль?
    уверены что именно sha256 хеш сделали?
  • https://t.me/clickhouse_ru
    самое безопасное, но требует x2 места
    CREATE TABLE .. ON CLUSTER
    INSERT INTO new_table SELECT * FROM old_table
    DROP TABLE old_table
    на одной ноде

    перенос данных с изменением типа. не сработает IMHO, но попробуйте

    4й пункт не надо ATTACH ON CLUSTER... по идее если ATTACH сработает, то

    6й пункт если есть нагрузка на old_table, может быть блокировка, потому что 19.16 - там все Ordinary и блокировки
  • https://t.me/clickhouse_ru
    @dbalashov #238986 11:48 AM, 16 Oct 2021
    диковатый вопрос, а если CH поселить в докере а его БД хранить снаружи через volume ?
  • https://t.me/clickhouse_ru
    Некоторые так делают, некоторым нравится

    Но кх не всегда соблюдает лимиты cgroupa
  • https://t.me/clickhouse_ru
    Как в доке было:
    echo $pass | sha256sum
  • https://t.me/clickhouse_ru
    @dbalashov #238989 11:49 AM, 16 Oct 2021
    я спрашиваю в плане для тестов разворачивать инсталляцию
  • https://t.me/clickhouse_ru
    там в доке еще tr -d "-"
  • https://t.me/clickhouse_ru
    Ну это же просто удаляет дефис в конце строки.
  • https://t.me/clickhouse_ru
    ну дык а где ее хранить то кроме как в volume, иначе же после рестарта контейнера никакой БД у вас не будет
  • https://t.me/clickhouse_ru
    grep -i sha256 -r /var/lib/clickhouse/preprocessed_configs/
    что показывает?
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    Грепается тот хеш, который указал в users.xml
  • https://t.me/clickhouse_ru
    @hatedabamboo #238996 12:05 PM, 16 Oct 2021
    Пардон, кажется я разобрался. Видимо где-то перенос строки в конце пароля попал в хеш.
  • https://t.me/clickhouse_ru
    @michailmarketplace #238997 12:57 PM, 16 Oct 2021
    Подскажите плз, проекции - это уже достаточно надежный механизм, можно использовать в бою?
  • https://t.me/clickhouse_ru
    Есть некоторые баги, но в целом достаточно надежный
  • https://t.me/clickhouse_ru
    @unamedrus #238999 01:00 PM, 16 Oct 2021
    Плюс их всегда достаточно просто выключить настройкой
  • https://t.me/clickhouse_ru
    понял спасибо
  • https://t.me/clickhouse_ru
    ну как бы да, но матвьюшки от выключения настройки не появятся. Я в режиме "пора ли отказаться от матвью в пользу проекций, если матвью были нужны только для смены сортировки"
  • https://t.me/clickhouse_ru
    А большая таблица?
  • https://t.me/clickhouse_ru
    @michailmarketplace #239003 01:04 PM, 16 Oct 2021
    3млрд строк, 15гигов байтов если верить system.tables
  • https://t.me/clickhouse_ru
    @michailmarketplace #239004 01:04 PM, 16 Oct 2021
    ну и она не одна такая
  • https://t.me/clickhouse_ru
    @unamedrus #239005 01:05 PM, 16 Oct 2021
    Там была проблемка с анализом и выбором подходящей проекции (для не агрегирующих как раз), мб уже пофиксили.

    Но я бы рекомендовал все равно попробовать хотя бы с точки зрения того, что если люди не будут пробовать, пользоваться и находить баги, то они не выйдут из экспериментального статуса никогда. Их создатель товарищ отзывчивый и баги править быстро.

    > 3млрд строк, 15гигов байтов если верить system.tables

    Ну это немного, перелить будет не долго.
  • https://t.me/clickhouse_ru
    echo -n
    не просто так в документации стоит =)
  • https://t.me/clickhouse_ru
    @hatedabamboo #239007 01:06 PM, 16 Oct 2021
    Видимо между глаз попало, да. Спасибо!
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    это невозможный путь. Не будет таблица работать если ей подсунуть файлы с данными другого типа.
    Только insert select
  • https://t.me/clickhouse_ru
    да, действительно -- рабочая, я думал там скобки нужны (.. ) | (.. )
    но нет
  • https://t.me/clickhouse_ru
    @den_crane #239011 02:32 PM, 16 Oct 2021
    trim incorrect result in case of BOTH · Issue #30245 · ClickHouse/ClickHouse

    SELECT trim(BOTH ', ' FROM '5935,5998,6014, ')||'|' x SELECT concat(replaceRegexpAll('5935,5998,6014, ', concat('^[',...

  • https://t.me/clickhouse_ru
    @s_ageev #239012 02:36 PM, 16 Oct 2021
    Всем привет!
    Пытаюсь создать колонку с типом SimpleAggregateFunction(argMax, UInt8, DateTime)
    В документации указано, что SimpleAggregateFunction поддерживает argMax, но я получаю ошибку Unsupported aggregate function argMax.
    В документации не обнаружил с какой версией появилась поддержка этой функции.
    Не подскажите, с какой версией клика данная функция поддерживается и поддерживается ли вообще? У меня версия клика 21.8.8.29
  • 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
    @bvt123 ↶ Reply to #239014 #239017 02:51 PM, 16 Oct 2021
    а как она вобще могла быть SImple? Там же в стейте два числа - максимум и при каком значении аргумента он был достигнут.
  • https://t.me/clickhouse_ru
    Там сделали хак, что она принимала тапл из двух значений, но появился креш и это выпилили
  • https://t.me/clickhouse_ru
    вообще, так ругается, что не поддерживается SimpleAggregateFunction(argMax, UInt8, DateTime), а вот так, SimpleAggregateFunction(argMax, UInt8) что не хватает агрумента )
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #239018 #239020 02:53 PM, 16 Oct 2021
    ой как страшно :) и много ещё там таких стремных мест?
  • https://t.me/clickhouse_ru
    Теперь нету
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @solard #239024 04:41 PM, 16 Oct 2021
    Всем привет. А кто-нибудь подскажет где-нибудь образ CH для arm64 можно достать ?
  • https://t.me/clickhouse_ru
    @solard #239025 04:41 PM, 16 Oct 2021
    Желательно версии 21+
  • https://t.me/clickhouse_ru
    образ?

    https://clickhouse.com/docs/en/getting-started/install/#from-single-binary

    Linux AArch64 — curl -O 'https://builds.clickhouse.com/master/aarch64/clickhouse' && chmod a+x ./clickhouse
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #239026 #239027 04:46 PM, 16 Oct 2021
    Ну думал docker образ но бинарь тоже отличный вариант
  • https://t.me/clickhouse_ru
    @solard #239028 04:46 PM, 16 Oct 2021
    Спасибо
  • https://t.me/clickhouse_ru
    так и надо писать докер образ

    на dockerhub есть и для M1 и для AArch64
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #239029 #239030 04:47 PM, 16 Oct 2021
    👍
  • https://t.me/clickhouse_ru
    @den_crane #239031 04:48 PM, 16 Oct 2021
    в смысле поиском там можно найти
  • https://t.me/clickhouse_ru
    @YngveStardust #239033 06:29 PM, 16 Oct 2021
    Привет. Подскажите, в https://clickhouse.com/docs/en/operations/system-tables/quotas/ описано как передавать quota_key по http интерфейсу и clickhouse-client, но возможно ли его передавать настройкой в самом sql запросе? (использую драйвер https://github.com/ClickHouse/clickhouse-go)
  • 17 October 2021 (112 messages)
  • https://t.me/clickhouse_ru
    к сожалению нет
    https://github.com/ClickHouse/clickhouse-go/search?q=quota

    там пустой захардкожен

    может сделаете PR? Кирил вроде быстро их рассматривает
    Search · quota · ClickHouse/clickhouse-go

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

  • @1063161973 #239039 06:36 AM, 17 Oct 2021
    Добрый день
    Перешел с 21.6 на 21.8.8.29 и появились проблемы.
    Раньше движок File() нормально работал с симлинками в папке user_files на другой каталог (диск)
    Это функционал использовался для создания бэкапов таблиц.
    Теперь выдаётся ошибка:
    Code: 291, e.displayText() = DB::Exception: File is not inside /var/lib/clickhouse/user_files (version 21.8.8.29 (official build))

    Можно ли вернуть прежнее поведение какой-либо настройкой ?
  • @1063161973 #239040 06:38 AM, 17 Oct 2021
    В "Backward Incompatible Change" для версий 21.7 и 21.8 нет информации об изменении поведения движка File()
  • https://t.me/clickhouse_ru
    Пишите на гитхаб
  • @AndyAMikhaylov #239044 07:39 AM, 17 Oct 2021
    select c_id CID,
    (select c_name from category where c_id=CID) as CNAME
    from category_to_product c2p
    where p_id=73041

    нужно получить название категорий CID товара p_id

    Error: Missing columns: 'CID' while processing query: 'SELECT c_name FROM category WHERE c_id = CID'

    коллеги подскажите КАК ПЕРЕДАТЬ ПАРАМЕТР CID В ПОДЗАПРОС (..) as CNAME ?
    КРОМЕ решений через JOIN
  • Для справочников (товары, категории товаров, клиенты и др.) эффективнее словари использовать
  • через подзапрос нельзя сделать в КХ, для такого существуют словари https://clickhouse.com/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts/#dicts-external-dicts
    Внешние словари | Документация ClickHouse

    Внешние словари Существует возможность подключать собственные словари из различных источников данных. Источником данных

  • https://t.me/clickhouse_ru
    Можно настройкой опеределить где user_files лежит
    И не делать симлинки
  • @AndyAMikhaylov #239048 07:55 AM, 17 Oct 2021
    спс за ответ - такое решение прямо сюда хорошо ложится
    но меня интересует не пример а в целом
    КАК ПЕРЕДАТЬ ПАРАМЕТР PAR В ПОД-ЗАПРОС (SELECT .. where c=PAR) as CNAME ?
  • т.е. я правильно понял что
    в ПОДЗАПРОС нельзя передать параметр из запроса ?
  • да, нельзя
  • @AndyAMikhaylov #239051 07:58 AM, 17 Oct 2021
    спс
  • @AndyAMikhaylov #239052 08:03 AM, 17 Oct 2021
    а через лямбда функцию можно под-запрос сделать ?
  • кажется нет, вы пытаетесь найти самый неэффективный способ выполнить запрос?
  • @AndyAMikhaylov #239054 08:15 AM, 17 Oct 2021
    нет :)
    просто через JOIN нужно будет взять ВСЕ категории-to-товары и ВСЕ категории и ПОТОМ объединить их по c_id
    это тоже не очень эффективно
  • зависит сколько у вас категорий, если их не очень много, join будет эффективнее чем подзапрос на каждый продакт. Но вообще это задача под словарь и думать о другом даже не стоит
  • @vagrantir #239056 08:39 AM, 17 Oct 2021
    Всех, с новым годом!
    Есть таблица с TTL-переносом данных на другой том.
    На этом томе, в папке таблицы, лежит непустая папка moving, в ней много кусков данных.
    Похоже, что при переносе данных, упёрлись в keep_free_space_bytes.
    Как поступать в такой ситуации?
    Ни optimize, ни start moves никакого результата не дали (
  • спс - буду пробовать
  • https://t.me/clickhouse_ru
    есть issue https://github.com/ClickHouse/ClickHouse/issues именно там надо добавлять такие сообщения.

    PR это если вы присылаете изменение в код или документацию.

    в след.раз используйте https://github.com/ClickHouse/ClickHouse/issues/new/choose
  • https://t.me/clickhouse_ru
    нет, КХ не начинает move если не хватает места, надо искать лог, дело в чем-то другом. Насколько старая папка moving , пытались понять где этот парт?
  • Папка свежая, сегодня в час ночи пошёл мув.
    Что странно, что есть нормально перенесенные куски с таймштампами на час позже.
    Например на волуме есть нормально перенесённый кусок одного и того же партишина и кусок хххх_0_5хх_.... в папке мувинг.
  • https://t.me/clickhouse_ru
    можно делать join с запросом и ограничить категории.

    Проблема с кореллированными подзапросами в OLAP и в КХ особенно, в том что надо подзапрос выполнить для каждой строки основной выборки, это супермедленно, особенно в случае КХ, в КХ индекс разреженный и очень дорого доставать одну строку по ключу. Если сделать словарь layout=direct получится ровно это (можете проверить). Есть план научится автоматически переписывать такие запросы как ваш в обычный join. Поэтому можете сразу переписать в join.
  • https://t.me/clickhouse_ru
    в логе ищите сообщения про этот парт. Проверьте в system.merges может этот мув еще идет
  • @satanch #239064 02:42 PM, 17 Oct 2021
    доброго дня!

    чтобы удалить данные мне нужно место? а если эти же данные его и съели?

    Code: 243, e.displayText() = DB::Exception: Cannot reserve 3.93 GiB, not enough space (version 21.3.5.42 (official build))
  • @satanch #239065 02:45 PM, 17 Oct 2021
    это как вытирать воду водой, не понимаю что мне делать
  • https://t.me/clickhouse_ru
    в смысле alter delete ?

    alter delete сначала создает парт без удаленных записей, а потом удаляет исходный парт. Мутации и мержи требуют свободного места 2*размер исходных партов
  • да, то есть мне просто удалять всю базу данных?
  • https://t.me/clickhouse_ru
    кто съел место-то? system таблицы?
  • таблица из которой удаляю
  • @satanch #239070 02:50 PM, 17 Oct 2021
    а вы знаете, я вам вру
  • https://t.me/clickhouse_ru
    дроп партиций не требует места, если вам например надо удалить старые данные, то это дебилизм использовать alter delete.
  • @satanch #239073 02:50 PM, 17 Oct 2021
    кто же съел еще 200 гигов
  • я действительно использую clickhouse как дебил, отсюда и все проблемы)
  • https://t.me/clickhouse_ru
    почему одна таблица ? где куча system таблиц?
  • @satanch #239076 02:51 PM, 17 Oct 2021
    я не знаю 🙁
  • https://t.me/clickhouse_ru
  • @satanch #239078 02:52 PM, 17 Oct 2021
    год назад я сделал таблицу, и все хорошо работало
  • @satanch #239079 02:52 PM, 17 Oct 2021
    пока вдруг не пропало 250 гб почти с диска
  • https://t.me/clickhouse_ru
    вы каким пользователем делаете запрос к system.parts ?

    можно просто на диске cd /var/lib/clickhouse/; du -sh *
  • @satanch #239081 02:54 PM, 17 Oct 2021
    на диске store - 230G
  • @satanch #239082 02:54 PM, 17 Oct 2021
    изменение конфигурации по статье же не очистит мне диск, а на будущее позволит его не засорять
  • https://t.me/clickhouse_ru
    cd store/ ; du -sh *|grep G
  • @satanch #239084 02:55 PM, 17 Oct 2021
    119G 62e
    2,3G 700
    92G 9b5
    18G 9d5
  • https://t.me/clickhouse_ru
    cd 62e;du -sh *
  • @satanch #239086 02:56 PM, 17 Oct 2021
    119G 62e70969-e4c1-4401-bcff-c10765879ed2
  • https://t.me/clickhouse_ru
    cd 62e70969-e4c1-4401-bcff-c10765879ed2; ls -la |head -20
  • @satanch #239088 02:56 PM, 17 Oct 2021
    total 964
    drwxr-x--- 128 clickhouse clickhouse 12288 окт 17 17:56 .
    drwxr-x--- 3 clickhouse clickhouse 4096 апр 22 12:14 ..
    drwxr-x--- 2 clickhouse clickhouse 12288 мая 9 17:02 202104_1_24162_112
    drwxr-x--- 2 clickhouse clickhouse 12288 апр 30 23:59 202104_24163_24341_38
    drwxr-x--- 2 clickhouse clickhouse 4096 мая 1 00:00 202104_24342_24346_1
    drwxr-x--- 2 clickhouse clickhouse 12288 июн 26 17:00 202105_24347_379442_160
    drwxr-x--- 2 clickhouse clickhouse 12288 мая 31 23:42 202105_379443_379718_14
    drwxr-x--- 2 clickhouse clickhouse 12288 июн 5 12:09 202105_379719_379859_12
    drwxr-x--- 2 clickhouse clickhouse 12288 июн 10 16:45 202106_379860_489357_23
    drwxr-x--- 2 clickhouse clickhouse 12288 июл 21 12:53 202106_489358_720343_25
    drwxr-x--- 2 clickhouse clickhouse 12288 июл 11 01:52 202106_720344_722944_14
    drwxr-x--- 2 clickhouse clickhouse 12288 июл 6 09:36 202106_722945_723193_11
    drwxr-x--- 2 clickhouse clickhouse 4096 июл 1 00:00 202106_723194_723194_0
    drwxr-x--- 2 clickhouse clickhouse 12288 авг 4 07:29 202107_1029971_1032021_11
    drwxr-x--- 2 clickhouse clickhouse 4096 авг 1 00:31 202107_1032022_1032024_1
    drwxr-x--- 2 clickhouse clickhouse 12288 июл 26 22:13 202107_723195_829028_17
    drwxr-x--- 2 clickhouse clickhouse 12288 авг 17 18:03 202107_829029_1029970_21
    drwxr-x--- 2 clickhouse clickhouse 12288 авг 28 09:03 202108_1032025_1164887_18
    drwxr-x--- 2 clickhouse clickhouse 12288 авг 19 00:27 202108_1164888_1234943_17
  • https://t.me/clickhouse_ru
    select name , datanase from system.tables where uuid='62e70969-e4c1-4401-bcff-c10765879ed2'
  • @satanch #239091 02:58 PM, 17 Oct 2021
    а вот и виновник видимо
  • @satanch #239092 02:58 PM, 17 Oct 2021
    ссори сидел не на админском пользователе в СУБД
  • @satanch #239093 02:58 PM, 17 Oct 2021
    сейчас с админского
  • https://t.me/clickhouse_ru
    drop table system.query_log
  • https://t.me/clickhouse_ru
  • @satanch #239096 02:59 PM, 17 Oct 2021
    SQL Error [359]: ClickHouse exception, code: 359, host: 127.0.0.1, port: 16692; Code: 359, e.displayText() = DB::Exception: Table or Partition in system.query_log was not dropped.
    Reason:
    1. Size (126.67 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)
    2. File '/var/lib/clickhouse/flags/force_drop_table' intended to force DROP doesn't exist
    How to fix this:
    1. Either increase (or set to zero) max_[table/partition]_size_to_drop in server config
    2. Either create forcing file /var/lib/clickhouse/flags/force_drop_table and make sure that ClickHouse has write permission for it.
    Example:
    sudo touch '/var/lib/clickhouse/flags/force_drop_table' && sudo chmod 666 '/var/lib/clickhouse/flags/force_drop_table' (version 21.3.5.42 (official build))

    видимо действую по инструкции фикса
  • https://t.me/clickhouse_ru
    мля, читайте что вам пишут в ошибках

    sudo touch '/var/lib/clickhouse/flags/force_drop_table' && sudo chmod 666 '/var/lib/clickhouse/flags/

    drop table system.query_log
  • @satanch #239098 03:00 PM, 17 Oct 2021
    так я так и говорю))
  • @satanch #239099 03:00 PM, 17 Oct 2021
    действую по инструкции фикса))
  • @FederationR #239100 03:02 PM, 17 Oct 2021
    Всем привет! А подскажите как увидеть все партиции по определенной таблице? Вот такой запрос не работает...

    select * from system.parts WHERE table = "logs" FORMAT Vertical
  • https://t.me/clickhouse_ru
    'logs'
  • спасибо!!)
  • https://t.me/clickhouse_ru
    @den_crane #239103 03:02 PM, 17 Oct 2021
    двойные кавычки для объектов базы данных -- имен объектов
  • https://t.me/clickhouse_ru
    @den_crane #239104 03:02 PM, 17 Oct 2021
    одинарные для строк
  • https://t.me/clickhouse_ru
    @den_crane #239105 03:03 PM, 17 Oct 2021
    select * from system."parts" WHERE "table" = 'logs' FORMAT Vertical
  • спасибо, буду знать
  • да, спасибо, исполнилось, освобождения места ждать?
  • https://t.me/clickhouse_ru
    ааа, через 8 минут.

    в атомик базах данных, есть корзина, в ней лежит 8 минут после дропа.
    можно делать drop table .... sync
  • @satanch #239109 03:06 PM, 17 Oct 2021
    окей спасибо огромное!
  • https://t.me/clickhouse_ru
  • @satanch #239111 03:06 PM, 17 Oct 2021
    лучая поддержка clickhouse)
  • https://t.me/clickhouse_ru
    @Aidar_Dus #239112 03:10 PM, 17 Oct 2021
    Привет! Появилась идея для фичи(строка подключения), поревьюйте ишью, пожалуйста.
    https://github.com/ClickHouse/ClickHouse/issues/29880
    ClickHouse connection strings · Issue #29880 · ClickHouse/ClickHouse

    Use case Now you can connect to ClickHouse by specifiying separately host, port, username, password and other parameters. clickhouse-client --host=... --port=... --user=... --password=... It is alr...

  • @FederationR #239113 03:23 PM, 17 Oct 2021
    И вот такой вопрос. Есть задача хранить логи 90 дней. Каким запросом можно удалять все партиции старше 90 дней?

    ALTER TABLE logs DROP PARTITION WHERE "modification_time" <= '2021-10-17'
  • https://t.me/clickhouse_ru
    ALTER TABLE logs MODIFY SETTING ttl_only_drop_parts = 1;
    ALTER TABLE logs MODIFY TTL modification_time + INTERVAL 90 DAY;
  • Спасибо. А есть ли еще у кликхауса еще возможность удалять партиции по мере заполнения места на диске?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @den_crane #239117 03:38 PM, 17 Oct 2021
    в принципе заскриптовать это полчаса и в крон
  • https://t.me/clickhouse_ru
    @SvPupok #239118 03:58 PM, 17 Oct 2021
    Добрый день. Не подскажете, в МСК кто то проводит обучающие программы по CH? интересуют вопросы администрирования и разработки, пока что единственное на что наткнулся, это только программы от altinity
  • https://t.me/clickhouse_ru
    @dbalashov #239119 03:58 PM, 17 Oct 2021
    чота туплю и не могу придумать как разбить 2020.1.29.287 на 2020, 1, 29, 287 и отформатить как 2020.01.29.0287
  • https://t.me/clickhouse_ru
    splitByChar + lpad, либо regexReplace
  • https://t.me/clickhouse_ru
    @dbalashov #239121 04:02 PM, 17 Oct 2021
    а. я смотрел arrayMap
  • https://t.me/clickhouse_ru
    @den_crane #239122 04:03 PM, 17 Oct 2021
    SELECT
    '2020.1.29.287' AS i,
    splitByChar('.', i) AS x,
    concat(x[1], '.', leftPad(x[2], 2, '0')) AS r

    Query id: 566cb301-50ae-4daf-b132-f2f13082fbbb

    ┌─i─────────────┬─x───────────────────────┬─r───────┐
    │ 2020.1.29.287 │ ['2020','1','29','287'] │ 2020.01 │
    └───────────────┴─────────────────────────┴─────────┘
  • https://t.me/clickhouse_ru
    @dbalashov #239123 04:04 PM, 17 Oct 2021
    о круто! спасибо :)
  • https://t.me/clickhouse_ru
    @dbalashov #239124 04:05 PM, 17 Oct 2021
    тактак. Кажеца у нас нету функции leftPad :)
  • Похожую задачу решал, нужно было из представлений документов дату "выудить":
  • https://t.me/clickhouse_ru
    @dbalashov #239127 05:41 PM, 17 Oct 2021
    хмхм, порпбую, спасибо
  • @1063161973 #239128 05:41 PM, 17 Oct 2021
    WITH
    parseDateTimeBestEffort(replaceRegexpAll(substringUTF8(DataPresentation,lengthUTF8(DataPresentation) - 19),'[от]','')) AS dat
    SELECT
    dat,
    DataPresentation
    FROM
    EventLog1C.RowsData
    WHERE
    startsWith(Metadata,'Документ.')
  • https://t.me/clickhouse_ru
    @dbalashov #239129 05:42 PM, 17 Oct 2021
    я вообще и начал сначала искать как регулярку применить, но потом быстро переключился на способ попроще для сервера (как мне показалось) со split/map/concat
  • https://t.me/clickhouse_ru
    @den_crane #239130 05:50 PM, 17 Oct 2021
    Новый тип словарей HASHED_ARRAY COMPLEX_KEY_HASHED_ARRAY
    Кушает памяти меньше чем обычные (примерно в два раза больше чем непожатые данные в mergeTree) и быстрее чем sparse_hashed

    https://github.com/ClickHouse/ClickHouse/pull/30242
    https://github.com/ClickHouse/ClickHouse/issues/30236
    Added HashedArray dictionary by kitaisreal · Pull Request #30242 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Added HashedArray dictionary type.

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

    внутри все атрибуты лежат просто во flat словаре, а индекс flat находится с помощью HASHED/COMPLEX_KEY_HASHED, т.е. под капотом делается как бы два dictget

    т.е. если у словаря 500 атрибутов, то HASHED/SPARSE_HASHED будут даже грузится бесконечное кол-во времени потому что надо построить 500 хеш-таблиц
    для HASHED_ARRAY, только 1 хештаблицу и 500 массивов
  • Спасибо за информацию. Потестим на своих данных
  • https://t.me/clickhouse_ru
    @den_crane #239134 06:02 PM, 17 Oct 2021
    это будет в 21.11
  • Только на 21.8.8.29 (LTS) "переехали", ждём следующую LTS.
    Вопрос: кроме более длительной поддержки версия LTS от
    других stable-версий отличается по количеству ошибок
    (практический опыт) ?
  • https://t.me/clickhouse_ru
    нет, не отличается.

    В смысле если подождать пол-года после выхода LTS, то в ней почти не будет ошибок.
    Сейчас конечно еще рано переходить на 21.8, я в марте планирую.
  • Понятно, любая stable, как и LTS, имеет исправления в новых релизах. Просто период исправлений больше у LTS
  • https://t.me/clickhouse_ru
    @yaski #239139 07:01 PM, 17 Oct 2021
    Всем привет!
    Подскажите пожалуйста изучаю кликхаус хочу использовать как базу для хранения аналитики по времени. Есть ли на данный момент относительно простые способы реализовать вставку по одному элементу (сотню в секунду). Я вижу что в кликхаус поддерживается буфферизация и есть in-memory таблицы. Что из этого можно было бы использовать чтобы не городить сложной прослойки между базой и приложением?
  • https://t.me/clickhouse_ru
    если по одной строке вставлять, то либо Engine=buffer
    либо https://github.com/nikepan/clickhouse-bulk / https://github.com/VKCOM/kittenhouse
  • https://t.me/clickhouse_ru
    @yaski #239141 07:09 PM, 17 Oct 2021
    про киттенхаус сегодня слушал доклад
    мне бы такое решение которое бы позволяло делать select по буфферизируемым данным
    есть вариант самому делать очередь и когда нужен запрос отправлять в кликхаус и сразу запрашивать
  • https://t.me/clickhouse_ru
    @den_crane #239142 07:10 PM, 17 Oct 2021
    в 21.10 (релиз на этой неделе) будет еще один менханизм https://github.com/ClickHouse/ClickHouse/pull/27537
    Merging #20557 (Asynchronous inserts) by CurtizJ · Pull Request #27537 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Not for changelog (changelog entry is not required) Merging #20557. TODO:...

  • https://t.me/clickhouse_ru
    @den_crane #239143 07:10 PM, 17 Oct 2021
    M(Bool, async_insert_mode, false, "Insert query is processed almost instantly, but an actual data queued for later asynchronous insertion", 0)
  • https://t.me/clickhouse_ru
    А с какой версии переехали?
  • https://t.me/clickhouse_ru
    а как вы из своих данных (буферизованных) будете запрашивать?

    Engine=buffer позволяет кверять
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #239145 #239146 07:17 PM, 17 Oct 2021
    записывать в базу сразу перед чтением
  • https://t.me/clickhouse_ru
    @yaski #239147 07:17 PM, 17 Oct 2021
    событий будет несколько сотен в секунду
    а селект не чаще раза в секунду
  • https://t.me/clickhouse_ru
    @yaski #239148 07:17 PM, 17 Oct 2021
    не знаю как будет себя вести база но как вариант решения может получится
  • https://t.me/clickhouse_ru
    А гарантии у этого механизма какие будут в случае смерти сервера? Потеря данных, как и у buffer?
  • https://t.me/clickhouse_ru
    Да, никакого Wal лога нет
  • https://t.me/clickhouse_ru
    @vchernyshev #239151 08:28 PM, 17 Oct 2021
    Понятно, спасибо!
  • @githubreleases_bot #239153 b o t 10:17 PM, 17 Oct 2021
    ClickHouse/ClickHouse description changed: v21.10.2.15-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.10.2.15-stable
    Release notes:
    ClickHouse stable release v21.10.2.15-stable
    Release v21.10.2.15-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.10.2.15-stable

  • https://t.me/clickhouse_ru
    @chocosnat #239156 11:26 PM, 17 Oct 2021
    Добрый вечер! Подскажите пожалуйста как сократить количество active parts? Изменение параметров гранулярности не помогло Таблица CREATE TABLE default.mytable
    (
    `date` Date,
    `datetime` DateTime,
    `sid` String, ...) ENGINE = MergeTree
    PARTITION BY date
    ORDER BY (sid, date)
    SETTINGS index_granularity = 16384, index_granularity_bytes = 1073741824 │ где sid - это число в диапазоне от 0 до 20000, но в базе хранится в виде строки. Спасибо!
  • 18 October 2021 (152 messages)
  • https://t.me/clickhouse_ru
    Эээ, вы чего-то странное говорите про гранулярность, она вообще тут ни при чем, и sid - тоже

    >как сократить количество active parts
    эээ, зачем? Сколько у вас? Какую проблему решаем?

    Кол-во active parts зависит от PARTITION BY date, максимального размера парта (настройка), и активности инсертов. Если парты достигли макс. размера то они мержится не будут. Если инсерты слишком частые и слишком мелкие то мержить будет не успевать. Если вы храните данные за 10 лет, то при PARTITION BY date, у вас будет 10*365 active партов, и даже скорее 10*365*3 партов
  • https://t.me/clickhouse_ru
    @chocosnat #239164 06:15 AM, 18 Oct 2021
    Нужно хранить данные минимум за месяц, Каждый день получается по 20-24 parts, даже 2 недели я упираюсь в too many parts при конфигк в 300. Проблема в том как сделать 10 parts за день из 20-22. В документации я видела только min_part_size и min_part_size_ration, и что по умолчанию размер любой таблицы максимум 150 Gb, Можно управлять максимальным размером part? Как узнать что если PARTITION BY DATE то должно получаться 10 part-ов за день? INSERT максимум 16 в минуту блоками по 10k - 100K записей CSV файл, это собирается в таблице BUFFER у которой макс размер и тайм-ауты подобраны так чтобы данные копились 10-15 мин
  • https://t.me/clickhouse_ru
    @atutik #239165 06:39 AM, 18 Oct 2021
    Добрый день, подскажите с какой версии значения для select стали менее строги

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

    SELECT * FROM test_stat WHERE (user_id=5) AND (time='1634537870')
    AND (test_uuid='8a09b0fa-1868-41f3-854e-49370efbba55')
    AND (test_int64='9223372036854775807')
  • я правильно понял, что по Вашему мнению :
    со словарем - не очень хорошее решение,
    лучшее - join c возможными ограничениями внутри (SELECT * from category )
    ?
  • https://t.me/clickhouse_ru
    @sadko4u #239171 07:26 AM, 18 Oct 2021
    Интересное поведение clickhouse-client:

    OPTIMIZE TABLE files FINAL

    Query id: 6b99e0ad-7cb7-4fb7-a857-81fcfd714116

    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.
    Cancelling query.
  • https://t.me/clickhouse_ru
    @alexsss999 #239172 07:29 AM, 18 Oct 2021
    Доброго времени! Перешерстил документацию, но так и не смог найти однозначный ответ - каким образом осуществляется штатное обновление кластера из двух КХ при условии использовании кластера зукиперов. На текущий момент используется КХ 20.3.7.46. Требуется обновить до версии 21.9.4.35. Коллеги, не подскажите алгоритм действий? Останавливаем один инстанс КХ - обновляем-запускаем-проверяем логи? Потом переходим ко второй? Не будет ли проблем, если в кластере некоторое время будут КХ разных версий?
  • Чем интересно?
    попробуйте max_execution_time или receive_timeout поднять
  • https://t.me/clickhouse_ru
    поведение вполне себе ожидаемое...
    попробуйте представить себе какие процессы идут во время OPTIMIZE ... FINAL ...
    фактически много раз перечитывается и перезаписывается вся таблица ...

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

    ну еще перед обновлением лучше почитать релизы про несовместимость (слово incompatible)
    почитать
    https://clickhouse.com/docs/en/whats-new/changelog/
    и тут
    https://clickhouse.com/docs/en/whats-new/changelog/2020/

    и тут
    https://altinity.com/blog/tag/releases/
    2021 | ClickHouse Documentation

    ClickHouse release v21.10, 2021-10-16 Backward Incompatible Change Now the following MergeTree table-level settings: rep

  • https://t.me/clickhouse_ru
    Благодарю за помощь. Касательно "быстрой проверке пустился ли сервер и на месте ли данные". Это сделать из приложения? Т.е мы позволяем некоторое время использовать в кластере ноды разных версий?
  • https://t.me/clickhouse_ru
    да, это можно делать
    формат метаданных в zookeeper не менялся особо...
    но долго держать разные версии не рекомендуется...
    чтобы сильно не распозлось
  • https://t.me/clickhouse_ru
    Понял. Огромное спасибо за помощь
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #239164 #239182 08:42 AM, 18 Oct 2021
    ваша ошибка тут - "PARTITION BY date" а должно быть "PARTITION BY toYYYYMM(date)". Почему так - вам Денни достаточно подробно рассказал.
  • https://t.me/clickhouse_ru
    @chocosnat #239183 08:42 AM, 18 Oct 2021
    Спасибо!
  • А у вас ошибка какая? Если “Too many parts (300). Merges are processing significantly slower than inserts” то возможно вы просто слишком часто вставляете мелкими пачками. PARTITION BY date тут не причём
  • https://t.me/clickhouse_ru
    почему не причем
    если partition by date
    а вставка за неделю
    то на одну вставку 7 активных партов создается...
  • https://t.me/clickhouse_ru
    Использую таблицу ENGINE = Buffer('default', 'pre_buffer', 16, 300, 1500, 50000, 500000, 150000000, 200000000). С такими параметрами данные собираются в течение 10-15 минут в ней. В буфер - 32 операции INSERT в минуту для больших CSV файлов. Для нас если иногда потеряются данные - ничего страшного
  • https://t.me/clickhouse_ru
    @madm1ke #239187 09:05 AM, 18 Oct 2021
    Привет!

    Вижу в логах вот такое, несколько раз в секунду. А есть ли шанс понять, откуда эта ошибка? Хотя бы к какому типу хоста, в каком процессе он не может приконнектиться?

    2021.10.18 12:03:51.202288 [ 16074 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 107, Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):

    0. Poco::Net::SocketImpl::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x1437086e in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::peerAddress() @ 0x14372816 in /usr/bin/clickhouse
    2. DB::HTTPServerRequest::HTTPServerRequest(std::__1::shared_ptr<DB::Context const>, DB::HTTPServerResponse&, Poco::Net::HTTPServerSession&) @ 0x117c252b in /usr/bin/clickhouse
    3. DB::HTTPServerConnection::run() @ 0x117c138e in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x1437788f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x1437931a in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x144ac199 in /usr/bin/clickhouse
    7. Poco::ThreadImpl::runnableEntry(void*) @ 0x144a842a in /usr/bin/clickhouse
    8. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    9. __clone @ 0x12188f in /lib/x86_64-linux-gnu/libc-2.27.so
  • ну если сразу одним инсертом за месяц вставлять то да(
  • https://t.me/clickhouse_ru
    tcpdump -w http.cap -c 10000 port 8123
    сделайте и посмотрите какие IP закрывают соединения...
  • Я не очень понял контекста, это обычные селекты на обычном кликхаусе?
  • https://t.me/clickhouse_ru
    ну если 7 инсертов каждый отдельная дата одновременно тоже будет 7 партов
    10 запросов в секунду и уже 70 активных партов...
  • https://t.me/clickhouse_ru
    Если бы. По 20+ active parts за предыдущие дни и по 10..70 active parts за сегодня. И iowait под 50% в рабочие часы. Медленные диски, возможности сменить дисковую полку нет. Пишутся логи в риал тайме от кучи машин, 32 пишущих модуля
  • https://t.me/clickhouse_ru
    Да.
  • так ошибка же падает если число партов в 1 партиции больше parts_to_throw_insert насколько я понимаю, тоесть если мы делаем 7 инсертов за разные даты, то они могут создавать по 100 партов каждый и всё будет ок. это не так?
  • https://t.me/clickhouse_ru
    а это закрытие именно входящего соединения к CH, не исходящего от него?
  • https://t.me/clickhouse_ru
    @liplip23 #239197 09:38 AM, 18 Oct 2021
    Всем привет! Предлагаю на рассмотрение вакансию в Cбере (департамент SberData) #вакансия #москва #офис #fulltime # ClickHouse #полнаязанятость #разработчик # #сбербанк
    Вакансия: Системный разработчик ClickHouse
    Город: Москва (м.Тульская)
    Компания: Sber
    Заработная плата: от 200 тыс. руб. на руки и выше

    Мы создаем команду для разработки продукта построенного на базе OpenSource ClickHouse. Перед командой стоят амбициозные цели построить уникальную инфраструктуру по хранению и обработки данных на базе решений ClickHouse. Команда решает задачи интеграции ClickHouse с сервисами Корпоративной Аналитической Платформы, построения инфраструктуры обработки данных с использованием технологии ClickHouse. Оказывает архитектурную поддержку командам разработки и совместно с ними ищет наилучшие и самые производительные решения прикладных задач, доработки ClickHouse под уникальные задачи Сбера.

    Обязанности:
    • Разработка ядра ClickHouse
    • Консалтинг по вопросам производительности СУБД
    • Построение архитектуры межсистемного взаимодействия
    • Разработка собственной сборки на базе Open Source решений ClickHouse
    • Интеграция с ClickHouse c ядровыми сервисами КАП
    Требования:
    • Опыт работы с linux-системами
    • Опыт работы с С++
    • Хорошие знания ClickHouse
    • Желание и возможность разбираться в сложных проблемах
    • Умение работать в стрессовых ситуациях
    • Английский язык на уровне свободного чтения технической документации
    Условия:
    • Гибкий график для оптимального баланса работы и личной жизни.
    • Бесплатный фитнес-зал в БЦ.
    • Профессиональное обучение, семинары, тренинги, конференции, корпоративная библиотека.
    • ДМС, страхование жизни.
    • Самые инновационные, амбициозные проекты и задачи.
    • Свободный дресс-код.
    • Льготные кредиты и корпоративные скидки.
    • Конкурентная компенсация (оклад и премии по результатам деятельности).

    По всем вопросам, прошу писать в @liplip23
  • @nahsi_at_tg #239198 09:55 AM, 18 Oct 2021
    Вот вы разрешили тут вакансиями спамить, щас набегут к вам. Ваше дело конечно, но я бы отдельный канал под такое завел
  • https://t.me/clickhouse_ru
    DB::HTTPServerRequest::HTTPServerRequest
    Poco::Net::TCPServerConnection::start

    вроде да
  • Хорошо бы было как-нибудь забодать эту ошибку, хотя бы для /health эндпоинта. Иначе если “проверялка” не закрывает соединение правильно (указывая в хттп Connection: close), то КХ начинает плеваться в логи и забивает полезную информацию.
  • https://t.me/clickhouse_ru
    health endpoint что это?

    есть же /ping

    делайте нормальную HTTP проверялку...
    у вас что вообще? docker -compose или k8s ?
  • https://t.me/clickhouse_ru
    @alexsss999 #239203 10:20 AM, 18 Oct 2021
    Доброго времени! Коллеги подскажите играет ли роль разброс по времени на серверах кластера КХ? На тех серверах что вижу разница достигает 5 мин (контур закрытый, инета нет, нтп-сервера не сделали). Большинство кластеров весьма негативно относятся к разнице и в 10 сек, а тут минуты. С другой стороны - кластер воркает.
  • https://t.me/clickhouse_ru
    Допускаю, что могут быть проблемы с репликацией.

    Или высокие absolute_delay для таблиы
  • https://t.me/clickhouse_ru
    @unamedrus #239205 10:22 AM, 18 Oct 2021
    можно посмотреть в system.replicas таблице
  • https://t.me/clickhouse_ru
    @alexsss999 #239206 10:25 AM, 18 Oct 2021
    absolute_delay по нулям для всех таблиц
  • https://t.me/clickhouse_ru
    Ну тогда ок, но если будут проблемы с репликацией то стоит посмотреть сразу в эту сторону
  • Да, я про пинг. У нас внешняя проверялка, может работать с хттп или тцп. Для хттп оно закрывает соединение после получения ответа, но не указывает это в хэдере. Поменять это нельзя, не в моей "собственности".
  • @softbot_xxl #239211 11:18 AM, 18 Oct 2021
    Идеально, КХ не должен ругаться в лог если соединение рвется, но не посередине запроса. C MySQL такой проблемы нет, там мы использует проверку по tcp.
  • @softbot_xxl #239212 11:19 AM, 18 Oct 2021
    Я смотрел на код и видел, что просто используется поко, который по умолчанию кидает вроде исключение.
  • https://t.me/clickhouse_ru
    ну, долбите тех кто делает кривые проверки

    не вычитывая ответ до конца
  • https://t.me/clickhouse_ru
    можете прислать PR в ClickHouse
  • Да, я хочу, но пока руки не доходят.
  • Т.е. опрокинулся отправитель, на простом запросе, для которого загрузка всех данных в память не требуется?
  • https://t.me/clickhouse_ru
    @klink0v #239219 12:21 PM, 18 Oct 2021
    Нет. У получателя не хватает памяти, чтобы залить туда данные с отправителя, если начинаю перекачивать "в один поток".
  • Тогда понятно. Наверное, объем данных и партиционирование настроены таким образом, что распакованный чанк не помещается в память
  • https://t.me/clickhouse_ru
    Ну то есть вот так не получилось:

    clickhouse-client -h 1.2.3.4 --user=default --database=bigbrother -q "SELECT * FROM log FORMAT CSV" | clickhouse-client -d smallbrother -u vasya --password=superpassword -q "INSERT INTO log FORMAT CSV"

    Пришлось делать вот так:

    clickhouse-client -h 1.2.3.4 --user=default --database=bigbrother -q "SELECT * FROM log WHERE date BETWEEN '"2020-10-$from"' and '"2020-10-$to"' FORMAT CSV" | clickhouse-client -d smallbrother -u vasya --password=superpassword -q "INSERT INTO log FORMAT CSV"

    Где гонять в цикле переменные $from и $to, чтобы переливать порциями по одному дню.
  • https://t.me/clickhouse_ru
    @eminshakh #239222 12:35 PM, 18 Oct 2021
    Не могу полностью осознать, что такое колоночная база. Можете рассказать или дать ссылку на хорошее объяснение?
  • https://t.me/clickhouse_ru
    Данные хранятся колонками)
  • https://t.me/clickhouse_ru
    Не обращайте внимания. Это нормальное поведение. Ничего там не отменяется. Таймаут можно увеличить до 7200, чтобы было меньше дурацких сообщений.
  • https://clickhouse.com/docs/ru/engines/table-engines/
    Можно вдумчиво прочитать этот раздел, с упором на организацию данных на диске и алгоритмическую сложность операций над ними
    Введение | Документация ClickHouse

    Движки таблиц Движок таблицы (тип таблицы) определяет: Как и где хранятся данные, куда их писать и откуда читать. Какие

  • https://t.me/clickhouse_ru
    @eminshakh #239227 01:14 PM, 18 Oct 2021
    Спасибо
  • https://t.me/clickhouse_ru
    Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- РИТ++ 2017, Backend Conf Тезисы: http://backendconf.ru/2017/abstracts/2803.html ClickHouse - высокопроизводительная аналитическая база данных с открытыми исходниками, разработанная в Яндексе. Изначально ClickHouse создавался для задач Яндекс.Метрики, но постепенно нашёл множество применений как внутри Яндекса, так и в других компаниях. Я расскажу, как ClickHouse устроен внутри с акцентом на то, какие у выбранной архитектуры следствия с точки зрения прикладного разработчика. Будут затронуты следующие темы: - Как ClickHouse хранит данные на диске и выполняет запрос, почему такой способ хранения позволяет на несколько порядков ускорить аналитические запросы, но плохо подходит для OLTP и key-value нагрузки. - Как устроена репликация и шардирование, как добиться линейного масштабирования и что делать с eventual consistency. - Как диагностировать…

  • https://t.me/clickhouse_ru
    @Diroman #239229 02:09 PM, 18 Oct 2021
    привет, у кого был опыт подключения кафки?
    создал таблицы
    CREATE TABLE tracking_log_kafka_raw
    (
    jsonString String
    ) ENGINE = Kafka
    SETTINGS
    kafka_broker_list = 'kafka:9092',
    kafka_topic_list = 'tracking_log_new',
    kafka_group_name = 'clickhouse_group_raw',
    kafka_format = 'JSONAsString’

    create table tracking_log_replica_new
    (
    timestamp DateTime,
    guid String,
    …..
    )
    engine = MergeTree()
    PARTITION BY toYYYYMMDD(timestamp)
    ORDER BY (…)
    SETTINGS index_granularity = 8192;
    и матвью поверх
    CREATE MATERIALIZED VIEW default.consumer_raw TO default.tracking_log_replica_new
    AS
    SELECT FROM_UNIXTIME(JSONExtractInt(JSONExtractRaw(jsonString, 'timestamp'), 'seconds')) as timestamp,
    JSONExtractString(jsonString, 'hwid') as guid
    ….
    FROM default.tracking_log_kafka_raw;

    Данные читаются из кафки, но не тригерят вьюху
    Проверял парсинг входного json`a через insert - всё ок
    Что может быть не так с матвью?
  • @chashnikov #239232 02:42 PM, 18 Oct 2021
    Приветствую, почему следующий запрос не возвращает 1?
    SELECT toDecimal128(1, 24) / toDecimal128(1, 24)

    ┌─divide(toDecimal128(1, 24), toDecimal128(1, 24))─┐
    │ 0.000000000018960114910927 │
    └─────────────────────────┘
  • https://t.me/clickhouse_ru
    @bububup #239233 02:45 PM, 18 Oct 2021
    Всем привет!
    💚Вакансия: Marketing Analyst B2B
    Компания: Сбермаркет
    Расположение: г.Москва, м.Новокузнецкая
    Формат: офис/ удаленно/ офис+удаленно
    Кто мы?
    💚Sbermarket.ru (ex-Instamart) – стартап по доставке продуктов из супермаркетов. Мы помогаем людям освободить время под что-то более важное, чем очереди в магазинах. За последние 2 года мы выросли в 70 раз и стали одним из крупнейших игроков на рынке e-grocery.
    💚У нас сильная команда, собранная из Яндекс, Avito, Ozon, Mail.ru, SkyEng, Gett, McKinsey, GoldmanSachs и тд. Эти люди будут прокачивать тебя и, надеемся, ты нас тоже научишь многому.
    💚Что нужно делать:
    -Стать ключевым партнером B2B, отвечающим за эффективное привлечение и удержание клиентов
    -Оценивать эффективность проектов (в том числе – при помощи А/Б тестов) и делать бизнес-выводы вместе с командой маркетинга
    -Строить понятные и полезные дашборды, участвовать в настройке сквозной аналитики
    💚Наш стек: Python, Clickhouse, Presto, Tableau, Metabase, Gitlab
    💚Почему у нас круто?
    -Быстро принимаем решения и их тестируем. Без бюрократии и мучительных согласований.
    -Развиваемся сами и развиваем команду. Ходим на курсы, тренинги — их оплачивает компания. Если нужно, проводим внутренние митапы.
    -Опираемся на исследования и метрики, аккуратно следим за консистентностью и пикселями.
    -Делаем полезный продукт, который бережёт время для важного. Им пользуются миллионы людей (мы и сами им пользуемся).
    -Уважаем время и силы других. Не проводим созвоны, если не нужны. Готовимся перед выступлением, чтобы сообщать только важное.
    Где можно ознакомиться с вакансией?
    💚С вакансией можно ознакомиться здесь: https://www.notion.so/Marketing-Analyst-B2B-4f2a8c7c4d6e47e0ba8730a7af8f1758
    💚Что дальше?
    Отклики можно оставлять на alena.krasnonosova@sbermarket.ru или мне в тг @bububup
    Мы активно растем, поэтому у нас есть и другие вакансии, которые могут быть интересны;)
  • https://t.me/clickhouse_ru
    @proxeter #239234 03:14 PM, 18 Oct 2021
    Всем привет. Подскажите, пожалуйста: после удаления MV что-то пошло не так и осталась .inner_id.<uuid> от него, которая продолжает всасывать в себя данные. Какой правильный путь ее удаления?
  • https://t.me/clickhouse_ru
    просто селект из кафки таблицы что показывает?
  • https://t.me/clickhouse_ru
    ну баг
  • https://t.me/clickhouse_ru
    Показывает строку с json'ом, как и предполагалось
  • https://t.me/clickhouse_ru
    странно, но тогда пустые строки все равно должны записываться в таблицу
  • https://t.me/clickhouse_ru
    что пошло не так?
    значит MV не удалилось вообще
  • https://t.me/clickhouse_ru
    По идее после вычитки строки должны удаляться, а они остаются в таблтце с кафкой
  • https://t.me/clickhouse_ru
    в логе КХ тогда будут ошибки про парсинг.

    для теста сделайте MV которое просто пишет в таблицу строку, без изменений, а потом попробуйте из этой таблицы распарсить селектом
  • https://t.me/clickhouse_ru
    @ilejn #239243 04:10 PM, 18 Oct 2021
    Добрый вечер, прочитал рассказы Алексея про WAL от 14.09.
    Правильно ли я понимаю, что речь идет про структуры данных в памяти, и для инкрементального бэкапа это никак не полезно?
  • https://t.me/clickhouse_ru
    WAL это для in memory партов,
    (и эту фичу не оч развивают сейчас)

    С бекапами не связано.
  • https://t.me/clickhouse_ru
    @ilejn #239245 04:12 PM, 18 Oct 2021
    Ага.
    Не связано с бэкапами и в планах тоже?
  • https://t.me/clickhouse_ru
    Ну кх же хранит все в партах, которые иммутабельны.

    Так что WAL ему для бекапов совсем не нужен, кмк.

    Возможно WAL нужен будет для транзакций, но мб там вообще свой WAL будет.
  • https://t.me/clickhouse_ru
    @ilejn #239247 04:22 PM, 18 Oct 2021
    Действительно иммутабельны? Разве есть гарантия, что старые парты не будут объединены?
    Мне казалось, что бест практисы инкрементал бэкапов с использованием снэпшотов файловой системы появились не так просто.
  • https://t.me/clickhouse_ru
    Сами парты не изменяются, при мерже новые создаются
  • https://t.me/clickhouse_ru
    @nyoroon #239249 04:33 PM, 18 Oct 2021
    при ALTER UPDATE/DELETE тоже
  • https://t.me/clickhouse_ru
    @ilejn #239250 04:34 PM, 18 Oct 2021
    Но новые создаются _вместо_ старых, правда же?
  • https://t.me/clickhouse_ru
    @nyoroon #239251 04:34 PM, 18 Oct 2021
    да
  • https://t.me/clickhouse_ru
    @ilejn #239252 04:35 PM, 18 Oct 2021
    Это значит, что мир иммутабельности партов существует немного отдельно от мира бэкапов.
  • https://t.me/clickhouse_ru
    @ilejn #239253 04:36 PM, 18 Oct 2021
    ... и эти миры нужно хитро связывать друг с другом.
  • https://t.me/clickhouse_ru
    @nyoroon #239254 04:36 PM, 18 Oct 2021
    можно посмотреть как работает clickhouse-backup
  • https://t.me/clickhouse_ru
    @ilejn #239255 04:37 PM, 18 Oct 2021
    AFAIK для инкрементальных бэкапов ему необходимы снэпшоты S3 или ZFS. Но, да, посмотрю.
  • https://t.me/clickhouse_ru
    @nyoroon #239256 04:38 PM, 18 Oct 2021
    в кликхаусе можно делать "снепшоты" даже без использования специальных ФС с помощью FREEZE PART
  • https://t.me/clickhouse_ru
    @nyoroon #239257 04:38 PM, 18 Oct 2021
    там хардлинки на парты создаются и сами парты не удаляются пока они существуют
  • https://t.me/clickhouse_ru
    @ilejn #239258 04:39 PM, 18 Oct 2021
    Это понятно. И полезно для полного бэкапа.
    Но для инкрементального, кажется, не хватает еще какого-то ингредиента.
  • https://t.me/clickhouse_ru
    @nyoroon #239259 04:39 PM, 18 Oct 2021
    clickhouse-backup уже это всё умеет
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #239259 #239260 04:41 PM, 18 Oct 2021
    Похоже, вы правы. Посмотрю внимательнее. Спасибо.
  • https://t.me/clickhouse_ru
    инкрементальные бекапы это банально забекапить новые парты, которых не было в пред. бекапе и удалить те которых уже нет

    clickhouse-beckup это умеет, но он сравнивает локально
    он пока не умеет сравнивать локальный бекап с remote
  • https://t.me/clickhouse_ru
    @den_crane #239263 05:06 PM, 18 Oct 2021
    WAL тут не поможет, это бессмысленно пытаться писать все данные в WAL, это убъет весь перфоманс, да и займет такой WAL кучу диска
  • https://t.me/clickhouse_ru
    @nyoroon #239264 05:07 PM, 18 Oct 2021
    можно использовать кафку как WAL /s
  • https://t.me/clickhouse_ru
    @ilejn #239265 05:22 PM, 18 Oct 2021
    Кажется, мы знаем некоторое количество СУБД, в которых wal пишется на диск. Он последовательный.
    Ну то есть "бессмысленно" все же слишком сильно imho.
  • https://t.me/clickhouse_ru
    они обычно гораздо меньше данных обрабатывают
  • https://t.me/clickhouse_ru
    @nyoroon #239267 05:28 PM, 18 Oct 2021
    и скорость вставки там заметно ниже
  • https://t.me/clickhouse_ru
    OLAP ?
    хотя надо в гринплам посмотреть, может действительно так
  • https://t.me/clickhouse_ru
    @den_crane #239269 05:45 PM, 18 Oct 2021
    OLTP базам wal нужен для aciD
  • https://t.me/clickhouse_ru
    не знаю
  • https://t.me/clickhouse_ru
    300 партов это ограничение на партицию
  • https://t.me/clickhouse_ru
    со словарем это хорошее решение, но только если layout не direct. Я предлагал проверить какой будет перформанс если эмулировать коррелированные подзапросы через direct словарь
  • https://t.me/clickhouse_ru
    надо искать что делал [ 16074 ] до этого
  • https://t.me/clickhouse_ru
    @chocosnat #239275 05:53 PM, 18 Oct 2021
    Смотрите, какой интересный эффект. Я сменила PARTITION BY date => PARTITION BY toYYYYMMDD(date) В результате у меня количество parts увеличилось в несколько раз, а операции merge стали очень тяжелыми - по 400-600 секунд каждая, хотя раньше было полно легких. Если я переделаю PARTITION BY date => PARTITION BY toYYYYMMDD(date) => PARTITION BY date => PARTITION BY toYYMMDD(date) то parts станет меньше или нет? И можно понять как работают мержи (не алгоритмы склейки, а как влияет размер ключа на количество parts, как часто выполняются операции merge etc) - где-либо кроме исходников и документации тут? https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/mergetree/#mergetree-data-storage
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    сначала ищем проблему, потом решение

    PARTITION BY date => PARTITION BY toYYYYMMDD(date) -- это одно и тоже, вы себе в ногу стреляете
  • https://t.me/clickhouse_ru
    >Если я переделаю PARTITION BY date => PARTITION BY toYYYYMMDD(date) => PARTITION BY date => PARTITION BY toYYMMDD(date)
    не надо ничего переделывать сломя голову
  • https://t.me/clickhouse_ru
    >И можно понять как работают мержи (не алгоритмы склейки, а как влияет размер ключа на количество parts, как часто выполняются операции merge
    не надо. Я например не понимаю, и мне это не мешает
  • https://t.me/clickhouse_ru
    Вижу, что это была обработка входящего инсерта по http интерфейсу:

    2021.10.18 20:57:11.812534 [ 3804 ] {} <Trace> HTTPHandler-factory: HTTP Request for HTTPHandler-factory. Method: POST, Address: 10.247.135.20:35226, User-Agent: AdServer, Length: 20, Content Type: text/plain; charset=UTF-8, Transfer Encoding: identity, X-Forwarded-For: (none)
    2021.10.18 20:57:11.812677 [ 3804 ] {} <Trace> DynamicQueryHandler: Request URI: /?query=INSERT+INTO+Distributed.CLog+%28ts%2Curl_id%2Crequest_uri%2Credirect_url%2Cis_complete_redirect%2Ccountry%2Ccountry_region%2Cip%2Cuseragent%2Chttp_referer%29+FORMAT+TabSeparated
    2021.10.18 20:57:11.813042 [ 3804 ] {b432649c-0feb-4d24-9e26-9fce7c78096b} <Debug> executeQuery: (from 10.247.135.20:35226) INSERT INTO Distributed.CLog (ts,url_id,request_uri,redirect_url,is_complete_redirect,country,country_region,ip,useragent,http_referer) FORMAT TabSeparated
    2021.10.18 20:57:11.813245 [ 3804 ] {b432649c-0feb-4d24-9e26-9fce7c78096b} <Trace> ContextAccess (default): Access granted: INSERT(ts, url_id, request_uri, redirect_url, is_complete_redirect, country, country_region, ip, useragent, http_referer) ON Distributed.CLog
    2021.10.18 20:57:11.814101 [ 3804 ] {b432649c-0feb-4d24-9e26-9fce7c78096b} <Trace> ParallelParsingInputFormat: Parallel parsing is used
    2021.10.18 20:57:11.814825 [ 3804 ] {b432649c-0feb-4d24-9e26-9fce7c78096b} <Debug> DynamicQueryHandler: Done processing query
    2021.10.18 20:57:11.814861 [ 3804 ] {b432649c-0feb-4d24-9e26-9fce7c78096b} <Debug> MemoryTracker: Peak memory usage (for query): 0.00 B.
    2021.10.18 20:57:11.816040 [ 3804 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 107, Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    насколько я понял читая все ваши сообщения, а толком вы вообще ничего не сказали, у вас проблема в том что у вас мириады мелких инсертов и очень медленный диск.

    1 Сколько инсертов вы делаете в секунду?
    2 Сколько в среднем грубо округлив вставляет один инсерт?
    3 Что такое медленный диск ?
    4 Сколько полей в таблице примерно в десятках, сотнях?
  • https://t.me/clickhouse_ru
    я думаю инсерт просто отвалился, потому что клиент упал или сеть
  • доброго вечера!
    Спасибо вам за фикс с ТЗ, но у нас что-то после обновления все вообще стало не так работать с таймзонами =)
    будем очень признательны если сможете посмотреть:
    https://github.com/DarkWanderer/ClickHouse.Client/pull/92
    Спасибо!
  • https://t.me/clickhouse_ru
    @chocosnat #239284 06:16 PM, 18 Oct 2021
    У нас 2 таблицы: 1) 32 записи в минуту. Используем буфер. Размер и таймаут буфера подобраны таким образом чтобы собирать записи за 10-15 минут и только потом сбрасывать их на диск, памяти достаточно 2) запись. 32 пишущих источника, раз в минуту каждый из них передают CSV файл - не мелкие единичные инсерты, а вставки по 1k-5k записей за каждую операцию. Каждая запись в пределах 6k 4) в таблице 25-27 полей, размер каждой записи по всем полям в сумме не больше 6Kb 5) дисковая полка - raid10, на HGST HUS726040AL. Все работало, но захотели улучшить. Вроде бы не меняли ничего кроме ORDER BY. В один момент получили iowait 30-40% вместо 3-4% и кучу файлов в parts. Варианта таблиц до переделки у меня не сохранилось (nginx mirror + еще один CH для тестов появился слишком поздно). Вот я уже 2 недели пытаюсь вернуть все в состояние как было до переделок (максимум 7-8 файлов в день для таблицы за вчера/ позавчера, и не больше 20 за сегодня в которые пишется, небольшой iowait), и не получается
  • https://t.me/clickhouse_ru
    единственное странное, что я нашел - memory used - 0
  • partition by точно не меняли? колонка date - тип Date или DateTime?
    скорее всего вы увеличили или уменьшили гранулярность партиций...

    был случай когда неудачный order by все портил в плане компрессии и ничего не сжималось, но это надо "постараться"
  • https://t.me/clickhouse_ru
    @chocosnat #239287 06:27 PM, 18 Oct 2021
    │ CREATE TABLE default.test_table
    (
    `date` Date,
    `datetime` DateTime,
  • https://t.me/clickhouse_ru
    @chocosnat #239288 06:27 PM, 18 Oct 2021
    PARTITION BY Date
  • https://t.me/clickhouse_ru
    пробовали 8192 и 16384 - не помогло
  • Я не это имел ввиду под гранулярностью (имел ввиду месяц, лень, час). Эта вообще не влияет...
  • https://t.me/clickhouse_ru
    @chocosnat #239291 06:31 PM, 18 Oct 2021
    ORDER BY (date, текстовое_поле со значениями '1' ... '20000'),. унаследованная часть системы )
  • Сбор метрик включен в прометеус? Там можно было бы проще поискать
  • https://t.me/clickhouse_ru
    @chocosnat #239293 06:35 PM, 18 Oct 2021
    нет. Какие метрики стоит глянуть? Сделаю через заббикс
  • https://t.me/clickhouse_ru
    @rvkggwp #239294 06:51 PM, 18 Oct 2021
    Добрый вечер. Может кто-нибудь просветить меня в таком вопросе. Как обстоят дела в clickhouse с запросами для поиска последней записи или последних 5 записей. Прочел статью (https://altinity.com/blog/clickhouse-for-time-series). Она старая, может в clickhouse за это время что-то поменялось? Можно подкинуть статью, где почитать, заранее спасибо.
    ClickHouse Crushing Time Series

    Nov 15, 2018Once upon a time we spotted TSBS (https://github.com/timescale/tsbs) -- Time Series Benchmark Suite, started by InfluxDB engineers and polished to perfection by TimescaleDB team. The suite allows to compare apples-to-apples when testing different databases: it is a framework to generate test data, load it to different databases, run test queries, and collect statistics to analyse. We could not resist adding ClickHouse to the list of supported databases. It turned out that ClickHouse --- being a general purpose analytical DBMS -- stands very well against proven time series databases. Those benchmarks highlighted strengths and weaknesses of different technologies. Interested? Let’s dig into details.

  • https://t.me/clickhouse_ru
    проверьте raid
    покажите sad -d 1 100
  • https://t.me/clickhouse_ru
    >дисковая полка - raid10, на HGST HUS726040AL
    сколько дисков ?
  • https://t.me/clickhouse_ru
    о боже, не надо это трогать. Это вообще из другой сказки.
  • https://t.me/clickhouse_ru
    пока очень похоже на деградацию рейда
  • BackgroundPoolTask
    Merge
    DiskSpaceReservedForMerge
    PartsPreCommitted
    PartsCommitted
    PartsOutdated
    PartsDeleting

    ну и сеттинги посмотрить.
    select * from system.metrics where metric like '%Back%';

    вообще да, раз почти ничего не меняли - проблема в железе/ОС/ещё где
  • https://t.me/clickhouse_ru
    @michailmarketplace #239300 07:36 PM, 18 Oct 2021
    Подскажите плз, сильно ли дороже жить на облаках, какие бы порекомендовали рассмотреть? Сейчас 10 железных серверов с отличными нвме и 32 ядрами, утилизация высокая
  • любое облако (именно облако) к цене чистого железа в среднем 9 месяцев на break-even.
    Другое дело что другие расходы на персонал у всех могут быть разные. Если держать людей только ради этих 10 серверов -облако выгоднее. Если 10 это 10 из *** тогда дороже.
    Ну и плюс облако "резиновое".
  • https://t.me/clickhouse_ru
    в 10 раз дороже чем аренда такого сервера в хецнере.
  • https://t.me/clickhouse_ru
    @Roman_Yarantsev #239303 07:51 PM, 18 Oct 2021
    Всем привет!
    Столкнулся с такой ошибкой:
    При попытке выполнить простой запрос
    '''select *
    from system.mutations
    where is_done = 0'''
    Этот запрос откушивает гору памяти и вешается навечно. Не сталкивались с таким поведением?
  • https://t.me/clickhouse_ru
    Блин, я отказывался в это верить, казалось, что не учитываю что то важное и там какие то особенные vcpu и особенные гигабайты... Суровая разница в цене конечно
  • спс - буду пробовать
  • https://t.me/clickhouse_ru
    @michailmarketplace #239306 07:54 PM, 18 Oct 2021
    DJ, Denny, спасибо
  • https://t.me/clickhouse_ru
    сталкивались. Перезагрузка КХ, ручное удаление мутаций. Таблицы replicated?
  • https://t.me/clickhouse_ru
    Да, таблицы replicated, перезагрузка помогает. В чём кроется секрет такого поведения?
  • https://t.me/clickhouse_ru
    что показывает select count() from system.replication_queue ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а какая версия КХ ?
  • https://t.me/clickhouse_ru
    Тупанул, ночь....replacingMergeTree, таблицы не replicated
  • https://t.me/clickhouse_ru
    21.5.9.4
  • https://t.me/clickhouse_ru
    поставьте 21.8.8.29 (но тестировать надо на стейдже)
  • https://t.me/clickhouse_ru
    Был bugfix по этому поводу?
  • https://t.me/clickhouse_ru
    да много всего было.

    вы сколько мутаций в день запускаете?
  • https://t.me/clickhouse_ru
    судя по query_log от 200 до 400 запросов, попадающих под мутации,навскидку
  • https://t.me/clickhouse_ru
    @s_ageev #239318 08:46 PM, 18 Oct 2021
    Добрый вечер!
    Создаю две таблички ReplicatedReplacingMergeTree с одинаковой структурой, но одну из них с опцией index_granularity=512
    Делаю одинаковые запросы с группировкой по полям из ключа сортировки.
    В результате имею следующую производительность.
    1. Табличка с index_granularity по умолчанию
    Elapsed: 0.303 sec. Processed 33.22 million rows, 1.56 GB (109.68 million rows/s., 5.16 GB/s.)

    2. Табличка с index_granularity=512
    Elapsed: 0.449 sec. Processed 15.93 million rows, 674.70 MB (35.50 million rows/s., 1.50 GB/s.)

    Как можно заметить, в первом случае с диска прочитано почти в 2 раза больше строк данных, но запрос отработал быстрее чем во втором случае.
    Соответсвенно вопрос.
    Почему так? Ведь по логике, при уменьшении гранулярности увеличивается размер индекса в памяти и клику нужно меньше данных считывать с диска для обработки запроса. По факту, хоть и меньше данных считали, но сам запрос работает дольше.
  • например надо больше раз читать, вы читаете в ~2 раза меньше строк, но делаете это в 8192 / 512 = 16 раз менее эффективно. Имеет смысл ставить маленькую гранулярность только если вам надо вычитавыть единичные строки.
  • https://t.me/clickhouse_ru
    Спасибо! Какие опции клика можно еще глянуть, для ускорения выборки? Сейчас в обоих вариантах пиковый расход памяти около 1GB, можно ли выделить больше памяти для ускорения запроса?
  • неплохо было бы показать как создана таблица и что за запрос, возможно вам поможет optimize_aggregation_in_order = 1 если ещё не включен
  • https://t.me/clickhouse_ru
    Спасибо! optimize_aggregation_in_order = 1 не дает эффекта (
  • https://t.me/clickhouse_ru
    @Diroman #239323 09:16 PM, 18 Oct 2021
    Писал сегодня про кафку, так и не смог победить
    Матвью наотрез отказывается реагировать на таблицу для кафки с типом JSONAsString
    В таблицу строки кладутся корректно, но вьюха оттуда их не читает, в логах ошибок нет
  • в слепую (ни запроса, ни трейсов) очень сложно...

    max_bytes_before_external_group_by=0,group_by_two_level_threshold=0,group_by_two_level_threshold_bytes=0,optimize_move_to_prewhere=0
  • https://t.me/clickhouse_ru
    Спасибо! Пойду изучать!
  • https://t.me/clickhouse_ru
    optimize final делался? возможно тупо партов было больше случайно.
    возможно меньше было потоков, хотя на миллионах строк гранул бы должно хватить.
    потоки делят работу с помощью гранул
    SET send_logs_level = 'trace';
    дальше запрос и получаете трассу
  • https://t.me/clickhouse_ru
    с простой mat.view без jsonextract тоже так?
  • https://t.me/clickhouse_ru
    optimize final делался. Спасибо, буду трейс изучать
  • https://t.me/clickhouse_ru
    @bralbral #239330 10:13 PM, 18 Oct 2021
    Подскажите, как организовать партиционирование по кастомному интервалу, например 15 дней или 2 месяца. В примерах нашел только стандартные приведения к началу месяца/недели/дня.
  • https://t.me/clickhouse_ru
    tostartofinterval
  • https://t.me/clickhouse_ru
    Оно, благодарю.
  • https://t.me/clickhouse_ru
    @unamedrus #239333 10:21 PM, 18 Oct 2021
    Но я бы дважды подумал, надо ли вам оно
  • @githubreleases_bot #239334 b o t 11:27 PM, 18 Oct 2021
    ClickHouse/ClickHouse tagged: v21.8.9.13-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.8.9.13-lts
    Release notes:
    v21.8.9.13-lts
  • 19 October 2021 (244 messages)
  • https://t.me/clickhouse_ru
    @serikzhilibayev #239336 04:05 AM, 19 Oct 2021
    Всем здравствуйте, у меня база заполнена на 100% (3ТB). Таблица партиционируется по YYYYMMDD. И мы решили поставить TTL на год, чтобы избавится от устаревших данных. Но база совсем не реагирует. Уже день как прошел. В чем может быть проблема? Спасибо
  • @danyakurbatov #239337 04:33 AM, 19 Oct 2021
    Доброе утро! Ссылка на митап не пришла, это у всех так ?
  • https://t.me/clickhouse_ru
    Доброе утро, мне тоже не пришла до сих пор.
  • https://t.me/clickhouse_ru
    С JSONEachRow адекватно работает
  • Насколько я помню там места нужно x2 от большого парта.
  • https://t.me/clickhouse_ru
    @VitaliySergunin #239342 05:36 AM, 19 Oct 2021
    Всем привет!
    Простите за глупый вопрос: как проверить наличие значения в списке (List) в clickhouse?
    Пробовал ListHasItems(ListFilter(kv_values, '%1634576689094/d7f5b3d2bbd68df49060e98aa3ce0500/10/9/3/1%'))
    получаю ругань
  • @cheetahfm #239343 05:37 AM, 19 Oct 2021
    Привет. Пробую вызвать пример со страницы https://clickhouse.com/docs/en/sql-reference/table-functions/s3/
    INSERT INTO TABLE FUNCTION s3('http://bucket.amazonaws.com/my_bucket/file_{_partition_id}.csv', 'CSV', 'a String, b UInt32, c UInt32')
    PARTITION BY a VALUES ('x', 2, 3), ('x', 4, 5), ('y', 11, 12), ('y', 13, 14), ('z', 21, 22), ('z', 23, 24);

    Заменил только path и добавил access_key, secret_key. Получаю
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 260 ('PARTITION') (line 6, col 5): PARTITION BY a VALUES ('x', 2, 3), ('x', 4, 5), ('y', 11, 12), ('y', 13, 14), ('z', 21, 22), ('z', 23, 24). Expected one of: WATCH, OpeningRoundBracket, SELECT, VALUES, FORMAT, WITH, token (version 20.12.7.3)

    Значит ли это, что на этой версии partitioned write не поддерживается? Обычные записи в s3 из select проходят нормально.
    s3 | ClickHouse Documentation

    s3 Table Function Provides table-like interface to select/insert files in Amazon S3. This table function is similar to h

  • @1063161973 #239346 06:30 AM, 19 Oct 2021
    Добрый день. Сервер КХ "жестко" выключился из-за электропитания. После включения сервис clickhouse-server запускается, но клиентским соединениям отказывает. Как можно решить проблему ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #239342 #239347 06:38 AM, 19 Oct 2021
    Что такое List? В КХ не такого понятия. Есть Array, есть Map. Если вам нужен поиск подстрок в массивах, то можно пробежаться по массиву функцией arayFilter или же развернуть массив в колонку через arrayJoin .
  • Arrays | ClickHouse Documentation

    Array Functions empty Checks whether the input array is empty. Syntax empty([x]) An array is considered empty if it does

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #239348 #239349 06:48 AM, 19 Oct 2021
    has/hasAll/hasAny - хорошие функции, но к сожалению проверяют целиком, без поиска подстрок, чего явно хочет топик стартер
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    А порт 9000 слушается? netstat -tnlp | grep 9000
  • Как вы выяснили что он у вас запускается? В логах тихо?
  • /etc/clickhouse-server# netstat -tnlp | grep 9000
    пустая строка в ответе
  • https://t.me/clickhouse_ru
    Тогда сервер не стартовал
  • В каком каталоге логи ?
  • @1063161973 #239357 07:04 AM, 19 Oct 2021
    нашел логи
  • @1063161973 #239359 07:15 AM, 19 Oct 2021
    похоже, что диск ssd1 "отвалился" от КХ. Хотя в Ubuntu он виден
  • https://t.me/clickhouse_ru
    Скрины - это ужасно, есть же pastebin.com
  • https://t.me/clickhouse_ru
    pastebin - это ужасно, есть же форматирование телеги
  • https://t.me/clickhouse_ru
    @dirtyhack #239362 07:31 AM, 19 Oct 2021
    )
  • https://t.me/clickhouse_ru
    до 10 строк согласен, но портянки логов кидать в чат ты, наверное, пошутил
  • https://t.me/clickhouse_ru
    @dirtyhack #239364 07:33 AM, 19 Oct 2021
    портянки куда угодно кидать моветон)
  • @1063161973 #239365 07:34 AM, 19 Oct 2021
    Разобрался, одна таблица слетела, в которую была активная запись. Сервер работает
  • https://t.me/clickhouse_ru
    Хорошо
  • У вас старая версия КХ, partition by добавили недавно, 21.10 вроде. Просто без partition вызывайте
  • @maksspaceworld #239368 07:46 AM, 19 Oct 2021
    всем
  • https://t.me/clickhouse_ru
    @blinkovivan #239369 07:48 AM, 19 Oct 2021
    ClickHouse Meetup уже сегодня!

    19 октября в 19:00 пройдёт онлайн-встреча с сообществом ClickHouse.

    Мы расскажем о больших организационных изменениях в ClickHouse, об UDF in ClickHouse и о шифровании хранимых данных в ClickHouse.

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

    Присоединяйтесь! 🙂
    Link

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

  • https://t.me/clickhouse_ru
    None
  • https://t.me/clickhouse_ru
    @zagirnur #239372 07:56 AM, 19 Oct 2021
    Добрый день!

    Отличается ли PRIMARY KEY и ORDER BY если указывать один и тот же набор полей? Движок MergeTree.
    И для других движков есть ли разница.
  • @Sapar1999 #239373 07:56 AM, 19 Oct 2021
    Добрый день. Очень часто стали выпадать ошибки чтения из битых секций. Где можно оперативно получить информации о них, а не только из текстовых логов в файлах. Для этого лучше следить за query_log?
  • Активируйте part log
  • он активирован, спасибо буду смотреть там.
  • но, я как понимаю, там не будет информации о битых данных, которые были обнаружены в процессе селекта, а только о фоновых операциях мерджа/ инсерта данных.
  • Там все операции над партами
  • ClickHouse uses the sorting key as a primary key if the primary key is not defined obviously by the PRIMARY KEY clause. https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree
    MergeTree | ClickHouse Documentation

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

  • Вроде была команда для проверки партов всех
  • CHECK | ClickHouse Documentation

    CHECK TABLE Statement Checks if the data in the table is corrupted. CHECK TABLE [db.]name The CHECK TABLE query compares

  • благодарю. а насколько тяжелая эта операция? можно в крон повесить и забыть ?)
  • Лучше найти закономерность как портиться. Т.е. проверить и смотреть в партлог
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #239383 08:05 AM, 19 Oct 2021
    Простите за глупый вопрос, возможно ли в CH реализовать авторизацию пользователя по ключу? На подобии ssh ключа. В идеале авторизацию по устройству хранящему такой ключ? Или только доступен пароль?
    Вот тут что то не нашел такого варианта:
    https://clickhouse.com/docs/ru/sql-reference/statements/create/user/#identifikatsiia
    Пользователь | Документация ClickHouse

    CREATE USER Создает аккаунты пользователей. Синтаксис: CREATE USER [IF NOT EXISTS | OR REPLACE] name1 [ON CLUSTER cluste

  • @stopost0 #239384 08:07 AM, 19 Oct 2021
    Здраствуйте, такая вот задача, пока не могу понять как ее решить.
    Есть таблица {Datetime, userid, eventid }. количество разных событий eventid порядка 1000,
    надо найти самые популярные цепочки событий заданой длинны в каком то временном окне.
    кроме тупого перебора всех вариантов цепочек событий в windowFunnel пока ничего не придумал.
  • https://t.me/clickhouse_ru
    @akalend #239388 08:25 AM, 19 Oct 2021
    #clickhouse-go #bad_connection
    Всем привет, такая проблема: golang
    отваливается соединение, если микросервис более часа не обращался к БД,
    Кто сталкивался?
    заложено ли это в поведение сервера БД?
    или это фича драйвера?
    или это просто магия?
  • https://t.me/clickhouse_ru
    @alexge #239389 08:28 AM, 19 Oct 2021
    Там вроде пинг был в клиенте
  • https://t.me/clickhouse_ru
    @cocainefornina #239390 08:31 AM, 19 Oct 2021
    ошибка Code: 210. [SSL: CERTIFICATE_VERIFY_FAILED] на процессоре М1, где стоит mini-forge(другие процессором не поддерживаются). clickhouse-driver скачан, загуглила ошибку, просит clickhouse-server, но его на mini-forge нет, что делать?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #239384 #239391 08:31 AM, 19 Oct 2021
    select count() c, events from (select groupArray(event) events from (select * from table order by ts) group by user having length(events) = 10) group by events order by c desc
  • https://t.me/clickhouse_ru
    да, есть пинг в клиенте,
    пинговать каждые 30 мин?

    Была такая мысль
  • https://t.me/clickhouse_ru
    @alexge #239393 08:33 AM, 19 Oct 2021
    можно и чаще наверное, это просто пинг
  • Да, без partition работает. Спасибо.
  • https://t.me/clickhouse_ru
    попробую, спасибо
  • @vvvjhaq #239397 08:48 AM, 19 Oct 2021
    Добрый день. Не придумал красивое решение для такой задачи: Посчитать количество по ключам.
    CREATE TABLE default.test_tab11
    ( id_se UInt64,
    id_s UInt64,
    lang UInt8,
    vid UInt8,
    dt DateTime
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(dt)
    ORDER BY id_se
    SETTINGS index_granularity = 8192;

    insert into default.test_tab11
    values(1,1,1,1, now());
    insert into default.test_tab11
    values(2,1,1,2, now());
    insert into default.test_tab11
    values(3,1,1,2, now());
    insert into default.test_tab11
    values(1,2,1,1, now());

    --результат который я хочу получить
    --но в таблице default.test_tab11 будет 1млрд строк и 25 столбцов
    select uniq(t1.id_se), t.id_s from (select id_s from default.test_tab11
    where vid=2) as t
    join default.test_tab11 as t1
    on t.id_s=t1.id_s
    group by t.id_s;

    Хотелось бы увидеть примеры решения моей задачи.
    То есть у меня есть уникальный ключ id_se, и есть неуникальный id_s
    Хочу получить количество уникальных id_se для каждого id_s после фильтров на остальные поля.