• 01 April 2021 (116 messages)
  • https://t.me/clickhouse_ru
    да, будет писать на диск пока в readonly не придет

    причины перехода в readonly
    - сильное отставание реплик (одну выключили в другую вставляем, потом включили обратно, включенная реплика таблицы ReplicatedMergeTree будут read-only, сбои с ZK, нет коннекта между репликами для того чтобы куски данных скачивать)
    - закончилось место на диске
    - сбой диска и RO идет от файловой системы
  • https://t.me/clickhouse_ru
    @id017 #212061 06:19 AM, 01 Apr 2021
    Коллеги, доброго утра!
    Подскажите, какой клиент для тестирования SQL-запросов подойдёт для Clickhouse?
    На данный момент я подключился через ODBC, и нашёл клиент ODBCQueryTool.
    Подключение проходит, таблицы/столбцы в клиенте отображаются, но при написании самого простого запроса select * from tablename выводятся ошибки
  • https://t.me/clickhouse_ru
    clickhouse-client самый native
    но он под Linux \ MacOSX только

    у вас какая OS ?
  • https://t.me/clickhouse_ru
    @id017 #212063 06:22 AM, 01 Apr 2021
    Windows
  • https://t.me/clickhouse_ru
    dbeaver используйте или datagrip
    только timeout настройте
    и использование timezone принудительно задайте в advanced параметрах

    ну либо через docker run --rm -it yandex/clickhouse-client:latest -h your_host -u user --password=password
  • https://t.me/clickhouse_ru
    @id017 #212065 06:25 AM, 01 Apr 2021
    Благодарю!👍
  • https://t.me/clickhouse_ru
    @id017 ↶ Reply to #212064 #212066 06:46 AM, 01 Apr 2021
    Большое спасибо!
    Через DBEaver подключился, запросы выполняются.
  • https://t.me/clickhouse_ru
  • @261638839 #212068 07:47 AM, 01 Apr 2021
    Добрый день всем!
    Меня такой ещё вопрос беспокоит.
    Предположим, я делаю вставку в таблицу T1, есть матвью MV, которая подвешена на T1 и вставляет в T2. Если у меня возникает ошибка при выполнении кода MV во время вставки в T1, то в T2, очевидно, порция не вставится.
    Вопрос в том, откатится ли также и вставка порции в T1?
  • https://t.me/clickhouse_ru
    В клике нету транзакций. Engine Atomic вроде бы что-то про транзакции, но я хз, не тестил
  • Ну как бы ведь просто вставка пачки в одну таблицу атомарна. Вот у меня вопрос, атомарна ли она с производными вставками через MV.
  • она не то чтобы атомарна
    она просто есть 1 файл
  • Ну да, тут наверное некорректно говорить атомарно. Но суть в том, что либо принимается целиком, либо нет, если вставляется записей меньше 1млн (вроде такая там есть настройка).
  • https://t.me/clickhouse_ru
    @Rusfatal #212073 08:11 AM, 01 Apr 2021
    Всем привет. Народ подскажите пожалуйста как подружить clickhouse с Google analytics ...
    1. Хотим выгрузить сырые исторические данные из GA в кликхауз через API Google analytics и питон
    2. Заливать пару раз в сутки новые данные из GA в кликхауз.

    Ну а потом уже использовать данные в КХ для строительства дашбордов в power bi.

    Кто-то может подсказать куда копать по этим двум пунктам ?
  • https://t.me/clickhouse_ru
    @ablagov #212075 08:15 AM, 01 Apr 2021
    всем привет, clickhouse - 20.10.3.30, есть таблица ReplacingMergeTree, которая занимала 450гб.
    В ней удалили лишние строки и она стала весить 291гб, судя по запросу в system (raw_data │ 291.67 GiB)
    Но на диске по факту таблица всё так же жирная -
    du -hs /var/lib/clickhouse/store/f8b/
    608G /var/lib/clickhouse/store/f8b/

    optimize table rtb.raw_data final - отрабатывает нормально. Жду потом больше 10 минут, свободное место изменяется в пределах 5гб +-.
    запускаю ещё один optimize и перестало хватать места на него -

    OPTIMIZE TABLE rtb.raw_data PARTITION 20210311 FINAL
    Received exception from server (version 20.10.3):
    Code: 388. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: Cannot OPTIMIZE table: Insufficient available disk space, required 57.87 GiB. Cannot select parts for optimization

    свободного места 49гб
    сколко нужно свободного места, чтобы нормально сделать OPTIMIZE у такой таблицы?
  • 1- он отдает сырые данные?

    а что не так? тем же питоном и заливайте
  • https://t.me/clickhouse_ru
    @TigProg #212077 08:21 AM, 01 Apr 2021
    Мы так делаем, вы же все корректно написали, в чем вопрос?
  • https://t.me/clickhouse_ru
    Сейчас забираю сырые данные из ga по API напрямую в power bi без промежуточной базы данных .
    То есть , каждый когда в power BI запускается обновление данных , то тянутся сырые данные из GA за весь исторический период, а не за последние дни или часы....
    Ну и понятно , что такая схема архи ненадёжная , тк когда каждый раз тянешь по 10-20 млн строк , то всегда есть риск , что API Гугла отвалится...

    Поэтому , хочется сделать промежуточную базу для хранения один раз скачанных исторических данных из ga...

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

    Мне бы какой-нибудь пример скрипта на питоне , который тянет данные по любой одной метрике из ga и кладёт в кликхауз ...
  • Я чесно не оч понимаю какие сырые данные вы там нашли, ga по умолчанию не отдает сырых данных никаких.

    Если вы совсем новичок начните с этой библиотеки https://github.com/kszucs/pandahouse на вход принимает pandas data frame пишет в нужную таблицу в кх.
    GitHub - kszucs/pandahouse: Pandas interface for Clickhouse database

    Pandas interface for Clickhouse database. Contribute to kszucs/pandahouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Я забираю данные по хитам/ сессиям/ кликам без сэмплирования и с ga:client id.
    Это и называю сырыми данными.

    Если в самом ga строить отчеты за большие периоды , то они получаются с сэмплированием
  • пнтн ну это не сырые данные,если нужно избавиться от семплирования то можно посмотреть в сторону Big query, там есть удобная связка с GA
  • https://t.me/clickhouse_ru
    За пандахауз спасибо. С ней немного работал для того , чтобы
    вытянуть данные из самого кликхакза в питон

    А как залить данные из ga в кликхауз ?
  • https://t.me/clickhouse_ru
    Хорошо, а что такое сырые данные ?
  • https://t.me/clickhouse_ru
    экспортом через API

    или из BigQuery OWOX BI такое умеет и databricks

    ну или для новых данных сделать рестриминг данных в clickhouse напрямую
    https://bitbucket.org/clickhouse_pro/ga2clickhouse/src/develop/

    но последний проект заброшен
  • https://t.me/clickhouse_ru
    Да я понимаю , что экспортом через апи.
    Это же очевидно.
    Нужен хотя бы пример рабочего кейса , чтобы понять как этот " экспорт через апи " написать под свои нужды.
  • https://t.me/clickhouse_ru
    @Rusfatal #212089 08:54 AM, 01 Apr 2021
    Насчет бигквери.
    Чтобы настроить сбор данных в бигквери , нужно вносить изменения в код самого сайта ( добавить скрипт gtm ) , а доступа к коду сайта у меня нет.
    Поэтому , пока приходится вытягивать данные напрямую из GA без бигквери.
  • https://t.me/clickhouse_ru
    @epugachev #212091 09:08 AM, 01 Apr 2021
    Добрый день! Нужна помощь 😞
    создал справочник с полем username String
    при попытке заселектить получаю ошибку Could not convert string to m: 't.test4'
  • https://t.me/clickhouse_ru
    Судя по ошибке вам 9 гб не хватает
  • https://t.me/clickhouse_ru
    Required 57gb. Попробуйте докинуть места
  • @githubreleases_bot #212095 b o t 09:40 AM, 01 Apr 2021
    ClickHouse/ClickHouse description changed: v20.8.15.11-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.8.15.11-lts
    Release notes:
    ClickHouse lts release v20.8.15.11-lts
    Release v20.8.15.11-lts · ClickHouse/ClickHouse

    ClickHouse lts release v20.8.15.11-lts

  • https://t.me/clickhouse_ru
    @ctapu4ok #212098 10:11 AM, 01 Apr 2021
    Ошибка ClickHouse Code: 10, e.displayText() = DB::Exception: Not found column equals(catalog_id, 1041) in block

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

  • https://t.me/clickhouse_ru
    странная ошибка, я бы попробовал убрать distinct и писал бы баг на гитхаб
  • https://t.me/clickhouse_ru
    @ctapu4ok #212100 10:14 AM, 01 Apr 2021
    Без DISTINCT та же ошибка
    на гитхаб написал уже
    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
    @ctapu4ok #212101 10:15 AM, 01 Apr 2021
    Любые связанные параметры не работают, если использовать AND :\
  • https://t.me/clickhouse_ru
    @ctapu4ok #212102 10:16 AM, 01 Apr 2021
    до этого была сборка version 21.3.4.25, попробовал в testing ветке со сборкой version 21.4.1.6406, все равно ошибка... не понятно :\
  • https://t.me/clickhouse_ru
    @559884661 #212104 10:51 AM, 01 Apr 2021
    Доброго дня, подскажите, бо уже голову сломал, в документации не нахожу ).
    CREATE TABLE IF NOT EXISTS viewdb.DATABASECHANGELOGREP UUID '5f609046-5355-4fef-8bd2-8cba75e309a7' ON CLUSTER replicated

    Вот эту строчку я получаю в логах клика, Но программеры шлют без UUID!
    Вопроса собственно 2 - кто подставляет UUID (JDBC, сам CLICK?) - И как этого избежать, ненравится мне UUID - наглядность теряется...
  • https://t.me/clickhouse_ru
    Кликхаус сам подставляет.

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

    > И как этого избежать, ненравится мне UUID - наглядность теряется...

    Никак, если использовать Atomic Database Engine
    Avoid locking in CREATE/DROP/RENAME TABLE; implement RENAME DATABASE · Issue #6787 · ClickHouse/ClickHouse

    The idea is to store table data in unique directories that don't contain table name and link to them via symlinks. These directories will be refcounted and may live after table DROP if the ...

  • https://t.me/clickhouse_ru
    @unamedrus #212106 10:54 AM, 01 Apr 2021
    Можно создавать обычные базы

    CREATE DATABASE test ENGINE=Ordinary;
  • @nizovtsevnv #212107 11:03 AM, 01 Apr 2021
    Привет всем, как узнать текущие настройки TTL на таблице?
  • https://t.me/clickhouse_ru
    @hatedabamboo #212108 11:05 AM, 01 Apr 2021
    Show create table
  • точняк, спасибо )
  • https://t.me/clickhouse_ru
    @809096964 #212110 11:15 AM, 01 Apr 2021
    Коллеги, никто, случаем, не проводил обоснование и сбор агрументов о переходе на SSD под КХ, не поделитесь методикой, как правильнее замер роста поизводительности проводить для обоснования
  • https://t.me/clickhouse_ru
    @809096964 #212111 11:18 AM, 01 Apr 2021
    или смотрет в сторону шардов? увеличение производительности засчет шардов, обоснованней по расходам замены хранилища на более быстрое
  • https://t.me/clickhouse_ru
    @559884661 #212112 11:30 AM, 01 Apr 2021
    Шарды всегда дадут больше чем ССД. ИМХО. просто за счет распараллеливания.
  • смотрите куда у вас упираются запросы в IO или Процессор.
    если проц - шарды.
    если ИО - ССД
  • https://t.me/clickhouse_ru
    в любом случае NVME которые могут писать/читать 2GB/s дадут какой-то импрувмент по сравнению с рейдом из 10 HDD.
  • https://t.me/clickhouse_ru
    @epugachev #212116 12:48 PM, 01 Apr 2021
    Подскажите где я закосячил.

    Почему в запросах различается user_count?

    select work_shift
    , plc
    , count(distinct (username)) as user_count
    , count(barcode) as track_count
    from v_shift_statistics
    where timestamp between toDate(1616533200) and toDate(1616792399)
    and status in ('Сортировка')
    GROUP BY work_shift, plc
    HAVING track_count >= 200
    ORDER BY work_shift, plc

    select work_shift
    , plc
    , count(distinct (username)) as user_count
    , count(barcode) as track_count
    from v_shift_statistics
    where timestamp between toDate(1616533200) and toDate(1616792399)
    and status in ('Сортировка')
    GROUP BY work_shift, plc, username
    HAVING track_count >= 200
    ORDER BY work_shift, plc
  • https://t.me/clickhouse_ru
    GROUP BY work_shift, plc, username
  • https://t.me/clickhouse_ru
    группировка разная -> разные каунты в группах
  • https://t.me/clickhouse_ru
    @iimos #212120 12:56 PM, 01 Apr 2021
    Слушайте, по моим наблюдениям, большую часть места на диске обычно занимают колонки с урлами.

    Поделитесь подходами/хаками, кто что делает для по оптимизации хранения урлов.

    Кодеки? Лоу-кардиналити? Хранить в распаршеном виде? ...?
  • @fruittut #212121 01:15 PM, 01 Apr 2021
    Добрый день. Такой баг появляется иногда. Кто сталкивался может, что делать? Или может есть предложения как такому помочь?

    2021.03.31 08:19:58.217933 [ 521668 ] {} <Fatal> BaseDaemon: 10. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf91081c in /usr/bin/clickhouse
    2021.03.31 08:19:58.217944 [ 521668 ] {} <Fatal> BaseDaemon: 11. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf910f09 in /usr/bin/clickhouse
    2021.03.31 08:19:58.217959 [ 521668 ] {} <Fatal> BaseDaemon: 12. DB::PipelineExecutor::executeStepImpl(unsigned long, unsigned long, std::__1::atomic<bool>*) @ 0xf914500 in /usr/bin/clickhouse
    2021.03.31 08:19:58.217971 [ 521668 ] {} <Fatal> BaseDaemon: 13. ? @ 0xf919005 in /usr/bin/clickhouse
    2021.03.31 08:19:58.217983 [ 521668 ] {} <Fatal> BaseDaemon: 14. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    2021.03.31 08:19:58.217995 [ 521668 ] {} <Fatal> BaseDaemon: 15. ? @ 0x86451a3 in /usr/bin/clickhouse
    2021.03.31 08:19:58.218014 [ 521668 ] {} <Fatal> BaseDaemon: 16. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    2021.03.31 08:19:58.218032 [ 521668 ] {} <Fatal> BaseDaemon: 17. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    2021.03.31 08:19:58.311156 [ 521668 ] {} <Fatal> BaseDaemon: Checksum of the binary: F6479E166DD7E8ABFA19525726186F71, integrity check passed.
    2021.03.31 08:21:00.535666 [ 96473 ] {} <Fatal> Application: Child process was terminated by signal 11.
  • https://t.me/clickhouse_ru
    @tg_amm #212122 01:59 PM, 01 Apr 2021
    Здравствуйте! Пытаюсь использовать WITH но получаю ошибку синтаксиса: WITH test1 AS (SELECT * FROM orders) SELECT * FROM test1; Делаю как в документации, что делаю не так?
  • https://t.me/clickhouse_ru
    Какая версия кх
  • https://t.me/clickhouse_ru
    @tg_amm ↶ Reply to #212123 #212125 02:03 PM, 01 Apr 2021
    Использую облако
  • https://t.me/clickhouse_ru
    В вашей версии оно не поддерживается еще емнип
  • https://t.me/clickhouse_ru
    @tg_amm #212127 02:03 PM, 01 Apr 2021
    С какой версии поддерживается?
  • https://t.me/clickhouse_ru
    @unamedrus #212129 02:05 PM, 01 Apr 2021
    Ну если ориентироваться, то лучше пока выбрать 21.1
    В 21.3 пока еще много сюрпризов

    https://altinity.com/blog/clickhouse-altinity-stable-release-21-1
    ClickHouse Altinity Stable Release 21.1

    The latest ClickHouse Altinity Stable Release 21.1 introduces significant new security features like LDAP external users directory, AES encryption functions along with MergeTree features, SQL compatibility, backward incompatible changes, and more.

  • https://t.me/clickhouse_ru
    @tg_amm #212130 02:09 PM, 01 Apr 2021
    Спасибо, попробую перключиться на 21.1 надеюсь будет работать ))
  • https://t.me/clickhouse_ru
    @unamedrus #212131 02:10 PM, 01 Apr 2021
    Почитайте только изменения и рекомендации для миграции
  • https://t.me/clickhouse_ru
    @tg_amm ↶ Reply to #212131 #212132 02:13 PM, 01 Apr 2021
    Работает! WITH test1 AS (SELECT * FROM orders) SELECT * FROM test1;
  • https://t.me/clickhouse_ru
    Ага, только помните что кх не умеет кэшировать/переиспользовать результат CTE которая возвращает таблицу
  • https://t.me/clickhouse_ru
    @tg_amm #212134 02:16 PM, 01 Apr 2021
    То есть это равнозначно тому, что если обратиться дважды к test1 он просто еще раз повторит операцию выборки?
  • https://t.me/clickhouse_ru
    Ага
  • https://t.me/clickhouse_ru
    @tg_amm #212136 02:17 PM, 01 Apr 2021
    Ну хотябы есть один пллюс - уходим от дублирования кода ))
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/21992

    В некоторых случая ценой небольших костылей можно избежать этого
    Indentical subqueries (or CTE) execute only once. (condition pushdown) · Issue #21992 · ClickHouse/ClickHouse

    After #2301 fix, clickhouse execute sub queries from single level of query only once. But it doesn't work in case we are using that sub query in WHERE condition and that conditions is being...

  • https://t.me/clickhouse_ru
    ZSTD
  • https://t.me/clickhouse_ru
    что 521668 делал до этого?
  • @460254773 #212140 02:37 PM, 01 Apr 2021
    всем привет!
    подскажите пожалуйста

    DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Malformed message: Invalid HTTP version string, Stack trace (when copying this message, always include the lines below)
  • @460254773 #212141 02:37 PM, 01 Apr 2021
    с чем такие ошибки могли быть связаны?
  • @460254773 #212142 02:38 PM, 01 Apr 2021
    началось такое после того как OOM прибил кх по одной реплике по каждому шарду
  • @460254773 #212143 02:40 PM, 01 Apr 2021
    оставшиеся выжившие реплики отстали репликацией и доганялись с такими ошибками
  • @460254773 #212144 02:41 PM, 01 Apr 2021
    и такое вдобавок

    2021.04.01 07:36:54.338061 [ 46219 ] {} <Error> stats.teaser_statistics_summ_1585052081: DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 84, e.displayText() = DB::Exception: Directory /var/lib/clickhouse/data/stats/teaser_statistics_summ_1585052081/tmp_fetch_20210401_23646_23646_0/ already exists., Stack trace (when copying this message, always include the lines below)
  • @fotkin #212146 03:26 PM, 01 Apr 2021
    может кто знает, почему запрос всякие опострофы возвращает таких образом? типа юникод наверное, но почему не в нормальном виде? это при создании таблицы надо было что-то может сделать или при вытаскивании?
  • https://t.me/clickhouse_ru
    это нормально
  • https://t.me/clickhouse_ru
    это баг. Можно удалить вручную этот каталог
  • https://t.me/clickhouse_ru
    а что КХ клиент показывает? КХ ничего не делает с кодировками, какой поток байт записали такой и отдает, String это просто поток байт, туда что угодно напихать.
  • Спасибо!
  • @fotkin ↶ Reply to #212149 #212151 03:58 PM, 01 Apr 2021
    типа если данные вернуть через php скрипт какой-нибудь, то типа будет все хорошо? правильно понимаю? т.е. включать юникод поддержку на уровне таблицы при создании не нужно... ну ок, сейчас попробую
  • https://t.me/clickhouse_ru
    @slizkovaa #212152 04:10 PM, 01 Apr 2021
    #вакансия #мтс #fulltime

    Всем привет!

    Команда МТС IT находится в поиске нового коллеги, Разработчика баз данных для участия в проекте, связанном с потоковой обработкой данных (Big Data).

    Вилка: от 100 т.р.
    Удалёнка: есть
    Город: не имеет значение

    Задачи:
    • сопровождение, доработка и разработка новых схем для СУБД Clickhouse, MySQL;
    • проектирование, разработка, анализ, оптимизация архитектуры баз данных, структур данных, таблиц, словарей, ETL процессов;
    • анализ параметров оптимальности работы БД;
    • участие в проектировании и построении отказоустойчивой инфраструктуры;
    • консультации разработчиков ПО.

    От Вас мы ждём:
    • Опыт проектирования схем БД;
    • Опыт оптимизации запросов;
    • Опыт поиска узких мест выполнения запросов;
    • Опыт тестирования, как нагрузочного, так и целостности изменений;
    • Опыт работы с Git flow;
    • Опыт использования различных инструментов аналитики данных.

    Будет плюсом: опыт работы в телеком компании.

    Резюме и вопросы:
    Телеграм: @slizkovaa
    Почта: ayslizko@mts.ru
  • https://t.me/clickhouse_ru
    @patzantre #212153 06:01 PM, 01 Apr 2021
    Всем привет!

    Подскажите пожалуйста, с каким форматом движок HDFS поддерживает Nested-структуры и Array()?
    clickhouse v20.8.14.4-lts, пытаюсь импортировать примерно таким образом:

    CREATE TABLE hdfstable AS hdfstabletemplate
    ENGINE = HDFS ('datafiles', 'JSONEachRow');

    INSERT INTO anothertable SELECT * FROM hdfstable;

    И ругается как-раз на nested-поля: Unknown field found while parsing JSONEachRow format: nested_field_name ...
  • https://t.me/clickhouse_ru
    @nafanaseva #212154 06:15 PM, 01 Apr 2021
    Всем привет! Кто-нибудь пробовал применять REPLACE из документации https://clickhouse.tech/docs/en/sql-reference/statements/create/table/#replace-table-query

    CREATE DATABASE test_base ENGINE = Atomic;
    CREATE OR REPLACE TABLE test_base.t2 (n UInt64, s Nullable(String)) ENGINE = MergeTree ORDER BY n;
    INSERT INTO test_base.t2 VALUES (2, null);
    INSERT INTO test_base.t2 VALUES (3, null);
    SELECT * FROM test_base.t2;
    REPLACE TABLE test_base.t2 SELECT * FROM test_base.t2 WHERE n < 3;

    Ожидалось, что получим test_base.t2 с одной записью n = 2.
    Но в итоге падает ошибка DB::Exception: Syntax error: failed at position 28 ('SELECT'): SELECT * FROM test_base.t2 WHERE n < 3. Expected one of: storage definition, ENGINE, AS, UUID, OpeningRoundBracket, ON, Dot, token (version 21.3.4.25 (official build))
    TABLE | ClickHouse Documentation

    CREATE TABLE Creates a new table. This query can have various syntax forms depending on a use case. By default, tables a

  • https://t.me/clickhouse_ru
    Hdfs тут вообще ни причем.
    Надо понять что jsoneachrow это вообще не json
  • https://t.me/clickhouse_ru
    У меня данные лежат в файлах, каждая строка - json, это же jsoneachrow формат, разве нет?
  • https://t.me/clickhouse_ru
    нет. В правительстве не дураки сидят, jsoneachrow != json
  • https://t.me/clickhouse_ru
    @nyoroon #212158 06:39 PM, 01 Apr 2021
    jsoneachrow это ndjson
  • https://t.me/clickhouse_ru
    Я знаю, что jsoneachrow это не json, это на каждой строке валидный json
  • https://t.me/clickhouse_ru
    @patzantre #212160 06:40 PM, 01 Apr 2021
    When using these formats, ClickHouse outputs rows as separated, newline-delimited JSON values, but the data as a whole is not valid JSON - именно так у меня данные и лежат
  • https://t.me/clickhouse_ru
    ну нет. Надо снова Engine и все такое указывать
  • https://t.me/clickhouse_ru
    проблема в том что Nested в jsoneachrow это два, 3, 5, n независимых массива

    ваш json никак не лезет в jsoneachrow.

    в jsoneachrow никаких вложенных элементов нет
  • https://t.me/clickhouse_ru
    нет.

    https://github.com/ndjson/ndjson-spec
    такое в jsoneachrow нельзя {"may":{"include":"nested","objects":["and","arrays"]}}
  • https://t.me/clickhouse_ru
    @patzantre #212165 06:46 PM, 01 Apr 2021
    {
    "field1":"1""nested_field":[
    {
    "w":240,
    "h":400
    },
    {
    "w":192,
    "h":160
    },
    {
    "w":240,
    "h":120
    }
    ]
    }
  • https://t.me/clickhouse_ru
    @patzantre #212166 06:46 PM, 01 Apr 2021
    Ой , вот так
    {
    "field1":"1",
    "nested_field":[
    {
    "w":240,
    "h":400
    },
    {
    "w":192,
    "h":160
    },
    {
    "w":240,
    "h":120
    }
    ]
    }
  • https://t.me/clickhouse_ru
    @patzantre #212167 06:46 PM, 01 Apr 2021
    Перевести если в одну строку, конечно
  • https://t.me/clickhouse_ru
    jsoneachrow не кушает такое.
  • https://t.me/clickhouse_ru
    хм, логично
  • https://t.me/clickhouse_ru
    Понятно, а какой формат кушает? Avro или Protobuf?
  • https://t.me/clickhouse_ru
    TSV
  • https://t.me/clickhouse_ru
    О, хм. Попробовала с engine.
    REPLACE TABLE test_base.t2 ENGINE = MergeTree ORDER BY n AS SELECT * FROM test_base.t2 WHERE n < 3;
    Получаю DB::Exception: RENAME EXCHANGE is not supported (version 21.3.4.25 (official build))

    Значит, что нужно ещё в настройках ClickHouse менять что-то или в принципе оставить надежду?
    По документации не нахожу указаний. т_т
  • https://t.me/clickhouse_ru
    Э. Поняла, нужен linux since 3.15.
  • https://t.me/clickhouse_ru
    это про Atomic Database, у вас видимо не атомик.

    А вы вообще что делаете? Вы в какой-то дремучий лес залезли, все проще можно сделать, знать бы что вы делаете
  • https://t.me/clickhouse_ru
    Проверяли функциональность REPLACE на Atomic Database. Нашли в документации фичу, хотели попробовать.)
  • https://t.me/clickhouse_ru
    у меня работает

    REPLACE TABLE test_base.t2 ENGINE = MergeTree ORDER BY n as SELECT * FROM test_base.t2 WHERE n < 3; ;

    SELECT * FROM test_base.t2
    Ok.
  • https://t.me/clickhouse_ru
    @den_crane #212177 06:59 PM, 01 Apr 2021
    скорее всего нельзя делать select из самой себя
  • https://t.me/clickhouse_ru
    @den_crane #212178 06:59 PM, 01 Apr 2021
    таблица создается до селекта и выбирается из новой таблицы
  • https://t.me/clickhouse_ru
    А какая у вас версия линукса на серверах с кликхаусом стоит?
    Нашла в исходном коде про 3.15, но было бы круто знать до какой обновляться, чтобы заведомо заработало.
  • https://t.me/clickhouse_ru
    @den_crane #212180 07:01 PM, 01 Apr 2021
    типа атомик не работает до 3.15?
    у меня debian10

    uname -a
    Linux chdw1-4 5.6.0-0.bpo.2-amd64 #1 SMP Debian 5.6.14-2~bpo10+1 (2020-06-09) x86_64 GNU/Linux
  • https://t.me/clickhouse_ru
    и ядро из бекпортов
  • https://t.me/clickhouse_ru
    @kbespalov #212183 08:33 PM, 01 Apr 2021
    Привет.

    А при SELECT'ах как то используется информация о ключе шардирования указанном в Distributed таблице?
  • https://t.me/clickhouse_ru
    @kbespalov #212184 08:34 PM, 01 Apr 2021
    Или CH безусловно пытается выполнить запрос на всех шардах, не пытаясь предсказать по ключу шардирования где они лежат?
  • https://t.me/clickhouse_ru
    по умолчанию на всех,
    если вы уверены что данные шардированы, есть куча настроек

    clickhouse-client --help|grep optimize|grep shard
    --optimize_distributed_group_by_sharding_key arg Optimize GROUP BY sharding_key queries (by avoiding costly aggregation on the initiator server).
    --optimize_skip_unused_shards arg Assumes that data is distributed by sharding_key. Optimization to skip unused shards if SELECT query filters by sharding_key.
    --allow_nondeterministic_optimize_skip_unused_shards arg Allow non-deterministic functions (includes dictGet) in sharding_key for optimize_skip_unused_shards
    --force_optimize_skip_unused_shards arg Throw an exception if unused shards cannot be skipped (1 - throw only if the table has the sharding key, 2 - always throw.
    --optimize_skip_unused_shards_nesting arg Same as optimize_skip_unused_shards, but accept nesting level until which it will work.
    --force_optimize_skip_unused_shards_nesting arg Same as force_optimize_skip_unused_shards, but accept nesting level until which it will work.
  • https://t.me/clickhouse_ru
    @kbespalov #212187 08:48 PM, 01 Apr 2021
    у нас другая ситуация, лили данные шардируя вручную, потом понадобился JOIN двух distributed таблиц, мы то знаем, что обе таблицы на 1 шарде по ключу лежат, а вот clickhouse говорит, что только GLOBAL JOIN
  • https://t.me/clickhouse_ru
    @kbespalov #212188 08:50 PM, 01 Apr 2021
    Ну потому что в distributed ключ не указан был. Вот хотим указать ключ только ради join
  • https://t.me/clickhouse_ru
    так просто distributed_product_mode=local
  • https://t.me/clickhouse_ru
    @kbespalov #212190 08:50 PM, 01 Apr 2021
    то есть не надо ничего явно прописывать в distributed, clickhouse может поверить на слово, что данные на 1 шарде?
  • https://t.me/clickhouse_ru
    ничего не надо просто set distributed_product_mode=local и две таблицы дистрибьютид будут джойнится на прямо шардах
  • https://t.me/clickhouse_ru
    @kbespalov #212192 08:51 PM, 01 Apr 2021
    понял, большое спасибо, попробуем!
  • 02 April 2021 (88 messages)
  • https://t.me/clickhouse_ru
    Спасибо большое, попробую
  • @728368646 #212198 04:20 AM, 02 Apr 2021
    Добрый день, подскажите, функции arrayMax, arrayMin в какой версии появились ? В 20.12.4.5 пишет unknown function
  • https://t.me/clickhouse_ru
    @devmansurov #212200 06:09 AM, 02 Apr 2021
    Здравствуйте! Подскажите пожалуйста кто то использует плагин для Clickhouse data source в Grafana:

    https://github.com/Vertamedia/chtable

    Не могу использовать плагин. У плагина стоит label Unsigned и при попытке создание панели используя этот же плагин получаю ошибку:

    An unexpected error happened TypeError: Cannot read property ‘emit’ of undefined
    GitHub - Vertamedia/chtable: Grafana's table plugin for ClickHouse

    Grafana's table plugin for ClickHouse. Contribute to Vertamedia/chtable development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @zholmyrza_t #212201 06:39 AM, 02 Apr 2021
    всем привет, можно ли при создании таблицы указать в ORDER BY asc или desc?
  • https://t.me/clickhouse_ru
    плагин очень старый.
    Unsigned это в новых grafana ввели механизм подписи для плагинов

    можно попробовать
    выставить переменную окружения GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=vertamedia-chtable
    или в grafana.ini выставить
    [plugins]
    allow_loading_unsigned_plugins=vertamedia-chtable

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

    Эту попробовал но не вышло allow_loading_unsigned_plugins=vertamedia-chtable
  • https://t.me/clickhouse_ru
    нет, это не имеет смысла

    ORDER BY для таблицы действительно служит для сортировки вставляемых данных

    но эта сортировка всего лишь позволяет через min max алгоритмы при чтении *.mrk быстро отбрасывать *.bin файлы или быстро находить смещение внутри .bin файлов для распаковки из data parts, таким образом снижая кол-во чтений из диска
    и для этой операции не важно будет у вас прямой порядок сортировки или обратный...
  • https://t.me/clickhouse_ru
    после того как grafana.ini поменяли сервер графаны рестартовали?

    как grafana запускается? у вас отдельная система? контейнер? что-то еще?
  • https://t.me/clickhouse_ru
    Всё можете посмотреть тут вот
  • https://t.me/clickhouse_ru
    @devmansurov #212207 07:02 AM, 02 Apr 2021
    Этой полный докер проект именно с этим плагином
  • https://t.me/clickhouse_ru
    вам именно функции эти нужны или результат? arrayReduce не помогает?
  • Спасибо, arrayReduce можно использовать. arrayMax в документации есть, хотел проверить.
  • https://t.me/clickhouse_ru
    @nyatmeat #212210 07:24 AM, 02 Apr 2021
    Добрый день. Вопрос про таблицы Join. Будет ли выигрыш по перфомансу с обычным Join запросом или это так сказать абстракция над join запросом?
  • https://t.me/clickhouse_ru
    Обновил CH до 21.3.4.25 и завелись Nested в Protobuf
  • https://t.me/clickhouse_ru
    @K1rill_F #212218 10:20 AM, 02 Apr 2021
    Всем привет! Установил clickhouse на сервер с Ubuntu, но не могу подключится к нему через клиент DBeaver. Подскажите пожалуйста какие дополнительные настройки нужно произвести?
  • https://t.me/clickhouse_ru
    1. В настройке кх раскоментируйте опцию listen 0.0.0.0
    2. В настройках драйвера для кх бобра выключите сжатие

    По умолчанию сервер слушает только локалхост.
  • https://t.me/clickhouse_ru
    Подскажите пожалуйста раскоментировать это так?
  • @vvvjhaq #212221 10:32 AM, 02 Apr 2021
    — слева справа удалить
  • https://t.me/clickhouse_ru
    @RT_1_98 #212222 10:33 AM, 02 Apr 2021
    У брать <!-- в начале и --> в конце.
    Сервер перезапустить после правки конфига
  • https://t.me/clickhouse_ru
    @K1rill_F #212223 10:35 AM, 02 Apr 2021
    Спасибо! Кажется что то произошло, подскажите а какой стандартный пользователь у клика?
  • https://t.me/clickhouse_ru
    default
  • https://t.me/clickhouse_ru
    @K1rill_F #212225 10:50 AM, 02 Apr 2021
    Спасибо! Получилось
  • https://t.me/clickhouse_ru
    @K1rill_F #212226 10:50 AM, 02 Apr 2021
    подскажите еще последний момент, как задать пароль для пользователя default?
  • файл users.xml
  • https://t.me/clickhouse_ru
    прмо там пароль нужно задавать? Я пытался через запрос ALTER USER default IDENTIFIED BY '123'
  • https://t.me/clickhouse_ru
    @K1rill_F #212229 11:05 AM, 02 Apr 2021
    подскажите что такое read only и access managment в файле users?
  • можно и так
  • https://t.me/clickhouse_ru
    @K1rill_F #212231 11:13 AM, 02 Apr 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    @devmansurov #212232 11:31 AM, 02 Apr 2021
    Добрый день! У меня есть 5 полей в таблице:

    host, port, ip, body, user_agent

    При SELECT * FROM table все поля выводится в 5 колонках.
    Подскажите, пожалуйста, возможно ли сделать так, чтобы эти 5 полей вывести в 3 колонках объединяя некоторые?

    Например я хочу объединить полей host, port и ip и вывести их в таком виде:
  • https://t.me/clickhouse_ru
    Грубо говоря:
    SELECT [host, port, ip], body, user_agent
    FROM …
  • https://t.me/clickhouse_ru
    А как то можно задавать название для полей host, port и ip для понимание что за значение?
  • https://t.me/clickhouse_ru
    concat()
  • https://t.me/clickhouse_ru
    Понятно, попробую организовать. Спасибо!
  • https://t.me/clickhouse_ru
    @ne_perezvonyu #212237 11:52 AM, 02 Apr 2021
    Всем привет! Кто-то может поделиться инструкцией, как установить clickhouse? Мне выдали доступ к клауду, а дальше разобраться не получается.
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #212237 #212238 12:01 PM, 02 Apr 2021
    Общие инструкции здесь https://clickhouse.tech/docs/ru/getting-started/install/

    Какое облако, не яндексовое?
    Установка | Документация ClickHouse

    Установка Системные требования ClickHouse может работать на любой операционной системе Linux, FreeBSD или Mac OS X с арх

  • https://t.me/clickhouse_ru
    Спасибо, я это видела, ещё не пробывала. ))
  • https://t.me/clickhouse_ru
    есть такое

    SELECT formatRow('JSONEachRow', ip, host,port) j, body,user from (select 1 ip, 2 host, 3333 port , 'a' body, 'x' user) ;
  • https://t.me/clickhouse_ru
    будет. Engine=JOIN хранит данные в ОЗУ в хеш-таблице, которая нужна для джойна.
  • https://t.me/clickhouse_ru
    Да, спасибо! Решил задачу)
  • https://t.me/clickhouse_ru
    Спасибо за ответ)
  • https://t.me/clickhouse_ru
    @monashev #212244 01:04 PM, 02 Apr 2021
    Привет.
    Есть список id-шек в коде. И есть табличка c плохими id-шкам BadIDs.
    CREATE TABLE BadIDs
    (
    `ID` UInt64,
    )
    ENGINE = MergeTree()
    ORDER BY ID

    Не могу придумать, как написать запрос, который получит список ID-шек и вернёт только те из них, которые НЕ СОДЕРЖАТСЯ в таблице с плохими BadIDs.
  • https://t.me/clickhouse_ru
    not in ?
    anti join ?
  • https://t.me/clickhouse_ru
    Да, но как засунуть эти ID-шки в запрос, чтобы они стали "стобцом таблицы"
  • https://t.me/clickhouse_ru
    arrayjoin
  • select * from (select arrayJoin([1,2,3,4]) x) where x not in (...)
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @id017 ↶ Reply to #210064 #212250 01:14 PM, 02 Apr 2021
    Привет!
    Удалось ли решить?
  • @AprendizEterno #212251 02:02 PM, 02 Apr 2021
    Доброго дня!
    А через DBeaver можно как-то посмотреть EXPLAIN?
  • https://t.me/clickhouse_ru
    в итоге запрос оказался вот таким:
    SELECT ID
    FROM GoodIDs
    WHERE ID IN
    (
    SELECT ID
    FROM
    (
    SELECT arrayJoin(arrayMap(x -> toUInt64(x), [1, 2, 3, 4])) AS ID
    )
    WHERE ID NOT IN
    (
    SELECT ID
    FROM BadIDs
    )
    )
  • https://t.me/clickhouse_ru
    @monashev #212253 02:18 PM, 02 Apr 2021
    пришлось тип приводить к UInt64, а то иногда выдавало ошибку Types of column 1 in section IN don't match: UInt64 on the left, UInt8 on the right.
  • https://t.me/clickhouse_ru
    @monashev #212254 02:19 PM, 02 Apr 2021
    видимо тип данных выбирается по самим данным, а не по контексту.
  • да, в зависимости от того что передали в массив
  • @simpl1g #212256 02:20 PM, 02 Apr 2021
    При создании массива «на лету» ClickHouse автоматически определяет тип аргументов как наиболее узкий тип данных,
  • https://t.me/clickhouse_ru
    @monashev #212257 02:21 PM, 02 Apr 2021
    угу, я так и понял
  • можно через cast ещё преобразовать
  • @simpl1g #212259 02:24 PM, 02 Apr 2021
    select [1,2,3,4] x, cast(x, 'Array(UInt64)') y, toTypeName(x), toTypeName(y)
  • https://t.me/clickhouse_ru
    так выходит много лишнего в памяти ИМХО
  • не совсем понял почему?
  • https://t.me/clickhouse_ru
    @monashev #212262 02:30 PM, 02 Apr 2021
    исходный запрос:
    SELECT arrayJoin(arrayMap(x -> toUInt64(x), [1, 2, 3, 4])) AS ID
    получил данные массива, преобразовал их к нужному типа и потом исходный массив уже не нужен его можно из памяти удалить.

    SELECT
    arrayJoin([1, 2, 3, 4]) AS ID,
    toUInt64(ID) AS ID2
    тут ОБА столбца в доживают до конца запроса , а не только нужный.
  • @simpl1g #212263 02:31 PM, 02 Apr 2021
    я имел ввиду так

    SELECT arrayJoin(cast([1, 2, 3, 4], 'Array(UInt64)')) AS ID
  • https://t.me/clickhouse_ru
    так может и лучше будет. И нагляднее. Спасибо!
  • https://t.me/clickhouse_ru
    @399999446 #212265 03:12 PM, 02 Apr 2021
    Всем привет,нужен совет
    Нужно забекапить таблицы
    В базе табличка весит в районе 6гб
    При выгрузке в файл (format tabsepareted) в районе 30 гб
    Вопрос,в каком формате лучше выгружать,чтоб файл меньше весил,но при этом без проблем можно было восстановить?
  • https://t.me/clickhouse_ru
    Попробуйте Native
  • https://t.me/clickhouse_ru
    Ещё уточняющий вопрос,может глупый,но все же: если понадобится восстановить данные допустим на другом сервере с новыми версиями кх,с этим форматом проблем не будет?
  • @serlex777 #212268 03:30 PM, 02 Apr 2021
    Может кто подскажет, почему КХ перестает читать их кафки если отваливается один брокер? Брокера 3, фактор репликации 2. Все брокеры перечислены в списке
  • https://t.me/clickhouse_ru
    проблем не будет. Но все равно надо жать, native не сжимает, просто напишите |gzip -3 >myfile.native.gzip
  • https://t.me/clickhouse_ru
    какая версия КХ? detach / attach kafka таблицы помогает?
  • https://t.me/clickhouse_ru
    Спасибо
  • 20.6...
  • ну и как-то цеплять отцеплять не очень кашерно. Ну отвалился брокер, должно дальше работать
  • https://t.me/clickhouse_ru
    @adsrun #212274 04:49 PM, 02 Apr 2021
    Добро времени суток
    Подскажите, пожалуйста. Такое можно залечить ?

    SELECT ...

    if( CTR > 0 , ( Sub4.mon / CTR ) * 1000 , 0 ) as eC

    JOIN ... Sub4

    Спотыкается вот на этом - Sub4.mon

    Ошибка такого плана - DB::Exception: Invalid types of arguments 2 and 3 of if (version 20.9.3.45 (official build))
  • https://t.me/clickhouse_ru
    судя по всему у вас второй параметр - флоат, а третий инт. надо, чтобы одинаковые типы были
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #212275 #212276 05:28 PM, 02 Apr 2021
    Так точно. Залечилось. Спасибо.
  • https://t.me/clickhouse_ru
    Я аналирую проблему и задаю вопросы, что бы вам ответить номером тикета
  • https://t.me/clickhouse_ru
    короче в современных версиях это починено, причем мне кажется это починено и в 20.6 но в последних 20.6
  • https://t.me/clickhouse_ru
    @ActionNum #212279 07:06 PM, 02 Apr 2021
    Всем доброго пятничного вечерочка. Подскажите такой момент, CH читает из кафки даанные, кафка как кластер собрана с тремя брокерам, все три брокера прописаны в CH в кафка таблице, я убиваю именно того брокера к какому CH подключен в это время рвутся коннекты в логах CH и он сам переподкллючается к другому брокеру. Так и должно быть? По-другому никак без разрыва соединений? Вот то что в логах
  • https://t.me/clickhouse_ru
    Кафка энджин должен читать со всех, если вы верно его настроили
  • https://t.me/clickhouse_ru
    Да но в конкретный момент времени он только с координатора и читает.
  • https://t.me/clickhouse_ru
    @ActionNum #212282 07:16 PM, 02 Apr 2021
    Я его грохаю координатора, у топика кафка назнаачает другого и CH переподключается
  • https://t.me/clickhouse_ru
    Ну попробуйте свой конфиг кх энджин показать
  • https://t.me/clickhouse_ru
    @ActionNum #212284 07:20 PM, 02 Apr 2021
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'kafka-0.internal.aechannel.com:31190,kafka-1.internal.aechannel.com:31191,kafka-2.internal.aechannel.com:31192', kafka_topic_list = 'prod.Trackers_s01_v1', kafka_group_name = 'TrackersGroup_s01_v1', kafka_format = 'Protobuf', kafka_schema = 'logentries_v1:TrackerLogRecord', kafka_num_consumers = 5
  • https://t.me/clickhouse_ru
    Тут вроде все ок
  • https://t.me/clickhouse_ru
    @ActionNum #212286 07:26 PM, 02 Apr 2021
    Ну в общем connection refused по-любому будет?
  • https://t.me/clickhouse_ru
    и replication factor =3 ?

    Как КХ без переподключения может читать с другого брокера? И зачем ?
    Там при смерти брокера начинаются ребалансы и партиции все равно будут переназначены
  • https://t.me/clickhouse_ru
    RF=2
  • https://t.me/clickhouse_ru
    @ActionNum #212290 07:38 PM, 02 Apr 2021
    Три накладно немного по диску выходит
  • https://t.me/clickhouse_ru
    ну значит невозможно с 1го брокера читать
    непонятно что вы хотите и в чем проблема. Адреса кафка брокеров, это не адреса откуда читать данных, это адреса куда подключится чтобы узнать конфигурацию кафки, дальше кафка скажет куда ходить за какими партициями.
  • https://t.me/clickhouse_ru
    Да я понимаю, вроде больше не хочу ничего. Все правильно работает. Спасибо!
  • 03 April 2021 (8 messages)
  • @AlexFridman #212297 06:24 AM, 03 Apr 2021
    Привет! Подскажите пожалуйста самый простой способ получить все комбинации длины 2 для Array(int)
  • Да, у нас прокси-сервер блочил наше подключение.
  • https://t.me/clickhouse_ru
    @yuriy_kuchits #212302 10:31 AM, 03 Apr 2021
    Добрый день! Можете подсказать что за ошибка выходит при импорте csv ?
  • https://t.me/clickhouse_ru
    судя по всему в поле ожидается дата, а в данных за ней идет время
  • https://t.me/clickhouse_ru
    @enclaved #212304 10:47 AM, 03 Apr 2021
    иначе говоря, пытаешься DateTime засунуть в Date
  • https://t.me/clickhouse_ru
    @yuriy_kuchits #212305 10:54 AM, 03 Apr 2021
    спасибо)) да проблема была в этом
  • https://t.me/clickhouse_ru
    @yuriy_kuchits #212306 11:13 AM, 03 Apr 2021
    Можете подсказать по clickhouse-jdbc-bridge. Мне нужно добавить драйвер Oracle. Его нужно положить в папку drivers в clickhouse-jdbc-bridge или clickhouse-jdbc-bridge/config? Нужно ли его где пописывать или он автоматически подцепится?
  • https://t.me/clickhouse_ru
    ClickHouse/clickhouse-jdbc-bridge

    A JDBC proxy from ClickHouse to external databases - ClickHouse/clickhouse-jdbc-bridge

  • 04 April 2021 (17 messages)
  • На каждую строку данных или для одного конкретного массива?
  • arrCol id
    [1, 2, 3] 1
    [5, 6, 7] 2

    a b id
    1 2 1
    1 3 1
    2 3 1
    5 6 2
    6 7 2
    5 7 2

    Я пока сделал через ArrayJoin + Self join
  • То есть ровно две строки данных на входе, два столбца на выходе?
  • @AlexFridman #212320 09:00 AM, 04 Apr 2021
    На входе колонка типа Массив
    На выходе две колонки с комбинациями элементов массива

    Думаю можно через лямбду с двумя range пузырьком сделать :)
    И потом arrayjoin
  • То есть независимые комбинации для каждого массива. И длина массивов не фиксирована?
  • WITH arrayJoin(arrayFlatten(arrayMap(x -> arrayMap(y -> (x, y), arrayFilter(y -> (y > x), arrCol)), arrCol))) AS combinations
    SELECT
    combinations.1 AS a,
    combinations.2 AS b,
    id
    FROM
    (
    SELECT
    [1, 2, 3] AS arrCol,
    1 AS id
    UNION ALL
    SELECT
    [5, 6, 7],
    2
    )
  • https://t.me/clickhouse_ru
    @kbespalov #212325 02:23 PM, 04 Apr 2021
    Привет.

    А можно ли просто SELECT сделать поверх CSV не вставляя в табличку никакие данные?
  • https://t.me/clickhouse_ru
    @kbespalov #212326 02:24 PM, 04 Apr 2021
    Какой-нибудь SELECT count(*) FROM <csv here>
  • См. табличные функции?
  • File | ClickHouse Documentation

    File Table Engine The File table engine keeps the data in a file in one of the supported file formats (TabSeparated, Nat

  • https://t.me/clickhouse_ru
    @kbespalov #212329 02:27 PM, 04 Apr 2021
    Да, видел file(), но как я понял, это если файл хранится на машине кластера. А у меня в Облаке CH, доступа прямого к нему нет
  • https://t.me/clickhouse_ru
    @kbespalov #212330 02:27 PM, 04 Apr 2021
    хотя
  • https://t.me/clickhouse_ru
    @kbespalov #212331 02:28 PM, 04 Apr 2021
    Понял, спасибо большое!
  • s3 | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @kbespalov #212333 02:31 PM, 04 Apr 2021
    Ага, спасибо!
  • https://t.me/clickhouse_ru
    @kbespalov #212334 02:32 PM, 04 Apr 2021
    clickhouse-local | Документация ClickHouse

    clickhouse-local Принимает на вход данные, которые можно представить в табличном виде и выполняет над ними операции, зад

  • https://t.me/clickhouse_ru
    @kbespalov #212335 02:32 PM, 04 Apr 2021
    Вот оказывается что есть
  • 05 April 2021 (162 messages)
  • @Mr_A275 #212342 01:30 AM, 05 Apr 2021
    Коллеги, добрый день! Подскажите, есть ли в ClickHouse возможность описывать как-то таблицы? Про описание столбцов таблиц знаю, но как описать саму таблицу понять не могу.
  • https://t.me/clickhouse_ru
    @corpsee #212343 02:29 AM, 05 Apr 2021
    CREATE TABLE table_name
    (
    ...columns
    ) ENGINE = MergeTree()
    ORDER BY expr
    PARTITION BY expr
    PRIMARY KEY expr
    ...

    Смотрите: https://clickhouse.tech/docs/ru/sql-reference/statements/create/table/, и документацию по конкретным движкам. Например:
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/
    Таблица | Документация ClickHouse

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

  • Речь, видимо, про comment_expression. К таблицам ничего подобного не наблюдал.
  • https://t.me/clickhouse_ru
    описать в смысле прокомментировать?
    нет такого нет
    в оригинальном issue реализовали только https://github.com/ClickHouse/ClickHouse/issues/1815

    а вам такая функция зачем?
    у вас сгенерированные названия таблиц по которым непонятно что они означают?
    COMMENT for table definition · Issue #1815 · ClickHouse/ClickHouse

    Add optional COMMENT clause to CREATE query. Example: CREATE ... COMMENT 'abc' It's mostly ignored. The only purpose is to be written to .sql file; to show in SHOW CREATE TA...

  • По названиям понятно, но пользователей много и удобно было бы дополнительно описывать таблицу. Но я так понял конкретно на таблицу коммент нельзя сделать.
  • https://t.me/clickhouse_ru
    к сожалению нет, забыли реализовать =)
  • https://t.me/clickhouse_ru
    Добавление комментариев на уровне таблиц (и других DDL объектов) уже в плане работ, будут добавлены в апреле-мае
  • https://t.me/clickhouse_ru
    @zholmyrza_t #212349 06:33 AM, 05 Apr 2021
    Всем привет, никто не сталкивался с такой проблемой, когда клиент начинает писать в базу, все ноды в кластере начинают выдавать такое(всё пингуется, конфиги в норме, порты в файрволе открыты, хосты прописаны везде):
    2021.04.05 12:30:47.329182 [ 414003 ] {} <Error> DB.table (45b2b589-fe3e-4775-80d5-710ee0181176): auto DB::StorageReplicatedMergeTree::queueTask()::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Poco::Exception. Code: 1000, e.code() = 113, e.displayText() = Net Exception: No route to host, Stack trace (when copying this message, always include the lines below):
  • @denserdotru #212350 06:35 AM, 05 Apr 2021
    Ребят, привет, подскажите, если таблица была создана без партиций, могу я удалять старые данные просто удаляя папку 20190630_20190630_69740_69800_3, например?
  • https://t.me/clickhouse_ru
    <remote_servers>
    в конфигах проверьте
    у вас точно все ноды живые?

    и <zookeeper> секции
    у вас есть коннект до ZK ? SELECT * FROM system.zookeeper WHERE path='/'; что показывает?
  • https://t.me/clickhouse_ru
    нет, так делать нельзя
    убьете базу

    что мешает сделать рядом новую таблицу с PARTITION BY перелить данные через INSERT INTO ... SELECT и потом удалить данные и сделать RENAME TABLE ?

    еще есть такая вещь как TTL
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree-table-ttl

    его можно через ALTER TABLE для таблицы добавить
    MergeTree | ClickHouse Documentation

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

  • спасибо, база сделана, сделана также ддля просмотра merge, просто данных ОЧЕНЬ много, а места не так много для двойного использования на время переноса, хотелось чистить по мере устаревания
  • @denserdotru #212355 07:40 AM, 05 Apr 2021
    ТТЛ тоже сделан в новой таблице, данные теперь пишу в нее, вот думаю, как поступить со старой.
  • https://t.me/clickhouse_ru
    @BloodJazMan #212356 07:41 AM, 05 Apr 2021
    а старую таблицу можно добавлять TTL через ALTER TABLE
    а потом делать MATERIALIZE TTL
  • https://t.me/clickhouse_ru
    в старую таблицу можно TTL тоже добавить
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/ttl/

    пример ALTER TABLE ... MATERIALIZE TTL
    https://github.com/ClickHouse/ClickHouse/blob/ac989f3a8fe8e2135e25ac7d6e340b048092e906/tests/queries/0_stateless/01070_materialize_ttl.sql

    места на диске для этого надо x2 на размер самого большого data part

    SELECT database, table, partition, name, formatReadableSize(bytes_on_disk) FROM system.parts ORDER BY bytes_on_disk DESC LIMIT 10;
    TTL | ClickHouse Documentation

    Manipulations with Table TTL MODIFY TTL You can change table TTL with a request of the following form: ALTER TABLE table

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

    https://github.com/ClickHouse/ClickHouse/issues/14576
    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...

  • именно :) но я не опускаю руки) попробую составить скрипт для крона с командой DELETE
  • за ,aterialize спасибо, посмотрю с чем его едят
  • https://t.me/clickhouse_ru
    я не уверен что TTL и мутации нормально работают со старым синтаксисом...
    но попробуйте, расскажите если что то получится

    хотя бы на пустых данных попробуйте локально сначала
  • https://t.me/clickhouse_ru
    @agkucherov #212367 09:03 AM, 05 Apr 2021
    Добрый день!
    Подскажите какой быстрый способ передачи данных с HDFS в CH?
    Версия клика 20.8.4.11. Данные в ORC
  • https://t.me/clickhouse_ru
    С каждой из нод кластера позвать импорт через функцию hdfs(), предварительно "распилив" список файлов.
  • https://t.me/clickhouse_ru
    🤔интересно, спасибо.
    А есть подводные камни, как при задержке по сети себя ведет? Допустим если timeout пришел, он пытается прочитать файл с того же места где остановился или читает заново?
  • https://t.me/clickhouse_ru
    Все живые, все пингуются, телнет проходит, ноды ЗК тоже в норме, селект отобразил норм значение что ЗК есть в нодах кх
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #212371 09:15 AM, 05 Apr 2021
    Всем хорошего понедельника! На улице — весна, и Альтинити активно растет, чтобы помогать делать ClickHouse еще лучше. Кому интересно, посмотрите https://altinity.com/job/clickhouse-support-data-engineer и другие вакансии. Вопросы можно мне в личку.
    ClickHouse Solutions Engineer

    Altinity is looking for database geeks able to assist users in building ClickHouse apps. Strong DBMS and problem-solving required.

  • https://t.me/clickhouse_ru
    @brbrbr #212372 09:18 AM, 05 Apr 2021
    Всем привет.

    Подскажите по deduplicate, пожалуйста, а то никогда им не пользовался.

    Потерял часть данных из потока, вычитал их заново из кафки в соседнюю таблицу. Хочу вставить данные из таблицы с повторно вычитанными данными в основную с перекрытием по времени (т.е. потерял за полдня, вставлю за день), а потом запустить deduplicate final.

    Вопрос - если в основной таблице более 100млрд записей (вставлять буду миллионов 600) и добавление новых не останавливается, deduplicate final не уронит её?
  • https://t.me/clickhouse_ru
    полный стектрейс расшарьте
  • https://t.me/clickhouse_ru
    0. Poco::Net::SocketImpl::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x10a90034 in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&) @ 0x10a9040b in /usr/bin/clickhouse
    2. Poco::Net::HTTPSession::connect(Poco::Net::SocketAddress const&) @ 0x10a64176 in /usr/bin/clickhouse
    3. Poco::Net::HTTPClientSession::reconnect() @ 0x10a4cac5 in /usr/bin/clickhouse
    4. Poco::Net::HTTPClientSession::sendRequest(Poco::Net::HTTPRequest&) @ 0x10a4b766 in /usr/bin/clickhouse
    5. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::call(Poco::URI, Poco::Net::HTTPResponse&) @ 0xe055459 in /usr/bin/clickhouse
    6. DB::detail::ReadWriteBufferFromHTTPBase<std::__1::shared_ptr<DB::UpdatablePooledSession> >::ReadWriteBufferFromHTTPBase(std::__1::shared_ptr<DB::UpdatablePooledSession>, Poco::URI, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (std::__1::basic_ostream<char, std::__1::char_traits<char> >&)>, Poco::Net::HTTPBasicCredentials const&, unsigned long, std::__1::vector<std::__1::tuple<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> > >, std::__1::allocator<std::__1::tuple<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> > > > >, DB::RemoteHostFilter const&) @ 0xe05211a in /usr/bin/clickhouse
    7. DB::PooledReadWriteBufferFromHTTP::PooledReadWriteBufferFromHTTP(Poco::URI, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (std::__1::basic_ostream<char, std::__1::char_traits<char> >&)>, DB::ConnectionTimeouts const&, Poco::Net::HTTPBasicCredentials const&, unsigned long, unsigned long, unsigned long) @ 0xe04e550 in /usr/bin/clickhouse
    8. DB::DataPartsExchange::Fetcher::fetchPart(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, DB::ConnectionTimeouts const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0xe04cef1 in /usr/bin/clickhouse
    9. ? @ 0xdf482e6 in /usr/bin/clickhouse
    10. DB::StorageReplicatedMergeTree::fetchPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, unsigned long, std::__1::shared_ptr<zkutil::ZooKeeper>) @ 0xdef1cec in /usr/bin/clickhouse
    11. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry&) @ 0xdeec247 in /usr/bin/clickhouse
    12. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0xded11f1 in /usr/bin/clickhouse
    13. ? @ 0xdf453bc in /usr/bin/clickhouse
    14. DB::ReplicatedMergeTreeQueue::processEntry(std::__1::function<std::__1::shared_ptr<zkutil::ZooKeeper> ()>, std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::__1::function<bool (std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>) @ 0xe2296e5 in /usr/bin/clickhouse
    15. DB::StorageReplicatedMergeTree::queueTask() @ 0xdf012cb in /usr/bin/clickhouse
    16. DB::BackgroundProcessingPool::workLoopFunc() @ 0xe0487f3 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    17. ? @ 0xe049331 in /usr/bin/clickhouse
    18. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x7b6293d in /usr/bin/clickhouse
    19. ? @ 0x7b66463 in /usr/bin/clickhouse
    20. start_thread @ 0x82de in /usr/lib64/libpthread-2.28.so
    21. clone @ 0xfbe83 in /usr/lib64/libc-2.28.so
    (version 20.11.3.3 (official build))
  • @qhang ↶ Reply to #212376 #212378 09:35 AM, 05 Apr 2021
    есть такая штука, называется https://pastebin.com/ кидаете туда логи, а ссылку в чат
    Pastebin.com - #1 paste tool since 2002!

    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
    ну из стектрейса очевидно
    DB::StorageReplicatedMergeTree::executeFetch

    нода пытается скачать data part с другой ноды и не может до нее роутинг получить сетевой получить
    Net Exception: No route to host

    проверяйте <remote_servers>
    все хосты на всех хостах
    и вы случайно
    interserver_http_host руками не меняли?
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#interserver-http-host

    grep -r interserver /etc/clickhouse-server/
    Server Settings | ClickHouse Documentation

    Server Settings builtin_dictionaries_reload_interval The interval in seconds before reloading built-in dictionaries. Cli

  • @radiojoh #212380 09:37 AM, 05 Apr 2021
    Привет. Есть что готовое для запросов к базе с рнр
  • https://t.me/clickhouse_ru
    Client Libraries | ClickHouse Documentation

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

  • спасибо
  • https://t.me/clickhouse_ru
    @nyoroon #212385 10:21 AM, 05 Apr 2021
    добрый день! подскажите, что значит reason = clone в system.detached_parts?
  • https://t.me/clickhouse_ru
    У вас таблица с партициями (по дате)
  • да уже ответили на мой вопрос, спасибо :) невозможно, если не была создана с партициями
  • https://t.me/clickhouse_ru
    Репликация не использует remote_servers
  • https://t.me/clickhouse_ru
    Ну drop partition в любом случае у вас возможен
  • https://t.me/clickhouse_ru
    @Stofeles #212390 10:43 AM, 05 Apr 2021
    Всем привет. Сразу извиняюсь за глупый вопрос, и ленивость тестить.
    Если я делаю инсерт через http как это в доке указано
    echo 'INSERT INTO t VALUES (1),(2),(3)' | curl 'http://localhost:8123/' --data-binary @-
    И в одном из VALUES синтактическая ошибка или неверный тип данных. У меня ведь весь запрос не пройдет или зафейлятся только ошибочные строки?
  • https://t.me/clickhouse_ru
    Зафейлится блок и все последующие, все предыдущие будут записаны.
  • https://t.me/clickhouse_ru
    @Stofeles #212392 10:47 AM, 05 Apr 2021
    спасибо, понятно
  • https://t.me/clickhouse_ru
    @mikeryazan #212393 10:49 AM, 05 Apr 2021
    Добрый день!
    А подскажите, пожалуйста, из-за чего словарь может не обновляться ? или в какую сторону копать

    сорс - вьюха из кх
    LIFETIME(MIN 600 MAX 1800)

    system reload dictionary - нету
    Ожидается что будет по таймеру обновляться
    Но сейчас на одной из нод, обновление не проходит.
  • https://t.me/clickhouse_ru
    system reload dictionary - нету
    в смысле не выполняется?

    set send_logs_level='trace'

    system reload dictionary;
  • https://t.me/clickhouse_ru
    В смысле принудительного обновления не стоит, все зашито на Lifetime
  • Посмотрите в system.dictionaries может exception есть
  • https://t.me/clickhouse_ru
    mysql8 ?
  • https://t.me/clickhouse_ru
    Извиняюсь не понял вопроса
    Если про сорс то словарь
    смотрит на Вьюху в кх
  • https://t.me/clickhouse_ru
    Спасибо, сейчас гляну
  • https://t.me/clickhouse_ru
    блок это по умолчанию 1000000 записей
    то есть для коротких INSERT считайте что все зафейлится
  • @s_panfilova #212401 11:15 AM, 05 Apr 2021
    У меня есть поле BigDecimal, мне его нужно перемножить на литерал, потом сагрегировать. Для результата мне сгодится точность double в этом месте. Что будет эффективнее - конвертировать после вычитывания во Float64 и потом делать манипуляции с умножением сложением или оставить как BigDecimal? Есть тест через clickhouse benchmark - он говорит, что все одинаково.
  • @xfangsx #212402 11:16 AM, 05 Apr 2021
    Добрый день.

    Есть кластер из 12 нод, на всех реплики (отказаустойчивость в деле), отдельно прокся-балансировщик.
    Обновили CH с версии 20.3.8.53 --> 21.1.7.1
    Начали падать часть запросов с global join (не находило поля из правой таблицы)
    Методом тыка выставили optimize_skip_unused_shards = 0 (было 1) и заработало. Но теперь другая проблема, некоторые запросы падают по памяти. Почитали, в 20.3.8 была настройка max_memory_usage_for_all_queries = 34 Gb, сейчас её заменили на max_server_memory_usage через max_server_memory_usage_to_ram_ratio, выставили чтоб на выходе было чуть более предыдущих 34 Gb и всё равно на случайных нодах запрос упирается в этот предел. Так понимаю, что на некоторые нодах прилетает несколько больших запросов, которые не пролезают по памяти и что не пролезает - падает. (would use 35.41 GiB (attempt to allocate chunk of 1073741824 bytes)). Соответственно вопрос, как можно решить проблемы кроме как увеличивать тотал используемой ОЗУ? Стоит лимит на один запрос 10 ГБ, кроме этого что-то можно придумать? Какую-то очередь больших запросов сделать?
  • хм, даже если их не упоминалось при создании? видимо по имени папки?
  • https://t.me/clickhouse_ru
    вы о чем вообще? В старом синтаксисе нельзя создать таблицу без партиций. Show create table в студию
  • https://t.me/clickhouse_ru
    на самом деле нет
  • https://t.me/clickhouse_ru
    @suxxoi #212406 11:38 AM, 05 Apr 2021
    Добрый день,
    Можно ли добавить новую запись, но чтобы обновились только определенные столбцы, а остальные подтянулись из предыдущего?
    Использую ReplacingMergeTree

    Как пример:
    event_1(uuid, column_1, column_2, column_3, column_4, column_5)
    event_2(uuid, column_4, column_5)
  • https://t.me/clickhouse_ru
    BigDecimal в КХ ? Наверное просто decimal, умножайте Decimal
  • @vvvjhaq #212408 11:40 AM, 05 Apr 2021
    Добрый день, подскажите, влияют ли кодеки сжатия(zstd, к примеру) на скорость выборки: select id, name from db.table1 where id in (1,2,3);
    id UInt64 имеет zstd сжатие.
  • https://t.me/clickhouse_ru
    нет.
    Можно через aggregatingMergeTree если табличка крохотная
  • https://t.me/clickhouse_ru
    ну первичный ключ вообще не сжат, если вопрос про первичный ключ
  • да, то есть смысла нет ставить ему сжатие?
  • https://t.me/clickhouse_ru
    это сложный вопрос, если читать с медленного диска то ZSTD лучше потому что читать меньше, но LZ4 конечно несколько быстрее на декомпресии
  • а первичный ключ в принципе жмется или нет с помощью кодеков?
  • https://t.me/clickhouse_ru
    @suxxoi ↶ Reply to #212409 #212414 11:45 AM, 05 Apr 2021
    Не подскажите как можно решить, у меня только два варианта
    - Перед добавлением получать все нужные данные(select …) и потом батчами вставлять
    - Разносить на разные таблицы
  • https://t.me/clickhouse_ru
    первичный ключ всегда ничем не сжат, вне зависимости
  • все, понял
    спасибо
  • https://t.me/clickhouse_ru
    я НЕ знаю, я храню последний стетй в кластере кассандры, который в 5 раз больше кластера КХ
  • Да, decimal. Да, похоже на правду. Спасибо!
  • https://t.me/clickhouse_ru
    Первое конечно полная жесть. Вы результаты-то запросов смотрели? Они вообще что-то отдаленное похожее на правду возвращают? Я бы даунгрейдился в моментально.

    По второму, какое реальное потребление? Что top/htop показывают?
  • https://t.me/clickhouse_ru
    @suxxoi ↶ Reply to #212417 #212420 11:52 AM, 05 Apr 2021
    Спасибо, буду пробовать
  • https://t.me/clickhouse_ru
    @ivan_krivosheev #212421 12:03 PM, 05 Apr 2021
    Всем добрый день, а такой вопрос, можно ли как-то отдельное определить Enum и потом его использовать в разных колонках?
  • https://t.me/clickhouse_ru
    @ivan_krivosheev #212422 12:05 PM, 05 Apr 2021
    Или нужно каждый раз Enum описывать в каждой колонке?
  • https://t.me/clickhouse_ru
    @IceCoub #212424 12:12 PM, 05 Apr 2021
    привет всем!
    как можно перевести String 210403 в DateTime 2021-04-03?
    parseDateTimeBestEffort не помогает
  • https://t.me/clickhouse_ru
    parseDateTimeBestEffort('20'||'210403')
  • https://t.me/clickhouse_ru
    если вы не планируете работать с датами прошлого или следующего века, будет ок
  • https://t.me/clickhouse_ru
    а от чего зависит? ;)
  • https://t.me/clickhouse_ru
    @111093495 #212429 12:50 PM, 05 Apr 2021
    Подскажите плиз это баг или новый тип map работает только с константными ключами?

    with map(1,3,2,4) as mapper
    select mapper[number] from numbers(2);

    Code: 44, e.displayText() = DB::Exception: Illegal column Const(Map(UInt8, UInt8)) of first argument of function arrayElement: while executing 'FUNCTION arrayElement(mapper :: 1, number :: 0) -> arrayElement(mapper, number) UInt8 : 2' (version 21.3.3.14 (official build))
  • https://t.me/clickhouse_ru
    можно, если использовать AggregatingMergeTree и колонки SimpleAggregateFunction(anyLast, Nullable(String))
    если использовать не Nullable(String), а просто String, то тогда будет перезатираться пустой строкой, так что для тех колонок, которые могут отсутствовать Nullable обязателен.
    но согласно документации "Почти всегда использование Nullable снижает производительность, учитывайте это при проектировании своих баз."
    https://clickhouse.tech/docs/ru/sql-reference/data-types/nullable/
    более того если вставляется 1 колонка из 200, то нагрузка на диске как буд-то вы вставляете все 200.
    возможно отдельная табличка: event_custom_properties(uuid, column_name, column_value) engine= ReplacingMergeTree будет оптимальнее.
    есть желание воспользоваться Nested(column_name, column_value) вместо отдельной таблички, но пока хз как сделать, чтобы мёржились значения по соответствующим ключам.
  • https://t.me/clickhouse_ru
    map это не массив это {k:v}
  • https://t.me/clickhouse_ru
    но доставать по ключу в нем же можно:
    > Чтобы получить значение из колонки a Map('key', 'value'), используйте синтаксис a['key']. В настоящее время такая подстановка работает по алгоритму с линейной сложностью.

    with map(1,3,2,4) as mapper
    select mapper[1];

    я думал это с большего удобные вариант компоновки двух массивов keys, value...

    причет так работает норм:
    with map(1,3,2,4) as mapper
    select mapValues(mapper)[indexOf(mapKeys(mapper), number)] from numbers(3);
  • https://t.me/clickhouse_ru
    @suxxoi ↶ Reply to #212430 #212441 01:18 PM, 05 Apr 2021
    Спасибо огромное, буду пробовать разные варианты, Nullable как то совсем не хочется делать
  • https://t.me/clickhouse_ru
    не понял , у вас map
    ┌─mapper────┐
    │ {1:3,2:4} │
    └───────────┘ ?
  • https://t.me/clickhouse_ru
    ну да чисто для теста показать
  • https://t.me/clickhouse_ru
    всё ровно вроде бы, всё перепроверил, даже удалял дата файлы, и по новой всё поднимал, не помогло. Может ли быть дело в даунгрейде?
  • https://t.me/clickhouse_ru
    select * from system.replication_queue

    ноды используют hostname -f
  • https://t.me/clickhouse_ru
    скорее всего просто не реализовано, потому что usecase непонятен
  • https://t.me/clickhouse_ru
    @bezgubov #212448 01:29 PM, 05 Apr 2021
    Всем привет! Может быть кто-то сможет подсказать, как узнать с какой версии поддерживается опция allow_experimental_functions в конфиге? В документации про нее нет, в коде грепом тоже не нашел с ходу
  • https://t.me/clickhouse_ru
    там опечатка allow_experimental_window_functions=1; с 21.3
  • https://t.me/clickhouse_ru
    вот тут опечатка?
    https://clickhouse.tech/docs/en/whats-new/changelog/#experimental-feature

    Introduce experimental support for window functions, enabled with allow_experimental_functions = 1.
  • https://t.me/clickhouse_ru
    replica_name и source_replica используют имя хоста
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    берете hostname -f на сервере 1, идете на сервер 2 и пингуете то что выдало на сервере 1
  • https://t.me/clickhouse_ru
    fix incorrect settitng name allow_experimental_window_functions by den-crane · Pull Request #22665 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    я понял, спасибо!
  • https://t.me/clickhouse_ru
    Window Functions | ClickHouse Documentation

    [experimental] Window Functions ClickHouse supports the standard grammar for defining windows and window functions. The

  • https://t.me/clickhouse_ru
    всё резолвится) копировал прям с таблицы и пинганул
  • https://t.me/clickhouse_ru
    что в select * from system.replication_queue
  • Про первый пункт, я понимаю что это вещи абсолютно не связные. Но тем не менее результат запроса очень похож на правду. Очень печально, что пришлось отключить optimize_skip_unused_shards, так как распределение по нодам было не rand(), а даже осмысленное и нагрузку здорово могло снизить. Тем более, что постоянных однотипных запросов хватает.

    Про второй пункт, очень тяжело отловить ошибку, так как даже одновременное открытие 12 htop'ов не даёт 100% гарантии визуально поймать момент. Да память жрёт) В основном clickhouse_server. Тогда переформулирую вопрос, если в момент запроса, под клик максимально может быть выделено не 35.41 GB, то как раз таки и будут появляться такие ошибки

    would use 35.41 GiB (attempt to allocate chunk of 1073741824 bytes)

    Allocator: Cannot mmap 2.00 GiB., errno: 12, strerror: Cannot allocate memory: while executing 'ARRAY JOIN .....

    Поэтому банальное снижение до 34GB как и было ранее, может решить проблему?
  • https://t.me/clickhouse_ru
    @mib32 #212461 01:39 PM, 05 Apr 2021
    всем привет, делаю инсерт в КХ прямо из ПГ,
    в ПГ колонка типа array, например '{}'
    при вставке в КХ орет

    DB::Exception: Array does not start with '[' character: while converting source column properties_key to destination column `properties.key`: while executing 'FUNCTION CAST(properties_key :: 64, Array(String) :: 127) -> CAST(properties_key, Array(String)) Array(String) : 126'.

    почему так?
  • 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
    ок, но между прочим с опцией allow_experimental_functions стартует без ошибки
  • https://t.me/clickhouse_ru
    как оказалась, всё дело в банальной ошибке. Порт 9009 был закрыт, хотя был уверен, что открыт :)
  • https://t.me/clickhouse_ru
    так всегда дело в банальной ошибке
  • https://t.me/clickhouse_ru
    @lesikv #212469 01:57 PM, 05 Apr 2021
    Всем привет! Пытаюсь делать ручной инсерт в таблицу материализованного представления, получаю даты в таком виде 1989-06-04
    Хотя в секции where у меня 2020 год. Подскажите пожалуйста, куда копать
  • https://t.me/clickhouse_ru
    покажи матвью
  • https://t.me/clickhouse_ru
    @lesikv #212471 01:58 PM, 05 Apr 2021
    CREATE MATERIALIZED VIEW mv.user_registration_mv TO buffer.user_registration_buffer
    (
    reg_dt Date,
    user_id Int32,
    reg_app_id Int32
    )
    AS
    SELECT
  • https://t.me/clickhouse_ru
    @Alele13 #212472 01:59 PM, 05 Apr 2021
    Всем привет! А можно как то в клике реализовать lag/lead (меня интересуют даты) самым простым способом?)
  • https://t.me/clickhouse_ru
    а сам SELECT какой?
  • https://t.me/clickhouse_ru
    @lesikv #212474 02:00 PM, 05 Apr 2021
    SELECT
    user_id,
    app_id AS reg_app_id,
    dt AS reg_dt
    FROM table
  • https://t.me/clickhouse_ru
    @lesikv #212475 02:01 PM, 05 Apr 2021
    то что инсертится по тригеру имеет сегодняшнюю дату, то что инсертится ручками вот какую-то трешовую
  • https://t.me/clickhouse_ru
    @nyoroon #212476 02:01 PM, 05 Apr 2021
    а в таблицу что вставляешь?
  • https://t.me/clickhouse_ru
    @lesikv #212477 02:01 PM, 05 Apr 2021
    будто сдвиг на десятки лет
  • https://t.me/clickhouse_ru
    @lesikv #212478 02:01 PM, 05 Apr 2021
    INSERT INTO buffer.user_registration_buffer
    SELECT
    user_id,
    app_id as reg_app_id,
    dt AS reg_dt
    FROM table
    WHERE 1=1
    AND dt > '2020-06-01'
    AND dt < '2020-07-01'
  • https://t.me/clickhouse_ru
    @mib32 ↶ Reply to #212463 #212479 02:02 PM, 05 Apr 2021
    insert into table from postgresql(***)
  • https://t.me/clickhouse_ru
    а 89 год есть в таблице вообще?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #212480 #212481 02:07 PM, 05 Apr 2021
    нет
  • А какой тип у dt здесь?
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #212482 #212483 02:09 PM, 05 Apr 2021
    dt Date default toDate(time),
  • https://t.me/clickhouse_ru
    @lesikv #212484 02:09 PM, 05 Apr 2021
    time DateTime default toDateTime(event_microsec / 1000000),
  • https://t.me/clickhouse_ru
    @lesikv #212485 02:09 PM, 05 Apr 2021
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #212482 #212486 02:12 PM, 05 Apr 2021
    это из-за time?
  • @podshumok #212487 02:13 PM, 05 Apr 2021
    вряд ли. Особенно, если event_microsec - целое
  • @podshumok #212488 02:15 PM, 05 Apr 2021
    Я вот не помню, упорядочивает ли кликхаус колонки при insert, есть подозрение, что конкретно здесь в дату попадает user_id (7094?)
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #212488 #212489 02:17 PM, 05 Apr 2021
    блин это из-за порядка колонок в секции селект?
  • @podshumok #212490 02:17 PM, 05 Apr 2021
    я подозреваю что при INSERT...SELECT, да
  • @podshumok #212491 02:18 PM, 05 Apr 2021
    в определении MV вроде всё равно... но это не точно
  • @133452245 #212492 02:29 PM, 05 Apr 2021
    Всем привет, по какой причине может перестать работать вставка в дистрибьютед тейбл через insert into?

    Странная ситуация, в репликейтед таблицу вставит могу, через clichouse_driver всё тоже работает, а когда в БД делаю Insert inti TB select * ... то пусто, хот без ошибок выполняется, я прям чет даже не знаю...
  • https://t.me/clickhouse_ru
    insert_deduplicate = 0 попробуйте
  • в общем, да, порядок колонок
  • не помогло
  • Не поможете советом куда копнуть?

    по какой причине может перестать работать вставка в дистрибьютед тейбл через insert into?

    Странная ситуация, в репликейтед таблицу вставит могу, через clichouse_driver всё тоже работает, а когда в БД делаю Insert inti TB select * ... то пусто, хот без ошибок выполняется, я прям чет даже не знаю...
  • https://t.me/clickhouse_ru
    ничего не понял.

    Insert inti TB select * вставка в distributed из другой distributed ?
  • Сорри, щас поясню. Вставка через Insert into дистрибьютед тейбл из таблицы с движком Log
  • insert into DISTRIBUTED TABLE
    select * from LogRable
  • @133452245 #212502 02:57 PM, 05 Apr 2021
    вот такое не рабтает, теость оно отрабаыает но ничег оне вставляет, не понимаю куда просто копнуть
  • @133452245 #212503 02:58 PM, 05 Apr 2021
    и еще не работает вот такое insert into DISTRIBUTED TABLE values (6,289,'2021-02-11 09:14:00',6.78);
  • @133452245 #212504 02:58 PM, 05 Apr 2021
    хотя через clickhouse_driver вставляю в DISTRIBUTED TABLE и всё ок
  • https://t.me/clickhouse_ru
    DISTRIBUTED пишет себе в каталог в .bin файлы.
    затем проталкивает в шарды из bin файлов в настоящие таблицы.
    если положить какую-нибудь фигню в DISTRIBUTED, все может встать.
    в логе будут сообщения об ошибках
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #212494 #212506 03:03 PM, 05 Apr 2021
    спасибо! 🙈 жутко затупила(
  • https://t.me/clickhouse_ru
    простого нет. Есть 4 сложных
  • https://t.me/clickhouse_ru
    Ну видимо выбора нет, можно подробнее))
  • Всё оказалось сильно проще, в репликейтед тейбл была dattime64, в дистрибьютед тейбл dattime
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @aksimemor #212511 06:07 PM, 05 Apr 2021
    Подскажите пожалуйста. У нас связи с ростом сотрудников и количества запросов в кликхаус выросла загрузка CPU.

    Связи с чем мы планируем поставить другой сервер с конфигом:
    AMD EPYC 7502P
    512 ram
    20 TB NVMe

    Текущий конфиг:
    AMD Ryzen 9 3900
    384 ram
    20 TB NVMe

    Стоит ли смотреть в сторону серверов на intel?
  • https://t.me/clickhouse_ru
    не стоит. Посмотрите https://youtu.be/HPJOgzQkRls?t=2936
    Лучше посмотреть в оптимизацию запросов.
  • https://t.me/clickhouse_ru
    @aksimemor #212513 06:13 PM, 05 Apr 2021
    к сожалению у нас большая часть нагрузки происходит от продуктовых аналитов и зачастую они не очень хорошо идут в оптимизацию.

    Также глупый вопрос. Правильно я понимаю, что для корректной работы кластера - стоит брать одинаковые сервера?
  • https://t.me/clickhouse_ru
    @rdbuf #212514 06:18 PM, 05 Apr 2021
    Всем привет!
    После обновления до 21.3.4.25 (не факт, что связано) при некоторых select'ах стала возникать ошибка:
    DB::Exception: Expected ColumnLowCardinality, gotUInt8: While executing MergingSortedTransform
    С чем это может быть связано, как лечить? Поиск ничего не даёт.
  • https://t.me/clickhouse_ru
    стоит брать одинаковые сервера, так проще
  • https://t.me/clickhouse_ru
    проверьте что структура полей у дистрбьютид таблиц и mergetree таблиц совпдает.

    лучше в гитхаб, с трассировкой из лога
  • https://t.me/clickhouse_ru
    @rdbuf ↶ Reply to #212516 #212517 06:55 PM, 05 Apr 2021
    Структура полей совпадает.

    Добавлю:
    - ошибка пропадает, если установить optimize_read_in_order=0
    - ошибка пропадает, если читать не из distributed таблицы, а из отдельной mergetree

    Issue сейчас заведу.
  • https://t.me/clickhouse_ru
    @turalexey #212518 07:05 PM, 05 Apr 2021
    добрый вечер а не подсажите будет ли поддержка в словарях Uint8 или Uint64 без вариантов. так групировка быстрей если точно знаешь что словарь не разрастется больше чем на 256 значений
  • https://t.me/clickhouse_ru
    @turalexey #212519 07:06 PM, 05 Apr 2021
    И мож чет предложите по оптимизации
  • https://t.me/clickhouse_ru
    @rdbuf ↶ Reply to #212516 #212520 07:10 PM, 05 Apr 2021
    А что понимается под трассировкой из лога?
  • https://t.me/clickhouse_ru
    стектрейс , там на любую ошибку длинная портянка в лог пишется
  • https://t.me/clickhouse_ru
    в каких словарях ? ext.dictionary ? используйте flat
  • https://t.me/clickhouse_ru
    @turalexey #212523 07:13 PM, 05 Apr 2021
    да использую flat
  • https://t.me/clickhouse_ru
    @turalexey #212524 07:13 PM, 05 Apr 2021
    но единственный идентификатор это uint64
  • https://t.me/clickhouse_ru
    так без разницы, toUInt64 почти ничего не стоит
  • @suoenrorre #212531 11:09 PM, 05 Apr 2021
    Делаю перелив данных из одной таблицы в другую: insert into new ... select ... from old. Есть способ как-то замедлить процесс, чтобы сильно не напрягать базу, лить себе неспешно?
  • 06 April 2021 (136 messages)
  • Начните с max_threads и max_insert_threads в SETTINGS части запроса
    https://clickhouse.tech/docs/en/operations/settings/settings/#settings-max_threads
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @smartpony #212537 05:22 AM, 06 Apr 2021
    Что значит параметр materialize_ttl_after_modify? После добавления TTL существующие на данный момент данные никогда не будут удалены (кроме как вручную) или речь только о том, что удаление не начнётся сразу после выполнения запроса?
  • https://t.me/clickhouse_ru
    TTL прорастёт не только на новые парты, но и на уже существующие
  • https://t.me/clickhouse_ru
    То есть если выставлено materialize_ttl_after_modify=0 то старые парты удалятся, только если каким-то образом будут мержится (то есть возможно - никогда)?
  • https://t.me/clickhouse_ru
    Никогда не удалятся, даже если будут мержится
  • https://t.me/clickhouse_ru
    А. Даже так. Ясно, спасибо.
  • https://t.me/clickhouse_ru
    @nyoroon #212542 06:02 AM, 06 Apr 2021
    Это аналогично запросу ALTER TABLE ... MATERIALIZE TTL
  • https://t.me/clickhouse_ru
    @nyoroon #212543 06:03 AM, 06 Apr 2021
    Очистка данных тоже запускается
  • https://t.me/clickhouse_ru
    да! засыпал тоже об этом подумал)) Спасибо сработало
  • https://t.me/clickhouse_ru
    @nyatmeat #212546 06:23 AM, 06 Apr 2021
    Добрый день.
    Случилась ошибка
    max query size exceeded
  • https://t.me/clickhouse_ru
    @nyatmeat #212547 06:24 AM, 06 Apr 2021
    где можно поднять значения максимальной длины запроса?
  • https://t.me/clickhouse_ru
    @nyatmeat #212548 06:24 AM, 06 Apr 2021
    Слишком много guid в запрос уходит
  • https://t.me/clickhouse_ru
    @K1rill_F #212549 06:26 AM, 06 Apr 2021
    Добрый день! Подскажите пожалуйста существуют ли какие нибудь тестовые БД для клика, чтобы можно было импортировать и поиграться?
  • https://t.me/clickhouse_ru
    Tutorial | ClickHouse Documentation

    ClickHouse Tutorial What to Expect from This Tutorial? By going through this tutorial, you’ll learn how to set up a simp

  • https://t.me/clickhouse_ru
    @K1rill_F #212551 06:28 AM, 06 Apr 2021
    благодарю
  • https://t.me/clickhouse_ru
    https://gh.clickhouse.tech/explorer/

    В конце статьи
  • https://t.me/clickhouse_ru
    @brbrbr #212554 07:38 AM, 06 Apr 2021
    Подскажите, пожалуйста, если для optimize deduplicate final указать партицию, то будут удалены записи внутри партиции, для которых дубли найдены тоже только внутри этой партиции? Или поиск дублей будет произведён по всей таблице?
  • https://t.me/clickhouse_ru
    OPTMIZE в кх удаляет дубликаты только в пределах партиции
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #212555 #212556 07:39 AM, 06 Apr 2021
    Понял, спасибо.
  • https://t.me/clickhouse_ru
    @iassasin #212557 07:39 AM, 06 Apr 2021
    Добрый день, выполняю простейший запрос вида:

    SELECT event_name FROM table
    WHERE (client_time >= '2021-04-01 00:00:00') AND (event_name = 'tapCardField')
    ORDER BY client_time DESC

    Выдает такое:
    DB::Exception: Expected ColumnLowCardinality, gotUInt8: While executing MergingSortedTransform

    event_name - LowCardinality(String)

    Не очень понимаю, что я делаю не так?
  • @7699150 #212558 08:10 AM, 06 Apr 2021
    Коллеги, а кто как бекапы делает на версиях 20.11+ ?
    Мы пока на clickhouse-backup живем, но хотим обновляться. А он вроде как на новых версиях не работает.
  • https://t.me/clickhouse_ru
    поддерживает, там лишь проблема в Atomic движках баз данных, но их можно не использовать
  • https://t.me/clickhouse_ru
    Спасибо!
  • Понял. Спасибо!
    Помню когда-то слышал про встроенный механизм бекапов кликхауса в будущем. Про него нет никаких новостей?
  • https://t.me/clickhouse_ru
    Add new commands BACKUP and RESTORE (part 1) by vitlibar · Pull Request #21945 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category: New Feature Changelog entry: Added new commands BACKUP and RESTORE. EARLY STAGE (NOT...

  • 🍻
  • @fantast38 #212564 08:39 AM, 06 Apr 2021
    Всем привет!
    Может кто подсказать какой-то best practice если вдруг случился split-brain между нодами кластера ?
  • https://t.me/clickhouse_ru
    Это как? КХ мультимастер же
  • @fantast38 #212566 08:54 AM, 06 Apr 2021
    У меня есть 2 ДЦ по сколько-то нод. Между ДЦ развалился канал. Хочется понять что дальше будет происходить с кластером ? Как будет работать кворум у зукипера ?
  • https://t.me/clickhouse_ru
    Сломается запись в том ДЦ где меньше зукиперов
  • @fantast38 #212568 09:04 AM, 06 Apr 2021
    Вопрос осложняется тем , что нет третьей стороны для zookeeper. И по факту мы имеем равное количество хостов в каждом из ДЦ. Я видел в доках что все перейдет в формат RO. Не будет ли в этом случае zookeeper давить на CPU ?
  • https://t.me/clickhouse_ru
    Ну значит в обоих ДЦ будет меньшинство и запись в кх сломается везде
  • https://t.me/clickhouse_ru
    @semensafronov #212570 09:07 AM, 06 Apr 2021
    Всем привет! Необходимо сгенерировать столбец с последовательными датами, как это можно сделать?
  • https://t.me/clickhouse_ru
    INSERT INTO .. SELECT toDate('2021-01-01') + toIntervalDays(number) FROM system.numbers LIMIT 25
  • https://t.me/clickhouse_ru
    спасибо
  • @fantast38 #212573 09:20 AM, 06 Apr 2021
    @nyoroon Большое спасибо за помощь!
  • https://t.me/clickhouse_ru
    вообще лучше все zookeeper которые учувствуют в кворуме пихнуть в 1 дц, а в втором поставить просто обсерверов
  • https://t.me/clickhouse_ru
    @devmansurov #212575 09:25 AM, 06 Apr 2021
    Здравствуйте! Подскажите пожалуйста что не так с моим таблицей:

    CREATE TABLE default.access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `remote_user` String,
    `remote_addr` String,
    `scheme` String,
    `host` String,
    `server_addr` String,
    `request_method` String,
    `request_uri` String,
    `request_length` UInt32,
    `request_time` Float64,
    `status` UInt16,
    `body_bytes_sent` UInt32,
    `upstream_addr` String,
    `upstream_status` String,
    `upstream_response_time` Float64
    )
    ENGINE = MergeTree
    PARTITION BY toDate(timestamp)
    ORDER BY (timestamp, host)
    TTL timestamp + toIntervalWeek(1)
    SETTINGS index_granularity = 8192;

    Получаю такую ошибку при попытке создание:

    Code: 62. DB::Exception: Syntax error: failed at position 557 (')') (line 22, col 1): )
    ENGINE = MergeTree
    PARTITION BY toDate(timestamp)
    ORDER BY (timestamp, host)
    TTL timestamp + toIntervalWeek(1)
    SETTINGS index_granularity = 8192;

    -- Create K. Expected one of: PRIMARY KEY, CONSTRAINT, identifier, column declaration, INDEX, table property (column, index, constraint) declaration
  • https://t.me/clickhouse_ru
    в мерж три нужно MergreTree()
  • https://t.me/clickhouse_ru
    ORDER BY (timestamp, host)

    Сомнительно, ORDER BY (host, timestamp)
    Выглядит лучше

    > в мерж три нужно MergreTree()

    В новых версия не нужно
  • https://t.me/clickhouse_ru
    У меня нормально создалось, вы через что создаете

    CREATE TABLE default.access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `remote_user` String,
    `remote_addr` String,
    `scheme` String,
    `host` String,
    `server_addr` String,
    `request_method` String,
    `request_uri` String,
    `request_length` UInt32,
    `request_time` Float64,
    `status` UInt16,
    `body_bytes_sent` UInt32,
    `upstream_addr` String,
    `upstream_status` String,
    `upstream_response_time` Float64
    )
    ENGINE = MergeTree
    PARTITION BY toDate(timestamp)
    ORDER BY (host, timestamp)
    TTL timestamp + toIntervalWeek(1)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Докер
  • https://t.me/clickhouse_ru
    хотя да, вы правы. у меня кстаи создалось
  • https://t.me/clickhouse_ru
    какой клиент?
  • https://t.me/clickhouse_ru
    Это мой докер контейнер

    clickhouse:
    container_name: clickhouse
    image: yandex/clickhouse-server
    ports:
    - "8123:8123"
    - "9000:9000"
    volumes:
    - ./clickhouse:/var/lib/clickhouse:rw
    - ./clickhouse/scheme/init_schema.sql:/docker-entrypoint-initdb.d/init_schema.sql
  • @vvvjhaq #212584 09:30 AM, 06 Apr 2021
    Добрый день. В таблице планируем хранить данных за год, данных много, дневные партиции это не очень хорошо будет? И вообще каколе количество партиций нормально для таблицы?
  • https://t.me/clickhouse_ru
    @devmansurov #212585 09:30 AM, 06 Apr 2021
    А вот это файл init_schema.sql:

    CREATE TABLE IF NOT EXISTS default.access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `remote_user` String,
    `remote_addr` String,
    `scheme` String,
    `host` String,
    `server_addr` String,
    `request_method` String,
    `request_uri` String,
    `request_length` UInt32,
    `request_time` Float64,
    `status` UInt16,
    `body_bytes_sent` UInt32,
    `upstream_addr` String,
    `upstream_status` String,
    `upstream_response_time` Float64
    )
    ENGINE = MergeTree
    PARTITION BY toDate(timestamp)
    ORDER BY (timestamp, host)
    TTL timestamp + toIntervalWeek(1)
    SETTINGS index_granularity = 8192;

    -- Create Kafka engine table
    DROP TABLE IF EXISTS default.`.access_logs_kafka`;
    CREATE TABLE IF NOT EXISTS default.`.access_logs_kafka`
    (
    `request_id` String,
    `timestamp` DateTime,
    `service_pipe_addr` String,
    `server_addr` String,
    `upstream_addr` String,
    `client_addr` String,
    `scheme` String,
    `host` String,
    `request_method` String,
    `status` UInt16,
    `upstream_status` String,
    `upstream_response_time` String,
    `request_time` Float64,
    `request_length` UInt32,
    `body_bytes_sent` UInt32,
    `request_uri` String,
    `user_agent` String
    )
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'kafka:9092', kafka_topic_list = 'access-logs', kafka_group_name = 'access-logs-consumer', kafka_format = 'JSONEachRow', kafka_row_delimiter = '\n', kafka_schema = '', kafka_num_consumers = 1, kafka_skip_broken_messages = 1;

    -- Create materialized view
    DROP TABLE IF EXISTS `.mv_access_logs`;
    CREATE MATERIALIZED VIEW `.mv_access_logs` TO default.access_logs
    (
    `request_id` String,
    `timestamp` DateTime,
    `service_pipe_addr` String,
    `server_addr` String,
    `upstream_addr` String,
    `client_addr` String,
    `scheme` String,
    `host` String,
    `request_method` String,
    `status` UInt16,
    `upstream_status` String,
    `upstream_response_time` String,
    `request_time` Float64,
    `request_length` UInt32,
    `body_bytes_sent` UInt32,
    `request_uri` String,
    `user_agent` String
    ) AS
    SELECT
    request_id,
    timestamp,
    service_pipe_addr,
    server_addr,
    upstream_addr,
    splitByChar(',', client_addr)[1] AS client_addr,
    if(scheme = '', 'UNKNOWN', scheme) AS scheme,
    host,
    if(request_method = '', 'UNKNOWN', request_method) AS request_method,
    status,
    upstream_status,
    toFloat64OrZero(upstream_response_time) AS upstream_response_time,
    request_time,
    request_length,
    body_bytes_sent,
    request_uri,
    user_agent
    FROM default.`.access_logs_kafka`;
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #212584 #212586 09:32 AM, 06 Apr 2021
    По умолчанию рекомендуют партиционирование по месяцам. По моим наблюдениям если запросы собирают данные больше чем за один день, то партиционирование по дням эти запросы замедляет.
  • спасибо
  • https://t.me/clickhouse_ru
    @aksimemor #212588 09:47 AM, 06 Apr 2021
    Подскажите, имеется таблица Replacing merge tree. В нее каждый день дописываются данные за сегодня и за вчера.

    Сегодня обнаружили что данные за 2021-03-30 до сих пор не схлопнулись. Возможна ли эта проблема из-за не выставленных конфигураций сервера?
  • Сделайте OPTIMIZE FINAL для таблицы (или только проблемного партишна той таблицы), - если OPTIMIZE успешно отработает и ваши записи схлопнутся - значит кликхаус просто до тех записей ещё не добрался (Replacing гарантий по времени схлопывания не даёт) . (Или же, вместо OPTIMIZE FINAL, можно в тот же SELECT, которым вы проверяли дубли, добавить после имени таблицы FINAL - останутся ли тогда дубли?). Это одна ситуация, когда на самом деле всё как положено работает.
    И если вы знаете, что из систем-источников данные "за несколько дней назад" уже больше поступать не должны, а дубли в старых данных не устраивают - как вариант каким-нибудь ночным OPTIMIZE FINAL схлопывание поторопить.

    А вот если останутся не схлопнутыми - с этим стоит разобраться. Может быть какая-то ошибка схемы. Например, не будут схлопываться между собой записи, находящиеся в разных партициях.
  • @DigDiver #212590 10:17 AM, 06 Apr 2021
    Добрый день. Есть реплицируемая таблица с движком ReplicatedMergeTree. В нее данные попадают из KAFKA-MV-table. Такой вопрос таблицу с ENGINE = Kafka создавать на каждой реплике (понятно что с одинаковым kafka_group_name)? Или хватит на одной реплике?
  • @vvvjhaq #212591 10:19 AM, 06 Apr 2021
    В доке (https://clickhouse.tech/docs/ru/sql-reference/statements/alter/partition/#alter_attach-partition-from) не хвататет пункта, что политики хранения должны быть одинаковыми.
    PARTITION | Документация ClickHouse

    Манипуляции с партициями и кусками Для работы с партициями доступны следующие операции: DETACH PARTITION — перенести пар

  • @vvvjhaq #212592 10:25 AM, 06 Apr 2021
    Как можно перенести целые партиции из одной таблицы в другую, если отличие только в политике храненеия?
  • https://t.me/clickhouse_ru
    @aksimemor #212593 10:27 AM, 06 Apr 2021
    подскажите, где можно посмотреть выставленный параметр для merge_tree_max_rows_to_use_cache?
  • select * from system.settings
    where name='merge_tree_max_rows_to_use_cache';
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #212590 #212596 10:41 AM, 06 Apr 2021
    Лучше сделать на каждой реплике - так и читать быстрее будет (актуально если поток большой) и отказоустойчивость повышается на случай падения реплики-читателя.
  • https://t.me/clickhouse_ru
    @r1ckwayte #212598 10:45 AM, 06 Apr 2021
    как можно навесить права на пользователя? Что гугл предлагает пробовал, не помогло
  • https://t.me/clickhouse_ru
    @gleb_kucherenko #212600 11:21 AM, 06 Apr 2021
    Есть запрос:
    SELECT '"foo" foo', 'bar'
    Формирую URl http://localhost:8123/?query=SELECT%20%27%22foo%22%20foo%27%2C%20%27bar%27&default_format=TabSeparated и получаю
    "foo" foo bar
    с помощью какого параметра или настройки я могу обернуть строки в двойные кавычки, чтобы получить:
    ""foo" foo" "bar"
    в идеале бы добавлять кавычки, только в строках с кавычками
    ""foo" foo" bar
  • https://t.me/clickhouse_ru
    А с чего вдруг сервер должен оборачивать результат в кавычки? Вы что запросили, то и получили.
    Хотите доп. логику, напишите запрос соответствующий или на клиенте обрабатывайте
  • https://t.me/clickhouse_ru
    @gleb_kucherenko #212602 11:29 AM, 06 Apr 2021
    Странно, что заголовки столбцов он при этом экранирует в двойные кавычки, а значения нет, вот и подумал, что дело в настройках
  • https://t.me/clickhouse_ru
    @gleb_kucherenko #212603 11:31 AM, 06 Apr 2021
    точнее с параметром TabSeparatedWithNamesAndTypes
    выдает
    \'"foo" foo\' \'bar\'
    String String
    "foo" foo bar
    подумал, что и значения можно оборачивать
  • https://t.me/clickhouse_ru
    format CSV ?
  • https://t.me/clickhouse_ru
    TabSeparatedWithNamesAndTypes, для CSV нет WithNamesAndTypes
  • @7699150 #212606 11:47 AM, 06 Apr 2021
    Друзья, вопрос. Это нормально что кликхаус выполняет этот запрос и отдает информацию за 2е марта?

    select * from events where date = '2021-02-30' ;
  • https://t.me/clickhouse_ru
    detach partition / mv в bash / attach partition
  • а вот за 32е число уже не выдает
  • https://t.me/clickhouse_ru
    ну CSVWithNames есть
  • https://t.me/clickhouse_ru
    марта?

    SELECT toDate('2021-02-30')

    ┌─toDate('2021-02-30')─┐
    │ 2021-03-02 │
    └──────────────────────┘

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

    Спасибо. Посмотрел уже что toDate() так работает. Интересно в связи с чем так?)
  • https://t.me/clickhouse_ru
    Так быстрее парсить
  • https://t.me/clickhouse_ru
    @K1rill_F #212613 11:59 AM, 06 Apr 2021
    Всем привет! Пытаюсь перенести данные из таблицы Postgresql в клик с помощью Dbeaverа. данные переносятся, но неправильно. Некоторые числовые значения становятся отрицательными. Подскажите в чем может быть проблема?
  • https://t.me/clickhouse_ru
    @K1rill_F #212614 12:01 PM, 06 Apr 2021
    а кажется это из за типов данных, у меня Int8 и значения больше 127 становятся отрицательными
  • благодарю)
  • @612200930 #212616 12:24 PM, 06 Apr 2021
    Здравствуйте!
    Прошу помощи, не могу понять почему возникает ошибка при вставке данных

    Есть колонка DateTime64( 9 ) при вставке в нее данных 1617692259365297735 возникает ошибка:

    (version 21.2.2.8 (official build))
    Code: 407, e.displayText() = DB::Exception: Decimal math overflow, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @devmansurov #212617 12:27 PM, 06 Apr 2021
    Здравствуйте! Подскажите пожалуйста есть тут кто нибудь использующий Clickhouse вместе с Grafana?

    Возможно ли каким то образом сделать таблицу с пагинацией в Grafana в версии выше 7?
  • @612200930 #212618 12:28 PM, 06 Apr 2021
    похоже нашли, на сервере с версией 21.3.2.5 загрузилось
  • @cyberkexx #212619 01:21 PM, 06 Apr 2021
    Добрый день! У меня странный вопрос: допустим, в таблице есть столбцы time DateTime, и date Date ALIAS toDate(time). При выполнении запроса select ... where date >= today() - 2 производится ли оптимизация, такая что today() - 2 приводится к типу DateTime и при выполнении запроса столбец time сравнивается с приведённой константой, или каждое значения в столбце time сначала приводится к Date, а потом сравнивается с today() - 2?
  • https://t.me/clickhouse_ru
    каждая строка приводится к Date
  • Печально, спасибо. А планируется такая оптимизация в будущем?
  • https://t.me/clickhouse_ru
    эээ? Нет вроде. Вы где такое вообще видели?
    типа вы хотите чтобы КХ переписал запрос с where = 2020-01-01 в where >= 2020-01-01 00:00:00 and < 2020-01-02 00:00:00 ?
    с оптимизацией для полей alias вообще все плохо, очень плохо.
  • ясно, спасибо, значит буду думать в сторону MATERIALIZED и DEFAULT
  • https://t.me/clickhouse_ru
    @RT_1_98 #212624 02:08 PM, 06 Apr 2021
    Подскажите как можно посчитать хэш (например murmur3) от селекта, который возвращает массив значений?
    Нужно именно посчитать хэш от всех данных лежащих в массиве как если бы они лежали в одном файле или передавались на вход хэширующей функции из пайпа
  • https://t.me/clickhouse_ru
    сконкатенируй значения в строку и возьми хеш
  • https://t.me/clickhouse_ru
    В массиве лежать числа, мне хэш от них в строковом представлении не подходит.
    Да и как их собрать в одну строку я что то тоже не нашёл ((
  • https://t.me/clickhouse_ru
    SELECT murmurHash3_64(arrayStringConcat(arrayMap(x -> toString(x), [123, 456, 789]))
  • https://t.me/clickhouse_ru
    в файле лежат строки или байтики. байтики могут по-разному лежать
  • https://t.me/clickhouse_ru
    Ну порядок байт в КХ и на компе у меня одинаковый, так что должно работать корректно, но перегонять числа в строки совсем не хочется
  • SELECT
    [123, 456, 789] arr,
    arrayStringConcat(arrayMap(x -> toString(x), arr),'-') str,
    murmurHash3_64(str) hash
  • @ViacheslavNefedov #212631 02:20 PM, 06 Apr 2021
    приукрасил
  • https://t.me/clickhouse_ru
    @RT_1_98 #212633 02:23 PM, 06 Apr 2021
    Этот способ я понял, спасибо.
    Но мне нужно полное совпадение подсчёта хэша в КХ и на хосте, а через строки это долго и не совсем корректно.
  • https://t.me/clickhouse_ru
    @bralbral #212634 02:37 PM, 06 Apr 2021
    Добрый день. Выстрелил себе в колено с optimize final. Теперь гора мерджей текущих. Есть ли безболезненное лечение ? Остановить все мерджи на таблице - SYSTEM STOP MERGES table_name и потом запустить снова ?

    Upd: https://github.com/ClickHouse/ClickHouse/issues/12694
    how to kill optimize FINAL in backgroud · Issue #12694 · ClickHouse/ClickHouse

    i optimize a big table (replicedReplacingMergeTree) , it makes io 100% ,so i want to kill this optimize FINAL how can i do ? default.users (ReplicatedMergeTreeQueue): Not executing log entry MERGE_...

  • https://t.me/clickhouse_ru
    если репликейтид, то надо удалять в зукипере задание
  • https://t.me/clickhouse_ru
    и в чем проблема ? SELECT murmurHash3_64([1, 2, 3])
  • https://t.me/clickhouse_ru
    Пробовал отдавать на вход прямо массив из селекта - выдаёт ошибку. Завтра попробую ещё раз.
    С конкатенацией массива в строку всё работает
  • https://t.me/clickhouse_ru
    старый КХ?

    SELECT murmurHash3_64([1, 2, 3])

    ┌─murmurHash3_64([1, 2, 3])─┐
    │ 13667601236002041579 │
    └───────────────────────────┘
  • https://t.me/clickhouse_ru
    @RT_1_98 #212639 03:11 PM, 06 Apr 2021
    Пробовал так
    select mumurHash3_64(select arr1 from t1 where id = 1000)
  • https://t.me/clickhouse_ru
    @RT_1_98 #212640 03:11 PM, 06 Apr 2021
    Селект в скобках возвращает массив из примерно 50 UInt64
  • https://t.me/clickhouse_ru
    select mumurHash3_64(groupArray(arr1)) from t1 where id = 1000
  • https://t.me/clickhouse_ru
    Завтра проверю, спасибо
  • https://t.me/clickhouse_ru
    еще одни скобки нужны

    select murmurHash3_64 ( (select range(50)) );
    --
    7267519782819810907
  • https://t.me/clickhouse_ru
    @den_crane #212644 03:21 PM, 06 Apr 2021
    select murmurHash3_64 ( (select [1,2,3]) );
    --
    13667601236002041579
  • https://t.me/clickhouse_ru
    @nyoroon #212645 03:21 PM, 06 Apr 2021
    ничоси технологии
  • https://t.me/clickhouse_ru
    @nyoroon #212646 03:22 PM, 06 Apr 2021
    да, вспомнил - будет работать только если одна строка в селекте
  • https://t.me/clickhouse_ru
    @RT_1_98 #212647 03:24 PM, 06 Apr 2021
    Строка точно одна, вообще это будет материалайзед колонка
  • https://t.me/clickhouse_ru
    @RT_1_98 #212648 03:24 PM, 06 Apr 2021
    Нужно чтобы искать из приложения по хэшу, от того и требование одинаковости подсчёта
  • https://t.me/clickhouse_ru
    @adsrun #212650 03:40 PM, 06 Apr 2021
    Доброго времени. А вот так вот можно делать ?

    CREATE TABLE default.a_1_merge_summ_minuts (
    days toUInt64( toStartOfMinute ( toDateTime( DateTime ) ) ),
    ...........
    ) ENGINE = SummingMergeTree()
    ORDER BY
    (days, sid, tid) TTL days + toIntervalDay(9) SETTINGS index_granularity = 8192

    Чтобы простой инсерт сюда который был в таблицу MergeeTree стал агрегироваться по days ?
  • https://t.me/clickhouse_ru
    @morozovsk #212651 03:49 PM, 06 Apr 2021
    Есть табличка:

    CREATE TABLE users
    (
    user_id UInt64,
    property1 String,
    custom_properties Nested(k String, v String)
    ) Engine=MergeTree ORDER BY (user_id);

    Достать кастомные поля я могу таким способом:
    SELECT
    user_id,
    property1,
    custom_properties.v[indexOf(custom_properties.k, 'color')],
    custom_properties.v[indexOf(custom_properties.k, 'size')],
    FROM test.nested

    Выносим кастомные поля в отдельную табличку, чтобы легко можно было их обновлять:
    CREATE TABLE user_properties (
    user_id UInt64,
    k String,
    v String
    ) Engine=ReplacingMergeTree ORDER BY (user_id, k);

    Написал такой запрос:

    SELECT user_id, property1, vals[indexOf(keys, 'color')], vals[indexOf(keys, 'size')]
    FROM users
    JOIN (
    SELECT user_id, groupArray(k) as keys, groupArray(v) as vals
    FROM user_properties
    GROUP BY user_id
    ) using (user_id)

    всё вроде ок, одна проблема, что в документации написано:
    "groupArray добавляет значения в любом (недетерминированном) порядке"

    Есть какие-то детерминированные варианты?
  • @user93 #212653 03:57 PM, 06 Apr 2021
    Скрипт процессит огромный файл и генерирует записи которые нужно вставить в клик.

    Всегда делал вот так

    /opt/script --in=big.file | clickhouse-client -h 127.0.0.1 --query="INSERT INTO xxxx FORMAT JSONEachRow"

    А сейчас скрипт работает, никаких ошибок в терминале, но и в базе клика по нулям

    если сделать

    /opt/script --in=big.file > file.out
    clickhouse-client -h 127.0.0.1 --query="INSERT INTO xxx FORMAT JSONEachRow" < file.out

    то данные начинают появляться

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

    partition by тоже неплохо бы иметь, иначе все будет в одной партиции
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #212654 #212655 04:01 PM, 06 Apr 2021
    А как ? Я там явно каку скопипастил )
  • https://t.me/clickhouse_ru
    @adsrun #212656 04:02 PM, 06 Apr 2021
    там TTL days + toIntervalDay(9) - якобы умирать должно не нужное
  • https://t.me/clickhouse_ru
    а TTL
    ну тогда да.

    а запросы будут за все 9 дней данные кверять ?
  • https://t.me/clickhouse_ru
    @adsrun #212658 04:04 PM, 06 Apr 2021
    думая за 1 день сегодня
  • https://t.me/clickhouse_ru
    @den_crane #212659 04:04 PM, 06 Apr 2021
    можно партиционировать по дню и дропать TTL-м партиции
  • https://t.me/clickhouse_ru
    В некоторых случаях, вы всё же можете рассчитывать на порядок выполнения запроса. Это — случаи, когда SELECT идёт из подзапроса, в котором используется ORDER BY.
  • https://t.me/clickhouse_ru
    SELECT user_id, property1, vals[indexOf(keys, 'color')], vals[indexOf(keys, 'size')]
    FROM users
    JOIN (
    SELECT user_id, groupArray(k) as keys, groupArray(v) as vals
    FROM (SELECT user_id, k, v FROM user_properties order by user_id, k)
    GROUP BY user_id
    ) using (user_id)
  • https://t.me/clickhouse_ru
    @den_crane #212662 04:09 PM, 06 Apr 2021
    или

    SELECT user_id, property1, keys_vals.1[indexOf(keys, 'color')], keys_vals.2[indexOf(keys, 'size')]
    FROM users
    JOIN (
    SELECT user_id, arraySort(groupArray(k,v)) as keys_vals FROM user_properties
    GROUP BY user_id
    ) using (user_id)
  • https://t.me/clickhouse_ru
    --send_logs_level=debug --max_insert_block_size=1000
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #212657 #212664 04:15 PM, 06 Apr 2021
    А если импорт идет через импорт json и нет явного VALUE что то типа:
    101798 US impression Desktop

    А нужно чтобы в SummingMergeTree() .. залетело в любом случае +1 даже по пустому VALUE
    Ловятся регуесты в данном случае просто и нужна их сумма по полям

    days toUInt64( toStartOfMinute ( toDateTime( DateTime ) ) ),
    sid UInt32 DEFAULT CAST(0, 'UInt32'),
    tid UInt32 DEFAULT CAST(0, 'UInt32'),
    desktop_req UInt32 DEFAULT CAST(0, 'UInt32'),
    mobile_req UInt32 DEFAULT CAST(0, 'UInt32'),

    в схему костыль какой то засуваем ? )
    И можно ли тут выловить значение ... c параметра чтобы присвоить ему например desktop_req + 1
  • @user93 ↶ Reply to #212663 #212665 04:16 PM, 06 Apr 2021
    tnx, запустил скрипт, чуть позже отпишусь о результатах
  • https://t.me/clickhouse_ru
    либо input function либо вставка в таблицу Engine=null + MV c select sum(1)
  • https://t.me/clickhouse_ru
    спасибо. то что нужно
  • @user93 ↶ Reply to #212665 #212669 04:27 PM, 06 Apr 2021
    ) поставил --max_insert_block_size=1000 , пока скрипт работает в базе по нулям. Если прерываю скрипт по Ctrl+C - то записи появляются.

    Если ставлю --max_insert_block_size=10000 и прерываю, то записей в базе нету (видно не успело накопиться до тех пор пока прервал)

    Если при батче размеров 100000 понятно почему так происходит, то почему при батче в 1000 не появляются записи (когда они появляются их там около 20к штук) не понятно. Транзакций ведь в клике нету, что за чудеса блин

    UPD: оказалось, что нужно использовать опцию min_insert_block_size_rows, именно она отвечает за размер батча и мистерия с "транзакциями" ушла
  • https://t.me/clickhouse_ru
    @adsrun ↶ Reply to #212666 #212670 04:31 PM, 06 Apr 2021
    Спасибо.. А табличку MATERIALIZED VIEW с SELECT которая берет ..
    Можно на горячую дропнуть и поменять схему создав новую с этим же именем?
    Не возможен тут какой креш ? ))
  • https://t.me/clickhouse_ru
    только там нужно groupArray((k, v)) вместо groupArray(k, v), чтобы два параметра в тупл собрались, и вроде можно без arraySort.
    и ещё скобки добавил (keys_vals.1)[indexOf(keys, 'color')] вместо keys_vals.1[indexOf(keys, 'color')], а то на синтаксис ругалось, походу пыталось обратиться к цифре 1 как к массиву.
    но мысль понятна. ещё раз спасибо
  • https://t.me/clickhouse_ru
    транзакций нету, но парты атомарны, либо парт создан целиком либо нет. Инсерт не атомарен, а кусок инсерта атомарен.

    непонятно все равно что происходит, у вас приложение в конце возращает ненулевой код возврата видимо
  • https://t.me/clickhouse_ru
    смотря какое MATERIALIZED VIEW, если обычное, то все данные удалятся
  • https://t.me/clickhouse_ru
    @den_crane #212674 05:00 PM, 06 Apr 2021
    пересоздавать MATERIALIZED VIEW можно на ходу, креша не будет
  • https://t.me/clickhouse_ru
    @den_crane #212675 05:01 PM, 06 Apr 2021
    естественно MATERIALIZED VIEW пропустит все инсерты, в момент после дропа
  • @user93 ↶ Reply to #212672 #212676 05:02 PM, 06 Apr 2021
    дописал в исходное, но видно вы уже отвечали.

    UPD: оказалось, что нужно использовать опцию min_insert_block_size_rows=1000, именно она отвечает за размер батча и мистерия с "транзакциями" ушла

    Теперь вставки идут блоками по 1000, Пока гипотеза, что клик ждал блока в 1М, но где-то происходил фейл. Скрипт долго будет работать, завтра днем отпишусь что дал дебаг
  • https://t.me/clickhouse_ru
    я видел это, просто все несколько не так, но это надо полчаса печатать, нетелефонный разговор.
  • @user93 ↶ Reply to #212677 #212678 05:08 PM, 06 Apr 2021
    ок, все равно спасибо, дальше сам в документации и в приложении пороюсь, может что и найду
  • https://t.me/clickhouse_ru
    @ProffUst #212680 06:02 PM, 06 Apr 2021
    и здесь они
  • https://t.me/clickhouse_ru
    !report
  • @weastur #212682 08:21 PM, 06 Apr 2021
    Всем привет! Сделал дашборд в Grafana с метриками из встроенного экспортера. Может кому пригодится https://github.com/weastur/grafana-dashboards/tree/main/dashboards/clickhouse
    grafana-dashboards/dashboards/clickhouse at main · weastur/grafana-dashboards

    Set of useful grafana dashboards. Contribute to weastur/grafana-dashboards development by creating an account on GitHub.

  • 07 April 2021 (225 messages)
  • https://t.me/clickhouse_ru
    спасибо
    еще вот такой дашборд для встроенного endpoint есть

    https://grafana.com/grafana/dashboards/13500
    Clickhouse internal exporter dashboard for Grafana | Grafana Labs

    Clickhouse metrics for internal (embedded, <prometheus>) exporter

  • @356491488 #212685 05:44 AM, 07 Apr 2021
    Всем привет, кто-нибудь сталкивался с проблемой работы COLUMNS при джоине нескольких таблиц? когда COLUMNS нужно получить одноименные столбцы из таблиц
  • @356491488 #212686 05:48 AM, 07 Apr 2021
    select
    columns('test')
    -- , a.test, b.test, c.test
    from
    (select 1 as id, 'a' as test) a
    left join (select 1 as id, 'b' as test) b on b.id = a.id
    left join (select 1 as id, 'c' as test) c on c.id = a.id;
  • @356491488 #212687 05:48 AM, 07 Apr 2021
    пример запроса
  • https://t.me/clickhouse_ru
    проблема то в чем?

    EXPLAIN SYNTAX SELECT ...
    сделайте посмотрите как запрос переписывается?
  • раскоментируйте строку и сравните результат, в частности что возвращает columns('test')
  • https://t.me/clickhouse_ru
    да, похоже на баг при переписывании запроса

    EXPLAIN SYNTAX SELECT ...
    разные результаты показывает вообще

    Заводите ISSUE на github
  • @maiorrulz #212691 07:24 AM, 07 Apr 2021
    Всем привет, подскажите существует ли способ добавить несколько дисков но при этом при создании таблицы не упоминать setting storage_policy.
  • https://t.me/clickhouse_ru
    Существует, надо в конфигурации назвать ее default
  • https://t.me/clickhouse_ru
    @patzantre #212694 07:40 AM, 07 Apr 2021
    Привет! Как-то можно ускорить insert into replicated_table select * from hdfs_engine_table_gzipped_data? Например, как-то увеличить размер батча или отсоотировать исходные данные по primary key, или не сжимать данные в hdfs?
  • Спасибо 🙏, сейчас попробую
  • https://t.me/clickhouse_ru
    @anromanow #212696 07:57 AM, 07 Apr 2021
    всем доброе утро. подскажите, а есть бест практис по конфигам? не документация, а более вдумчивый текст?
    у меня на таблице с ReplacingMergeTree ужасно растет LA
  • https://t.me/clickhouse_ru
    тут бы понять во что упирается
    попробуйте CPU profiling всключить и system.trace_log для заданной query посмотреть
    https://github.com/Slach/clickhouse-flamegraph/

    ну и погираться в настройках HDFS('hdfs://host:port/storage?param=value')
    https://clickhouse.tech/docs/en/engines/table-engines/integrations/hdfs/#supported-by-libhdfs3
    из кандидатов на увеличение

    input_localread_default_buffersize
    dfs_prefetchsize
    output_default_chunksize
    dfs_client_read_shortcircuit_streams_cache_size

    но не факт что это поможет
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

    CLI utility for build flamegraph based on system.trace_log - GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

  • @Garpuun #212698 08:04 AM, 07 Apr 2021
    Всем привет!
    Такой вопрос: пытаюсь натравить ClickHouse на топик кафки (1 partition).
    Сообщения в топике лежат в следующем виде (для примера)

    {"code": 1, "name": "test-name"}

    {"code": 2, "name": "test-name"}

    скрипты создания таблиц и materialized view:

    create table KafkaConsumer
    (
    code Int8,
    name String

    ) ENGINE Kafka()
    SETTINGS
    kafka_broker_list = 'devhdp1:6667,devhdp2:6667,devhdp3:6667',
    kafka_topic_list = 'dds.logging',
    kafka_group_name = 'click-group1',
    kafka_format = 'JSONEachRow',
    kafka_num_consumers = 1,
    kafka_row_delimiter = '\n';

    create table LogsTable
    (
    code Int8,
    name String

    ) ENGINE MergeTree() order by (code);

    CREATE MATERIALIZED VIEW kafka_view to LogsTable as
    select code, name from KafkaConsumer;

    после выполнения скриптов, запрос
    select code, name
    from LogsTable;
    ничего не возвращает.
    сетевой доступ с ноды клика до ноды, где крутится кафка, есть.
    подскажите, плиз, в какую сторону копать. буду рад любой помощи.
  • https://t.me/clickhouse_ru
    а в логах что пишется ?
  • абсолютно ничего
  • https://t.me/clickhouse_ru
    а кафка точно на 6667 порту ? дефолтный 9093(или чето такое)
  • да, точно. глянул - другие сервисы туда же подключаются
  • https://t.me/clickhouse_ru
    @mikhailberg #212703 08:11 AM, 07 Apr 2021
    ну вообще странно. А вы какой лог смотрите ?
  • /var/log/clickhouse-server/clickhouse-server.log
  • https://t.me/clickhouse_ru
    а errror лог тоже пустой ?
  • https://t.me/clickhouse_ru
    @BloodJazMan #212706 08:14 AM, 07 Apr 2021
    а данные в топике то точно есть?
  • да, точно. прям руками накидал.
  • https://t.me/clickhouse_ru
    @BloodJazMan #212708 08:15 AM, 07 Apr 2021
    вообще да
    grep -i kafka /var/log/clickhouse-server/clickhouse-server.log
    не может НИЧЕГО не показывать =)

    у вас в clickhouse вообще логирование включено?
  • прошу прощения, не могу найти где error log лежит
  • https://t.me/clickhouse_ru
    /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    посмотрите с какой скоростью обычные hdfs клиенты читать будут
    типа этого
    https://github.com/barakmich/go-hdfs
    GitHub - barakmich/go-hdfs: Fast HDFS CLI

    Fast HDFS CLI . Contribute to barakmich/go-hdfs development by creating an account on GitHub.

  • спасибо. сейчас глянем.
  • вообще, да
  • в error log'е тоже пусто
  • https://t.me/clickhouse_ru
    @mikhailberg #212715 08:31 AM, 07 Apr 2021
    ну странно, что в логе прям ВООБЩЕ ничего
  • https://t.me/clickhouse_ru
    @mikhailberg #212716 08:31 AM, 07 Apr 2021
    вы точно на той тачке лог смотрите ?))) (всякое бывает)
  • https://t.me/clickhouse_ru
    @nadirius #212718 08:34 AM, 07 Apr 2021
    Здарова всем

    Есть проблема КХ куда то девает оперативу как посмотреть на что она уходит SHOW PROСCESLIST пустой
  • да, точно. на всяк случай еще раз проверил)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    gz-файл c protobuf внутри, размером 15gb, hdfs dfs -get копировал за несколько минут, вставка в таблицу же отрабатывала 40 минут, это таблица на одном из шардов кластера, без реплик
  • https://t.me/clickhouse_ru
    спасибо, попробую построить flamegraph
  • https://t.me/clickhouse_ru
    @AnKochem #212723 08:38 AM, 07 Apr 2021
    подскажите, как можно в clickhouse-client асинхронно запустить insert ... select ...? Запрос оч долгий, не хочу ждать 🙂
  • https://t.me/clickhouse_ru
    Все по 0 кроме query_log но там тоже если посмотреть на время выполнения уж ни как нет утечки на 5gb
  • https://t.me/clickhouse_ru
    скок оперативки вообще?
  • https://t.me/clickhouse_ru
    @nadirius #212726 08:42 AM, 07 Apr 2021
    250
  • https://t.me/clickhouse_ru
    250гб?
    Какая версия?
    Какой аптайм
  • https://t.me/clickhouse_ru
    @nadirius #212728 08:44 AM, 07 Apr 2021
    При запуске жрет мало но потом начинает расти без конца пока блин сервак не положит
  • https://t.me/clickhouse_ru
    Какая версия кх
  • https://t.me/clickhouse_ru
    protobuf на TSV можно заменить? или уже никак?
  • https://t.me/clickhouse_ru
    Да 250gb
    Остальное узнаю ща
  • https://t.me/clickhouse_ru
    Теоретически можно, но там сложная схема около 200 столбцов , много nested-полей
  • https://t.me/clickhouse_ru
    ну в общем надо смотреть flamegraph
  • https://t.me/clickhouse_ru
    version 20.11.3.3
  • https://t.me/clickhouse_ru
    Ну мб в вашей версии есть мем лик
  • @1014142656 #212736 09:17 AM, 07 Apr 2021
    Здравствуйте!

    Нужно используя clickhouse-cpp сделать вставку в таблицу.

    В таблице есть поле с дефолтным значением:
    key String,
    data String DEFAULT 'default'

    Нужно вставить данные в таблицу, причем в столбце 'data' часть данных заполнена, а часть должна заполниться значением по умолчанию.
    Вставку нужно сделать за одну операцию.

    Используя clickhouse-cpp, создаю два столбца ColumnString, но им обоим нужно вызвать column->Append(...). Только для некоторых строк во втором столбце данных нет.

    При использовании типа Nullable(String) все понятно, а как это сделать без Nullable?
  • @pavlov_m #212738 09:29 AM, 07 Apr 2021
    Добрый день. Есть ли возможность с консоли получить директорию в которой хранит данные клик? Вижу что есть эта инфорация на уровне парта и таблицы в базе system. Но может есть другой метод получения этого значения
  • https://t.me/clickhouse_ru
    через system.databases можно посмотреть data_path, metadata_path
  • спасибо
  • @githubreleases_bot #212741 b o t 09:50 AM, 07 Apr 2021
    ClickHouse/ClickHouse tagged: v21.3.5.42-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.5.42-lts
    Release notes:
    ClickHouse lts release v21.3.5.42-lts
    Release v21.3.5.42-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.5.42-lts

  • https://t.me/clickhouse_ru
    @zorrozoroff #212742 09:58 AM, 07 Apr 2021
    Добрый день, коллеги. Вопрос: после alter table delete .... и после того, как оно закончилось, данные могут потом внезапно вылезти в SELECT ? в SELECT FINAL?
  • https://t.me/clickhouse_ru
    А что значит «закончилось»? Мутация прошла?
  • https://t.me/clickhouse_ru
    @zorrozoroff #212744 10:16 AM, 07 Apr 2021
    Да
  • https://t.me/clickhouse_ru
    @artcorp96 #212745 10:36 AM, 07 Apr 2021
    Добрый день, подскажите пож-та, есть ли утилиты для миграций кх? Было бы интересно еще послушать как вы делаете доставку новых фитч в кх?
  • https://t.me/clickhouse_ru
    если миграция == backup, то clickhouse-backup; если из кластера в кластер, то clickhouse-copier
  • https://t.me/clickhouse_ru
    @critskiy #212748 10:46 AM, 07 Apr 2021
    можно еще тупо через distributed с триггером на вставку в MV... путей много, задачу нада
  • @konstantin_mitjurin #212749 10:52 AM, 07 Apr 2021
    Всем привет, такой вопрос, создали таблицу ReplicatedReplacingMergeTree, сделали order by по 3 колонкам, вставили туда 2 раза одни и те же данные, сделали селект и получили 2 раза эти же данные
  • @konstantin_mitjurin #212750 10:52 AM, 07 Apr 2021
    версия КХ 19.15.3
  • @konstantin_mitjurin #212751 10:53 AM, 07 Apr 2021
    CREATE TABLE default.user_uuid_local (`sky_uuid` String, `device_fingerprint` String, `device_pro_fingerprint` String, `version` DateTime, `created_at` DateTime) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/user_uuid_local', '{replica}', version) PARTITION BY toYYYYMM(created_at) ORDER BY (sky_uuid, device_fingerprint, device_pro_fingerprint) SETTINGS index_granularity = 8192
  • Из документации:
    ReplacingMergeTree is suitable for clearing out duplicate data in the background in order to save space, but it doesn’t guarantee the absence of duplicates.
  • @konstantin_mitjurin #212753 10:54 AM, 07 Apr 2021
    данные вставляем через distributed таблицу
  • @zheka_kolesnik #212754 10:54 AM, 07 Apr 2021
    и ещё оттуда же:
    Data deduplication occurs only during a merge. Merging occurs in the background at an unknown time, so you can’t plan for it. Some of the data may remain unprocessed. Although you can run an unscheduled merge using the OPTIMIZE query, don’t count on using it, because the OPTIMIZE query will read and write a large amount of data.
  • читал, но чтоб прямо вот так, и на единственных данных
  • @zheka_kolesnik #212756 10:54 AM, 07 Apr 2021
    ну если запустите optimize и подождёте, то дубликаты удалятся
  • @konstantin_mitjurin #212757 10:55 AM, 07 Apr 2021
    делали optimize
  • @konstantin_mitjurin #212758 10:55 AM, 07 Apr 2021
    не помогает
  • @zheka_kolesnik #212759 10:55 AM, 07 Apr 2021
    возможно данных довольно много и он ещё просто не завершился
  • @konstantin_mitjurin #212760 10:55 AM, 07 Apr 2021
    данных не много, я же говорю, вставили 2 строки для теста
  • @konstantin_mitjurin #212763 10:56 AM, 07 Apr 2021
    optimize table user_uuid_local on cluster sky final
  • они в одной партиции?
  • @zheka_kolesnik #212765 10:56 AM, 07 Apr 2021
    тогда к DDL-ке ещё бы и строку, которую вставляли
  • 👍🏻
  • кто его знает, у нас 3 шарда х 2 реплики каждый
  • ну у вас PARTITION BY toYYYYMM(created_at), а данные вставляли в разные месяца?
    пришлите 2 строки
  • @konstantin_mitjurin #212770 10:59 AM, 07 Apr 2021
    исходя из описания, из этих двух строк, должна была отстаться только та, которая имеет более высокий version
  • тру
  • а текстом можно?
  • @konstantin_mitjurin #212773 11:00 AM, 07 Apr 2021
    insert into user_uuid (sky_uuid, device_fingerprint, device_pro_fingerprint) values ('1','2','3');
  • @konstantin_mitjurin #212774 11:00 AM, 07 Apr 2021
    created_at и version = DEFAULT now()
  • @zheka_kolesnik #212775 11:06 AM, 07 Apr 2021
    хм, на 21.3 работает, но сомневаюсь, что дело в версии, не настолько она старая 🤔
  • @konstantin_mitjurin #212776 11:07 AM, 07 Apr 2021
    вы на кластере пробуете или на сингл инстансе?
  • дедупликация происходит в рамках шарда, не?
  • в кластере, но на сингл инстансе) проблема только если таблица на кластере?
  • @konstantin_mitjurin #212779 11:08 AM, 07 Apr 2021
    судя по всему - да
  • @konstantin_mitjurin #212780 11:09 AM, 07 Apr 2021
    мне необходимо добиться уникальности данных в рамках всего кластера
  • @konstantin_mitjurin #212781 11:11 AM, 07 Apr 2021
    на сколько я сейчас понял, то уникальность данных сохраняется на уровне шарда...
  • @konstantin_mitjurin #212782 11:11 AM, 07 Apr 2021
    ClickHouse: Usage of hash and internal_replication in Distributed & Replicated tables

    I have read this in the Distributed Engine documentation about internal_replication setting. If this parameter is set to ‘true’, the write operation selects the first healthy replica and writes da...

  • @konstantin_mitjurin #212783 11:11 AM, 07 Apr 2021
    You stabilized order and if insert is repeated the same rows goes to the same shard because a shard number for a row is calculated using pageviewId not rand().
  • @konstantin_mitjurin #212784 11:11 AM, 07 Apr 2021
    у меня вставка данных, как раз идет по rand()
  • https://t.me/clickhouse_ru
    @NickBlade #212785 11:16 AM, 07 Apr 2021
    Добрый день. Подскажите пожалуйста есть ли способ агрегировать в materialized view данные, которые берутся из базовой таблицы, но брать последнее значение в каждом дне?

    Смотрю в сторону ReplacingMergeTree с version в виде timestamp. Но пока не особо получатся. Заранее благодарю.
  • @konstantin_mitjurin #212786 11:17 AM, 07 Apr 2021
    используйте limit by
  • выглядит как в этом и есть проблема
    получается надо менять шардинг ки, или лить напрямую, а не в дистрибутед таблицу
  • или argMax
  • я поменял ключ шардирования
  • @konstantin_mitjurin #212790 11:19 AM, 07 Apr 2021
    все заработало
  • 👍🏻
  • https://t.me/clickhouse_ru
    Есть N шардов, хочу как то поставить на поток миграции.
    Например нужно добавить новое поле в кх Кафка энджин, приходится лезть в каждый шард и руками делать.
  • https://t.me/clickhouse_ru
    ALTER TABLE ... ADD COLUMN IF NOT EXISTS .. ON CLUSTER ? не?
  • https://t.me/clickhouse_ru
    @StadnikD #212794 11:25 AM, 07 Apr 2021
    А можно ли как-то преобразовать datetime в YearMonth. Вижу ,что есть только функция YearWeek
  • toYYYYMM()?
  • https://t.me/clickhouse_ru
    В том же кластере лежит дистриб таблица, ваше решение может задеть её
  • https://t.me/clickhouse_ru
    ага
  • так она же наверняка в другой базе или с каким-то суффиксом, не?
  • https://t.me/clickhouse_ru
    Как, если ткм написано If not exists, или вы колонки по разному зовете?
  • https://t.me/clickhouse_ru
    @artcorp96 #212800 11:29 AM, 07 Apr 2021
    Думаю clickhouse-copier попробую по совету @critskiy. Всем спасибо за ответы
  • https://t.me/clickhouse_ru
    Верно, но все же не хочется запускать такой sql на на уровне кластера.
  • @zheka_kolesnik #212803 11:31 AM, 07 Apr 2021
    получается вы сами себе противоречите, нужно добавить новое поле в кх Кафка энджин, приходится лезть в каждый шард и руками делать это и есть изменение на уровне кластера, решение придумано добавлением on cluster 🤔
  • https://t.me/clickhouse_ru
    Я не говорю, что on cluster работать не будет, я просто сказал, что не хочу так делать.
  • я понял) просто пока не понял почему есть опасения
  • @DigDiver #212806 11:34 AM, 07 Apr 2021
    Добрый день, решил попробовать подключить mongodb
    CREATE TABLE test.mongo_table
    (
    userId UInt64,
    type UInt16,
    registered DateTime,
    lastLogin DateTime
    ) ENGINE = MongoDB('server:27017', 'database', 'collection', '', '');

    Тестовая база без пароля,

    При попытке выполнить
    select type from test.mongo_table where userId = 1

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

    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Invalid argument: empty username (version 21.3.4.25 (official build))
  • https://t.me/clickhouse_ru
    Нет возможности запускать на части шардов, с clickhouse-copier кажется можно такое сделать
  • возможно вместо пустых строк лучше вообще ничего не указывать
  • https://t.me/clickhouse_ru
    ALTER TABLE имя_таблицы

    причем тут Distributed вообще?
    она же с другим именем

    для ReplicatedMergeTree
    ALTER TABLE через ZK будет выполняться
    для остальных таблиц тупо на лету обход шардов кластера и выполнение запроса
  • https://t.me/clickhouse_ru
    @critskiy #212811 11:41 AM, 07 Apr 2021
    особо неясно, причем тут щард (или я тупой)...
  • там похоже ситуация в том, что надо только на части кластера выполнять миграции
  • https://t.me/clickhouse_ru
    > причем тут Distributed вообще? она же с другим именем

    Пример.

    n шардов c таблицей users
    n нод с дистриб таблицей users (на этих нодах только дистриб таблицы и называются они так же, как в шардах простые таблицы)

    Это все в одном кластере
  • https://t.me/clickhouse_ru
    вопрос зачем так назвали
  • https://t.me/clickhouse_ru
    Вопрос почему нет?
  • https://t.me/clickhouse_ru
    не парились сейчас бы с колонками, ИМХО, но не мое дело, я простой человек
  • https://t.me/clickhouse_ru
    Ну я говорю, что on cluster решает задачу, но не совсем подходит мне, потому что я все таки хотел бы иметь возможность внести правки на часть шардов, чтоб убедится, что нечего не задели
  • https://t.me/clickhouse_ru
    @artcorp96 #212819 11:46 AM, 07 Apr 2021
    А то что так назвали, это до этого не мешало примерно некогда
  • @dj_mixer #212820 11:46 AM, 07 Apr 2021
    @milovidov_an сорри за оффтоп, а где можно посмотреть как вы хелп генерируете/ и скрипты для них? а то мы делаем подобное с ветками для для разных версий + деплоев
  • а для дистрибутед таблиц, кстати, не надо будет всё равно добавлять эти колонки?
  • https://t.me/clickhouse_ru
    для этого как бе песочница должна быть, или хотя б схема выделена для исследования гипотез на инстансе :)
  • https://t.me/clickhouse_ru
    Надо, но опять же, хотелось бы это делать не сразу, а выкатывать на части нод
  • https://t.me/clickhouse_ru
    @abaghyan #212824 11:48 AM, 07 Apr 2021
    Всем привет!
    Подскажите, пожалуйста, как в clickhouse получить самую последнюю таблицу из папки?

    Допустим, на скрине представлены таблицы, находящиеся в папке и мне нужно получить таблицу
    2021-04-07Т13:00:00
  • ясно) ну можно как решение просто поменять database в которой дистрибудет таблицы, тогда можно и on cluster юзать
  • она сама возьмётся, если в where есть ограничение по колонке указанной в ключе партиционирования
  • https://t.me/clickhouse_ru
    Ну вот у вас идет например 1 к инсертов/с (1 к тут лишь для примера), вот вы сделали песочницу и начали писать туда, нечего не сломалось, как вы перенесете данные из песочницы в основную таблицу?
  • Тогда при попытке создания таблицы будет ошибка
    Code: 42, e.displayText() = DB::Exception: Storage MongoDB requires 5 parameters: MongoDB('host:port', database, collection, 'user', 'password'). (version 21.3.4.25 (official build))
  • ну я бы тогда просто методом тыка что-то пробовал) ну или как верняковый враиант задал бы просто для этой тестовой монги таки юзер/пароль test|test
  • https://t.me/clickhouse_ru
    distributed + MV, или создам перед операциями вставок replicated таблицу
  • Вот тут:
    https://github.com/ClickHouse/ClickHouse/tree/master/docs/tools
    ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Ну идеи на подумать я получил, спасибо
  • https://t.me/clickhouse_ru
    =) хм... ну.
    сделайте в
    еще один кластер только с теми нодами в которых MergeTree таблица
    <remote_servers>
    <merge_tree_tables>
    <shard>
    ....
    <

    и запускайте ALTER TABLE ... ON CLUSTER 'merge_tree_tables'
  • 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
    а @BloodJazMan уже описал)
  • https://t.me/clickhouse_ru
    @artcorp96 #212840 11:55 AM, 07 Apr 2021
    Я понял вас, спасибо за ответы
  • @1412396476 #212841 11:56 AM, 07 Apr 2021
    Пытаюсь импортировать из Метрики данные используя https://github.com/yndx-metrika/logs_api_integration
    GitHub - yndx-metrika/logs_api_integration: Script for integration with Logs API

    Script for integration with Logs API. Contribute to yndx-metrika/logs_api_integration development by creating an account on GitHub.

  • @1412396476 #212842 11:56 AM, 07 Apr 2021
    Получаю ошибку Column 72, name: ProductsName, type: Array(String), parsed text: <EMPTY>ERROR
    Code: 130, e.displayText() = DB::Exception: Array does not start with '[' character (version 21.3.4.25 (official build))
  • спасибо!
  • @vvvjhaq #212845 01:25 PM, 07 Apr 2021
    при alter table … modify column вызвалась мутация, можно ее остановить? Можно удалить таблицу?
  • https://t.me/clickhouse_ru
    Kill mutation емнип попробуйте:
    https://clickhouse.tech/docs/ru/sql-reference/statements/kill/
    KILL | Документация ClickHouse

    KILL Существует два вида операторов KILL: KILL QUERY и KILL MUTATION KILL QUERY KILL QUERY [ON CLUSTER cluster] WHERE <w

  • https://t.me/clickhouse_ru
    @pic_Nick77 #212848 01:36 PM, 07 Apr 2021
    Подскажите, можно как-то в столбце подзапроса, который uniqExactState часть значений заменить на что-то типа null, чтобы потом при uniqExactMerge они не учлись?
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #212850 01:48 PM, 07 Apr 2021
    А подскажите, какой порядок аттачей при старте/рестарте?
    Как я понял - дикты, потом таблицы в дефолте, и потом дикты и таблицы во всех остальных базах?
  • спасибо, это как раз и смотрел
  • https://t.me/clickhouse_ru
    вопрос еще актуален)
  • https://t.me/clickhouse_ru
    попробуйте
    https://bitbucket.org/clickhouse_pro/metrika2clickhouse/src/master/

    Питоновский проект яндекс забросил и не саппортит
    ссылка выше тоже не сильно живая
    но там хотя бы docker образ есть
  • https://t.me/clickhouse_ru
    @165386325 #212854 01:56 PM, 07 Apr 2021
    есть у яндекс браузера нормальный чат, где можно задавать вопросы и получать ответы?
  • https://t.me/clickhouse_ru
    @165386325 #212855 01:56 PM, 07 Apr 2021
    удалось найти только их канал
  • https://t.me/clickhouse_ru
    @Tiloaria #212857 02:07 PM, 07 Apr 2021
    Привет, закончились идеи, может кто-то поможет, почему ClickHouse может кидать такую ошибку?
    Code: 43, e.displayText() = DB::Exception: First argument for function has must be an array.
  • https://t.me/clickhouse_ru
    потому что в какой то функции у вас первым аргументом должен быть массив, а приходит что то другое

    ссылка на внутренний корпоративный инструмент яндекса тут у большинства не откроется, так что не знаем как вам помочь
  • https://t.me/clickhouse_ru
    Ок, поняла, а что в Clickhouse функцией считается, потому что у меня только SELECT и JOIN в запросах и явным образом функций нет
  • https://t.me/clickhouse_ru
    @baltazorbest #212860 02:12 PM, 07 Apr 2021
    без самого запроса это гадание на кофейной гуще 🙂
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/
    SQL Reference -> Functions
    Overview | ClickHouse Documentation

    What Is ClickHouse? ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing

  • https://t.me/clickhouse_ru
    @baltazorbest #212862 02:13 PM, 07 Apr 2021
    вот функции которые бывают
  • https://t.me/clickhouse_ru
    @baltazorbest #212863 02:13 PM, 07 Apr 2021
    например
    select has(columnArray, 5) from table
    вот тут has функция
  • https://t.me/clickhouse_ru
    Ок, сообразила, спасибо
  • https://t.me/clickhouse_ru
    Вот пример запроса, что вместо null можно подставить?
    select uniqExactMerge(v_st)
    from (
    select k, if(k = 1, ->null<-, v_st)
    from (
    select k, uniqExactState(v) as v_st
    from (
    select 1 as k, 56 as v
    union all
    select 1 as k, 26 as v
    union all
    select 2 as k, 56 as v
    )
    group by k
    )
    )
  • можно просто uniqExacStateIf
  • а почему в uniqExactState(v) as v_st не подставите if? типо uniqExactState(if(k = 1, null, v)) as v_st
  • ещё в вашем случае можно можно просто where k!=1...
  • https://t.me/clickhouse_ru
    о, а это мне может помочь... попробую.
  • @profile_undefined #212870 03:06 PM, 07 Apr 2021
    красивая
  • https://t.me/clickhouse_ru
    !report
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    @nyatmeat #212875 04:20 PM, 07 Apr 2021
    Всем привет. По поводу with. Если я использую запрос в табличном выражении, и передаю это табличное выражение в несколько подзапросов, то запрос в with будет выполняться 1 раз или каждый раз в подзапросе?
  • with не хранит ничего в кэше, поэтому каждый раз будет выполнен.
  • https://t.me/clickhouse_ru
    @nyatmeat #212877 04:23 PM, 07 Apr 2021
    Ага, спасибо
  • https://t.me/clickhouse_ru
    вы уверены ?
    я не знаю насчет кх, но например в пг он вычисляется только 1 раз.
    подозреваю, что в кх тоже
  • @vvvjhaq #212879 04:28 PM, 07 Apr 2021
    вот тут я спрашивал
  • @vvvjhaq #212880 04:28 PM, 07 Apr 2021
    ну нету. with тоже не хранит никаких пром. результатов, это просто подстановки/макросы
  • https://t.me/clickhouse_ru
    @zholmyrza_t #212882 04:31 PM, 07 Apr 2021
    Подскажите пожалуйста, какая версия считается наиболее стабильной на данный момент для обновления?
  • https://t.me/clickhouse_ru
    Indentical subqueries (or CTE) execute only once. (condition pushdown) · Issue #21992 · ClickHouse/ClickHouse

    After #2301 fix, clickhouse execute sub queries from single level of query only once. But it doesn't work in case we are using that sub query in WHERE condition and that conditions is being...

  • https://t.me/clickhouse_ru
    @mikhailberg #212884 04:42 PM, 07 Apr 2021
    короче какая-то каша с cte, по доке вообще непонятно)
  • https://t.me/clickhouse_ru
    @zholmyrza_t #212885 05:32 PM, 07 Apr 2021
    что нужно делать, если в ЗК отсутствует определённая реплика в /path/replicas таблицы, и соответственно реплика не может подняться, и выходит ошибка:
    {} <Error> Application: Coordination::Exception: No node, path:
    Cannot attach table from metadatafile
  • https://t.me/clickhouse_ru
    @enclaved #212887 05:53 PM, 07 Apr 2021
    добрый вечер. подскажите, как, имея колонку Array(String), сделать GROUP BY по всем встречающимся String-ам в колонке?
  • https://t.me/clickhouse_ru
    @enclaved #212888 05:54 PM, 07 Apr 2021
    нужно их всех посчитать, каких значений сколько раз встречается
  • https://t.me/clickhouse_ru
    SELECT count(), c_value FROM table ARRAY JOIN column AS c_value GROUP BY c_value
  • https://t.me/clickhouse_ru
    @enclaved #212890 06:10 PM, 07 Apr 2021
    благодарю!
  • https://t.me/clickhouse_ru
    @zxcvcxzas7 #212891 06:15 PM, 07 Apr 2021
    Добрый вечер, как можно в КХ повторить что то типа этого SELECT
    customerID
    FROM
    table (values (1),(2),(3)) as a (customerID)
    except
    select
    customerID
    from
    customers;
  • @pp31415 #212892 06:18 PM, 07 Apr 2021
    коллеги, а есть ли пример запроса clickhouse-local из Parquet файлов с nested schema?
  • https://t.me/clickhouse_ru
    что это делает вообще ?
    что вы хотите сделать ?
  • https://t.me/clickhouse_ru
    Есть список и из него необходимо вернуть значения, которые не записаны в КХ
  • https://t.me/clickhouse_ru
    @beeblebrox #212895 06:20 PM, 07 Apr 2021
    WHERE customerID NOT IN (...) ?
  • https://t.me/clickhouse_ru
    where customerid not in () ?
  • https://t.me/clickhouse_ru
    @beeblebrox #212897 06:21 PM, 07 Apr 2021
    в скобках могут быть значения через запятую или подзапрос
  • https://t.me/clickhouse_ru
    Это вроде вернёт значения из КХ, которых нет в списке, а мне надо что бы вернул значения из списка(не записанного в КХ), которых нет в КХ
  • https://t.me/clickhouse_ru
    @mikhailberg #212899 06:23 PM, 07 Apr 2021
    ну наоборот сделайте
  • https://t.me/clickhouse_ru
    Один список записан в КХ, другой нет, и мне надо получить те значения, которые не записаны в КХ
  • https://t.me/clickhouse_ru
    SELECT arrayJoin([1, 2, 3]) AS a
    WHERE a NOT IN (2, 3)

    ┌─a─┐
    │ 1 │
    └───┘

    => select arrayJoin([values]) as alias where aliais not in (select custmerid from table)
  • https://t.me/clickhouse_ru
    @mikhailberg #212902 06:27 PM, 07 Apr 2021
    может этот способ не самый производительный и можно как-то через джоин провернуть
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @zxcvcxzas7 #212904 06:28 PM, 07 Apr 2021
    Ну уже хотя бы буду знать что дальше можно делать, может найду как оптимизирвоать
  • https://t.me/clickhouse_ru
    select id from qwe right anti join (select toInt32(arrayJoin([1,2,3,4])) as id) as values using (id)

    ┌─id─┐
    │ 4 │
    └────┘

    ну вот еще пример небольшой (там троху костылей из-за примера пришлось накинуть)

    select * from qwe

    SELECT *
    FROM qwe

    ┌─id─┐
    │ 1 │
    └────┘
    ┌─id─┐
    │ 3 │
    └────┘
    ┌─id─┐
    │ 2 │
    └────┘
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    1. убрал с /.../metadata/databasename/*.sql все файлы
    2. запустил инстанс
    3. прогнал скрипт создания таблиц
    4. где то скрипт выполнился успешно, где то нет. (где выполнился скрипт, создался path в ЗК, и в replicas заводится ваша реплика)
    5. там где вышла ошибка при созданнии, что в ZK уже есть path с метаданными определённых таблиц, я просто переместил файлы(*.sql) в metatadata/databasename/ и выполнил ATTACH TABLE dbname.tablename
  • https://t.me/clickhouse_ru
    @ne_perezvonyu #212909 07:19 PM, 07 Apr 2021
    Всем привет, у кого нить есть пример запроса с применением sequenceCount?
  • https://t.me/clickhouse_ru
    @scorsair #212912 08:00 PM, 07 Apr 2021
    Всем вечер добрый! :)
  • https://t.me/clickhouse_ru
    @scorsair #212913 08:00 PM, 07 Apr 2021
    Помогите люди добрые... ))
  • https://t.me/clickhouse_ru
    @scorsair #212914 08:00 PM, 07 Apr 2021
    clickhouse :) CREATE TABLE outcomes_hourly_dist AS outcomes_hourly_local ENGINE = Distributed('clickhouse', default, outcomes_hourly_local, rand())

    CREATE TABLE outcomes_hourly_dist AS outcomes_hourly_local
    ENGINE = Distributed('clickhouse', default, outcomes_hourly_local, rand())

    Query id: 94087ebb-4e72-47dd-ad25-4bccd54aeb14

    0 rows in set. Elapsed: 0.002 sec.

    Received exception from server (version 21.2.7):
    Code: 60. DB::Exception: Received from clickhouse-0.clickhouse-headless:9000. DB::Exception: Table default.outcomes_hourly_local doesn't exist.
  • https://t.me/clickhouse_ru
    @scorsair #212915 08:00 PM, 07 Apr 2021
    Моя совсем не понимать, что не так с этим свежеустановленным Clickhouse
  • Доброй ночи, коллеги @milovidov_an @proller, очень прошу о помощи по clickhouse-cpp, не знаем к кому еще идти 😉
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE outcomes_hourly_local;
  • https://t.me/clickhouse_ru
    clickhouse :) SHOW CREATE TABLE outcomes_hourly_local;

    SHOW CREATE TABLE outcomes_hourly_local

    Query id: 075c8e2c-f936-441b-b284-b585121654b0

    0 rows in set. Elapsed: 0.002 sec.

    Received exception from server (version 21.2.7):
    Code: 390. DB::Exception: Received from clickhouse-0.clickhouse-headless:9000. DB::Exception: Table `outcomes_hourly_local` doesn't exist.
  • https://t.me/clickhouse_ru
    Ну кх говорит, что outcomes_hourly_local не существует
  • https://t.me/clickhouse_ru
    Так я и хочу её создать)
  • https://t.me/clickhouse_ru
    Нет,
    Вы создаете другую таблицу на основании outcomes_hourly_local, которой не существует

    CREATE TABLE outcomes_hourly_dist
  • https://t.me/clickhouse_ru
    Такс, тогда секундочку. Еще покурю немного
  • https://t.me/clickhouse_ru
    У меня есть вот такой скрипт:
    for tbl in discover errors groupassignee groupedmessage outcomes_hourly migrations outcomes_mv_hourly outcomes_raw sentry sessions_hourly sessions_hourly_mv sessions_raw transactions; do
    for ((i=0;i<3;i++)); do
    clickhouse-client --database=default --host=clickhouse-$i.clickhouse-headless --port=9000 --query="CREATE TABLE ${tbl}_dist AS ${tbl}_local ENGINE = Distributed('clickhouse', default, ${tbl}_local, rand())";
    done
    done
  • https://t.me/clickhouse_ru
    @scorsair #212925 08:16 PM, 07 Apr 2021
    По идее, он должен отрабатывать...
  • https://t.me/clickhouse_ru
    Хорошо, он создает Distributed таблицы на основе локальных.
    У вас проблема в том, что локальных таблиц нет
  • https://t.me/clickhouse_ru
    Ааа, это навевает на мысли. Спасибо. Пойду разбираться.
  • https://t.me/clickhouse_ru
    Еще раз спасибо, действительно нашёл где создаются таблицы _local.
  • https://t.me/clickhouse_ru
    @aksimemor #212929 11:29 PM, 07 Apr 2021
    Подскажите как посмотреть логи почему кликхаус упал?
  • https://t.me/clickhouse_ru
    @aksimemor #212930 11:30 PM, 07 Apr 2021
    Буквально час назад работал в обычном режиме и теперь после каждого запроса уходит в рестарт
  • 08 April 2021 (122 messages)
  • https://t.me/clickhouse_ru
    @aksimemor #212931 12:06 AM, 08 Apr 2021
    кажется нашел крит ошибку.

    Подскажите как можно исправить?

    https://gist.github.com/Spar9a/8ddd8391f3505ce50f52e32ae32f243e
    gist:8ddd8391f3505ce50f52e32ae32f243e

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

  • https://t.me/clickhouse_ru
    e1771656-de62-4430-88e4-3d80bafe9e63 найдите этот запрос в логе и пишите ошибку на гитхаб
  • @inscaven #212935 06:33 AM, 08 Apr 2021
    подскажите, сделал для query_log и query_thread_log вместо <partition_by> свой <engine>ENGINE = MergeTree PARTITION BY (event_date)
    ORDER BY (event_time)
    TTL event_date + 14 day DELETE
    SETTINGS ttl_only_drop_parts=1</engine>
    дропнул обе таблицы, рестертнул КХ, query_thread_log пересоздался, а qury_log нет, пропал
    как его теперь вернуть?))
  • https://t.me/clickhouse_ru
    @devmansurov #212936 06:43 AM, 08 Apr 2021
    Добрый день! Подскажите пожалуйста как сделать правильный запрос LIKE с двумя символами -

    У меня есть такой запись:

    xn--ms-3ye.example.ru

    Не могу сделать выборку с этой командой:

    SELECT host FROM default.access_logs WHERE host LIKE '--'

    Как это сделать правильно?
  • https://t.me/clickhouse_ru
    Твой запрос эквивалентен host = '--'. Ты хочешь LIKE '%--%'
  • решение : нужно было слово INTERVAL перед количеством дней
  • Можно попробовать через табличную функцию input (INSERT ... SELECT ... FROM input(...)) В самом clickhouse-cpp особых средств нет, насколько я знаю.
  • @milovidov_an #212941 08:12 AM, 08 Apr 2021
    На всякий случай создал фич реквест на кое что похожее: https://github.com/ClickHouse/ClickHouse/issues/22832
    Add a setting `insert_select_null_as_default` · Issue #22832 · ClickHouse/ClickHouse

    Use case CREATE TABLE default_test (s String DEFAULT 'Hello') ENGINE = Memory; -- works, see the `input_format_null_as_default` setting. INSERT INTO default_test VALUES ('Wo...

  • https://t.me/clickhouse_ru
    @160336413 #212942 08:46 AM, 08 Apr 2021
    \0/ Контекст: в String поле сохраняю маленький архив (долгая история)
    Скачивается архив простой командой:
    clickhouse-client -q "SELECT model FROM artifacts WHERE date='2021-12-01'" --format RawBLOB > model.tar
    Воркс файн

    Проблема: старые версии CH клиента не умеют RawBLOB - DB::Exception: Unknown format RawBLOB
    Перебрал несколько других форматов, нашёл рабочий костыль - использовать TSVRaw и убирать \n который он добавляет
    clickhouse-client -q "SELECT model FROM artifacts WHERE date='2021-12-01'" --format TSVRaw > model.tar | truncate -s -1 model.tar

    Может есть более простой вариант и вообще я всё делаю не так?)
  • @and1by #212943 08:48 AM, 08 Apr 2021
    Всем привет.
    Может кто может дать мануал как правильно cluster собирать?
  • @bochkarevnv #212944 09:02 AM, 08 Apr 2021
    Всем привет! Есть api c авторизацией из которой хочется получать данные. Ответ она выдает вот такой:
    {"data":[{"id":1,"name":"one"},{"id":2,"name":"two"}]}
    Получать хочется в виде таблицы:
    id|name|
    1|one |
    2|two |
    Поскольку api с авторизацией, то доступен только справочник как я понимаю. И тут две проблемы которые не получается решить:
    1. нет могу найти подходящую структуру DDL чтобы описать такую таблицу с format JSON. Может у кого-то есть пример?
    2. было бы норм если бы справочник отдавал просто весь json и дальше с помощью функций его распарсить, но справочнику нужен ключ, можно ли как-то задать фейковый ключ, а весь json поместить в значение?
  • https://t.me/clickhouse_ru
    @edvls #212945 10:20 AM, 08 Apr 2021
    Привет!

    У нас в какой-то момент стала падать запись в базу в yandex cloud, причем в том числе падает то что раньше записывалось. В логах
    Code: 241, e.displayText() = DB::Exception: Memory limit (total) exceeded: would use 3.00 GiB (attempt to allocate chunk of 13833584 bytes), maximum: 3.00 GiB (version 21.3.4.25 (official build)) (from [2a02:6b8:c11:3522:0:4457:ecc7:6002]:50050) (in query: INSERT INTO dialogs FORMAT TabSeparated ), Stack trace (when copying this message, always include the lines below):\n\n0. DB::Exception::Exception<char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*&&, char const*&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, long&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) @ 0x86261a5 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n1. MemoryTracker::alloc(long) @ 0x8625afd in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n2. MemoryTracker::alloc(long) @ 0x8625864 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n3. MemoryTracker::alloc(long) @ 0x8625864 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n4. MemoryTracker::alloc(long) @ 0x8625864 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n5. Allocator<false, false>::realloc(void*, unsigned long, unsigned long, unsigned long) @ 0x865e426 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n6. void DB::PODArrayBase<8ul, 4096ul, Allocator<false, false>, 15ul, 16ul>::resize<>(unsigned long) @ 0x8a75913 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n7. DB::ColumnString::insertRangeFrom(DB::IColumn const&, unsigned long, unsigned long) @ 0xf205063 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n8. DB::ColumnArray::insertRangeFrom(DB::IColumn const&, unsigned long, unsigned long) @ 0xf17898b in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n9. void DB::SquashingTransform::append<DB::Block const&>(DB::Block const&) @ 0xe8d5625 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n10. DB::Block DB::SquashingTransform::addImpl<DB::Block const&>(DB::Block const&) @ 0xe8d4eb1 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n11. DB::SquashingBlockOutputStream::write(DB::Block const&) @ 0xec65359 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n12. DB::CountingBlockOutputStream::write(DB::Block const&) @ 0xeb80dce in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n13. DB::copyData(DB::IBlockInputStream&, DB::IBlockOutputStream&, std::__1::atomic<bool>*) @ 0xe8d57ca in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n14. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, DB::Context&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) @ 0xf13698e in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n15. DB::HTTPHandler::processQuery(DB::Context&, DB::HTTPServerRequest&, DB::HTMLForm&, DB::HTTPServerResponse&, DB::HTTPHandler::Output&, std::__1::optional<DB::CurrentThread::QueryScope>&) @ 0xf84da4a in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n16.
  • https://t.me/clickhouse_ru
    @edvls #212946 10:20 AM, 08 Apr 2021
    DB::HTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0xf851bde in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n17. DB::HTTPServerConnection::run() @ 0xf8daa0f in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n18. Poco::Net::TCPServerConnection::start() @ 0x11f84caf in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n19. Poco::Net::TCPServerDispatcher::run() @ 0x11f866c1 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n20. Poco::PooledThread::run() @ 0x120bcde9 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n21. Poco::ThreadImpl::runnableEntry(void*) @ 0x120b8c4a in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n22. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so\n23. __clone @ 0x121a3f in /lib/x86_64-linux-gnu/libc-2.27.so\n
    получается записывать только очень небольшие порции данных и даже они, кажется рандомно падают

    Когда я это обнаружил, попробовал обновить кликхаус на более свежую версию 21.3 LTS. Запись тоже падает, но ещё в логах появились ошибки вида:
    Code: 252, e.displayText() = DB::Exception: Too many parts (300). Parts cleaning are processing significantly slower than inserts, Stack trace (when copying this message, always include the lines below):\n\n0. DB::Exception::Exception<unsigned long&>(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long&) @ 0x865dbde in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n1. DB::MergeTreeData::delayInsertOrThrowIfNeeded(Poco::Event*) const @ 0xf5f2e33 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n2. DB::PushingToViewsBlockOutputStream::writePrefix() @ 0xec5c60b in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n3. DB::SystemLog<DB::MetricLogElement>::flushImpl(std::__1::vector<DB::MetricLogElement, std::__1::allocator<DB::MetricLogElement> > const&, unsigned long) @ 0xf0880ef in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n4. DB::SystemLog<DB::MetricLogElement>::savingThreadFunction() @ 0xf086490 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n5. ThreadFromGlobalPool::ThreadFromGlobalPool<DB::SystemLog<DB::MetricLogElement>::startup()::'lambda'()>(DB::MetricLogElement&&, DB::SystemLog<DB::MetricLogElement>::startup()::'lambda'()&&...)::'lambda'()::operator()() @ 0xf086336 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n6. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x865165f in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n7. void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()> >(void*) @ 0x86550f3 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug\n8. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so\n9. __clone @ 0x121a3f in /lib/x86_64-linux-gnu/libc-2.27.so\n (version 21.3.4.25 (official build))

    Нашел тут рекомендацию для первой проблемы уменьшить Background pool size, не помогло.
    Подозреваю,что проблемы начались после какой-то операции с кластером 18 марта, но не уверен, так как в этот период запись падала из-за проблем на нашей стороне и мы починили их только недавно. У той операции не указан пользователь, она видимо сервисная? Как узнать, что это было?
  • https://t.me/clickhouse_ru
    @353222455 #212947 10:22 AM, 08 Apr 2021
    Всем привет! Есть таблица T, в ней данные за много лет , партицировано по дате. Когда нужно “задним” числом заменить данные, мы готовим блоки данных в таблице T_ (такой же точно структуры, что и T), а потом просто делаем REPLACE PARTITION за нужные даты. НО кажется это не будет работать в случае REPLICATED и DISRTRIBUTED таблиц, а на продакшене нас именно это ждёт. Как быть?
  • https://t.me/clickhouse_ru
    1) первое падение
    у вас какое кол-во колонок при вставке?
    сколько паралельных вставок?

    2) too many parts
    вы слишком часто вставлете, увеличивайте размер батча, база у вас не успевает мержить
    https://docs.google.com/document/d/1WaGMCPh6areffDjvWDUnzhQ4G7NiVDMlikylcNR2t90/edit?usp=sharing
    Too many parts

    ClickHouse. “Too many parts” One of the first problems the people usually meet when starting to use ClickHouse is “Too many parts” exception - usually, they just try to insert into MergeTree one row at a time. Later the problem can return when you start scaling the system up and go from dev to ...

  • Distributed в себе данные не хранит, поэтому ее это никак не заафектит. Replace partition тоже должен работать если движок у T_ тоже replicated
  • https://t.me/clickhouse_ru
    почему не будет?

    REPLACE PARTITION должна реплицировать новые system.parts на другие реплики через ZK
    а Distributed таблицам вообще пофиг
    как только данные отреплицируются
    оно будет показывать актуальные результаты вне зависимости от реплики
    и до этого момента будет показывать разные результаты , в зависимости от того с какой реплики для шарда данные прочитало
  • https://t.me/clickhouse_ru
    @edvls ↶ Reply to #212948 #212951 10:34 AM, 08 Apr 2021
    1) точно не скажу но до 30. В первых запусках было 4 процесса, но я пробовал снижать до 1, падает также
    2) появляется, когда я не делаю внешних вставок. Там отложенный эффеккт? нужно дропнуть очередь? Как это сделать?
  • https://t.me/clickhouse_ru
    1) ну это не много
    попробуйте помониторить что у вас отожрало память
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory

    2) не очень понял, too many parts это ошибка именно при вставках

    но судя по тому что в stacktrace есть
    ThreadFromGlobalPool::ThreadFromGlobalPool<DB::SystemLog<DB::MetricLogElement>::startup()::'lambda'()>(DB::MetricLogElement&&, DB::SystemLog<DB::MetricLogElement>::startup()::'lambda'()&&...)::'lambda'()::operator()()

    может быть вам надо запустить TRUNCATE TABLE system.metric_log
  • https://t.me/clickhouse_ru
    Вот я как раз сейчас буду пробовать это, только test bed подготовлю
  • https://t.me/clickhouse_ru
    @353222455 #212954 11:00 AM, 08 Apr 2021
    Но вопрос на самом деле больше про distributed
  • https://t.me/clickhouse_ru
    @353222455 #212955 11:03 AM, 08 Apr 2021
    Если T_ просто создана на одном из узлов и не является distributed, то начинаются вопросы. А если она distributed, то надо на каждом узле отдельно подавать REPLACE PARTITION, что не есть хорошо
  • https://t.me/clickhouse_ru
    @ivandest #212956 11:06 AM, 08 Apr 2021
    gggggg
    ghg
  • https://t.me/clickhouse_ru
    она не может быть Distributed
    она должна быть ReplicatedMergeTree
    чтобы вы подготовили данные и среплицировали их
    а потом среплицировали через ZK сам запрос на REPLACE PARTITION
  • https://t.me/clickhouse_ru
    @353222455 #212958 11:11 AM, 08 Apr 2021
    Ок, всё верно. Но Целевая таблица именно Distributed, и мне нужно корректно в ней заменить один part, на одну дату.
  • https://t.me/clickhouse_ru
    @igor_trof #212959 11:11 AM, 08 Apr 2021
    Добрый день! Может кто сталкивался, появилась проблема на программном рейде где КХ, почему то сам рейдовый диск в 100% утилизации, а диски 20-30% максимум? вроде бы производительность не упала, очень странно.
  • https://t.me/clickhouse_ru
    @353222455 #212960 11:13 AM, 08 Apr 2021
    Partition и Distribution ключи разные
  • https://t.me/clickhouse_ru
    вы в distribued запускаете ALTER TABLE .. REPLACE PARTITION ? ;)
    и оно у вас не ругается ни на что?
  • https://t.me/clickhouse_ru
    у вас RAID5?
    шифврование включено какое то?
  • https://t.me/clickhouse_ru
    Не запускаю, потому что оно конечно же ругается и это ожидаемо
  • https://t.me/clickhouse_ru
    @353222455 #212964 11:23 AM, 08 Apr 2021
    Пока вижу вариант на половине узлов кластера подавать repl partition на исходных replicatedMergeTree таблицах. Вот если бы можно было дописать on cluster !
  • https://t.me/clickhouse_ru
    @353222455 #212965 11:24 AM, 08 Apr 2021
    У нас 2 шарда и 2 реплики, всего 4 узла
  • https://t.me/clickhouse_ru
    нет raid10 работал год, сейчас появились такие проблемы
  • https://t.me/clickhouse_ru
    HDD ? SSD?
  • https://t.me/clickhouse_ru
    ssd
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #212966 #212970 11:38 AM, 08 Apr 2021
    cat /proc/mdstat говорит что-то необычное?
  • https://t.me/clickhouse_ru
    неа
  • https://t.me/clickhouse_ru
    @igor_trof #212972 11:42 AM, 08 Apr 2021
    мб с ядро что то не давно были обновления
  • https://t.me/clickhouse_ru
    @anromanow #212973 11:53 AM, 08 Apr 2021
    подскажите плиз
    я создал sql юзера c таким же именем, какое есть в xml (так говорит ошибка)
    мне надо удалить xml пользователя. но в /etc/clickhouse-server/users.xml я его не нашел
    где он может быть?

    e.displayText() = DB::Exception: Found User `dwh` in 2 storages: users.xml, memory
  • https://t.me/clickhouse_ru
    @igor_trof #212975 12:21 PM, 08 Apr 2021
    в обшем проблема в ядре Linux 3.10.0-1160.15.2.el7.x86_64
  • https://t.me/clickhouse_ru
    @edvls ↶ Reply to #212952 #212976 12:26 PM, 08 Apr 2021
    1) показывает только саму загрузку. Если пускать в один поток порциями по 50000 строк, то успевает записать десяток кусков, затем падает с переполнением памяти. Запрос показывает только сами инсерты (не знаю, откроется ли у тебя) https://yql.yandex-team.ru/Operations/YG7zmSyLNTG-GCnSV-vIt1VGH2AEJRTgP6DFd-eyQoI=

    Я перепутал про размер таблицы, там на самом деле 56 колонок, но кажется это не должно сильно менять результат.

    Проблема с too many parts кажется ушла. Я не уверен, что повлияло, truncate или то что я облако предложило обновить кластер и я это сделал
  • https://t.me/clickhouse_ru
    @matthiasBT #212977 12:37 PM, 08 Apr 2021
    привет
    создал матвьюшку на таблице MergeTree, стрельнула ошибка "Too many partitions for single INSERT block "
    версия клика 19.8.3.8
    почему вдруг так?
  • https://t.me/clickhouse_ru
    @matthiasBT #212978 12:37 PM, 08 Apr 2021
    т.е. стреляет сам запрос создания матвьюшки
  • какой partition by в MergeTree таблице?
  • @7699150 #212980 12:43 PM, 08 Apr 2021
    запрос создания делаете с POPULATE?
  • https://t.me/clickhouse_ru
    @matthiasBT #212981 12:44 PM, 08 Apr 2021
    с POPULATE
    партиционирование делаем по дням
  • делайте партиции по месяцам
    не рекомендуется иметь больше 100 партиций на таблицу
  • @7699150 #212983 12:46 PM, 08 Apr 2021
    при попытке популейта вы пытаетесь вставить данные в оочень много партиций за раз
    вот и ругается
    сделаете PARTITION BY toYYYYMM(date) — будет все ок
  • https://t.me/clickhouse_ru
    @matthiasBT #212984 12:46 PM, 08 Apr 2021
    спасибо
  • @7699150 #212985 12:47 PM, 08 Apr 2021
    Ребят, подскажите пожалуйста, почему KILL QUERY может не иметь эффекта, даже с SYNC в конце?
    Выполлняю KILL, а запрос не убивается
  • @serlex777 #212986 12:57 PM, 08 Apr 2021
    Помогите пожалуйста
    после обновления КХ начал ругаться на протобуф
    Multiple columns (device_xipAddress_i, device_xipAddress_ip) cannot be serialized to a single protobuf field

    раньше все работало без проблем
    обновлялись с 20.6.4.44 to 21.3.4.25
  • @serlex777 #212987 12:58 PM, 08 Apr 2021
    хотя такое поле одно device_xipAddress_ip
  • из заметного, если посмотреть на запрос в system.processes, то в нем очень много thread_ids — больше сотни
  • Точно не скажу, но на одном из митапов услышал ответ, что запрос можно убить только в некоторых моментах его выполнения, то есть может настать момент выборки, при котором его уже не убить
  • есть это так, то это боль (
  • https://t.me/clickhouse_ru
    @klimmilk #212991 01:21 PM, 08 Apr 2021
    Коллеги, здравствуйте! Немного отстал от релизов, не могу найти в чем суть перехода на формат .inner_id.<...> вместо .inner.<mv_name> при создании MV без целевой таблицы. Плюс возникает вопрос как с этим быть, если стоит задача переноса данных со старой схемы на новую (с 20.5.2 на 21.3.4)?
  • https://t.me/clickhouse_ru
    atomic базы, чтобы была возможность переименовать MV

    https://kb.altinity.com/engines/altinity-kb-atomic-database-engine
    https://github.com/adevyatova/ClickHouse/blob/b41f1abf981bd0bb936238872f996d8607092a6e/docs/ru/engines/database-engines/atomic.md
  • https://t.me/clickhouse_ru
    @den_crane #212993 01:30 PM, 08 Apr 2021
    а вообще просто не надо использоваться MV без синтаксиса TO.
    теряете перфоманс и обретаете гемор
  • https://t.me/clickhouse_ru
    обычный баг
  • т е проблема в версии?
  • https://t.me/clickhouse_ru
    Согласен. Получается просто так не обновиться без редактирования схемы?
  • https://t.me/clickhouse_ru
    ? c чего вы взяли
  • https://t.me/clickhouse_ru
    @den_crane #212998 01:55 PM, 08 Apr 2021
    просто отмените Atomic

    # cat /etc/clickhouse-server/users.d/disable_atomic_database.xml
    <?xml version="1.0"?>
    <yandex>
    <profiles>
    <default>
    <default_database_engine>Ordinary</default_database_engine>
    </default>
    </profiles>
    </yandex>
  • https://t.me/clickhouse_ru
    Я имел в виду, если все-таки переходить с Ordinary на Atomic
  • https://t.me/clickhouse_ru
    ну ОК перешли вы на Атомик. Чем вам мешает .inner_id.<...> ?
  • https://t.me/clickhouse_ru
    Если есть цепочки MV, которые обращались к inner.<>
  • https://t.me/clickhouse_ru
    а ну считайте что unexpected behaivor. Заведите issue напишите, что вот такая фигня теперь.
  • https://t.me/clickhouse_ru
    @finio #213003 03:10 PM, 08 Apr 2021
    привет
    у нас после обновления с 19.4 до 21.3 появились странные warning'и
    на реплике:
    2021.04.08 17:00:18.627885 [ 724 ] {} <Warning> ol_olap_2.main_at (ReplicatedMergeTreePartCheckThread): Checking if anyone has a part 20110601_20110630_0_5197_1115 or covering part.
    2021.04.08 17:00:18.649137 [ 724 ] {} <Warning> ol_olap_2.main_at (ReplicatedMergeTreePartCheckThread): Found parts with the same min block and with the same max block as the missing part 20110601_20110630_0_5197_1115. Hoping that it will eventually appear as a result of a merge.

    мы вставляем только на одну из реплик, там вот так:
    2021.04.08 17:00:18.583382 [ 3039 ] {} <Trace> ol_olap_2.main_at: Created log entry /twolink/clickhouse/replicationolap/002/ol_olap_2/main_at_8619/log/log-0002736742 for merge 20110601_20110630_0_5197_1115
    2021.04.08 17:00:18.595542 [ 3167 ] {} <Trace> ol_olap_2.main_at: Executing log entry to merge parts 20110601_20110630_0_5192_1114, 20110610_20110614_5193_5193_0, 20110602_20110602_5194_5194_0, 20110611_20110611_5195_5195_0, 20110617_20110617_5196_5196_0, 20110619_20110619_5197_5197_0 to 20110601_20110630_0_5197_1115
    2021.04.08 17:00:18.625778 [ 3167 ] {} <Trace> ol_olap_2.main_at: Renaming temporary part tmp_merge_20110601_20110630_0_5197_1115 to 20110601_20110630_0_5197_1115.
    2021.04.08 17:00:18.653386 [ 7083 ] {} <Trace> InterserverIOHTTPHandler: Request URI: /?endpoint=DataPartsExchange%3A%2Ftwolink%2Fclickhouse%2Freplicationolap%2F002%2Fol_olap_2%2Fmain_at_8619%2Freplicas%2F2link.cluster001.shard002.replica001&part=20110601_20110630_0_5197_1115&client_protocol_version=5&compress=false
    2021.04.08 17:00:18.653399 [ 7083 ] {} <Trace> ol_olap_2.main_at (Replicated PartsService): Sending part 20110601_20110630_0_5197_1115
    2021.04.08 17:00:18.654327 [ 6866 ] {} <Trace> InterserverIOHTTPHandler: Request URI: /?endpoint=DataPartsExchange%3A%2Ftwolink%2Fclickhouse%2Freplicationolap%2F002%2Fol_olap_2%2Fmain_at_8619%2Freplicas%2F2link.cluster001.shard002.replica001&part=20110601_20110630_0_5197_1115&client_protocol_version=5&compress=false
    2021.04.08 17:00:18.654343 [ 6866 ] {} <Trace> ol_olap_2.main_at (Replicated PartsService): Sending part 20110601_20110630_0_5197_1115
  • https://t.me/clickhouse_ru
    @finio #213004 03:11 PM, 08 Apr 2021
    вот эта ошибка Found parts with the same min block and with the same max block as the missing part
    она 1-2 секунды стреляет несколько раз
    потом парт появляется на реплике
  • https://t.me/clickhouse_ru
    @finio #213005 03:11 PM, 08 Apr 2021
    нужно ли с этим что-то делать?
  • https://t.me/clickhouse_ru
    @nyatmeat #213006 03:18 PM, 08 Apr 2021
    Всем еще раз привет. Собственно вчера был запрос про WITH.
    Есть ли какая-то опция(эксперементальная). Хотим зафильтровать вложенные запросы через in как результат другого запроса.
    Вложенных запросов штук 5-7, так что тупо поместить подзапрос во все in такое себе удовольствие.
    Можно ли результат подзапроса сохранить в рамках запроса? Запрос выполняется на сервере быстрее чем получить в приложении результат первого запроса, и передать его во второй запрос с подзапросами
  • https://t.me/clickhouse_ru
    @ilevd #213007 03:43 PM, 08 Apr 2021
    Товарищи, а что это такое может быть?
    2021-04-08T16:10:37+0300 tn173 run[1212]: 2021.04.08 16:10:37.596829 [ 21174 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, Stack trace (when copying this message, always include the lines below):
    2021-04-08T16:10:37+0300 tn173 run[1212]: 0. Poco::IOException::IOException(int) @ 0x18ba8abf in /usr/bin/clickhouse
    ...
  • https://t.me/clickhouse_ru
    Так смотря чем пишете в КХ...
    Если github.com/mailru/go-clickhouse - то надо обновить, это поправлено с мес назад
    GitHub - mailru/go-clickhouse: Golang SQL database driver for Yandex ClickHouse

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

  • https://t.me/clickhouse_ru
    @403151304 #213009 04:35 PM, 08 Apr 2021
    Подскажите, пожалуста, как задать привилегии пользователя из конфига?
  • https://t.me/clickhouse_ru
    @morozovsk #213012 04:51 PM, 08 Apr 2021
    всем привет. можно как-то сгенерировать массив состоящий из дат (2020-01-01,2020-01-02,..2020-01-09), на основании первой и последней даты?
    например, у меня есть день начальной и день последней активности пользователя.
  • https://t.me/clickhouse_ru
    Функции range() + dateDiff())
  • https://t.me/clickhouse_ru
    Если это невозможно, подскажите, как задать привилегии пользователям после рестарта clickhouse
  • https://t.me/clickhouse_ru
    спасибо, то что доктор прописал 👍
  • https://t.me/clickhouse_ru
    timeSlotes
  • https://t.me/clickhouse_ru
    например какие? В профиле пользователя

    <yandex>
    <profiles>

    <ro>
    <readonly>2</readonly>
    </ro>

    <users>
    <user1>
    <password_sha256_hex>xxx</password_sha256_hex>
    <profile>ro</profile>
    <quota>default</quota>
    <networks><ip>10.0.0.0/8</ip></networks>
    </user1>
  • https://t.me/clickhouse_ru
    @403151304 #213018 05:38 PM, 08 Apr 2021
    К примеру, аналог
    GRANT SELECT ON db.* TO user;
  • https://t.me/clickhouse_ru
    спасибо 👍
  • https://t.me/clickhouse_ru
    ну а я это и написал readonly>2 позволяет читать все и менять настройки через settings

    но в XML очень ограниченные возможности, либо RO на все, либо RW на все
  • https://t.me/clickhouse_ru
    @dkondov #213021 05:59 PM, 08 Apr 2021
    Добрый вечер, подскажите, есть запрос:

    SELECT uniq(DeviceID)
    from events
    where EventDateTime between '2020-12-28 00:00:00' and '2020-12-28 23:59:59';

    необходимо в одном запросе получить данные со сдвигом в час за сутки, т.е. between '2020-12-28 00:00:00' - INTERVAL 1 hour and '2020-12-28 23:59:59' - INTERVAL 1 hour; и т.д. за 24 часа - это возможно реализовать?
  • Да, наверно можно через if аналог case?
  • https://t.me/clickhouse_ru
    буду признателен за более развернутый ответ)
  • https://t.me/clickhouse_ru
    Да, но мне важно дать RO не ко всем базам. Можно ли каким-либо ещё способом задать подобные привилегии автоматизированно?
  • правильно я понял, что хотите сделать подсчет uniq(DeviceID) в каждом диапазоне времени?
    будет проще, если покажите пример
  • https://t.me/clickhouse_ru
    все верно, эту задачу можно решить простым запросом просто сдвигая на час временные рамки - но это 24 запроса, по одному на каждый час.
  • https://t.me/clickhouse_ru
    Ну там можно перечислить базы к которым давать
  • https://t.me/clickhouse_ru
    Это возможно. В Гугл группс я делал пример через массивы. Стейты можно складывать +
  • https://t.me/clickhouse_ru
    @dkondov #213029 06:17 PM, 08 Apr 2021
    где это можно посмотреть?
  • https://t.me/clickhouse_ru
    select toStartOfHour(t) as h, uniq(DeviceID)
    from events
    group by h
  • https://t.me/clickhouse_ru
    увы, но в этом случае мы получим количество уникальных id за час, тогда как нужно за сутки, но с шагом в час - все немного сложнее)
  • https://t.me/clickhouse_ru
    тогда нужно через ARRAY JOIN range(24) as day
    ща постараюсь запрос написать
  • https://t.me/clickhouse_ru
    как-то так:
    select h, uniq(device_id)
    from events
    ARRAY JOIN timeSlots(toDateTime('2020-12-28 00:00:00'), toUInt32(3600*24), 3600) as h
    WHERE events.t between h and date_add(DAY, 24, h)
    group by h
  • https://t.me/clickhouse_ru
    спасибо! все работает с небольшой поправкой - hour вместо day
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213035 08:18 PM, 08 Apr 2021
    доброе время суток... Подскажите пожалуйста, как бороться настройками клика с ZK too many parts, помимо переработки кода?
  • https://t.me/clickhouse_ru
    > too many parts

    Означает банальную вещь, что вы создаете слишком много партов
  • https://t.me/clickhouse_ru
    @unamedrus #213037 08:19 PM, 08 Apr 2021
    Либо у вас очень странная схема, либо нужно править код
  • https://t.me/clickhouse_ru
    @unamedrus #213038 08:20 PM, 08 Apr 2021
    В крайнем случае можно использовать Buffer таблицы либо clickhouse-bulk
  • https://t.me/clickhouse_ru
    это понятно, но можно как-то увеличить этот лимит?
  • https://t.me/clickhouse_ru
    Ну это борьба с симптомами а не проблемой
  • https://t.me/clickhouse_ru
    и это понятно
  • https://t.me/clickhouse_ru
    хотелось бы СЕЙЧАС решить проблему симптоматично
  • https://t.me/clickhouse_ru
    настройку можно поднять, даже для конкретной таблицы
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213044 08:22 PM, 08 Apr 2021
    а какую?)
  • https://t.me/clickhouse_ru
    @unamedrus #213045 08:22 PM, 08 Apr 2021
    parts_to_throw_insert
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213046 08:23 PM, 08 Apr 2021
    не работает в 21.3.4.25 на уровне профиля
  • https://t.me/clickhouse_ru
    @unamedrus #213047 08:23 PM, 08 Apr 2021
    Это табличная настройка
  • https://t.me/clickhouse_ru
    @unamedrus #213048 08:24 PM, 08 Apr 2021
    ALTER TABLE MODIFY SETTTING parts_to_throw_insert=500
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213049 08:24 PM, 08 Apr 2021
    понял, простите. Спасибо
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213050 08:24 PM, 08 Apr 2021
    на соседнем кластере ETL работает, но версия "архивная" :)
  • https://t.me/clickhouse_ru
    @unamedrus #213051 08:25 PM, 08 Apr 2021
    Это достаточно древняя настройка, емнип
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213052 08:26 PM, 08 Apr 2021
    проблему создает именно один сценарий с разными ошибками
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213053 08:27 PM, 08 Apr 2021
    точнее, на одном стенде ошибок нет, а на обновленном есть
  • https://t.me/clickhouse_ru
    что такое ZK too many parts ?
    при чем тут ZK ?
  • https://t.me/clickhouse_ru
    согласен, это настроенные ограничения чувствительности клика
  • https://t.me/clickhouse_ru
    @EvgenyVinogradov #213056 08:29 PM, 08 Apr 2021
    подскажите, как их увеличить плз
  • https://t.me/clickhouse_ru
    Настройки MergeTree таблиц | Документация ClickHouse

    Настройки MergeTree таблиц Значения настроек всех MergeTree таблиц собраны в таблице system.merge_tree_settings. Их можн

  • https://t.me/clickhouse_ru
    @bralbral #213058 08:54 PM, 08 Apr 2021
    Добрый вечер. Из-за того, что при вставке в дистрибутивную таблицу выдавалась ошибка на одной из нод о max_parts_per_insert_block. В папка /data/distrub_table_name/shard скопилось около 50000 тысяч бинарников. Общий размер ~ 200гб В конфиге ноды , куда вставляется, увеличили количество кусков - ошибка пропала. Количество файлов уменьшается достаточно медленно. Можно ли как-то оптимизировать отправку ? Потому что ни ЦП/диски/память на сервере не утилизированы полностью. Или все зависит от конечного сервера, куда все это должно полететь.

    Менял distributed_directory_monitor_sleep_time_ms - уменьшал, distributed_directory_monitor_max_sleep_time_ms - уменьшал, distributed_directory_monitor_batch_inserts - было включено, background_distributed_schedule_pool_size - поставил количество ядер.
  • 09 April 2021 (155 messages)
  • https://t.me/clickhouse_ru
    @lex_zen #213060 05:09 AM, 09 Apr 2021
    Коллеги, нужна ваша экспертиза, выручайте. Мне нужно по http протоколу из/в clickhouse выгружать/загружать данные в/из python, при этом еще и ssl сертификат подкрутить. Либа clickhouse-driver хорошо работает с нативным протоколом, но вот со всем остальным проблема какая-то. Подскажите как лучше поступить
  • Не понял проблемы. Проблема в том, что нужно обязательно использовать HTTP вместо нативного TCP?

    clickhouse-driver работает только с нативным протоколом по TCP/SSL

    а если нужен HTTP, то в питоне вроде бы полно довольно развитых средств для работы с HTTP(s), и clickhouse-driver тут не при чем
  • @chghehe #213062 06:50 AM, 09 Apr 2021
    Я вот испытываю другую проблему: отсутствует полноценный клиент для С++. Тот, на который ссылается сам КХ в доках, не умеет SSL. В результате, я не могу подключиться к облачному сервису.
    А с HTTP(s) в плюсах трудновато, но варианты, разумеется, есть.
  • @GrouthHacker #213064 08:03 AM, 09 Apr 2021
    Подскажите, можно ли объединить следующие запросы средствами кликхауса или необходимо писать внешний скрипт?

    Первый запрос получает время и айдишники:
    SELECT img as imgId, min(time) as imgTime from hide.klo WHERE status=0 and userId=123 GROUP BY imgId

    А в последующих запросах нужно для каждой связки время+картинка
    посчитать кол-во уникальных юзеров котрые смотрели картинку (imgId) после момента (imgTime):
    SELECT img, uniq(userId) WHERE time>imgTime and img=imgId and status=0 GROUP BY img
  • https://t.me/clickhouse_ru
    ну там весь стектрейс нужен
    соединение у вас где то рвется, непонятно где
  • https://t.me/clickhouse_ru
    @ilevd ↶ Reply to #213065 #213066 08:19 AM, 09 Apr 2021
    Спасибо, отключал сервисы-клиенты по одному и, кажется, Нашел виновника
  • https://t.me/clickhouse_ru
    RBAC через XML Не работает
    https://clickhouse.tech/docs/en/operations/access-rights/
    только через SQL
    если разрешить
    access_management =1
    в настройках профиля
    Access Control and Account Management | ClickHouse Documentation

    Access Control and Account Management ClickHouse supports access control management based on RBAC approach. ClickHouse a

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

    оно кстати должно быть еще в system.stacktraces
  • https://github.com/maximdanilchenko/aiochclient я этим пользуюсь, когда нужно по http ходить к кликхауз, а через сессию в aiohttp можно наверное настроить всё что нужно с сертификатом
    GitHub - maximdanilchenko/aiochclient: Lightweight async http(s) ClickHouse client for python 3.6+ with types converting

    Lightweight async http(s) ClickHouse client for python 3.6+ with types converting - GitHub - maximdanilchenko/aiochclient: Lightweight async http(s) ClickHouse client for python 3.6+ with types con...

  • @McRussian_AA #213073 08:51 AM, 09 Apr 2021
    ЗДравствуйте, начал знакомится с clickhouse. Разбираюсь с вопросом сжатия базы и у меня возникло несколько вопросов.
    1. в мануале написано
    "
    min_part_size - Минимальный размер части таблицы.
    min_part_size_ratio - Отношение размера минимальной части таблицы к полному размеру таблицы.
    method - Метод сжатия. Возможные значения: lz4, zstd.
    "
    min_part_size за что отвечает, с какого размера таблица будет сжиматься? сколько строк в таблице сжиматься не будет? непонятно.
    2. непонятно, если в конфиг я внес эти параметры, то сжиматься будет только новая информация, или вся база потихоньку сожмется?
  • https://t.me/clickhouse_ru
    @lesikv #213074 09:05 AM, 09 Apr 2021
    Всем привет! Возможно странный вопрос, подскажите пожалуйста, можно ли в CH сделать что-то типа usert?
  • https://t.me/clickhouse_ru
    First try to understand what a part represents https://clickhouse.tech/docs/en/development/architecture/#merge-tree

    1. By default ClickHouse always compressed with LZ4. This setting allows you to add additional settings for when compression algorithm can change to zstd. Usually you write A LOT of small parts which are merged in background to bigger and bigger parts. At some point you might prefer switching to zstd to save on space but spend some more CPU cycles as it is a bit more CPU heavy.

    2. All new parts that are created. This means: all newly inserted data and parts that are merged in background if there are parts that can be merged (ie they haven't hit the max part size limit yet and there are more than 1 part in partition)
    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
    There is no UPSERT support, but you can use a special engine that can de-duplicate data in background https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replacingmergetree/

    You'll also need to make sure you deduplicate data when you read. Either manually with a group by order by or by using FINAL modifier on queries https://clickhouse.tech/docs/en/sql-reference/statements/select/from/#select-from-final
    ReplacingMergeTree | ClickHouse Documentation

    ReplacingMergeTree The engine differs from MergeTree in that it removes duplicate entries with the same sorting key valu

  • https://t.me/clickhouse_ru
    @galyamrusl #213078 09:13 AM, 09 Apr 2021
    Добрый день
    для того чтобы поставить clickhouse-client на ubuntu:

    FROM webdevops/php-nginx:ubuntu-18.04

    RUN apt-get update -yq

    RUN apt-get install -yq --no-install-recommends apt-utils

    # Needed for apt-key command
    RUN apt-get install gnupg -yq

    RUN apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
    RUN echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | tee /etc/apt/sources.list.d/clickhouse.list
    RUN apt-get update -yq
    RUN apt-get install -y clickhouse-client

    есть ли пример установки на alpine (webdevops/php-nginx:7.4-alpine)

    спасибо
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #213077 #213079 09:16 AM, 09 Apr 2021
    Спасибо огромное за оперативный ответ! Можно я чуть поясню про мой кейс? Не очень пока поняла, подходит ли он мне.
    У меня есть довольно тяжелая таблица (Таблица 1) юзер, дата активности, в ней есть колонка с датой блокировки пользователя(Таблица 2). Дата блокировки есть в отдельной таблице. Мне нужно с какой-то периодичностью джойнить эти две таблицы(причем таблицу 1 тоже надо брать всю так как заблокировать могут и старых юзеров) и при этом обновлять колонку с датой блокировки если вдруг что-то поменялось.
    Вариант "в лоб" это каждый день дропать и перезаписывать таблицу результатом джойна, но таблица довольно тяжелая и кажется эито не эффективно.

    В таком кейсе можно использовать вашу рекомендацию?
  • https://t.me/clickhouse_ru
    Maybe running a query like this periodically? INSERT (user_id, username, ..., table_2.banned_on) SELECT * FROM table1 INNER JOIN table2 USING (user_id) WHERE table_2.banned_on > LAST_QUERY_RUN_DATE. This way you will insert duplicates only for newly banned users which after some time will rewrite older rows.
  • @612200930 #213082 09:38 AM, 09 Apr 2021
    Добрый день!
    В кликхауз есть замечательные функции для работы с адресами IPv6 https://clickhouse.tech/docs/ru/sql-reference/functions/ip-address-functions/#ipv6numtostringx

    Но данные при этом должны хранится в формате FixedString16 в бинарном виде, в связи с этим возникает вопрос а как например через текстовый файл такой тип можно вставить в базу?
    Функции для работы с IP-адресами | Документация ClickHouse

    Функции для работы с IP-адресами IPv4NumToString(num) Принимает число типа UInt32. Интерпретирует его, как IPv4-адрес в

  • https://t.me/clickhouse_ru
    @nyatmeat #213083 09:40 AM, 09 Apr 2021
    Всем привет. Если я правильно понимаю, то по природе своей uuid не очень подходит для ключа сортировки, т.к. потенциально нужно пройти очень много кусков при поиске. Никто не использовал нечто подобное uuid в проектах как ключ сортировки?
  • https://t.me/clickhouse_ru
    input | ClickHouse Documentation

    input input(structure) - table function that allows effectively convert and insert data sent to the server with given st

  • https://t.me/clickhouse_ru
    смотря, что вам надо.
    Если вы только по uuid и делаете фильтрацию в ваших запросах, то сойдет.
    Проблема UUID в ORDER BY в том, что ключи после него не получится использовать для фильтрации обычно.
  • Спасибо буду изучать вопрос дальше
  • https://t.me/clickhouse_ru
    В плане того, что если я хочу получать определенные просмотры например по id пользователей, которые сейчас uuid, и пользователи регистрируются в разное время чтобы природа uuid была схожая. Например все пользователи в рамках организации. Работает оно достаточно быстро пока. Я так понимаю в таком поиске может быть задействовано гораздо больше кусков данных если мы говорим о uuidV4
  • https://t.me/clickhouse_ru
    @nyatmeat #213089 09:58 AM, 09 Apr 2021
    Хотя я кажется сам себя передумал
  • https://t.me/clickhouse_ru
    @nyatmeat #213090 09:58 AM, 09 Apr 2021
    Сорян
  • https://t.me/clickhouse_ru
    @brbrbr #213091 10:12 AM, 09 Apr 2021
    Всем привет.

    Есть кластер из трёх шардов, в каждом по две реплики. Distributed движки для вставки не используются, балансировка по шардам и репликам осуществляется на стороне приложения, данные пишутся сразу в реплики, в день по 75-85к insert-ов. КХ 20.8.3.18.

    Пару дней назад на одном (самом большом) шарде стали вылетать большие insert-запросы в реплицируемые таблицы с ошибкой ZooKeeper session was expired. Полез смотреть query_log - ошибки, оказывается, идут давно, просто раньше их было 200-300 в сутки, а пару дней назад резко стало под 2000 в сутки. Новых таблиц/insert-ов не добавлялось, остальные шарды работают как и прежде.

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

    Прочитал, что ошибка может быть связана с выбором лидера ЗК, поймал ошибку на большом запросе, полез смотреть
    select * from system.zookeeper zk where zk.path = '/clickhouse/tables/.../leader_election'
    Там есть запись о выборе нового лидера, сделанная через 14 секунд после падения моего запроса с ошибкой ZooKeeper session was expired.
    Это оно?
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #213092 10:18 AM, 09 Apr 2021
    Всем привет. Обновляли КХ (пока стейдж с 20.5 на 20.8) после обновы выпадает: default expression and column type are incompatible.: Cannot attach table stage.name from metadata file /var/lib/clickhouse/metadata/stage/name.sql

    Больше всего грешу на
    LowCardinality(String) MATERIALIZE dictGet(...)
    Словарь в дефолте типа
    table_local -> table (distributed) -> dict(source(clickhouse(table 'table')

    Раньше была бага с MATERIALIZED dictGet, но судя по Гиту -в 20.8 есть черипик. Что это может быть и куда стоит копать?

    Есть предположения , что это из-за
    column_name UInt8 ALIAS if(...)
    либо в некоторых местах есть
    dictGetOrDefault(...)
  • https://t.me/clickhouse_ru
    Падает подключения к зукиперу. Посмотрите логи если есть дополнительные ошибки. Посмотрите и логи ЗК. Не падает ли он? Или лидер меняется часто?
  • https://t.me/clickhouse_ru
    @hemisis #213094 10:35 AM, 09 Apr 2021
    Всем дорбого времени суток.
    Кто-нибудь сталкивался, что после удаления matview и попытки создать его заново клик ругается на отсутсвие format_version.txt для .inner.имявьюхи
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #213093 #213095 10:39 AM, 09 Apr 2021
    К логам ЗК у меня, к сожалению, доступа нет, попрошу коллег посмотреть.

    Утром, когда смотрел system.zookeeper, лидер менялся раз в 7-15 минут. Сейчас последняя смена была 2 часа назад.
  • https://t.me/clickhouse_ru
    Я про лидер зукипера а не КХ. Лидер КХ меняется только соединения прерывается или лаг по репликации большой.
  • @fps70 #213097 10:45 AM, 09 Apr 2021
    можно ли сделать ALTER для SELECT который в MATERIALIZED VIEW?
  • https://t.me/clickhouse_ru
    Можно но есть некоторые но. Щас скину ссылку.
  • @vialorn #213099 10:49 AM, 09 Apr 2021
    Нужна помощь знатоков:
    sql
    Syntax error: failed at position 67 ('zzz') (line 1, col 67):

    CREATE SETTINGS PROFILE `zz-zzzz-profile` TO `zz-zzzz` ON CLUSTER zzz SETTINGS
    max_memory_usage = 48000000000 MAX = 48000000000,
    max_execution_time = 30 MAX = 30;

    Expected one of: end of query, identifier
    что я делаю не так? В документации ON CLUSTER описан, CREATE ROLE, CREATE USER , GRANT в режиме ON CLUSTER работают. Версия сервера 21.2.
  • @fps70 ↶ Reply to #213098 #213100 10:49 AM, 09 Apr 2021
    буду благодарен
  • https://t.me/clickhouse_ru
    clickhouse-presentations/materialized_views.pdf at master · ClickHouse/clickhouse-presentations

    Presentations, meetups and talks about ClickHouse. Contribute to ClickHouse/clickhouse-presentations development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Тут ещё тесты можно смотреть и надо менять вещи в определённом порядке чтоб не сломать https://github.com/ClickHouse/ClickHouse/pull/8988
    Modify Materialized View query by nvartolomei · Pull Request #8988 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category (leave one): Non-significant (changelog entry is not required) Changelog entry (a user...

  • @fps70 #213104 10:55 AM, 09 Apr 2021
    благодарю, значит через attach
  • @fps70 ↶ Reply to #213102 #213105 10:56 AM, 09 Apr 2021
    да, понимаю, если в таблице столбцов не будет новых из селекта, то не заработает. Еще раз спасибо
  • https://t.me/clickhouse_ru
    @baltazorbest #213106 11:03 AM, 09 Apr 2021
    Приветствую. Возникла проблема после обновления кластера КХ, на одну из реплик шарда не идет нагрузка, а на другую реплику идет вся нагрузка, при этом на другом шарде нагрузка разделяется поровну. Подскажите пожалуйста как это можно исправить?

    Версия КХ - 21.3.5.42
    Всего в кластере 4 ноды, 2 шарда по 2 реплики.

    ОС: дебиан 9
  • https://t.me/clickhouse_ru
    Посмотрите есть ли сервер в system.clusters, проверьте значение колонки ...errors...
  • https://t.me/clickhouse_ru
    Есть, колонка еррор 0
  • https://t.me/clickhouse_ru
    На сервере который не принимает нагрузку проверьте значение колонки absolute_delay в таблице system.replicas
  • https://t.me/clickhouse_ru
    @nvartolomei #213110 11:07 AM, 09 Apr 2021
    И ещё может select * from system.replication_queue where last_exception != ''
  • https://t.me/clickhouse_ru
    @baltazorbest #213111 11:07 AM, 09 Apr 2021
    select * from system.replication_queue where last_exception != ''
    пусто
  • https://t.me/clickhouse_ru
    @baltazorbest #213112 11:10 AM, 09 Apr 2021
    0
  • https://t.me/clickhouse_ru
    @baltazorbest #213113 11:10 AM, 09 Apr 2021
    но вот заметил странную особенность у этого шарда
  • https://t.me/clickhouse_ru
    @baltazorbest #213114 11:10 AM, 09 Apr 2021
    под рутом если заходить в клиент и делать запросы отвечает очень долго, у другого шарда такого нету
  • https://t.me/clickhouse_ru
    @baltazorbest #213115 11:19 AM, 09 Apr 2021
    временами такое вот видел:
    2021.04.09 13:06:35.602895 [ 9178 ] {} <Error> db.table_sharded (ReplicatedMergeTreeRestartingThread): Couldn't start replication: Replica /clickhouse/tables/1/table_sharded/replicas/192.168.100.6 appears to be already active (host: ch2.db.name, port: 9009, tcp_port: 9000, database: db, table: table_sharded, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/1/table_sharded/replicas/192.168.100.6/is_active manually. Code: 224, e.displayText() = DB::Exception: Replica /clickhouse/tables/1/table_sharded/replicas/192.168.100.6 appears to be already active (host: ch2.db.name, port: 9009, tcp_port: 9000, database: db, table: table_sharded, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/1/table_sharded/replicas/192.168.100.6/is_active manually, Stack trace (when copying this message, always include the lines below)
  • https://t.me/clickhouse_ru
    Если в первых минутах после рестарта то ничего страшного в этом нет
  • https://t.me/clickhouse_ru
    @baltazorbest #213117 11:37 AM, 09 Apr 2021
    Ясно, буду пробовать полный бутстрап шарда, возможно это поможет
  • https://t.me/clickhouse_ru
    @innopolis #213118 11:42 AM, 09 Apr 2021
    как в INSERT INTO уточнить кластер?
  • https://t.me/clickhouse_ru
    INSERT INTO ON CLUSTER %cluster_name% SELECT .....
  • https://t.me/clickhouse_ru
    Expected one of: FORMAT, VALUES, SELECT, WITH, token, OpeningRoundBrack
  • https://t.me/clickhouse_ru
    А полный запрос?
  • https://t.me/clickhouse_ru
    @innopolis #213122 11:48 AM, 09 Apr 2021
    INSERT INTO db.table ON CLUSTER cluster1 VALUES (1,1,1,1,1,1,1,1,1)
  • https://t.me/clickhouse_ru
    @mikhailberg #213123 11:48 AM, 09 Apr 2021
    разве можно так делать ?
  • https://t.me/clickhouse_ru
    @lazoreth #213124 11:49 AM, 09 Apr 2021
    Нет. Мне казалось что можно, щас проверил - и правда нельзя
  • https://t.me/clickhouse_ru
    @lazoreth #213125 11:50 AM, 09 Apr 2021
    Недавно просто ковырялся с select into и казалось что на класстере тестил
  • разобрался, правильно писать так
    CREATE SETTINGS PROFILE `zz-zzzz-profile` ON CLUSTER `zzz` SETTINGS
    max_memory_usage = 48000000000 MAX = 48000000000,
    max_execution_time = 30 MAX = 30
    TO `zz-zzzz`;
  • https://t.me/clickhouse_ru
    distributed engine
  • https://t.me/clickhouse_ru
    @nvartolomei #213130 12:40 PM, 09 Apr 2021
    Интересно а insert into cluster('zzz', table) работает? 🙈
  • https://t.me/clickhouse_ru
    cluster | ClickHouse Documentation

    cluster, clusterAllReplicas Allows to access all shards in an existing cluster which configured in remote_servers sectio

  • https://t.me/clickhouse_ru
    @mikhailberg #213132 12:59 PM, 09 Apr 2021
    Привет!
    А как можно сделать такую вещь

    есть таблица:
    field1: [1,2,3]
    field2: [a,b,c]
    field3: [q,w,e]

    Мне нужно написать что-то типа select field1, field3 where field2 = a
    // в ответе я ожидаю 1, q => то есть значения из field2 матчатся по индексу массива для field1 и field3
  • https://t.me/clickhouse_ru
    Hi. Pretty much: select field1[indexOf(field2, 'a')]
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #213132 #213135 01:05 PM, 09 Apr 2021
    Я через array join стал городить, но indexOf может и лучше, смотря какой конкретный кейс

    with
    [1, 2, 3] as a,
    ['q', 'w', 'e'] as b,
    ['a', 'b', 'c'] as c
    SELECT arrayJoin(arrayZip(a,b,c)) as row
    WHERE row.1 == 2
  • https://t.me/clickhouse_ru
    Спасибо) а indexof будет каждый раз вычисляться если я несколько раз так напишу ?
  • https://t.me/clickhouse_ru
    Вот я тоже думал как-то через джоин
    Спасибо!
  • https://t.me/clickhouse_ru
    @nvartolomei #213138 01:08 PM, 09 Apr 2021
    А partial functions и APPLY?) SELECT COLUMNS('field1', 'field3') APPLY (ix -> indexOf(field2, ix)) * ... вроде нету поддержки пока что
  • https://t.me/clickhouse_ru
    А, типа через лямбду как-то ?
  • https://t.me/clickhouse_ru
    @nvartolomei #213140 01:10 PM, 09 Apr 2021
    SELECT Query

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

  • @487616469 #213141 01:11 PM, 09 Apr 2021
    Привет всем! Недавно стал пользоваться кликом, возник вопрос. Использую neighbor, он очень плохо ходит по строкам, вставляя значение по умолчанию каждые 3 строчки. Я как понял, он выходит за блоки данных внутри запроса. Меня интересует как можно настроить, что бы он весь селект в котором идёт neighbor считал как один блок данных. Сори если нубский вопрос.
  • https://t.me/clickhouse_ru
    Other | ClickHouse Documentation

    Other Functions hostName() Returns a string with the name of the host that this function was performed on. For distribut

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    почитаю, спасибо большое
  • Ну вот у меня точно так же как в последнем примере с neighbor, только дата 1970 выводится ещё 4 раза посредт результата запроса
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213146 01:30 PM, 09 Apr 2021
    Всем привет! А как правильно "готовить" индексы в clickhouse. у меня есть база где есть массив из людей, массив из мест и ссылка на документ. В базе примерно 100кк записей, запрос типа
    SELECT
    count()
    FROM
    table
    WHERE arrayExists(x->x like '%Person%', persons)
    очень сильно тормозит

    Куда смотреть?)
  • https://t.me/clickhouse_ru
    @nyatmeat #213147 02:05 PM, 09 Apr 2021
    Мне кажется такой запрос по вхождению строки в столбец с массивом вообще по скорости будет не быстрым
  • https://t.me/clickhouse_ru
    @nyatmeat #213148 02:06 PM, 09 Apr 2021
    Я конечно не большой спец, но наверняка тут проверяется вся таблица
  • https://t.me/clickhouse_ru
    @nyatmeat #213149 02:07 PM, 09 Apr 2021
    точнее вся колонка
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213150 02:20 PM, 09 Apr 2021
    а как кто ищет тогда? Индексы созданы.
  • https://t.me/clickhouse_ru
    потому что всю таблицу сканирует да еще потом и на CPU фильтрацию массива делате
    у вас же массивы в primary key не входят

    если добавите AND date_field BETWEEN ...
    то будет сильно быстрее (зависит от того как много партов в BETWEEN попадет)
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213154 02:43 PM, 09 Apr 2021
    Ну те здесь особо ничего не придумать? Только юзать что-то дополнительное?
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213155 02:43 PM, 09 Apr 2021
    Что-то вроде elasticsearch и тд?
  • https://t.me/clickhouse_ru
    Просто у меня же индексы повешены для этого.
  • @andreyduhin #213157 02:44 PM, 09 Apr 2021
    Добрый вечер.
    Не уверен что по адресу. Ни у кого нет работающего рецепта, как собрать tabix из исходников? По документации собирается с ошибкой, предполагаю что в свежем gulp проблема.
  • https://t.me/clickhouse_ru
    какие именно индексы?
    data skip index на массив?
    какого типа?
  • https://t.me/clickhouse_ru
    думаю легче в github tabix issue завести с шагами воспроизведения
  • @andreyduhin #213160 02:45 PM, 09 Apr 2021
    мертвый 3года уже проект
  • https://t.me/clickhouse_ru
    INDEX idx_table_persons persons TYPE minmax GRANULARITY 3,
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213162 02:47 PM, 09 Apr 2021
    или лучше set использовать?
  • https://t.me/clickhouse_ru
    @rostish #213163 02:47 PM, 09 Apr 2021
    Друзья, нужна помощь.
    Я тут полтора года назад подхватил проект, для которого выбрали CH, но у меня ощущение, что выбор неправильный, кажется, нужна другая БД.

    Собственно, используется следующим образом:
    -Есть некий бэк, который из json структуры формиует sql, который прилетает на расчет в клик, самые большие sql бывают прям сложные, несколько джойнов, 20 гигов оперативы правая таблица.
    -Поток довольно большой, бывает и 500, и 1000 в секунду.
    -Сейчас сделано следующим образом, данные все копируются через мастер-мастер на все реплики (8штук), бек рандомно выбирает ноду и шлет запросы.

    Вообще работает, даже быстро. Но ощущение, что клик не про это
  • https://t.me/clickhouse_ru
    По табличке like работает.
  • @andreyduhin #213165 02:47 PM, 09 Apr 2021
    поэтому и не собирается. Думал, может ктото собрал себе, есть готовый рецепт
  • https://t.me/clickhouse_ru
    @rostish #213166 02:47 PM, 09 Apr 2021
    сигнатура нагрузки
  • https://t.me/clickhouse_ru
  • можно попробовать массив развернуть через array join И делать select count(distinct xx) where person like '%Person%'

    насколько я знаю проверка массива однопоточна, при очень длинных массивах можно словить тормоза
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213169 02:49 PM, 09 Apr 2021
    Массивы у меня строк на 20-50 максимум.
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213170 02:50 PM, 09 Apr 2021
    У меня в целом весит не count, a where
  • нам помогало подобное, попробуйте...
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213172 02:51 PM, 09 Apr 2021
    секунду
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213173 02:51 PM, 09 Apr 2021
    а что значит развернуть массив?
  • https://t.me/clickhouse_ru
    @pavelpantyukhov #213174 02:52 PM, 09 Apr 2021
    вроде нашел в документации, спасибо!
  • https://t.me/clickhouse_ru
    вот тут интересный момент
    я не уверен что data skip index будет работать с arrayFilter
    запустите clickhouse-client
    SET send_logs_level = 'trace';
    SELECT ...
    смотрите по словам skip granulas

    можно попробовать сделать отдельную таблицу со всеми уникальными значениями persons
    и потом выбирать через sub query

    CREATE TABLE uniq_persons (..) ENGINE MergeTree() ORDER BY person AS SELECT DISTINCT arrayJoin(arrayUniqoe(persons)) AS person FROM table;

    SELECT count() FROM table
    WHERE hasAny((SELECT person FROM uniq_persons WHERE person LIKE '%тест%'), persons);

    или что нибудь типа такого

    SELECT count() FROM table ARRAY JOIN persons AS person WHERE person LIKE '%тест%';
  • https://t.me/clickhouse_ru
    Гляну трейс, в целом persons больше чем основная таблица)
  • надо кешировать результаты если часто однообразное прилетает по 500-1000 в секунду
  • https://t.me/clickhouse_ru
    SQL большие, это не страшно
    страшно если вы не понимаете что они делают и зачем...

    что такое "копируются через мастер мастер"?
    в clickhouse нет такого понятия как master
    в нем все реплики равноправные
  • https://t.me/clickhouse_ru
    @rostish #213179 03:02 PM, 09 Apr 2021
    Я так называю для удобства. Так и есть, данные копируются на все реплики, чтобы увеличить максимальный qps за счет новых реплик
  • https://t.me/clickhouse_ru
    @rostish #213180 03:04 PM, 09 Apr 2021
    И qps продолжает расти. Мне не нравится, что тысячи запросов на клик летят, даже в доке написано, что клик не для частых запросов, ощущение, что нужна другая база.
    Что и зачем делают query я знаю, сам писал бэк.
  • https://t.me/clickhouse_ru
    Не однообразное
  • @dj_mixer #213182 03:09 PM, 09 Apr 2021
    тогда надо МВ/подготовленные результаты, на любой базе если запросы тяжелые...
    но сначала можете проверить - может запросы лечатся? - например правую таблицу можно навсегда положить в join engine.
  • ну попробуйте взять самый большое =(частота * тяжесть) запрос и соптимизировать его... обычно помогает, если нет то надо предрасчитывать (т.е. у вас проблема не с QPS к КХ) а с тяжестью запросов как я понял, и они по прежнему аналитические...

    если у вас запросы вида select * from xx where user=555
    то имеет смысл базу сменить
  • https://t.me/clickhouse_ru
    ну так это...
    200 qps на шард
    1600 qps на кластер

    если данные влазят в одну реклпику для рассчета почему нет то?
  • я так понял "сегодня 1600 завтра 16000..."
  • https://t.me/clickhouse_ru
    ну так надо уметь capacity рассчитывать
  • @dj_mixer #213187 03:13 PM, 09 Apr 2021
    КеХажнерезиновая
  • https://t.me/clickhouse_ru
    @mikhailberg #213188 03:14 PM, 09 Apr 2021
    Гайз, а можно ли делать два WITH в одном запросе?

    типа
    with 1 as a
    with 2 as b
    select a, b
  • https://t.me/clickhouse_ru
    With 1 as a, 2 as b SELECT a, b
  • https://t.me/clickhouse_ru
    @mikhailberg #213191 03:15 PM, 09 Apr 2021
    понял, спасибо)
  • https://t.me/clickhouse_ru
    Все правильно говорите. Только бизнес не знает ничего как всегда, аналитики по предположительной нагрузки нет, прилетает волнами. Исходя из этих волн собрали кластер на 8 нод. Сейчас справляемся, все работает хорошо, быстро. Но есть ощущение, что можно попробовать какое-то еще решение, пока не выстрелило в ногу.
    А запросы реально select xxx where + join что-нибудь и деление в верхнеуровневом селекте, к примеру
  • https://t.me/clickhouse_ru
    @rostish #213193 03:17 PM, 09 Apr 2021
    И очень сложные фильтры
  • https://t.me/clickhouse_ru
    ну единственное что тут страшно может быть это JOIN
    но все зависит от того что в правой таблице...

    ASOF JOIN кстати? или обычный LEFT \ INNER \ RIGHT ?
  • https://t.me/clickhouse_ru
    @rostish #213195 03:25 PM, 09 Apr 2021
    Иннер
  • https://t.me/clickhouse_ru
    ну норм вполне, INNER это HASH JOIN
    все в CPU и память будет упираться если диски норм...
  • https://t.me/clickhouse_ru
    @rostish #213197 03:28 PM, 09 Apr 2021
    Понял, поживем на клике еще)
  • https://t.me/clickhouse_ru
    @BloodJazMan #213198 03:39 PM, 09 Apr 2021
    вводите квоты
    вводите платные запросы к API
    тогда масштабироваться легче будет =)
  • https://t.me/clickhouse_ru
    @kbespalov #213200 04:58 PM, 09 Apr 2021
    Привет. А случайно ни у кого нет сниппетов аля показать top 10 самых тяжелых селектов в кластере за последний день?
  • https://t.me/clickhouse_ru
    @cheeezer #213202 05:47 PM, 09 Apr 2021
    А есть какие-либо ограничения на размер (длину) самого запроса мутации? нужно выполнить запрос 30000+ символов 1000+ строк над относительно небольшой таблицей. Сам запрос принимается корректно, но мутация не выполняется с latest_fail_reason "Code: 393, e.displayText() = DB::Exception: There is no query (version 21.3.3.14 (official build))"
  • Вот для 1 машины вроде было, время под себя сделайте:
    SELECT
    initial_query_id,
    formatReadableSize(memory_usage),
    query
    FROM system.query_log
    WHERE (event_date >= today()) AND (event_time >= (now() - 7200))
    ORDER BY memory_usage DESC
    LIMIT 10
  • https://t.me/clickhouse_ru
    @kbespalov #213204 06:00 PM, 09 Apr 2021
    Спасибо! Я уже сгенерил кучу distributed view поверх system.* таблиц, чтобы на каждую ноду не ходить
  • если не жалко делитесь)
  • https://t.me/clickhouse_ru
    вместо distributed можно использовать функцию clusterAllReplicas('cluster_name', databse, table)
  • https://t.me/clickhouse_ru
    тип IPv6 можно вставлять как текст
  • @612200930 #213210 07:26 PM, 09 Apr 2021
    решили вставлять как FixedString32 Просто не совсем понятно если в СН он как в FixedString16 может храниться, то как его в таком формате в базу лить?
  • https://t.me/clickhouse_ru
    да давно, очень давно, сделан специальный тип IPv6, можете забыть про fixedString, проблему решаете которой нет уже два года
  • @612200930 #213212 07:27 PM, 09 Apr 2021
    в документации не нашел
  • @612200930 #213213 07:28 PM, 09 Apr 2021
    если это так то здорово! Спасибо!
  • @612200930 #213214 07:28 PM, 09 Apr 2021
    проверим
  • @612200930 #213215 07:28 PM, 09 Apr 2021
    а стоп
  • @612200930 #213216 07:29 PM, 09 Apr 2021
    тип колонки нужно IPv6 сделать, так?
  • @612200930 #213217 07:29 PM, 09 Apr 2021
    и передавать значения как хексстринг?
  • @612200930 #213218 07:30 PM, 09 Apr 2021
    нашел и документацию, спасибо!
  • https://t.me/clickhouse_ru
    да нет, как обычный стринг, само конвертирует в 16 байт

    create table testi(I IPv6) Engine=Memory;
    insert into testi values('2001:db8:ffff:ffff:ffff:ffff:ffff:ffff');

    select * from testi;
    ┌─I──────────────────────────────────────┐
    │ 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff │
    └────────────────────────────────────────┘
  • @612200930 #213220 07:31 PM, 09 Apr 2021
    не , у нас на входе должен быть hex string именно
  • @612200930 #213221 07:31 PM, 09 Apr 2021
    a020bf000000000000000000000000a
  • https://t.me/clickhouse_ru
    если у вас сложные аналитические запросы, то клик про это, если ключ-значение, графы, документно-ориентированные, то лучше смотреть в сторону других бд
  • https://t.me/clickhouse_ru
    генерируйте последовательный айди на стороне приложения и будет вам счастье
  • https://t.me/clickhouse_ru
    в общем хранить 32байта вместо 16 рассточитительно
  • @612200930 #213225 07:34 PM, 09 Apr 2021
    вот и вопрос как hex string подсунуть
  • https://t.me/clickhouse_ru
    @den_crane #213226 07:36 PM, 09 Apr 2021
    ну проще всего на клиенте сделать 16 байт, либо нормальную форму IPv6 (добавив : )
    либо input funtion либо mat.view
  • https://t.me/clickhouse_ru
    можно, если использовать AggregatingMergeTree и колонки SimpleAggregateFunction(anyLast, DateTime)
    тогда при инсерте в эту таблицу, будет перезатираться это поле у нужной строки
  • ок, попробуем : вставлять. Спасибо, за поддержку!
  • https://t.me/clickhouse_ru
    В КХ теперь все реплики лидеры (с 20.5)
  • https://t.me/clickhouse_ru
    Ну это я так понял не 20.5)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #213231 #213232 09:26 PM, 09 Apr 2021
    Это 20.8.3.18
  • @vvvjhaq #213233 09:54 PM, 09 Apr 2021
    Подскажите, с чем связаны такие варнинги(2 машины между ними ЗК, пишу много только в одну машину, варнинги только на реплике):
    2021.04.09 21:44:15.493364 [ 27213 ] {} <Warning> db.table (ReplicatedMergeTreePartCheckThread): Checking part all_0_853968_168516
    2021.04.09 21:44:15.493592 [ 27213 ] {} <Warning> db.table (ReplicatedMergeTreePartCheckThread): Checking if anyone has a part all_0_853968_168516 or covering part.
    2021.04.09 21:44:15.494275 [ 27213 ] {} <Warning> db.table (ReplicatedMergeTreePartCheckThread): Found parts with the same min block and with the same max block as the missing part all_0_853968_168516. Hoping that it will eventually appear as a result of
    a merge.

    Нюанс в том, что гружу большой архив и уже пару дней, может быть из-за нагрузки и медленного ЗК/мерджа/репликации?
  • 10 April 2021 (77 messages)
  • https://t.me/clickhouse_ru
    У меня в базе множество хэшей разного вида - храню как Fixed string, вставляю как bytes из питона через родной драйве КХ
  • https://t.me/clickhouse_ru
    @RT_1_98 #213236 05:36 AM, 10 Apr 2021
    Селект в в человекочитаемом формате через вьюшку в которой такие поля преобразуются через hex(hash_column)
  • У нас через csv и clickhausclient организовано
  • https://t.me/clickhouse_ru
    @RT_1_98 #213238 05:50 AM, 10 Apr 2021
    Ну тогда можно класть в базу через MV и в ней перегонять поля в fixedString из текстового представления хексов через unhex().
    Вообще речь вроде было про ипв6 - в КХ же этот тип данных поддерживается нативно
  • https://t.me/clickhouse_ru
    @zholmyrza_t #213239 06:03 AM, 10 Apr 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
    Кх всегда был мультимастер.

    У репликейтид таблицы одна из реплик была лидером. Она назначала мержи. Теперь мержи назначают все реплки если им не запрещено.
  • https://t.me/clickhouse_ru
    Лидер назначал мержи. Он решал когда и какие парты мержить
  • @lazari_dev #213247 11:57 AM, 10 Apr 2021
    Подскажите пожалуйста, если у меня в кликхаус таблица с engine = mongodb данные переносятся в кликхаус или все время дергается много?
  • https://t.me/clickhouse_ru
    @balalaikin #213248 12:28 PM, 10 Apr 2021
    Это, по сути, внешний источник данных:

    MongoDB engine is read-only table engine which allows to read data (SELECT queries) from remote MongoDB collection.

    Если нужно перенести данные в КХ, можно сделать materialized view.
  • монго
  • https://t.me/clickhouse_ru
    Не могут работать мат.вью над внешними источниками. Мв это триггер на инсерт.
  • https://t.me/clickhouse_ru
    @uranium_235 #213251 03:13 PM, 10 Apr 2021
    Салют! А есть какой-то простой способ автоматом менять доступную память в users.xml в зависимости от доступной памяти на инстансе aws? Иногда надо что-то тяжелое считать и для этого надо переключить тип инстанса, зайти в конфиг и поменять там память и потом все вернуть обратно
  • https://t.me/clickhouse_ru
    @nyatmeat #213252 03:27 PM, 10 Apr 2021
    Всем привет. Такой вопрос про prewhere. По доке клик автоматом перемещает where до prewhere автоматом, но например при использовании на одном из запросов при добавлении prewhere получили увеличение перфоманса, а на другом нет. Есть ли какие-то особенности работы с prewhere? Например работает он только по ключу сортировки и прочее. Имею ввиду при каких кейсах prewhere точно даст перфоманса
  • https://t.me/clickhouse_ru
    Не совсем, prewhere как раз нужен для колонок которые не входят в ключ, или находятся на такой позиции что индексный поиск по ним не эффективен,

    Prewhere это фильтр куда кликхаус пытается переместить компактные(те обычно инты и их производные) высокоселективные условия
  • https://t.me/clickhouse_ru
    @mkhotko #213255 04:59 PM, 10 Apr 2021
    подскажите, для summing merge tree если поле UInt32, его нельзя в 0 вывести никак для определенного ключа с помощью инсерта?
  • https://t.me/clickhouse_ru
    @vetinary #213256 05:35 PM, 10 Apr 2021
    Добрый вечер. Очень требуются помощь по возникшей проблеме или отсылки к подробному пошаговому руководству (чтоб прям для альтернативно одарённых вроде меня было разжёвано) на тему переноса данных из standalone сервера Clickhouse в пустой кластер с шардами и репликами.

    Что реализовано: кластер из 3-х узлов Zookeeper, 3 шарда по 2 реплики Clickhouse

    Были попытки вставить данные в один из шардов посредством «INSERT INTO … SELECT FROM …» и с этого момента что-то пошло не так, а именно:

    Записи переносятся не в полном объёме. Т.е. я делаю запрос COUNT() на доноре и COUNT() на рецепиенте до переноса и после и вывожу эти данные, чтобы увидеть, есть ли разница. И эта разница в количестве записей всегда есть. Причём, не удалось обнаружить никакой зависимости в различиях данных от количества. Например, могут в полном объёме быть перенесены все данные из таблицы с 3-4 миллионами записей, и не в полном — на пару сотен тысяч и наоборот: при разных запусках переносов эти данные отличаются.

    Собственно, вся процедура переноса реализована в bash-скрипте, который берёт данные о структуре таблиц в standalone-сервере (доноре), на основе этой структуры создаёт в рецепиенте необходимые Replicated* таблицы, на основе которых делает Distributed-таблицы, в которые, затем, пытается описанным выше способом залить данные. Но что-то в какой-то момент идёт не так. Полагаю, выбранный мною способ переноса данных является не самым оптимальным, но что-то другие мне постичь не удалось: попытка переноса через detached-директорию окончилась сообщением о том, что «Table engine Distributed doesn't support partitioning» 🤷 Видимо, я что-то делаю неправильно, и мне очень хочется научитьься делать это правильно.

    Благодарю за внимание 🙂
  • https://t.me/clickhouse_ru
    Как я понимаю - есть на каждой ноде локальная таблица и поверх них дистрибьютед? Инсерт фром селект должен сам вставить в дистрибьютед таблицу и поделить ~33 процента на каждый из шардов.
  • https://t.me/clickhouse_ru
    Именно так
  • https://t.me/clickhouse_ru
    В логах что-то есть? Если replicated collapsing MT, то мб какие-то одинаковые записи схлопываются, но если отличается кол-во при каждом из запусков - странно
  • https://t.me/clickhouse_ru
    В логах никаких ошибок не обнаружил 🤷‍♂️
  • https://t.me/clickhouse_ru
    Какая версия? У нас была 20.5/20.8 всё ок работало (около 1ккк записей между кластерами приходилось ганять, инсерт фром селект работал норм.
  • https://t.me/clickhouse_ru
    ClickHouse server version 20.12.5.14 (official build).

    А в вашем случае вы так же создавали структуру данных для кластера? Т.е. выбранная мной послдеовательность действий корректна?
  • https://t.me/clickhouse_ru
    Скиньте метадату в конце sql, там где реплика / шард и как дистрибьютед создаётся
  • https://t.me/clickhouse_ru
    Спасибо, буду знать
  • https://t.me/clickhouse_ru
    @JesterDLA #213265 06:08 PM, 10 Apr 2021
    а MATERIALIZED столбец может ссылаться на другой MATERIALIZED столбец? в каком порядке тогда идет вычисление?
  • https://t.me/clickhouse_ru
    ENGINE = ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/cluster_name/db_name/table_name', '{replica}', sign)

    У нас как-то так
  • https://t.me/clickhouse_ru
    Если collapsing то вероятно что все переносится нормально. Отличная в том что данные на destination схлопывается больше/меньше.
  • https://t.me/clickhouse_ru
    @nvartolomei #213268 06:14 PM, 10 Apr 2021
    Чтоб правильно сравнивать вам надо проверить select count() from table final (вроде). Либо сделать селект который схлопывает так же как таблица должна. Посмотрите документацию движка.
  • https://t.me/clickhouse_ru
    @nvartolomei #213269 06:15 PM, 10 Apr 2021
    CollapsingMergeTree | ClickHouse Documentation
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/collapsingmergetree/
    CollapsingMergeTree | ClickHouse Documentation

    CollapsingMergeTree The engine inherits from MergeTree and adds the logic of rows collapsing to data parts merge algorit

  • https://t.me/clickhouse_ru
    @nvartolomei #213270 06:16 PM, 10 Apr 2021
    Обратите внимание на секцию "What do we see and where is collapsing?"
  • https://t.me/clickhouse_ru
    Это не нам, а человеку выше) у нас всё хорошо работает👌
  • https://t.me/clickhouse_ru
    Попробую с final, благодарю
  • https://t.me/clickhouse_ru
    У меня вот так:

    ENGINE = ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/{database}/$tableNameShard', '{replica}', sign)

    где $tableNameShard — это имя таблицы с добавлением _shard после имени, a значения {shard} и {replica} указаны в макросах в конфиге
  • https://t.me/clickhouse_ru
    Увы, добавление FINAL в запросы с COUNT() проблему не решило 🙁

    Пример отчёта о переносе данных:

    Inserting data from the remote table to data_co2
    Entries before transfer: 0
    Entries to transfer: 326163
    Entries after transfer: 217409

    Куда-то делись ≈100К записей при переносе. Во всех трёх запросах используется FINAL

    Ещё пример:

    Inserting data from the remote table to network_log
    Entries before transfer: 0
    Entries to transfer: 926808
    Entries after transfer: 815250

    Снова чуть больше 100К 🤷

    Все отчёты не привожу, но ситуация сейчас схожа на всех таблицах.

    Может быть такое, что данные перенеслись корректно, но я как-то некорректно считаю COUNT() на кластере, где записи должны были по нескольким шардам размазаться, и какой-то из шардов не возвращает данные для подсчёта? Есть способ это проверить?
  • https://t.me/clickhouse_ru
    На каждом шарде запустите запрос и проверьте
  • https://t.me/clickhouse_ru
    Хотя это какой то странный кейс, если шард например вне кластера, то и писать туда не выйдет, вы же вроде через дистриб таблицы пишите ?
  • https://t.me/clickhouse_ru
    SimpleAggregateFunction sum
  • https://t.me/clickhouse_ru
    Простите, а можно поподробнее?
  • https://t.me/clickhouse_ru
    Именно, пишу в Distributed 🤷‍♂️
  • https://t.me/clickhouse_ru
    Каждый шард возвращает вот такое количество, которое меньше донора
  • https://t.me/clickhouse_ru
    Так на 1 шарде и должно быть меньше, вам нужно сумму count ов проверить
  • https://t.me/clickhouse_ru
    Нет, я говорю о выборке из Distributed-таблицы, а не о конечных шардах, на основе которых они построены
  • https://t.me/clickhouse_ru
    Я все же думаю, что вся проблема в order by, у вас данные схлопываются
  • https://t.me/clickhouse_ru
    У меня все таблицы на движке Collapsing, но в данный момент в них ничего не пишется для чистоты теста, на всех таблицах выполнен OPTIMIZE, при подсчёте теперь указывается FINAL 🤷‍♂️ Как они могут схлопываться? :(
  • https://t.me/clickhouse_ru
    А вы final вызвали на источнике?
  • https://t.me/clickhouse_ru
    Да, везде, где используется count() я добавил в запрос FINAL
  • https://t.me/clickhouse_ru
    Тут в чате полно примеров
  • https://t.me/clickhouse_ru
    Единственное, что ещё могу посоветовать, попробовать optimize final
  • https://t.me/clickhouse_ru
    Наверное, уже завтра, с утра. Уже в глазах рябит от этих цифр, а толку никакого 🤦‍♂️
  • https://t.me/clickhouse_ru
    @artcorp96 #213291 08:38 PM, 10 Apr 2021
    @vetinary а у вас optimize_throw_if_noop включён?
  • https://t.me/clickhouse_ru
    Про это не могу ответить ни утвердительно, ни отрицательно, поскольку не знаю, что это 🤷‍♂️ Это в конфиге?
  • https://t.me/clickhouse_ru
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @artcorp96 #213294 08:40 PM, 10 Apr 2021
    Тут найдёте
  • https://t.me/clickhouse_ru
    Я перефразирую вопрос: возможно ли добиться значения одного из counter полей, имеющих тип UInt32 значения 0 для определённого ключа, если в настоящий момент этот counter уже не 0? Речь не об изменении структуры таблицы, если да такого дойдёт то проще уж удалить нужные строчки целиком и вставить скорректированные.
  • https://t.me/clickhouse_ru
    Поскольку в конфиге этого нет, а значение по умолчанию — 0, то выключен
  • https://t.me/clickhouse_ru
    Ну может у вас беда с optimize, а когда этот параметр выключен, вы исключение не увидите
  • https://t.me/clickhouse_ru
    @artcorp96 #213298 08:44 PM, 10 Apr 2021
    Попробуйте включить и запустить optimize повторно
  • https://t.me/clickhouse_ru
    Вставить с минусом?
  • https://t.me/clickhouse_ru
    Unsigned?
  • https://t.me/clickhouse_ru
    Такой был план с самого начала, но кх не захотел мержить строки
  • https://t.me/clickhouse_ru
    Не захотел? Это как?
  • https://t.me/clickhouse_ru
    @mkhotko #213303 08:49 PM, 10 Apr 2021
    -N в unit32 и N - 2 такие строки
  • https://t.me/clickhouse_ru
    @mkhotko #213304 08:49 PM, 10 Apr 2021
    Образовались
  • https://t.me/clickhouse_ru
    @mkhotko #213305 08:49 PM, 10 Apr 2021
    Ключ одинаковый
  • https://t.me/clickhouse_ru
    @mkhotko #213306 08:49 PM, 10 Apr 2021
    В течение часа они не слились
  • https://t.me/clickhouse_ru
    Alter update ?
  • https://t.me/clickhouse_ru
    Да, видимо последнее средство, потому и решил спросить, можно ли сделать лучше (
  • https://t.me/clickhouse_ru
    Попробовал — не помогло ни на единицу. Речь идёт о таблицах донора, я ведь правильно понял? Сделал COUNT() … FINAL, затем set optimize_throw_if_noop = 1; OPTIMIZE … FINAL и после него снова подсчёт количества — значения идентичные 🤷
  • https://t.me/clickhouse_ru
    Там баг был. Надо апгрейдить на последнюю 20.12

    Или
    https://t.me/clickhouse_ru/211219
    T in ClickHouse не тормозит

    я раннее указывал в этой клиент сессии set read_backoff_min_latency_ms=0, это может хоть как-то повлиять? Мб с этой опцией mergetree попробовать залить

  • https://t.me/clickhouse_ru
    Баг связанный с тем, что я описал? 😳
  • https://t.me/clickhouse_ru
    Селект выбирал не все строки
  • https://t.me/clickhouse_ru
    @vetinary #213313 08:55 PM, 10 Apr 2021
    Оу… Спасибо за наводку, завтра буду всё проверять и пробовать. Обновлю сервер, раз такое дело 🤷 По результатам обязательно сообщу
  • https://t.me/clickhouse_ru
    @den_crane #213314 08:56 PM, 10 Apr 2021
    Или set read_backoff_min_latency_ms=0
  • 11 April 2021 (166 messages)
  • https://t.me/clickhouse_ru
    @nvartolomei #213315 03:24 AM, 11 Apr 2021
    А в дистрибутед таблицу случаем не асинхронно пишется? Может там все записалось в дистрибутед и надо подождать пока последние данные отправится куда надо? https://clickhouse.tech/docs/en/operations/settings/settings/amp/#insert_distributed_sync
  • @GrouthHacker #213316 04:06 AM, 11 Apr 2021
    Что делать?
    ALTER TABLE hide.klo DROP COLUMN uid
    в ответ выдал: Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds
    И сообщение Cancelling query висит в процессе уже 6 часов...

    Кластер не используется. Т.е. сервер один. Елинственное что свободного места ~7% осталось.
  • @mfilimonov #213317 06:45 AM, 11 Apr 2021
    Если у вас collapsing, и случайный ключ шардирования то count не совпадут.
  • @mfilimonov #213318 06:46 AM, 11 Apr 2021
    Надо шардировать так что все что должно схлапываться приземлялось в тот же шард
  • @vvvjhaq #213319 07:37 AM, 11 Apr 2021
    Добрый день!
    поймал такую ошибку
    https://github.com/ClickHouse/ClickHouse/issues/20259

    не подскажете что сделать?
    21.2 DB::Exception: Incomplete granules are not allowed while blocks are granules size · Issue #20259 · ClickHouse/ClickHouse

    I ran an optimize on 21.2, and the merge kept failing. 2021.02.09 14:38:06.519295 [ 14569 ] {} <Trace> db.table: Executing log entry to merge parts all_0_91343_4396, all_91344_91581_5...

  • https://t.me/clickhouse_ru
    Если я правильно читаю комментарий то надо обновится как минимум до 21.2.3.15 / 21.2.4.1
  • https://t.me/clickhouse_ru
    @nvartolomei #213321 07:42 AM, 11 Apr 2021
    А лучше до последней 21.2.9.1 (вроде последний релиз для 21.2 ветки на сегодняшний день)
  • у нас 21.2.6.1
  • https://t.me/clickhouse_ru
    @kbespalov #213323 11:23 AM, 11 Apr 2021
    Привет.

    А насколько плохая идея использовать materialize view в качестве триггеров на INSERT ?
    Есть условная табличка:

    user_id = A, value=100
    user_id = A, value=200
    user_id = A, value=300

    И иногда в нее вставляются специальные строки вида (очень редко, 1 раз в месяц)

    user_id = A, value=0, correction=-1000

    Можно было бы так и оставить, но совсем идеально было бы эти условные -1000 нарастающим итогом открутить от value.
    То есть вместо оригинальной строки заинсертить в SummingMergeTree JOIN по user_id текущих строк в которых value уже скорректирован, а оригинальную строку с correction хранить только в оригинальной таблице (не mv)
  • https://t.me/clickhouse_ru
    @kbespalov #213324 11:24 AM, 11 Apr 2021
    Грубо говоря в mv написать выражение вида WHERE correction != 0 -> делай подзапрос с JOIN
  • https://t.me/clickhouse_ru
    MV это и есть триггеры на инсерт. JOIN в MV делать не стоит, это очень дорого
  • https://t.me/clickhouse_ru
    @kbespalov #213326 11:27 AM, 11 Apr 2021
    Да, я понимаю, но подчеркиваю - коррекция случается от 0 до 1 раза в месяц.
    Конечно я мог бы сделать обычный VIEW в котором учесть уже поле correction.

    Но вставляется такая строка почти никогда, а вот VIEW открывают часто и там окном ходить и откручивать на каждый F5 в браузере дороже
  • https://t.me/clickhouse_ru
    А как этого добиться?
  • https://t.me/clickhouse_ru
    Обновил до последней (21.3.5) на доноре и реципиенте — ситуация, увы, не изменилась 🙁
  • https://t.me/clickhouse_ru
    попробуйте для теста с mergetree таблицами (без collapsing)
  • https://t.me/clickhouse_ru
    Это уже следующим шагом… Сейчас будет попытка с установкой read_backoff_min_latency_ms=0 перед вставкой данных…
    Кстати, я вчера забыл указать (уже мозги в кучу были), возможно, что это существенно: у меня INSERT INTO … SELECT FROM remote() 🤔 — может это влиять?
  • https://t.me/clickhouse_ru
    @nvartolomei #213331 12:33 PM, 11 Apr 2021
    @vetinary
  • https://t.me/clickhouse_ru
    @nvartolomei #213332 12:33 PM, 11 Apr 2021
    А в дистрибутед таблицу случаем не асинхронно пишется? Может там все записалось в дистрибутед и надо подождать пока последний данные отправится куда надо? https://clickhouse.tech/docs/en/operations/settings/settings/amp/#insert_distributed_sync
  • https://t.me/clickhouse_ru
    Ну, я изначально тоже так думал (что нужно просто подождать), но даже по прошествии суток и более ситуация с разницей в количестве записей не меняется, что наводит на невесёлые мысли 🤷
  • https://t.me/clickhouse_ru
    @seriych #213334 12:53 PM, 11 Apr 2021
    @vetinary Попробуйте на одном шарде сделать две таблицы, идентичных исходным, но без шардирования по кластеру. В одну вставить из первого вашего источника (со всего кластера), во вторую из той таблицы, куда до этого копипастили (тоже с кластера). Потом с final посмотреть count() в обеих этих новых таблицах. И я бы сравнивал не count(), а всякие uniqExact() и uniqExact() с group by. Если будет одинаково, то всё норм, просто в исходную таблицу на первом кластере при вставке распределяете неправильно по шардам.
  • https://t.me/clickhouse_ru
    Я попробовал из CollapsingMergeTree перелить в ReplicatedMergeTree (без collapsing) — бестолку
    Не понимаю, что я упускаю 🙁
  • https://t.me/clickhouse_ru
    У вас 6 кх нод? Попробуйте сравнить что в реплках одинаковое кол-во. Что сумма с шардов = count из distributed
  • @benderit #213337 01:40 PM, 11 Apr 2021
    Привет подскажите. Репликация 2 ноды, 1й сервак ребутнулся, демон стартовал, но за несколько часов так и не вышел в рабочий режим. Я перезапустил службу на второй ноде. Теперь на обоих узлах в логаг connection refused. 9000 порт не занят. Получается демон запущен, а порты не прослушиваются.
  • https://t.me/clickhouse_ru
    все ответы в логе КХ
  • https://t.me/clickhouse_ru
    @den_crane #213339 01:44 PM, 11 Apr 2021
    можно начать с tail -50 /var/log/clickhouse-server/clickhouse-server.err.log
  • @benderit #213340 01:48 PM, 11 Apr 2021
    да все одно и тоже симметрично на обоих
    <Error> default.hits_view.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: Connection refused (house01
  • @benderit #213341 01:48 PM, 11 Apr 2021
    то есть чтобы старнтануть ему нужна вторая нода
  • @benderit #213342 01:48 PM, 11 Apr 2021
    а второй первая
  • https://t.me/clickhouse_ru
    А зачем ? Вроде как сама по себе должна подняться
  • ну я тоже не пойму, может там база перелопачивается
  • https://t.me/clickhouse_ru
    @mikhailberg #213345 01:50 PM, 11 Apr 2021
    В логе только эта ошибка ?
  • @benderit #213346 01:51 PM, 11 Apr 2021
    я запустил в консольном режиме, вижу помимо ошибок еще такие вещи:
    2021.04.11 16:50:20.419355 [ 11307 ] {} <Trace> data.participants_log_view.DirectoryMonitor/Bg: Execution took 88204 ms.
    2021.04.11 16:50:22.463046 [ 11315 ] {} <Trace> data.webinars_stat_online_view.DirectoryMonitor/Bg: Execution took 63116 ms.
  • @benderit #213347 01:52 PM, 11 Apr 2021
    это как раз инициализация базы идет? мне просто нужно дождаться?
  • https://t.me/clickhouse_ru
    нет конечно, ноды КХ независимы и друг про друга не знают
  • это хорошо
  • https://t.me/clickhouse_ru
    @den_crane #213350 01:54 PM, 11 Apr 2021
    ><Error> default.hits_view.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: Connection refused (house01
    это Distributed таблица пыталась делать инсерт во вторую ноду, эта ошибка не препятсвует старту
  • так в логах house2 пишет не могу подключиться к house1 и наоборот, значит знают друг про друга
  • https://t.me/clickhouse_ru
    это Distributed таблица пыталась делать инсерт во вторую ноду, эта ошибка не препятсвует старту
  • спасибо
  • @benderit #213354 01:55 PM, 11 Apr 2021
    те я должен ждать пока не стартанет
  • https://t.me/clickhouse_ru
    последние 3 строки хотя бы покажите из err лога
  • 2021.04.11 16:56:14.807445 [ 11281 ] {} <Trace> Connection (house02:9000): Connecting. Database: (not specified). User: default
    2021.04.11 16:56:14.810626 [ 11281 ] {} <Error> default.hits_view.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: Connection refused (house02:9000), 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) @ 0x1271b990 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xa3f32bd in /usr/bin/clickhouse
    2. ? @ 0xfdffe6f in /usr/bin/clickhouse
    3. DB::Connection::forceConnected(DB::ConnectionTimeouts const&) @ 0xfdf96ab in /usr/bin/clickhouse
    4. DB::ConnectionPool::get(DB::ConnectionTimeouts const&, DB::Settings const*, bool) @ 0xa52f012 in /usr/bin/clickhouse
    5. DB::StorageDistributedDirectoryMonitor::processFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, CurrentMetrics::Increment&) @ 0xfb69621 in /usr/bin/clickhouse
    6. DB::StorageDistributedDirectoryMonitor::run() @ 0xfb6caa5 in /usr/bin/clickhouse
    7. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0xf2bbd39 in /usr/bin/clickhouse
    8. DB::BackgroundSchedulePool::threadFunction() @ 0xf2bc1c2 in /usr/bin/clickhouse
    9. ? @ 0xf2bc2f2 in /usr/bin/clickhouse
    10. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xa420a67 in /usr/bin/clickhouse
    11. ? @ 0xa41f0a3 in /usr/bin/clickhouse
    12. start_thread @ 0x76ba in /lib/x86_64-linux-gnu/libpthread-2.23.so
    13. clone @ 0x1074dd in /lib/x86_64-linux-gnu/libc-2.23.so
    (version 20.7.2.30 (official build))
  • https://t.me/clickhouse_ru
    похоже КХ живой, просто еще не стартовал
    ps -ef|grep click
    есть процесс?

    что в конце /var/log/clickhouse-server/clickhouse-server.log ?
  • лог всё время обновляется, там примерно всё одно и тоже про connection refused
  • @benderit #213359 02:00 PM, 11 Apr 2021
    да процесс запущен, просто порты не заняты
  • @benderit #213360 02:00 PM, 11 Apr 2021
    то есть по ощущениям - долго стартует, и еще не слушает порты 9000, 8123
  • https://t.me/clickhouse_ru
    tail -1000 /var/log/clickhouse-server/clickhouse-server.log |grep Database|grep Information
  • @benderit #213363 02:03 PM, 11 Apr 2021
    2021.04.11 16:23:35.187681 [ 19290 ] {} <Information> DatabaseOrdinary (system): Total 3 tables and 0 dictionaries.
    2021.04.11 16:23:35.200515 [ 19290 ] {} <Information> DatabaseOrdinary (system): Starting up tables.
    2021.04.11 16:23:35.202086 [ 19290 ] {} <Information> DatabaseOrdinary (default): Total 3 tables and 0 dictionaries.
    2021.04.11 16:23:35.669601 [ 19290 ] {} <Information> DatabaseOrdinary (default): Starting up tables.
    2021.04.11 16:23:36.010296 [ 19290 ] {} <Information> DatabaseOrdinary (data): Total 9 tables and 0 dictionaries.
    2021.04.11 16:23:36.856094 [ 19290 ] {} <Information> DatabaseOrdinary (data): Starting up tables.
    2021.04.11 16:23:51.892640 [ 19323 ] {} <Information> DatabaseOrdinary (data): 77.77777777777777%
  • https://t.me/clickhouse_ru
    видимо в базе data есть таблица с огромным кол-во партов
  • @benderit #213365 02:10 PM, 11 Apr 2021
    да, таблица большая
  • https://t.me/clickhouse_ru
    при чем тут большая. Размер не имеет значения. Только кол-во партов
  • https://t.me/clickhouse_ru
    А можно ли как-то детачнуть таблицу - стартануть кх ?
  • https://t.me/clickhouse_ru
    зачем? там уже 77%
  • сейчас не скажу даже сколько их там
  • https://t.me/clickhouse_ru
    @den_crane #213370 02:12 PM, 11 Apr 2021
    можно стартануть без таблицы, а потом снова ждать attach ?
  • https://t.me/clickhouse_ru
    Я в целом спрашиваю )
  • https://t.me/clickhouse_ru
    cd /var/lib/clickhouse/data/data/...таблица
    ls -l |wc -l
  • https://t.me/clickhouse_ru
    Например что бы все работало, а потом эта таблица сама через атач подтянулась когда-то
  • https://t.me/clickhouse_ru
    просто убрать .sql файл в сторону из /var/lib/clickhouse/metadata/база/таблица.sql
    просле старта положить назад и сказать attach table
  • https://t.me/clickhouse_ru
    @den_crane #213375 02:14 PM, 11 Apr 2021
    Кх при старте просто листает файлы в каталоге metadata и делает attach по каждому файлу
  • https://t.me/clickhouse_ru
    Спасиб, возьму ну заметку )
  • 4465410
  • https://t.me/clickhouse_ru
    Чета как-то слишком много партов
  • https://t.me/clickhouse_ru
    Да, что-то явно неправильно. Либо partition by либо неактивные партов слишком много.
  • таблица _view
  • @benderit #213381 02:23 PM, 11 Apr 2021
    по структуре не похоже на парты, просто файлов куча
  • https://t.me/clickhouse_ru
    Так вью этож триггер обычный и вью данные не хранит
  • @benderit #213383 02:23 PM, 11 Apr 2021
    по логам вроде на нём застрял
  • https://t.me/clickhouse_ru
    Так посмотрите куда эта вью инсертит данные и посмотрите эту таблицу
  • так там 107 всего частей
  • @benderit #213386 02:39 PM, 11 Apr 2021
    cat /var/log/clickhouse-server/clickhouse-server.log |grep Database|grep Information
    за час не сдвинулось с места. странно.
  • https://t.me/clickhouse_ru
    Там не должно быть файлов. Вы в дистрибьютид таблицу не смотрите. Она не имеет значения
  • @benderit #213388 02:49 PM, 11 Apr 2021
    там где партиции в виде каталогов, то там их максимум 200 штук
  • @benderit #213389 02:49 PM, 11 Apr 2021
    таблиц 9 штук, ну как бы не очень много, чтобы так долго стартовать.
  • https://t.me/clickhouse_ru
    какой движок у таблицы где много файлов и как файлы называются?
  • @benderit #213391 02:57 PM, 11 Apr 2021
    минутку
  • @benderit #213392 03:01 PM, 11 Apr 2021
    ReplicatedMergeTree
    ReplicatedReplacingMergeTree
  • @benderit #213393 03:03 PM, 11 Apr 2021
    webinar_stat_online
  • @benderit #213394 03:04 PM, 11 Apr 2021
    webinar_stat_online_view файлы типа 1.bin
  • @benderit #213395 03:33 PM, 11 Apr 2021
    крутит по кругу в логах одно и тоже
  • @benderit #213396 04:03 PM, 11 Apr 2021
    Сейчас из бэкапа поднял базу с 1 сервером и на нем же зукипер и база стартанула быстро.
    как понять на чем затык такой идет.
    оно так может 8 часов стартовать, что не очень приятно.
  • https://t.me/clickhouse_ru
    какой движок у таблицы где много файлов и как файлы называются?
  • ReplicatedMergeTree
    ReplicatedReplacingMergeTree

    файлы 1.bin и так далее
  • https://t.me/clickhouse_ru
    а я понял. Это WAL видимо
  • @benderit #213400 04:06 PM, 11 Apr 2021
    по логам прошло инициализацию zookeeper но не дошло до DDL worker
  • https://t.me/clickhouse_ru
    @den_crane #213401 04:07 PM, 11 Apr 2021
    хотя нет, wal файлы кажется префикс wal имеют
  • https://t.me/clickhouse_ru
    чушь какая-то, не может быть у ReplicatedMergeTree файлов в каталоге которые называются 1.bin
  • ATTACH TABLE webinars_stat_online_view
    (
    ...
    )
    ENGINE = Distributed(cluster, name, webinars_stat_online, rand())
  • @benderit #213404 04:12 PM, 11 Apr 2021
    вот у этой таблицы куча bin файлов
  • @benderit #213405 04:13 PM, 11 Apr 2021
    ATTACH TABLE webinars_stat_online
    (
    ...
    )
    ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{layer}-{shard}/webinars_stat_online_10', '{replica}')
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (WebinarHash, EventDate, ParticipantHash, EventTime)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    остановите КХ.
    сделайте mv /var/lib/clickhouse/metadata/data/webinars_stat_online_view.sql /tmp
    запустите КХ
    когда клиент сможет приконектится mv /tmp/webinars_stat_online_view.sql /var/lib/clickhouse/metadata/data/
    потом из клиента attach table data.webinars_stat_online_view
  • https://t.me/clickhouse_ru
    Собственно, начал это делать и обнаружил вот такое: при запросе из Distributed получаю разное количество записей (независимо от того, используется в запросе FINAL или нет)

    Вот пример выполнения одного и того же запроса с разницей в доли секунды:

    SELECT COUNT() FROM data_values

    Query id: 04577cdd-cb48-41fd-a184-b88a9c02df1a

    ┌─count()─┐
    │ 2160875 │
    └─────────┘

    1 rows in set. Elapsed: 0.016 sec.
    —————————————————————
    SELECT COUNT() FROM data_values

    Query id: 86df0a82-0689-4ab3-8297-5b4f3f06dc80

    ┌─count()─┐
    │ 3875787 │
    └─────────┘

    1 rows in set. Elapsed: 0.017 sec.
  • https://t.me/clickhouse_ru
    SELECT FQDN() h, COUNT() FROM data_values group by h

    два-три раза чтобы было видно разные реплики
  • https://t.me/clickhouse_ru
    @vetinary #213409 04:23 PM, 11 Apr 2021
    При этом операции вставки данных проводились давно, никаких операций с данными (запись/чтение) не происходит, это вообще изолированный сегмент, в котором я провожу тестирование
  • получилоь, теперь думает на процессе attach
  • @benderit #213411 04:26 PM, 11 Apr 2021
    Зато в логах активно очень стало
  • https://t.me/clickhouse_ru
    хм, остановите, переложите 1.bin файлы временно куда-нибудь, запустите, верните bin файлы
  • https://t.me/clickhouse_ru
    cluster-node-01-01 🙂 SELECT FQDN() h, COUNT() FROM data_values group by h

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: c977e33f-1444-4d2b-a537-8c111e94dcf8

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-01-01 │ 447878 │
    │ cluster-node-02-02 │ 1712997 │
    └────────────────────┴─────────┘

    2 rows in set. Elapsed: 0.050 sec. Processed 2.16 million rows, 2.16 MB (42.98 million rows/s., 42.98 MB/s.)

    cluster-node-01-01 🙂 SELECT FQDN() h, COUNT() FROM data_values group by h

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: 64074fcf-9a05-48cf-8c97-695a6015fecf

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-01-01 │ 447878 │
    │ cluster-node-03-02 │ 1714912 │
    │ cluster-node-02-02 │ 1712997 │
    └────────────────────┴─────────┘

    3 rows in set. Elapsed: 0.051 sec. Processed 3.88 million rows, 3.88 MB (75.27 million rows/s., 75.27 MB/s.)

    cluster-node-01-01 🙂 SELECT FQDN() h, COUNT() FROM data_values group by h

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: b472dcf6-15d1-4f54-824a-e6b542f31889

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-02-01 │ 1712997 │
    │ cluster-node-01-01 │ 447878 │
    └────────────────────┴─────────┘

    2 rows in set. Elapsed: 0.056 sec. Processed 2.16 million rows, 2.16 MB (38.85 million rows/s., 38.85 MB/s.)

    cluster-node-01-01 🙂 SELECT FQDN() h, COUNT() FROM data_values group by h

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: f9885bee-1c48-4b6d-816d-7062ee5636bd

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-01-01 │ 447878 │
    │ cluster-node-03-02 │ 1714912 │
    │ cluster-node-02-02 │ 1712997 │
    └────────────────────┴─────────┘

    3 rows in set. Elapsed: 0.057 sec. Processed 3.88 million rows, 3.88 MB (67.84 million rows/s., 67.84 MB/s.)
  • https://t.me/clickhouse_ru
    select * from system.clusters where cluster = 'ваш_кластер'
  • наверное уже не буду, вижу что идет merge в логах, таблица создалась
  • https://t.me/clickhouse_ru
    select * from system.clusters where cluster = 'cluster'

    SELECT *
    FROM system.clusters
    WHERE cluster = 'cluster'

    Query id: 63f4fa77-ef7a-49ed-b408-0f71669cf1f3

    ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──────────┬─host_address──┬─port─┬─is_local─┬─user─┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
    │ cluster │ 1 │ 1 │ 1 │ cluster-node-01-01 │ 10.42.155.230 │ 9000 │ 1 │ user │ │ 0 │ 0 │
    │ cluster │ 1 │ 1 │ 2 │ cluster-node-01-02 │ 10.42.255.219 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 2 │ 1 │ 1 │ cluster-node-02-01 │ 10.42.11.20 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 2 │ 1 │ 2 │ cluster-node-02-02 │ 10.42.243.161 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 3 │ 1 │ 1 │ cluster-node-03-01 │ 10.42.2.87 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 3 │ 1 │ 2 │ cluster-node-03-02 │ 10.42.177.127 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    └─────────┴───────────┴──────────────┴─────────────┴────────────────────┴───────────────┴──────┴──────────┴──────┴──────────────────┴──────────────┴─────────────────────────┘

    6 rows in set. Elapsed: 0.005 sec.
  • https://t.me/clickhouse_ru
    select * from system.settings where changed
  • https://t.me/clickhouse_ru
    select * from system.settings where changed

    SELECT *
    FROM system.settings
    WHERE changed

    Query id: 94ef6dd6-d859-4144-83f7-b274e9dc840a

    ┌─name────────────────────────────┬─value───────┬─changed─┬─description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type──────────┐
    │ use_uncompressed_cache │ 0 │ 1 │ Whether to use the cache of uncompressed blocks. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ load_balancing │ random │ 1 │ Which replicas (among healthy replicas) to preferably send a query to (on the first attempt) for distributed processing. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ LoadBalancing │
    │ max_memory_usage │ 10000000000 │ 1 │ Maximum memory usage for processing of single query. Zero means unlimited. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ max_partitions_per_insert_block │ 1000 │ 1 │ Limit maximum number of partitions in single INSERTed block. Zero means unlimited. Throw exception if the block contains too many partitions. This setting is a safety threshold, because using large number of partitions is a common misconception. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    └─────────────────────────────────┴─────────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴───────────────┘

    4 rows in set. Elapsed: 0.005 sec.
  • спасибо Вам, всегда выручаете!
  • https://t.me/clickhouse_ru
    select FQDN() h, count() from clusterAllReplicas('cluster', data_values_shard) group by shard
  • https://t.me/clickhouse_ru
    надо разбираться почему там миллионы. Это незаконченные инсерты, distributed таблица почему-то их накопила, там должно быть мало файлов, 10, может 50 иногда.
  • в логах были раньше отшивы по юзеру default. Все мои мучения были напрасны, я убирал sha256 пароль, или обычный.
  • то есть таблица не могла достучаться по логам до второго сервера, тот отклонял запросы, но всё работало
  • https://t.me/clickhouse_ru
    DB::Exception: Table function 'clusterAllReplicas' requires from 2 to 4 parameters: <addresses pattern or cluster name>, <name of remote database>, <name of remote table> [, sharding_key].

    Полагаю, надо ещё имя базы данных добавить в качестве параметра, так?
  • https://t.me/clickhouse_ru
    distibuted таблица использует того пользоватея и тот пароль который написан в remote_users. В remote_users нельзя использовать sha256, потому что в этом случае Distriubted таблица использует его как клиент чтобы подключится к другому КХ
  • https://t.me/clickhouse_ru
    select FQDN() h, count() from clusterAllReplicas('cluster', БАЗА, data_values_shard) group by shard
  • я юзера default ковырял, видимо не тот default не в разделе remote_users
  • https://t.me/clickhouse_ru
    Missing columns: 'shard' while processing query: 'SELECT FQDN() AS h, count() FROM clusterAllReplicas('cluster', 'database', 'data_values_shard') GROUP BY shard', required columns: 'shard'.

    Но если убрать группировку, то вот результат:

    select FQDN() h, count() from clusterAllReplicas('cluster', 'database', 'data_values_shard')

    SELECT
    FQDN() AS h,
    count()
    FROM clusterAllReplicas('cluster', 'database', 'data_values_shard')

    Query id: 0e7b5966-7f1f-4274-970e-eb21677d3219

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-01-01 │ 6853287 │
    └────────────────────┴─────────┘

    1 rows in set. Elapsed: 0.020 sec.
  • https://t.me/clickhouse_ru
    у пользователя default можно задать пароль, проблема в том что по умолчанию Distributed таблице тоже нужен этот пароль, это описывается в remote_severs как <user> <password>
  • https://t.me/clickhouse_ru
    какая-то непонятная фигня кругом.

    а что если select count() from data_values_shard
    делать прямо на этих 6 серверах?
    у реплик совпадают числа?
  • ночью сделаю нормально пользователя. Незавершенные вставки автоматически обработаются, когда коннект наладится?
  • https://t.me/clickhouse_ru
    Ну вот я и начинал делать это, пока случайно не обнаружил, что обычный COUNT() из Distributed-таблицы возвращает время от времени разные результаты — это сильно смутило. Могу посчитать, конечно, по каждой отдельной таблице типа Replicated*, что там лежит. Но разве разный результат COUNT() — это норма?
  • https://t.me/clickhouse_ru
    на самом деле репликация вообще никак не связана с distributed.
    проверьте на всех 6ти серверах что в system.macros правильные шард/реплика.

    у вас какие-то странные числа и количество не 1/3 и как будто реплики неодинаковое кол-во имеют
  • https://t.me/clickhouse_ru
    В общем, я выполнил COUNT() на каждой из 6 нод, и там прям какой-то цирк с конями получается 🤔🤦😳
    Собственно, в списке представлена нода и количество записей на ней

    SELECT COUNT() FROM data_values_shard

    cluster-node-01-01 - 447878
    cluster-node-01-02 - 1264503

    cluster-node-02-01 - 1712997
    cluster-node-02-02 - 1712997

    cluster-node-03-01 - 0
    cluster-node-03-02 - 1714912
  • https://t.me/clickhouse_ru
    select * from system.replication_queue
    на cluster-node-03-01
  • https://t.me/clickhouse_ru
    cluster-node-03-01 🙂 select * from system.replication_queue

    SELECT *
    FROM system.replication_queue

    Query id: dc7e7794-28fa-4c5e-bd50-cc2eb2c8adc9

    Ok.

    0 rows in set. Elapsed: 0.010 sec.
  • https://t.me/clickhouse_ru
    select * from system.macros на cluster-node-03-01
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.macros

    Query id: f006cb80-891f-4ca6-9885-caba73599206

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

    2 rows in set. Elapsed: 0.006 sec.
  • https://t.me/clickhouse_ru
    а у cluster-node-03-02 ?
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.macros

    Query id: 04bd5917-7db8-4134-b35b-543286302ab1

    ┌─macro───┬─substitution─┐
    │ replica │ 02 │
    │ shard │ 03 │
    └─────────┴──────────────┘

    2 rows in set. Elapsed: 0.006 sec.
  • https://t.me/clickhouse_ru
    ОК, а show create table ... кусок который про Engine=.....
  • https://t.me/clickhouse_ru
    Про _shard, так?
  • https://t.me/clickhouse_ru
    Engine=Replcated....( )
  • https://t.me/clickhouse_ru
    ENGINE = ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/database/data_values_shard', '{replica}', sign)
  • https://t.me/clickhouse_ru
    ОК. Становится все интереснее.

    echo stat|nc zk_ip 2181 для всех 3 (zk_ip) зукиперов
  • https://t.me/clickhouse_ru
    @den_crane #213447 05:12 PM, 11 Apr 2021
    т.е. очень похоже на то что это 3 standalone зукипера, а не ансамбль
  • https://t.me/clickhouse_ru
    Я пытаюсь выполнить, но получаю ошибку, что команда не в «белом списке», хотя в конфиге указано * для 4wl
  • https://t.me/clickhouse_ru
    а что в конфиге вообще в конфиге у зу?

    cat /etc/zookeeper/conf/zoo.cfg|grep -v '#'
  • https://t.me/clickhouse_ru
    А вот сейчас выяснилось, кажется, что я кретин…
    Сейчас разберусь и чуть позже отпишусь, что и как
  • https://t.me/clickhouse_ru
    @monashev #213451 05:24 PM, 11 Apr 2021
    Привет.
    Дозрел до AggregatingMergeTree и хочу сделать таблицу, в которой один столбец будет суммироваться при слиянии, а второй, если там не NULL - заменяться на последнюю версию (версия - время в ещё одном столбце). С первым столбцом понятно. А как описать второй, не могу придумать...
  • https://t.me/clickhouse_ru
    можно просто затирать время 0 if(first_name<>'', modification_timestamp_mcs, toDateTime64(0,3)))
    https://gist.github.com/den-crane/d03524eadbbce0bafa528101afa8f794

    AggregateFunction(argMax, String, DateTime64(3))
  • https://t.me/clickhouse_ru
    @den_crane #213454 05:29 PM, 11 Apr 2021
    Если String=NULL то ставим DateTime64 = 0
    argMax таким образом найдет String c максимальным временем, а Null не попадут потому что там время 0
  • https://t.me/clickhouse_ru
    @malkeshar #213455 05:43 PM, 11 Apr 2021
    Добрый вечер.

    Извините за глупый вопрос, но самостоятельно разобраться не получилось.
    Если коротко - не понимаю, зачем рекомендуют использовать мат вью + AggregatingMergeTree, в чем роль последнего, когда мат вью с обычным MergeTree и так решает поставленную задачу.
  • https://t.me/clickhouse_ru
    @malkeshar #213456 05:43 PM, 11 Apr 2021
    Длинее:
    Есть таблица с time series (graphite). Возникла потребность в получении налету усредненных данных за 4, 15, 60 секунд. Нашел в документации, что задача решается при помощи мат вью и дополнительных таблиц. Проэкспериментировал, Мат вью + MergeTree решают задачу, в графане графики одинаковые при выборке данных из оригинальной таблицы с аггрегацией налету и при выборе данных из аггрегированной таблицы

    Вью выглядит так:

    CREATE MATERIALIZED VIEW graphite_mv_avg15 TO graphite_avg15 AS
    SELECT
    Path,
    avg(Value) AS Value,
    Date,
    Time,
    toStartOfInterval(toDateTime(Timestamp), toIntervalSecond(15)) AS Timestamp
    FROM carbon_metrics.graphite
    GROUP BY (Path, Date, Time, Timestamp)

    Таблица с аггрегированным представлением:
    CREATE TABLE graphite_avg15
    (
    Path LowCardinality(String) CODEC(ZSTD),
    Value Float64 CODEC(ZSTD),
    Time UInt32 CODEC(Delta, LZ4),
    Date Date CODEC(ZSTD),
    Timestamp UInt32 CODEC(Delta, LZ4)
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(Date)
    ORDER BY (Path, Time)
    SETTINGS index_granularity = '8192'

    Вопрос актуален в том плане, что если AggregatingMergeTree не нужен, то аггрегированные таблицы можно будет сделать на базе ReplicatedMergeTree.
    Что я упускаю?
  • https://t.me/clickhouse_ru
    наверное я поспешил с доростанием и на самом деле не дорос. 😊
  • https://t.me/clickhouse_ru
    Summing и Aggregating домерживают схлапывают в бекграцнде.
    Мат. Вью это не делает потому что это триггер на инсерт и не читает исходную таблицу
  • https://t.me/clickhouse_ru
    К сожалению, не совсем понимаю, что из этого следует: аггрегации во вью без использования AggregatingMergeTree/SummingMergeTree будут работать на очень коротком интервале последних данных, которые прилетели одним батчем на инсерт?
  • https://t.me/clickhouse_ru
    @malkeshar #213460 05:57 PM, 11 Apr 2021
    А все, что было это батча, под аггрегацию и схлопывание не попадет, так?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
  • https://t.me/clickhouse_ru
    @malkeshar #213464 06:02 PM, 11 Apr 2021
    Спасибо большое за ответ. Следовательно, если предварительно батчить записываемые данные на период аггрегации, то можно обойтись и MergeTree
  • https://t.me/clickhouse_ru
    Можно.
    Ещё можно использовать graphiteMt или TTL gropby
  • https://t.me/clickhouse_ru
    @den_crane #213466 06:09 PM, 11 Apr 2021
    Ну и не проблема использовать summing он простой как палка
  • https://t.me/clickhouse_ru
    @malkeshar #213467 06:12 PM, 11 Apr 2021
    Да, смотрел тоже в сторону TTL groupby, но, насколько я понял, он будет работать как то же самыей retention и уменьшать данные в исходной таблице. А есть потребность держать несколько разных аггрегированных представлений рядом.
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю поближе Summing/Aggregation engines
  • https://t.me/clickhouse_ru
    Grapthie-Mt - это вот это? https://github.com/raintank/graphite-mt
    GitHub - raintank/graphite-mt: Graphite-web tailored for running with a metrictank backend

    Graphite-web tailored for running with a metrictank backend - GitHub - raintank/graphite-mt: Graphite-web tailored for running with a metrictank backend

  • https://t.me/clickhouse_ru
    Именно так всё и было 😳🤦🤦 Хотя я был в полной увернности, что ноды ZK работают в команде, а не каждый сам по себе…
    Спасибо огромное… У меня в лексиконе остались лишь радостные междометия, даже не знаю, как вас благодарить!!! 🔥🥳🎉
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    А, мы его и используем, да.
  • https://t.me/clickhouse_ru
    @malkeshar #213473 06:41 PM, 11 Apr 2021
    Изначальная идея была как раз записывать данные в несколько таблиц в graphitemergetree и в бэкграунде делать разные периоды аггрегаций - но это, что закономерно, убило все дисковое ио. Поэтому стали смотреть в сторону мат вью. Но, возможно, по итогу аггрегации вынесем наружу и будем записывать в кликхауз уже аггрегированные данные
  • https://t.me/clickhouse_ru
    можно копить батчи по 30 сек, insert-ить в Engine=Null таблицу, и делать агрегацию в MV которое на нее смотрит, и писать в Summing, следующее MV смотрит на таблицу которая Summing и пишет в свою Summing. Делать больше трех MV смысла наверное нет, типа пять минут, день, месяц.
  • @dj_mixer #213475 06:56 PM, 11 Apr 2021
    После перехода на 21.3 словари (odbc) ожидают что поле pk, будет первым в DDL, это нормально? =)
  • https://t.me/clickhouse_ru
    я считаю это баг
  • https://t.me/clickhouse_ru
    @unamedrus #213477 06:58 PM, 11 Apr 2021
    Интересно где это так интересным образом поправили
  • https://t.me/clickhouse_ru
    @den_crane #213478 07:04 PM, 11 Apr 2021
    ODBC кстати для PG больше не нужен.
  • @dj_mixer #213479 07:04 PM, 11 Apr 2021
    ругается на первое поле с ДДЛ если тип не UInt64, детально ещё не проверяли...
  • oracle :)
  • https://t.me/clickhouse_ru
    если это новый словарь, то возможно просто сообщение кривое об ошибке, там чудеса с сообщениями
  • Старый, создается норм, т.е. после апгрейда не сразу видно еще
  • @dj_mixer #213483 07:13 PM, 11 Apr 2021
    Подлянки везде
  • 12 April 2021 (158 messages)
  • https://t.me/clickhouse_ru
    @zholmyrza_t #213484 05:59 AM, 12 Apr 2021
    если в users.xml задавать опции, кх сразу примет их? без перезагрузки?
  • https://t.me/clickhouse_ru
    @hatedabamboo #213485 06:14 AM, 12 Apr 2021
    Да.
  • @dmitry_mosin #213487 06:49 AM, 12 Apr 2021
    Добрый день
    Вопрос нубский конечно.
    Как оптимально хранить xml документы в КХ?
    Надо несколько атрибутов для фильтрации и собственно документ как есть.
    В т.ч. могут быть (и точно будут) невалидные XMLки.
    Около 30К в сутки, размерами 30-100Кб.
    Сориентируйте пожалуйста
  • @dmitry_mosin #213488 06:50 AM, 12 Apr 2021
    MergeTree? Или чтото другое?
  • https://t.me/clickhouse_ru
    @1675646290 #213489 07:22 AM, 12 Apr 2021
    Приветствую. Помогите разобраться с долгим выполнением запроса к таблице кликхауса... Какими инстуметами понять где может быть затык... Исходные данные: таблица с 1 миллиардом строк агрегируется 15+ секунд... Order by по шести полям.
  • https://t.me/clickhouse_ru
    @1675646290 #213490 07:23 AM, 12 Apr 2021
    движок MergeTree
  • https://t.me/clickhouse_ru
    Можно через log trace, есть еще execution plan:
    https://clickhouse.tech/docs/en/operations/optimizing-performance/sampling-query-profiler/
    Query Profiling | ClickHouse Documentation

    Sampling Query Profiler ClickHouse runs sampling profiler that allows analyzing query execution. Using profiler you can

  • https://t.me/clickhouse_ru
    не особо понятно, что вам надо, т.е. вам надо и xml as string в таблице хранить? Если xml как источник данных, то движок File или external dictionary.
  • @487616469 #213495 07:40 AM, 12 Apr 2021
    Ребят помогите с запросом
  • @487616469 #213496 07:41 AM, 12 Apr 2021
    Как сделать результат селекта одним блоком, что бы нейбор не выдавал Конец блока в середине результата
  • @487616469 #213497 07:43 AM, 12 Apr 2021
    Как это должно быть правильно сделано? Может сама таблица дефаульт эвент неправильно настроена
  • https://t.me/clickhouse_ru
    @mr_andrey_beliy #213498 07:55 AM, 12 Apr 2021
    Привет, подскажите по поводу термина Table functions в контексте ошибки DB::Exception: Table functions are forbidden in readonly mode (version 19.13.2.19 (official build)) "?

    Просто в доке table functions это https://clickhouse.tech/docs/en/sql-reference/table-functions/
    А по факту кажется что дело в отдельных функциях в запросе, т.к другие запросы к этой же таблице нормально отрабатывают.

    Запрос, который падает с этой ошибкой:
    select
    d,
    c
    from (
    select
    toStartOfDay(timestamp) as d,
    count() as c
    from
    $log_type
    where
    timestamp > now() - INTERVAL 7 day and
    timestamp < now()
    group by d
    ) RIGHT JOIN (
    select toStartOfDay(now() - INTERVAL number day) as d, 0 as c FROM numbers(7)
    ) USING d

    ORDER BY d DESC

    дело в том что для readonly не разрешен джоин?
  • т.к. документы могут быть совершенно невалидными - то надо и как строку хранить. Или File в этом случае тоже подойдет?
  • https://t.me/clickhouse_ru
    FROM numbers(7)

    numbers это table function
  • https://t.me/clickhouse_ru
    @mr_andrey_beliy #213501 07:59 AM, 12 Apr 2021
    а, проглядел, спасибо
  • https://t.me/clickhouse_ru
    в File engine нет обработок совершенно невалидных документов (емнип)
    если только не попробуетее яерез clickhouse-local ignore errors:
    https://clickhouse.tech/docs/en/operations/utilities/clickhouse-local/
    clickhouse-local | ClickHouse Documentation

    clickhouse-local The clickhouse-local program enables you to perform fast processing on local files, without having to d

  • @dmitry_mosin #213503 08:00 AM, 12 Apr 2021
    спасибо, почитаю
  • https://t.me/clickhouse_ru
    Вместо numbers() можно использовать system.numbers
  • https://t.me/clickhouse_ru
    спасибо, попробую
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#max_server_memory_usage_to_ram_ratio

    +
    динамически в users.d/
    для профиля менять
    max_memory_usage
    в каком нибудь systemd сделать сервис который стартует "до кликхауса"

    ну или задавать max_memory_usage прямо через SET или в параметрах HTTP запроса
    Server Settings | ClickHouse Documentation

    Server Settings builtin_dictionaries_reload_interval The interval in seconds before reloading built-in dictionaries. Cli

  • https://t.me/clickhouse_ru
    @nyatmeat #213510 08:53 AM, 12 Apr 2021
    Подскажите. В строках содержатся массивы, нужно получить кол-во уникальных элементов по этим массивам
  • https://t.me/clickhouse_ru
    @nyatmeat #213511 08:53 AM, 12 Apr 2021
    uniqExact(arrayJoin(leadContactList))
  • https://t.me/clickhouse_ru
    @nyatmeat #213512 08:54 AM, 12 Apr 2021
    что-то типо такого? Мне почему-то кажется есть другое решение
  • https://t.me/clickhouse_ru
    @orantius #213513 08:54 AM, 12 Apr 2021
    uniqArray
  • https://t.me/clickhouse_ru
    @nyatmeat #213514 08:56 AM, 12 Apr 2021
    бляха, как я это пропустил
  • https://t.me/clickhouse_ru
    @nyatmeat #213515 08:56 AM, 12 Apr 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @resuba #213519 11:22 AM, 12 Apr 2021
    Вопрос, создаю материальную вьюху на AggregateMergeTree, без POPULATE, может ли запрос на создание занять десятки гигов? Или это только лишь объявление, а никаких расчётов в этот момент не происходит?
  • https://t.me/clickhouse_ru
    Должен быть почти бесплатным
  • https://t.me/clickhouse_ru
    десятки гигов чего? RAM или disk space ?
  • https://t.me/clickhouse_ru
    @k0st1an #213522 11:25 AM, 12 Apr 2021
    Всем привет. Есть в КХ возможность задать кастомный пермишен для каталогов? То есть для каталога с конфигами и данными.
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #213521 #213523 11:37 AM, 12 Apr 2021
    RAM при создании вьюхи.
  • https://t.me/clickhouse_ru
    Поддерживаю вопрос, можно ли функцией neighbor пройти как будто-то всё один блок
  • https://t.me/clickhouse_ru
    В теории да, можно увеличить max_block_size но это негативным образом влияет на перфоманс, используйте лучше массивы или window functions

    https://kb.altinity.com/altinity-kb-queries-and-syntax/lag-lead
  • 【D】【J】 in ClickHouse не тормозит

    Девид Блейн, сработало ) ┌────count() ─┬─min(rn) ─┬─max(rn) ─┐ │ 5000000000 │ 0 │ 999999 │ └────────────┴─────────┴─────────┘ я в нем увидел миллион, и подумал, ну хватит, а там ж байты... спасибо большое )

  • https://t.me/clickhouse_ru
    @VLSmirnoff #213528 11:45 AM, 12 Apr 2021
    спс, попробую
  • У нас в настройках стоит Макс блок сайз 65000, если я в запросе выведу blockSize(), то там будут 6, 5, 1 и т.д
  • @487616469 #213530 11:47 AM, 12 Apr 2021
    Если через сеттингс в запросе указать Макс блок сайз, ниче не меняется
  • https://t.me/clickhouse_ru
    Спасибо, Евгений 👍
  • https://t.me/clickhouse_ru
    а в чем кастомность проявляется?
    процесс clickhouse-server запущен из под пользователя clickhouse обычно
    соответсвенно до /etc/clickhouse-server должен быть доступ на чтение
    а до /var/lib/clickhouse и /var/log/clickhouse/ доступ на запись

    как у вас clickhouse запускается? systemd \ docker \ k8s?
  • https://t.me/clickhouse_ru
    это все понятно. и все работает как надо. но чтоб ходить по каталогам и смотреть какие там файлы приходится все время использовать sudo. притензий к файлу с доступом 0600 нет, но иногда надо просто посмотреть файлы на дисках без просмотра содержимого. да тот же sudo <cat|ls|…> c табуляцией не будет работать
  • https://t.me/clickhouse_ru
    chmod go+rx /etc/clickhouse-server ?
  • https://t.me/clickhouse_ru
    при запуске сервера он же обратно вернет нужные права. нет?
  • @githubreleases_bot #213536 b o t 12:20 PM, 12 Apr 2021
    ClickHouse/ClickHouse tagged: v21.3.6.55-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.6.55-lts
    Release notes:
    ClickHouse lts release v21.3.6.55-lts
  • https://t.me/clickhouse_ru
    такое есть только если в docker запускать, на папку /var/lib/clickhouse
    лечится через установку переменной DO_NOT_CHOWN

    при запуске проcто идет проверка есть ли доступ на чтение \ запись и правильный ли owner
  • https://t.me/clickhouse_ru
    /etc/clickhouse-server/config.xml

    <!-- You can specify umask here (see "man umask"). Server will apply it on startup.
    Number is always parsed as octal. Default umask is 027 (other users cannot read logs, data files, etc; group can only read).
    -->
    <!-- <umask>022</umask> -->

    или тупо добавить группу clickhouse нужному юзеру
  • https://t.me/clickhouse_ru
    @k0st1an #213539 12:35 PM, 12 Apr 2021
    спасибо, гляну оба варианта
  • https://t.me/clickhouse_ru
    @dlimonov #213541 01:13 PM, 12 Apr 2021
    Добрый день.
    Хотим перенести растущую таблицу на новый сторадж. Создали новый том с дисками и политику. Также для переноса данных добавили дефолтный том в эту же политику. Сменили политику для таблицы и пытаемся выполнить move. На тестовой машине всё прекрасно работает. В проде выдает ошибки вида
    Received exception from server (version 21.3.6):
    Code: 232. DB::Exception: Received from localhost:9000. DB::Exception: Nothing to move.
  • https://t.me/clickhouse_ru
    @dlimonov #213542 01:13 PM, 12 Apr 2021
    У нас довольно большой размер каждой партиции - где-то 18Гб. Может что-то надо подкрутить?
  • https://t.me/clickhouse_ru
    @dlimonov #213543 01:15 PM, 12 Apr 2021
    Файл с описанием стораджа вот - https://pastebin.com/HMXNeXpt
  • https://t.me/clickhouse_ru
    довольно большой начинается с 2TB 🙂
  • https://t.me/clickhouse_ru
    @dlimonov #213545 01:41 PM, 12 Apr 2021
    Тогда я не понимаю от чего вылезает ошибка. В логе ошибок есть даже стэк-трейс, так что где-то что-то не так.
  • https://t.me/clickhouse_ru
    @dlimonov #213546 01:42 PM, 12 Apr 2021
    Обновился сейчас до последней версии. Проверил на тестовой таблице и в проде. Результат тот же
  • https://t.me/clickhouse_ru
    КХ пишет стектрейс на все подряд. Покажите все сообщения из лога у которых uuid такой же как у запроса alter move

    или наверное из клиента можно
    set send_logs_level='trace' ;
    alter table move ...
  • https://t.me/clickhouse_ru
    @dlimonov #213548 01:46 PM, 12 Apr 2021
    clickhouse-server.err.log - https://pastebin.com/AUdTW0fY
    clickhouse-server.log - https://pastebin.com/nhx7WkCg
  • https://t.me/clickhouse_ru
    >partition '2020831'
    хм, а как таблица создана?
    что будет если убрать кавычки?

    partition 2020831
  • https://t.me/clickhouse_ru
    Вот если включить в клиенте
    https://pastebin.com/yZYHzpyP
    flows :) alter table cgnat move partition '2020831' to volume 'hdd';ALTER TA - 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
  • https://t.me/clickhouse_ru
    С кавычками или без результат одинаковый.
  • https://t.me/clickhouse_ru
    @dlimonov #213553 01:50 PM, 12 Apr 2021
    Так.... В общем мой косяк. Неправильно партиция указана(
  • https://t.me/clickhouse_ru
    @dlimonov #213554 01:51 PM, 12 Apr 2021
    Если указываешь несущствующую партицию, то именно такая ошибка и выдается.
  • https://t.me/clickhouse_ru
    @den_crane #213555 01:51 PM, 12 Apr 2021
    да судя по коду там просто проверка стреляет, таких партов нет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dlimonov #213557 01:52 PM, 12 Apr 2021
    Угу. Спасибо за помощь. Я оказался сам себе злой буратино
  • https://t.me/clickhouse_ru
    @den_crane #213558 01:54 PM, 12 Apr 2021
    Наверное улучшить сообщение об ошибке , даже NO_SUCH_DATA_PART и то понятнее
  • https://t.me/clickhouse_ru
    не могу понять, почему по ссылке написано DateTime64(3), хотя третий по счёту столбец имеет формат не даты, а строки
  • https://t.me/clickhouse_ru
    @dnemchin #213560 01:59 PM, 12 Apr 2021
    Приглашаем на онлайн-митап! ⭐

    🕖15 апреля в 19:00 встречаемся, чтобы обсудить применение DevOps-практик в DWH:

    — Михаил Кожевников из Райффайзенбанка расскажет про хранилище, созданное в стеке технологий ODI, Java и flyway, и поделится своим опытом декомпозитизации процессов, которая помогла прийти к модели TBD и сделать ее независимой.

    — Альберт Айткулов из Тинькофф расскажет, как выглядел процесс применения изменений инфраструктуры у нашей команды раньше и как этот процесс стал выглядеть после переезда IaaC Clickhouse в Gitlab CI.

    Регистрация по ссылке - https://meetup.tinkoff.ru/event/devops-v-dwh/
  • https://t.me/clickhouse_ru
    там 2 столбца.

    Типа поля AggregateFunction( func , arg1, arg2)
    а присваивается оно func ( arg1, arg2 )
  • https://t.me/clickhouse_ru
    @monashev #213563 02:06 PM, 12 Apr 2021
    а как понять тройку в DateTime64(3) ?
  • https://t.me/clickhouse_ru
    @VLSmirnoff #213564 02:06 PM, 12 Apr 2021
    точность, 3 знака
  • https://t.me/clickhouse_ru
    милисекунды
  • https://t.me/clickhouse_ru
    @den_crane #213566 02:06 PM, 12 Apr 2021
    DateTime64(6) - микросекунды
  • https://t.me/clickhouse_ru
    @monashev #213567 02:07 PM, 12 Apr 2021
    ясно.
  • https://t.me/clickhouse_ru
    это просто пример, вы можете использовать не время, а что угодно, например число -- типа Version
  • https://t.me/clickhouse_ru
    @monashev #213569 02:08 PM, 12 Apr 2021
    я понимаю. просто пока хочу въехать в написанное
  • https://t.me/clickhouse_ru
    @den_crane #213570 02:10 PM, 12 Apr 2021
    но конечно это пример как делать не надо, КХ будет тормозить.

    select uid, argMaxMerge(final_first_name) first_name, argMaxMerge(final_last_name) last_name from final_states_by_month group by uid
    не может и никогда не будет работать быстро
  • https://t.me/clickhouse_ru
    @monashev #213571 02:15 PM, 12 Apr 2021
    а AggregatingMergeTree всегда мержит партишны при селектах?
  • https://t.me/clickhouse_ru
    таблицы никогда ничего не мержат при селектах сами
  • https://t.me/clickhouse_ru
    @monashev #213574 02:23 PM, 12 Apr 2021
    мерж идёт в функции argMaxMerge(final_first_name) ?
    т.е. можно выбрать записи и без мержа. верно?
  • https://t.me/clickhouse_ru
    в гисте последний запрос
  • https://t.me/clickhouse_ru
    @den_crane #213576 02:25 PM, 12 Apr 2021
    finalizeAggregation нужно делать, тогда не будет мержить
  • https://t.me/clickhouse_ru
    @den_crane #213577 02:25 PM, 12 Apr 2021
    будет трансформация из State в Value
  • @7699150 #213578 02:27 PM, 12 Apr 2021
    Ребят, а кто в курсе, если в сделать вставку в кафка табличку, то матвью, которое консюмит из этой таблички увидит данные?
  • https://t.me/clickhouse_ru
    а зачем нужна эта трансформация?
  • https://t.me/clickhouse_ru
    там в бинарном виде лежит State, он не читаемый

    SELECT argMaxState(1, 1)
    ┌─argMaxState(1, 1)─┐
    │ │
    └───────────────────┘

    SELECT finalizeAggregation(argMaxState(1, 1))
    ┌─finalizeAggregation(argMaxState(1, 1))─┐
    │ 1 │
    └────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @monashev #213581 02:35 PM, 12 Apr 2021
    ага, спасибо!
  • https://t.me/clickhouse_ru
    @rostish #213583 02:46 PM, 12 Apr 2021
    Подскажите, пожалуйста.
    А есть какой-нибудь способ сделать join с условием between в CH?
  • https://t.me/clickhouse_ru
    вместо JOIN
    если есть возможно можно dict использовать? та часть которую джойните в память влезает?

    WHERE field >= dictGet(...) AND field <= dictGet(...)

    или вам надо LEFT \ RIGHT JOIN ?
  • https://t.me/clickhouse_ru
    @rostish #213585 02:55 PM, 12 Apr 2021
    нужен иннер
  • https://t.me/clickhouse_ru
    @slapshin #213586 02:55 PM, 12 Apr 2021
    Здравствуйте! Планирую перейти на ClickHouse в самописной системе аналитики. Но есть вопрос: существует таблица для трека прогресса просмотра видео, в которой сохраняются интервалы. Например, (1, 5) - значит, что пользователь посмотрел видео с 1 по 5 секунду. Каждая строка - отдельный интервал. Аналитикам требуется получить информацию о том, сколько видео было просмотрено. Проблема в том, что интервалы могут пересекаться, иметь окна, дублироваться. Например: (1, 5), (4, 10), (6, 8), (20, 25) должно вернуть 15. Интервалов может быть ~100-200. Вместо массива могут быть 2 поля: “start” и “end” - если надо. Каким образом можно это решить в ClickHouse? Нашел такой вариант https://stackoverflow.com/questions/57347444/collapsing-overlapping-time-intervals-using-clickhouse - подскажите насколько он работоспособен? Заранее спасибо!
    Collapsing overlapping time intervals using ClickHouse

    I read similar questions and it's possible to make it work by using window functions, however, since ClickHouse does not seem to support them I'm seeking for an alternative solution. Given the time

  • https://t.me/clickhouse_ru
    в некоторых случаях подходит словарь range_hashed
    в некоторых можно в where отсечь (после full)
  • https://t.me/clickhouse_ru
    @rostish #213588 02:56 PM, 12 Apr 2021
    Спасибо, попробую
  • https://t.me/clickhouse_ru
    зависит от объемов, если миллиарды ивентов в день, то надо делать до КХ,

    если миллионы то можно вычислять таким запросом, гемор конечно дичайший поддерживать такие запросы, в 100 раз проще сделать это в приложении.

    ну и можно вводить дискретность по 5 -30 сек. и просто писать какой кусочек просмотрен
  • https://t.me/clickhouse_ru
    в текущей версии (mongodb) так и делаем, но clickhouse append-only база данных - поэтому текущий подход здесь не подойдет
  • https://t.me/clickhouse_ru
    @slapshin #213591 03:01 PM, 12 Apr 2021
    а с дискретностью интересная идея! Благодарю!
  • https://t.me/clickhouse_ru
    @AlexTru_1 #213592 03:06 PM, 12 Apr 2021
    Добрый день! подскажите, а в ReplacingMergeTree ключ партицирования входит в уникальный индекс по которому удаляются дубли? то есть если PARTITION by date order by ID. останутся записи уникальные по id date или только по id?
  • https://t.me/clickhouse_ru
    По (id, date).
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @nyatmeat #213595 03:14 PM, 12 Apr 2021
    Не очень понимаю что значит
    LEFT SEMI JOIN и RIGHT SEMI JOIN, белый список по ключам соединения, не производит декартово произведение
    Есть где прочитать что такое именно белый список ключей соединения?
  • https://t.me/clickhouse_ru
    SEMI JOIN по факту заменяет WHERE EXISTS ( )
    То есть в случае
    SELECT actor_id
    FROM actors
    LEFT SEMI JOIN film_actor USING (actor_id)

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

    А запрос
    SELECT actor_id
    FROM actors
    LEFT JOIN film_actor USING (actor_id)

    размножит тебе этих актров на кол-во фильмов, в которых каждый из них снялся
  • https://t.me/clickhouse_ru
    @nyatmeat #213597 03:25 PM, 12 Apr 2021
    Спасибо за подробный ответ)
  • https://t.me/clickhouse_ru
    @ployd #213598 03:33 PM, 12 Apr 2021
    А то что LIVE VIEW .. WITH TIMEOUT таблицы при создании через http (с последующим WATCH) не удаляется это известная проблема? Не нахожу issue
  • @vialorn #213599 03:58 PM, 12 Apr 2021
    Всем привет. Такая задача: есть топик Kafka, из которого кластер 4 шарда х 2 реплики не напрягаясь читает несколько млрд записей в сутки. Но в этом потоке есть доля "мусора" - невостребованных записей, лишь создающих в последствии паразитную нагрузку на ресурсы кластера. Отделить их от "полезных" можно на основании содержимого реплицируемой на все шарды таблицы (не-шардированной). И захотелось фильтрацию делать прямо в процессе загрузки из Kafka. Соответственно, варианты: а) добавить в MV предложение WHERE id in (select id from filter_table); б) создать таблицу Engine=SET as select id from filter_table, в) создать Dict. Вариант "а" смущает надёжностью, год назад, если память не подводит, такой подход ненадёжно работал. С вариантом "б" непонятно, как периодически обновлять таблицу, не нарушая работу MV. С вариантом "в" есть сомнение, подходит ли Dict для набора из более чем 20 млн идентификаторов. Зато, если правильно понимаю, Dict сам умеет периодически обновляться.
  • https://t.me/clickhouse_ru
    Что-то там как-то страшно это выглядит, хотя может быстрее работает. Можно так (если просмотры длительные, то памяти жрать будет много):
    SELECT
    arrayUniq(
    groupArrayArray(
    arrayMap(
    x -> x + arr.1,
    range(toUInt16(arr.2 - arr.1 + 1))
    ))) as time
    from (
    SELECT arrayJoin([(1, 5), (4, 10), (6, 8), (20, 25)]) as arr
    );интервалы 1..10 и 20..25 - это или 16 секунд, или 14, но вряд ли 15, если я правильно понял задачу.
  • @JaksonXXX #213601 04:38 PM, 12 Apr 2021
    Установил odbc driver, windows 10. При создании user dsn в odbc data source administrator - выбираю Clickhouse odbc driver (unicode), далее ввожу host, port, database, нажимаю ok и ничего не происходит, ни созданного dsn ни ошибок. Коннект к бд через datagrip с теми же параметрами проходит, правда там используется jdbc.
    Может кто подскажет почему не создается dsn? Может нужно как то сам clickhouse настраивать? И где можно искать ошибку создания, логи и тп?
  • https://t.me/clickhouse_ru
    @MakeReady #213602 04:45 PM, 12 Apr 2021
    Добрый вечер! CH поддерживает рекуррентные подзапросы типа FROM table t where t.id in (select id from table where date < t.date)?
  • @sergnafanya #213604 04:48 PM, 12 Apr 2021
    Добрый вечер. Подскажите пожалуйста, есть ли к КХ возможность работы с датой и временем с учётом таймзон? (не конвертация каждого значения, а как в MySql или вертике по таймзоне коннекта)
  • @Melentyev #213605 04:53 PM, 12 Apr 2021
    Всем привет!
    Есть кейс когда нужно хранить данные о сотрудниках + историю изменения данных - далее на основе истории изменений делать отчеты. На текущий момент все реализовано на Postgres, но для отчетов нужно крутить много данных на лету - собственно вопрос - как лучше всего сделать - перенести все ведение данных в кликхаус - или же все-таки сохранять данные истории только в кликхаусе, а основную таблицу в постгре?
  • https://t.me/clickhouse_ru
    Тут важно понять что кх не конвертирует время. У него нету таймзон во времени. Там всегда timestamp UTC. Кх использует таймзоны при рендеринге и парсинге строк
  • то есть сменив ТЗ коннекта (сессии) на выводе будут изменённые значения? (визуально)
  • https://t.me/clickhouse_ru
    Сколько миллиардов ивентов в день?
  • https://t.me/clickhouse_ru
    Визуально это делает например jdbc драйвер.
  • 0
  • https://t.me/clickhouse_ru
    Берите постгре
  • https://t.me/clickhouse_ru
    @den_crane #213612 04:56 PM, 12 Apr 2021
    Кх не нужен вам
  • Вы подтвердили мои ожидания, что для такого кейса КХ избыточен. Спасибо!
  • @Melentyev #213614 04:58 PM, 12 Apr 2021
    слишком мощный инструмент для такого кейса
  • спасибо большое....сейчас попробую в коде
  • https://t.me/clickhouse_ru
    Кореллированные подзапросы не поддерживаются
  • https://t.me/clickhouse_ru
    да, вот только нашел, что «зависимые» подзапросы не поддерживаются 🙁 Думал с with обойти, но тоже не пробрасывается в подзапрос)
  • https://t.me/clickhouse_ru
    Делать до кх. Используя редис
  • https://t.me/clickhouse_ru
    @MakeReady #213619 05:10 PM, 12 Apr 2021
    как бы еще выбрать то, что есть в месяце м, но отсутсвует в предыдущем…
  • https://t.me/clickhouse_ru
    @MakeReady #213620 05:10 PM, 12 Apr 2021
    и так для каждого
  • https://t.me/clickhouse_ru
    @MakeReady #213621 05:10 PM, 12 Apr 2021
    кроме первого
  • https://t.me/clickhouse_ru
    @Sablast #213622 05:11 PM, 12 Apr 2021
    собрать проверяемые данные в массив и пройтись по массиву
  • https://t.me/clickhouse_ru
    может через гоупбай having можно переписать
  • https://t.me/clickhouse_ru
    @MakeReady #213624 05:12 PM, 12 Apr 2021
    да, как вариант. Спасибо!
  • https://t.me/clickhouse_ru
    Спасибо! Попробую тоже этот вариант
  • https://t.me/clickhouse_ru
    @MakeReady #213628 05:17 PM, 12 Apr 2021
    или (d-toIntervalMonth(1),id) NOT IN
  • Changes in master broke WITH TIMEOUT clause in LIVE VIEW tables. · Issue #14827 · ClickHouse/ClickHouse

    Describe the bug Changes to LIVE VIEW storage broke WITH TIMEOUT clause (70b0fe8). How to reproduce user-host :) CREATE LIVE VIEW lv WITH TIMEOUT 5 AS SELECT 1 CREATE LIVE VIEW lv WITH TIMEOUT 5 AS...

  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #213629 #213630 05:27 PM, 12 Apr 2021
    Это видел, но кейс там уже работает валидно.
  • Заведи тогда issue и я посмотрю в чём проблема.
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #213631 #213632 05:46 PM, 12 Apr 2021
    Live views aren't removed after disconnection (HTTP) · Issue #22996 · ClickHouse/ClickHouse

    Description If the WATCH statement is used via HTTP interface for live views with a timeout, the live view isn't removed after disconnection. Steps to reproduce the bug Create a live view: ...

  • https://t.me/clickhouse_ru
    @monashev #213633 05:49 PM, 12 Apr 2021
    а почему в документации работа AggregatingMergeTree с описана через MATERIALIZED VIEW ? В чём плюс такой схемы по сравнению с прямой записью в AggregatingMergeTree?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #213633 #213634 05:52 PM, 12 Apr 2021
    Просто в ch обычно кладут raw данные, уже по которым дополнительно накручиваются разные агрегации
  • https://t.me/clickhouse_ru
    @zholmyrza_t #213635 06:03 PM, 12 Apr 2021
    Всем привет периодически на нодах получаю ошибку
    TCPHandler: Code: 210, e.displayText() = DB::Exception: Connection reset by peer, while writing to socket (айпи ноды)
    хотя выставлял
    <connect_timeout_with_failover_ms>1000</connect_timeout_with_failover_ms>
  • https://t.me/clickhouse_ru
    Случайно. Но вообще вставлять напрямую в aggMt не сахар

    Проще через MV и null таблицу
  • https://t.me/clickhouse_ru
    Это не из-за этого параметра.
    Что за ошибка была на второй ноде?

    Если запрос очень долгий то через keep-alive параметр можно решить
  • https://t.me/clickhouse_ru
    [ 2322807 ] {3eaeb875-1b63-44ac-95ef-da9263678f69} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
  • Live views aren't removed after disconnection (HTTP) · Issue #22996 · ClickHouse/ClickHouse

    Description If the WATCH statement is used via HTTP interface for live views with a timeout, the live view isn't removed after disconnection. Steps to reproduce the bug Create a live view: ...

  • https://t.me/clickhouse_ru
    Ssl используется? Secure?
  • https://t.me/clickhouse_ru
    нет, ну разве что авторизация по tcp
  • https://t.me/clickhouse_ru
    а что за сеть? локальная ? докеры?

    похоже на баг в КХ
  • https://t.me/clickhouse_ru
    сеть локальная, физика, не докер. Я вот только недавно весь кластер обновил с 20.11 по 21.3.5. Не пофиксило.
  • https://t.me/clickhouse_ru
    ошибка на похожем запросе все время? или все время разные?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #213645 06:20 PM, 12 Apr 2021
    логи с одной ноды
    2021.04.12 20:31:00.408198 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408259 [ 2319290 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408295 [ 2319452 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408318 [ 2319659 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408368 [ 2319717 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408391 [ 2319460 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408402 [ 2319330 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414811 [ 2319290 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414826 [ 2319659 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414841 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.415005 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 21:43:43.318794 [ 2332741 ] {} <Error> ServerErrorHandler: Code: 210, e.displayText() = DB::NetException: Connection reset by peer, while reading from socket (айпи:52630), Stack trace (when copying this message, always include the lines below):

    0. DB::ReadBufferFromPocoSocket::nextImpl() @ 0xeb4fd73 in /usr/bin/clickhouse
    1. DB::TCPHandler::runImpl() @ 0xf8b9264 in /usr/bin/clickhouse
    2. DB::TCPHandler::run() @ 0xf8cbec9 in /usr/bin/clickhouse
    3. Poco::Net::TCPServerConnection::start() @ 0x11f801af in /usr/bin/clickhouse
    4. Poco::Net::TCPServerDispatcher::run() @ 0x11f81bc1 in /usr/bin/clickhouse
    5. Poco::PooledThread::run() @ 0x120b82e9 in /usr/bin/clickhouse
    6. Poco::ThreadImpl::runnableEntry(void*) @ 0x120b414a in /usr/bin/clickhouse
    7. start_thread @ 0x82de in /usr/lib64/libpthread-2.28.so
    8. clone @ 0xfbe83 in /usr/lib64/libc-2.28.so
    (version 21.3.5.42 (official build))
  • https://t.me/clickhouse_ru
    keep_alive_timeout может помочь? запросы есть реально долгие, когда за большой период идёт селект
  • https://t.me/clickhouse_ru
    нет не может. Тут ошибка КМК сразу, моментально.

    сделайте grep c47f075a-a3b3-42ab-870f-7c38c88210bb /var/log/clickhouse-server/clickhouse-server.log

    Фаервол есть? Может он кол-во коннектов режет?
  • https://t.me/clickhouse_ru
    cat /home/clickhouse/log/clickhouse-server.log | grep c47f075a-a3b3-42ab-870f-7c38c88210bb
    2021.04.12 20:31:00.408198 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408259 [ 2319290 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408295 [ 2319452 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408318 [ 2319659 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408368 [ 2319717 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408391 [ 2319460 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.408402 [ 2319330 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414811 [ 2319290 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414826 [ 2319659 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.414841 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.12 20:31:00.415005 [ 2319566 ] {c47f075a-a3b3-42ab-870f-7c38c88210bb} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    тоже самое, просто указывал уровень логирования "notice", мб из-за этого мало инфы
  • https://t.me/clickhouse_ru
    да, нужен уровень trace.
  • https://t.me/clickhouse_ru
    без рестарта есть возможность сменить лог лвл?)
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    trace подключил на одной ноде, буду мониторить его err.log. Эти ошибки не сыпятся, выходят где-то раз в 3-4 часа пачкой
  • https://t.me/clickhouse_ru
    та же хрень, уже который раз сталкиваюсь. при создании вьюхи пишет:
    >Query error: Code: 241, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 9.32 GiB (attempt to allocate chunk of 4325376 bytes), maximum: 9.31 GiB: While executing AggregatingTransform (version 21.3.3.14 (official build))

    при этом вьюха создаётся. походу надо тикет заводить на гитхабе. у меня версия 21.3.3.14
  • https://t.me/clickhouse_ru
    @tratatataass #213655 07:11 PM, 12 Apr 2021
    Привет, я разбираюсь с dictionary в КХ.
    У меня есть словарь такого вида:

    CREATE DICTIONARY IF NOT EXISTS dict_test (
    A String,
    B String,
    C String
    )
    PRIMARY KEY A, B
    SOURCE(CLICKHOUSE(table 'some_view'))
    LAYOUT(COMPLEX_KEY_HASHED())
    LIFETIME(1);

    Что происходит когда я делаю селект вроде такого?
    SELECT * FROM dict_test WHERE A = 'SOME_VALUE_A' AND B = 'SOME_VALUE_B';
    Запрос будет идти в память словаря как tuple('SOME_VALUE_A', 'SOME_VALUE_B') по ключу?

    А так фуллскан?
    SELECT * FROM dict_test WHERE A = 'SOME_VALUE';

    Или чтение будет из some_view?
  • https://t.me/clickhouse_ru
    селекты из словаря работают медленно, они больше для дебага. лучше ограничиться dictGet*
  • https://t.me/clickhouse_ru
    Ок, спасибо
  • 13 April 2021 (154 messages)
  • https://t.me/clickhouse_ru
    Replacing происходит между партами внутри одной партиции
  • https://t.me/clickhouse_ru
    lifetime очень маленький
    каждую секуду будет SELECT A,B,C FROM some_view происходить
    в отдельную область памяти, а потом атомарный replace

    SELECT * FROM dict_test это кажется всегда фуллскан по представлению dict_test памяти

    есть отдельно dictGet для словарей, там никакого fullscan конечно нет...

    проверять надо через
    SET send_logs_level='trace';
    SELECT * FROM dict_test WHERE A = 'SOME_VALUE_A' AND B = 'SOME_VALUE_B'
  • https://t.me/clickhouse_ru
    @zholmyrza_t #213663 05:39 AM, 13 Apr 2021
    на сколько опасно перезагружать ноду, где выполняется большой мердж?
  • https://t.me/clickhouse_ru
    @Malcolm061990 #213665 06:35 AM, 13 Apr 2021
    Всем привет. Только начинаю изучать кликхаус. Скажите, пожалуйста, по «хорошим практикам» в облаке нужно ли перед инстансами кликхауса ставить балансировщик нагрузки?
  • @vvvjhaq #213666 07:33 AM, 13 Apr 2021
    Добрый день. Поймал эту ошибку: https://github.com/ClickHouse/ClickHouse/pull/21976
    в очереди репликации висит один парт с ошибкой, что можно с ним сделать?
    И в какой версии старше 21.2.6.1 это исправлено?
    CollapsingSortedAlgorithm should not return more than index_granularity rows by KochetovNicolai · Pull Request #21976 · ClickHouse/ClickHouse

    Changelog category (leave one): Bug Fix Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): In rare case, merge for CollapsingMergeTree may create granul...

  • https://t.me/clickhouse_ru
    Да я понимаю. Я хотел результат аггрегации + несклько джоинов складывать в такой как бы кэш и использовать его при выборках. Спасибо, посмотрю что в трейсах происходит
  • @Malcolm061990 Nginx, который будет распределять по нодам , будет достаточно.
  • https://t.me/clickhouse_ru
    just fyi
    на запросы вида SELECT * FROM dict_test WHERE A = 'SOME_VALUE_A' AND B = 'SOME_VALUE_B'
    идет фуллскан.
  • https://t.me/clickhouse_ru
    2021.04.13 14:08:08.006115 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Debug> db3.table (cc4a0c15-9dfd-4fcd-8ce3-369c8b8103e3) (SelectExecutor): Key condition: unknown, unknown, (column 0 in [1607928480, +inf)), (column 0 in (-inf, 1607932200]), and, and, and, unknown, and
    2021.04.13 14:08:08.006133 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Debug> db3.table (cc4a0c15-9dfd-4fcd-8ce3-369c8b8103e3) (SelectExecutor): MinMax index condition: unknown, unknown, (column 0 in [1607928480, +inf)), (column 0 in (-inf, 1607932200]), and, and, and, unknown, and
    2021.04.13 14:08:08.006140 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Debug> db3.table (cc4a0c15-9dfd-4fcd-8ce3-369c8b8103e3) (SelectExecutor): Selected 0/0 parts by partition key, 0 parts by primary key, 0/0 marks by primary key, 0 marks to read from 0 ranges
    2021.04.13 14:08:08.006254 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> InterpreterSelectQuery: FetchColumns -> WithMergeableState
    2021.04.13 14:08:08.006548 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> InterpreterSelectQuery: WithMergeableState -> Complete
    2021.04.13 14:08:08.006608 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    2021.04.13 14:08:08.008430 [ 3778334 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-137.end:9001): Connecting. Database: (not specified). User: default
    2021.04.13 14:08:08.008545 [ 3778355 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-140.end:9000): Connecting. Database: (not specified). User: default
    2021.04.13 14:08:08.008613 [ 3778230 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Warning> ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.13 14:08:08.009003 [ 3778355 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-140.end:9000): Connected to ClickHouse server version 21.3.5.
    2021.04.13 14:08:08.009016 [ 3778334 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-137.end:9001): Connected to ClickHouse server version 21.3.5.
    2021.04.13 14:08:08.016359 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Debug> DynamicQueryHandler: Done processing query
    2021.04.13 14:08:08.016391 [ 3791333 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Debug> MemoryTracker: Peak memory usage (for query): 0.00 B.
    Выловил ошибку с trace. Вижу что нода, пытается подключится к двум другим нодам.
    2021.04.13 14:08:08.008430 [ 3778334 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-137.end:9001): Connecting. Database: (not specified). User: default
    2021.04.13 14:08:08.008545 [ 3778355 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-140.end:9000): Connecting. Database: (not specified). User: default
    Затем выходит ошибка, и всё же соединение успешно. странно
    ConnectionPoolWithFailover: Connection failed at try №1, reason: Code: 32, e.displayText() = DB::Exception: Attempt to read after eof (version 21.3.5.42 (official build))
    2021.04.13 14:08:08.009003 [ 3778355 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-140.end:9000): Connected to ClickHouse server version 21.3.5.
    2021.04.13 14:08:08.009016 [ 3778334 ] {d246c86d-7cd8-49b4-94bb-a644d346f967} <Trace> Connection (hostname-137.end:9001): Connected to ClickHouse server version 21.3.5.
  • https://t.me/clickhouse_ru
    Спасибо. Но вопрос в том, это именно хорошая практика от разработчиков или ваша рекомендация?
  • Так заведено на моем проекте и это моя рекомендация ;) это универсальный , гибкий и простой в настройке хороший подход . Если конечно у вас нет 100 докерезированных контейнеров, под управлением kubernetes, крутящихся в GCE или AWS :) в этом случае следует использовать встроенные там load balancer

    https://cloud.google.com/load-balancing

    В
    Cloud Load Balancing  |  Google Cloud

    High performance, scalable global load balancing on Google’s worldwide network, with support for HTTP(S), TCP/SSL, UDP, and autoscaling.

  • https://t.me/clickhouse_ru
    @innopolis #213674 08:43 AM, 13 Apr 2021
    в доке сказано В отличие от стандарта SQL, все остальные ключевые слова, включая названия функций зависят от регистра. https://clickhouse.tech/docs/ru/sql-reference/syntax/#syntax-keywords

    В чем смысл, если работает как SELECT MIN(number) FROM tutorial.test_table;, так и SELECT min(number) FROM tutorial.test_table; ?
    Синтаксис | Документация ClickHouse

    Синтаксис В системе есть два вида парсеров: полноценный парсер SQL (recursive descent parser) и парсер форматов данных (

  • https://t.me/clickhouse_ru
    В вашем случае где именно крутится nginx?)
  • https://t.me/clickhouse_ru
    @artcorp96 #213678 09:40 AM, 13 Apr 2021
    Добрый день, вопрос по kafka_thread_per_consumer.

    В доке написано.

    При включенном режиме каждый потребитель сбрасывает данные независимо и параллельно, при отключённом — строки с данными от нескольких потребителей собираются в один блок.

    > строки с данными от нескольких потребителей собираются в один блок
    Тут не ясно, в одном блоке могут быть сообщения от нескольких топиков? Или в один блок пишут исключительно косьюмеры из одного кафка энджин ?
  • https://t.me/clickhouse_ru
    в один блок пишут исключительно косьюмеры из одного кафка энджин
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @gorbonk #213682 10:21 AM, 13 Apr 2021
    Всем привет! А какие есть не экспериментальные аналоги для Мар ?
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #213682 #213683 10:23 AM, 13 Apr 2021
    два списка: ключи и значения

    values[indexOf(keys, 'value')]
  • https://t.me/clickhouse_ru
    А это будет не дольше/грязнее, чем json хранить и парсить?
  • https://t.me/clickhouse_ru
    @resuba #213685 10:28 AM, 13 Apr 2021
    А подскажите, это скорее к линукс администрированию. Если не добавляется в таблицу из стороннего генератора к которому доступа не имею, как можно исследовать этот случай? Какие утилиты для анализа приходящего трафика погуглить?
  • https://t.me/clickhouse_ru
    tcpdump например
  • https://t.me/clickhouse_ru
    @pic_Nick77 #213687 10:29 AM, 13 Apr 2021
    Здравствуйте! Пользуюсь табиксом для подключения к КХ. Начиная с версии КХ 21.4.3.21 он перестал подключаться. Что делать? Табикс - всё?
  • UP
    такой экспепшн для истории
    Code: 49, e.displayText() = DB::Exception: Incomplete granules are not allowed while blocks are granules size.
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #213686 #213690 10:46 AM, 13 Apr 2021
    Спасибо, а как можно перехватить текст сообщения по определённому айпишнику? Тоже tcpdump?
  • https://t.me/clickhouse_ru
    ну через tcpdump если конечно сообщение отправляется незашифрованным (без https к примеру)
  • https://t.me/clickhouse_ru
    @designerfromsanpaulo #213692 10:47 AM, 13 Apr 2021
    tcpdump как и другие сниферы "видят" все содержимое пакета на всех уровнях TCP/IP стека
  • https://t.me/clickhouse_ru
    @designerfromsanpaulo #213693 10:47 AM, 13 Apr 2021
    ну или модели OSI если хотите
  • https://t.me/clickhouse_ru
    @designerfromsanpaulo #213694 10:48 AM, 13 Apr 2021
    и если на данные не шифруются, то их можно "увидеть" так как они просто plain text
  • https://t.me/clickhouse_ru
    @resuba #213697 11:21 AM, 13 Apr 2021
    А где хранится настройка максимального количества партиций для таблицы?
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #213691 #213698 11:21 AM, 13 Apr 2021
    Угу, разобрался, полезно
  • @githubreleases_bot #213699 b o t 11:30 AM, 13 Apr 2021
    ClickHouse/ClickHouse tagged: v21.1.9.41-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.1.9.41-stable
    Release notes:
    v21.1.9.41-stable
    Release v21.1.9.41-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.1.9.41-stable

  • https://t.me/clickhouse_ru
    @nafanaseva #213700 11:45 AM, 13 Apr 2021
    Всем привет!
    Пытаюсь применить опцию input_format_defaults_for_omitted_fields при загрузке данных таблицы из CSV.
    КХ: version 21.3.5.42 (official build)

    Если пишу как SETTINGS в запрос (INSERT INTO default.test_table_name format CSV SETTINGS input_format_defaults_for_omitted_fields=1), то получаю Code: 115. DB::Exception: Unknown setting input_format_defaults_for_omitted_fields.
    Если пишу как параметр запроса clickhouse-client (... clickhouse-client --input_format_defaults_for_omitted_fields=1 -q "INSERT INTO default.test_table_name format CSV"), то получаю
    Bad arguments: unrecognised option '--input_format_defaults_for_omitted_fields=1'

    Попытаться ещё задать в конфиг users.xml для моего пользователя?
    Или я в целом как-то неправильно понимаю концепцию настроек (и этой настройки в частности)?

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

    P.S. знаю, что опция по умолчанию уже единица.
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    ну как бы тут такой момент что это фуллскан по памяти, так что оно достаточно быстро должно быть
  • https://t.me/clickhouse_ru
    да это понятно, но почему-то ожидал немного другого поведения. Пока сойдет, но позже буду думать как такие кэши сделать, что бы за единицу ходить.
  • https://t.me/clickhouse_ru
    можно попробовать через clickhouse-client -m -q "SET input_format_defaults_for_omitted_fields=1; INSERT ... "
    или cat your.csv | curl --data-binary @- "http://127.0.0.1:8123/?input_format_defaults_for_omitted_fields=1&query=INSERT ..."
  • https://t.me/clickhouse_ru
    На первую ругается, т.к. не поддерживает несколько запросов в одной query.
    Второе попробую сейчас.)
  • https://t.me/clickhouse_ru
    ну погодите, у вас есть по факту хешмап в памяти
    чтобы отфильтровать его надо как минимум пройтись по всем ключам
    получить атрибуты и сравнить их

    PRIMARY KEY для словаря, это выражение, которое используется как ключ хешпапа...

    PRIMARY KEYи т.п. для MergrTree это все остается внутри SOURCE() и словарь про это ничего не знает
  • https://t.me/clickhouse_ru
    опция -m как раз для того чтобы поддерживал несколько запросов...
    если вы в datagrip делаете, то там да, там HTTP интерфейс под капотом
    там надо через параметры JDBC драйвера это выставлять
  • @GrouthHacker #213708 12:17 PM, 13 Apr 2021
    Почему возникает ошибка: DB::Exception: Memory limit (total) exceeded: would use 28.30 GiB (attempt to allocate chunk of 8592536654 bytes), maximum: 26.50 GiB ?
    Запускаю команду из консоли с параметрами --max_bytes_before_external_group_by=70000000 --max_bytes_before_external_group_by=5000000000 --max_memory_usage=0 --log_queries=0 --aggregation_memory_efficient_merge_threads=1
    Свободного места на диске 300гиг+
    Команда типа INSERT INTO tmp.last SELECT DISTINCT time, murmurHash2_32(acc_key) , article... FROM db.db ORDER BY time LIMIT 100 BY article
  • https://t.me/clickhouse_ru
    Ага, но даже с этим ключом всё равно получаю ошибку "Code: 62. DB::Exception: Syntax error (Multi-statements are not allowed): failed at position 47 (end of query): ; ..."
  • https://t.me/clickhouse_ru
    @artemnl #213710 12:36 PM, 13 Apr 2021
    Ребят привет, подскажите пожалуйста - нам нужен опытный консультант по Clickhouse. Нужно помочь с 3-мя вопросами: 1) кластер и его настройка, 2) оптимизация view с огромным объемом неоднородных данных (Тб) и 3) ревью пайплайна данных и оптимизация запросов. Если кто-то готов посотрудничать или помочь с контактами - пишите в приват. Буду благодарен.
  • @zheka_kolesnik #213711 12:43 PM, 13 Apr 2021
    ребят, привет, подскажите, если ли для таблицы с engine = ReplacingMergeTree виртуальная колонка по которой можно понять, какая строка последняя? если явно колонку version не указывал?
  • «Последнюю в выборке, если ver не задан. Под выборкой здесь понимается набор строк в наборе партов, участвующих в слиянии. Последний по времени создания парт (последний инсерт) будет последним в выборке. Таким образом, после дедупликации для каждого значения ключа сортировки останется самая последняя строка из самого последнего инсерта.»
  • спасибо, как оно работает понимаю, мне бы для случаев когда дедупликация ещё не произошла применить к колонкам вне ключа сортировки argMax по колонке ver, которая не была указана присоздании таблицы, есть ли такой враиант? или надо пересоздавать таблицу с явно указанной колонкой ver, которую потом смогу использовать как второй агрумент в argMax?
  • таблица большая, к которой обращаетесь?
  • нет, сотни тысяч, может будут миллионы
  • колонка с датой есть?
  • https://t.me/clickhouse_ru
    @zagirnur #213721 01:18 PM, 13 Apr 2021
    Можно ли в AggregatingMergeTree стелать индекс по агрегированной колонке, например anyState() ?
  • в целом — есть, но могут быть и абсолютно идентичные строки
  • ну тогда если не сможете подобрать подобный запрос с сортировкой и лимитом (select ... Order by pk, time desc limit 1 by pk)
    Можно попробовать select from final
    Ну либо пересоздать с ver полем

    Может буду варианты лучше...
  • да, получается не тполя ни для argMax, ни для использования в order by с limit by, думал, может есть какая-то виртуальная колонка заменяющая указанную явно ver, спасибо за время!
  • полистайте историю, мб найдете решение ещё
  • ок)
  • https://t.me/clickhouse_ru
    очень странно, какая версия CH ?
    clickhouse-client -mn
    а с этой парой?
  • @697746773 #213730 02:10 PM, 13 Apr 2021
    Подскажите несколько основных системных метрик clickhouse для мониторинга его работы?
    что-бы можно было глянуть и сказать чет дела не совсем гуд :) а то было пару затыков
  • https://t.me/clickhouse_ru
    @nyatmeat #213731 02:23 PM, 13 Apr 2021
    Всем привет. При группировке uuid в массив они добавляются как uuid или string?
  • https://t.me/clickhouse_ru
    @ilejn #213732 03:12 PM, 13 Apr 2021
    Добрый день, пытаюсь найти сравнительные с другими СУБД тесты производительности кликхауса по вставке данных, но особо ничего не встретилось. Кто-нибудь знает такое?
  • https://t.me/clickhouse_ru
    Performance comparison of database management systems

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    плохо искали )
  • https://t.me/clickhouse_ru
    @ilejn #213735 03:19 PM, 13 Apr 2021
    А где там про вставку?
  • https://t.me/clickhouse_ru
    плохо прочитал :) на вставку не имеет смысла сравнивать. там отличия на порядки в пользу кликхауса
  • https://t.me/clickhouse_ru
    @ilejn #213737 03:21 PM, 13 Apr 2021
    Ну вот и хочется посмотреть на эти отличия.
    Рассказать заказчику, что такое сравнение не имеет смысла, может получиться не убедительно.
  • https://t.me/clickhouse_ru
    кликхаус - это аналитическая бд, основная задача которого - чтение.
  • https://t.me/clickhouse_ru
    Это очень медленный фулскан, потому что там каждая колонка в своей хеш-таблице, и эти хеш-таблицы не предназначены для прохода последовательно,
    у меня есть тест где в 300 раз запрос медленее к словарю чем к мержтри таблице
  • https://t.me/clickhouse_ru
    наверное можно использовать виртуальное поле _part
  • https://t.me/clickhouse_ru
    @morozovsk #213742 03:29 PM, 13 Apr 2021
    уважаемые коллеги, подскажите как подправить запрос, чтобы все колонки были в процентах относительно первой колонки (там где 0). график строится в метабезейзе и нет возможности перевести в проценты на уровне приложения. если вообще никак, то придётся писать прокси на nodejs и высчитывать всё там, а этого пока не очень хочется :)
  • @den_crane не подскажете, чем можно вылечить?
  • спасибо, а лучше использовать его, или _part_index?
  • https://t.me/clickhouse_ru
    @morozovsk #213746 03:39 PM, 13 Apr 2021
    вопрос попроще: как можно сделать, чтобы во всех строчках значения были в процентах относительно нулевой строчки?
  • https://t.me/clickhouse_ru
    только если подзапросом первую строчку достать
  • там у вас такая ошибка, у вас все впорядке со storage policy?
    Volume must contain at least one disk
  • @zheka_kolesnik #213749 03:54 PM, 13 Apr 2021
    ну или allow_experimental_window_functions = 1 и заюзать max(<col_with_cnt>) over(...)
  • https://t.me/clickhouse_ru
    можно увидеть что вы видите в очереди репликации?
  • https://t.me/clickhouse_ru
    в какой версии КХ ? Можно через массивы можно через window functions
  • https://t.me/clickhouse_ru
    я не знаю что такое _part_index, если вам подходит то используйте
  • https://t.me/clickhouse_ru
    как uuid
  • уже проверил, просто какой-то порядковый номер парта, подходит, спасибо
  • https://t.me/clickhouse_ru
    @blinkovivan #213755 04:24 PM, 13 Apr 2021
    Прямо сейчас на нашем официальном канале на YouTube идет трансляция, на котором мы обсуждаем методы и инструменты скоринга входных данных, их агрегацию и создание единой системы в офлайн- и онлайн-ритейле, банкинге и облачных сервисах. На примерах покажем, как с помощью данных оптимизируются устоявшиеся бизнес-процессы в компаниях.

    В данный момент начинается доклад нашего архитектора. Он расскажет о данных в S3, поддержке S3 storage в ClickHouse, а также расскажет, как выполнить select-запрос к файлу, не имея никакой СУБД.

    Своими кейсами также поделятся представители Леруа Мерлен, Райффайзенбанк и Авито

    Подключайтесь →
    Единый источник данных в data-driven компаниях

    Митап о методах и инструментах скоринга входных данных, их агрегации и создании единой системы в офлайн- и онлайн-ритейле, банкинге и облачных сервисах. 00:00:00 - intro от модератора 00:02:21 - Создание Data Platform в Леруа Мерлен - Дмитрий Ибрагимов, Леруа Мерлен 00:24:50 - Данные в S3: поддержка S3 storage в ClickHouse, а также как выполнить select-запрос к файлу, не имея никакой СУБД - Всеволод Грабельников, Yandex.Cloud 00:42:00 - Витрины данных в Авито и их применение в бизнес-задачах - Илья Салманов, Авито 01:01:47 - От анализа данных до внедрения в прод: как инфраструктура помогает обучать и внедрять ML-модели - Михаил Сеткин, Райффайзенбанк 01:18:45 - Cветофор 2.0: страх и ненависть на пути от экселя к градиентному бустингу - Ксения Блажевич и Дмитрий Фокеев, Леруа Мерлен

  • https://t.me/clickhouse_ru
    21.3.3.14
    пытаюсь сейчас через массивы, пока не очень получается
  • https://t.me/clickhouse_ru
    @vetinary #213757 04:28 PM, 13 Apr 2021
    Добрый вечер. Подскажите, пожалуйста, про правильную организацию кластера CH (или укажите, где почитать)?

    В настоящий момент у меня есть 3 шарда по 2 реплики:

    Шард 1 Шард 2 Шард 3
    Реплика 1-1 Реплика 2-1 Реплика 3-1
    Реплика 1-2 Реплика 2-2 Реплика 3-2

    Каждый шард лежит на отдельном сервере, каждая реплика обслуживается отдельным докер-контейнером.
    И что-то одолевают меня сомнения в правильности такого подхода: получается ведь, что если связь с Сервером 1, содержащим Шард 1 будет нарушена, или сервер «упадёт» — треть данных потеряется, потому что обе реплики находятся там 🤷🤔

    Может, правильнее делать как-то так: например, одна копия Шарда 1 лежит на Сервере 1, вторая — на сервере 2… Ну и так далее. Просто как-то их смешивать. Чтобы при выходе из строя одного сервера, из двух других можно было бы собрать полную версию данных.

    Или я не с той стороны подхожу к задаче?
  • https://t.me/clickhouse_ru
    SELECT
    (arrayJoin(arrayMap(i -> (i, (i / (g[1])) * 100), groupArray(x) AS g)) AS t).1 AS n,
    t.2 AS per
    FROM
    (
    SELECT number AS x
    FROM numbers(10)
    ORDER BY x DESC
    )

    ┌─n─┬───────────────per─┐
    │ 9 │ 100 │
    │ 8 │ 88.88888888888889 │
    │ 7 │ 77.77777777777779 │
    │ 6 │ 66.66666666666666 │
    │ 5 │ 55.55555555555556 │
    │ 4 │ 44.44444444444444 │
    │ 3 │ 33.33333333333333 │
    │ 2 │ 22.22222222222222 │
    │ 1 │ 11.11111111111111 │
    │ 0 │ 0 │
    └───┴───────────────────┘
  • всё правилньо, по-дефолту нужно делать так, чтоб реплики были на разных серваках
  • https://t.me/clickhouse_ru
    КХ рекомндует 6 серверов. Если нет такой возможности, то да вам надо сдвинуть по кругу, чтобы реплика была на другой железяке
  • то есть для быстрой обработки данных — каждый шард на своей машине, но внутри каждого шарда реплики тоже на отдельных машинах
  • 👍🏻
  • https://t.me/clickhouse_ru
    да, чтобы все диски и все cpu были доступны основной реплике, и вторая чужая реплика не жрала диски
  • https://t.me/clickhouse_ru
    @nshumshurova #213766 04:51 PM, 13 Apr 2021
    есть вопрос как переносить данные с одного кликхауса на другой если есть GraphiteMergeTree
  • https://t.me/clickhouse_ru
    @nshumshurova #213767 04:51 PM, 13 Apr 2021
    движок не поддерживает fetch из файла
  • https://t.me/clickhouse_ru
    спасибо, работает в 2 раза быстрее чем мой вариант:
    SELECT arrayJoin(active_days) - toDate(first_activity) as day, 100*uniq(device_id)/max_users as k
    FROM raw_users FINAL
    ARRAY JOIN [(SELECT uniq(device_id) as k FROM raw_users FINAL WHERE has(active_days, toDate(first_activity)))] as max_users
    GROUP BY day,max_users
    ORDER BY day ASC
    который я так понимаю рассчитывает значение максимума не один раз, а на каждую строку, аналогично:
    SELECT arrayJoin(active_days) - toDate(first_activity) as day, 100*uniq(device_id)/(SELECT uniq(device_id) as k FROM raw_users FINAL WHERE has(active_days, toDate(first_activity))) as k
    FROM raw_users FINAL
    GROUP BY day
    ORDER BY day ASC
  • https://t.me/clickhouse_ru
    @smirnov_captain #213769 04:54 PM, 13 Apr 2021
    всем привет,
    вопрос про воронку и режим работы в случае strict и strict_order
    по тестам получается, что если встречается повторно промежуточный шаг, то подсчет воронки останавливается
    Например ищем воронку Start->Anketa->Finish

    Есть следующая последовательность
    Start->Anketa->Product->Start->Anketa->Finish вернет 2 (хотя воронка сформировалась в конце, и должно быть 3)
    при этом
    Start->Anketa->Product->Start->Finish вернет 3 ( убрал Anketa второй раз)

    Не понятна логика, почему и зачем такое поведение?
    gist:
    https://gist.github.com/cadet354/0566bfb8c0d16c68747dff7c147b794a
    windowFunnel mode='strict'

    windowFunnel mode='strict'. GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    разве? каким образом? Это обычный MergeTree
  • https://t.me/clickhouse_ru
    Выдает ошибку
  • https://t.me/clickhouse_ru
    @nshumshurova #213776 05:25 PM, 13 Apr 2021
    Для импорта из файла
  • https://t.me/clickhouse_ru
    секретную?
  • https://t.me/clickhouse_ru
    Завтра скину уже
  • https://t.me/clickhouse_ru
    вы в курсе что вопрос должен содержать половину ответа?
    вы буквально спрашиваете про подземный стук.
  • https://t.me/clickhouse_ru
    @nshumshurova #213780 05:26 PM, 13 Apr 2021
    Я просто не у компа🙈
  • очередь с такими ошибками
    last_exception:
    Code: 49, e.displayText() = DB::Exception: Incomplete granules are not allowed while blocks are granules size. Mark number 3 (rows 8192), rows written in last mark 0, rows to write in last mark from block 1 (from row 8192), total marks currently 4 (version 21.2.6.1 (official build))

    postpone_reason:
    Not executing log entry queue-0000071148 of type MERGE_PARTS for part 632801e1b685803d8904b35e30441476_1143_1525_261 because source parts size (4.29 MiB) is greater than the current maximum (1.00 MiB).
  • https://t.me/clickhouse_ru
    движок у таблицы?
  • collapsingMT
  • https://t.me/clickhouse_ru
    так апгейдится в 21.2.9.41 ?
  • ок, будем поднимать
    а можно как-то временно это подлечить?
  • https://t.me/clickhouse_ru
    alter table detach part ?
  • я так понимаю если выключить КХ, поднять версию, запустить, я парт не потеряю?
  • https://t.me/clickhouse_ru
    я не знаю , там два бага.
  • https://t.me/clickhouse_ru
    @den_crane #213791 05:47 PM, 13 Apr 2021
    21.2 DB::Exception: Incomplete granules are not allowed while blocks are granules size · Issue #20259 · ClickHouse/ClickHouse

    I ran an optimize on 21.2, and the merge kept failing. 2021.02.09 14:38:06.519295 [ 14569 ] {} <Trace> db.table: Executing log entry to merge parts all_0_91343_4396, all_91344_91581_5...

  • ну вот этот у меня и есть
    даже если сделать detach, поднять версию, потом attach не факт что парт сохранится?
  • https://t.me/clickhouse_ru
    @Mikhastos #213793 07:32 PM, 13 Apr 2021
    Подскажите, а авторизация на сервере через Active directory возможна?
  • https://t.me/clickhouse_ru
    Можно через LDAP
  • https://t.me/clickhouse_ru
    @nyoroon #213795 07:34 PM, 13 Apr 2021
    LDAP | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @regorov #213798 07:59 PM, 13 Apr 2021
    Добрый день!
    подскажите плз. Я понимаю, что у КХ нет возможности update,и для этого придуманы коллапсирующие движки типа VersionedCollapsingMergeTree
    А как быть, если надо предыдущую версию записи сохранить для аудита (в другой таблице). Update бывают редко, для отчетов всегда нужна последяя версия, но предыдущие версии нужны просто для посмотреть в UI. В идеале в другую таблицу их сохранять.

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

    Кто как выкручивается?
  • https://t.me/clickhouse_ru
    Две таблицы, одна для последнего состояния, вторая для истории с обычным движком mergeTree соединены через Materialized VIEW
  • https://t.me/clickhouse_ru
    @uranium_235 #213800 08:03 PM, 13 Apr 2021
    Вечер добрый. А как сделать, чтобы кликхаус возвращал строку так же как ее отображает?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @uranium_235 #213802 08:03 PM, 13 Apr 2021
    Чтобы он не подставлял вместо одного слеша еще один и тд
  • https://t.me/clickhouse_ru
    @uranium_235 #213803 08:04 PM, 13 Apr 2021
    При записи там был один слеш
  • https://t.me/clickhouse_ru
    Спасибо. Перевариваю. А первая получается типа VersionedCollapsingMergeTree? и вставляем сразу в две таблицы? Что то пока не могу ухватить идею.
  • https://t.me/clickhouse_ru
    А каким образом вы получаете данные то из кх?
    В некоторых форматах приходится эскейпить данные вот и появляется второй слеш
  • https://t.me/clickhouse_ru
    Питоновским clickhouse_driver
  • https://t.me/clickhouse_ru
    CollapsingMergeTree нужен в 90% случаев для задачи подсчета sum и count агрегатов, только для этого есть толк в строках и антистроках.
    Для остальных видов запросов есть ReplacingMergeTree
  • https://t.me/clickhouse_ru
    Покажите всю строку из белого скриншота
  • https://t.me/clickhouse_ru
    >вставляем сразу в две таблицы
    для этого есть MATERALIZED VIEW, они работают аналогично insert trigger в других базах
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    это осознал. Спасибо. Там действительно нет задачи подсчета агрегатов, надо просто перезаписать значение.
  • https://t.me/clickhouse_ru
    Правильно ли я понимаю, что можно сдвинуть по такой схеме, и этого будет достаточно?

    Шард 1 Шард 2 Шард 3
    Реплика 1-1 Реплика 2-1 Реплика 3-1
    Реплика 2-2 Реплика 3-2 Реплика 1-2

    При условии, что первое число в идентификаторе реплики — номер шарда на отдельном сервере…
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    GDB online Debugger | Code, Compile, Run, Debug online C, C++

    Online GDB is online ide with compiler and debugger for C/C++. Code, Compiler, Run, Debug Share code nippets.

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ага, я по Oracle знаю, что такое MView, думаю в КХ аналогично.
    Но если я использую ReplaceMergeTree то как я узнаю, что уже такой ключ там есть?
    или делаем так
    1. делаем insert очередной пачки записей в таблицу "A" (MergeTree)
    2. из таблицы с конечными значеними "B" (ReplaceMergeTree) переписываем в таблицу "V" записи которые есть в таблице "A". то есть что то типа insert into V select from A if exists in B
    3. переношу все записи из A в B (и все что нужно зареплейсится).
  • https://t.me/clickhouse_ru
    Не совсем, в кх MV работают как insert trigger, те нет возможности пересчитывать их по расписанию и тд.

    > Но если я использую ReplacingMergeTree то как я узнаю, что уже такой ключ там есть?

    Никак, просто пихаете все записи в ReplacingMergeTree, таким образом что бы при схлопывании всех записей по ORDER BY у вас оставалась только одна нужная.
    Потом пишете запросы к ReplacingMergeTree определенным образом(схлопывая все записи в последнее состояние)
  • https://t.me/clickhouse_ru
    @OrNixx #213818 08:28 PM, 13 Apr 2021
    вечера. с 20 на 21 были какие-то радикальные изменения? приложение начало отдавать 400 bad request, пришлось откатывать на последнюю 20.х
  • https://t.me/clickhouse_ru
    Спасибо. А это точно питон добавляет escape символы, а не в базе оно хранится с ними?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    С '\' ничего не находит, хотя там полно таких строк
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    покурить это надо. Не ухватываю мысль. Попробую вот так:
    была запись X версии1 в ReplacingMergeTree
    Я вставляю X версии2 в ReplacingMergeTree.
    Хочу, что бы в таблице осталась X версии2 но Xверсии1 а) не пропала без следа б) не мешалась.
  • https://t.me/clickhouse_ru
    Были и достаточно

    https://docs.altinity.com/altinitystablerelease/releasenotes/releases/21.1/211/
    ClickHouse Altinity Stable Release™ 21.1

    Details of the Altinity Stable Release 21.1

  • https://t.me/clickhouse_ru
    @OrNixx #213825 08:34 PM, 13 Apr 2021
    мда, раньше везло. безрассудно обновлялся вслепую
  • https://t.me/clickhouse_ru
    @OrNixx #213826 08:34 PM, 13 Apr 2021
    выводы сделаны, спасибо)
  • https://t.me/clickhouse_ru
    Нужно две таблицы,
    MergeTree которая будет хранить всю историю
    ReplacingMergeTree которая будет схлопывать дубликаты во время мержей.
    Но это же означает, что в произвольный момент времени дубликаты будут находится в таблице и вам нужно будет писать запросы специальным образом, что бы они вам не мешали
  • https://t.me/clickhouse_ru
    Строго говоря питон тоже ничего не добавляет, это print так печатает массивы
  • https://t.me/clickhouse_ru
    Редактор ругается что \ в строке не экранирован
  • https://t.me/clickhouse_ru
    Либо clickhouse_driver добавил при заливке
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @resuba #213833 09:21 PM, 13 Apr 2021
    А куда писать optimize_throw_if_noop , в корень конфига?

    Нашёл, users->profiles
  • https://t.me/clickhouse_ru
    @95289798 #213834 09:31 PM, 13 Apr 2021
    Здравсвтуйте. Как правильно применить any() на Nested структуру (ключ - значение ) чтобы не исказить данные при группировке ?
  • https://t.me/clickhouse_ru
    Это применяется для эскейпинга %(x)s параметров. Вы скорее всего составляли через INSERT INTO ... VALUES без inline данных в самом теле запроса, а через второй параметр в execute? В этом случае никакого эскейпинга нет.
  • https://t.me/clickhouse_ru
    Да
    conn = Client(**clickhouse_params)
    q = f'INSERT INTO {db}.{table} ({cols}) VALUES'
    conn.execute(q, dataframe.to_dict('records'))
    conn.disconnect()
  • https://t.me/clickhouse_ru
    @uranium_235 #213837 09:44 PM, 13 Apr 2021
    Я уже, кажись, понял в чём дело - оно только питоном отображается с эскейпингом, а в базе оно без эскейпинга лежит
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    возьмется из одной строки , если нет Null. Или используйте any( tuple(col1, col2) )
  • https://t.me/clickhouse_ru
    @bralbral #213840 10:25 PM, 13 Apr 2021
    Добрый вечер. Имеется словарь, ключами которого является network (iptrie,если не ошибаюсь). Имеется таблица в которой order by ip в uint32. Запросом нужно выбрать те строки, где значения словаря не Null. Каким образом сделать это оптимально? На данный момент, в предикате явно поместил: dictgetstring(name, value, tuple(ip)) != '' . Будет ли выполнятся быстрее запрос, если обращение будет не к словарю, а ip in (список_значений_ключей-словаря)?
  • https://t.me/clickhouse_ru
    in чаще всего быстрее. Хотя если из таблцы надо выбрать почти все строки, потому что они все непустые, то может быть без разницы.
  • 14 April 2021 (134 messages)
  • https://t.me/clickhouse_ru
    Благодарю.
  • https://t.me/clickhouse_ru
    там недавно strict_increase подвезли
    https://github.com/ClickHouse/ClickHouse/commit/38a6dba3e3f83ebbea83903791dfc553a73923d4

    может это поможет?
    можно авторов поспрашивать на github
    создаем issue и через @nick_name тегаем всех кто тут отмечен
    https://github.com/ClickHouse/ClickHouse/blame/9f5cd35a6963cc556a51218b46b0754dcac7306a/tests/queries/0_stateless/00632_aggregation_window_funnel.sql
    Add option strict_increase to windowFunnel · ClickHouse/ClickHouse@38a6dba

    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
    @dotsid #213845 05:55 AM, 14 Apr 2021
    Доброго времени суток. Подскажите пожалуйста есть ли какой-то способ сделать так чтобы по максимуму
    вычислений происходило распределенно? Поясню на примере. Считаем среднее вот таким вот запросом:

    SELECT
    cityHash(sessionId) % 2 as isUnderSplit,
    avg(metric)
    FROM (
    SELECT
    sessionId,
    sum(value) as metric
    FROM events
    GROUP BY sessionId
    ) GROUP BY isUnderSplit

    Таблица events распределенная (по `sessionId`). Судя по времени выполнения запроса и по системным метрикам (конкретно `sar -n DEV 1`)
    я полагаю что внутренний SELECT выполняется распределенно и результаты его выполнения
    (все еще достаточно объемные, – сессий много) отправляются на сервер иницрующий запрос. И только там уже
    выполняется финальная группировка по isUnderSplit. Существует ли способ как-то сделать так чтобы предварительная
    группировка по isUnderSplit выполнялась на шардах?
  • https://t.me/clickhouse_ru
    @my_flawed #213846 06:25 AM, 14 Apr 2021
    Всех приветствую. Может кто то встречался с такой проблемой:
    2021.04.13 19:25:35.413292 [ 73460 ] {c6ce589c-7bc1-4615-a32f-dbf32f938534} <Debug> executeQuery: (from 127.0.0.1:54414) CREATE TABLE default.test1 ON CLUSTER cluster (`load_id` UUID, `msisdn` UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test1', '{replica}') PARTITION BY load_id ORDER BY msisdn
    2021.04.13 19:25:35.413332 [ 73460 ] {c6ce589c-7bc1-4615-a32f-dbf32f938534} <Trace> ContextAccess (default): Access granted: CREATE TABLE ON default.test1
    2021.04.13 19:25:35.414906 [ 73329 ] {182b8688-40de-4717-be30-a6c59305011b} <Debug> DDLWorker: Processing tasks
    2021.04.13 19:25:35.414911 [ 73364 ] {} <Debug> DDLWorker: Cleaning queue
    2021.04.13 19:25:35.415706 [ 73460 ] {c6ce589c-7bc1-4615-a32f-dbf32f938534} <Debug> executeQuery: Query pipeline:
    DDLQueryStatusInputStream

    2021.04.13 19:25:35.416160 [ 73329 ] {182b8688-40de-4717-be30-a6c59305011b} <Debug> DDLWorker: Processing task query-0000266153 (CREATE TABLE default.test1 ON CLUSTER cluster (`load_id` UUID, `msisdn` UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test1', '{replica}') PARTITION BY load_id ORDER BY msisdn)
    2021.04.13 19:25:35.416631 [ 73329 ] {182b8688-40de-4717-be30-a6c59305011b} <Debug> DDLWorker: Executing query: CREATE TABLE default.test1 (`load_id` UUID, `msisdn` UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test1', '{replica}') PARTITION BY load_id ORDER BY msisdn
    2021.04.13 19:25:35.416755 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> executeQuery: (from 0.0.0.0:0, user: ) /* ddl_entry=query-0000266153 */ CREATE TABLE default.test1 (`load_id` UUID, `msisdn` UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test1', '{replica}') PARTITION BY load_id ORDER BY msisdn
    2021.04.13 19:25:35.417175 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> default.test1: Loading data parts
    2021.04.13 19:25:35.417243 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> default.test1: Loaded data parts (0 items)
    2021.04.13 19:25:35.418345 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> default.test1: Creating table /clickhouse/tables/1/test1
    2021.04.13 19:25:35.419942 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Warning> default.test1: It looks like the table /clickhouse/tables/1/test1 was created by another server at the same moment, will retry
    2021.04.13 19:25:35.420242 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> default.test1: This table /clickhouse/tables/1/test1 is already created, will add new replica
    2021.04.13 19:25:35.420815 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> default.test1: Creating replica /clickhouse/tables/1/test1/replicas/3
    2021.04.13 19:25:35.425111 [ 73283 ] {} <Debug> default.test1 (ReplicatedMergeTreeRestartingThread): Activating replica.
    2021.04.13 19:25:35.427295 [ 73283 ] {} <Information> default.test1: Not cloning {}, it's lost
    2021.04.13 19:25:35.427305 [ 73283 ] {} <Information> default.test1: Replica 5 has log pointer '0', approximate 1 queue lag and 0 queue size
    2021.04.13 19:25:35.427309 [ 73283 ] {} <Information> default.test1: Will mimic 5
    2021.04.13 19:25:35.428380 [ 73283 ] {} <Debug> default.test1: Queued 0 parts to be fetched
    2021.04.13 19:25:35.428387 [ 73283 ] {} <Debug> default.test1: Copied 0 queue entries
    2021.04.13 19:25:35.428664 [ 73283 ] {} <Debug> default.test1 (ReplicatedMergeTreeQueue): Loading queue from /clickhouse/tables/1/test1/replicas/3/queue
    2021.04.13 19:25:35.428894 [ 73283 ] {} <Debug> default.test1 (ReplicatedMergeTreeQueue): Having 0 queue entries to load, 0 entries already loaded.
    2021.04.13 19:25:35.429005 [ 73283 ] {} <Trace> default.test1 (ReplicatedMergeTreeQueue): Loaded queue
    2021.04.13 19:25:35.430175 [ 73280 ] {} <Information> default.test1: Became leader
  • https://t.me/clickhouse_ru
    @my_flawed #213847 06:25 AM, 14 Apr 2021

    2021.04.13 19:25:35.430558 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> DDLWorker: Executed query: CREATE TABLE default.test1 (`load_id` UUID, `msisdn` UInt64) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test1', '{replica}') PARTITION BY load_id ORDER BY msisdn
    2021.04.13 19:25:35.430914 [ 73329 ] {d9ddb05c-676f-41cd-b1ed-36d061da33de} <Debug> DDLWorker: Waiting a watch
    2021.04.13 19:25:35.431093 [ 73288 ] {} <Trace> StorageKafka (hosts_queue): Stalled
    2021.04.13 19:25:35.516890 [ 73460 ] {c6ce589c-7bc1-4615-a32f-dbf32f938534} <Information> executeQuery: Read 3 rows, 165.00 B in 0.103576356 sec., 28 rows/sec., 1.56 KiB/sec.
    2021.04.13 19:25:35.516954 [ 73460 ] {c6ce589c-7bc1-4615-a32f-dbf32f938534} <Information> DynamicQueryHandler: Done processing query

    Кластер состоит из 3 нод (реплика 3,4,5), новый и практически пустой. Не считая нескольких таблиц, что мы перезалили из старого кластера с 2 нодами, соединив\разъединив кластер ZK и КХ. В зукипер улетели некоторые метаданные из старого кластера, но были почищены в /clickhouse/tables/{shard}/
  • https://t.me/clickhouse_ru
    да, спасибо, так и сделаю. Я думал я что-то не понимаю и это желаемое поведение (по мне похоже на баг)
  • https://t.me/clickhouse_ru
    @RT_1_98 #213854 08:26 AM, 14 Apr 2021
    Подскажите как правильнее будет для обработки множества инсертов небольшими блоками:
    1. NullTable - MV - Buffer - DestTable
    2. Buffer - NullTable - MV - DestTable
  • https://t.me/clickhouse_ru
    Я создал кластер по такой схеме, но теперь у меня рассинхрон в количестве данных при заливке их из старой базы в новую 🤷🤦
  • https://t.me/clickhouse_ru
    Можно по очереди рестартовать если ничего криминального в чейнжлоге нет
  • https://t.me/clickhouse_ru
    @nyoroon #213858 09:01 AM, 14 Apr 2021
    В любом случае лучше сначала проверять на тестинге
  • https://t.me/clickhouse_ru
    Много это сколько и насколько маленькие?
  • у нас 21.2.6.1(есть критичный для нас баг), хотим 21.2.9.41
    тут понимаю без особых проблем. он же подсосет данные?
  • https://t.me/clickhouse_ru
    Минорные апдейты обычно безопасные
  • @Ghostnsk #213862 09:15 AM, 14 Apr 2021
    но никто точно не скажет )
  • https://t.me/clickhouse_ru
    От 1 до 1000 строк в инсерте, до 100000 строк в минуту примерно
  • https://t.me/clickhouse_ru
    Попробуй для начала compact парты и in-memory парты
  • https://t.me/clickhouse_ru
    @RT_1_98 #213865 09:30 AM, 14 Apr 2021
    MV на инсерт будет несколько чтобы раскладывать в разные таблицы
  • https://t.me/clickhouse_ru
    Спасибо, понял.
  • https://t.me/clickhouse_ru
    ALTER TABLE graphite.data FETCH PARTITION 202101 FROM '/home/nshumshurova/data/'

    ALTER TABLE graphite.data
    FETCH PARTITION 202101 FROM '/home/nshumshurova/data/'

    Received exception from server (version 20.1.2):
    Code: 48. DB::Exception: Received from 127.0.0.1:9000. DB::Exception: Partition operations are not supported by storage GraphiteMergeTree.
  • https://t.me/clickhouse_ru
    @nshumshurova #213869 10:18 AM, 14 Apr 2021
    PARTITION | Документация ClickHouse

    Манипуляции с партициями и кусками Для работы с партициями доступны следующие операции: DETACH PARTITION — перенести пар

  • https://t.me/clickhouse_ru
    @nshumshurova #213870 10:19 AM, 14 Apr 2021
    ALTER TABLE users FETCH PARTITION 201902 FROM '/clickhouse/tables/01-01/visits';
  • https://t.me/clickhouse_ru
    @nshumshurova #213871 10:19 AM, 14 Apr 2021
    поисковик по ошибке вообще молчит
  • https://t.me/clickhouse_ru
    @nshumshurova #213872 10:25 AM, 14 Apr 2021
    мне тут сказали что движок должен быть ReplicatedGraphiteMergeTree.
  • https://t.me/clickhouse_ru
    @nshumshurova #213873 10:25 AM, 14 Apr 2021
    чтобы это работало
  • https://t.me/clickhouse_ru
    @nshumshurova #213874 10:26 AM, 14 Apr 2021
    сменить движок не дропая данные возможно?
  • https://t.me/clickhouse_ru
    @vetinary #213875 10:32 AM, 14 Apr 2021
    @den_crane вы мне недавно очень помогли с нахождением причины разного количества записей в таблицах при переносе данных в КХ-кластер из отдельного сервера КХ. Тогда проблема оказалась в том, что некорректно был настроен ЗК (каждая нода работала независимо, а не как часть ансамбля).

    После перенастройки ЗК, всё стало работать корректно, но вчера я поменял расположение реплик в кластере, сдвинув, по вашему совету, вторую реплику в кластере, чтобы выход из строя одного сервера не приводил к полной потере данных. Теперь же при вставке данных в Distributed таблицы я снова получаю разное количество записей (в каких-то случаях больше, в каких-то меньше), чем в исходных таблицах. И не представляю, как это исправить, и почему так происходит
  • https://t.me/clickhouse_ru
    @alex_nemch #213877 10:45 AM, 14 Apr 2021
    Привет, подскажите пожалуйста в sequenceMatch можно как-то указать что события быть не должно?
    Например ('(?1)(? NOT 2)(?3)')
  • https://t.me/clickhouse_ru
    @a1s_333444 #213878 11:07 AM, 14 Apr 2021
    Всем привет, подскажите. Раз в три дня размер detached становится неприлично большим
    79G .../my_db_2/table_2_sharded/detached - тут 14 сломанных партов
    6.9G .../my_db_1/table_1_sharded/detached

    88G .../my_db_2/table_2_sharded/detached
    2.0G .../my_db_1/table_1_sharded/detached

    67G .../my_db_2/table_2_sharded/detached - тут 15 сломанных партов
    980M .../my_db_1/table_1_sharded/detached

    Обычно это broken_* парты. Если какая нибудь опция, чтобы detached директория очищалась автоматически ?
    Наверное самый главный вопрос - какая причина всего этого хозяйства?

    З.Ы. Поможет ли переезд на новую версию КХ 20.10? Сейчас 19.17 стоит
    З.Ы.Ы. Стоит ли добавлять опцию монтирования nodiratime, а то в документации говорится только про noatime?
  • https://t.me/clickhouse_ru
    я бы предпочёл второй вариант, потому что:
    1. вставка в NullTable сразу тригерит MV, который складывает кучу мелких кусков в буфер, которые неагрегированные записываются на диск, а потом уже мёржатся в фоне (и потом наблюдаем "пилы" на графиках дисковой подсистемы). (вроде есть отдельная настройка, чтобы также мёржилось при запись в AggregatingMergeTree)
    2. в буфере накапливается куча негрегированных данных, а потом всё агрегируется с помощью MV и записывается на диск уже смёрженное
  • https://t.me/clickhouse_ru
    у меня конечные таблицы будут MergeTree и ReplacingMergeTree.
    И ещё первый вариант удобнее т.к. параллельно идут селекты в которых нужна максимально актуальная информация - я их буду делать из буферов
    Просто интересует насколько правильно так делать по идеологии КХ
  • https://t.me/clickhouse_ru
    Данные распределены после вставки как-то неравномерно

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: fb54d262-2c8e-49f2-b7a3-f24d7f896f8d

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-01-02 │ 350602 │
    │ cluster-node-03-02 │ 1098298 │
    │ cluster-node-02-02 │ 725096 │
    └────────────────────┴─────────┘

    SELECT
    FQDN() AS h,
    COUNT()
    FROM data_values
    GROUP BY h

    Query id: 8822369e-c91e-4eb5-b148-39dacd75df30

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-02-01 │ 725096 │
    │ cluster-node-01-02 │ 350602 │
    │ cluster-node-02-02 │ 725096 │
    └────────────────────┴─────────┘

    Структура кластера выглядит вот так. После сдвига реплик получается, что реплика с номером 02 кладётся на другой физический сервер

    SELECT *
    FROM system.clusters

    Query id: 7641fa3a-c24a-4f54-8909-ee4c0248b4b2

    ┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──────────┬─host_address─┬─port─┬─is_local─┬─user─┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
    │ cluster │ 1 │ 1 │ 1 │ cluster-node-01-01 │ 10.42.8.54 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 1 │ 1 │ 2 │ cluster-node-02-02 │ 10.42.76.59 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 2 │ 1 │ 1 │ cluster-node-02-01 │ 10.42.159.71 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 2 │ 1 │ 2 │ cluster-node-03-02 │ 10.42.26.86 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 3 │ 1 │ 1 │ cluster-node-03-01 │ 10.42.242.57 │ 9000 │ 0 │ user │ │ 0 │ 0 │
    │ cluster │ 3 │ 1 │ 2 │ cluster-node-01-02 │ 10.42.211.44 │ 9000 │ 1 │ user │ │ 0 │ 0 │
    └─────────┴───────────┴──────────────┴─────────────┴────────────────────┴──────────────┴──────┴──────────┴──────┴──────────────────┴──────────────┴─────────────────────────┘

    6 rows in set. Elapsed: 0.004 sec.

    В конфиге это всё описано вот так:

    <remote_servers>
    <cluster>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>cluster-node-01-01</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>cluster-node-02-02</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>cluster-node-02-01</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>cluster-node-03-02</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>cluster-node-03-01</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>cluster-node-01-02</host>
    <port>9000</port>
    </replica>
    </shard>
    </cluster>
    </remote_servers>

    Собственно, если не делать сдвиг вторых реплик, всё работает правильно. После сдвига данные как-то неправильно складывааются. Подскажите, пожалуйста, в чём моя ошибка
  • https://t.me/clickhouse_ru
    @RT_1_98 #213882 11:19 AM, 14 Apr 2021
    А какие есть бэстпрактисы по хранению логов в КХ?
    Логи нужно хранить вечно в максимально компактном виде.
    Пока мысль парсить по строкам и класть в таблицу с сортировкой по тексту для эффективного сжатия.
    Может есть более эффективная методика?
  • https://t.me/clickhouse_ru
    Fast and Reliable Schema-Agnostic Log Analytics Platform

    At Uber, we provide a centralized, reliable, and interactive logging platform that empowers engineers to work quickly and confidently at scale. The logs are tag

  • https://t.me/clickhouse_ru
    Звучит логично. Только обратите внимание, что если используете ReplacingMergeTree для того чтобы была последняя актуальная строка, то обратите внимание, что когда у буферной таблицы num_layers больше 1, то порядок вставки может отличаться.
  • https://t.me/clickhouse_ru
    cluster │ 1 │ 1 │ 2 │ cluster-node-02-02

    Выглядит как ошибка
  • https://t.me/clickhouse_ru
    добавьте колонку с датой. если хотите хранить системные логи линукса, то обратите внимание также на продукт loki от графаны
  • https://t.me/clickhouse_ru
    Но ведь так прописано в конфиге… Или я в конфиге напутал?
  • https://t.me/clickhouse_ru
    вам не нужно сдвигать реплики в remote_servers, там должно все быть как было и раньше
  • https://t.me/clickhouse_ru
    @unamedrus #213889 11:25 AM, 14 Apr 2021
    вам нужно было только переместить cluster-node-02-02 на другую железную ноду
  • https://t.me/clickhouse_ru
    @unamedrus #213890 11:26 AM, 14 Apr 2021
    А сейчас вышло, что вы переместили cluster-node-02-02 на первую ноду а потом ее определили еще как реплику первого шарда, те вернули все как было
  • https://t.me/clickhouse_ru
    Нашел в логе такое
    Checksum doesn't match: corrupted data. Reference: a2c5f01ac982b8682519ab5188222a60. Actual: 8ebbe07e0d88721de4501b38e0a6b417. Size of compressed block: 290931: Cannot read mark 780 at row 6389760 in file /mnt/data/ch-c01-s03-r02/clickhouse/data/my_db_2/table_2_sharded/20210403_115730_128505_61/hwid.mrk2
    Почему корраптится, чето с дисками не то?
  • https://t.me/clickhouse_ru
    Хм… Что-то у меня путаница какая-то в голове получается… Я ведь, по идее, просто в remote_servers указал, куда класть реплики. Что измениятся от того, если я верну вместо 02-02 в конфиге 01-02, просто этот 01-02 помещу на другой сервер? Сейчас ведь просто 02-02 лежит на другом сервере
  • https://t.me/clickhouse_ru
    Окей, 02-02 находится на каком железном сервер, на том же что и 01-01?
  • https://t.me/clickhouse_ru
    Нет… Первый индекс отвечает за сервер/шард… Соответственно 01-01 — первый сервер, 02-02 — второй
  • https://t.me/clickhouse_ru
    Те вы только изменили в remote_servers определение кластера?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    @unamedrus #213897 11:31 AM, 14 Apr 2021
    SELECT
    FQDN() AS h,
    COUNT()
    FROM clusterAllReplicas('cluster',db,data_values_local_table)
    GROUP BY h
  • https://t.me/clickhouse_ru
    @unamedrus #213898 11:33 AM, 14 Apr 2021
    data_values_local_table замените на название mergeTree таблицы
  • https://t.me/clickhouse_ru
    SELECT
    FQDN() AS h,
    COUNT()
    FROM clusterAllReplicas('cluster', database, data_values_shard)
    GROUP BY h

    Query id: a3c1658f-ac86-4ede-9404-7669cc74d253

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-02-01 │ 928359 │
    │ cluster-node-01-02 │ 1909998 │
    │ cluster-node-03-01 │ 2304041 │
    │ cluster-node-01-01 │ 1909998 │
    │ cluster-node-03-02 │ 2304041 │
    │ cluster-node-02-02 │ 928359 │
    └────────────────────┴─────────┘
  • https://t.me/clickhouse_ru
    Окей. в чем дело вы переместили в remote_servers, но не изменили в описании таблицы кому и чему она принадлежит

    │ cluster-node-02-01 │ 928359 │
    │ cluster-node-02-02 │ 928359 │
  • https://t.me/clickhouse_ru
    @unamedrus #213901 11:36 AM, 14 Apr 2021
    У вас так и осталось все
  • https://t.me/clickhouse_ru
    @unamedrus #213902 11:37 AM, 14 Apr 2021
    либо изменяйте макросы и пересоздавайте таблицы, либо переместите cluster-node-02-02 на первую железку и не трогайте макросы и remote_servers
  • https://t.me/clickhouse_ru
    @unamedrus #213903 11:37 AM, 14 Apr 2021
    второй вариант мне нравится больше тк, он более логичный с точки зрения названия названия нод
  • https://t.me/clickhouse_ru
    @unamedrus #213904 11:38 AM, 14 Apr 2021
    remote_servers влияет только на Distributed таблицу и запросы к ней, репликация не смотрит туда
  • 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
    Спасибо, буду изучать
  • @1334952170 #213910 11:47 AM, 14 Apr 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @nshumshurova #213912 12:15 PM, 14 Apr 2021
    ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/{shard}/graphite.data_lr', '{replica}', 'graphite_rollup')
    PARTITION BY toMonday(date)
    ORDER BY (metric, timestamp)
    SETTINGS index_granularity = 8192; откуда берется путь?
  • https://t.me/clickhouse_ru
    fetch качает парт с другого КХ, этот путь '/clickhouse/tables/01-01/visits' это не путь на диске, это имя КЛЮЧА в зукипере (зукипер это база ключ-значение)
  • https://t.me/clickhouse_ru
    @nshumshurova #213914 12:25 PM, 14 Apr 2021
    ок
  • https://t.me/clickhouse_ru
    т.е. зачем вам нужен FETCH PARTITION ?
    что вы пытаетесь сделать?
    загрузить данные в КХ таким образом нельзя.
  • https://t.me/clickhouse_ru
    а как можно загрузить данные?
  • https://t.me/clickhouse_ru
    Данные ваши в каком формате? TSV / CSV / JSON ?
  • https://t.me/clickhouse_ru
    @nshumshurova #213918 12:27 PM, 14 Apr 2021
    в формате кликхауса
  • https://t.me/clickhouse_ru
    @nshumshurova #213919 12:27 PM, 14 Apr 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
    @nshumshurova #213924 12:31 PM, 14 Apr 2021
    старые данные надо перевести на другой движок, потом создать кластер
  • https://t.me/clickhouse_ru
    @nshumshurova #213925 12:32 PM, 14 Apr 2021
    старые двнные критичны
  • https://t.me/clickhouse_ru
    другой совсем другой? какой исходный, какой другой?
  • https://t.me/clickhouse_ru
    graphiteMergeTree без репликации
  • https://t.me/clickhouse_ru
    @nshumshurova #213929 12:34 PM, 14 Apr 2021
    точнее они пока все без репликации
  • https://t.me/clickhouse_ru
    >старые данные надо перевести на другой движок
    какой движок у старых данных, какой будет у новых?
  • https://t.me/clickhouse_ru
    @nshumshurova #213931 12:35 PM, 14 Apr 2021
    ок переформулирую движки у старых и новых данных пока одинаковые, новые сервера хочу перевести на ReplicatedGraphiteMergeTree
  • https://t.me/clickhouse_ru
    @nshumshurova #213932 12:35 PM, 14 Apr 2021
    хотя может есть метод импорта данных без посмтроения репликации вообще?
  • https://t.me/clickhouse_ru
    Поменял размещение нод, вернул remote_servers в первоначальный вид, всё стало как нужно:

    SELECT
    FQDN() AS h,
    COUNT()
    FROM clusterAllReplicas('cluster', database, data_values_shard)
    GROUP BY h

    Query id: 966927e6-f563-45f2-aa57-1007fb40c04f

    ┌─h──────────────────┬─count()─┐
    │ cluster-node-02-01 │ 1715076 │
    │ cluster-node-01-02 │ 1712703 │
    │ cluster-node-03-01 │ 1714619 │
    │ cluster-node-01-01 │ 1712703 │
    │ cluster-node-03-02 │ 1714619 │
    │ cluster-node-02-02 │ 1715076 │
    └────────────────────┴─────────┘

    Спасибо огромное за помощь
  • @drednout86 #213936 02:17 PM, 14 Apr 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #213937 b o t 02:17 PM, 14 Apr 2021
    Total messages: 213936
  • @1636986114 #213938 02:41 PM, 14 Apr 2021
    Привет, знаете почему clickhouse не находит нового user-а? Я сделал новый файл root.xml в users.d и потом питаюсь запустить clickhouse-client --user root и потом есть ерор Unknown user
  • https://t.me/clickhouse_ru
    @vorobyev_evgeny #213939 02:42 PM, 14 Apr 2021
    Добрый день! Есть ли какой-то способ принудительно пересчитать все данные в материализованном представлении? У меня данные в таблицу попадают через переключение секций, так что этот "триггер" не срабатывает.
  • У меня версия - 19.17.4.11
  • https://t.me/clickhouse_ru
    DROP PARTITION & INSERT SELECT
  • @bobelev #213943 04:06 PM, 14 Apr 2021
    Привет. Есть ли возможность настроить топики кафки по префиксу? Задача — интеграция с несколькими кластерами кафки, в которых используются разные креды.
    Топиков много, а перезапускать каждый раз кластер накладно.
  • https://t.me/clickhouse_ru
    ну сделайте insert into your_new_table from remote()
  • https://t.me/clickhouse_ru
    @tg_amm #213945 06:24 PM, 14 Apr 2021
    Здравствуйте! Получаю сообщение об ошибке очень редко но бывает - Too many simultaneous queries for user ts_user1. Current: 450, maximum: 450. Что будет если увеличить этот параметр max_concurrent_queries скажем до 10000? Или как лучше решить эту проблему?
  • https://t.me/clickhouse_ru
    @Kubafashion #213946 06:46 PM, 14 Apr 2021
    Привет
    Подскажите как лучше сделать
    У меня в бд кликхаус поступает большое количество данных
    Заказчик в определенный момент может посмотреть график когда пришли определенные данные
    Скажите пожалуйста как это лучше организовать:
    На сервере циклом перебирать каждый месяц и отправлять счётчик на клиент?
    У меня сначала была идея при помощи планировщика автоматически в какой то период считать эти данные и сувать количество в отдельную таблицу , чтобы потом лишний раз не грузить бд, но я не уверен стоит ли это того?
    Спасибо
  • https://t.me/clickhouse_ru
    @smirnov_captain #213947 06:49 PM, 14 Apr 2021
    вопрос может не много не по теме чата, но задам :)
    яндекс предоставляет managed service for ClickHouse в своем облаке, кто-нибудь это пробовал, как впечатления, какие есть подводные камни?
  • https://t.me/clickhouse_ru
    я не настоящий сварщик но там был SummingMergeTree для автоматической агрегации
  • https://t.me/clickhouse_ru
    Нечего суммировать
    У меня счётчик только
  • https://t.me/clickhouse_ru
    @dbalashov #213950 06:53 PM, 14 Apr 2021
    а что ты тогда "перебираешь каждый месяц"
  • https://t.me/clickhouse_ru
    @Kubafashion #213951 06:53 PM, 14 Apr 2021
    Какие то данные
    И сколько этих данных в определенный месяц
  • https://t.me/clickhouse_ru
    @Kubafashion #213952 06:54 PM, 14 Apr 2021
    Перебирать это я уже сервер собрался
  • https://t.me/clickhouse_ru
    @dbalashov #213953 06:54 PM, 14 Apr 2021
    ну критерий отбора всегда постоянный или кажды йраз разный ?
  • https://t.me/clickhouse_ru
    @dbalashov #213954 06:54 PM, 14 Apr 2021
    а то там есть ещо и materialized views
  • https://t.me/clickhouse_ru
    @Kubafashion #213955 06:59 PM, 14 Apr 2021
    ну у меня таблица
    допустим, в ней 3 поля: дата, место, действие
    по определенному месту нужно составить график, например, по месяцам,т.е. сколько было любых действий в определенном месте в течение года: январь, февраль ... и т.д.
  • https://t.me/clickhouse_ru
    @dbalashov #213956 07:01 PM, 14 Apr 2021
    ну вот, делаешь view с group by по месяцам/месту/действю и count/min/max. есть предположение что в view будет записей на порядки меньше
  • https://t.me/clickhouse_ru
    @dbalashov #213957 07:01 PM, 14 Apr 2021
    хотя всё зависит от данных и их количества, может и не имеет смысла
  • https://t.me/clickhouse_ru
    @dbalashov #213958 07:01 PM, 14 Apr 2021
    и возможно я опять мыслю категориями традиционных реляционных СУБД
  • https://t.me/clickhouse_ru
    Пока кажется, что то что нужно, спасибо!
  • https://t.me/clickhouse_ru
    @bralbral #213961 07:41 PM, 14 Apr 2021
    Добрый вечер. Если подключить ldap, останется ли возможность подключаться через стандартного пользователя, (например user) ?
  • https://t.me/clickhouse_ru
    @bralbral #213962 07:44 PM, 14 Apr 2021
    И ещё один вопрос, правильно ли я понимаю, что хорошим тоном является не трогать config/user.xml , а менять непосредственно группу тегов, которая интересует, отдельным файлов в config.d/user.d директориях?
  • https://t.me/clickhouse_ru
    Тут вы вольны делать как вам удобнее. При наличии нескольких кластеров кх удобно шаблонизировать conig/users.
  • https://t.me/clickhouse_ru
    @1236463047 #213964 08:12 PM, 14 Apr 2021
    Народ как словари перегрузить? не найду никак команду
  • https://t.me/clickhouse_ru
    @1236463047 #213965 08:12 PM, 14 Apr 2021
    внешние
  • https://t.me/clickhouse_ru
    @hatedabamboo #213966 08:13 PM, 14 Apr 2021
    Reload dictionary?
  • https://t.me/clickhouse_ru
    @1236463047 #213967 08:14 PM, 14 Apr 2021
    да
  • https://t.me/clickhouse_ru
    @1236463047 #213968 08:14 PM, 14 Apr 2021
    это что команда?
  • @sesho96 #213969 08:14 PM, 14 Apr 2021
    system reload dictionaries
  • https://t.me/clickhouse_ru
    @hatedabamboo #213970 08:15 PM, 14 Apr 2021
    SYSTEM | Документация ClickHouse
    https://clickhouse.tech/docs/ru/sql-reference/statements/system/
    SYSTEM | Документация ClickHouse

    Запросы SYSTEM RELOAD EMBEDDED DICTIONARIES RELOAD DICTIONARIES RELOAD DICTIONARY RELOAD MODELS RELOAD MODEL DROP DNS CA

  • https://t.me/clickhouse_ru
    @1236463047 #213971 09:04 PM, 14 Apr 2021
    Братцы, есть 2 хауса, один на убунте, новый на центосе. Новый 21.4.3.21 - свежий. Пихаются данные по http зипованные. пара минут принимает потом
    Error in clickhouse db: clickhouse: std::exception. Code: 1001, type: std::length_error, e.what() = basic_string
  • https://t.me/clickhouse_ru
    @1236463047 #213972 09:04 PM, 14 Apr 2021
    и стоп приема
  • https://t.me/clickhouse_ru
    @1236463047 #213973 09:04 PM, 14 Apr 2021
    ничего там в новой версиин не вышло эдакого?
  • https://t.me/clickhouse_ru
    @1236463047 #213974 09:06 PM, 14 Apr 2021
    "старый" на убунте - 21.1.2.15
  • https://t.me/clickhouse_ru
    @1236463047 #213975 09:07 PM, 14 Apr 2021
    простая мержтри табл
  • https://t.me/clickhouse_ru
    @1236463047 #213976 09:08 PM, 14 Apr 2021
    в логе ошибка в (in query: INSERT INTO...
  • https://t.me/clickhouse_ru
    @1236463047 #213977 09:09 PM, 14 Apr 2021
    ? @ 0x88bd259 in /usr/bin/clickhouse
    1. ? @ 0x88bd220 in /usr/bin/clickhouse
    2. ? @ 0x1426931b in ?
    3. DB::throwAtAssertionFailed(char const*, DB::ReadBuffer&) @ 0x890c2a3 in /usr/bin/clickhouse
    4. DB::ValuesBlockInputFormat::readRow(std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn> > >&, unsigned long) @ 0x10202512 in /usr/bin/clickhouse
    5. DB::ValuesBlockInputFormat::generate() @ 0x1020178c in /usr/bin/clickhouse
    6. DB::ISource::tryGenerate() @ 0x100ad7d5 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @1236463047 #213978 09:21 PM, 14 Apr 2021
    так понятно, gzip походу поменялся - теперь несовместим с моей библ...
  • https://t.me/clickhouse_ru
    @1236463047 #213979 09:23 PM, 14 Apr 2021
    еперный театр... а это что еще:
    ERROR 403: Code: 516, e.displayText() = DB::Exception: Invalid authentication:
    it is not allowed to use Authorization HTTP header and authentication via param
    eters simultaneously (version 21.4.3.21 (official build))
  • https://t.me/clickhouse_ru
    @vmaxlog #213980 09:28 PM, 14 Apr 2021
    скижите пожалуйста что изменилось в 21.4.3.21 ?
    перестали рабоать инсерты через https://github.com/nikepan/clickhouse-bulk
    кидает 400 статус
    GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

    Collects many small inserts to ClickHouse and send in big inserts - GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

  • https://t.me/clickhouse_ru
    "Unexpected end of stream" with text formats without new line at the end · Issue #20244 · ClickHouse/ClickHouse

    Update by @alexey-milovidov: to fix the issue, set input_format_null_as_default to 0 as it was in older versions. Clickhouse reports this when external dictionary not ends with "\n&quo...

  • https://t.me/clickhouse_ru
    @unamedrus #213982 09:31 PM, 14 Apr 2021
    А вообще смотрите что за ошибка на стороне кх
  • https://t.me/clickhouse_ru
    в логи ничего не падает в табличке с запросами тоже пусто
  • https://t.me/clickhouse_ru
    @1236463047 #213984 09:37 PM, 14 Apr 2021
    а что стало с аутентификацией-то?
  • https://t.me/clickhouse_ru
    @1236463047 #213985 10:14 PM, 14 Apr 2021
    блин... а можно откатить апдейт?
  • https://t.me/clickhouse_ru
    до куда
  • https://t.me/clickhouse_ru
    @1236463047 #213987 10:21 PM, 14 Apr 2021
    до этой например 21.1.2.15
  • https://t.me/clickhouse_ru
    @1236463047 #213988 10:22 PM, 14 Apr 2021
    или может подскажете что стало с нттп аутент?
    ERROR 403: Code: 516, e.displayText() = DB::Exception: Invalid authentication:
    it is not allowed to use Authorization HTTP header and authentication via param
    eters simultaneously (version 21.4.3.21 (official build))
  • https://t.me/clickhouse_ru
    @1236463047 #213989 10:23 PM, 14 Apr 2021
    мож галочку в конфиге теперь надо включить?
  • https://t.me/clickhouse_ru
    @1236463047 #213990 10:42 PM, 14 Apr 2021
    охтыж... нашел... надо из хедеров унести в параметры...
  • 15 April 2021 (158 messages)
  • https://t.me/clickhouse_ru
    СПАМ!!!! @milovidov_an
  • https://t.me/clickhouse_ru
    @ivymike_b #213996 06:46 AM, 15 Apr 2021
    Всем привет. После обновления до 21.3.4.25 стали регулярно ловить исключения при вставке
    Code: 307, e.displayText() = DB::Exception: Chunk size is too large (version 21.3.4.25 (official build))

    стек:
    0. DB::HTTPChunkedReadBuffer::readChunkHeader() @ 0xf8dd26b in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    1. DB::HTTPChunkedReadBuffer::nextImpl() @ 0xf8dd57b in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    2. DB::wrapReadBufferReference(DB::ReadBuffer&)::ReadBufferWrapper::nextImpl() @ 0xe71befc in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    3. DB::ConcatReadBuffer::nextImpl() @ 0xe96a8f8 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    4. DB::ConcatReadBuffer::nextImpl() @ 0xe96a8f8 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    5. DB::loadAtPosition(DB::ReadBuffer&, DB::Memory<Allocator<false, false> >&, char*&) @ 0x866e848 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    6. DB::fileSegmentationEngineTabSeparatedImpl(DB::ReadBuffer&, DB::Memory<Allocator<false, false> >&, unsigned long) @ 0xfa44ebe in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    7. DB::ParallelParsingInputFormat::segmentatorThreadFunction(std::__1::shared_ptr<DB::ThreadGroupStatus>) @ 0xf9c64dc in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    8. ThreadFromGlobalPool::ThreadFromGlobalPool<void (DB::ParallelParsingInputFormat::*)(std::__1::shared_ptr<DB::ThreadGroupStatus>), DB::ParallelParsingInputFormat*, std::__1::shared_ptr<DB::ThreadGroupStatus> >(void (DB::ParallelParsingInputFormat::*&&)(std::__1::shared_ptr<DB::ThreadGroupStatus>), DB::ParallelParsingInputFormat*&&, std::__1::shared_ptr<DB::ThreadGroupStatus>&&)::'lambda'()::operator()() @ 0xf8eef78 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    9. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x865165f in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    10. void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void ThreadPoolImpl<std::__1::thread>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()> >(void*) @ 0x86550f3 in /usr/lib/debug/.build-id/23/ea76bdd7b9132c8fb55ec397db8bafbeb73c2b.debug
    11. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    12. __clone @ 0x121a3f in /lib/x86_64-linux-gnu/libc-2.27.so

    Знакомо кому-нибудь? Как будто что-то сломалось...
  • @IIdddII #213998 07:52 AM, 15 Apr 2021
    Добрый день!
    Пользователь при выполнении запроса получает "timeout for user default exceeded 12m0s".
    Кажется, посмотрели уже все параметра таймаутов на клиенте и в config.xml, но нигде не можем найти, откуда взялись 12 мин, с каким параметром они связаны.
    Сталкивался кто-нибудь с подобным?
  • https://t.me/clickhouse_ru
    @c0nr4d92 #214000 08:13 AM, 15 Apr 2021
    Всем доброго времени суток! Подскажите пожалуйста о чем говорят следующие логи?
    <Information> MergeTreePartsMover: Failed to swap 202104_902_902_0. Active part doesn't exist. Possible it was merged or mutated. Will remove copy on path '/opt/clickhouse_cold/data/logs/detached/202104_902_902_0/'.
    2021.04.15 11:10:59.984514 [ 29766 ] {} <Information> MergeTreePartsMover: Failed to swap 202104_95_855_732. Active part doesn't exist. Possible it was merged or mutated. Will remove copy on path '/opt/clickhouse_cold/data/logs/detached/202104_95_855_732/'.
    2021.04.15 11:11:05.306568 [ 29772 ] {} <Information> MergeTreePartsMover: Failed to swap 202104_898_898_0. Active part doesn't exist. Possible it was merged or mutated. Will remove copy on path '/opt/clickhouse_cold/data/logs/detached/202104_898_898_0/'.
  • https://t.me/clickhouse_ru
    @c0nr4d92 #214001 08:13 AM, 15 Apr 2021
    И в директории detached растет кол-во файлов
  • https://t.me/clickhouse_ru
    @Asword #214003 08:57 AM, 15 Apr 2021
    Всем привет! Подскажите, пожалуйста. Я при вставке файла в КХ получаю такую ошибку DB::Exception: Invalid IPv6 value. (version 19.11.4.24 (official build))

    Обычно, при возникновении ошибки всегда указывалась строчка, но не здесь. Есть способы как-то узнать, в какой строке ошибка?
  • @sergnafanya #214004 08:58 AM, 15 Apr 2021
    добрый день
    подскажите пожалуйсту в какую сторону копать
    Делаю MV вида:

    CREATE MATERIALIZED VIEW umportal.event_client_agg_mv ENGINE = AggregatingMergeTree()
    PARTITION BY toStartOfWeek(ep_dt, 1) ORDER BY (ep_uuid) POPULATE
    AS
    SELECT
    er.ep_uuid AS ep_uuid,
    ep_er.created_at AS ep_dt,
    ...
    ...
    FROM
    db.event_raw er
    LEFT ANY JOIN db.event_raw ep_er ON er.ep_uuid = ep_er.uuid
    WHERE
    er.event IN ('hit', 'rm')
    GROUP BY
    er.ep_uuid, ep_dt;

    Для первоначальных данных все проходит как задуманно, но при последующих инсертах все поля из «приджойненой» таблицы заполняются в MV пустыми данными
    Ощущение что запись которая должна была получена в джойне уже помеченна как агрегированная и не находится, при этом если делать этот селект отдельно, то все работает корректно
    Подскажите пожалуйста, можно ли обойти как-то это поведение?
    (version 21.4.3.21 (official build))
  • @inscaven #214005 09:23 AM, 15 Apr 2021
    подскажите, при использовании UPDATE/DELETE <...> WHERE filter_expr
    вот этот filter_expr нельзя чтоб был подзапросом? раньше было нельзя, может в новых версиях КХ стало можно?
  • https://t.me/clickhouse_ru
    @ogornostaev #214006 09:52 AM, 15 Apr 2021
    добрый день всем, есть вопрос насчет AggregatingMergeTree
    данные из таблицы того типа можно получить путем грппировки и доаггргирования через функции с Merge суффиксом

    но есть еще finalizeAggregation, которая не требует агргегации группировкой

    в чем разница?
  • https://t.me/clickhouse_ru
    @via_cheslav #214008 10:00 AM, 15 Apr 2021
    Привет!
    Делаю простейший join - у меня не выполняется запрос - вылетает с ошибкой по тайм-ауту :(

    https://prnt.sc/11ftq74

    Подскажите, что я делаю не так?
    Screenshot

    Captured with Lightshot

  • https://t.me/clickhouse_ru
    @via_cheslav #214009 10:16 AM, 15 Apr 2021
    Запрос с IN (аналогичный join на скриншоте выше) срабатывает моментально
    https://prnt.sc/11fuths

    Подскажите, что не так в join? Как мне его оптимизировать, чтобы он исполнялся?
    Нужен именно join
    Screenshot

    Captured with Lightshot

  • https://t.me/clickhouse_ru
    Что EXPLAIN говорит про запрос с join?
  • https://t.me/clickhouse_ru
    Для этого надо добавить EXPLAIN перед Select, верно?

    DataGrip не позволяет запустить эту команду :(

    Что посоветуете из IDE для реализации данной команды?
  • https://t.me/clickhouse_ru
    clickhouse-client
  • Консольный клиент clickhouse-client ну или табикс
  • @n1ght_f0x #214015 11:23 AM, 15 Apr 2021
    Хотя наверное только clickhouse-client. Табикс результат скорее всего не вернет
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #214008 #214016 11:42 AM, 15 Apr 2021
    Какой размер таблицы visits_all? engine = MergeTree ? Какой таймаут и может стоит попробовать увеличить его
  • @l_mamontov #214019 12:43 PM, 15 Apr 2021
    Коллеги, приветствую. Кто-то работал с clickhouse-copier?
  • @l_mamontov #214020 12:43 PM, 15 Apr 2021
    Указываю конфиг с таргет и дестинашион
  • @l_mamontov #214021 12:44 PM, 15 Apr 2021
    Он ругается на zookeeper
  • @l_mamontov #214022 12:45 PM, 15 Apr 2021
    virtual int DB::ClusterCopierApp::main(const std::vector<std::__cxx11::basic_string<char> >&): Code: 999, e.displayText() = Coordination::Exception: No addresses passed to ZooKeeper constructor. (Bad arguments), Stack trace:
  • @l_mamontov #214023 12:50 PM, 15 Apr 2021
    а сам файл сделал xml как тут https://clickhouse.tech/docs/ru/operations/utilities/clickhouse-copier/, конфигурация на копирование
    clickhouse-copier | Документация ClickHouse

    clickhouse-copier Копирует данные из таблиц одного кластера в таблицы другого (или этого же) кластера. Можно запустить н

  • https://t.me/clickhouse_ru
    @KaufmanEndy #214024 12:56 PM, 15 Apr 2021
    всем привет, какой тип указывать для индекса для Int8?
  • https://t.me/clickhouse_ru
    @KaufmanEndy #214025 01:00 PM, 15 Apr 2021
    а все, смог создать
    ALTER TABLE table ADD INDEX IDX_TABLE__FIELD (field) TYPE bloom_filter() granularity 4
  • https://t.me/clickhouse_ru
    @vetinary #214026 01:18 PM, 15 Apr 2021
    Итак, следующий вопрос про переезд с одного сервера КХ на кластер.

    В standalone таблицах используется движок CollapsingMergeTree, который необходим для периодического очищения таблиц от специфического мусора. И всё работало отлично в плане схлопывания, но сейчас перевели данные на ReplicatedCollapsingMergeTree, в которые, соответственно, происходит запись через Distributed. И выясняется, что часть данных «схлопнулась», а часть — осталась. И непонятно, «схлопнутся» ли оставшиеся, и если да, то когда, а если нет, то почему…

    Раньше был способ — выполнить OPTIMIZE при необходимости и радоваться жизни, но с Distributed это не работает 🤷
    И как теперь быть?
  • https://t.me/clickhouse_ru
    @Felixoid #214029 01:48 PM, 15 Apr 2021
    Подскажите, пожалуйста. Есть вот такая часть запроса для golang, которая принимает на вход параметры и подставляет в 1, 2, 3 и 4 соответственные from, until, step, function

    arrayFilter(x->isNotNull(x), %[4]sOrNullResample(%[1]d, %[2]d, %[3]d)(Value, Time))
    то есть, всё работает для простых аггрегирующих функций, таких как avg, max и так далее. Получается avgOrNullResample(%[1]d, %[2]d, %[3]d)

    Вопрос в том, каким образом можно скрестить сложные функции, например, quantile(95) + -OrNullResample(%[1]d, %[2]d, %[3]d)?

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

    при выборке SELECT FROM MaterializedMySql - если в WHERE есть AND, то возвращает ошибку DB::Exception: Not found column equals(target_job, 2) in block
  • возможно дело в том, как описаны типы колонок в AggregatingMergeTree
  • https://t.me/clickhouse_ru
    Я отказался от materializedMysql и mysql в целом, в пользу replicatedReplacedMergeTree
  • https://t.me/clickhouse_ru
    @innopolis #214035 01:56 PM, 15 Apr 2021
    materialized view норм работает на кластере?
  • недавно был похожий вопрос, что данные не схлопываются, оказалось, что проблема была в том, что ключ шардирования был указан random, следовательно одинаковые строки попадали на разные шарды, в связи с чем они друг друга не видели чтоб доагреироваться
  • https://t.me/clickhouse_ru
    Тут вроде 2 проблемы. Первая это что оптимайз теперь надо запускать на replicated таблицу (если прям очень сильно надо). Вторая проблема это если ключ order by не соответствует ключу шардирования и эту проблему только что объяснили выше)
  • https://t.me/clickhouse_ru
    А не подскажете, как тогда указать правильный ключ?
  • https://t.me/clickhouse_ru
    А вы собираетесь в будущем добавлять новые сервера/шарды?
  • ну правильный будет тот, который строки, которые в теории должны схлопнуться будет отправлять на один и тот же шард)
  • https://t.me/clickhouse_ru
    Distributed | ClickHouse Documentation

    Distributed Table Engine Tables with Distributed engine do not store any data by their own, but allow distributed query

  • https://t.me/clickhouse_ru
    Ну, это как пойдёт. В ближайшие пару лет, наверное, нет
  • разница в том, что Merge возьмёт состояния из разных строк и доугрегирует их до корректного ответа, а finalizeAggregation просто выполнит до конца функцию в каждой отдельной строке
    например есть данные:
    id val
    1 10
    1 10
    1 10
    2 20
    2 20
    то делая:
    select avgMerge(val_avg_state)
    from (select id, avgState(val) as val_avg_state from <table> group by id)
    мы получим ондо число — 14, а делая так:
    select id, finalizeAggregation(val_avg_state)
    from (select id, avgState(val) as val_avg_state from <table> group by id)
    мы просто получим ответ на вопрос "что же там оно посчитало бы, укажи мы во внутреннем запросе не avgState, а просто avg
  • https://t.me/clickhouse_ru
    мне бы хотелось все таки данные из мускла подтягивать)
  • проблему решил….не знаю - баг это или фича - в общем если подчиненные данные вынести в отдельную таблицу (структура 1 в 1) то джойн проходит нормально и данные подставляются, а вот если в запросе джойн сам на себя - подчиненная таблица не находит данные….подозреваю что они помеченны как уже агрегированные….
  • @sbvitok #214047 02:24 PM, 15 Apr 2021
    Всем привет!
    Подскажите пожалуйста как правильно сделать materialized view для запроса

    select app_name from logs.raw group by app_name

    Из доки честно говоря ничего не понял. Надо еще чтоб вьюха реплицировалась.
  • https://t.me/clickhouse_ru
    @ebukharev #214048 02:30 PM, 15 Apr 2021
    Добрый день, имею такую команду JSONExtractArrayRaw(dictGet('survey.departments', 'tree_ids', toUInt64(hId))) получаю ошибку Nested type Array(String) cannot be inside Nullable type (version 20.5.2.7 (official build)), как json вида [8981, 9830, 9831, 9873, 0, 0, 0, 0, 0] преобразовать в массив?
  • Создаете таблицу replicated, и пишете в нее через MV. Делайте через create mv to table as select …
  • https://t.me/clickhouse_ru
    @rostish #214050 02:39 PM, 15 Apr 2021
    Друзья, а как решить следующую задачу в CH.
    Имеется:
    несколько интервалов
    -таймстемп начала события
    -таймстем конца события
    -суммарная длительность
    Данные интервалы могут пересекаться, но нам нужно получить только уникальное время
    Пример
    с 1 по 10, длительность 9
    с 2 по 12, длительность 10
    суммарно с 1 по 12, длительность 11, а не 19
    Думал про lag(), но его нет, пытаюсь с помощью neighbor(), но интервалом может быть больше двух
  • если версия КХ не старая, то можно allow_experimental_window_functions = 1 и lag получится симитировать с помощью any и rows between 1 preceding and 1 preceding
  • @zheka_kolesnik #214052 02:42 PM, 15 Apr 2021
    но я не уверен, что это поможет в решении задачи 😬
  • https://t.me/clickhouse_ru
    @rostish #214053 02:43 PM, 15 Apr 2021
    20.3
  • не уверен, но, вроде, только в 21 добавили, я бы просто проверил)
  • https://t.me/clickhouse_ru
    @unamedrus #214055 02:44 PM, 15 Apr 2021
    21.3, и в 21.4 lead lag добавили
  • 👍🏻
  • @zheka_kolesnik #214058 02:49 PM, 15 Apr 2021
    по идее как решение вырисовывается что-то вроде:
    все данные в нужном разрезе сгруппировать в список тюплов, отсортировать, сдвинуть на 1, отметить те случаи, когда начало интервала больше конца предыдущего, потом arrayCumSum и зааннестить получившееся, получится что-то вроде доп колонки с указанием к какой группе какой интервал относится, останется только найти минимальное начало, максимальный конец и просуммировать длительности
  • @ctwist #214059 02:50 PM, 15 Apr 2021
    Всем привет, подскажите пожалуйста существует ли возможность смены двжика таблицы? Сейчас используется SummingMergeTree, но ввиду архитектурных изменений требуется перехать таблицей на CollapsingMergeTree. Ищу самый безболезненный вариант, поверхностное гугление и issues не помогли
  • https://t.me/clickhouse_ru
    SELECT
    min(start) AS min,
    max(end) AS max,
    groupArray((start, end)) AS ar,
    arraySum(x -> arrayExists(s -> ((x >= (s.1)) AND (x <= (s.2))), ar), range(min, max)) AS r
    FROM
    (
    SELECT
    1 AS start,
    10 AS end
    UNION ALL
    SELECT
    2 AS start,
    12 AS end
    )
  • https://t.me/clickhouse_ru
    @unamedrus #214061 02:53 PM, 15 Apr 2021
    Наверное можно сделать лучше
  • красиво)
  • https://t.me/clickhouse_ru
    @rostish #214063 03:16 PM, 15 Apr 2021
    Спасибо, попробую, надо проверить на большом количестве
  • https://t.me/clickhouse_ru
    А мы скоро начнем!
    Встречаемся в 19.00 по ссылке https://youtu.be/zstWImYenRc
    DevOps в DWH — трансляция митапа

    Митап о применении DevOps практик в DWH. В этой трансляции: Михаил Кожевников из Райффайзенбанка рассказал про хранилище, созданное в стеке технологий ODI, Java и Flyway, и поделится своим опытом декомпозитизации процессов, которая помогла прийти к модели TBD и сделать ее независимой. Альберт Айткулов из Тинькофф рассказал, как выглядел процесс применения изменений инфраструктуры у нашей команды раньше и как этот процесс стал выглядеть после переезда IaaC Clickhouse в Gitlab CI. Чат митапа со спикерами: https://t.me/joinchat/DBMdexGM1QhjMTli​ Дайджесты, статьи и анонсы митапов: https://t.me/itstinkoff Блог на Хабре: https://l.tinkoff.ru/habr-tinkoff Наши вакансии: https://l.tinkoff.ru/its-career Подписаться на канал IT's Tinkoff: https://www.youtube.com/c/ITsTinkoff 00:00 — Начало трансляции 02:57 — Приветствие 04:32 — Михаил Кожевников «Как мы дошли до TBD в хранилище» 40:49 — Альберт Айткулов «GitLab CI + Clickhouse = DevOps или сказ о том как мы в Gitlab переезжали» #DWH #devops #TBD #Clickhouse…

  • https://t.me/clickhouse_ru
    @403151304 #214066 03:46 PM, 15 Apr 2021
    Подскажите, пожалуйста, в чём может быть проблема?
    При попытке от юзера default выполнить:
    GRANT ALL ON *.* TO admin WITH GRANT OPTION
    Получаю:
    Code: 495. DB::Exception: Received from localhost:9000. DB::Exception: Cannot update user admin in users.xml because this storage is readonly: Couldn't update user admin. Successfully updated: none.

    В роли юзера admin readonly не установлен
  • https://t.me/clickhouse_ru
    как же всё таки склеить quantile(95) + -Resample(start, stop, step)?

    upd: https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/#agg-functions-combinator-resample
    я буду смотреть, не обновилась ли документация
    я буду смотреть, не обновилась ли документация
    я буду смотреть, не обновилась ли документация
    Combinators | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    spam ?
  • https://t.me/clickhouse_ru
    Новая таблица и insert from select
  • @ctwist ↶ Reply to #214070 #214071 04:30 PM, 15 Apr 2021
    Спасибо большое
  • https://t.me/clickhouse_ru
    Вроде это уже обсуждали. MV видит только вставку из самой левой таблицы, даже если в дальнейшим она джоинится справа данные будут только из вставки.
  • https://t.me/clickhouse_ru
    @bralbral #214073 04:31 PM, 15 Apr 2021
    Добрый вечер, подскажите : можно ли выделить тег profiles в отдельный файл ( в users.xml) и закинуть в users.d, чтобы этот тэг перезаписался ? Получаю ошибку "cannot parse expected eof ' ' " .
  • спасибо...теперь поведение логично
  • ещё один вариант "на подумать"
    select
    id,
    data.1 as array_group,
    min(data.2) as start,
    max(data.3) as end,
    end - start as diff
    from
    ( select
    id,
    groupArray((start, end)) as arr,

    arraySort(
    y -> y.1,
    arrayFilter(
    x ->
    not(arrayExists(
    a ->
    a.1 <= x.1
    and a.2 > x.2
    or a.1 < x.1
    and a.2 >= x.2,
    arr)),
    arr)) as arr_clear,

    arrayMap(
    x, y -> (x, y),
    arr_clear,
    arrayPushFront(
    arrayPopBack(arr_clear),
    arr_clear[1])) as arr_w_prev,

    arrayMap(
    x, y -> (y, x.1, x.2),
    arr_clear,
    arrayCumSum(
    x -> x.1.1 > x.2.2,
    arr_w_prev)) as arr_groups
    from
    values (
    'id String, start UInt8, end UInt8',
    ('a', 1, 10),
    ('a', 2, 8),
    ('a', 7, 15),
    ('a', 20, 25),
    ('b', 116, 130),
    ('b', 111, 114),
    ('b', 107, 109),
    ('b', 103, 105),
    ('b', 100, 120),
    ('c', 50, 60),
    ('c', 50, 70)
    )
    group by
    id) as t
    array join arr_groups as data
    group by
    id,
    array_group
    order by
    id,
    array_group;
  • https://t.me/clickhouse_ru
    выше задавали такой же вопрос, там и ответы были. можете спросить у автора нашёл ли он оптимальный способ.
    https://t.me/clickhouse_ru/213586
    Stanislav Lapshin in ClickHouse не тормозит

    Здравствуйте! Планирую перейти на ClickHouse в самописной системе аналитики. Но есть вопрос: существует таблица для трека прогресса просмотра видео, в которой сохраняются интервалы. Например, (1, 5) - значит, что пользователь посмотрел видео с 1 по 5 секунду. Каждая строка - отдельный интервал. Аналитикам требуется получить информацию о том, сколько видео было просмотрено. Проблема в том, что интервалы могут пересекаться, иметь окна, дублироваться. Например: (1, 5), (4, 10), (6, 8), (20, 25) должно вернуть 15. Интервалов может быть ~100-200. Вместо массива могут быть 2 поля: “start” и “end” - если надо. Каким образом можно это решить в ClickHouse? Нашел такой вариант https://stackoverflow.com/questions/57347444/collapsing-overlapping-time-intervals-using-clickhouse - подскажите насколько он работоспособен? Заранее спасибо!

  • @WorkAccount #214077 05:01 PM, 15 Apr 2021
    Коллеги, кто-нибудь сталкивался с ошибками приведения типов в CH?

    There is no supertype for types UInt8, UUID because some of them are numbers and some of them are not

    Вот такая ошибка возникает при приведении UUID к String: ```CAST(if(uid IS NULL, 0, uid) AS String)```, coalesce тоже не срабатывает
  • @WorkAccount #214078 05:03 PM, 15 Apr 2021
    Обратное приведение String к UUID вызывает ошибку There is no supertype for types String, UInt8 because some of them are String/FixedString and some of them are not
  • https://t.me/clickhouse_ru
    @hoha_ftf #214079 05:04 PM, 15 Apr 2021
    Кастуйте к строке внутри if
  • @WorkAccount #214080 05:04 PM, 15 Apr 2021
    При Coalesce получаем Cannot convert NULL value to non-Nullable type
  • Так он ошибку выводит, поэтому и пытаемся убрать NULL’ы при помощи if и COALESCE
  • https://t.me/clickhouse_ru
    у вас видимо uid - не UInt8
  • uid, как и написано выше, это тип UUID
  • https://t.me/clickhouse_ru
    @morozovsk #214084 05:06 PM, 15 Apr 2021
    ваш иф пытается вернуть значение одного типа if(uid IS NULL, 0, uid) а у вас там два типа
  • https://t.me/clickhouse_ru
    вместо нуля поставьте нулевой uuid
  • https://t.me/clickhouse_ru
    @hoha_ftf #214086 05:06 PM, 15 Apr 2021
    Ещё раз. Сделайте '0' и toString(uid) вторым и третьим парметром
  • Всё, теперь понятно, попробуем, благодарю!
  • кул, покурю ещё ответы по ссылке, может как-то улучшить код получится, но пока что работает вроде как правильно (с условием, что периоды начинающиеся в смежные значения считать как разные, например (5, 10) это новый период после (1, 4), а не его продолжение)
  • @spirid_sv #214089 05:11 PM, 15 Apr 2021
    Всем привет! Делаю mv. И через populate она падает по памяти. Вопрос - можно без populate, а историю набросить insert'ом? Или как правильно?
  • Повторяю ещё раз: такая прямая конвертация к String вызывает ошибку Cannot convert NULL value to non-Nullable type
  • в таком случае они могут и coalesce заюзать:
    coalesce(toString(uid), '0')
  • Приводит к Cannot convert NULL value to non-Nullable type
  • а cast(uid as Nullable(String))?
  • Пробую
  • Cannot convert NULL value to non-Nullable type
  • https://t.me/clickhouse_ru
    Осознал.
    В доке ещё такая штука есть
    accurateCastOrNull
  • if(uid IS NULL, '0', toString(uid)) тоже вызывает ошибку?
  • https://t.me/clickhouse_ru
    Спасибо
  • Какой корректный синтаксис в этом случае? CAST(‘0000-00…’ AS UUID)?
  • Увы
  • Благодарю, но в сборке не оказалось данной функции
  • Вновь Cannot convert NULL value to non-Nullable type

    Возможно, IS NULL проверку поле некорректно проходит при типе данных UUID
  • Там есть функция isNull() попробуйте ее
  • а такой пример нормально отрабатывает?
    select *, coalesce(toString(uid), '0') from values('id UInt8', 1, 2, 3) as t1 left join values('id UInt8, uid UUID', (1, '00000000-0000-0000-0000-000000000000'), (2, '61f0c404-5cb3-11e7-907b-a6006ad3dba0')) as t2 on t1.id = t2.id settings join_use_nulls = 1;
  • https://t.me/clickhouse_ru
    а просто assumeNotNull(uid)?
  • 😎💪🏻
  • https://t.me/clickhouse_ru
    toUUID('00000000-0000-0000-0000-000000000000')
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @morozovsk #214110 05:32 PM, 15 Apr 2021
    там вообще 100 вариантов конвертации и у меня ни один не вызывал ошибку :) у вас просто талант :)
  • https://t.me/clickhouse_ru
    у меня нормально отработало
  • https://t.me/clickhouse_ru
    у меня coalesce(toString(uid), '0') нормально отработало.
    возможно проблемы были на старых версиях. у меня 21.2.4.6
  • @O01010000S #214113 05:41 PM, 15 Apr 2021
    подскажите, а в клике можно как-то расширить с 16 на больше коннекторов для кафки?
  • тоже тестил на новой и самое короткое, конечно, https://t.me/clickhouse_ru/214106
    Sergey Churin in ClickHouse не тормозит

    а просто assumeNotNull(uid)?

  • https://t.me/clickhouse_ru
    да, assumeNotNull - вообще огонь
  • https://t.me/clickhouse_ru
    Всё именно так и оказалось, спасибо за наводку… murmurHash3_64(column_name) решил проблему корректного ключа шардирования
  • 👍🏻🎉
  • @nizovtsevnv #214118 06:16 PM, 15 Apr 2021
    Подскажите оптимальное решение: есть таблица событий типа event=старт/стоп связанные между собой одним common_id, нужно выбрать только те строки в которых между стопом и стартом с одним common_id прошло менее суток по полю event_time.
  • https://t.me/clickhouse_ru
    банальный способ в лоб это GROUP BY common_id HAVING anyIf(ts, event='stop')-avyIf(ts,event='start') > 3600*24
  • https://t.me/clickhouse_ru
    что такое коннекторы ? консьюмеры ?
  • Да
  • https://t.me/clickhouse_ru
    с чгео вы взяли что их 16 ?
  • https://t.me/clickhouse_ru
    @mikhailberg #214123 06:57 PM, 15 Apr 2021
    а вообще kafka_num_consumers (хотя дефолт 1)
    ну количество партиций смотрите тоже
  • Отрабатывает
  • Ни один из вариантов не отрабатывает - ни простые, ни сложные. Значит, в данных что-то не так.
  • Возможно, версия CH отличается, какой номер версии? Не 20.9.2.20 ?
  • https://t.me/clickhouse_ru
    Радость была преждевременной, оказывается: на одном наборе данных (небольшой набор, чуть более 5кк записей) всё отработало как надо, на чуть более большем (130кк) уже пару часов данные не «схлопываются». Причём с разными знаками они лежат на одном шарде (проверил, на других шардах их нет), ключ совпадает, но не схлопываются. Что это может быть и что делать?
  • https://t.me/clickhouse_ru
    ошибка типа выдается раньше, чем обрабатываются данные. Подозреваю, что приведенная строка - это вообще не то место, где возникает ошибка. Вы, возможно, с чем-то джойните, и там тип другой.
  • При создании ругается что больше 16 нельзя. Завтра покажу скрин
  • https://t.me/clickhouse_ru
    @spalaxinco #214132 10:02 PM, 15 Apr 2021
    Ребята, подскажите плизз с чем может быть свяазана ошибка.
    Я пытаюсь добавить несколько дополнительных нод к текущему кластеру, и начинает отлитать такая ошибка и как ее можно поправит ?

    2021.04.15 23:41:04.540811 [ 30757 ] {8b7ce458-0788-4689-908b-50d48b52a97e} <Error> executeQuery: Poco::Exception. Code: 1000, e.code() = 36, e.displayText() = Bad path syntax: /clickhouse/data/store/95c/95cf80f4-d662-4b54-a304-c9b5a29709f4/default:longstrongpassword@replica%2Dprod%2Dclickhouse%2D2b:9000,default:longstrongpassword@replica%2Dprod%2Dclickhouse%2D2c:9000,default:longstrongpassword@replica%2Dv2%2Dprod%2Dclickhouse%2D2c:9000,default:longstrongpassword@replica%2Dv2%2Dprod%2Dclickhouse%2D2b:9000 (version 20.10.3.30 (official build)) (from 120.1.109.188:33766) (in query: INSERT INTO some_table (time, nano_time, cache, header, header_user_agent, hostname, partner_id, client_ipv4, client_ipv6, cdn_id, cdn_response_time_ms, dns_lookup_time_ms, tcp_time_ms, ssl_time_ms, cdn_up_down, req_status, online) VALUES), Stack trace (when copying this message, always include the lines below):

    0. Poco::FileImpl::handleLastErrorImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x10e1c1b0 in /usr/bin/clickhouse
    1. Poco::FileImpl::createDirectoryImpl() @ 0x10e1d58c in /usr/bin/clickhouse
    2. DB::DistributedBlockOutputStream::writeToShard(DB::Block const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) @ 0xe28e17e in /usr/bin/clickhouse
    3. DB::DistributedBlockOutputStream::writeAsyncImpl(DB::Block const&, unsigned long) @ 0xe28b796 in /usr/bin/clickhouse
    4. DB::DistributedBlockOutputStream::writeSplitAsync(DB::Block const&) @ 0xe28b3d2 in /usr/bin/clickhouse
    5. DB::DistributedBlockOutputStream::write(DB::Block const&) @ 0xe28a530 in /usr/bin/clickhouse
    6. DB::PushingToViewsBlockOutputStream::write(DB::Block const&) @ 0xdb79cc4 in /usr/bin/clickhouse
    7. DB::AddingDefaultBlockOutputStream::write(DB::Block const&) @ 0xdbbab83 in /usr/bin/clickhouse
    8. DB::SquashingBlockOutputStream::finalize() @ 0xdbb990c in /usr/bin/clickhouse
    9. DB::SquashingBlockOutputStream::writeSuffix() @ 0xdbb9989 in /usr/bin/clickhouse
    10. DB::StorageBuffer::writeBlockToDestination(DB::Block const&, std::__1::shared_ptr<DB::IStorage>) @ 0xe2015c7 in /usr/bin/clickhouse
    11. DB::StorageBuffer::flushBuffer(DB::StorageBuffer::Buffer&, bool, bool, bool) @ 0xe1ff1f3 in /usr/bin/clickhouse
    12. DB::BufferBlockOutputStream::insertIntoBuffer(DB::Block const&, DB::StorageBuffer::Buffer&) @ 0xe206693 in /usr/bin/clickhouse
    13. DB::BufferBlockOutputStream::write(DB::Block const&) @ 0xe205d9f in /usr/bin/clickhouse
    14. DB::PushingToViewsBlockOutputStream::write(DB::Block const&) @ 0xdb79cc4 in /usr/bin/clickhouse
    15. DB::AddingDefaultBlockOutputStream::write(DB::Block const&) @ 0xdbbab83 in /usr/bin/clickhouse
    16. DB::SquashingBlockOutputStream::finalize() @ 0xdbb990c in /usr/bin/clickhouse
    17. DB::SquashingBlockOutputStream::writeSuffix() @ 0xdbb9989 in /usr/bin/clickhouse
    18. DB::copyData(DB::IBlockInputStream&, DB::IBlockOutputStream&, std::__1::atomic<bool>*) @ 0xd73909d in /usr/bin/clickhouse
    19. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, DB::Context&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>) @ 0xdecbd5d in /usr/bin/clickhouse
    20. DB::HTTPHandler::processQuery(DB::Context&, Poco::Net::HTTPServerRequest&, HTMLForm&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&) @ 0xe51341f in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @spalaxinco #214133 10:02 PM, 15 Apr 2021
    21. DB::HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0xe51660c in /usr/bin/clickhouse
    22. Poco::Net::HTTPServerConnection::run() @ 0x10d16595 in /usr/bin/clickhouse
    23. Poco::Net::TCPServerConnection::start() @ 0x10d4dd6f in /usr/bin/clickhouse
    24. Poco::Net::TCPServerDispatcher::run() @ 0x10d4f77e in /usr/bin/clickhouse
    25. Poco::PooledThread::run() @ 0x10e80a39 in /usr/bin/clickhouse
    26. Poco::ThreadImpl::runnableEntry(void*) @ 0x10e7c96a in /usr/bin/clickhouse
    27. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    28. clone @ 0x121a3f in /lib/x86_64-linux-gnu/libc-2.27.so
  • https://t.me/clickhouse_ru
    select * from system.clusters
  • https://t.me/clickhouse_ru
    @baltazorbest #214135 10:08 PM, 15 Apr 2021
    точно ли ноды появились в кластере и добавились корректно
  • https://t.me/clickhouse_ru
    да, все там видны..
  • https://t.me/clickhouse_ru
    @baltazorbest #214137 10:11 PM, 15 Apr 2021
    а нету ли ошибок в голонке errors?
  • https://t.me/clickhouse_ru
    никаких 🙁
  • https://t.me/clickhouse_ru
    @spalaxinco #214139 10:18 PM, 15 Apr 2021
    в errors_count 0 в таблице system.clusters.
    Да и ошибка странная почему он ругается на синтаксически не валидное название пути построенное для ZK 🙁
  • https://t.me/clickhouse_ru
    @baltazorbest #214140 10:19 PM, 15 Apr 2021
    а вы как переносили таблицы на новый шард?
  • https://t.me/clickhouse_ru
    @baltazorbest #214141 10:19 PM, 15 Apr 2021
    и для начала новые ноды вы добавляли как доп шард или доп реплики?
  • https://t.me/clickhouse_ru
    @baltazorbest #214142 10:20 PM, 15 Apr 2021
    конфиги когда переносили точно меняли значение в макросах если их используете?
  • https://t.me/clickhouse_ru
    @spalaxinco #214143 10:22 PM, 15 Apr 2021
    Создал с нуля 2 новые ноды как 2 шарда, и создал там БД и таблицы.
    Подключил как реплики для каждого шарда. У меня до этого в кластере было 4 ноды 2 реплики по 2 шарда
  • https://t.me/clickhouse_ru
    @baltazorbest #214144 10:23 PM, 15 Apr 2021
    можете все же показать вывод select * from system.clusters
  • https://t.me/clickhouse_ru
    @baltazorbest #214145 10:25 PM, 15 Apr 2021
    select table, zookeeper_path from system.replicas;
    на всех серверах сделайте и проверьте что бы оно оно совпадало там где shard и отличалось там где путь
  • https://t.me/clickhouse_ru
    @baltazorbest #214146 10:26 PM, 15 Apr 2021
    например
    /clickhouse/tables/{shard}/tablename_replicated
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а по тому что выше скинул?
  • https://t.me/clickhouse_ru
    @baltazorbest #214149 10:31 PM, 15 Apr 2021
    плюс был баг на вскидку
    https://github.com/ClickHouse/ClickHouse/issues/11133
    use_compact_format_in_distributed_parts_names problems · Issue #11133 · ClickHouse/ClickHouse

    Hello, i added two new replicas in my cluster and got this error: [ 23165 ] {5a41e916-458e-4372-9f94-e327b725daa1} <Error> executeQuery: Poco::Exception. Code: 1000, e.code() = 36, e....

  • https://t.me/clickhouse_ru
    /clickhouse/tables/{uuid}/{layer}-{shard}
    у меня вот такой шаблон для построения пути.

    Все выглядит как то так: ….
    /clickhouse/tables/6b9d1913-dd38-4bb6-9c29-c8017d259d28/01-01/table_name
  • https://t.me/clickhouse_ru
    @baltazorbest #214151 10:34 PM, 15 Apr 2021
    6b9d1913-dd38-4bb6-9c29-c8017d259d28 - 4 раза такое, так ведь?
  • https://t.me/clickhouse_ru
    @spalaxinco #214153 10:37 PM, 15 Apr 2021
    нет везде разное на каждой реплике
  • https://t.me/clickhouse_ru
    @baltazorbest #214154 10:38 PM, 15 Apr 2021
    стоп
  • https://t.me/clickhouse_ru
    @baltazorbest #214155 10:39 PM, 15 Apr 2021
    вы точно читали документацию?
  • https://t.me/clickhouse_ru
    @spalaxinco #214156 10:40 PM, 15 Apr 2021
    Я понял где я ошибся, я создал структуру в новой реплике, а лишь потом соединил ее с основвным кластером.
  • https://t.me/clickhouse_ru
    @baltazorbest #214157 10:40 PM, 15 Apr 2021
    смотрите, если вам нужно 2 шарда по 4 реплики (а судя по всему вам это нужно) то
    {uuid} - уникальных должно быть 2
  • https://t.me/clickhouse_ru
    @baltazorbest #214158 10:41 PM, 15 Apr 2021
    по сути
    /clickhouse/tables/shard_1/{layer}-{shard}
    /clickhouse/tables/shard_1/{layer}-{shard}
    /clickhouse/tables/shard_1/{layer}-{shard}
    /clickhouse/tables/shard_1/{layer}-{shard}
    /clickhouse/tables/shard_2/{layer}-{shard}
    /clickhouse/tables/shard_2/{layer}-{shard}
    /clickhouse/tables/shard_2/{layer}-{shard}
    /clickhouse/tables/shard_2/{layer}-{shard}
  • https://t.me/clickhouse_ru
    @baltazorbest #214159 10:41 PM, 15 Apr 2021
    и вообще
    {layer}-{shard}
    это многоуровневое шардирование
  • https://t.me/clickhouse_ru
    @baltazorbest #214160 10:41 PM, 15 Apr 2021
    и нужно ли оно вам я не уверен
  • https://t.me/clickhouse_ru
    @spalaxinco #214161 10:41 PM, 15 Apr 2021
    да я это понимаю уже обнаружил
  • https://t.me/clickhouse_ru
    @baltazorbest #214162 10:42 PM, 15 Apr 2021
    Репликация данных | Документация ClickHouse

    Репликация данных Репликация поддерживается только для таблиц семейства MergeTree: ReplicatedMergeTree ReplicatedSumming

  • https://t.me/clickhouse_ru
    @baltazorbest #214163 10:42 PM, 15 Apr 2021
    /clickhouse/tables/{layer}-{shard}/table_name

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

    у меня в построении пути используется в текущем кластере {uuid}:
    /clickhouse/tables/{uuid}/{layer}-{shard}/имя_таблицы

    И получается что две реплики которые уже в кластере давно работают имеют одинаковый uuid для одной и тойже таблицы и шарда.
    А вот когда я пытаюсь новую реплику добавить и создают реплицируемую таблицу она получает новы uuid, и не реплицируется…
  • @Nvarchar495 #214168 11:21 PM, 15 Apr 2021
    Доброй ночи! Скажите пожалуйста, нужно выполнить последовательно несколько скриптов. Кто чем пользуется? Cron,airflow? Thanks
  • https://t.me/clickhouse_ru
    Перечитал документацию, не нашёл такого. В случае, если разные количества и непонятный порядок состояний — да, может быть всякое. Но в случае, что все условия для свёртывания строк выполнены корректно — в документации не говорится про «никогда» 🤔
  • https://t.me/clickhouse_ru
    >CollapsingMergeTree выполняет это при слиянии кусков данных.

    >алгоритм слияния не гарантирует, что все строки с одинаковым ключом сортировки будут находиться в одном результирующем куске данных

    >Если необходимо получить полностью свёрнутые данные из таблицы CollapsingMergeTree, то необходимо агрегирование.

    >Если вставить данные одним запросом, ClickHouse создаёт один кусок данных и никогда не будет выполнять слияние.

    Документация:
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/collapsingmergetree/amp/
  • https://t.me/clickhouse_ru
    Некоторые фразы вы вырвали из контекста и придали им смысл, которого авторы документации в них, как мне кажется, не вкладывали 🤷‍♂️

    Никогда — это именно никогда. Но в документации говорится иное: «ClickHouse объединяет куски данных в неизвестный момент времени, который мы не можем предсказать.»
  • 16 April 2021 (138 messages)
  • попробуйте optimize table ... final, оно доагрегирует даже если данные в одном парте
  • https://t.me/clickhouse_ru
    Да, это сработало применительно к отдельной ReplicatedCollapsingMergeTree, но это не очень корректно, на мой взляд, бегать по нодам и искать, где лежат данные.
    На 5кк данных автоматическое свёртывание строк произошло через 2-3 минуты после вставки строк с отменой состояний. А вот на 130кк это не произошло и через несколько часов, хотя судя по логам КХ что-то там с этой таблицей делал, переименовывая и объединяя партиции 🤷‍♂️🤔 Ошибок в логах нет
  • ну я бы на самом деле действительно не рассчитывал на схлопывание в какой-то конкретный промежуток времени, просто доагрегировал бы сам в запросе
  • https://t.me/clickhouse_ru
    Запросов прям уйму переписывать тогда придётся 🤦‍♂️ Целый проект. Хочется как-то малой кровью обойтись.
  • сделать вью или промежуточную таблицу и пусть запросы ссылаются на неё?
  • https://t.me/clickhouse_ru
    Как компромиссное решение — очень даже неплохая идея 👍 Спасибо 🙏
  • рад помочь 👍🏻
  • https://t.me/clickhouse_ru
    И, к слову, на какой-то конкретный момент и не рассчитывали. Но интересовал предел ожидания. Например, автоматическое свёртывание строк в течение часа вполне устроило бы. А несколько часов — это прям перебор.
  • ну я для себя сделал вывод из написанного в доке, что всё-таки не стоит рассчитывать хоть на какой-то промежуток времени, лучше сразу предусмотреть механизм доагрегировать/схлопывать самому
  • у вьюх там прямо магия какая-то под капотом происходит в отношении прокидывания параметров
  • не совсем понял 🤔 зачем туда какие-то параметры прокидывать? я имел в виду, что можно написать код для обычной вьюхи на ту таблицу, что используется для "уймы запросов", тогда просто в них нужно будет подменить таблицу на вьюху 🤷‍♂️
  • ну или сделать таблицу, которая каждый раз будет пересчитываться досхлопывая строки и тогда подменить во всех запросах обращение к изначальной таблице на эту промежуточную
  • https://t.me/clickhouse_ru
    В последней моей цитате как раз было "никогда". Но вы видимо иначе прочитали документацию и для вас это означает "в течение часа или около того". Ну ок. Вам виднее. У меня встречались несхлопнуье строки, которые никогда не схлопывались, я прочитал документацию. Всё сошлось. При чём это поведение логично и встречается в других аггрегирующих движках. Сворачивание происходит только при слиянии кусков. Если слияния кусков не происходит, то сворачивания нет. Куски не сливаются в бесконечном цикле в один мега кусок.
  • Я про то что если вью это просто view as select.. from с аггрегацией, то запросы вида select.. from view where... будут хорошо оптимизированы.

    Если вью это view as select ... from (select...from)

    То запросы вида select.. from where будут работать возможно не так как ожидалось) а если там где то внутри ещё и джоин не дай бог..
  • понял) в целом — согласен, но проверять подход это "уже совсем другая история", конечно нужно смотреть что за запросы, пробовать варианты, сверять скорость и т.д. и т.п.)
  • https://t.me/clickhouse_ru
    @yatakoim #214187 01:08 AM, 16 Apr 2021
    Всем привет. Подскажите, пожалуйста, как удалить все данные за последние 30 дней?

    Диск переполнился
  • https://t.me/clickhouse_ru
    @yatakoim #214188 01:08 AM, 16 Apr 2021
    Задавал здесь уже такой вопрос как-то и мне подсказывали, но найти не могу
  • https://t.me/clickhouse_ru
    Я вам в одном из своих ответов писал дословно следующее: «в случае, что все условия для свёртывания строк выполнены корректно — в документации не говорится про «никогда» 🤷‍♂️ Понимаете разницу? Странная дискуссия. Я говорю о том, что есть таблица с данными, куда залили строки с отменой состояний, но свёртывание не сработало, как заявлено в документации, в ответ на что вы говорите о других сценариях
  • https://t.me/clickhouse_ru
    @BloodJazMan #214190 03:17 AM, 16 Apr 2021
    Народ, поможем хорошей тулзе стать более удобной для ClickHouse
    полайкайте пожалуйста
    https://youtrack.jetbrains.com/issue/DBE-12992
    и
    https://youtrack.jetbrains.com/issue/DBE-12997
    Fix dictionary and dictionary field references resolving for ClickHouse dialect : DBE-12992

    References in select query in the following code snippet are unresolved. Expected result: fields are resolved, navigable and it is possible to perform refactorings on them (e.g. rename). create dictionary if not exists dict(id UInt8, val UInt8) primary key id source(file(path '/var/lib/clickhouse/user_files/some.tsv' format 'TabSeparated')) lifetime(300) layout(flat()); select id, val from dict;…

  • https://t.me/clickhouse_ru
    @innopolis #214191 06:21 AM, 16 Apr 2021
    а как получить число скипнутых строк при использовании
    input_format_allow_errors_num
    ?

    https://clickhouse.tech/docs/ru/operations/settings/settings/#input-format-allow-errors-num

    @den_crane 🙏
    Настройки | Документация ClickHouse

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

  • @cyberhuman1 #214193 06:46 AM, 16 Apr 2021
    Здравствуйте! Возможно ли атомарно заменить одну таблицу другой без INSERT SELECT? Например, есть REPLACE TABLE, но эта операция создаёт новую таблицу и вставляет в неё данные. А что делать, если таблица с данными уже есть?
  • https://t.me/clickhouse_ru
    Atomic | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    судя по этому фрагменту кода
    https://github.com/ClickHouse/ClickHouse/blob/9f5cd35a6963cc556a51218b46b0754dcac7306a/src/Processors/Formats/IRowInputFormat.cpp#L114-L124

    получить можно через
    system.stacktrace только если пойдет превышение
    отдельной какой то метрики я не вижу
    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
    еще сейчас проверяю send_progress_in_http_headers
  • Ох, спасибо. Это то, что надо! 👍
  • https://t.me/clickhouse_ru
    >ClickHouse объединяет куски данных в неизвестный момент времени, который мы не можем предсказать.

    Ваша же цитата. Я читаю её как "слияние может быть моментальным или вообще никогда". Если вы читаете её как "час-день", то ок, нужно просто уточнить у разработчиков.
    Но проблема я так понимаю всё таки есть и решать её надо. Самый простой способ - это добавить в запрос FULL, чтобы не переписывать все запросы на аггрегацию. Или если данных всего несколько лямов, то переименовать таблицу и создать вьюху с аггрегацией со старым именем.
  • https://t.me/clickhouse_ru
    @rostish #214199 07:52 AM, 16 Apr 2021
    @ykolesnik Проверил ваш вариант с пересекающимися интервалами. На одном дне, на наших данных работает, на 30, либо группировках по месяцу падает по памяти.
    Будем еще что-нибудь придумывать.
  • https://t.me/clickhouse_ru
    Всем доброго времени суток! Кто нибудь может подсказать куда копать? Заранее благодарю за ответ.
  • https://t.me/clickhouse_ru
    @romask3 #214201 08:13 AM, 16 Apr 2021
    Всем привет. Возник вопрос касательно использования внешних словарей. Есть справочник в MySQL. В кликхаусе создал справочник командой :
    CREATE DICTIONARY r_name_dict_test
    (
    id Int32,
    mrgn_id Int64,
    name String
    )
    PRIMARY KEY id
    SOURCE(MYSQL(
    port 3306
    user 'sys'
    password 'qwerty'
    replica(host 'db' priority 1)
    db 'test'
    table 'm_region'
    ))
    LAYOUT(FLAT())
    LIFETIME(120);
    120 Время жизни. Возник вопрос, что произойдет, если источник MySQL отвалится (сеть пропадет, база упадет, etc)? Сделал данное поведение, выключил MySQL, однако на CH запрос к справочнику выполняется без проблем, хотя я ожидал, что после 120 сек он полезет их обновлять и свалится по ошибке. Так и задумано или я что-то недопонял?
  • https://t.me/clickhouse_ru
    @x052bb #214202 08:15 AM, 16 Apr 2021
    Добрый день. Вопрос по ReplicatedCollapsingMergeTree. Регулярно вижу, что не схлопываются некоторые записи. То есть осталась одна парта в партиции, вызываю для партиции optimize final, вижу в логах, что отрабатывает, но в таблице по-прежнему есть записи у которых все значения, кроме sign идентичны.

    Я же правильно понимаю, что такого быть не должно? Что может быть причиной и как можно поисследовать? Версия 20.4.x
  • Если при обновлении возникнет ошибка, то ошибка пишется в лог сервера, а запросы продолжат использовать старую версию словарей.

    П.С.: из доки КХ
  • https://t.me/clickhouse_ru
    Блин(( Как всегда, не увидел в доке😂 Спасибо!
  • @l_mamontov #214205 08:54 AM, 16 Apr 2021
    Коллеги, приветствую. Кто-то работал с clickhouse-copier?
  • @l_mamontov #214206 08:54 AM, 16 Apr 2021
    Указываю конфиг с таргет и дестинашион
  • @l_mamontov #214207 08:54 AM, 16 Apr 2021
    Он ругается на zookeeper
  • @l_mamontov #214208 08:54 AM, 16 Apr 2021
    virtual int DB::ClusterCopierApp::main(const std::vector<std::__cxx11::basic_string<char> >&): Code: 999, e.displayText() = Coordination::Exception: No addresses passed to ZooKeeper constructor. (Bad arguments), Stack trace:
  • @l_mamontov #214209 08:54 AM, 16 Apr 2021
    а сам файл сделал xml как тут https://clickhouse.tech/docs/ru/operations/utilities/clickhouse-copier/, конфигурация на копирование
    clickhouse-copier | Документация ClickHouse

    clickhouse-copier Копирует данные из таблиц одного кластера в таблицы другого (или этого же) кластера. Можно запустить н

  • @l_mamontov #214210 08:55 AM, 16 Apr 2021
    Может кто-то в курсе?
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #214205 #214211 08:57 AM, 16 Apr 2021
    @nikitamikhaylov может подскажет
  • https://t.me/clickhouse_ru
    Помогите плизз если кто сталкивался. Эта проблема как выяснилось происходить только с таблицей типа BUFFER, почему-то именно на ней ругается BAD PATH syntax 🙁 Уже пробовал пересоздвать ее на всех репликах. Все остальные таблицы реплицируются отлично, а BUFFER хорошо реплицировался до тех пор пока работал в одном кластере из 4ех нод 2 реплики и 2 шарда, а когда я подключил еще 4 ноды 2 реплики и 2 шарда начала вылазить эта ошибка..
  • https://t.me/clickhouse_ru
    только что разобрался с копиром, покажи плиз подробнее

    - конфиг zookeeper.xml
    - xml-спеку таски копирования
    - команду копира с параметрами

    вообще из доки непонятно примерно ничего, но есть толковые примеры у Altinity https://altinity.com/blog/2018/8/22/clickhouse-copier-in-practice
    Clickhouse-copier in practice

    Clickhouse-copier is a tool designed to copy data from one ClickHouse environment to another. The tool is a part of standard ClickHouse server distribution. It can work in a fully parallel mode and distribute the data in the most efficient way. In this article, we review a few typical examples when clickhouse-copier can be used.

  • пока можете попробовать указать max_bytes_before_external_group_by
  • https://t.me/clickhouse_ru
    @Felixoid #214216 09:15 AM, 16 Apr 2021
    А как проще всего сконвертировать Array(Nullable(Float64)) arrayFilter(x -> isNotNull(x), avgOrNullResample(1, 1000, 5)(Value, Time)) в Array(Float64)?

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

    поясню: для всех Time внутри 5 секунд, берётся avg(Value), и выдаётся Null если ничего нету. Потом все Null удаляются, но это добавляет 1байт для каждого значения, когда используется RowBinary.
  • https://t.me/clickhouse_ru
    подобные вопросы уже были заданы в этом чатике не раз. поищете по ключевым словам: CollapsingMergeTree, сворачивание и т.д.
    >вызываю для партиции optimize final, вижу в логах, что отрабатывает, но в таблице по-прежнему есть записи у которых все значения, кроме sign идентичны.
    если две записи в рамках одной партиции, то они должны схлопнуться при optimize final. то что вы пишите, происходить не должно :)
  • https://t.me/clickhouse_ru
    а вот и ответ от саппорта яндекса. https://t.me/clickhouse_ru/87554
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    а есть что мержить? а если сделать optimize final колапсится? мержи начинаются когда-нибудь, нет никаких гарантий что оно вообще помержится.

  • а это всё на одной машине? может строки с разными sign лежат на разных шардах?
  • https://t.me/clickhouse_ru
    @Alex_Force #214221 09:27 AM, 16 Apr 2021
    Всем привет.

    Ищу команду/человека, которая бы смогла забрать на себя задачи по обслуживание clickhouse-кластера.
  • https://t.me/clickhouse_ru
    @JackRussell77 #214223 09:35 AM, 16 Apr 2021
    вот такое уже пробовали в реальной жизни ? (hdfs+clickhouse)

    https://clickhouse.tech/docs/ru/engines/table-engines/integrations/hdfs/

    CH не падает если файлы появляются - исчезают ?
    HDFS | Документация ClickHouse

    HDFS Управляет данными в HDFS. Данный движок похож на движки File и URL. Использование движка ENGINE = HDFS(URI, format)

  • https://t.me/clickhouse_ru
    @JackRussell77 #214224 09:43 AM, 16 Apr 2021
    и делает ли CH "Partition prunning" , т.е. он может понять что в подкаталоге лежит порция данных, которая привязана к имени каталога ?
  • https://t.me/clickhouse_ru
    @ilejn #214225 09:54 AM, 16 Apr 2021
    Добрый день, если при вставке данных возникла ошибка на одной из шард, insert завершится с ошибкой, и данные не вставятся никуда вообще? Для простоты - реплик нет.
  • https://t.me/clickhouse_ru
    у вас реплицируемые таблицы?
    данные как вставляете в Distributed или напрямую?
    всякие там OPTIMIZE ... и т.п. употребляете?

    все реплики живые?
    мутациями пользуетесь?
  • https://t.me/clickhouse_ru
    Support | ClickHouse Documentation

    ClickHouse Commercial Support Service Providers Info If you have launched a ClickHouse commercial support service, feel

  • https://t.me/clickhouse_ru
    @Sablast #214230 10:29 AM, 16 Apr 2021
    подскажите, а можно ли както для функции windowFunnel вытащить timestamp шагов на которых была найдена последовательность?
  • https://t.me/clickhouse_ru
    вставка куда идет в Distributed таблицу? или напрямую в MergeTree с выбором шарда?

    в Distributed таблице данные разбиваются на куски (.bin файлы) на ноде в который прилетел INSERT и кладутся /var/lib/clickhouse/data/<database>/<distributed_table_name>/tmp/<shard_host_name>/*.bin
    и потом пушатся на удаленные хосты (и часть на localhost если данные на текущий щард попали) в MergeTree таблицы
    почитайте по доке про SYSTEM STOP DISTIRUBTED SENDS

    если удаленный хост выключить, то данные по прежнему будут доступны для SELECT ..
    но будут копиться на нодах куда INSERT прилетает...
  • https://t.me/clickhouse_ru
    или только самому переписывать её в массивы?
  • https://t.me/clickhouse_ru
    Обнаружил у себя такую проблему, когда у меня подключены 4 реплики, КХ пытается создать папку по пути

    /clickhouse/data/store/fff/fffc0e5b-f15a-4bbb-a60d-2fa7d620ff45/[хостнеймы + пароль + пользователь для каждого шарда]
    а у меня длинный пароль + длинное имя хоста, в итоге получается Linux не дает создать такую длинную директорию с именем типа:

    default%3Averylongpasswordhereihave%40sevenle-prod-clickhouse-2b%3A9000%2Cdefault%3Averylongpasswordhereihave%40sevenle-prod-clickhouse-2c%3A9000%2Cdefault%3Averylongpasswordhereihave%40sevenle-v2-prod-clickhouse-2b%3A9000%2Cdefault%3Averylongpasswordhereihave%40sevenle-v2-prod-clickhouse-2c%3A9000

    и я так понимаю что КХ не может ее создать потому что падает по лимиту названия директории для FS.

    Кто то сталкивался с таким ? Как то обходили ? Или нужно убрать просто информацию типа порт, пользователь, пароль ?
  • это я смотрел
  • https://t.me/clickhouse_ru
    @x052bb ↶ Reply to #214219 #214235 10:51 AM, 16 Apr 2021
    Это все на одном шарде
  • увы, без доп. исследований и чтения документации пока больше ничего не приходит в голову
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #214231 #214237 10:54 AM, 16 Apr 2021
    Спасибо. Нашел параметр insert_distributed_sync. Кажется, это оно, т.е. как добиться синхронности при вставке через distributed понятно.
  • @LexaM #214239 11:15 AM, 16 Apr 2021
    Добрый день,
    у нас есть такая таблица test, ищем 10 последних записей с определённым id1, всего их ~ 55 млн.
    судя по всему происходит фулскан всех записей с этим id1, и присутствие в ключе сортировки после id1 поля timestamp не влияет.
    подскажите, пожалуйста, дело в неправильной структуре таблицы или в запросе, и можно ли избежать фулскана? (необходимо выбирать куски данных с определённым id1, отсортированных по timestamp)

    CREATE TABLE clickhouse.test
    (
    `id1` String,
    `timestamp` DateTime,
    `id2` UInt32,
    )
    ENGINE = ReplacingMergeTree
    PARTITION BY toYYYYMM(timestamp)
    ORDER BY (id1, timestamp, id2)
    SETTINGS index_granularity = 8192

    SELECT * FROM test
    WHERE id1 = 'a27d30b4121232323b4c659f2488d'
    ORDER BY timestamp DESC
    LIMIT 10

    10 rows in set. Elapsed: 11.991 sec. Processed 55.75 million rows

    EXPLAIN
    SELECT *
    FROM test
    WHERE id1 = 'a27d30b4121232323b4c659f2488d'
    ORDER BY timestamp DESC
    LIMIT 10

    ┌─explain───────────────────────────────────────────────────────────────────────────────┐
    │ Expression (Projection) │
    │ Limit (preliminary LIMIT) │
    │ MergingSorted (Merge sorted streams for ORDER BY) │
    │ MergeSorting (Merge sorted blocks for ORDER BY) │
    │ PartialSorting (Sort each block for ORDER BY) │
    │ Expression (Before ORDER BY) │
    │ Filter (WHERE) │
    │ SettingQuotaAndLimits (Set limits and quota after reading from storage) │
    │ ReadFromStorage (MergeTree) │
    └───────────────────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    по идее, чтобы ваш запрос отрабатывал быстрее нужно поменять порядок сортировки: ORDER BY (timestamp, id1, id2)
    ┌─explain─────────────────────────────────────────────────────────────────────────┐
    │ Expression (Projection) │
    │ Limit (preliminary LIMIT) │
    │ FinishSorting │
    │ Expression (Before ORDER BY) │
    │ SettingQuotaAndLimits (Set limits and quota after reading from storage) │
    │ ReadFromPreparedSource (Read from NullSource) │
    └─────────────────────────────────────────────────────────────────────────────────┘
    и для order by были рекомендации для нескольких полей - сначала менее уникальные параметры, а потом более уникальные.
  • https://t.me/clickhouse_ru
    1 шард, две реплики, дистрибьютед таблиц нет, optimize и мутации не употребляем
  • https://t.me/clickhouse_ru
    правда в макросах указан один и тот же номер шарда ( 01 ), но почему то вывод select * from system.clusters показывает два шарда:
    ─cluster──┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name───────
    ads_repl │ 1 │ 1 │ 1 │ ch03-adv
    ads_repl │ 2 │ 1 │ 1 │ ch04-adv
    но так было всегда и проблем раньше небыло
  • https://t.me/clickhouse_ru
    в путях для ReplicatedMergeTree номер шарда через макрос прописывается {shard}
    <remote_servers>
    скорее всего скопировали
    и macros.xml неправильный
    поправьте

    судя по всему у вас данные теперь не в репликах, а разбиты на две части ...
    куда вставляли там и остались...
  • https://t.me/clickhouse_ru
    через {shard} в путях и прописываем макросы, данные на двух серверах бьются по кол-ву (инсерты идут только на 1 сервер)
  • https://t.me/clickhouse_ru
    @Shadilan #214245 12:03 PM, 16 Apr 2021
    Подскажите а не было проблем с заливкой данных в поле LowCardinality(Nullable(String))? нашел https://github.com/ClickHouse/ClickHouse/issues/8406 но у меня вроде версия посвежее чем правка, правда вставляю я через TSV? а не через Parquet
    can't insert NULL data into LowCardinality(Nullable(String)) · Issue #8406 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug or unexpected behaviour A clear and concise description of what works not as it is supposed to. How to reproduce Which ClickHo...

  • https://t.me/clickhouse_ru
    только на 1 сервере постоянно идут сообщения вида <Information> MergeTreePartsMover: Failed to swap 202104_89357_95544_5359. Active part doesn't exist. Possible it was merged or mutated. Will remove copy on path '/opt/clickhouse_cold/data/medtizer/logs/detached/202104_89357_95544_5359/ и с каждым таким сообщением файлов в detached каталоге становится больше
  • https://t.me/clickhouse_ru
    если у вас на обоих серверах system.macros одинаковый {shard} это норм
    и должен еще быть {replica} разные и они должны быть прописаны тоже в пути
  • https://t.me/clickhouse_ru
    а в чем ошибка то у вас заключается? какое сообщение об ошибке пишет?
  • https://t.me/clickhouse_ru
    реплика указаны разные ( через {replica}), шард одинаковый
  • https://t.me/clickhouse_ru
    тогда выглядит так, что что-то успевает смержить парт, до того как он отреплицируется....

    попробуйте по именам партов из сообщений об ошибках в system.part_log поискать
  • https://t.me/clickhouse_ru
    у вас никаких storage policy не используется?
    SELECT * FROM system.disks
    одну запись показывает?
  • https://t.me/clickhouse_ru
    @RT_1_98 #214253 12:27 PM, 16 Apr 2021
    подскажите как выбрать данные из таблицы вида

    Tasks (id UInt32, sub_id UInt16, t_name STring, t_type String, t_state Uint8, t_message String, ts DateTime)

    нужен результат в уникальных строк по всем полям с заданным 'id' по максимальному значение 'ts'

    Т.е. из данных вида:
    1000, 10, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:00:00
    1000, 10, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:30:00
    1000, 20, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:00:00
    1000, 20, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:30:00
    1000, 30, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:00:00
    2000, 10, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:00:00
    2000, 10, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:30:00

    Нужно получить только 3 строки для id=1000:
    1000, 10, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:30:00
    1000, 20, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:30:00
    1000, 30, 'xxx', 'type1', 0, 'xxx', 2020-01-01 12:00:00
  • https://t.me/clickhouse_ru
    argmax
  • https://t.me/clickhouse_ru
    пробовал, возвращает одну запись с максимальным ts + нужно в качестве аргумента ему давать полный список полей. * он не принимает
  • https://t.me/clickhouse_ru
    select argmax(tuple(values), ts) group by id
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    так работает, но приходится перечислять все поля в argMax а их гораздо больше чем в примере
    но видимо другого способа особо и нет
  • https://t.me/clickhouse_ru
    ну вон вам там скинули еще несколько вариков.
  • https://t.me/clickhouse_ru
    так там то же самое написано
  • https://t.me/clickhouse_ru
    ну как минимум еще order by limit
    и подзапрос
  • https://t.me/clickhouse_ru
    используется:
    ┌─name───────────┬─path──────────────────┬───free_space─┬───total_space─┬─keep_free_space─┐
    │ cold_data_disk │ /opt/clickhouse_cold/ │ 27217444864 │ 593055903744 │ 40000000000 │
    │ default │ /var/lib/clickhouse/ │ 126492344320 │ 1331831013376 │ 0 │
    └────────────────┴───────────────────────┴──────────────┴───────────────┴─────────────────┘
  • https://t.me/clickhouse_ru
    argMax(tuple(*), t) ?
  • https://t.me/clickhouse_ru
    Не возможно вставить Null собственно как и в проблеме на которую я ссылку дал
  • https://t.me/clickhouse_ru
    Да, так сработало
    Спасибо
  • https://t.me/clickhouse_ru
    ну, есть сильное подозрение что у вас данные свежие достаточно которые еще не успели отреплицироваться переезжают в cold_data_disk

    надо storage policy чинить IMHO
  • https://t.me/clickhouse_ru
    даже если и так то они же не должны отдетачиваться...
  • https://t.me/clickhouse_ru
    part_log отсутствует... а вот инфа из system.parts по одной из таких партов
    partition: 202104
    name: 202104_2572687_2572687_0
    part_type: Wide
    active: 0
    marks: 2
    rows: 20
    bytes_on_disk: 4053
    data_compressed_bytes: 2373
    data_uncompressed_bytes: 4847
    marks_bytes: 1632
    modification_time: 2021-04-16 15:54:39
    remove_time: 2021-04-16 15:54:42
    refcount: 1
    min_date: 0000-00-00
    max_date: 0000-00-00
    min_time: 2021-04-16 15:54:38
    max_time: 2021-04-16 15:54:39
    partition_id: 202104
    min_block_number: 2572687
    max_block_number: 2572687
    level: 0
    data_version: 2572687
    primary_key_bytes_in_memory: 34
    primary_key_bytes_in_memory_allocated: 192
    is_frozen: 0
    database: db1
    table: logs_views
    engine: ReplicatedMergeTree
    disk_name: default
    path: /var/lib/clickhouse/data/db1/logs_views/202104_2572687_2572687_0/
    hash_of_all_files: 7bd3295d45dcfabd4abb3dca72cd9924
    hash_of_uncompressed_files: 4b72eb153ffe6d0675c3fea537569600
    uncompressed_hash_of_compressed_files: fdaa595acb90bf0023d961ae900406b1
    она находится на системной диске который использует политику default, вторая (кастомная политика) используется для монтирования в /opt, непонятно почему туда этот парт перемещается, да еще и в detached. На системном диске свободно порядка 160Гб
  • https://t.me/clickhouse_ru
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @Shadilan #214271 01:10 PM, 16 Apr 2021
    в обычный Nullable(String) вставка проходит проблема конкретно с LowCardinality
  • https://t.me/clickhouse_ru
    @Har01d #214276 02:05 PM, 16 Apr 2021
    Народ, всем привет! Апгрейднули (с 20.5.2 до последней) версию КХ, никак не можем понять с чем баг — один относительно сложный запрос проходит через консоль, но через HTTP-клиент стало выкидывать DB::Exception: Syntax error: failed at position 1111 ('(') (line 21, col 13, в какую сторону можно копать?
  • https://t.me/clickhouse_ru
    @Har01d #214277 02:06 PM, 16 Apr 2021
    До апгрейда всё работало, все скобки на месте (через clickhouse-client спокойно выполняется), запрос не меняли
  • https://t.me/clickhouse_ru
    @Har01d #214278 02:24 PM, 16 Apr 2021
    Починили, был POST-запрос с заголовками

    Content-Type: application/json
    Content-Length: (длина POST-запроса)

    поменяли на

    Transfer-Encoding: chunked

    Странная какая-то хрень
  • @LexaM ↶ Reply to #214240 #214279 02:39 PM, 16 Apr 2021
    спасибо за ответ, попробовали порядок сортировки ORDER BY (timestamp, id1, id2)
    в данном случае сканируется вобще вся таблица, что логично
    уточню по поводу данных, всего в таблице порядка 3 млрд записей, кол-во записей с уникальными id1 варьируется от 3 штук до десятков миллионов

    CREATE TABLE clickhouse.test2
    (
    `timestamp` DateTime,
    `id1` String,
    `id2` UInt32
    )
    ENGINE = ReplacingMergeTree
    PARTITION BY toYYYYMM(timestamp)
    ORDER BY (timestamp, id1, id2)
    SETTINGS index_granularity = 8192

    SELECT *
    FROM test2
    WHERE id1 = 'a27d30b4121232323b4c659f2488d'
    ORDER BY timestamp DESC
    LIMIT 10

    10 rows in set. Elapsed: 566.396 sec. Processed 3.00 billion rows

    EXPLAIN
    SELECT *
    FROM test2
    WHERE id1 = 'a27d30b4121232323b4c659f2488d'
    ORDER BY timestamp DESC
    LIMIT 10

    ┌─explain─────────────────────────────────────────────────────────────────────────┐
    │ Expression (Projection) │
    │ Limit (preliminary LIMIT) │
    │ FinishSorting │
    │ Expression (Before ORDER BY) │
    │ SettingQuotaAndLimits (Set limits and quota after reading from storage) │
    │ Expression (Remove unused columns after reading from storage) │
    │ Union │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    │ MergingSorted (Merge sorting mark ranges) │
    │ Expression (Calculate sorting key prefix) │
    │ ReverseRows │
    │ ReadFromStorage (MergeTree with order) │
    └─────────────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    спасибо за уточнение. изначально я прочитал что в таблице 55 лямов, а не id1 имеет 55 лямов разных значений. поэтому и показалось, что 10 секунд для таблицы в 55 лямов - многовато, но для 3 млрд уже норм. возможно индексы пропуска помогут вам ускорить ваш запрос... но вряд ли
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @malkeshar #214281 03:23 PM, 16 Apr 2021
    Добрый вечер.

    Из двухнодового кластера(distributed+replicatedmt) вывели из эксплуатации одну релпику, хост также был удален из dns
    * удалили ее из директивы <remote_servers> конфига config.xml
    * перезагрузили сервер (на этом этапе она пропала из system.cluster)
    * выполнили SYSTEM DROP REPLICA 'clickhouse-kd2'

    Тем не менее, в журналах при старте кликхауза ошибка
    "carbon_metrics.graphite_tree.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: Host not found: clickhouse-kd2 (clickhouse-kd2:9000), Stack trace (when copying this message, always include the lines below)"

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

    Кликхаус ведь для этого и предназначен, разве нет?
  • https://t.me/clickhouse_ru
    постгрес - это вообще черепаха, так быстро работать как вы пишите он будет только на очень хорошем железе. на таком же железе кликхаус будет не просто быстро работать, а отправлять результаты в прошлое.
    посмотрите сравнение кликхауса с mysql на сотнях миллионов (к сожалению сравнения на миллиардах и с потгресом нету по причине отсутствия смысла в таком сравнении)
    https://clickhouse.tech/benchmark/dbms/#[%22100000000%22,[%22ClickHouse%22,%22MySQL%22],[%221%22,%222%22]]
    Performance comparison of database management systems

    ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

  • https://t.me/clickhouse_ru
    похоже Poco глючит на парсинге запроса
    есть повод сделать ISSUE на github
  • https://t.me/clickhouse_ru
    у меня кстати подобная структура как у вас:
    create table sync_log
    (
    t DateTime64(6) DEFAULT now64(6),
    entity String,
    profile_id UInt64,
    uuid String
    ) Engine = ReplacingMergeTree
    PARTITION BY (entity)
    ORDER BY (entity, profile_id, uuid);

    правда данных поменьше - около 500 миллионов, но и запрос отрабатывает всего за 0.013 sec:
    SELECT * FROM sync_log where profile_id=2 ORDER BY t desc LIMIT 10

    "моё хобби - экстраполировать": запрос на 55 лямов должен отработать за полторы секунды

    и да, всё вертится на виртуалке за 20 баксов

    только у меня версия 20.4.5.36 и EXPLAIN к сожалению не работает.
    PS: только сейчас заметил, что вместо PARTITION BY (entity) нужно было указать PARTITION BY (entity, toYYYYMM(t))
  • https://t.me/clickhouse_ru
    вот полторы секунды было бы как раз и приемлемо 🙂

    диск sata пока в тестах
  • ORDER BY (id1. timestamp, id2) ?
  • https://t.me/clickhouse_ru
    у них такая сортировка была изначально, запрос отрабатывает около 10 секунд. ребята хотят его ускорить
  • prewhere попробовать
  • либо так
    select * from test2 where (timestamp, id1) IN
    (
    SELECT timestamp, id1
    FROM test2
    WHERE id1 = 'a27d30b4121232323b4c659f2488d'
    ORDER BY timestamp DESC
    LIMIT 10
    )
  • https://t.me/clickhouse_ru
    как вариант, раз топикстартер жаловался на фуллскан, то возможно оптимизатору нужно указать более оптимальный путь запроса
  • https://t.me/clickhouse_ru/214290
    это точно должно сработать

    у ТСа немного сложность что фильтр сначала а только потом ордер... т.е. основной индекс по любому не поможет

    если кардинальность ИД низкая можно order by ts + skip index id1
    【D】【J】 in ClickHouse не тормозит

    либо так select * from test2 where (timestamp, id1) IN ( SELECT timestamp, id1 FROM test2 WHERE id1 = 'a27d30b4121232323b4c659f2488d' ORDER BY timestamp DESC LIMIT 10 )

  • prewhere в плане не увидел, поэтому написал, но там тоже после фильтра по ИД индекс не поможет и все колонки будут сканироваться попусту, если ИД много будет медленно
  • https://t.me/clickhouse_ru
    если бы оптимизатор использовал индекс по дате, то после выборки первых строк по лимиту он бы остановился и запрос стал быстрым. а он файлсортит все записи, хотя это не нужно.
  • https://t.me/clickhouse_ru
    по идее order by ts + skip index id1 это тоже самое что "order by ts, id1" (особенно если тип индекса minmax), а это ТС уже пробовал и стало медленнее
  • @LexaM ↶ Reply to #214295 #214296 04:22 PM, 16 Apr 2021
    дополнительный индекс minmax на дату пока ещё не пробовали
  • https://t.me/clickhouse_ru
    это я на основе документации решил, что без разницы:
    >minmax — Хранит минимум и максимум выражения, используя их для пропуска блоков аналогично первичному ключу.
  • https://t.me/clickhouse_ru
    @brbrbr #214298 04:24 PM, 16 Apr 2021
    Добрался до таблиц с движком Join. Эффект приятно порадовал, хочу масштабировать.

    Как я понял, данные хранятся в памяти целиком. Но в какой момент времени они туда загружаются? В момент создания или только на время запроса?
    Если в момент запроса, то не съем ли я всю память, насоздавав пачку таких таблиц? И как тогда правильно с ними работать?
    А если в момент запроса, то в чём отличие с джойном обычной таблицы, там ведь тоже правая таблица в память грузится и в хэш-таблицу превращается, несколько помню?
  • https://t.me/clickhouse_ru
    там правая таблица каждый раз в память подгружается, а в случае с джойном только один раз (осталось понять в момент создания или в момент первого к ней обращения)
  • https://t.me/clickhouse_ru
    хотя в доке написано:
    >Данные таблиц Join всегда находятся в RAM.
    так что видимо с момента создания
  • https://t.me/clickhouse_ru
    @Har01d ↶ Reply to #214284 #214301 04:42 PM, 16 Apr 2021
    Уже послал Алексею. Вот пример запроса, который не работает в новой версии, но работал в старой: https://controlc.com/a6e7f39f (если сокращать длину, то всё работает)
    curl -i 'http://localhost:8123/?' -X POST --data-binary "/*zzzzzzzzzzzzzzzzzzzzzzzzzz - a6e7f39f

    curl -i 'http://localhost:8123/?' -X POST --data-binary "/*zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz - a6e7f39f

  • ну да, skip index = тормоза почти всегда за исключением очень высокоуникальных значений который сконцентрированы в малом количестве гранул..
  • все правильно там, where работает до order by, поэтому КХ по одному будет перебирать, до тех пор пока не наберется нужное количество ID1 попадающих в лимит.

    тут два варианта:
    1) эвристика: - знать сколько в среднем в интервале прилетает (куда нибудь класть таймстемп "10 events ago" для каждого ИД) и отсекать по дате заранее

    2) фулсканить 2 колонки, найти 10 строк, и прочесть уже все колонки используя индекс лукпа по ключу https://t.me/clickhouse_ru/214292
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #214300 #214304 05:15 PM, 16 Apr 2021
    Судя по всему, да. Т.е. создавать много таких таблиц - вредно для памяти.
  • https://t.me/clickhouse_ru
    @brbrbr #214305 05:15 PM, 16 Apr 2021
    Кстати, а это нормально, что запрос
    SELECT
    database,
    name,
    formatReadableSize(total_bytes)
    FROM system.tables
    WHERE engine in ('Memory','Set','Join');
    Для таблиц с движком Join возвращает NULL байт?

    КХ 20.8.3.18
  • @AlexeyLemeshevski #214306 06:01 PM, 16 Apr 2021
    Всем привет) а кто в каком типе данных хранит цены (с копейками) товаров?) В документации не рекомендуют Float. На тестах я не заметил разницы в скорости на sum, avg между int и float.

    А в чем же тогда хранить?

    Decimal - из документации видно, что есть нюансы с приведением к другим типам при сравнении и т.п.

    Хранить в int в копейках? Боюсь ошибок в использовании. Постоянно на 100 делить при выводе и т.п.

    Хранить в 2х полях и копейки отдельно? Кажется, не удобно.

    Ничего лучше float не приходит в голову.

    Какой тип вы используете?)
  • https://t.me/clickhouse_ru
    @artemhnilov #214307 06:07 PM, 16 Apr 2021
    Decimal, но у меня копейки 8 знаков после запятой.