• 01 July 2021 (184 messages)
  • https://t.me/clickhouse_ru
    @mib32 #224672 05:14 AM, 01 Jul 2021
    Пытаюсь на маке установить из бинарника. Скачал, запускаю

    sudo ./clickhouse install
    Copying ClickHouse binary to /usr/bin/clickhouse.new
    Code: 76, e.displayText() = DB::ErrnoException: Cannot open file /usr/bin/clickhouse.new, errno: 1, strerror: Operation not permitted (version 21.8.1.7325 (official build))
  • https://t.me/clickhouse_ru
    Думаю как вариант дать доступ терминалу к ФС. Это дополнительные перемешены макос
  • https://t.me/clickhouse_ru
    @jakimov #224674 05:24 AM, 01 Jul 2021
    Не 100% что поможет, но что то подобное было при установке в системные директории
  • https://t.me/clickhouse_ru
    @jakimov #224675 05:25 AM, 01 Jul 2021
    А по-хорошему на маке лучше ставить через докер или брю
  • https://t.me/clickhouse_ru
    @mib32 ↶ Reply to #224675 #224676 06:02 AM, 01 Jul 2021
    не посоветуете какой именно тап в брю? там разные есть есть такой старенький https://github.com/arduanov/homebrew-clickhouse
    GitHub - arduanov/homebrew-clickhouse: ClickHouse for MacOS Sierra and High Sierra.

    ClickHouse for MacOS Sierra and High Sierra. Contribute to arduanov/homebrew-clickhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Надо пробовать. Я бы через докер поставил
  • https://t.me/clickhouse_ru
    @mib32 #224678 06:19 AM, 01 Jul 2021
    хз, у меня 8гб оперативки и докер дико замедляет мак
  • https://t.me/clickhouse_ru
    @jakimov #224679 06:23 AM, 01 Jul 2021
    Ну так можно выделить 1 гб для одного контейнера или сколько не жалко. Настраивается все достаточно просто
  • https://t.me/clickhouse_ru
    @jakimov #224680 06:24 AM, 01 Jul 2021
    В настройках просто подвигайте ползунки )
  • https://t.me/clickhouse_ru
    @mib32 ↶ Reply to #224679 #224681 06:24 AM, 01 Jul 2021
    да вот даже с 1ГБ. ну лан, пасибо в общем, попробую действительно с докера еще раз
  • https://t.me/clickhouse_ru
    @mib32 #224682 06:25 AM, 01 Jul 2021
    все равно мак мини м1 жду 16гб как придёт
  • https://t.me/clickhouse_ru
    @jakimov #224683 06:25 AM, 01 Jul 2021
    На m1 тоже могут быть приключения ) У меня например перкона-сервер8 не собирается под докером нормально )
  • @salionov #224684 07:35 AM, 01 Jul 2021
    На м1 клик в последнее время туда сюда запускается
  • @dj_mixer #224685 07:45 AM, 01 Jul 2021
    при наличии двух датацентров, и добавлении реплик, как можно заставить реплицировать данные с локальных реплик ?
  • @1789158330 #224686 07:57 AM, 01 Jul 2021
    Всем привет, подскажите, пожалуйста, где задаётся параметр в настройках сервера allow_experimental_window_function? Версия CH 21.05
  • https://t.me/clickhouse_ru
    в /etc/clickhouse-server/config.d/allow_experimental_window_functions.xml

    <yandex><allow_experimental_window_functions>1</allow_experimental_window_functions></yandex>
  • https://t.me/clickhouse_ru
    @Makasinov #224688 08:26 AM, 01 Jul 2021
    Привет народ! С места в карьер
    2021.07.01 08:20:41.604567 [ 16499 ] {} <Information> banner.messages_local (ReplicatedMergeTreePartCheckThread): Part 202106_4168_4168_0 looks good.
    2021.07.01 08:20:41.604649 [ 16497 ] {} <Warning> banner.messages_local (ReplicatedMergeTreePartCheckThread): Checking part 202106_4143_4143_0
    2021.07.01 08:20:41.609060 [ 16497 ] {} <Warning> banner.messages_local (ReplicatedMergeTreePartCheckThread): Checking data of part 202106_4143_4143_0.
    2021.07.01 08:20:41.626999 [ 16497 ] {} <Information> banner.messages_local (ReplicatedMergeTreePartCheckThread): Part 202106_4143_4143_0 looks good.
    2021.07.01 08:20:41.627120 [ 16502 ] {} <Warning> banner.messages_local (ReplicatedMergeTreePartCheckThread): Checking part 202106_4155_4155_0
    2021.07.01 08:20:41.630262 [ 16861 ] {} <Error> banner.messages_local (e5e1fb8b-ae1f-4686-9993-4bc6080dba99): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 33, e.displayText() = DB::ParsingException: Cannot read all array values: read just 76107 of 125236: (while reading column response.request): (while reading from part /opt/clickhouse/data/store/e5e/e5e1fb8b-ae1f-4686-9993-4bc6080dba99/202106_4143_4143_0/ from mark 0 with max_rows_to_read = 8192): While executing MergeTreeSequentialSource, Stack trace (when copying this message, always include the lines below):

    0. DB::ParsingException::ParsingException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x8609f13 in /usr/bin/clickhouse
    1. DB::DataTypeArray::deserializeBinaryBulkWithMultipleStreams(DB::IColumn&, unsigned long, DB::IDataType::DeserializeBinaryBulkSettings&, std::__1::shared_ptr<DB::IDataType::DeserializeBinaryBulkState>&) const @ 0xe9b0b2d in /usr/bin/clickhouse
    2. DB::MergeTreeReaderWide::readData(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::IDataType const&, DB::IColumn&, unsigned long, bool, unsigned long, bool) @ 0xf6fd699 in /usr/bin/clickhouse
    3. DB::MergeTreeReaderWide::readRows(unsigned long, bool, unsigned long, std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > >&) @ 0xf6fc9b0 in /usr/bin/clickhouse
    4. DB::MergeTreeSequentialSource::generate() @ 0xf70e11a in /usr/bin/clickhouse
    5. DB::ISource::tryGenerate() @ 0xf8dd6c5 in /usr/bin/clickhouse
    6. DB::ISource::work() @ 0xf8dd3ea in /usr/bin/clickhouse
    7. DB::SourceWithProgress::work() @ 0xfa44afa in /usr/bin/clickhouse
    8. ? @ 0xf91728c in /usr/bin/clickhouse
    9. DB::PipelineExecutor::executeStepImpl(unsigned long, unsigned long, std::__1::atomic<bool>*) @ 0xf914036 in /usr/bin/clickhouse
    10. DB::PipelineExecutor::executeStep(std::__1::atomic<bool>*) @ 0xf9129bc in /usr/bin/clickhouse
    11. DB::PullingPipelineExecutor::pull(DB::Chunk&) @ 0xf920a49 in /usr/bin/clickhouse
    12. DB::PullingPipelineExecutor::pull(DB::Block&) @ 0xf920b20 in /usr/bin/clickhouse
    13. DB::PipelineExecutingBlockInputStream::readImpl() @ 0xf90e8a4 in /usr/bin/clickhouse
    14. DB::IBlockInputStream::read() @ 0xe98a1d5 in /usr/bin/clickhouse
    15. DB::TTLBlockInputStream::readImpl() @ 0xf64df4b in /usr/bin/clickhouse
    16. DB::IBlockInputStream::read() @ 0xe98a1d5 in /usr/bin/clickhouse
    17. DB::ExpressionBlockInputStream::readImpl() @ 0xf652297 in /usr/bin/clickhouse
    18. DB::IBlockInputStream::read() @ 0xe98a1d5 in /usr/bin/clickhouse
    19. DB::MaterializingBlockInputStream::readImpl() @ 0xee3937d in /usr/bin/clickhouse
    20. DB::IBlockInputStream::read() @ 0xe98a1d5 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @Makasinov #224689 08:26 AM, 01 Jul 2021
    21. DB::MergeTreeDataMergerMutator::mergePartsToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, long, DB::Context const&, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, bool, 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&) @ 0xf62b1d9 in /usr/bin/clickhouse
    22. DB::StorageReplicatedMergeTree::tryExecuteMerge(DB::ReplicatedMergeTreeLogEntry const&) @ 0xf40a649 in /usr/bin/clickhouse
    23. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0xf3ff97c in /usr/bin/clickhouse
    24. ? @ 0xf46dbac in /usr/bin/clickhouse
    25. 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>&)>) @ 0xf7815c5 in /usr/bin/clickhouse
    26. DB::StorageReplicatedMergeTree::processQueueEntry(std::__1::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>) @ 0xf42862a in /usr/bin/clickhouse
    27. ? @ 0xf46e735 in /usr/bin/clickhouse
    28. ? @ 0xf58562d in /usr/bin/clickhouse
    29. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x86441bd in /usr/bin/clickhouse
    30. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() @ 0x864671f in /usr/bin/clickhouse
    31. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    (version 21.1.2.15 (official build))
    Колонка на которую сетует кх имеет кастомный ттл.
    response.request Array(String) TTL stats_day + toIntervalDay(1),
    Я пытался сделать detach part и вот что вышло
    Code: 384. DB::Exception: Received from ch2.wpw.sh:9000. DB::Exception: Part 202106_4155_4155_0 is currently participating in a background operation (mutation/merge), try again later.
    Потом стопнул мерджи
    system stop merges banner.messages_local
    но и это не помогло, ошибка та же. Раньше на колонке был ещё индекс, для теста убрал. В system.mutations пусто, в system.merges три записи на TTL_DELETE Horizontal, REGULAR Horizontal и REGULAR Undecided
  • https://t.me/clickhouse_ru
    @Makasinov #224690 08:27 AM, 01 Jul 2021
    В поиске по чату нашел всего два упоминания этой же проблемы, но решения там нет
  • @vvvjhaq #224692 09:32 AM, 01 Jul 2021
    Привет! Можно на ходу подменить MV, без простоя вставки?
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW OR REPLACE db.mv_name
    пробовали?
  • не пробовал, видел это функционал, но хотелось бы просто уточнить, поедет ли он мгновенно?
  • https://t.me/clickhouse_ru
    короче нет, такой функционал недоступен
    так что краткий ответ
    надо стопать INSERT
  • спасибо, тоже у себя смоделировал вставку, сейчас сверю
  • https://t.me/clickhouse_ru
    @hostadminonline #224697 10:10 AM, 01 Jul 2021
    добрый день, подскажите плз
    привык к реляционным и noSQL базам данных и не могу понять с индексами
    все-таки в КХ они по типу btree или нет ?
    потмоу-что при сортировке есть упоминания что в начало ORDER BY надо ставить то поле которое максимально изменчивое .... но если это работает по btree с поиском остальных полей по которым идет основное отсечение данных будут проблемы .... все-таки чем руководствоваться ? а то в документация я так и не нашел полного объяснения
  • https://t.me/clickhouse_ru
    не btree

    Просто список значений через каждые N строк
  • https://t.me/clickhouse_ru
    нет
    в CH вообще не btree

    в CH - индексы по типу data skip indexes
    то есть они работают по принципу, ой у нас тут WHERE над колонкой по которой индекс есть
    дорогой индекс, проверь пожалуйста, вот этот кусок данных, а можно ли его не читать чтобы фильтровать и скипнуть
  • https://t.me/clickhouse_ru
    @ARyndin #224700 10:14 AM, 01 Jul 2021
    Всем привет. Сталкиваюсь с проблемой — при удалении из таблицы данных с условием (ALTER TABLE DELETE WHERE ...) и последующей за удалением вставкой часть данных теряется. Как выясняется что данных нет — в query_log появляется запись с written_rows = X, при этом в самой таблице строк = Y < X. Таблица реплицированна на три машины, при этом на двух репликах DB=Atomic, на одной=Ordinary
    При этом в логах из необычного разве что There is no part xxx in ZooKeeper, it was only in filesystem
    Если таблицу переделать из Replicated в MergeTree, то такого поведения не наблюдается.
    Ещё вроде становится лучше если выставить insert_quorum=3, с этой опцией потерь пока не ловили
  • https://t.me/clickhouse_ru
    ALTER TABLE ... ON CLUSTER делаете? или просто?
  • https://t.me/clickhouse_ru
    ну т.е. если у меня таблица например date, clientId, doits
    самый идеальный вариант когда я делаю order by (date, clientId) а не (clientId, date) ? правильно ?
  • https://t.me/clickhouse_ru
    просто
    но с опцией mutations_sync=2
    то есть изменения завершаются везде, потом вставка
  • https://t.me/clickhouse_ru
    В начало надо ставить минимально изменчивое, а не максимально.
  • https://t.me/clickhouse_ru
    @hostadminonline #224706 10:19 AM, 01 Jul 2021
    вчера были рассуждения что чтобы отсортировать по DESC длямаксимальнйо скорости нужно date ставить на первое место
  • https://t.me/clickhouse_ru
    лучше date, clientid
    чем cleintid, date

    только потому что обычно вы будете date указывать в запросе примерно всегда
    и оно монотонно возрастающее
    поэтому primary key легче skip по min max условиям куски данных... читая .mrk

    но вы еще про PARTITION BY не забывайте его тоже по toYYYMM(date)
    лучше сделать
  • https://t.me/clickhouse_ru
    спасибо большое .... вроде смыслы понял
  • https://t.me/clickhouse_ru
    @hostadminonline #224709 10:31 AM, 01 Jul 2021
    еще вопрос с партицированием )))
    а что лучше или в чем могут быть подводные камни если я например партицирование делаю по дням или по месяцам
    в первом случае партиций получается много и вроде как хорошо если я ищу интервалы дат по дням, но если я например возьму интиервал несколько месяцев с середины месяца каждый что будет в итоге выгоднее много партиций по дню или все таки партицирование по месяцам во втором случае читать база будет из 3х партиций например но отбросит данные в начале за 15 дней и в конце за 15 дней .... в первом случае она возьмет 60 дней и ни чего отбрасывать не будет .... но получается нагрузка IO будет в теории выше так как это чтение сразу из 60 файлов ..... правильно понимаю ?
  • https://t.me/clickhouse_ru
    верно понимаете, в большинстве случаев достаточно партиционирования по месяцу
    если сделаете партиционирование по дню, у вас начнут появляться подводные камни связанные с большим количеством файлов (медленный старт ch, медленная подготовка к запросу и т.д.), причем не сразу, а через какое-то время, когда отказываться будет больно
    + к партиционированию популярна практика ставить дату (toDate того же поля что и в partition by) на 1-2 место в pk в зависимости от запросов
    отмечу, что это популярный, но все-таки частный случай, в общем случае могут быть и минутные партиции, если действительно нужно
  • https://t.me/clickhouse_ru
    @hostadminonline #224711 10:38 AM, 01 Jul 2021
    оо спасибо .... про медленный старт и медленную подготовку запроса это существенный минус
  • @1063161973 #224713 10:39 AM, 01 Jul 2021
    Добрый день.
    Корректно ли при mutations_sync=0 будут обработаны запросы
    неоднократного добавления и удаления строк по одному условию ?
    Загружаются чеки, которые могут приходить по нескольку раз
    от магазина за дату (состав пакета с чеками может изменяться).
    В конечном счете останется последняя добавленная версия ?
  • @1063161973 #224714 10:41 AM, 01 Jul 2021
    (т.е. перед добавлением по условию вначале удалять строки по этому же условию)
  • https://t.me/clickhouse_ru
    @hostadminonline #224715 10:43 AM, 01 Jul 2021
    кстати про мутацию )
    mutations_sync выставлен на 1, если изменяю таблицы, добавление или модификация полей все работает как нужно, НО, если делаю ренейм таблицы она ренеймится только на 1 реплике а констуркцию on cluster не принимает
  • https://t.me/clickhouse_ru
    слишком частые партиции, убьют вам производительность
    у вас будет миллион каталогов в /var/lib/clickhouse/data/database_name/table_name/
  • https://t.me/clickhouse_ru
    потому что у вас Atomic только на 2 репликах из 3
  • https://t.me/clickhouse_ru
    ну собственно из за IO убьется производительность ... но тут на сколкьо я понимаю очень важно понимать какие интервалы дат берутся
  • https://t.me/clickhouse_ru
    у меня пока 1 шард с 2мя репликами
  • https://t.me/clickhouse_ru
    @hostadminonline #224720 10:45 AM, 01 Jul 2021
    а КХ юзаю в яндекс облаке
  • @UserNameNotKnow #224722 11:20 AM, 01 Jul 2021
    Добрый день, подскажите пожалуйста, копирую базу с помощью clickhouse-copier содержащую таблицу с данными и MATERIALIZED VIEW.
    Последовательность следующая:
    1. создаю таблицу в базе назначения
    2. создаю MATERIALIZED VIEW
    3. копирую данные в созданную таблицу с помощью clickhouse-copier

    Но к сожалению после завершения копирования выборка из MATERIALIZED VIEW возвращает 0 записей
    хотя на источнике данных все возвращается нормально
  • https://t.me/clickhouse_ru
    materialized view триггерится на инсерты ж вроде? а copier это другое
  • https://t.me/clickhouse_ru
    замените clickhouse-copier
    на INSERT INTO ... SELECT ... FROM remote()
    и тогда получится
  • Вся проблема в том что соединение немного не стабильно, не получится ли ситауция при которой перенесу не все данные?
  • @UserNameNotKnow #224727 11:29 AM, 01 Jul 2021
    Нет ли возможности более изящно наполнить VIEW, не выполняя повторную перегонку?
  • у вас .inner МВ или в dest таблицу?
  • .inner таблицы сушествуют но пустые
  • ну тогда как slach подсказал вам, хороший вариант.
  • @UserNameNotKnow #224731 11:43 AM, 01 Jul 2021
    то есть запустить копирование прямо в эти таблицы?
  • видимо, да.
  • @UserNameNotKnow #224733 11:46 AM, 01 Jul 2021
    спасибо за информацию, попробую
  • @primorial #224735 12:16 PM, 01 Jul 2021
    Есть вопрос про сериализацию и десериализацию.

    Какие есть механизмы, чтобы данные превратить в бинарное поле и наоборот?
    Может есть возможность сделать SELECT ... FORMAT ... в поле (строку)?
    И обратное преобразование?

    Есть ли возможность превратить какие-нибудь данные в json? Или лучше в нативные какие-нибудь, чтобы быстро парсило?
  • https://t.me/clickhouse_ru
    если мне не изменяет память, clickhouse-copier вроде сам использует подход INSERT INTO ... SELECT .FROM remote()...
    поэтому странно что у вас materialized view Не стриггерились...
  • по логам более похоже что он делает добавление в part таблицы, а далее их соединяет с основной с помощью attach
  • https://t.me/clickhouse_ru
    а вы всю БД тащите или только конкретные таблицы?
  • по таблично, но параллельно изменяю ENGINE на Replicated и схему разбития на партиции
  • https://t.me/clickhouse_ru
    @aksimemor #224740 12:39 PM, 01 Jul 2021
    Ребят у кого получилось сбилдить odbc драйвер под Apple M1?

    Пробовал с конфигурацией -DBUILD_TESTING=OFF

    Пробовал по этому гайду https://github.com/ClickHouse/clickhouse-odbc/issues/363#issuecomment-871242730 (Тут проблема возникает с неправильным префиксом установки)

    Сам драйвер получилось сбилдить, но tableau выдает ошибку:

    [iODBC][Driver Manager]dlopen(/opt/homebrew/lib/libclickhouseodbcw.dylib, 6): no suitable image found. Did find: /opt/homebrew/lib/libclickhouseodbcw.dylib: mach-o, but wrong architecture /opt/homebrew/lib/libclickhouseodbcw.dylib: mach-o, but wrong ar
    [iODBC][Driver Manager]Specified driver could not be loaded
    Generic ODBC requires additional configuration. The driver and DSN (data source name) must be installed and configured to match the connection.
  • https://t.me/clickhouse_ru
    file libclickhouseodbcw.dylib

    что говорит?
  • https://t.me/clickhouse_ru
    @aksimemor #224742 12:43 PM, 01 Jul 2021
    libclickhouseodbcw.dylib: Mach-O 64-bit dynamically linked shared library arm64
  • https://t.me/clickhouse_ru
    ну клево
    драйвер вы собрали под arm64
    а Tableau у вас под Rosetta запускается и собрана под x86_64
  • https://t.me/clickhouse_ru
    @aksimemor #224744 12:46 PM, 01 Jul 2021
    вот только под x86_64 не получается собрать
  • https://t.me/clickhouse_ru
    @aksimemor #224745 12:47 PM, 01 Jul 2021
    сейчас попробую заново все собрать с опцией arch -x86_64
  • https://t.me/clickhouse_ru
    там рассказно сразу что homebrew даже надо под x64 поставить
  • https://t.me/clickhouse_ru
    @aksimemor #224747 12:51 PM, 01 Jul 2021
    да,только есть нюанс, его если ставишь под x64, то надо и остальные видимо команды выполнять с префиксом arch -x86_64
  • https://t.me/clickhouse_ru
    @SergeyLossev #224748 12:57 PM, 01 Jul 2021
    Кто-нибудь понимает, что эта фигня может значить?
  • https://t.me/clickhouse_ru
    @SergeyLossev #224749 12:58 PM, 01 Jul 2021
    При обращении к таблице выдаёт ошибку
    Code: 76, e.displayText() = DB::ErrnoException: Cannot open file /data/clickhouse/data/data_flat/flat_temp/20210317-7-3-1_263257_263257_0/simple_date.bin, errno: 74, strerror: Bad message: While executing MergeTreeThread (version 20.10.3.30 (official build))
  • https://t.me/clickhouse_ru
    @jakimov #224750 12:59 PM, 01 Jul 2021
    Что это была ссыла на файл и теперь файла нет?
  • https://t.me/clickhouse_ru
    @jakimov #224751 12:59 PM, 01 Jul 2021
    Встань на этот файл что внизу показывает или лучше сделать в консольке ls -alh в этой папке
  • https://t.me/clickhouse_ru
    @jakimov #224752 01:00 PM, 01 Jul 2021
    Так как гадать что там mc вывел такое себе )
  • https://t.me/clickhouse_ru
    @SergeyLossev #224753 01:00 PM, 01 Jul 2021
    Т.е. простой запрос select * FROM data_flat.flat_temp limit 1 - отдаёт результат

    А такой
    SELECT min(simple_date)
    FROM data_flat.flat_temp
    WHERE
    ProjectID==7 AND
    interaction_type=='session' AND
    src=='ga'
    limit 1 - отдаёт ошибку
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @SergeyLossev #224755 01:02 PM, 01 Jul 2021
    Диск, что ли, посыпался...
  • https://t.me/clickhouse_ru
    Вообще похоже. что в dmesg
  • https://t.me/clickhouse_ru
    чочо?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @SergeyLossev #224759 01:21 PM, 01 Jul 2021
    Наверное, это что-то очень плохое?
  • https://t.me/clickhouse_ru
    да посыпалась файлуха...
  • https://t.me/clickhouse_ru
    Это 100% точно?
    Чем спасать, куда бежать? Резервной копии нет. Можно чем-то потыкать? Есть ли шанс на спасение?
  • https://t.me/clickhouse_ru
    "чтото пошло не так"
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224761 #224763 01:34 PM, 01 Jul 2021
    > Резервной копии нет

    Ha-ha classic. (На самом деле сочувствую)
  • https://t.me/clickhouse_ru
    Оно, конечно, весело, только лучше бы иметь "какую-то тактику", чтобы её попридерживаться )
  • https://t.me/clickhouse_ru
    @dbalashov #224765 01:35 PM, 01 Jul 2021
    ну разваливающая ФС ето всегда не очень весело
  • https://t.me/clickhouse_ru
    а что это за сдвоенные равно ?
  • https://t.me/clickhouse_ru
    А что не так-то? Обычное сравнение. Дело не в нём и не в том, что в запросе, а в том, что если КХ вынужден перебирать файлы с датами, то натыкается на битый файл и отваливается
  • https://t.me/clickhouse_ru
    обычное это одно равно
  • https://t.me/clickhouse_ru
    @nikitosiusis #224769 01:42 PM, 01 Jul 2021
    ну как минимум она хочет файлчек. а в cat /proc/mdstat чего?
  • https://t.me/clickhouse_ru
    root@rstat:/data/clickhouse/data/data_flat/flat_temp/20210317-7-3-1_263257_263257_0# cat /proc/mdstat
    Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
    md1 : active raid1 sdd1[1] sda1[0](F)
    3906884608 blocks super 1.2 [2/1] [_U]
    bitmap: 21/30 pages [84KB], 65536KB chunk

    md0 : active raid1 sdc1[1] sdb1[0]
    937559040 blocks super 1.2 [2/2] [UU]
    bitmap: 3/7 pages [12KB], 65536KB chunk

    unused devices: <none>
  • @hhhackkk #224771 01:46 PM, 01 Jul 2021
    Всем привет, такой вопрос, можно ли использовать постгресовское мат вью в CH как внешний словарь?
  • https://t.me/clickhouse_ru
    @nikitosiusis #224772 01:46 PM, 01 Jul 2021
    выглядит как диск sda уже вылетел, а на диске sdd данные битые)
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @dmitry_lukyanov #224775 02:39 PM, 01 Jul 2021
    Коллеги, а подскажите, Zookeeper пользоваетель системный, если запускать не под root, обязательно должен иметь sudo права?
  • https://t.me/clickhouse_ru
    @aksimemor #224776 02:50 PM, 01 Jul 2021
    Возможно ли настроить datagrip так, чтобы он показывал с какой колонкой проблемы?
    Code: 386, e.displayText() = DB::Exception: There is no supertype for types UInt64, Float64 because some of them are integers and some are floating point, but there is no floating point type, that can exactly represent all required integers (version 20.8.8.2 (official build))
  • @simpl1g #224777 02:52 PM, 01 Jul 2021
    для начала кликхаус сам должен сказать с какой колонкой проблемы)
  • https://t.me/clickhouse_ru
    емнип, нет
  • https://t.me/clickhouse_ru
    @aksimemor #224779 02:53 PM, 01 Jul 2021
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    Ну тут проще уже самому смотреть где вы смешиваете UInt с Float64
  • https://t.me/clickhouse_ru
    @Elena_ru_bg #224783 03:16 PM, 01 Jul 2021
    Привет! подскажите, а можно ли сделать запрос, чтобы выбрать все колонки, кроме перечисленных?
  • https://t.me/clickhouse_ru
    да, смотрите здесь
    https://clickhouse.tech/docs/ru/sql-reference/statements/select/#except-modifier
    Синтаксис запросов SELECT

    Синтаксис запросов SELECT SELECT выполняет получение данных. [WITH expr_list|(subquery)] SELECT [DISTINCT [ON (column1,

  • https://t.me/clickhouse_ru
    спасибо!☺️
  • https://t.me/clickhouse_ru
    да, уже разобрался. Там просто больше 80 колонок, думал вдруг будет проще вариант
  • https://t.me/clickhouse_ru
    это пользовательская настройка, в профилях надо менять
  • https://t.me/clickhouse_ru
    переписали clickhouse-copier год назад, теперь он attach делает
  • https://t.me/clickhouse_ru
    @hatedabamboo #224789 03:42 PM, 01 Jul 2021
    Привет. Подскажите, пожалуйста, как использовать имя переменной в LIKE выражении?

    WITH some_query AS var
    SELECT count(), $var FROM table
    WHERE some_field LIKE '$var%'
    ?
  • https://t.me/clickhouse_ru
    LIKE var || '%', но some_query должно быть константой, в лайк вторым аргументом только константу можно.
  • https://t.me/clickhouse_ru
    @hatedabamboo #224791 03:47 PM, 01 Jul 2021
    Строка туда не подойдёт?
  • https://t.me/clickhouse_ru
    @hatedabamboo #224792 03:47 PM, 01 Jul 2021
    Сработало, спасибо.
  • https://t.me/clickhouse_ru
    Подскажите, когда вставляю данные, иногда сталкиваюсь с тем что блок данных не появляется в клике фактически, в логах при этом вижу
    2021.07.01 19:13:24.177819 [ 196994 ] {e0058ecb-c440-42ed-a021-942722ee1610} <Debug> default.my_table (0f3bc8c2-c945-4fa9-9c27-a46012c87163) (Replicated OutputStream): Wrote block with ID '202106_3127737653308942308_5198514521250551707', 1074621 rows
    2021.07.01 19:13:24.191290 [ 196994 ] {e0058ecb-c440-42ed-a021-942722ee1610} <Information> default.my_table (0f3bc8c2-c945-4fa9-9c27-a46012c87163) (Replicated OutputStream): Block with ID 202106_3127737653308942308_5198514521250551707 already exists locally as part 202106_287_287_0; ignoring it.
    блок записывается и следом игнорится, как он может быть на фс если только что был записан?
  • https://t.me/clickhouse_ru
    дедупликация
  • https://t.me/clickhouse_ru
    дедупликация чего? до вставки за указанное число было 0 строк
  • https://t.me/clickhouse_ru
    @salttan #224796 04:21 PM, 01 Jul 2021
    дедупликация блоков
    посмотрите, что лежит в 202106_287_287_0
    where _part='202106_287_287_0'
  • https://t.me/clickhouse_ru
    0 rows in set. Elapsed: 0.004 sec.
    Синтаксис же такой?
    SELECT *
    FROM my_table
    WHERE _part = '202106_287_287_0'
  • https://t.me/clickhouse_ru
    @qonsth #224798 04:51 PM, 01 Jul 2021
    SELECT * FROM leads FINAL WHERE approve_at <= '2021-06-22 07:49:44' AND `status`='hold' LIMIT 0, 20 FORMAT JSONEachRow

    exec time: [768ms]
    res.status: 500
    res.body: Code: 241, e.displayText() = DB::Exception: Memory limit (total) exceeded: would use 7.02 GiB (attempt to allocate chunk of 4287312 bytes), maximum: 7.01 GiB: (while reading column simple_operating_platform_string): (while reading from part /var/lib/clickhouse/data/dbname/leads/202011_115570_140157_779/ from mark 0 with max_rows_to_read = 8192): While executing MergeTree (version 20.8.3.18)

    Подскажите пожалуйста, почему может выводиться такая ошибка на запрос?
  • https://t.me/clickhouse_ru
    смержилось, видимо
    при инсерте чексумма блока сохраняется, и последующие блоки с той же чексуммой отбрасываются
    ищите, почему у вас блоки одинаковые
  • https://t.me/clickhouse_ru
    если мутация удаляет данные, и затем вставляется такой же кусок данных, он отбросится?
  • https://t.me/clickhouse_ru
    @salttan #224801 04:54 PM, 01 Jul 2021
    да
  • https://t.me/clickhouse_ru
    спасибо. а можно ли сделать чтобы мутация как-то более основательно "забывала" о блоках?
    чексуммы чтобы тёрлись и т.д.
  • https://t.me/clickhouse_ru
    @salttan #224803 04:55 PM, 01 Jul 2021
    мутация же не блоки удаляет, а строки
    откуда ей знать
  • https://t.me/clickhouse_ru
    но если удаляются строки, то должна пересчитыватсься чексумма?
    блок же меняется
  • https://t.me/clickhouse_ru
    @salttan #224805 04:56 PM, 01 Jul 2021
    drop partition удаляет чексуммы
  • https://t.me/clickhouse_ru
    нет
    дедупликация для идемпотентных инсертов сделана, а не для контроля данных в таблице
  • https://t.me/clickhouse_ru
    @salttan #224807 04:57 PM, 01 Jul 2021
    можно отключить дедупликацию
  • https://t.me/clickhouse_ru
    @salttan #224808 04:58 PM, 01 Jul 2021
    set insert_deduplicate=0
  • https://t.me/clickhouse_ru
    понял, благодарю.
  • https://t.me/clickhouse_ru
    Слишком жирные блоки final обрабатывает. Попробуйте в конец запроса дописать что-то типа settings max_block_size=1000, max_threads=2.
    А если колонки status или approve_at есть в order by таблицы, то пропишите условия для них в prewhere а не where. Или даже если нет в order by, но вы точно знаете, что оно не может по final схлопнутся с данными, не попадающими под фильтр.
  • https://t.me/clickhouse_ru
    Решения лучше, чем почистить всю таблицу я не нашел, поэтому выполнил TRUNCATE, но даже так вывалилась ошибка
    Code: 233. DB::Exception: Received from ch2.avs.infrapu.sh:9000. DB::Exception: Unexpected part name: 202106_4155_4155_0_0_5_999999999
    В итоге дропнул таблицу полностью со всех реплик и создал заново. Ошибки пропали
  • https://t.me/clickhouse_ru
    вот что обнаружил
    если брать блок определённого размера, то после мутации он может как заигнориться, так и вставиться
    проверил поведение несколько раз
  • https://t.me/clickhouse_ru
    скорее всего блоки чуть-чуть разные
    вы проверили, что чексумма одинаковая получается?
  • https://t.me/clickhouse_ru
    1. Как я могу проверить чек сумму?
    2. Может ли блок быть разным если вставка производится из одного и того же файла?
  • https://t.me/clickhouse_ru
    @salttan #224816 06:12 PM, 01 Jul 2021
    1. в Зукипере (у вас реплицированная таблица?)
    2. Зависит от атомарности инсерта из того файла
  • https://t.me/clickhouse_ru
    1. Реплицированная
    2. Одна крупная вставка. В логах отсвечивает одно и то же количество строк
  • https://t.me/clickhouse_ru
    @salttan #224818 06:15 PM, 01 Jul 2021
    И парт один получается?
  • https://t.me/clickhouse_ru
    @salttan #224819 06:15 PM, 01 Jul 2021
    Смотрите в Зукипер, там все блоки записаны
  • https://t.me/clickhouse_ru
    Разный или нет не могу точно сказать, но иногда он отбрасывается, иногда нет, по всей видимости всё таки разный
    В зукипере имена у блоков другие - более длинные
  • https://t.me/clickhouse_ru
    @hostadminonline #224821 07:04 PM, 01 Jul 2021
    подскажите плз, хочу таблицу сделать партицированной, на сколько я понимаю ее нужно создать и в нее залить данные, но мне выдается ошибка

    Too many partitions for single INSERT block (more than 100).
    The limit is controlled by 'max_partitions_per_insert_block' setting. Large number of partitions is a common misconception. It will lead to severe negative performance impact, including slow server startup, slow INSERT queries and slow SELECT queries. Recommended total number of partitions for a table is under 1000..10000. Please note, that partitioning is not intended to speed up SELECT queries (ORDER BY key is sufficient to make range queries fast). Partitions are intended for data manipulation (DROP PARTITION, etc).: While executing SinkToOutputStream.

    а какой размер max_partitions_per_insert_block ставить ? если это заливка типа
    insert into objects_sliced_new select * from objects_sliced
  • @simpl1g #224822 07:08 PM, 01 Jul 2021
    в идеале вставлять частями по партициям
  • @simpl1g #224823 07:08 PM, 01 Jul 2021
    но разово можете настройку выставить числу партиций которые вставляете
  • https://t.me/clickhouse_ru
    @hostadminonline #224824 07:09 PM, 01 Jul 2021
    просто у меня таблица не партицированная 200 млн записей
  • @simpl1g #224825 07:09 PM, 01 Jul 2021
    а новая по дате?
  • https://t.me/clickhouse_ru
    @hostadminonline #224826 07:09 PM, 01 Jul 2021
    новая по признаку + дата
  • @simpl1g #224827 07:10 PM, 01 Jul 2021
    select uniqExact(признак, дата) from objects_sliced -> число партиций
  • @simpl1g #224828 07:10 PM, 01 Jul 2021
    число не слишком большое получится?
  • https://t.me/clickhouse_ru
    @hostadminonline #224829 07:11 PM, 01 Jul 2021
    1768788
  • https://t.me/clickhouse_ru
    @hostadminonline #224830 07:11 PM, 01 Jul 2021
    жесть )
  • @simpl1g #224831 07:11 PM, 01 Jul 2021
    так работать не будет
  • @simpl1g #224832 07:11 PM, 01 Jul 2021
    зачем партиционировать по признаку?
  • https://t.me/clickhouse_ru
    @hostadminonline #224833 07:11 PM, 01 Jul 2021
    чтобы дропать можно было
  • https://t.me/clickhouse_ru
    @hostadminonline #224834 07:12 PM, 01 Jul 2021
    признак это номер клиента по которому ведутся логи
  • https://t.me/clickhouse_ru
    @hostadminonline #224835 07:12 PM, 01 Jul 2021
    как только клиент отказывается - партиция дропается
  • @simpl1g #224836 07:12 PM, 01 Jul 2021
    часто такое бывает?
  • https://t.me/clickhouse_ru
    @hostadminonline #224837 07:13 PM, 01 Jul 2021
    ну не шибко часто но бывает ... хранить данные по клиенту который не платит как то не впечатляет )
  • https://t.me/clickhouse_ru
    @hostadminonline #224838 07:13 PM, 01 Jul 2021
    дешевле хранить ?
  • https://t.me/clickhouse_ru
    @hostadminonline #224839 07:13 PM, 01 Jul 2021
    а стоп ... у меня ж не просто дата а дата до месяца
  • https://t.me/clickhouse_ru
    @hostadminonline #224840 07:14 PM, 01 Jul 2021
    60814
  • https://t.me/clickhouse_ru
    @hostadminonline #224841 07:14 PM, 01 Jul 2021
    все равно много ?
  • @simpl1g #224842 07:17 PM, 01 Jul 2021
    всеравно много, через пару месяцев набежит
  • @simpl1g #224843 07:17 PM, 01 Jul 2021
    проще хранить и раз в несколько месяцев чистить
  • https://t.me/clickhouse_ru
    @hostadminonline #224844 07:18 PM, 01 Jul 2021
    пока клиент платить мы должны хранить
  • https://t.me/clickhouse_ru
    @hostadminonline #224845 07:18 PM, 01 Jul 2021
    как вариант до года округлять
  • https://t.me/clickhouse_ru
    @hostadminonline #224846 07:18 PM, 01 Jul 2021
    получается около 7123 партиций
  • https://t.me/clickhouse_ru
    @hostadminonline #224847 07:18 PM, 01 Jul 2021
    а вообще какой порядок количества партиций - нормально ? 🙂
  • @simpl1g #224848 07:19 PM, 01 Jul 2021
    ну это понятно, собирать список клиентов которые ушли, и удалять данные по ним раз в пару месяцев
  • https://t.me/clickhouse_ru
    @hostadminonline #224849 07:19 PM, 01 Jul 2021
    так а как удалять если КХ не дает удалять ?
  • https://t.me/clickhouse_ru
    @hostadminonline #224850 07:19 PM, 01 Jul 2021
    я так понял нету функционала DELETE
  • https://t.me/clickhouse_ru
    мутациями
  • https://t.me/clickhouse_ru
    @unamedrus #224852 07:19 PM, 01 Jul 2021
    ALTER TABLE xxxx DELETE WHERE
  • https://t.me/clickhouse_ru
    @unamedrus #224853 07:19 PM, 01 Jul 2021
    Для удаление пользователей ОК
  • https://t.me/clickhouse_ru
    @hostadminonline #224854 07:20 PM, 01 Jul 2021
    эмммм. .. а где про это почитать ? а то ни разу не натыкался
  • https://t.me/clickhouse_ru
    @hostadminonline #224855 07:21 PM, 01 Jul 2021
    а вот нашел
  • https://t.me/clickhouse_ru
    @hostadminonline #224856 07:22 PM, 01 Jul 2021
    но я тогда не понимаю ... а вчем разница то между стандартным DELETE в любой другой БД ?
  • https://t.me/clickhouse_ru
    @hostadminonline #224857 07:22 PM, 01 Jul 2021
    это как-то лочит доступ к таблице или какие тут нюансы ?
  • @simpl1g #224858 07:22 PM, 01 Jul 2021
    затратная операция, лучше ей не злоупотреблять
  • https://t.me/clickhouse_ru
    Поизучал зукипер.
    Итак, в момент когда клик после мутации игнорит вставленную партицию, ни на фс, ни в зукипере нет ни одного блока данных (таблицу специально предварительно вычистил)
    В логах при этом вижу —
    Block with ID xxx already exists locally as part 202106_23_23_0; ignoring it.Block with ID xxx already exists locally as part 202106_23_23_0; ignoring it.

    Таким образом после вставки 0 строк, до вставки — тоже 0
  • HTTP клиент.
  • https://t.me/clickhouse_ru
    затратная операция + делается асинхронно, а не сразу как в обычных бд
  • она делается в фоне. если КХ упадет,
    может быть непонятен стейт данных (какая часть обновилась, какая нет).
    вообще чего только не словить
    https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-alter-modify-column-is-stuck-the-column-is-inaccessible.
  • @dj_mixer #224864 09:01 PM, 01 Jul 2021
    мы ещё ловили что иногда они не запускаются хотя всего хватает, и приходится рестартовать КХ
  • https://t.me/clickhouse_ru
    недавно пр был на тему того, что сбрасывать на 0 экспоненциальный backoff если пулл полностью занят.
  • https://t.me/clickhouse_ru
    параметр пользовательский, в профиле пользователя.
    Причем https://t.me/clickhouse_ru/220375
    Slach [altinity] in ClickHouse не тормозит

    в /etc/clickhouse-server/users.d/allow_experimental_window_functions.xml <yandex> <profiles><default><allow_experimental_window_functions>1</allow_experimental_window_functions></default></profiles> </yandex>

  • 02 July 2021 (144 messages)
  • https://t.me/clickhouse_ru
    это очень зря пользоваться 21.2 -- самой ранней версией, при наличии 21.1.9.4121.1.9.41_all.deb
    это похоже на баг в компактных партах
  • https://t.me/clickhouse_ru
    можно, есть modify, подробнее в issue в гитхабе
  • https://t.me/clickhouse_ru
    подбирать сортивку надо так, чтобы достич самой лучшей компресии, я просто делаю 10 таблиц с разным order by и заливаю 1 млн. строк, обычно нет смысла делать order by длинее чем 3 поля.
  • https://t.me/clickhouse_ru
    это дедупликация инсертов.
    есть параметр insert_deduplicate - 0 / 1
    подробнее в статье про репликациюю
  • https://t.me/clickhouse_ru
    это чушь и вообще про оптимизиацию select order by
  • https://t.me/clickhouse_ru
    берите по месяцу, в крайнем случае можно партиционировать по неделям toStartOfWeek
  • https://t.me/clickhouse_ru
    мутации не гарантируют что они завершатся, в гитхабе 100500 ишей про то что мутация, прошла, строки остались, или мутация зависла и не закончилась за месяц и так далее.
  • https://t.me/clickhouse_ru
    КХ поддерживает и =/== и <> / != это одно и тоже. И даже коментарии как // так и --
  • https://t.me/clickhouse_ru
    обычно системный как сервис, для запуска надо sudo, потому сервис.
    Но самому зукиперу рут не нужен, да и вообще никаким приложениям рут не нужен, кроме тех что хотят порты ниже 1024го
  • https://t.me/clickhouse_ru
    тут проблема в самом КХ, он не показывает где. ошибка
  • https://t.me/clickhouse_ru
    размер инсерта значения не имеет, просто для ста последних инстертов в таблицу хранятся контрольные суммы чтобы можно было повторять инсерты
  • https://t.me/clickhouse_ru
    max_partitions_per_insert_block=0
  • https://t.me/clickhouse_ru
    рекомеднуется 1000 партиций максимум, при 7000 партов ломается альтер, начинается медленный старт КХ, при 20тыс партов select начинают тормозить на анализе партов
  • https://t.me/clickhouse_ru
    нету этого и не будет, к сожалению это мало кому нужно
  • https://t.me/clickhouse_ru
    @Caside #224881 01:25 AM, 02 Jul 2021
    Помогите пожалуйста, есть подзапрос, в каждой строке уникальный id, start_date, end_date (даты с первыми днями месяцев). Нужно сделать запрос, в котором на каждый id будет столько строк с датами, сколько месяцев между start_date и end_date.

    Не совсем понимаю как в этом случае использовать numbers.
  • https://t.me/clickhouse_ru
    @dotsid #224882 01:56 AM, 02 Jul 2021
    Мне кажется, в этой задаче проще для каждой строчки сформировать массив длины равной количеству месяцев м/у start_date и end_date, а потом использовать ARRAY JOIN.
  • https://t.me/clickhouse_ru
    вам для отчета какого то надо?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #224883 #224884 03:19 AM, 02 Jul 2021
    да, чтобы потом по id джойнить другие колонки и протягивать по месяцам
  • https://t.me/clickhouse_ru
    SELECT
    id,
    arrayJoin(arrayMap(i -> (toStartOfMonth(b) + toIntervalMonth(i)), range(toUInt64(toYYYYMM(e) - toYYYYMM(b))))) AS m
    FROM
    (
    SELECT
    1 AS id,
    toDate('2021-01-01') AS b,
    toDate('2021-06-01') AS e
    )

    ┌─id─┬──────────m─┐
    │ 1 │ 2021-01-01 │
    │ 1 │ 2021-02-01 │
    │ 1 │ 2021-03-01 │
    │ 1 │ 2021-04-01 │
    │ 1 │ 2021-05-01 │
    └────┴────────────┘

    https://kb.altinity.com/altinity-kb-queries-and-syntax/join-with-calendar-using-arrays
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #224885 #224886 03:59 AM, 02 Jul 2021
    Звучит разумно, но я получаю эксепшн:
    Nested type Array(UInt64) cannot be inside Nullable type: While processing agreement_id, arrayJoin(arrayMap(i -> (toStartOfMonth(start_date) + toIntervalMonth(i)), range(toUInt64(toYYYYMM(end_date) - toYYYYMM(start_date))))) AS month (version 21.6.5.37 (official build))

    Возможно это из-за того, что мои start_date и end_date Nullable(DateTime)?
  • https://t.me/clickhouse_ru
    вместо toUInt64 ( ) надо cast( a - b, 'UInt64' )
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #224887 #224888 04:49 AM, 02 Jul 2021
    arrayJoin(arrayMap(i -> (toStartOfMonth(start_date) + toIntervalMonth(i)), range(CAST(toYYYYMM(end_date) - toYYYYMM(start_date),'UInt64')))) AS m

    Code: 69, e.displayText() = DB::Exception: A call to function range overflows, investigate the values of arguments you are passing: while executing 'FUNCTION range(CAST(minus(end_date, start_date), 'UInt64') :: 2) -> range(CAST(minus(end_date, start_date), 'UInt64')) Array(UInt64) : 4' (version 21.6.5.37 (official build))

    Не понимаю в чём ошибка. Можте вообще лучше dateDiff использовать внутри range? Хот тоже не помогает
  • https://t.me/clickhouse_ru
    у вас может быть такое что start_date > end_date?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #224889 #224890 04:55 AM, 02 Jul 2021
    нет, такого точно не должно быть. Но интересно, я заселектил toYYYYMM(start_date) и на выходе у меня такое
    2020-09-01 -> 202,009
    2021-08-01 -> 202,108
  • https://t.me/clickhouse_ru
    @Caside #224891 04:58 AM, 02 Jul 2021
    CAST(toYYYYMM(end_date) - toYYYYMM(start_date),'UInt64') выдаёт 99 или 100, хотя между старт и энд всего 1 год
  • https://t.me/clickhouse_ru
    @Caside #224892 05:02 AM, 02 Jul 2021
    select
    agreement_id,
    arrayJoin(arrayMap(i -> (toStartOfMonth(start_date) + toIntervalMonth(i)), range(12))) AS m
    Прекрасно работает, прямо как надо. Только у меня не везде разница 12 месяцев. То что внутри рейнджа неверно считается
  • https://t.me/clickhouse_ru
    @Caside #224893 05:07 AM, 02 Jul 2021
    arrayJoin(arrayMap(i -> (toStartOfMonth(start_date) + toIntervalMonth(i)), range(CAST(dateDiff('month', start_date, end_date),'UInt64')))) AS m
    выдаёт

    A call to function range overflows, investigate the values of arguments you are passing: while executing 'FUNCTION range(CAST(dateDiff('month', start_date, end_date), 'UInt64') :: 2) -> range(CAST(dateDiff('month', start_date, end_date), 'UInt64')) Array(UInt64) : 5' (version 21.6.5.37 (official build))
  • https://t.me/clickhouse_ru
    @Caside #224894 05:10 AM, 02 Jul 2021
    Нашёл косяк, где-то действительно старт деёт больше энд дейта, вы правы, всем спасибо
  • https://t.me/clickhouse_ru
    ну оно и должно быть числом
  • https://t.me/clickhouse_ru
    попробуйте dateDiff
    https://clickhouse.tech/docs/en/sql-reference/functions/date-time-functions/#date_diff
    Dates and Times | ClickHouse Documentation

    Functions for Working with Dates and Times Support for time zones. All functions for working with the date and time that

  • https://t.me/clickhouse_ru
    Кст, насчет дейтдифф - он же инт выдает, а как сделать так, чтоб он флоат выдавал? Мне нужно, чтоб выводились строки с разницей двух действий в 7 суток, но он все , что слегка больше 7 суток просто округляет до 7 дней и выдает лишнюю инфу. Или в таком случае unit = seconds сделать, чтоб разница была в N секунд за 7 суток?
  • https://t.me/clickhouse_ru
    Да, делайте по секундам
    dateDiff('second',end_date, start_date) <= 86400*7
  • https://t.me/clickhouse_ru
    Благодарю)
  • https://t.me/clickhouse_ru
    @IceCoub #224901 05:48 AM, 02 Jul 2021
    Привет всем!
    функции dictGetT больше нет в clickhouse?
    хотел использовать range_hashed словарь, но кх предлагает только функцию dictGet
  • https://t.me/clickhouse_ru
    константа 86400 извините
  • https://t.me/clickhouse_ru
    да, действительно фигня какая то
    используйте просто dictGet

    https://kb.altinity.com/altinity-kb-dictionaries/altinity-kb-range_hashed-example-open-intervals
  • https://t.me/clickhouse_ru
    Но как я понял если инсерт будет отличаться от предыдущего, получится другой блок с другим хешем, разве нет?
    В моём де случае ситуация противоположная, инсерт и количество строк в блоке одинаковое, но блок в половине случаев отбрасывается, в половине - нет
  • https://t.me/clickhouse_ru
    под dictGetT имеются в ввиду dictGetUInt8/dictGetString ?
  • https://t.me/clickhouse_ru
    нет
    там в доке прямо для range_hashed словарей ерунда похоже написана...
    устаревшая
    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#range-hashed
    Storing Dictionaries in Memory | ClickHouse Documentation

    Storing Dictionaries in Memory There are a variety of ways to store dictionaries in memory. We recommend flat, hashed an

  • @subotic0 #224909 08:29 AM, 02 Jul 2021
    Добрый день, каким образом можно сконверитировать строку вида '30062021190858' в datetime?
  • @simpl1g #224910 08:30 AM, 02 Jul 2021
    select toDateTime(toInt64('30062021190858’))
  • @simpl1g #224911 08:30 AM, 02 Jul 2021
    если это unix
  • @subotic0 #224912 08:31 AM, 02 Jul 2021
    не unix, интересует есть ли функция типа formatDateTime, только наоборот, из строки в дату\дейттайм?
  • https://t.me/clickhouse_ru
    parseDateTimeBestEffort
  • такой формат не распарсит навверное
  • https://t.me/clickhouse_ru
    @Makasinov #224915 08:40 AM, 02 Jul 2021
    Привет, столкнулся со странным поведением селекта. Есть агрегационная таблица со схлопыванием сырых ивентов по часам. Заметили дубли, хотя движок должен был бы их схлопнуть (ReplicatedAggregatingMergeTree). Если брать данные за текущий час, то дублей нет. Если брать данные за предыдущий час - видны дубли. Когда час закрывается, то за тот час когда были дубли - их больше не не будет. Если взять любой другой промежуток времени то дублей никогда не будет. Проблема только когда ставится where hour = toStartOfHour(now() - interval 1 hour). И я заметил, что это каким то образом связано с кол-вом шардов (их 4 и на каждую по реплике). Кол-во дублей равно кол-ву записей на шардах. Т.е. если на 1,2,3 шардах будет по записи, то в результате селекта в distributed таблицу будет 3 записи отдельных (только за предыдущий час)
  • https://t.me/clickhouse_ru
    @Makasinov #224916 08:41 AM, 02 Jul 2021
    Версия 21.1.2.15. Пробовал менять настройку distributed_group_by_no_merge, но это не помогает. Есть идеи куда копать?
  • DB::ParsingException: Cannot read DateTime: unexpected date: 107-20-21
  • https://t.me/clickhouse_ru
    @x1unix #224918 08:42 AM, 02 Jul 2021
    Добрый день, есть вопрос про Map в clickhouse.
    Условно говоря, у меня есть таблица с 3 колонками

    client_id UInt32
    algo_hs Map(String, Array(UInt32)
    datetime DateTime('UTC')

    В algo_hs лежит словарь с массивами (хешрейт по алгоритму), например:

    {
    "sha256": [26665000, 22520000, 22537000, 22460000],
    "scrypt": [5667659, 5736897, 5668138],
    ...
    }

    Планируется доставать average algo_hs по client_id за определенный период.

    Скажите пожалуйста насколько Map юзабелен на данный момент (он за эксперементальным флагом на данный момент)
    и можно ли делать выборку (avg) по значениям в map?
  • https://t.me/clickhouse_ru
    @justholmes #224919 08:42 AM, 02 Jul 2021
    Насчет DateTime: я же правильно понимаю, что как в sqlite чисто время (12:23:45) в колонку не получится записать? Искала доугие дата типы, но только DateTime и Date нашла
  • https://t.me/clickhouse_ru
    Ну запишется время для +-первого дня unix time
  • https://t.me/clickhouse_ru
    Типа 1970-01-01 12:23:45?
    Просто я когда чисто время ввела, у меня ошибка вышла, что неправильный формат ввожу
  • https://t.me/clickhouse_ru
    Да

    SELECT
    toTime(parseDateTimeBestEffort('12:23:45')),
    toTime(now())

    Query id: a13db777-6c9c-41c9-87cb-1024d7ebc642

    ┌─toTime(parseDateTimeBestEffort('12:23:45'))─┬───────toTime(now())─┐
    │ 1970-01-02 12:23:45 │ 1970-01-02 11:45:58 │
    └─────────────────────────────────────────────┴─────────────────────┘
  • https://t.me/clickhouse_ru
    Aggregating/replacing не гарантируют схлопывание. Используйте в запросах FINAL или агрегатные функции. Всё есть в доке или по чатику можно по искать по запросу "схлопывание" и т.д.
  • https://t.me/clickhouse_ru
    Окей, поняла, благодарю!
  • https://t.me/clickhouse_ru
    @raw0w #224925 08:56 AM, 02 Jul 2021
    привет! версия КХ 21.2.10.48
    подскажите, в чем может быть проблема: таблица движка KafkaEngine в связке с MV тянет всего по одной записи раз в 8 секунд, в то время как другие такие же связки читают сообщения с нормальной скоростью. Может ли это быть проблема со стороны КХ, и если да, то куда надо смотреть, или здесь КХ не при делах, и надо смотреть в сторону самой кафки?
    Читал https://altinitydb.medium.com/clickhouse-kafka-engine-faq-6248283e7b66 , смотрел параметры background_schedule_pool_size и BackgroundSchedulePoolTask - ничего выходящего за грани я там не увидел

    upd: solved
  • https://t.me/clickhouse_ru
    Сейчас используются агрегатные функции в духе
    countMergeIf(count, event_type = 'click') AS clicks,
    countMergeIf(count, event_type = 'show') AS impressions
    В исходной таблице соответственно count AggregateFunction(count)
    Разве так не должно работать без final?
  • https://t.me/clickhouse_ru
    а у вас случаем ключ шардирования не rand()? Вы можете писать одинаковые данные на разные шарды, и они никогда не схлопнутся
  • https://t.me/clickhouse_ru
    Приложение вставляет батчи в локальные таблицы, а потом эти данные уходят в агрегаты
  • https://t.me/clickhouse_ru
    @Makasinov #224930 09:31 AM, 02 Jul 2021
    Почти rand в целом
  • https://t.me/clickhouse_ru
    спасибо, помогло
  • https://t.me/clickhouse_ru
    ReplicatedAggregatingMergeTree не схлопывает дубли

    он только при background merge будет для полей с типами aggregatingState делать merge для одинаковых значений из ORDER BY
  • https://t.me/clickhouse_ru
    Возможно я неправильно описал происходящее. Дело не совсем в дублях. Как и подобает aggregatingMT движок суммирует значения по колонкам в order by. И если делать запросы на локальных таблицах, то всё суммируется верно, но если сделать тот же запрос на distributed, то кх не просуммирует каунтеры на каждой ноде в одну строку
  • https://t.me/clickhouse_ru
    @Makasinov #224934 10:01 AM, 02 Jul 2021
    Он выведет 4 строки (по строке на шард - всего 4 шарда соответственно)
  • https://t.me/clickhouse_ru
    @Makasinov #224935 10:02 AM, 02 Jul 2021
    Похоже на поведение distributed_group_by_no_merge = 1, когда нода на которой выполняется запрос не суммирует результаты, но он выключен
  • https://t.me/clickhouse_ru
    @xxSerik #224936 10:05 AM, 02 Jul 2021
    всех приветствую. первый раз сталкиваюсь сейчас с clickhouse. установлена версия 19.16. могли бы подсказать sql ориентированное управление в этой версии не поддерживается? вроде в xml access managment = 1 добавил, но create user не работает. проверил на тестовом сервере поднять последнюю стабильную версию там все ок
  • в 19.16 не было управления доступом через create user
  • https://t.me/clickhouse_ru
    access_management с 20.4 версии только доступно
  • https://t.me/clickhouse_ru
    @xxSerik #224939 10:37 AM, 02 Jul 2021
    ok. благодарю
  • https://t.me/clickhouse_ru
    в запросах к distributed аггрегационные фунции и GROUP BY есть ?
  • https://t.me/clickhouse_ru
    Есть всё перечисленное
  • https://t.me/clickhouse_ru
    Вот пример. Я только убрал много колонок по которым идет группировка, чтобы не захламлять
    SELECT adformat, event_time as hour, countMergeIf(count, event_type = 'click') AS clicks, sumMergeIf(cpc_sum, event_type = 'click') AS revenue_on_clicks
    FROM aggregates.events_hour
    WHERE toStartOfHour(event_time) = toStartOfHour(now() - interval 1 hour)
    GROUP BY adformat
  • https://t.me/clickhouse_ru
    т.е. если используете аггрегирубщие функции и group by, то дублей нет, если смотрите сырые данные, то дубли есть? я правильно вас понимаю?
  • https://t.me/clickhouse_ru
    в сырых дублей нет и суммирование правильное, но если брать из aggregatingMT как я скидывал ранее, то суммирования не произойдёт - вместо одной строки будет 4 строки с одинаковыми колонками, но с разными суммами
  • https://t.me/clickhouse_ru
    @Makasinov #224945 12:06 PM, 02 Jul 2021
    Например есть два шарда. На первом результат селекта
    adformat,clicks,revenue_on_clicks
    display,5,0.05
    На втором будет
    adformat,clicks,revenue_on_clicks
    display,2,0.02
    Если выполнить схожий запрос на агрегатах, будет не
    adformat,clicks,revenue_on_clicks
    display,7,0.07
    А будет
    adformat,clicks,revenue_on_clicks
    display,5,0.05
    display,2,0.02
  • https://t.me/clickhouse_ru
    Но там же GROUP BY adformat. Как там может быть "display" 2 раза?
  • https://t.me/clickhouse_ru
    Собственно... В этом и вопрос как такое может быть. В понедельник планирую обновить кх в надежде что этот казус поправится. На стейджевом кластере из двух нод такой аномалии не заметил, хотя версия там такая же, таблицы идентичные и данные такие же
  • https://t.me/clickhouse_ru
    либо это мегабаг на стороне кликхауса, либо, что более вероятно у вас в группировке есть ещё какое-то поле, которое на первый взгляд ни на что не влияет и не должно приводить к дублированию строк, но на самом деле оно-то и влияет :) ну и ещё вариант, что в селекте используется arrayJoin или типо того, что может наплодить раздвоение. ну или join какой-то, который вроде словарь и не должен раздваивать, но раздваивает.
    либо вы в админке смотрите и видите второй раз туже строку на другой странице или ещё какая хрень :)
  • @izy_di #224950 01:17 PM, 02 Jul 2021
    Друзья у меня есть вопросик такого плана. Мне надо перегнать json данные из mongodb в clickhouse. И если с большей частью полей я я разобрался nj вот с одним нет. У меня есть ключ meta с вложенным словарем и туда пихаются куча всяких разных данных и они по большей части рандомные. Какбы мне правильно хранить это поле ? Превращать в строку ? Или есть какото способ который я не могу найти ))
  • https://t.me/clickhouse_ru
    Мы пока закрыли это вопрос через добавления FINAL. Пока работает и всё сходится как надо. Смотрю всегда через clickhouse-client в консоли, ибо ну его эти табиксы и прочие админки от юродивых) Самое странное, что раньше всё работало как надо, проблема началась месяц назад, и, конечно, никто ничего не делал ¯\_(ツ)_/¯
  • @izy_di ↶ Reply to #224950 #224952 01:21 PM, 02 Jul 2021
    типо что то вроде этого
    "meta" : {
    "file_id" : ObjectId("60df02518a2e6020b738dc9b"),
    "folder_id" : ObjectId("5bae265d007791646ee1f836"),
    "file_name" : "Test",
    "common_id" : "nGQZPhNfHeen2jy0xLVzJyxGnJxiq7"
    },
    "meta" : {
    "user_id" : "nGQZPhNfHeen2jy0xLVzJyxGnJxiq7",
    "car_name": "mazda"
    },

    И прям оч все по разному , я хотел каакието общие штуки сделать но их оч мало
  • @izy_di #224953 01:22 PM, 02 Jul 2021
    а так это просто нагрузочная инфа, для менеджера чтобы понять что в этом конкретном json происходило
  • https://t.me/clickhouse_ru
    а есть create table этого AggregatingMergeTree?
  • https://t.me/clickhouse_ru
    я б хранил на вашем месте json как строку в кх
  • https://t.me/clickhouse_ru
    @critskiy #224956 01:23 PM, 02 Jul 2021
    если данная информация не несет ничего нагруженного. А вот со стороны app layer, емнип, занимался бы десериализацией при необходимости
  • @izy_di #224957 01:29 PM, 02 Jul 2021
    емнип а это что ?
  • @smrnow #224958 01:31 PM, 02 Jul 2021
    если мне не изменяет память (оперативная)
  • https://t.me/clickhouse_ru
    Напрашивается исользовать json, тем более, что в кликхаусе куча функций для работы с ним. Будет проблема только если понадобится в этом json проапдейтить какое-нибудь поле.
  • @izy_di ↶ Reply to #224959 #224960 01:37 PM, 02 Jul 2021
    я ненашел там типо данных json? или я вас не понял))
  • https://t.me/clickhouse_ru
    @sochnyizapoi #224961 01:39 PM, 02 Jul 2021
    Всем привет!
    Как понять, к какому timezone относится timestamp?
    В бд timestamp, например, в таком виде «1,579,100,244»
  • https://t.me/clickhouse_ru
    не будет проблем, все в зависимости от того, каким образом будут спроектированы и какие требования выдвигаются бизнесом. Если нужна будет версионность, - да тут надо будет думать, но если менеджер не особо требует, то значит и изменения будут не столь постоянны
  • https://t.me/clickhouse_ru
    @critskiy #224963 01:39 PM, 02 Jul 2021
    притом, что само поле по себе хранит только метаданные :)
  • https://t.me/clickhouse_ru
    Такого типа и нет. Сохраняйте как строку. В доке пощите json найдёте все нужные функции.
  • @izy_di #224966 01:49 PM, 02 Jul 2021
    типо можно схохронятькак строку а потом выковыривать из этой строки json и кaкто им баловаться. Кажись понял . Буду эксперементировать.
  • https://t.me/clickhouse_ru
    JSON | ClickHouse Documentation

    Functions for Working with JSON In Yandex.Metrica, JSON is transmitted by users as session parameters. There are some sp

  • https://t.me/clickhouse_ru
    CREATE TABLE aggregates.events_hour_local (
    `stats_day` Date,
    `event_time` DateTime,
    `event_type` LowCardinality(String),
    `ad_type` LowCardinality(String),
    `domain_referrer` String,
    `campaign_id` UInt32,
    `spot_id` UInt32,
    `spot_size` UInt32,
    `country` LowCardinality(String),
    `os_type` LowCardinality(String),
    `os_family` LowCardinality(String),
    `browser_name` LowCardinality(String),
    `browser_family` LowCardinality(String),
    `utm_source` String,
    `utm_medium` String,
    `utm_campaign` String,
    `utm_content` String,
    `cpc_sum` AggregateFunction(sum, Float64),
    `cpm_sum` AggregateFunction(sum, Float64),
    `ecpm_sum` AggregateFunction(sum, Float64),
    `count` AggregateFunction(count)
    ) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/{cluster}/tables/{shard}/aggregates/user_events_hour_local', '{replica}')
    PARTITION BY toYYYYMM(stats_day)
    ORDER BY (stats_day, event_time, event_type, ad_type, domain_referrer, country, campaign_id, spot_id, spot_size, browser_name, browser_family, os_type, os_family, utm_source, utm_medium, utm_campaign, utm_content)
    TTL stats_day + toIntervalMonth(6);
  • https://t.me/clickhouse_ru
    Локаль сервера, либо укажите timezone при создании поля date/datetime
  • https://t.me/clickhouse_ru
    >ad_type LowCardinality(String)
    может LowCardinality кривовато работает на Replicated таблицах...
  • https://t.me/clickhouse_ru
    group by concat(ad_type,'')
  • https://t.me/clickhouse_ru
    @rasstr0en #224972 02:15 PM, 02 Jul 2021
    проверить гипотезу что группируется по словарю на каждом шарде по разному
  • https://t.me/clickhouse_ru
    @LinaLinii #224973 02:27 PM, 02 Jul 2021
    Привет. Вопрос такой: можно ли делать If в where? Мне нужно ввести условие в зависимости от даты события, что-то я не могу придумать, как мне это сделать
  • https://t.me/clickhouse_ru
    да, можно, насколько мне не изменяет память
  • можно любую обычную функцию в where
  • https://t.me/clickhouse_ru
    кроме агрегатной :)
  • поэтому написал "обычную"
  • https://t.me/clickhouse_ru
    не заметил :)
  • https://t.me/clickhouse_ru
    @LinaLinii #224979 02:52 PM, 02 Jul 2021
    тогда еще вопрос (возможно, тупой). Если писать
    IF(dt<='2021-06-11',creation_entry_point!='change_avatar', второе условие), то как оформить второе условие? Весь if звучит как "если дата меньше 11 июня, то не учитывать такой энтри поинт, иначе - учитывать". Не могу понять, как сделать "учитывать"
  • If (condition, true-result, false-result)
  • @dj_mixer #224981 02:56 PM, 02 Jul 2021
    условие в if одно
  • https://t.me/clickhouse_ru
    Здесь даже if не надо, кмк. Вам только where и условие, которое необходимо учитывать. Только вот какой там ORDER BY ключ.... %)
  • https://t.me/clickhouse_ru
    +1
  • https://t.me/clickhouse_ru
    where (dt<='2021-06-11' AND creation_entry_point!='change_avatar') or (dt>'2021-06-11' AND creation_entry_point='change_avatar')
  • https://t.me/clickhouse_ru
    или where (dt<='2021-06-11' AND creation_entry_point!='change_avatar') or (dt>'2021-06-11')
    смотря что вам там нужно
  • https://t.me/clickhouse_ru
    спасибо, это то, что нужно
  • https://t.me/clickhouse_ru
    @rjs45 #224988 03:18 PM, 02 Jul 2021
    Всем привет. Подскажите, если делать select from jdbc('jdbc:sqlserver:…..)
    можно ли как-то добавить условие, которое выполнится ТАМ?
    Или токльо тянусть все к себе, и уже тут делать сортировку?
  • @vvvjhaq #224989 03:20 PM, 02 Jul 2021
    Подскажите как максимально ускорить выборку по дате(dt_start), а то на одних и тех же числах остановился пока.
    Таблица 100млн строк. Партиций 30. dt_start может изменяться. Уникальных dt_start 5 млн. Добавил индекс минимум с гранулярностью 4, стало лучше.
    CREATE TABLE default.new_tab
    (
    id UInt64,
    str1 Nullable(String) CODEC(ZSTD(9)),
    str2 Nullable(String) CODEC(ZSTD(9)),
    idfk1 UInt32 CODEC(ZSTD(1)),
    idfk2 UInt32 CODEC(ZSTD(1)),
    idfk3 UInt64 CODEC(ZSTD(1)),
    idfk4 UInt16 CODEC(ZSTD(1)),
    idfk5 UInt16 CODEC(ZSTD(1)),
    idfk6 UInt16 CODEC(ZSTD(1)),
    dt_start DateTime CODEC(Delta(4), ZSTD(1)),
    str3 String DEFAULT '0' CODEC(ZSTD(9)),
    val Nullable(UInt8),
    ver DateTime
    )
    ENGINE = ReplacingMergeTree(ver)
    PARTITION BY intDiv(id, 20000000)
    ORDER BY (idfk1, id)
    SETTINGS index_granularity = 128;
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #224989 #224990 03:31 PM, 02 Jul 2021
    а какие ещё выборки кроме как по dt_start важны? Если никакие, то её и ставьте в order by. если же этот idfk1 очень важен для вас, то можно сделать партиционирование по дате, как это указано во всех примерах - станет чуть лучше, за счет отбрасывания лишних партов.
  • Естественно выборки по ключу сортировки.
    Не могу поставить дату в ключ сортировки, потому что нужно схлопывать по ключу сортировки.
    Партиции тоже не могу сделать по дате, потому что слияние в одной партиции, а дата может измениться и новая строка попадёт в другую партицию, и собственно не схлопнется никогда(
  • https://t.me/clickhouse_ru
    @bvt123 #224992 03:48 PM, 02 Jul 2021
    > что слияние в одной партиции, а дата может измениться и новая строка попадёт в другую партицию, и собственно не схлопнется никогда
    Replacing сам по себе не избавит вас от дубликатов в запросах, а только лишь поможет экономить место (и скорость как следствие). Схлопывание произойдет "когда-нибудь". Не надо на это рассчитывать.
    Если вам нужно точно избавляться от дубликатов, то без final или limit 1 by не обойтись. Но они тоже дают торможение. Так что common practice - партиции по месяцам, final/limit 1 by, и поиграть с prewhere чтобы считать сначала только нужные столбцы, а потом и всё остальное.
  • https://t.me/clickhouse_ru
    @bvt123 #224993 03:53 PM, 02 Jul 2021
    я в подобной ситуации сделал подзапрос - сначала вычислил нужные id по дате (c final), обеспечив дедубликацию, получил разумное количество данных, а потом уже по первичному ключу быстро нашел и вытащил нужные строки почти целиком. prewhere не давал должного ускорения. В таблице было более миллиарда.
  • да, это понятно, подобным образом это и используем. мой вопрос больше не просто как ускорить поиск, без каких-либо преседаний до. а уже когда сделал много приседаний, уже получил адекватный результат, но вдруг есть какой-то инетересный индекс на дату, который я упустил и он может дать мне еще чуть больше ускорения)
  • https://t.me/clickhouse_ru
    @x1unix #224995 04:08 PM, 02 Jul 2021
    Добрый вечер, ищу человека который бы проконсультировал меня по Clickhouse (пару вопросов).

    Не бесплатно разумеется :)
  • https://t.me/clickhouse_ru
    задавайте свои вопросы, автору лучшиго ответа отправите вознаграждение )
  • https://t.me/clickhouse_ru
    вы вопросы в чат задайте, хорошо заданный вопрос, половина ответа =) глядишь и деньги сэкономите
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #224996 #224998 04:21 PM, 02 Jul 2021
    Условно говоря, у меня есть таблица в которой будет хранится статистика с устройств (компания занимается мониторингом майнинговых железок).

    Каждые 5-10 сек прилетает стата. Список температур, скорость кулеров и хешрейт для каждого алгоритма (на одной машине может майнится n валют).

    Для примера, вот кусок статы:

    {
    "temps": [40, 80, 75 ... ],
    "fans": [3200, 1000, ...]
    "algo_hs": {
    "scrypt": [1000, 1500]
    "sha256": [ ... ],
    }
    }

    Количество элементов в массивах может менятся.

    Задача:
    Считать среднее значение статы за определенный период.

    Вопросы:
    - Стоит ли использовать Array для колонок или пойти старым способом с нормализацией (как я понимаю посчитать avg для одной колонки простой колонки требует подзапросов, ARRAY JOIN, arrayEnumerate)

    - Стоит ли нормализировать словарь algo_hs (словари пока experimental, и с ними будет сложнее работать как я понял)

    - Как можно удобно посчитать avg нескольких массивов, не городя большое кол-во подзапросов (т.к. avg нужно будет считать для многих полей, и для произвольного количества устройств)
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #224997 #224999 04:22 PM, 02 Jul 2021
    Задавал один вопрос несколько часов назад, пока игнор :)
  • https://t.me/clickhouse_ru
    - array не стоит, пишите в нормальную таблицу
    у вас пол-во элементов в массиве одинаковое для temps, fans и algo_hs.* ?
    если да
    то все просто
    CREATE TABLE mainer_stats (
    date DateTime,
    client_id UInt64,
    farm_unit_id UInt32,
    temperature UInt32,
    fan_speed UInt32,
    algo_name LowCardinality(String),
    hash_rate UInt64
    ) ENGINE=MergeTree()
    PARTITION BY toYYYYMM(date)
    ORDER BY (date, client_id, algo_name)
  • https://t.me/clickhouse_ru
    ссылка на вопрос?
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #225000 #225002 04:28 PM, 02 Jul 2021
    может менятся
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #224918 #225003 04:28 PM, 02 Jul 2021
    @BloodJazMan вот, по сути дублирует от части предыдущий
  • https://t.me/clickhouse_ru
    @x1unix #225004 04:29 PM, 02 Jul 2021
    @BloodJazMan получается стоит нормализовать данные из массивов и словаря?
  • https://t.me/clickhouse_ru
    я имею в виду
    статистика приходит ..,
    и в ней температура каждого юнита, его скорость и его хешрейт? Так?
    понятно что юнитов в разное время может быть разное кол-во...
    но просто хочу понять что в одном JSON
    индекс от одного юнита в temp соответсвует индексу в массиве fan_speed
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Map юзабелен
    будет чуть быстрее массива
    но вам массив и map не нужен
    храните по нескольким строкам
  • https://t.me/clickhouse_ru
    @x1unix ↶ Reply to #225007 #225008 04:31 PM, 02 Jul 2021
    Для каких тогда случаев используют массивы и словари в clickhouse?
  • https://t.me/clickhouse_ru
    словари используют для Star Schema обычно, чтобы dictGet заменял INNER JOIN

    Массивы используют когда хотят компактно хранить не часто используемые данные в одной строке чтобы данные не сильно дублировались
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/224918
    и там вроде были ответы. не готовое оптимальное решение конкретного кейса, а просто ответы на конкретные вопросы. возможно автор подумал, что комментаторы пойдут дальше чем просто ответы :)
    Rick Sanchez in ClickHouse не тормозит

    Добрый день, есть вопрос про Map в clickhouse. Условно говоря, у меня есть таблица с 3 колонками client_id UInt32 algo_hs Map(String, Array(UInt32) datetime DateTime('UTC') В algo_hs лежит словарь с массивами (хешрейт по алгоритму), например: { "sha256": [26665000, 22520000, 22537000, 22460000], "scrypt": [5667659, 5736897, 5668138], ... } Планируется доставать average algo_hs по client_id за определенный период. Скажите пожалуйста насколько Map юзабелен на данный момент (он за эксперементальным флагом на данный момент) и можно ли делать выборку (avg) по значениям в map?

  • https://t.me/clickhouse_ru
    @Muradnetpeak #225012 05:47 PM, 02 Jul 2021
    Спасите помогите. Я никак не могу коннектится с ДБ user default вот что я использую:
    clickhouse-client -u default --password ZMKr1IqPYb8E -d my_db
  • https://t.me/clickhouse_ru
    @Muradnetpeak #225013 05:48 PM, 02 Jul 2021
    Вот ошибка:
    ClickHouse client version 21.1.7.1 (official build).
    Connecting to database my_db at localhost:9000 as user default.
    Code: 516. DB::Exception: Received from localhost:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.
  • https://t.me/clickhouse_ru
    без пароля тоже не пускает?
  • https://t.me/clickhouse_ru
    Без пароля пустил
  • https://t.me/clickhouse_ru
    @Muradnetpeak #225016 05:58 PM, 02 Jul 2021
    сейчас проверю на java
  • https://t.me/clickhouse_ru
    @rjs45 #225018 06:45 PM, 02 Jul 2021
    Всем привет. Подскажите, если делать select from jdbc('jdbc:sqlserver:…..)
    можно ли как-то добавить условие, которое выполнится ТАМ?
    Или токльо тянусть все к себе, и уже тут делать сортировку?
  • https://t.me/clickhouse_ru
    @iphonus #225019 06:46 PM, 02 Jul 2021
    /znode1
  • 03 July 2021 (9 messages)
  • https://t.me/clickhouse_ru
    КХ вам говорит не алиас dt надо использовать а выражение его
  • https://t.me/clickhouse_ru
    @devmansurov #225027 06:35 AM, 03 Jul 2021
    Доброе утро! Подскажите пожалуйста почему Grafana не может подключиться к ClickHouse-у при таком настройке Docker Compose файла:

    version: "3.3"

    services:
    clickhouse:
    container_name: clickhouse
    hostname: clickhouse
    image: yandex/clickhouse-server
    restart: always
    ports:
    - "8123:8123"
    - "9000:9000"
    volumes:
    - ./clickhouse:/var/lib/clickhouse:rw
    - ./clickhouse/scheme/init_schema.sql:/docker-entrypoint-initdb.d/init_schema.sql:ro
    networks:
    LogServer:

    grafana:
    image: grafana/grafana
    restart: always
    ports:
    - '3000:3000'
    volumes:
    - ./grafana:/var/lib/grafana
    - ./grafana/dashboards/:/var/lib/grafana/dashboards/
    environment:
    - GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=vertamedia-clickhouse-datasource
    - GF_INSTALL_PLUGINS=grafana-piechart-panel,grafana-worldmap-panel,vertamedia-clickhouse-datasource,yesoreyeram-boomtable-panel
    depends_on:
    - clickhouse

    volumes:
    clickhouse: {}

    networks:
    LogServer:

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

    HTTP error Bad Gateway
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Network во втором контейнере не прописан
  • https://t.me/clickhouse_ru
    @Duolix ↶ Reply to #225033 #225034 07:38 AM, 03 Jul 2021
    /report
  • https://t.me/clickhouse_ru
    Что-то непонятно зачем так сложно, зачем джойнить таблицу саму на себя? По идее можно взять ваш внутренний подзапрос и просто добавить к ниму условие про 60 дней из внешнего и всё.
  • Понял ошибку, благодарю, все работает
  • @1803285152 #225038 12:47 PM, 03 Jul 2021
    Кто ни будь заливал POINT через mymarilyn/clickhouse-driver?
  • 04 July 2021 (145 messages)
  • https://t.me/clickhouse_ru
    @burov4j #225041 04:23 AM, 04 Jul 2021
    Всем привет, может кто-нибудь сталкивался.
    Кликхаус читает сообщения из кафки, сервера по CPU/диску не нагружены, всё в норме работает.
    Потом в какой-то момент кликхаус перестаёт мержить парты, их количество доходит до 300 и данные начинают выбрасываться.
    Из-за чего может такое происходить? Скриншот с метриками кликхауса прикрепляю. 78 сервер читает из кафки, 75 - реплика для SELECT'ов.
    Версия кликхауса 20.3.19.4.
    В логах кликхауса ошибок нет.
  • https://t.me/clickhouse_ru
    ну есть SYSTEM STOP MERGES

    посмотрите в query_log почему мержи перестали идти
    и в /var/log/clickhouse-server/clickhouse-server.*
    Загляните
  • https://t.me/clickhouse_ru
    а со стотороны kafka ничего не поменялось?
    выглядит так что у вас дофига записей пришло и их мержить надо толпу
  • https://t.me/clickhouse_ru
    @hostadminonline #225044 05:38 AM, 04 Jul 2021
    всем привет, а есть возможность в select исключать переменные, как в монге ? а то у меня 700 полей и надо только несколько исключить чтобы перелить данные из одной таблицы в другую
  • https://t.me/clickhouse_ru
    SELECT Query

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

  • https://t.me/clickhouse_ru
    @hostadminonline #225046 05:43 AM, 04 Jul 2021
    ООоОО вроде все инструкции уже на несколько раз перечитал но на это не натыкался
  • https://t.me/clickhouse_ru
    @hostadminonline #225047 05:43 AM, 04 Jul 2021
    спасибо
  • https://t.me/clickhouse_ru
    только версию clickhouse проверьте, по моему это после 21.3 появилось только
  • https://t.me/clickhouse_ru
    ок, спасибо
  • https://t.me/clickhouse_ru
    @rpuropu #225050 06:12 AM, 04 Jul 2021
    Мне поставлена задача освоить стак: Кассандра, Спарк, Кафка. Для аналитики в Табло. Слышал что кликхаус ощущает кафку как часть себя. Есть тут кто, кто использует кликхаус как витрину? И вообще нужны ли мне знания кафки и спарка? Вдруг можно обойтись одним кликхаусом как-нибудь.
  • https://t.me/clickhouse_ru
    =) нет, кликхаус ощущает кафку как ням-ням-ням очень фкусненько, дайте мне еще ваших данных =)

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

    а потом и понимание придет, где конкретно вам clickhouse нужен или не нужен вообще
  • https://t.me/clickhouse_ru
    Контора буржуйская. И там никто даже не думал в сторону кликхауса. Поскольку меня расширяют в дата инженеры, я подумал вдруг инициативу проявлю полезную)
  • https://t.me/clickhouse_ru
    @rpuropu #225053 06:37 AM, 04 Jul 2021
    Поправил слово.
  • https://t.me/clickhouse_ru
    @rpuropu #225054 06:39 AM, 04 Jul 2021
    И с того что по кликхаусу смотрел, пока не ясна его роль.
  • https://t.me/clickhouse_ru
    @BloodJazMan #225055 07:05 AM, 04 Jul 2021
    Ну если грубо
    То это высоко эффективное final write once хранилище структурированных данных с возмодностью быстрого аггрегирования
    В связке с табло
    Недавно стало лучше коннектор поверх odbc появился
  • https://t.me/clickhouse_ru
    @rpuropu #225056 07:08 AM, 04 Jul 2021
    Да я и написал сюда. В Табло хвалят кликхаус.
  • https://t.me/clickhouse_ru
    @rjs45 #225057 08:50 AM, 04 Jul 2021
    Всем привет. Подскажите, если делать select from jdbc('jdbc:sqlserver:…..)
    можно ли как-то добавить условие, которое выполнится ТАМ?
    Или токльо тянусть все к себе, и уже тут делать сортировку?
  • https://t.me/clickhouse_ru
    для WHERE делается push down внутрь источника
    сортировка и группировка на стороне clickhouse
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #225059 #225060 08:57 AM, 04 Jul 2021
    То есть невозможно выбрать лишь часть на стороне mssql?

    У меня там таблица на 60М записей, а нужно всего около 1000 последних
  • https://t.me/clickhouse_ru
    SELECT * FROM jdbc() WHERE date>=toDate(now()) ORDER BY date LIMIT 1000

    WHERE выберет те данные которые за текущий день на стороне JDBC источника... а ORDER BY и LIMIT сделает на стороне clickhouse
  • https://t.me/clickhouse_ru
    попробуйте

    SELECT
    toDate(time) AS dt,
    count(*) AS total
    countIf(event = 'CREATE_CHAT') AS create_chat
    create_chat / total AS percent
    FROM tutorial.community_actions
    WHERE (dateDiff('day', community_registered_time, time) <= 7) AND (dateDiff('day', time, now()) <= 60)
    GROUP BY dt
  • Да, помогло, спасибо!
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #225061 #225065 09:48 AM, 04 Jul 2021
    Спасибо, попробуем
  • https://t.me/clickhouse_ru
    @michailmarketplace #225066 10:03 AM, 04 Jul 2021
    Подскажите плз, а использование движка Buffer - это грабли или потенциально жизнеспособная история? Задача - логирование действий пользователя в живом режиме (частые одиночные вставки), не хочется сооружать дополнительные прослойки и усложнять запись и аггрегации, вроде Buffer должен бы решить проблему. Потеря куска данных в случае аварии не критична
  • https://t.me/clickhouse_ru
    В проде буфер, работает ок, но вставляем по 5к, не по одной
  • https://t.me/clickhouse_ru
    Buffer нормальное решение. если вы готовы потерять данные из Buffer в момент перезагрузки ClickHouse
  • https://t.me/clickhouse_ru
    @michailmarketplace #225070 10:13 AM, 04 Jul 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    по одной строке вставлять оно там получается максимум 5-6к запросов в секунду
  • https://t.me/clickhouse_ru
    этого за глаза, в моем случае, спасибо
  • https://t.me/clickhouse_ru
    И если альтер на таблицу - дропать буфер и создавать новый
  • https://t.me/clickhouse_ru
    @rasstr0en #225074 10:15 AM, 04 Jul 2021
    То есть возможность писать мимо буфера надо оставить для возможных альтеров
  • https://t.me/clickhouse_ru
    спасибо, не подумал бы о таком подводном камне
  • https://t.me/clickhouse_ru
    @hostadminonline #225076 12:28 PM, 04 Jul 2021
    добрый день ... перерыл тут документации не нашел .... а есть способ хешированного партицирования ?
    поискал функции котоыре могли бы сводить некие значения в заданный диапозон и не нашел
  • https://t.me/clickhouse_ru
    Как по мне, так спарк + кассандра для аналитики - это мега костыль, чтобы не платить за вертику. Можете сказать своим буржуям, что чтобы не платить за вертику, да ещё и за сервера сильно меньше платить сейчас передовые компании используют кликхаус либо используют его подходы в своих инхаус решениях. И если они про него ничего не слышали, то пусть посмоторят топ 50 бд и динамику его роста или подождут ещё пару лет, когда он уже будет в топ 20 всех бд и про него уже будут знать все :)
  • https://t.me/clickhouse_ru
    Выше были примеры с intDiv, если вам это подойдёт
  • @ViacheslavNefedov #225079 12:33 PM, 04 Jul 2021
    Кликхауз - это колоночник, Кассандра - ключ/значение. Как можно кликхаузом заменить Кассандру?
  • https://t.me/clickhouse_ru
    Америкосы) европейский филиал. Я хочу опыт в клиехаусе конечно же. Но мне нужны обоснованные аргументы, а не только статистика популярности. Может его набрали конторы у которых и миллиарда строк не бывает?)
  • @ViacheslavNefedov #225081 12:35 PM, 04 Jul 2021
    Спарк используется для процессинга, в том числе для стриминга, это вообще в другую степь
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/ru/introduction/adopters/

    Да список публичный, может конкурентов найдете как раз :)
    Adopters | Документация ClickHouse

    ClickHouse Adopters Disclaimer The following list of companies using ClickHouse and their success stories is assembled f

  • https://t.me/clickhouse_ru
    слабо представляю как этим можно воспользоваться чтобы sipHash64 свести к 4 - 6 партициям с более менее равномерным распределением
  • https://t.me/clickhouse_ru
    sipHash64 % 6

    intDiv(sipHash64, max_siphashvalue*1/6)
  • @githubreleases_bot #225085 b o t 12:37 PM, 04 Jul 2021
    ClickHouse/ClickHouse tagged: v21.6.6.51-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.6.6.51-stable
    Release notes:
    v21.6.6.51-stable
    Release v21.6.6.51-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.6.6.51-stable

  • https://t.me/clickhouse_ru
    Но спарком же можно выдернуть некую табличку? Я хз как это довести до витрины пока..
  • Да, обычно так и делают - спарком что-то откуда-то выдергивают и куда-то кладут
  • https://t.me/clickhouse_ru
    PARTITION BY intHash64(id) % 10
    Только какой смысл так делать?
    что вы хотите этим добиться?
  • Например, в кликхауз для анализа
  • https://t.me/clickhouse_ru
    Вот я хотел в кликхаус
  • https://t.me/clickhouse_ru
    @hostadminonline #225091 12:40 PM, 04 Jul 2021
    у меня много хешей .... 8.5 млрд .... у меня есть запросы где я ищю по 1 - хешу .... и он делает полное сканирование
  • https://t.me/clickhouse_ru
    Вот да) это самое)
  • https://t.me/clickhouse_ru
    Сортируйте по хешу, или у вас какие запросы вообще? (bloom filter можно попробовать еще)
  • https://t.me/clickhouse_ru
    Я уже знаю, что кликхаус уступает экзасолу в роли витрины, но он и платный..
  • https://t.me/clickhouse_ru
    сортирую )
  • Классический конвейер - события скидывать в кафку, доставать оттуда спарком, складывать в кликхауз.
  • https://t.me/clickhouse_ru
    @hostadminonline #225097 12:42 PM, 04 Jul 2021
    он на втором месте стоит по сортировке
  • https://t.me/clickhouse_ru
    тогда фулл скана быть не должно,
  • https://t.me/clickhouse_ru
    На первом что
  • https://t.me/clickhouse_ru
    у вас только запросы вида WHERE hash = ?
    или еще какая нибудь дата есть?
  • https://t.me/clickhouse_ru
    @hostadminonline #225101 12:42 PM, 04 Jul 2021
    показатель по которому идет первичное отсечение данных
  • https://t.me/clickhouse_ru
    Ну конкретно не сталкивался что бы спарком из кафки в кх перекладывали, но допустим.
  • https://t.me/clickhouse_ru
    @hostadminonline #225103 12:43 PM, 04 Jul 2021
    у меня where sourceId = [1-7] AND hash IN ()
  • А что мешает? :)
  • https://t.me/clickhouse_ru
    И идет full scan ?

    Одна из черепашек лжет.

    set send_logs_level='trace'

    [1-7] что за странное условие такое?
  • https://t.me/clickhouse_ru
    Т. Е. Пайспарка хватит для кассандры и кафки?
  • @ViacheslavNefedov #225107 12:44 PM, 04 Jul 2021
    Пайспарк может и читать и писать в Кассандру и кафку. И кликхауз
  • https://t.me/clickhouse_ru
    Принцип уменьшения энтропии :)
  • https://t.me/clickhouse_ru
    Джоинить где лучше? Уже в кликхаусе? Последний наверно вопрос)
  • Всё было хорошо до этого вопроса
  • https://t.me/clickhouse_ru
    Смотря что джойнить и с чем.
    Основное ограничение в кх это на размер правой таблицы, она помещается в память(те джойнить 2 таблицы по млрд записей так себе) иначе будет медленно
  • https://t.me/clickhouse_ru
    Ахах)) я не смотрел еще ничего по кликхаусу)
  • https://t.me/clickhouse_ru
    @rpuropu #225113 12:47 PM, 04 Jul 2021
    Ладно, выставлять отношения?)
  • @ViacheslavNefedov #225114 12:47 PM, 04 Jul 2021
    Спарк джойнит фигово - колоночник. Лучше лукапить в Кассандру если можно
  • @ViacheslavNefedov #225115 12:47 PM, 04 Jul 2021
    Что из спарка, что из кликхауза
  • https://t.me/clickhouse_ru
    Ну тогда можете показать сравнение производительности https://clickhouse.tech/benchmark/dbms/ и нагуглить пару историй, как чуваки соскачили с вертики и экономят лямы денег на лицензиях и железе :)
    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
    @unamedrus #225119 12:49 PM, 04 Jul 2021
    Опять же вопрос, про какие джойны мы говорим, если справа относительно небольшая таблица (миллионы записей) кх нормально джойнит
  • https://t.me/clickhouse_ru
    Грин плам же вроде медленный.. экзасол умеет джойнить?
  • https://t.me/clickhouse_ru
    Ладно, надо проверять.
  • https://t.me/clickhouse_ru
    @rpuropu #225122 12:50 PM, 04 Jul 2021
    Я намечаю план войны)
  • У меня тоже прямо на кликхаузе. Работает, но не летает
  • @ViacheslavNefedov #225124 12:51 PM, 04 Jul 2021
    Экзасол вроде стоил дорого, уже нет?
  • https://t.me/clickhouse_ru
    Гляну сам) люблю такое)
  • https://t.me/clickhouse_ru
    Можете потыкать наших сейлов (https://altinity.com/contact/), тогда у вас будет союзник в вашей войне :)
    Contact us — Altinity

    Our team of ClickHouse experts is here to help you, from listening to your concerns upfront to guiding you in deploying your data analytics projects.

  • https://t.me/clickhouse_ru
    Дорого стоит, да

    Но говорят, что у них вроде самые крутые джойны.
  • https://t.me/clickhouse_ru
    Вот так вот даже) спасибо))
  • https://t.me/clickhouse_ru
    Таксисты?)
  • Объем данных большой?
  • https://t.me/clickhouse_ru
    @rpuropu #225131 12:54 PM, 04 Jul 2021
    Спасибо ребят) комьюнити тут конечно активнее многих. Это уже плюс)
  • @ViacheslavNefedov #225132 12:55 PM, 04 Jul 2021
    Под кликхауз лучше чтобы большой :)
  • https://t.me/clickhouse_ru
    Миллиарды строк.
  • @ViacheslavNefedov #225134 12:56 PM, 04 Jul 2021
    Ну такое себе, может и в вертику залезть
  • @ViacheslavNefedov #225135 12:56 PM, 04 Jul 2021
    Если не широкие таблицы
  • https://t.me/clickhouse_ru
    @rpuropu #225136 12:56 PM, 04 Jul 2021
    Там только один русский джава. Остальные - нерусские джава. Так получилось, что в конторе о кликхаусе только слышали.
  • https://t.me/clickhouse_ru
    У меня пара миллиардов строк в кликхаусе и на виртуалке за 20 евро быстро работает :)
  • https://t.me/clickhouse_ru
    @rpuropu #225138 12:57 PM, 04 Jul 2021
    А для будущих аб тестов кликхаус же друг?)
  • https://t.me/clickhouse_ru
    @rpuropu #225139 12:58 PM, 04 Jul 2021
    Хотя там таких аналитиков пока ноль. Но я хочу попасть в их число)
  • https://t.me/clickhouse_ru
    Про оптимизацию и ускорение кликхауса читаю каждый релиз. В других бд - новый релиз - это только новые свисто-перделки.
  • https://t.me/clickhouse_ru
    Ээээээээээээээээ, nyet
  • https://t.me/clickhouse_ru
    Не мешайте накидывать на вентилятор :)
  • https://t.me/clickhouse_ru
    @rpuropu #225143 01:05 PM, 04 Jul 2021
    Это что-то на кликхаусофском было?)
  • https://t.me/clickhouse_ru
    Тогда уж накиньте ещё статей про то, как правильно обновлять кластер, когда в новой версии клика прилетают несовместимые изменения 😂
  • https://t.me/clickhouse_ru
    как и везде, читать changelog, обновляться на тестовой среде смотреть что сломалось
  • https://t.me/clickhouse_ru
    @vchernyshev #225147 01:51 PM, 04 Jul 2021
    Ну это само собой, что тестовая среда нужна. А потом-то что, только останавливать полностью весь production на время обновления, потому как по частям обновлять не получится?
  • @githubreleases_bot #225148 b o t 01:57 PM, 04 Jul 2021
    ClickHouse/ClickHouse tagged: v21.3.14.1-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.14.1-lts
    Release notes:
    ClickHouse lts release v21.3.14.1-lts
    Release v21.3.14.1-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.14.1-lts

  • https://t.me/clickhouse_ru
    большинство пользователей может обновлять по частям. Естественно большие пользователи с сотнями нод, типа яметрики, делают обновление только на ходу.
  • https://t.me/clickhouse_ru
    экзасол умеет какую-то секретную магию, там якобы хеш-джойны даже дистрибьютид быстро работают.
  • https://t.me/clickhouse_ru
    и что оно само чинится потом?
  • https://t.me/clickhouse_ru
    вот это было смешно сейчас, у меня в неделю 20 митингов по КХ с новыми и старыми клиентами и все в Сев. Америке.
  • https://t.me/clickhouse_ru
    Контора американская, но филиал - европейский. Директор удивился, когда я ему сказал, что в тесла вакансиях бывает кликхаус.
  • https://t.me/clickhouse_ru
    @dmitriynvkv #225156 07:09 PM, 04 Jul 2021
    Недавно общался с ребятами из Японии, которые чето на клике Тод делают
  • https://t.me/clickhouse_ru
    Окей, это хорошо. Я посмотрел backwards incompatible changes за последние полтора года, там вроде на самом деле грабли могут в некоторых случаях вылезти только если с древних версий сразу на новые обновлять.
  • https://t.me/clickhouse_ru
    Вперед граблей мало обычно.
    Вот откатываться назад граблей предостаточно.
  • https://t.me/clickhouse_ru
    @vchernyshev #225160 07:19 PM, 04 Jul 2021
    Ну для этого тестовый кластер 100% будем делать, чтобы все имеющиеся запросы на нём полностью тестировать на реальных данных.
  • @capricornusx #225161 07:31 PM, 04 Jul 2021
    ребят, подскажите, я могу выполнить ALTER на таблицу с типом Buffer?
    не совсем пойму каков синтаксис. В документации говорится о случае, когда нужно сделать ALTER и на буфер и на подчинённую таблицу. А мне нужно только на Buffer
  • https://t.me/clickhouse_ru
    Проще ренеймнуть буфер и создать новый
  • https://t.me/clickhouse_ru
    @unamedrus #225163 07:35 PM, 04 Jul 2021
    Какой альтер хотите сделать то?
  • увеличить пороговые значения.
    так-то конечно проще, но туда активно пишутся данные, на горячую опасненько
  • https://t.me/clickhouse_ru
    @unamedrus #225165 07:36 PM, 04 Jul 2021
    Ну выведите эту реплику из под лоад балансера, направьте траффик на другую
  • нет реплики, пока что это единственный инстанс )
  • https://t.me/clickhouse_ru
    @unamedrus #225167 07:39 PM, 04 Jul 2021
    Нет репликации, используется ненадежный Buffer таблица.
    Я бы сказал, что судя по вашему сетапу получить пару ошибок при вставке вы не боитесь :)

    Какая версия кх, какой движок базы данных
  • @citrin_ru #225168 07:43 PM, 04 Jul 2021
    можно сделать новый buffer сконфигурировать приложения писать туда, когда траффик на старый буффер кончится - пересоздать его.
  • естественно не боимся, "позавчера" в принципе начали работать с КХ, поэтому экспериментируем в некотором коридоре дозволенного.
    ClickHouse 21.5.6.6
    SummingMergeTree
  • думал как раз об этом, раз нельзя альтер сделать на горячую
  • https://t.me/clickhouse_ru
    Я про движок базы спрашивал :)

    Но судя по версии у вас Atomic

    Тогда можете сделать EXCHANGE TABLES
    Оно может атомарно свапнуть две таблицы
  • https://t.me/clickhouse_ru
    @unamedrus #225172 07:44 PM, 04 Jul 2021
    По поводу Buffer, лучше смотреть либо в сторону батчинга на стороне приложения либо в сторону кафки
  • Да, Atomic, сейчас проверил
  • создать второй буфер и потом EXCHANGE TABLES ?
  • https://t.me/clickhouse_ru
    Да, потом можно подождать и сделать DETACH первому буферу
  • хм.. спасибо, попробую! )
  • https://t.me/clickhouse_ru
    Ахаха, у меня ощущение что из списка топ100 компаний в мире проще перечислить кто НЕ использует КХ

    даже из отрытых https://clickhouse.tech/docs/en/introduction/adopters/ Bloomberg Cisco Citadel Securities Comcast Cloudflare Deutsche Bank eBay Spotify
  • насколько всё плохо с этим?
    для батчинга пока только redis приходит на ум, но эт дополнительная логика
    кафка сейчас оверхед
  • https://t.me/clickhouse_ru
    Ну при внезапном падении кх, буфер может не вставить сообщения, что находятся в нем.
    При обычной остановке тоже в некоторых случаях такое могло происходить (когда таблица назначения отключалась раньше буффера)
  • про внезапное падение ещё ок, об этом мы знали/думали, на то оно и внезапное.
    Второй случай уже печальнее... спасибо за информацию
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/pull/24067

    В 21.5 не бекпортилось
    Flush Buffer tables before shutting down tables (within one database) by azat · Pull Request #24067 · ClickHouse/ClickHouse

    Changelog category (leave one): Improvement Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Flush Buffer tables before shutting down tables (within o...

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

    Через балансировщик нагрузки я могу запретить пользовательским запросам приходить на определённую реплику. Но, насколько я понимаю, никто не гарантирует, что клик не пошлёт туда запросы, приходящие на distributed таблицу (в общем случае, так-то приоритет можно задать). Если остановить clickhouse-server на этой реплике, то это прозрачно обработается, или есть возможность, что запрос отвалится с ошибкой?
  • а балансировщик у вас кто?
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-shutting-down-a-node

    > есть возможность, что запрос отвалится с ошибкой?

    Да, скорее всего так и будет
  • https://t.me/clickhouse_ru
    В компании есть обственная система типа как-то интегрированная с DNS, подробностей сейчас не вспомню. Там куча разных опций для health checks, то есть можно clickhouse мониторить через, допустим, HTTP.
  • https://t.me/clickhouse_ru
    Спасибо за ссылку!

    Remove server (which is going to be disabled) from remote_server section of config.xml on all servers.

    Получается, что если сначала эту реплику таким способом убрать, то это автоматически гарантирует, что туда никакие запросы больше не придут.
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    @vchernyshev #225189 08:04 PM, 04 Jul 2021
    Я забыл, что remote_server перечитывается без перезапуска.
  • https://t.me/clickhouse_ru
    @vchernyshev #225190 08:06 PM, 04 Jul 2021
    Будем костылить автоматизацию, руками это делать каждый раз совсем не хочется 😂
  • https://t.me/clickhouse_ru
    @unamedrus #225191 08:08 PM, 04 Jul 2021
    Может теоретически можно как нибудь осторожно файрволлом зарезать, что бы новые соединения по 9000 порту не смогли приходить, а старые продолжали работать.
  • https://t.me/clickhouse_ru
    Сначала попробуем реализовать то, что в присланной Вами статье описано. Вроде не должно быть слишком сложно сообщения через кафку между парой-тройкой утилит покидать.
  • 05 July 2021 (151 messages)
  • в клаудфлер офисе были неплохие митапы в по клику свое времябыло очень круто и удобно - сто метров от моего офиса =) Года два назад наверное, может даже чутка поболе. А вот насчет Теслы - я сильно удивлен, я не сильно давно подумывал туда зааплаиться на Data Platform Engineer, Database Engineering - там требвания вот примерно такие вот
    you will work on all the major open source db platforms (MySQL, Postgres, MongoDB, Redis, Kafka, Elasticsearch) and the 2 most widespread commercial db platforms (Oracle and MS SQL Server). You need to be an expert in MySQL and one other major DB technology. You will eventually be great at all of them.

    А вот Блумберг да, четко в требованиях клик вывешивал. Хотя буду честным - из последних трендов очень много народа хотят Сноуфлейк специалиста. Многие мои знакомые переехали в снежинку. Да и наши тоже с вертицы на снежинку съехали
  • https://t.me/clickhouse_ru
    clickhouse-bulk, kittenhouse посмотрите
    хотя проекты в слегка полудохлом режиме
  • https://t.me/clickhouse_ru
    @sibbarb #225201 06:48 AM, 05 Jul 2021
    Всем привет, кто то сталиквилася с таким? read timed out
    больше 30 сек запрос типа работает
  • https://t.me/clickhouse_ru
    Таймауты легко ставятся в кх, а read таймаут может и на клиенте сработать
  • https://t.me/clickhouse_ru
    @sibbarb #225204 06:56 AM, 05 Jul 2021
    я через датагрип пользуюсь, релаьно в нем как-то сделать все?
  • https://t.me/clickhouse_ru
    во вкладке advanced у data sources настроек настроить таймаут
  • https://t.me/clickhouse_ru
    @sibbarb #225206 06:57 AM, 05 Jul 2021
    Хорошо сейчас попрбуемс
  • https://t.me/clickhouse_ru
    @tg_amm #225207 06:59 AM, 05 Jul 2021
    Здравствуйте! Подскажите пожалуйста, с чем может быть связана такая ошибка? Кто знает 🙂 спасибо 🙏🏽
  • Там написано что закончилось место на диске
  • https://t.me/clickhouse_ru
    вроде в самой ошибке указана причина, проверьте сколько места у вас на /dev/vdb1
  • @sklepych #225210 07:01 AM, 05 Jul 2021
    Да, вроде явно написано
  • https://t.me/clickhouse_ru
    @tg_amm ↶ Reply to #225209 #225211 07:03 AM, 05 Jul 2021
    Слишком много данных в базе данных или все же это какие-то лог файлы все место заняли, написано …/logsLoader/…?
  • https://t.me/clickhouse_ru
    ну а что у вас там настроено по данному пути?
  • https://t.me/clickhouse_ru
    @tg_amm ↶ Reply to #225212 #225216 07:06 AM, 05 Jul 2021
    Я использую яндек облако, сам ничего не настраивал, а они отвечают через год 🥲 вот пытаюсь понять как самому исправить, возможно ли, данных в бд вроде не шипко много
  • https://t.me/clickhouse_ru
    logsLoader это имя таблицы в базе ts_db1
  • https://t.me/clickhouse_ru
    в консоли яндекс облака смотрите сколько у вас свободного места под clickhouse осталось...
    там же вроде не безразмерные диски а фиксированного размера
  • https://t.me/clickhouse_ru
    @tg_amm #225219 07:19 AM, 05 Jul 2021
    Понял, спасибо за помощь, теперь знаю что делать!
  • @dmitry_kishchenko #225220 07:58 AM, 05 Jul 2021
    Всем привет. Вопрос есть по словарям - пересоздаю словарь, данные он тянет из постгреса. Вопрос в том, что я его дропаю и меняю тип поля id с UInt64 на UInt8. При пересоздании наблюдаю тот же тип поля, что и был до этого.
    С чем связана может быть проблема?
    Смотрю все через datagrip
  • @simpl1g #225221 08:01 AM, 05 Jul 2021
    может схема в датагрипе закешировалась? через clickhouse-client не пробовали смотреть?
  • @dmitry_kishchenko #225222 08:10 AM, 05 Jul 2021
    хм. чет не подумал
  • @dmitry_kishchenko #225223 08:10 AM, 05 Jul 2021
    ща полезу гляну
  • Ключ у словаря должен быть UInt64, если он не составной
  • понял. вопрос снят
  • @1063161973 #225228 08:31 AM, 05 Jul 2021
    Добрый день.
    Как побороть ошибку ?
    Code: 252, e.displayText() = DB::Exception: Too many parts (300).
    Merges are processing significantly slower than inserts (version 21.6.4.26 (official build))
    Ошибку вызывает даже одна операция вставки.
    Выражение для ключа партиционирования для таблицы, в которую выполняется вставка:
    PARTITION BY ((toYear(dat) * 4) + toQuarter(dat)) - 1
  • https://t.me/clickhouse_ru
    вы путаете парты и партции
    перестаньте вставлять данные МАЛЕНЬКИМИ кусками, вставляйте большими (100 000 строк за 1 INSERT)
    буфферизируйте на стороне приложения или используйте Engine=Buffer таблицы
  • https://t.me/clickhouse_ru
    @borisPolya #225231 08:53 AM, 05 Jul 2021
    Всем привет.
    Подскажите, пожалуйста.
    Пытаемся подключится в яндекс облаке к кликхаусу, используем golang.

    Библиотека для подключения используется github.com/jmoiron/sqlx
    connectionString := fmt.Sprintf(
    "tcp://%s:%d?database=%s&debug=%s&username=%s&password=%s",
    cfg.Host,
    cfg.Port,
    cfg.Database,
    strconv.FormatBool(cfg.Debug),
    cfg.Username,
    cfg.Password,
    )
    ...
    clickhouseDB, errConnect := sqlx.Connect("clickhouse", connectionString)

    Как добавить использование сертификатов и параметр --secure ?
    Какие ещё возможно нужны параметры для подключения в яндекс облаке?
  • https://t.me/clickhouse_ru
    SSL/TLS parameters:

    secure - establish secure connection (default is false)
    skip_verify - skip certificate verification (default is false)
    tls_config - name of a TLS config with client certificates, registered using clickhouse.RegisterTLSConfig(); implies secure to be true, unless explicitly specified
  • https://t.me/clickhouse_ru
    @unamedrus #225233 08:55 AM, 05 Jul 2021
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    Спасибо. Пазл потихоньку складывается :)
  • Вставляю большими кусками. Вначале накапливаю в Memory таблице, потом вставляю. Периодичность вставки - один раз в 5 минут.
    Пока решил проблему
    ALTER TABLE work.check MODIFY SETTING parts_to_throw_insert=600
    Но смущает фраза из документации КХ:
    "при этом могут возникнуть проблемы с фоновыми слияниями и производительностью SELECT-запросов
  • https://t.me/clickhouse_ru
    @TrFury #225238 09:27 AM, 05 Jul 2021
    Всем привет.
    Впервые столкнулся с clickhouse plugin для сбора метрик.
    Подскажите пожалуйста, что я не так дела?(
    Решаю такую задачу - "Нужен график, rpm (запросов в минуту)"
  • https://t.me/clickhouse_ru
    есть доки по плагину, в доках описан удобный макрос, будет что-то вроде $rateColumns(StatusRes, count()) FROM (select * from $table where $timeFilter and provider = 'whatever')
  • https://t.me/clickhouse_ru
    конкретно с этим запросом - мне кажется или делается now() as t? и фактически будет одна строка в выхлопе и все?
  • https://t.me/clickhouse_ru
    @Makasinov #225243 09:33 AM, 05 Jul 2021
    фе
  • https://t.me/clickhouse_ru
    @cargeh ↶ Reply to #225242 #225244 09:33 AM, 05 Jul 2021
    хорошего вы мнения о кликхаус дба!
  • @ViacheslavNefedov #225245 09:34 AM, 05 Jul 2021
    100к, норм перспективы
  • https://t.me/clickhouse_ru
    А это тут вообще к чему?
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225239 #225247 09:38 AM, 05 Jul 2021
    Хорошо, спасибо большое :)
  • https://t.me/clickhouse_ru
    очень странно
    у вас там что в system.part_log и system.merges ?
  • https://t.me/clickhouse_ru
    ну вы для однго времени выдаете данные вместо time series
  • https://t.me/clickhouse_ru
    и SQL у вас там какой то вообще странный
    зачем вам now() ?
    какое поле у вас время?

    зачем там странные count которые должны были видимо быть countIf
    Provider - 'teletrain'
    тоже какая от странная конструкция
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225250 #225251 09:47 AM, 05 Jul 2021
    Я не знал как по-другому указать определённого поставщика.

    А про now() я на форуме подобную конструкцию видел.
    Только там ещё добавляли toDate
  • https://t.me/clickhouse_ru
    ну вы вибираете ОДНО И ТОЖЕ время...
    вместо того чтобы выбрать данные по столбцу
  • https://t.me/clickhouse_ru
    @almorgv #225253 09:58 AM, 05 Jul 2021
    Добрый день. Подскажите, можно заставить кх перестроить скип индексы по старым данным? Нужно было дропнуть и пересоздать с другими параметрами.
  • https://t.me/clickhouse_ru
    ALTER MATERIALIZE INDEX
  • https://t.me/clickhouse_ru
    ALTER TABLE ... MATERIALIZE INDEX ...
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/index/
    INDEX | ClickHouse Documentation

    Manipulating Data Skipping Indices The following operations are available: ALTER TABLE [db].name ADD INDEX name expressi

  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225252 #225256 09:59 AM, 05 Jul 2021
    А как можно выбрать данные по столбцу ?
  • не знаете как накостылять DELETE через INSERT в EmbeddedRocksDb? а то я что-то нигде не нашел...
  • https://t.me/clickhouse_ru
    SELECT имя_столбца
    FROM имя_таблицы
  • https://t.me/clickhouse_ru
    Просто все затереть пустыми значениями (или добавить колонку is_deleted ?)
  • ааа, ну ок, я подумал что есть магический инсерт ...
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225250 #225261 10:05 AM, 05 Jul 2021
    С countIf жалуется на запрос
  • https://t.me/clickhouse_ru
    а как жалуется?
    прямо кричит. "ой, не могу уже, пойди почитай документацию"? ;)
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/#agg-functions-combinator-if
    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
    @ARyndin #225265 10:41 AM, 05 Jul 2021
    Всем привет. А в кликхаусе есть функция для рендеринга строк с макросами? Например renderMacro('cluster name is {cluster}') чтобы превратилось в 'cluster name is test_cluster'
  • https://t.me/clickhouse_ru
    есть getMacro('xxx'), а дальше собрать что угодно можно
  • https://t.me/clickhouse_ru
    под макросами имеется ввиду system.macros ?
    или просто какие то другие поля из БД?
  • https://t.me/clickhouse_ru
    мне это мало подходит, нужно отрендерить строки с макросами из system.tables
  • https://t.me/clickhouse_ru
    system.macros
  • https://t.me/clickhouse_ru
    в смысле у вас в system.tables есть engine_full
    и вам в нем надо подставить значения макросов?

    SELECT replaceAll(engine_full, '{cluster}',getMacro('cluster')) FROM system.tables ?
  • https://t.me/clickhouse_ru
    Ну можно сделать через getMacro + replaceAll
  • https://t.me/clickhouse_ru
    всё так, просто в некоторых местах встречаются разные макросы, и заранее не всегда можно сказать сколько их будет
    но ответ мне подходит думаю, спасибо
    хотя странно что в клике нет какой-то функции для рендеринга строк с макросами
  • https://t.me/clickhouse_ru
    @Makasinov #225274 11:15 AM, 05 Jul 2021
    Хаюшке 🙋🏻‍♂️, насколько будет правильно ставить на таблицу TTL год, партицию по месяцам, и на парочку тяжелых колонок TTL по дню? Сейчас так сделано и у меня есть ощущение, что именно поэтому кх не может смерджить какие то куски. Ругается на Cannot read all array values: read just 47299 of 125861 и Part 202107_3406_3406_0 is covered by 202107_3406_3406_1 but should be merged into 202107_3406_3413_1. This shouldn't happen often
  • https://t.me/clickhouse_ru
    @brbrbr #225275 11:32 AM, 05 Jul 2021
    Всем привет.
    Есть таблица AggregatingMT, из неё раз в день переливаем данные в обычную MT при помощи запроса insert into MT select * from AggregatingMT final.
    При этом если запрос выполняется штатно ночью, то всё хорошо. Но если пробую выполнить его днём (например, надо что-то обновить, не дожидаясь следующего дня), то почти всегда получаю ошибку ZooKeeper session has been expired.
    Я так понял, что скорее всего проблема в настройках ЗК. Подскажите, пожалуйста, куда копать? Есть ли какие-нибудь рекомендации по настройке ЗК для работы с КХ?
  • https://t.me/clickhouse_ru
    КХ и вертика и сноуфлейк немного для разного. Например клаудфлер не может использовать сноуфлейк, это бессмысленно дорого, или например тесла не может поставить в автомобиль сноуфлейк, а КХ может (это я фантазирую) (такие случаи есть, КХ поставляется как часть аппаратного комплекса, в сотнях тысяч устройств)
  • https://t.me/clickhouse_ru
    сколько партов создается инсертом?
    ЗК на одной ноде с КХ ? Есть полный лог или трейс инсерта?
  • https://t.me/clickhouse_ru
    это две разные ошибки, ничего такого TTL вызывать не должен
  • https://t.me/clickhouse_ru
    макросы просто не для этого. В КХ есть например функция format(' {} {}....
  • https://t.me/clickhouse_ru
    вам sum( =200 ) нужен.
    count(X) считает кол-во СТРОК где поле X не null
  • https://t.me/clickhouse_ru
    тем не менее встречаются друг за дружкой в бесконечном цикле попыток мерджей. Обновился до последней версии, но ситуация та же
  • @vitaly_a1 #225283 12:25 PM, 05 Jul 2021
    да
  • https://t.me/clickhouse_ru
    TTL на поле с массивом?
  • https://t.me/clickhouse_ru
    @Makasinov #225285 12:26 PM, 05 Jul 2021
    Да, response.request Array(String) TTL stats_day + toIntervalDay(1),
  • https://t.me/clickhouse_ru
    ясно, nested предполагает что кол-во элементов всегда одинаковое во всех полях и плюс надо делать TTL немного иначе
  • https://t.me/clickhouse_ru
    есть вот такой формат выхлопа
    https://clickhouse.tech/docs/ru/interfaces/formats/#format-template
  • https://t.me/clickhouse_ru
    В доке к сожалению есть только один пример для простого Int. Можете подсказать как нужно переделать для более сложных типов? Или куда обратиться за информацией. Правильно понимаю что когда кх удаляет массив, то он не сходится по длине с другими nested полями и выдаёт ошибку?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    примеры кх в аппаратах можно ?
  • https://t.me/clickhouse_ru
    нет, nda
  • @1063161973 #225292 12:59 PM, 05 Jul 2021
    После вставки, похоже, не освобождается какой-то ресурс. Вставка выполняется 1 раз в 5 минут
  • https://t.me/clickhouse_ru
    Что с if делать?
  • https://t.me/clickhouse_ru
    @den_crane #225294 01:03 PM, 05 Jul 2021
    это не if, это "да", давайте в github с этим. Это слишком сложно в чате
  • https://t.me/clickhouse_ru
    это только активные или все парты?
  • @1063161973 #225298 01:12 PM, 05 Jul 2021
    Для одной из таблиц количество активных партов растет после каждой вставки и не уменьшается.
  • @1063161973 #225299 01:14 PM, 05 Jul 2021
    Может быть постоянный рост количества активных партов по той причине, что перед вставкой вначале удаляются прежние версии данных (по ключу дата+номер магазина) ?
  • https://t.me/clickhouse_ru
    что значит "удаляются" ? alter table delete?
  • https://t.me/clickhouse_ru
    select * from system.merges
    select * from system.replication_queue
  • https://t.me/clickhouse_ru
    похоже все ОК. У вас партиционирование не по дате, вы удаляете из и вставляете в кучу партиций и КХ не успевает мержить миллиард мелких партиций
  • @1063161973 #225306 01:24 PM, 05 Jul 2021
    Партиционирование по дате:
    PARTITION BY ((toYear(dat) * 4) + toQuarter(dat)) - 1
  • @1063161973 #225307 01:25 PM, 05 Jul 2021
    По кварталам. Когда было по месяцам toYYYYMM, проблема еще раньше возникла
  • https://t.me/clickhouse_ru
    со временем кол-во уменьшается? Вы перезаливаете за все время или за период?
  • @1063161973 #225309 01:26 PM, 05 Jul 2021
    А могут помочь настройки: parts_to_delay_insert и max_delay_to_insert ?
  • Не уменьшается. Перезаливка идет только по данным, вновь поступившим от магазинов. Иногда магазины присылают повторно уточненные данные (та же дата и номер магазина). Поэтому перед заливкой выполняется очистка по условию совпадения ключа. Ключ - строка: дата+_+НомерМагазина
  • https://t.me/clickhouse_ru
    сделайте

    set optimize_throw_if_noop=1;
    optimize table .... partition тапартициягде300партов final
    и покажите вывод
  • https://t.me/clickhouse_ru
    ахахаа, никакие индексы не используются для удаления, они только вредят
  • @1063161973 #225315 01:36 PM, 05 Jul 2021
    Code: 388, e.displayText() = DB::Exception: Cannot OPTIMIZE table: Cannot select parts for optimization
  • https://t.me/clickhouse_ru
    Видимо они все заблокированы мутацией
  • https://t.me/clickhouse_ru
    @den_crane #225318 01:50 PM, 05 Jul 2021
    system.mutaions надо смотреть
  • Спасибо, разобрался. Удаляю по спискам ключей из таблицы которую уже удалил. Поэтому зависли мутации.
    Вы очень помогли !
  • @dj_mixer #225320 01:56 PM, 05 Jul 2021
    есть магический флажок как можно запретить делать мутации на всю таблицу без указания партиций или ограничить по кол-ву партов (Типа max_parts_to_mutate)?
  • @dj_mixer #225321 02:00 PM, 05 Jul 2021
    ещё вопрос. как правильно убивать мутации в условиях репликации? если например 10 ил 600 применились на одном хосте, потом ему кинули килл, как удостоверится что на втором хосте столько же выполнилось?
  • https://t.me/clickhouse_ru
    Никак
  • https://t.me/clickhouse_ru
    Kill убивает вроде сразу на всех репликах. Все равно скачает, что бы парты были одинаковые.
  • Спасибо!
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #225278 #225325 02:29 PM, 05 Jul 2021
    ЗК и КХ на разных нодах.
    Судя по логу (по количеству записей Wrote block with ID), было создано 402 парта. Мониторил system.parts во время работы запроса - количество активных партов держалось на уровне 150-155, после схлопывания осталось 9. Все в одной партиции.
    Кстати, чуть-чуть обманул в исходных данных. Целевая таблица - не MT, а ReplicatedMT.

    Вот свежий трейс:
    [ch-node1] 2021.07.05 16:34:42.913683 [ 12862 ] {4f5ead6c-c027-4952-ac2c-eed4a4601194} <Debug> executeQuery: (from 127.0.0.1:41406) insert into rlc.Delta(eventDate, cpName, macroRegion, shoulder, record_id, ts) select mv.eventDate , mv.cpName , mv.macroRegion , mv.shoulder , mv.record_id , toDateTime('2021-07-05 14:00:00', 'Europe/Moscow') as ts from rlc.ComparedRecords mv final where 1=1 and minFit > 0;
    [ch-node1] 2021.07.05 16:34:42.918273 [ 12862 ] {4f5ead6c-c027-4952-ac2c-eed4a4601194} <Debug> rlc.ComparedRecords (SelectExecutor): Key condition: unknown, unknown, and
    [ch-node1] 2021.07.05 16:34:42.918330 [ 12862 ] {4f5ead6c-c027-4952-ac2c-eed4a4601194} <Debug> rlc.ComparedRecords (SelectExecutor): MinMax index condition: unknown, unknown, and
    [ch-node1] 2021.07.05 16:34:42.945698 [ 12862 ] {4f5ead6c-c027-4952-ac2c-eed4a4601194} <Debug> rlc.ComparedRecords (SelectExecutor): Selected 973 parts by date, 973 parts by key, 603770 marks by primary key, 603770 marks to read from 973 ranges
    ...
    [ch-node1] 2021.07.05 17:05:35.203153 [ 12862 ] {4f5ead6c-c027-4952-ac2c-eed4a4601194} <Error> executeQuery: Code: 225, e.displayText() = DB::Exception: ZooKeeper session has been expired.: While executing SinkToOutputStream (version 20.8.3.18 (official build)) (from 127.0.0.1:41406) (in query: insert into rlc.Delta(eventDate, cpName, macroRegion, shoulder, record_id, ts) select mv.eventDate , mv.cpName , mv.macroRegion , mv.shoulder , mv.record_id , toDateTime('2021-07-05 14:00:00', 'Europe/Moscow') as ts from rlc.ComparedRecords mv final where 1=1 and minFit > 0;), 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) @ 0x1a80cd70 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xff9e75d in /usr/bin/clickhouse
    2. ? @ 0x17d76211 in /usr/bin/clickhouse
    3. DB::ReplicatedMergeTreeBlockOutputStream::commitPart(std::__1::shared_ptr<zkutil::ZooKeeper>&, std::__1::shared_ptr<DB::IMergeTreeDataPart>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x17d73269 in /usr/bin/clickhouse
    4. DB::ReplicatedMergeTreeBlockOutputStream::write(DB::Block const&) @ 0x17d75582 in /usr/bin/clickhouse
    5. DB::PushingToViewsBlockOutputStream::write(DB::Block const&) @ 0x174572b6 in /usr/bin/clickhouse
    6. DB::AddingDefaultBlockOutputStream::write(DB::Block const&) @ 0x1745d469 in /usr/bin/clickhouse
    7. DB::SquashingBlockOutputStream::write(DB::Block const&) @ 0x1745cac4 in /usr/bin/clickhouse
    8. DB::CountingBlockOutputStream::write(DB::Block const&) @ 0x173ac6ec in /usr/bin/clickhouse
    9. DB::SinkToOutputStream::consume(DB::Chunk) @ 0x181251b3 in /usr/bin/clickhouse
    10. DB::ISink::work() @ 0x17ee7950 in /usr/bin/clickhouse
    11. ? @ 0x17f20460 in /usr/bin/clickhouse
    12. ? @ 0x17f250ad in /usr/bin/clickhouse
    13. ? @ 0x17f25976 in /usr/bin/clickhouse
    14. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xffce517 in /usr/bin/clickhouse
    15. ? @ 0xffccb53 in /usr/bin/clickhouse
    16. start_thread @ 0x7dd5 in /usr/lib64/libpthread-2.17.so
    17. clone @ 0xfe02d in /usr/lib64/libc-2.17.so

    Received exception from server (version 20.8.3):
    Code: 225. DB::Exception: Received from localhost:9000. DB::Exception: ZooKeeper session has been expired.: While executing SinkToOutputStream.

    0 rows in set. Elapsed: 1852.302 sec. Processed 2.81 billion rows, 39.29 GB (1.52 million rows/s., 21.21 MB/s.)
  • @dj_mixer #225326 02:39 PM, 05 Jul 2021
    можно ли что-нибудь сделать если запрос вида
    select * from system.mutations m where is_done = 0
    не выполняется (висит).

    при этом по пулам дела обстоят так:
    BackgroundPoolTask 16
    BackgroundMovePoolTask 0
    BackgroundSchedulePoolTask 2
    BackgroundBufferFlushSchedulePoolTask 0
    BackgroundDistributedSchedulePoolTask 0


    это на второй реплике (на первую был брошен килл мутации). в логах классические по кругу:
    (ReplicatedMergeTreeQueue): Not executing log entry MUTATE_PART for part 20210523-421_42_42_0_44 because source parts size (30.42 MiB) is greater than the current maximum (0.00 B).
    ...
    (ReplicatedMergeTreeQueue): Not executing log entry MERGE_PARTS for part 20210705-191_50_55_1 because source parts size (55.24 MiB) is greater than the current maximum (4.45 MiB).

    будем лечить стандартно
    ALTER TABLE ttt
    MODIFY SETTING max_bytes_to_merge_at_min_space_in_pool=161061273600, number_of_free_entries_in_pool_to_lower_max_size_of_merge=1,
    number_of_free_entries_in_pool_to_execute_mutation=1;

    но вопрос, почему select из system.mutations может висеть?
  • https://t.me/clickhouse_ru
    @it_haisenberg #225327 02:51 PM, 05 Jul 2021
    Можно ли как-то не допустить дубликатов по нескольким полям в MergeTree?
  • https://t.me/clickhouse_ru
    @it_haisenberg #225328 02:52 PM, 05 Jul 2021
    При инсерте
  • https://t.me/clickhouse_ru
    переделать таблицу на другой движок?
  • в свежих версиях есть OPTIMIZE DEDUPLICATE BY
    https://clickhouse.tech/docs/ru/sql-reference/statements/optimize/#by-expression

    при инсерте в КХ вообще нельзя избежать дублей

    помимо EmbeddedRocksDB
  • https://t.me/clickhouse_ru
    Ээээээээх)
  • https://t.me/clickhouse_ru
    @vladislav_sakun #225332 02:53 PM, 05 Jul 2021
    Либо просто не писать дубли 🙂
  • https://t.me/clickhouse_ru
    Ооооо Найс, надо попробовать
  • https://t.me/clickhouse_ru
    Ну так и хочу этого всячески избежать)
  • https://t.me/clickhouse_ru
    @dmitry_lukyanov #225335 02:58 PM, 05 Jul 2021
    Коллеги, а может кто-то скинуть статью, где доходчиво написано про настройку clickhouse-copier? В доке вообще ничего непонятно.
    zookeeper кластер установил, настроил. А как его связать с clickhouse?
    Куда класть этот злосчастный zookeeper.xml?
  • а есть место где это проверяется (то, что убивается на всех репликах)? просто в ЗК они остались...

    select count(*) from system.replication_queue rq where type like 'MUTATE_%';
    ---
    1214

    сейчас нод прожевывает мерджи, но потом как она поймет что они были убиты?
  • select * from system.replication_queue rq where type like 'MUTATE%'
    and (table, new_part_name) not in (select table, name from remote('HOST1', system.parts));

    в общем при такой проверке все ок, видимо те мутации которые уже прошли остаются в ЗК а остальные удалились при КИЛЛе
  • @dj_mixer #225338 03:48 PM, 05 Jul 2021
    теперь общий вопрос, раз лидеров больше нет, что произойдет если я запущу две разные мутации на двух разных репликах, как они упорядочатся? ведь у них будет одинаковый source_part и разные result_part ?
  • https://github.com/ClickHouse/ClickHouse/issues/25998
    вот флажок от дурачка )
  • https://t.me/clickhouse_ru
    @dkondov #225340 05:28 PM, 05 Jul 2021
    кх падает при накате скриптов с Read timed out - в логах java.net.SocketTimeoutException: Read timed out. Падает на операции ALTER TABLE some_table DROP COLUMN some_column
  • https://t.me/clickhouse_ru
    @dkondov #225341 05:28 PM, 05 Jul 2021
    может, увеличить таймаут?
  • https://t.me/clickhouse_ru
    проверьте права у кликхауса на /var/lib/clickhouse/
  • https://t.me/clickhouse_ru
    создайте :)
  • https://t.me/clickhouse_ru
    тоже создайте
  • https://t.me/clickhouse_ru
    те, кто хотят, чтобы всё само установилось не сидят на фряхе :)
  • https://t.me/clickhouse_ru
    @75280400 #225352 06:26 PM, 05 Jul 2021
    я думаю что установка всего на свете пока не предусматривает. Пробуйте создавать необходимое и снова инсталировать.
  • https://t.me/clickhouse_ru
    почитайте здесь
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-data-migration/altinity-kb-clickhouse-copier
  • https://t.me/clickhouse_ru
    >выполнил по инструкции в доке
    по инструкции в доке вы должны были поправить конфиг, но не поправили и получили кучу ошибок )
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/ru/getting-started/install/
    >Если сервер не стартует, проверьте корректность конфигурации в файле /etc/clickhouse-server/config.xml
    тарампарампа
    Установка | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    Спасибо. Но, если честно, абсолютно непонятная статья. Что это за файлы? Там не объясняется, что это такое, и нет примеров также... 🤔

    2. Create a config file for the task (task1.xml)
    3. Create the task in ZooKeeper and start an instance of clickhouse-copier
  • https://t.me/clickhouse_ru
    в /etc/clickhouse-server/config.d/zookeeper.xml
    сюда например
  • https://t.me/clickhouse_ru
    В смысле? Таск прямо в zookeeper.xml писать?
  • https://t.me/clickhouse_ru
    нет вы спросили, как связать zookeeper и clickhouse
    и куда положить zookeeper.xml чтобы clickhouse его увидел
    я ответил, не так вас понял извините

    для copier zookeeper.xml свой
    формат такой же как в обычном clickhouse
    его просто надо на диск положить на сервере где clickhouse-copier запускается и там в доке которую вам скинули показаны пути куда положить можно
  • https://t.me/clickhouse_ru
    таск отдельным XML файлом
  • https://t.me/clickhouse_ru
    А тот zookeeper.xml, что в /etc/clickhouse-server/config.d/zookeeper.xml лежит, это для чего? Это для репликации?
  • https://t.me/clickhouse_ru
    да, это для того чтобы ноды clickhouse-server могли реплицировать метаданные для ReplicatedMergeTree и distributed DDL запросы
  • https://t.me/clickhouse_ru
    это может быть один и тот же кластер ZK и для clickhouse-copier и для clickhouse-server
  • https://t.me/clickhouse_ru
    @87558923 #225366 07:05 PM, 05 Jul 2021
    Добрый вечер. Хотел удалить часть данных, сделал alter table delete, прождал час, результата нет. Посмотрел select * from system.mutations, мутация с ошибкой DB::Exception: Memory limit (total) exceeded: would use 14.19 GiB (attempt to allocate chunk of 371558958 bytes), maximum: 14.08 GiB. Удалил мутации kill mutation, решил удалить партицию, выполнил alter table on cluster drop partition, висит 3 минуты и выдаёт ошибку DB::Exception: Watching task /clickhouse/clickhouse/task_queue/ddl/query-0000000023 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background., выполняю без on cluster, обе ноды говорят DB::Exception: DROP PART|PARTITION cannot be done on this replica because it is not a leader.. Пока выполняется с on cluster в логах сервера ошибка (ReplicatedMergeTreeRestartingThread): void DB::ReplicatedMergeTreeRestartingThread::run(): Code: 49, e.displayText() = DB::Exception: Part 202107_0_1216_999999999 intersects previous part 202107_0_775_5_1215. It is a bug.. Помогите восстановить работоспособность и удалить партицию.
  • https://t.me/clickhouse_ru
    Мне кажется проблема не во времени, т.к. There are 2 unfinished hosts (0 of them are currently active)
  • https://t.me/clickhouse_ru
    Не меняется, вставка была приостановлена
  • https://t.me/clickhouse_ru
    @raw0w ↶ Reply to #202978 #225371 07:39 PM, 05 Jul 2021
    привет, ребята! извините, что так поздно - но я столкнулся с такой же проблемой. подскажите, удалось решить?
  • https://t.me/clickhouse_ru
    Там написано вверху, что примеры в документации
    https://clickhouse.tech/docs/en/operations/utilities/clickhouse-copier/
    Но непонятно, да
    Сейчас исправлю
    clickhouse-copier | ClickHouse Documentation

    clickhouse-copier Copies data from the tables in one cluster to tables in another (or the same) cluster. Warning To get

  • https://t.me/clickhouse_ru
    Мутации удалились?
    Проверьте на всех репликах.
    И мержи на всех реплликах проверьте.
    drop partition реплицируется, достаточно на одной реплике удалить.
  • https://t.me/clickhouse_ru
    kill mutation я выполнил на всех репликах, на всех и удалились (select * from system.mutations). Межей на репликах тоже нет (select * from system.merges). В зукипере есть вот такая запись
    get /clickhouse/tables/0/transactions/replicas/chi-clickhouse-cluster-0-0/queue/queue-0000010121
    format version: 4
    create_time: 2021-07-05 18:12:12
    source replica: chi-clickhouse-cluster-0-0
    block_id:
    drop
    202107_0_1216_999999999
  • https://t.me/clickhouse_ru
    Осталось проверить system.replication_queue и system.parts.
    Версия КХ одинаковая на всех репликах?
    Можно попробовать detach сделать вместо drop (он тоже реплицируется)
  • 06 July 2021 (229 messages)
  • @demetranadya #225377 03:05 AM, 06 Jul 2021
    в insert функции можно использовать?
  • @demetranadya #225378 03:07 AM, 06 Jul 2021
    например toRelativeWeekNum от текущей даты с начала года
  • @demetranadya #225379 03:40 AM, 06 Jul 2021
    пытаюсь при создании таблицы сделать так
  • @demetranadya #225380 03:41 AM, 06 Jul 2021
    date_w UInt32 default toRelativeWeekNum(now(), toStartOfYear(now())),
  • @demetranadya #225381 03:41 AM, 06 Jul 2021
    но пишет что второй аргумент должен быть строкой
  • @demetranadya #225382 03:42 AM, 06 Jul 2021
    Function toRelativeWeekNum supports 1 or 2 arguments. The 1st argument must be of type Date or DateTime. The 2nd argument (optional) must be a constant string with timezone name: While processing CAST(toRelativeWeekNum(now(), toStartOfYear(now())) AS date_w_tmp_alter8418478887376668738, 'UInt32') AS date_w: default expression and column type are incompatible. (version 21.4.6.55 (official build)
  • @demetranadya #225383 03:43 AM, 06 Jul 2021
    если второй аргумент не указывать, выводит огромное число 2688
  • @demetranadya #225384 03:44 AM, 06 Jul 2021
    должно быть количество недель с начала года в районе 28
  • @demetranadya #225385 03:44 AM, 06 Jul 2021
    из документации "Переводит дату-с-временем или дату в номер недели, начиная с некоторого фиксированного момента в прошлом."
  • https://t.me/clickhouse_ru
    @75280400 #225386 03:45 AM, 06 Jul 2021
    второй аргумент должен быть timezone
  • https://t.me/clickhouse_ru
    @75280400 #225387 03:46 AM, 06 Jul 2021
    вы cast пропустили
  • https://t.me/clickhouse_ru
    Вам toWeek нужен
  • https://t.me/clickhouse_ru
    date_w UInt32 DEFAULT toRelaviteWeekNum(toStartOfYear(now()))
  • https://t.me/clickhouse_ru
    @den_crane #225390 03:48 AM, 06 Jul 2021
    Relative это специальные функции, чтобы вычислять разность между датами.
  • https://t.me/clickhouse_ru
    @Caside #225392 04:11 AM, 06 Jul 2021
    Есть ли какой-то варинат джойна нескольких таблиц через SELECT *, чтобы в результате имена колонок не содержали алиасы таблиц с точкой?
    И в каких случаях алиасы с точками будут отсутствовать в результате?
    Я проверял на нескольких примерах.
    1: джойн 2 таблиц через select *, имена колонок не совпадают между таблицами, в результате имена колонок не изменились
    2: джойн 3 таблиц через select *, имена колонок тоже не совпадат, но в результате появились алиасы с точками как префиксы всех имён колонок. При этом джойн 1 и 2 таблицы получается без алиасов с точками, 2 с 3-й отдельно тоже. Несколько раз проверял - дело не в совпадающих именах колонок, все уникальны.
  • https://t.me/clickhouse_ru
    @Caside #225394 05:03 AM, 06 Jul 2021
    И ещё - SELECT * EXCEPT() работает только в обычном селекте без джойнов?
  • Подскажите, привильно ли я понимаю.
    Для обновления строки, КХ читает все строки парта, проверяет подходят ли они под условие мутации, если да, то мутирует, пишет ВО ВРЕМЕННЫЙ парт, и потом этот временный сливает с основным, верно?
  • @1803285152 #225397 07:27 AM, 06 Jul 2021
    Подскажите как мне сохранить вывод в трубой таблицы на другой машине?
    Пример запроса
    Select * From data_test
    Where data > '20201-05-26'
    Полагаю нужен Zookeeper, но как с ним скопировать результат на другую машину?
  • https://t.me/clickhouse_ru
    да, если парт уже полностью объединен, то просто идет перечитывание всего парта и запись нового но уже с обновленными значениями строк попадающих под улосвия...

    мутация также применяется и при штатном слиянии
    когда из нескольких партов делают один
  • @maxsyskov #225399 07:29 AM, 06 Jul 2021
    Понял, спасибо большое
  • https://t.me/clickhouse_ru
    на удаленной машине сделайте
    INSERT INTO new_table SELECT FROM remote(...) WHERE ...
  • спасибо
  • @semchalex #225402 08:00 AM, 06 Jul 2021
    Всем привет, подскажите пожалуйста можно как-то на clickhouse обратиться к предыдущей строке (с нужной сортировкой и partition by, как в оконной функции lag)?
    Что-то типа такого: lag(url) over (partition by user_id order by event_date)
  • https://t.me/clickhouse_ru
    в новых версиях windows функции есть
    попробуйте ровно так как вы написали
  • @sasha_moi #225404 08:06 AM, 06 Jul 2021
    всем привет! Может кто-нибудь подсказать, будет ли работать кейс, когда source table с движком null, а две вьюхи (materialized view) с replicatedMergeTree? Нашла ман от den crane, он описывает только кейс, когда реплицируется и source table и вьюхи (https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf) . Спасибо заранее 🤗
  • О какой версии идет речь? 21.6?
  • https://t.me/clickhouse_ru
    https://altinity.com/blog/clickhouse-window-functions-current-state-of-the-art
    21.5 и выше
    но лучше 21.6 или 21.7
    там для distributed таблиц были правки для window funcitons
    ClickHouse Window Functions -- Current State of the Art

    Window functions are available in ClickHouse! Learn about this long-awaited feature and how it works, based on extensive QA work at Altinity.

  • Понял, спасибо большое за статью!
  • https://t.me/clickhouse_ru
    Версия КХ одинаковая везде 21.5.5.12. В system.replication_queue пусто, в system.parts много всего, что там можно проверить? detach ведёт себя так же как drop
  • @7699150 #225411 09:37 AM, 06 Jul 2021
    Добрый день!
    Подскажите пожалуйста, как можно получить Date из строки DD.MM.YYYY?
    Например из 02.04.2021
  • https://t.me/clickhouse_ru
    SELECT toDate(parseDateTimeBestEffort('02.04.2021'))

    ┌─toDate(parseDateTimeBestEffort('02.04.2021'))─┐
    │ 2021-04-02 │
    └───────────────────────────────────────────────┘
  • спасибо )
  • Vsegda bylo interesno, a kak on reshayet gde den a gde mesyac 😂
  • https://t.me/clickhouse_ru
    сначала день потом месяц, для любителей извращений есть
    parseDateTimeBestEffortUS
  • O, pro US ne obrashal vnimaniye ) spasibo
  • https://t.me/clickhouse_ru
    @skirpichenok #225418 09:50 AM, 06 Jul 2021
    Добрый день. Использую ReplicatedVersionedCollapsingMergeTree. Почему FINAL or OPTIMIZE не работают если записи для одного и того же ID с sign 1 and sign -1 на разных нодах в кластере (данные вставляются через Distibuted tables). Как решить?
  • https://t.me/clickhouse_ru
    потому что неправильно выбран sharding_key для Engine=Distributed

    схлопывание FINAL как и OPTIMIZE FINAL работает на локальной таблице в рамках одной реплики , для одной PARTITION BY ...
  • https://t.me/clickhouse_ru
    Distributed ничего не знает про особенности движка локальной таблицы поверх которой он настроен
    при SELECT ... он пробрасывает просто FINAL в локальную sub query ... а там соответсвенно никто ничего не знает про другие реплики и шарды
  • https://t.me/clickhouse_ru
    @skirpichenok #225421 09:56 AM, 06 Jul 2021
    ок спасибо. поэкспериментирую с sharding_key
  • https://t.me/clickhouse_ru
    @apluhin #225423 10:00 AM, 06 Jul 2021
    привет, а есть какая-нибудь возможность прочитать большую выборку из таблицы батчами из запроса с ORDER BY и WHERE по индексным полям
    с limit и offset в конце уже довольно медленно ползет, видел что-то по стриминг, но в этом случае весь результат должен быть в памяти?
  • @kazansky85 #225427 11:15 AM, 06 Jul 2021
    Всем привет, как в ClickHouse положить в колонку json с произвольным массивом?

    В одном запросе может прилететь 10 ключей, в другом - 20. Хочу положить как String, а клик при инсерте пытается парсить как json. JSONAsString говорит, что инсертить надо только один столбец.
  • https://t.me/clickhouse_ru
    да, FORMAT JSONAsString и вставка в один столбец
    и отдельные столбцы с DEFAULT JSONExtract(...)
  • https://t.me/clickhouse_ru
    Там вначале документа объяснено что движок соурс таблицы не имеет значения
  • И репликация будет работать?
  • https://t.me/clickhouse_ru
    конечно будет.
  • Пуля, спасибо 🤓
  • https://t.me/clickhouse_ru
    Ничего не сливает. кх читает исходный парт и пишет временный со ВСЕМИ строками и потом просто временный становится активным, исходный удаляется.
  • https://t.me/clickhouse_ru
    insert intl Select ... from remote
    Или
    Insert into function remote() select ...
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #225325 #225435 11:26 AM, 06 Jul 2021
    @den_crane можете подсказать по вчерашнему вопросу с ошибкой "ZooKeeper session has been expired"?
  • Спасибо
  • https://t.me/clickhouse_ru
  • Спасибо!
  • Огонь, спасибо, попробую
  • https://t.me/clickhouse_ru
    вот тут подробнее про подход
    https://eng.uber.com/logging
    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
    похоже что просто зукипер перестал отвечать. Надо смотреть нагрузку на диски зукипера и лог зукипера
  • @635404397 #225442 12:05 PM, 06 Jul 2021
    Добрый день,
    Подскажите, пожалуйста, что я делаю или понимаю не так о настройке mutations_sync. Задача - перезалить часть данных, сначала нужно все данные по предикату удалить, а после вставить новые. После прочтения документации мне показалось, что при установке mutations_sync=2, команда ALTER DELETE завершается после того, как все данные удалены на всех репликах и партиции перезаписаны.

    Выполняю в clickhouse-client
    set mutations_sync = 2;

    ALTER TABLE mytable ON CLUSTER mycluster
    DELETE WHERE device_id = 42540
    SETTINGS mutations_sync = 2

    Query id: d2cd632a-0848-461b-bc1c-d18659b70d59

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

    2 rows in set. Elapsed: 0.638 sec.
    Следом выполняю count(*) WHERE device_id = 42540 и получаю не нулевое количество.

    Я что-то не так понял или сделал?
  • https://t.me/clickhouse_ru
    а что в system.mutations для этой мутации?
  • https://t.me/clickhouse_ru
    надо в таблице транзакций добавить поля для бонусов и писать массивы с бонусами
  • в mutations присутствует запись. parts_to_do постепенно уменьшается.
    но я ожидал что команда ALTER TABLE вернет управление только когда все партиции перезапишутся. возможно есть разница в выполнении из clickhouse-client и по jdbc? Я выполняю из client, но это исключительно для тестирования. по факту на prod нужно будет выполнять по jdbc и было бы удобно написать в коде что-то типа
    client.execute("ALTER TABLE DELETE ....)
    client.execute("INSERT ...")
    т.е. я хочу записывать новые данные только после того, как удалены старые
  • Какие отличия? И что лучше использовать?
  • https://t.me/clickhouse_ru
    никаких, что удобнее
  • https://t.me/clickhouse_ru
    странно, таблица replicated?
  • @635404397 #225453 12:23 PM, 06 Jul 2021
    да
    CREATE TABLE IF NOT EXISTS mytable ON CLUSTER mycluster
    (
    `device_id` UInt64 NOT NULL,
    `data_item_id` UInt64 NOT NULL,
    `data_time` DateTime64(3, 'UTC') NOT NULL CODEC(DoubleDelta),
    `data_value` Float64 NOT NULL CODEC(Delta, LZ4)
    )
    ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/ts_data_double11', '{replica}')
    PARTITION BY toYYYYMM(data_time)
    ORDER BY (device_id, data_item_id, data_time)
    SETTINGS index_granularity = 8192;
  • https://t.me/clickhouse_ru
    вы хотите совсем разные сущности хранить в одной широкой таблице?
  • https://t.me/clickhouse_ru
    @vafonin #225455 12:24 PM, 06 Jul 2021
    Добрый день. Прошу помочь.
    Подключил dictionary (geoip в формате csv) к серверу. И почему-то простой селект на сервере в продакшене, как-то странно форматируется строку с ipv4 в 16-ричный формат. При том что на тестовом сервере всё нормально.
    Тестовый сервер -
    https://gyazo.com/f66da528a9ca6ffe05b3df6cd3786fe7?token=f32ab0f7d91e347721b38514b13d2d2f
    Продакшен -
    https://gyazo.com/5cf2ec410e759b61a82cf81d2e00271f
    Screenshot by Gyazo

    Easily capture screenshots, GIFs, and replays that are ready to share. Download the free app for windows and mac.

  • https://t.me/clickhouse_ru
    видимо еще один баг
  • https://t.me/clickhouse_ru
    да без разницы как они связаны, смысл какой их пихать в одну таблицу?
  • что лучше использовать в качестве workaround? можно ли по jdbc получить query id и связать его в записями из system.mutations?
  • https://t.me/clickhouse_ru
    select version() на обоих?
  • https://t.me/clickhouse_ru
    на тестовом сервере 21.6.6.51 , на проде 20.6.4.44
  • https://t.me/clickhouse_ru
    вообще вы понимаете зачем мутации? Они не предполагались к использованию как часть бизнес-процессов, поэтому я не хочу обсуждать это, потому что вы упомянули JDBC.
  • @635404397 #225463 12:31 PM, 06 Jul 2021
    это poc по переезду timeseries с кассандры на clickhouse. процесс уже таков и менять его не хочется, если есть хоть какие-то варианты его сохранить. такие delete выпролняются всего 10-20 раз в день, что мне кажется допустимым
  • https://t.me/clickhouse_ru
    я понял, это select из словаря. Это не интересно. Это undefined behaviour
  • https://t.me/clickhouse_ru
    по моей статисктике мутации успешно завершаются с вероятностью 50%. Поэтому это все бессмысленный разговор.
  • https://t.me/clickhouse_ru
    т.е. как-то это поправить толком не получится? всё перегуглил уже
  • https://t.me/clickhouse_ru
    а зачем это править? Какая разница что select показывает? Словарь не для этого
  • https://t.me/clickhouse_ru
    мне нужно чтоб ipv4 адреса отображались в нормальном привычном формате
  • https://t.me/clickhouse_ru
    абаждите, вы покажите проблему с dictGet
  • https://t.me/clickhouse_ru
    о, а с dictGet и правда норм работает, спасибо
  • @635404397 #225471 12:43 PM, 06 Jul 2021
    > по моей статисктике мутации успешно завершаются с вероятностью 50%. Поэтому это все бессмысленный разговор.

    а вот это интересно и неожиданно. возможно можете посоветовать как быть в таком случае?
    имеется таблица с timeseries данными - показания датчиков. в нормальном режиме данные приходят в реальном времени, писать можем батчами раз в N секунд. но иногда с датчиков приходят выгрузки за определенный период и бизнес требования таковы, что все существующий данные по этому датчику за указанный период нужно заменить. т.е. не дописать строки, а все что есть удалить (или сделать недействительным), а после новые записать.
    колич датчиков ~100K, input rate ~30K rows/sec. колич таких выгрузок 10-20 в день, т.е. это редкий случай и скорость их загрузки не имеет значения. именно для этого я думал о ALTER DELETE
  • @N0tNu11 #225473 12:51 PM, 06 Jul 2021
    Привет! А нет ли проблем у ReplacingMergeTree с optimize final? Заметил странное поведение. Внутри единстенной партиции есть 15 партов и optimize final ничего не делает(запрос просто завершается). За то если вызвать без final, то запрос что-то делает
  • А что вы хотите чтобы запрос сделал? Выдал ответ?
  • хочу чтобы он парты мержить начал)
  • @ViacheslavNefedov #225476 12:53 PM, 06 Jul 2021
    У меня мерджит
  • @N0tNu11 #225477 12:53 PM, 06 Jul 2021
    в query_log вижу, что запрос завершается корректно
  • @635404397 #225478 12:53 PM, 06 Jul 2021
    вопрос вдогонку про вероятность успешного выполнения 50%:
    разве стандартное слияние партиций сделано не через мутации? как это работает если мутации то выполняются то нет? можете подробней рассказать что происходит с failed мутациями? они просто скипаются или происходит повторная попытка?
  • @corochoone #225479 01:01 PM, 06 Jul 2021
    Добрый день.
    Помогите пожалуйста решить проблему с ODBC.
    Установлен и настроен ODBC-драйвер для PostgreSQL. Выполняем запрос через isql - всё отлично, всё работает.
    Выполняем запрос в ClickHouse (через clickhouse-client) и получаем ошибку:

    Code: 86. DB::Exception: Received from localhost:9000. DB::Exception: Received error from remote server /columns_info?connection_string=DSN....
    HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:4806: 08S0: SQLTables unable due to the connection lost (version 21.5.5.12 (official build))'

    Запрос простейший вида:
    SELECT * FROM odbc('DSN=psql_dsn;', 'sometable') LIMIT 1;

    Если же запрос изменить, добавив к DSN значения uid и password, т.е.
    SELECT * FROM odbc('DSN=psql_dsn;uid=clickhouse;passwd=xxxxxx', 'sometable') LIMIT 1;

    тоо всё работает!

    Если выполнить рестарт clickhouse-server, то ошибка исчезает на какое-то время, а потом снова появляется. Закономерности пока никакой выявить не удалось.
  • https://t.me/clickhouse_ru
    @skirpichenok #225480 01:17 PM, 06 Jul 2021
    Добрый день. Можно ли как то заставить ClickHouse создавать несколько материализованных преставлений параллельно? Я например запускаю создание 10 (все с populate) первый самое большое - занимает до 2ух минут и последней MV создается обычно за 1 сек.Так вот если я запустил создание сразу 10, то они похоже создаются по одному. Т.к тот что обычно занимает 1 сек ждет пока будут созданы все, которые были запущены на создание ранее.
  • https://t.me/clickhouse_ru
    @matthiasBT #225481 01:23 PM, 06 Jul 2021
    привет
    подскажите, пожалуйста, есть ли функция, которая добивает переданную строку нужным символом до определенной длины?
    например, передали 40000, хочу добить нулям слева, чтобы получить строку длиной 6 символов, т.е. 040000
    аналогично: 1000 -> 001000
  • https://t.me/clickhouse_ru
    repeat('0', 6- lenght(str)) || str

    Но мб есть и другой враиант
  • https://t.me/clickhouse_ru
    Лучше не использовать POPULATE
  • https://t.me/clickhouse_ru
    @skirpichenok #225484 01:29 PM, 06 Jul 2021
    Ок
  • https://t.me/clickhouse_ru
    postgresql движок вам не подходит по какой то причине?
  • https://t.me/clickhouse_ru
    @skirpichenok #225486 01:30 PM, 06 Jul 2021
    Тогда такой вопрос. Возникла идея на базе distirbuted tables построить materialized views, данные в которых обновляются атоматически.

    Нашел статью про это https://github.com/ClickHouse/ClickHouse/issues/467

    Но в данном случае надо как-то избавляться от устаревших записей в MV, чтобы показывать только актуальные / последние данные: т.е. для какого-то id брать запись с max(version). Как это лучше реализовать?
    How to use `Distributed` with `MaterializedView` · Issue #467 · ClickHouse/ClickHouse

    CREATE TABLE IF NOT EXISTS insert_view(...) ENGINE = Null; CREATE MATERIALIZED VIEW data_local ENGINE = AggregatingMergeTree(..., sumState(num1) as num1,sumState(num2) as num2,sumState(num3) as num...

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ReplacingMergeTree

    и писать запросы правильным способом.
    Отсутствие дубликатов не гарантируется в любой момент времени.
    https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree
  • Да. PostgreSQL используется как источник данных для ClickHouse, но вот возникла проблема :(
  • https://t.me/clickhouse_ru
    Я к тому, что в 21.5 кликхаус должен уметь сам ходить в postgresql без odbc
  • https://t.me/clickhouse_ru
    Правильным это каким?
  • https://t.me/clickhouse_ru
    Ну я скинул ссылку, там показаны разные способы
  • https://t.me/clickhouse_ru
    я бы не стал использовать КХ в этом случае. КХ для иммьютабл данных.
    Я бы взял timescaledb. Там можно апдейтить несжатые данные
  • https://t.me/clickhouse_ru
    хм странно, может места нет
  • https://t.me/clickhouse_ru
    наоборот, мутации это особый вид мержа. Ломаются мутации по разным причинам, и вообще кто сказал что мутация выполнится например за 8 часов? Они могут работать очень долго и это ожидаемо
  • https://t.me/clickhouse_ru
    но в 21.5 odbc не нужен для PG? там есть движок готовый
  • @635404397 #225499 02:35 PM, 06 Jul 2021
    > Я бы взял timescaledb
    он плохо жмет данные и storage получается очень дорогим. clickhouse нравится наличием конфигурируемых кодеков + сжатия, пока навскидку получается в 2.5x меньше затрат на хранение по сравнению с cassandra. timescaledb в разы больше места использует. плюс поддержка ttl с перемещением в s3 позволит сократить расходы еще сильнее.

    > и вообще кто сказал что мутация выполнится например за 8 часов
    наверное может, но я наивно полагал что время выполнения есть функция от колиства и размера партиций, которые надо поменять

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

    https://kb.altinity.com/altinity-kb-queries-and-syntax/delete-via-tombstone-column
  • https://t.me/clickhouse_ru
    @innopolis #225502 02:57 PM, 06 Jul 2021
    а как работает получение списка партиций

    `SELECT * FROM system.parts
    WHERE active and database = '<db>'
    `,

    когда есть таблицы distributed? (и кластер) Сейчас время от времени возвращается результат
  • в таком случае упасть не должно?
  • https://t.me/clickhouse_ru
    что упасть? мерж проверяет что места * 2 есть и резервирует и потом стартует
  • https://t.me/clickhouse_ru
    никак. system.parts ничего не знает про кластер.
  • https://t.me/clickhouse_ru
    Т е при применении кластеров нельзя получить список партиций таким способом? Или это еще Distributed не закончил процесс раскидывания данных?

    Есть таблица MergeTree, есть Distributed

    Так после этого запроса на партиции ответ приходит через раз

    create table db.table_local on cluster clickhouse1
    (
    video_id String,
    publication_ts DateTime,
    version Date
    )
    Engine = MergeTree() partition by version order by tuple() SETTINGS index_granularity = 8192

    create table db.table on cluster clickhouse1
    (
    video_id String,
    publication_ts DateTime,
    version Date
    )
    Engine = Distributed(clickhouse1, db, table_local, rand())

    db тоже создана ON CLUSTER
  • https://t.me/clickhouse_ru
    каша, какая каша.

    Если вы используете инсерт в Distributed и вам нужна гарантия вставки в реальные таблицы, то просто установите insert_distributed_sync = 1

    --insert_distributed_sync arg If setting is enabled, insert query into distributed waits until data will be sent to all nodes in cluster.

    если вы хотите увидеть сколько еще не раскидано, испольуйте system.distribution_queue

    если вы хотите сделать запрос ко всем нодам, используйте from clusterAllRelicas
  • https://t.me/clickhouse_ru
    @nshumshurova #225508 03:14 PM, 06 Jul 2021
    есть вопрос, какие обычно причины того что высокий iowait у кликхауса
  • https://t.me/clickhouse_ru
    так у вас нет репликации, вы что пытаетесь сделать?
  • На самом деле всегда есть вариант. Можно запустить десяток тредов с использованием between по кускам PK и это будет в целом норм. Если не хочется думать и делать update в лоб, то да, но всегда есть workaround
  • https://t.me/clickhouse_ru
    пропускная способность диска, ниже чем clickhouse хочет прочитать \ написать

    читает \ пишет clickhouse достаточно много...
  • https://t.me/clickhouse_ru
    по таблицам - хочу иметь таблицы на нодах 1-8 (в рамках кластера clickhouse1), и иметь для вставки distributed таблицу

    по партициям - хочу по запросу

    ```SELECT * FROM system.parts
    WHERE active and database = '<db>'
    ```
    получать список всех партиций

    ЧЯДНТ?)
  • https://t.me/clickhouse_ru
    весь список из 778 пунктов.

    1. слишком мелкие инсерты слишком часто.
    2. какой-то баран запустил optimize final
    3. кто-то использует мутации неправильно
    4. один из дисков вышел из строя
  • https://t.me/clickhouse_ru
    да все делаете не так
  • https://t.me/clickhouse_ru
    в 19 версии видимо нет system.distribution_queue, btw
  • https://t.me/clickhouse_ru
    19 is out of support
  • https://t.me/clickhouse_ru
    @Vsevolodlukovsky #225517 03:18 PM, 06 Jul 2021
    Привет. Переливаем данные из одной бд в другую на регулярной основе Python-ом. Какие бест практис на эту тему, чем лучше пользоваться?
  • https://t.me/clickhouse_ru
    select * from remore()
  • https://t.me/clickhouse_ru
    optimize final нельзя никогда?
  • https://t.me/clickhouse_ru
    что-то никак не пойму, вы хотите заменять старые записи, но не хотите использовать движок ReplacingMergeTree, всё так?
  • https://t.me/clickhouse_ru
    очень редко, равносильно перезаписи всей бд
  • по-моему логично валить ошибку запроса если нехватает места
  • https://t.me/clickhouse_ru
    ммм а как правильно жать данные?
  • https://t.me/clickhouse_ru
    они и так жмутся правильно, когда алгоритм решит, что "надо" иначе алгоритм считает, что оно того не стоит и не жмёт.
  • https://t.me/clickhouse_ru
    если не жмет никогда без принудиловки тогда что не так? GraphiteMergeTree
  • https://t.me/clickhouse_ru
    про графит ничего не скажу, это специфичный движёк, такие нюансы лучше сразу в вопросе указывать
  • https://t.me/clickhouse_ru
    Для графит да. Надо использовать optimize in partition final . Есть специальное приложение которое умное и в курсе как делать.
  • я только начинаю изучать clickhouse, но мне кажется, что ReplacingMergeTree есть аналогом UPSERT. т.е. он либо заменит, либо добавит новые строки. если же в истории, которую надо предварительно удалить, была строка с primary key таким, которого нет в новой "коррекции" данных, которую и надо залить, то это строка останется. ReplacingMergeTree не очень подходит. буду изучать можно ли менять бизнес требования и можно ли их изменить
  • https://t.me/clickhouse_ru
    Косякнул, из одной СУБД в другую. Из не-клика в клик
  • а чем принципиально отличается от delete? я имею в виду внутреннюю реализацию. я так понял и то и другое мутация, выше писали, что мутации не надежны и могут просто не работать. я понял, что быстрее, но имеет ли ту же надежность (ну или ненадежность :) ) ?
  • https://t.me/clickhouse_ru
    >буду изучать можно ли менять бизнес требования
    >бизнес требования таковы, что все существующий данные по этому датчику за указанный период нужно заменить. т.е. не дописать строки, а все что есть удалить (или сделать недействительным)

    эм, не вижу противоречий если вам нужно удалять данные, то вы можете их просто заменять недействительными, согласно вашим же бизнестребованиям.
    а вот уже недействительные записи вы можете в дальнейшем удалять раз в сутки-неделю, чтобы глаза не мазолили
  • https://t.me/clickhouse_ru
    UPDATE одной маленькой UInt8 колонки сильно быстрее, чем удаление данных
  • @635404397 #225533 03:39 PM, 06 Jul 2021
    ok, буду пробовать. спасибо большое!
  • https://t.me/clickhouse_ru
    @Vsevolodlukovsky #225534 03:58 PM, 06 Jul 2021
    Так как лучше всего заливать данные например из MSSQL в ClickHouse, используя питон?
  • https://t.me/clickhouse_ru
    быстрее всего через bcp экспортировать в TSV и заливать через clickhouse-client
    https://docs.microsoft.com/ru-ru/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server?view=sql-server-ver15

    если одноразово
    если нет, то можно и через python
    нормально большими батчами
    Массовый импорт и экспорт данных с помощью программы bcp - SQL Server

    Использование программы bcp для экспорта данных из любого места в базу данных SQL Server, где работает SELECT. Массовый экспорт данных из таблицы или из запроса и массовый импорт из файла.

  • https://t.me/clickhouse_ru
    да, но bcp не умеет экранировать, поэтому можно убить кучу времени на него впустую. Я пробовал с одним клиентом, в итоге написали генератор CSV файлов на go который читал MSSQL и писал CSV.
    python конечно тут использовать бессмысленно, только CPU насиловать
  • @635404397 #225537 04:21 PM, 06 Jul 2021
    а кто-то использует clickhouse для хранения timeseries когда нужны низкие задержки на чтение?
    имеется талица device_id UInt32, date_time DateTime, series_id UInt32, value Float32 ORDER BY (device_id, series_id, date_time).
    колич строк ~ 1×10^12
    все запросы простые - select * from table where device_id = ? and series_id = ? and date_time between ? and ? limit a offset b
    rps низкий - 10-20 req/sec, но нужна latency на уровне сотен ms.
    подходит ли clickhouse для этого? (чисто интуитивно - да, но это пока на уровне интуиции). кто-то имеет похожие случаи?
  • https://t.me/clickhouse_ru
    а если из вертики? Тоже через TSV?
  • https://t.me/clickhouse_ru
    я из вертики импорчу как TSV
  • по моему личному опыту из вертики быстро и удобно экспортировать в паркет.
  • а по скорости как? я может что делал не так, но экспорт в csv долго работал
  • https://t.me/clickhouse_ru
    быстро, я не мерял особо, я делаю так

    echo "select * from " |Vsql -q -t -P format=unaligned | clickhouse-client
  • https://t.me/clickhouse_ru
    Parquet на ClickHouse импортится сейчас медленее TSV
  • https://t.me/clickhouse_ru
    @vchernyshev #225544 04:34 PM, 06 Jul 2021
    Кстати, если уж тут идёт беседа про обновления данных. Мы в конторе планируем посадить на кликхаус систему финансовой аналитики. Там тоже возникают ситуации, когда с бирж приходят корректировки, и надо старые данные "обновить". Ну так вот, во время тестов на относительно небольшом куске данных в 80 миллиардов строк выяснилось, что делать выборку из ReplacingMergeTree правильным способом (с гарантией отсутствия дубликатов) получается как-то слишком медленно.

    В качестве обходного пути мы сделали вот что: в таблице, где эти данные лежат, есть колонка с версией. Собственно версии хранятся в отдельной базе данных, в кликхаус периодически подгружаются как словарь и используются в запросах через dictGet. Обновление, в итоге, перестаёт быть обновлением, так как старые данные никогда не меняются.

    Работает это гораздо быстрее чем ReplacingMergeTree, но мне интересно, возможно ли это сделать проще?
  • https://t.me/clickhouse_ru
    КХ читает и разжимает десятки мегабайт, даже если надо прочитать одну строку.
  • https://t.me/clickhouse_ru
    @vchernyshev #225546 04:35 PM, 06 Jul 2021
    Ну и хотелось бы периодически старые версии подчищать в пределах одной partition. Но, читая этот чат, как-то страшно становится 😂
  • https://t.me/clickhouse_ru
    Да, решили.
    Пользователю не хватало прав. А "клонов" сбросили перезапуском сервера.
  • https://t.me/clickhouse_ru
    а через пандас датафрейм имеет смысл пробовать или это плохая идея? Без файлов.
  • https://t.me/clickhouse_ru
    есть какой-то https://github.com/kszucs/pandahouse я не проверял
  • привет, подскажите пжл
    вот такая таблица

    CREATE TABLE IF NOT EXISTS INFORMATION_SCHEMA.tables_shard ON CLUSTER '{cluster}' (
    `TABLE_CATALOG` String,
    `TABLE_SCHEMA` String,
    `TABLE_NAME` String,
    `TABLE_TYPE` String ,
    `ENGINE` Nullable(String),
    `VERSION` Nullable(Int16),
    `ROW_FORMAT` Nullable(String),
    `TABLE_ROWS` Nullable(UInt64),
    `AVG_ROW_LENGTH` Nullable(UInt64),
    `DATA_LENGTH` Nullable(UInt64),
    `MAX_DATA_LENGTH` Nullable(UInt64),
    `INDEX_LENGTH` Nullable(UInt64),
    `DATA_FREE` Nullable(UInt64),
    `AUTO_INCREMENT` Nullable(UInt64),
    `CREATE_TIME` datetime ,
    `UPDATE_TIME` Nullable(datetime),
    `CHECK_TIME` Nullable(datetime),
    `TABLE_COLLATION` String,
    `CHECKSUM` Nullable(Int64),
    `CREATE_OPTIONS` Nullable(String),
    `TABLE_COMMENT` String
    ) ENGINE= ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/tables_shard', '{replica}')
    ORDER BY `CREATE_TIME`
    ;

    пытаюсь вставить такие строчку

    def,mysql,innodb_table_stats,BASE TABLE,InnoDB,10,Dynamic,2,8192,16384,0,0,6291456,NULL,2021-07-05 15:10:45,2021-07-05 16:46:28,NULL,utf8_bin,NULL,row_format=DYNAMIC stats_persistent=0,

    и получаю

    Code: 27. DB::ParsingException: Cannot parse input: expected ',' before: 'NULL,2021-07-05 15:10:45,2021-07-05 16:46:28,NULL,utf8_bin,NULL,row_format=DYNAMIC stats_persistent=0,\n\n':
    Row 1:
    Column 0, name: TABLE_CATALOG, type: String, parsed text: "def"
    Column 1, name: TABLE_SCHEMA, type: String, parsed text: "mysql"
    Column 2, name: TABLE_NAME, type: String, parsed text: "innodb_table_stats"
    Column 3, name: TABLE_TYPE, type: String, parsed text: "BASE TABLE"
    Column 4, name: ENGINE, type: Nullable(String), parsed text: "InnoDB"
    Column 5, name: VERSION, type: Nullable(Int16), parsed text: "10"
    Column 6, name: ROW_FORMAT, type: Nullable(String), parsed text: "Dynamic"
    Column 7, name: TABLE_ROWS, type: Nullable(UInt64), parsed text: "2"
    Column 8, name: AVG_ROW_LENGTH, type: Nullable(UInt64), parsed text: "8192"
    Column 9, name: DATA_LENGTH, type: Nullable(UInt64), parsed text: "16384"
    Column 10, name: MAX_DATA_LENGTH, type: Nullable(UInt64), parsed text: "0"
    Column 11, name: INDEX_LENGTH, type: Nullable(UInt64), parsed text: "0"
    Column 12, name: DATA_FREE, type: Nullable(UInt64), parsed text: "6291456"
    Column 13, name: AUTO_INCREMENT, type: Nullable(UInt64), parsed text: <EMPTY>
    ERROR: garbage after Nullable(UInt64): "NULL,2021-"

    : data for INSERT was parsed from stdin: (at row 1)

    правильно ли я понимаю что NULL поддерживается?

    https://clickhouse.tech/docs/en/sql-reference/data-types/nullable/
    Nullable | ClickHouse Documentation

    Nullable(typename) Allows to store special marker (NULL) that denotes “missing value” alongside normal values allowed by

  • https://t.me/clickhouse_ru
    │ input_format_csv_unquoted_null_literal_as_null │ 0 │ 0 │ Consider unquoted NULL literal as \N
  • это все нужно добавить в запрос после SETTINGS?
  • https://t.me/clickhouse_ru
    в сеттингах может не сработать, тк парсится в конце. точно поможет прописать в юзер профиль или в коннекш стринг
  • https://t.me/clickhouse_ru
    @unamedrus #225554 05:42 PM, 06 Jul 2021
    вы как вставляете
  • через --query="INSERT INTO TABLES FORMAT CSV";
  • https://t.me/clickhouse_ru
    тогда можете просто --input_format_csv_unquoted_null_literal_as_null=1
  • спасибо, вроде помогло - после выполнения не ругнулось. только почему-то в таблице вместо 326 записей в таблицу попало 19
  • @sidorov_me #225559 06:00 PM, 06 Jul 2021
    Ребят, подскажите плиз как подключиться к кликхаусу, обложенному самовыписанными сертификатами (есть ca и клиентская пара ключ-сертификат) из ODBC драйвера под Windows. Напрямую официальный виндовый ODBC драйвер для кликхауса, насколько я понял, не умеет в TLS. Попробовал поставить nginx как reverse-proxy, так он ругается на саму строку запроса, которая начинается со знака "?". Целевой получатель данных - PowerBI, если это важно. Может кто-то сталкивался ?
  • https://t.me/clickhouse_ru
    Почему вы считаете, что не умеет?

    https://github.com/ClickHouse/clickhouse-odbc/blob/master/packaging/odbc.ini.sample
    clickhouse-odbc/odbc.ini.sample at master · ClickHouse/clickhouse-odbc

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

  • @238773844 #225561 06:04 PM, 06 Jul 2021
    Рабочий крнфг nginx, правда без SSL https://pastebin.com/Q8PTVBQZ
    server { listen 80; server_name yyy.xxx.zzz; proxy_redirect - 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.

  • @238773844 #225562 06:07 PM, 06 Jul 2021
    кстати, вопрос: случайно не пофикили проблему авторизации на CH через nginx ? при аllowed netorks не учитывался remote_addr
  • https://t.me/clickhouse_ru
    @80906642 #225563 06:08 PM, 06 Jul 2021
    Code: 33. DB::Exception: Received from localhost:9000. DB::Exception: Cannot read all data in MergeTreeReaderCompact. Rows read: 0. Rows expected: 8192.: (while reading column 900.detected): While executing MergeTreeThread.
    Подскажите, пожалуйста, при каких условиях может возникнуть такое исключение?
  • https://t.me/clickhouse_ru
    Какая версия?
  • https://t.me/clickhouse_ru
    имеется в виду что то вроде proxy protocol?
  • @238773844 #225566 06:09 PM, 06 Jul 2021
    client(1.1.1.1)->nginx(2.2.2.2)-->CH
  • @238773844 #225567 06:09 PM, 06 Jul 2021
    нужно создать user A allowed network 2.2.2.2/32
  • @238773844 #225568 06:10 PM, 06 Jul 2021
    тк коннект идет с nginx
  • @238773844 #225569 06:10 PM, 06 Jul 2021
    хотелось иметь user A allowed networks 1.1.1.1/32
  • https://t.me/clickhouse_ru
    21.3.3.14
  • https://t.me/clickhouse_ru
    @unamedrus #225571 06:11 PM, 06 Jul 2021
    Хм, мне кажется нужно будет добавить обе сети
    Но вообще это либо сделали https://github.com/ClickHouse/ClickHouse/pull/17707

    Либо вот фича реквест
    https://github.com/ClickHouse/ClickHouse/issues/24796
    Allow quotas to be keyed by proxy-forwarded IP address; add support for PROXY protocol by alexey-milovidov · Pull Request #17707 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Add support for PROXYv1 protocol to wrap native TCP inter...

  • https://t.me/clickhouse_ru
    обновитесь на последнюю 21.3
  • https://t.me/clickhouse_ru
    @unamedrus #225573 06:11 PM, 06 Jul 2021
    21.3.13
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    @unamedrus #225575 06:12 PM, 06 Jul 2021
    Не обещаю, что решит проблему, но ваша версия сыровата.
  • @238773844 #225576 06:13 PM, 06 Jul 2021
    Issue 24796 то что надно
  • @238773844 #225577 06:13 PM, 06 Jul 2021
    спасибо @unamedrus
  • https://t.me/clickhouse_ru
    @FlameArt #225579 06:21 PM, 06 Jul 2021
    Ребят, у меня мускул сортирует по индексу мгновенно (int), а кх ту же таблицу секунд 10. Обычных индексов как я понял тут нет, только primary на одну колонку, ADD index не даёт ничего. Что можно делать для ускорения сортировки?
  • https://t.me/clickhouse_ru
    Скок строк то, и я как понимаю сортировка не совпадает с ORDER BY индексом?
  • https://t.me/clickhouse_ru
    @unamedrus #225581 06:22 PM, 06 Jul 2021
    > primary на одну колонку,
    Он может быть насколько угодно колонок
  • https://t.me/clickhouse_ru
    чисто для хранения timeseries хороша victiriametrics. ради интереса лил метрики о состоянии серваков в victiriametrics и clickhouse. и vm сильно меньше места занимала и шустрее работала. чисто теоретически CH тоже можно подтюнить, чтобы сопоставимые результаты получить, только очень сложно. единственный минус vm - нет update.
  • https://t.me/clickhouse_ru
    EmbeddedRocksDB | Документация ClickHouse

    Движок EmbeddedRocksDB Этот движок позволяет интегрировать ClickHouse с rocksdb. Создание таблицы CREATE TABLE [IF NOT E

  • https://t.me/clickhouse_ru
    Это видел. У кого-нибудь есть уже опыт использования в production? Я что-то начитался ужасных историй про то, как RocksDB начинает память жрать как не в себя, типа вот этого: https://github.com/facebook/rocksdb/issues/4112 и вот не знаю, стоит ли пробовать.
    Memory grows without limit · Issue #4112 · facebook/rocksdb

    Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://www.facebook.com/groups/rocksdb.dev Expected behavior Process consumes ab...

  • https://t.me/clickhouse_ru
    Основной минус роксдб, что оно нереплицированное, так что словарь выглядит удобнее для небольших объемов данных.
  • https://t.me/clickhouse_ru
    10кк строк, order by я даже не пробовал, т.к. слишком много колонок, а он тоже один и хз что делать
  • https://t.me/clickhouse_ru
    В mysql у вас order by по вторичному индексу?
  • https://t.me/clickhouse_ru
    @den_crane #225588 06:46 PM, 06 Jul 2021
    роксдб каким местом к аналитике относитстся? Если роксдб подходит то зачем КХ? Можно просто взять любую базу на роксдб.
  • https://t.me/clickhouse_ru
    мдя, почитал тикет. жалобы в стиле "мы встроили эту бд и у нас в приложении течёт память. нет мы не криворукие. нет, мы не знаем почему у вас всё ок и ничего не течёт". не удивительно, что тикет имеет статус "не достаточно инфы" и висит там уже несколько лет и куча комментов "у нас тоже течёт" и "а у нас прямые руки, поэтому ничего и не течёт" :) в общем спорный достаточно тикет :)
  • https://t.me/clickhouse_ru
    @vchernyshev #225590 06:47 PM, 06 Jul 2021
    Ну Вы моё сообщение прочитайте сначала :) Насколько я понял, Владимир советует попробовать RocksDB вместо словаря с версиями.
  • https://t.me/clickhouse_ru
    @vchernyshev #225591 06:48 PM, 06 Jul 2021
    Это я Денису ответить хотел.
  • https://t.me/clickhouse_ru
    пожалуйста используйте функцию "ответить", а то ваши сообщения кажутся немного оторванными от контекста
  • https://t.me/clickhouse_ru
    Да я думал, что использовал. А оказалось, что нет.
  • https://t.me/clickhouse_ru
    Да, там сам чёрт ногу сломит, но оказаться в лагере тех, у кого течёт, тоже не хочется. Ну и вообще, если оно не реплицированное, то увы не подойдёт :(
  • https://t.me/clickhouse_ru
    Если старые версии через пару месяцев можно относительно безболезненно чистить в пределах одной partition, то данных на самом деле немного. Только я вижу, что тут часто жалуются на то, что мутации ломаются.
  • https://t.me/clickhouse_ru
    Если их выполнять по очереди, в целом жить можно нормально
  • https://t.me/clickhouse_ru
    а там разве спрашивали про это ? Какая разница кто там источник для словаря. У меня например http словари, я даже не знаю что там позади, монга или rocksdb. При чем тут источник словаря? Там спрашивали не про это КМК
  • https://t.me/clickhouse_ru
    верно, несколько колонок для сортировки, одним order by не обойтись, но он в кх только один как я понимаю
  • https://t.me/clickhouse_ru
    не, неправильно вы понимаете
    mysql не может использовать несколько индексов для оптимизации сортировки одновременно
  • https://t.me/clickhouse_ru
    ну сортировка то по одному полю за запрос, мне это и надо
  • https://t.me/clickhouse_ru
    в смысле надо одну и туже таблицу читать разными select order by ?
  • https://t.me/clickhouse_ru
    @FlameArt #225602 07:05 PM, 06 Jul 2021
    да
  • https://t.me/clickhouse_ru
    что за задача такая да еще в КХ?

    видимо да КХ этого не умеет и планов на это нет, скорее всего никогда не будет
  • https://t.me/clickhouse_ru
    @den_crane #225604 07:08 PM, 06 Jul 2021
    проекции смогут иммитировать вторичные индексы, но я не думаю что имеет смысл их использовать для сортировки
  • https://t.me/clickhouse_ru
    ну просто я использую его чтобы изменения товаров агрегировать, графики посчитать быстро. Заметил, что он очень хорошо может и like %% по имени товара искать, так что думаю перенести с мускула и эту таблицу тоже, проблема только в сорте, остальное отлично)
  • https://t.me/clickhouse_ru
    @den_crane #225606 07:10 PM, 06 Jul 2021
    Нет, КХ не может заменить mysql совсем.
  • https://t.me/clickhouse_ru
    @FlameArt #225607 07:11 PM, 06 Jul 2021
    эх, спасибо
  • https://t.me/clickhouse_ru
    Там я спросил про то, имеет ли вообще смысл использовать словарь для того, чтобы указать кликхаусу, какую версию данных надо тянуть, или есть более оптимальный подход?

    Предположим, что есть вот такой утрированный запрос: SELECT something FROM table WHERE date = ? AND key = ?. В реальности там сотни тысяч строк для каждого ключа, и в запросах проводится дополнительная агрегация, что кликхаус делает очень быстро. Корректировка предполагает полную перезапись данных для пары (date, key). Вместо перезаписи мы хотим сделать дополнительную колонку с версией, а список последних версий вытягивать при помощи external dictionary. Запрос тогда приобретает вид SELECT something FROM table WHERE date = ? AND key = ? AND version = dictGet('versions_dict', 'version', (date, key)). Пишу с телефона по памяти, поэтому за ошибки в синтаксисе прошу не бить :)

    При финальной чистке планируем обновлять колонку с версией таким образом, чтобы самую новую версию сбросить в ноль, тем самым получая дефолтное значение dictGet для случая, когда в словаре данных нет.
  • https://t.me/clickhouse_ru
    И потом уже можно эти все версии грохнуть из хранилища, на основе которого словарь строится.
  • https://t.me/clickhouse_ru
    >AND version = dictGet('versions_dict', 'version', (date, key))

    это очень медленно и очень затратно.
    пожалуй это будет медленее чем ReplacingMergeTree и +agrmax
  • https://t.me/clickhouse_ru
    @den_crane #225612 07:20 PM, 06 Jul 2021
    попробуйте использовать сторнирование, либо с collapsingMT либо с SummingMT
  • https://t.me/clickhouse_ru
    ReplacingMergeTree у нас почему-то гораздо медленнее отработал на тестах. Надо будет ещё раз поковыряться, спасибо.
  • https://t.me/clickhouse_ru
    @den_crane #225614 07:21 PM, 06 Jul 2021
    обычно ответ на этот вопрос занимает недели, и несколько часовых митингов с клиентом, чтобы понять их бизнесспроцессы и сказать что на самом деле будет работать
  • @vvvjhaq #225615 07:23 PM, 06 Jul 2021
    Добрый вечер. Немного разбавлю ваше обсуждение небольшим вопросом)
    Подскажите классику для создания агрегаций над ReplacingMT, через MV есть способы создать агрегацию без дубликатов данных, если в Replacing будут приезжать обновления?
  • https://t.me/clickhouse_ru
    А можете подробнее рассказать, почему это медленно? Словарь он же весь в памяти лежит, насколько я понимаю.
  • https://t.me/clickhouse_ru
    КХ может читать и аггрегировать миллиарды строк в секунду, словарь это пятое колесо, 10 млн. dictGet в сек.

    Очень часто мы ускоряем клиентам запросы перенося dictGet на уровень выше (после группировки), запросы ускоряются в 10ки раз.
  • https://t.me/clickhouse_ru
    Ага, спасибо, теперь понятно.
  • https://t.me/clickhouse_ru
    MV не читает таблицу исходную, MV пофигу что там за движок
  • https://t.me/clickhouse_ru
    @den_crane #225620 07:27 PM, 06 Jul 2021
    MV получают данные от ИНСЕРТОВ.
  • да я понимаю, я имею ввиду то, что в replacing будут дубликаты вставлять сумм/кол-ва по некоторым id, как бы их сложить MV в таблицу, которая будет агрегировать то что вставляем.
    С Collapsing все понятно, там на -1 умножили, сумму отменили, и вставили нужную.
    А вот со вставкой в Replacing чуть иначе получается
  • https://t.me/clickhouse_ru
    да так же, вставили версию 10, отменяем -10, вставляем новое значение 100
  • понял, спасибо)
  • https://t.me/clickhouse_ru
    @den_crane #225624 07:33 PM, 06 Jul 2021
    я на -1 НЕ умножаю например, я и в collapsing пишу с минусом, я дописывал в доку https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/collapsingmergetree/#primer-drugogo-podkhoda
    CollapsingMergeTree | Документация ClickHouse

    CollapsingMergeTree Движок наследует функциональность от MergeTree и добавляет в алгоритм слияния кусков данных логику с

  • https://t.me/clickhouse_ru
    @den_crane #225625 07:34 PM, 06 Jul 2021
    Идея состоит в том, что слияния при сворачивании учитывают только ключевые поля, поэтому в отменяющей строке можно указать отрицательные значения, которые нивелируют предыдущую версию записи при суммировании без учета поля Sign.
  • https://t.me/clickhouse_ru
    @den_crane #225626 07:36 PM, 06 Jul 2021
    Нового тут ничего нет , в вертике точно также сторнируем, по многим причинам, включая то что таблицы с LAP не позволялил update/delete
  • да, этим способом пользуюсь, все отлично считает.
  • 07 July 2021 (78 messages)
  • https://t.me/clickhouse_ru
    @Zhe700 #225630 06:44 AM, 07 Jul 2021
    Доброе утро! Столкнулся с периодической ошибкой:

    DB::Exception: Asynchronous write error on file /var/lib/clickhouse/store/f8b/f8b15971-20f4-4944-b85f-797a70ec6ba5/tmp_merge_20210706_2203986_2209222_32/country_id.bin

    Возникает во время регулярно запускаемого оптимайза. Оптимайз запускаю из за того что данные по тех причинам пишутся с нахлестом. Движок - реплейсинг.

    Что можно с этим сделать?
  • https://t.me/clickhouse_ru
    попробуйте datax
  • https://t.me/clickhouse_ru
    А что это?
  • https://t.me/clickhouse_ru
    Projects · alibaba/DataX

    DataX是阿里云DataWorks数据集成的开源版本。. Contribute to alibaba/DataX development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @75280400 #225634 07:14 AM, 07 Jul 2021
    не пугайтесь китайского. Инструмент годный.
    Я им пользуюсь - правда пока не в продакшене
  • https://t.me/clickhouse_ru
    А поддержка клика есть?
  • https://t.me/clickhouse_ru
    @75280400 #225636 07:17 AM, 07 Jul 2021
    да есть иначе в этом чате я бы не писал про него. Единственное надо самим откомпилировать. Но компилится вроде без проблем.
  • https://t.me/clickhouse_ru
    @75280400 #225637 07:17 AM, 07 Jul 2021
    alibaba group вроде тоже кликом пользуются
  • https://t.me/clickhouse_ru
    мы используем несколько способов:
    1) выгружаем через bcp из mssql и через clickhouse-client ипорт файла - очень быстро и просто, не нужно писать код
    2) через DAG в airflow, пришлось написать operator для перекачки данных из mssql > clickhouse
  • https://t.me/clickhouse_ru
    Интересует наиболее быстрые по времени варианты, объемы довольно приличные
  • https://t.me/clickhouse_ru
    То, о чем говорил @den_crane, - это и есть быстрый по времени вариант отчасти, не требующий инструментов сверху
  • https://t.me/clickhouse_ru
    @critskiy #225641 07:28 AM, 07 Jul 2021
    автоматизируйте выгрузку через go или, прости гспди, python (в зависимости от того, какой ЯП знаете), - и написать утилиту
  • https://t.me/clickhouse_ru
    такс,

    создаем кластер, на них таблицы CREATE TABLE ON CLUSTER. Также создаем таблицу Distributed, которая смотрит на созданные ранее таблицы. Данные вставляем в Distributed, она уже раскидывает по нодам. Это верно? Неверно на моменте запроса партиций?
  • @kint36 #225645 08:10 AM, 07 Jul 2021
    Привет! Подскажите, пожалуйста, из-за чего может сыпаться 235ая ошибка (part already exists), при этом свежие данные в таблице появляются. Есть распределенная таблица, данные в которую доливает мат вьюха из таблицы с kafka engine и на моменте инсерта вылезает эта ошибка, партиционировение toYYYYMMDD(DateTime)
  • https://t.me/clickhouse_ru
    Может не хватать места. Вроде были рекомендации, что для Optimize нужно столько свободного места, сколько занимает таблица.
  • https://t.me/clickhouse_ru
    @Zhe700 ↶ Reply to #225646 #225647 08:20 AM, 07 Jul 2021
    угу, мы вот только что обнаружили что у нас ttl на таблицу отрабатывает странно - парты остаются на диске хотя в кх их не видно и в детач их нет
  • https://t.me/clickhouse_ru
    @S_Dimitry #225648 08:24 AM, 07 Jul 2021
    День добрый. Насколько безопасно удалить информацию о партиции в Зукипере?
  • https://t.me/clickhouse_ru
    @S_Dimitry #225649 08:27 AM, 07 Jul 2021
    и еще такой вопрос, как рестартануть таблицу типа ReplicatedMergeTree, которая не определила лидера и active_replicas=0
  • https://t.me/clickhouse_ru
    @S_Dimitry #225650 08:28 AM, 07 Jul 2021
    при этом она не ридонли и дает из себя получать данные
  • https://t.me/clickhouse_ru
    в новых версиях есть https://clickhouse.tech/docs/en/sql-reference/statements/system/#query_language-system-restore-replica

    но без нужды я бы в ZK лезть не стал
    у вас что-то локально с партом случилось что вы его из ZK вычистить хотите?
    SYSTEM | ClickHouse Documentation

    SYSTEM Statements The list of available SYSTEM statements: RELOAD EMBEDDED DICTIONARIES RELOAD DICTIONARIES RELOAD DICTI

  • https://t.me/clickhouse_ru
    насколько новых. SYSTEM RESTORE REPLICA transactions ON CLUSTER cluster - вызывает ошибку B::Exception: Syntax error: failed at position 8 ('RESTORE'): RESTORE REPLICA transactions ON CLUSTER cluster. Expected one of: START TTL MERGES, RELOAD CONFIG, RELOAD DICTIONARY, KILL, STOP FETCHES, FLUSH LOGS, DROP MMAP CACHE, SHUTDOWN, SUSPEND, RELOAD EMBEDDED DICTIONARIES, STOP DISTRIBUTED SENDS, STOP TTL MERGES, DROP MARK CACHE, STOP REPLICATED SENDS, RELOAD SYMBOLS, STOP MOVES, START MOVES, STOP REPLICATION QUEUES, DROP COMPILED EXPRESSION CACHE, RESTART REPLICA, START DISTRIBUTED SENDS, SYNC REPLICA, STOP LISTEN QUERIES, STOP MERGES, START REPLICATED SENDS, DROP DNS CACHE, START MERGES, START LISTEN QUERIES, DROP UNCOMPRESSED CACHE, RESTART REPLICAS, DROP REPLICA, START FETCHES, START REPLICATION QUEUES, FLUSH DISTRIBUTED, RELOAD DICTIONARIES (version 21.5.5.12 (official build))
  • https://t.me/clickhouse_ru
    @S_Dimitry #225654 10:14 AM, 07 Jul 2021
    хотим удалить битую партицию, ругается на лидера, которого и нет сейчас.
  • https://t.me/clickhouse_ru
    @Messer4 #225656 10:26 AM, 07 Jul 2021
    Привет
    Подскажите правильный ли подход чтобы хранить последний State для account?
    CREATE MATERIALIZED VIEW IF NOT EXISTS account_balance_merged
    ENGINE = AggregatingMergeTree() ORDER BY (account)
    POPULATE AS
    SELECT
    account,
    anyLastState(balance) balance
    FROM account_balance
    GROUP BY account;
    Почему-то в Select после агрегации хранится не последний баланс
  • https://t.me/clickhouse_ru
    SYSTEM RESTORE REPLICA replica [ON CLUSTER cluster] (#13652) · ClickHouse/ClickHouse@4c391f8

    * initial commit: add setting and stub * typo * added test stub * fix * wip merging new integration test and code proto * adding steps interpreters * adding firstly proposed solut...

  • https://t.me/clickhouse_ru
    а можно сообщение об ошибке?
    вроде в 21.5 уже особо лидер для ZK и не нужен... хотя могу ошбаться не помню
  • https://t.me/clickhouse_ru
    у меня 21.5.5.12 и там сказано про ридонли состояние таблиц. У меня же не ридонли состояние. Нет лидера и активных реплик по system.replicas
  • @sergey_alaev #225662 11:17 AM, 07 Jul 2021
    Всем привет! Не подскажете, какой лучше взять драйвер для JVM? Интересует скорость вставки и фукнционал, совместимость с JDBC не нужна.
  • https://t.me/clickhouse_ru
    B::Exception: DROP PART|PARTITION cannot be done on this replica because it is not a leader.
  • https://t.me/clickhouse_ru
    собственно,
    SELECT distinct partition FROM cluster({cluster}, system, parts) проблему решил
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #225534 #225665 11:43 AM, 07 Jul 2021
    Мы из MSSQL тянем через insert select from jdbc(…)
  • https://t.me/clickhouse_ru
    и как оно?
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #225668 #225669 11:47 AM, 07 Jul 2021
    работает. Мы юзаем только копирование в лоб. Максимум с where version > XXX, полет нормальный. Про скорость не скажу - не меряли. Но у нас в mssql таблицы до 50М записей. Как на бОльших обьемах будет - не знаю
  • @vsobakekot #225670 11:49 AM, 07 Jul 2021
    Извиняюсь сразу за беспокойство, но подскажите плиз какие-нибудь курсы по кликхаусу на русском. Есть хорошие, чтоб прям стоящие были. А то мы пока нашли только 8 часовые по верхам для начинающих.
    И еще небольшой вопрос, а у самого яндекса нема курсов по нему?
  • https://t.me/clickhouse_ru
    курсов нет, есть канал докладов КХ, а еще есть альтинити
  • @vsobakekot #225672 11:55 AM, 07 Jul 2021
    у них есть курс как раз 8 часовой, может кто-то дать фидбек, как эти курсы? стоят ли они своих денег (тк цена у них немаленькая)
  • https://t.me/clickhouse_ru
    У вас уже есть опыт эксплуатации кликхауса?
  • @vsobakekot #225674 11:58 AM, 07 Jul 2021
    У нас его подключили уже к платформе, но опыта использования совсем мало.
  • https://t.me/clickhouse_ru
    @critskiy #225675 12:02 PM, 07 Jul 2021
    А почему подключили, что за задачу решить хотят?
  • Точно индексы не используются при удалении ? Т.е. всегда, независимо от наличия индексов, выполняется полный скан таблицы, даже если по условию WHERE есть полностью покрывающие индексы ?
  • да там аналитику собирать
  • @beebeeep #225680 12:54 PM, 07 Jul 2021
    всем привет
    у меня есть табличка типа “ключ - значение” (на самом деле это запрос, но пусть будет просто табличка)
    и я что-то не могу сформулировать запрос, который вернет все пары ключ-значение, у которых значение больше, например, трех сигм от всей выборки
    то есть СКВ-то понятно как посчитать, но вот как это все гм, объединить в одном запросе (а мне надо именно в одном, у меня, к сожалению, есть только графана и ее плагин) - понять не могу
  • https://t.me/clickhouse_ru
    подзапрос или конструкция WITH до запроса
  • https://t.me/clickhouse_ru
    @Messer4 #225682 12:57 PM, 07 Jul 2021
    Привет
    Подскажите правильный ли подход чтобы хранить последний State для account?
    CREATE MATERIALIZED VIEW IF NOT EXISTS account_balance_merged
    ENGINE = AggregatingMergeTree() ORDER BY (account)
    POPULATE AS
    SELECT
    account,
    anyLastState(balance) balance
    FROM account_balance
    GROUP BY account;
    Почему-то в Select после агрегации хранится не последний баланс
  • https://t.me/clickhouse_ru
    добавьте в запрос FINAL.
  • ооооооооооооо, точно, WITH
    спасибо!
  • https://t.me/clickhouse_ru
    Можно чуть подробнее
    Вычитываю результат с помощью
    SELECT
    account,
    anyLastMerge(balance) balance
    FROM account_balance_merged
    GROUP BY account;
  • https://t.me/clickhouse_ru
    мне кажется что anyLast здесь очень плохо будет работать, лучше хранить вместе с timestamp и выбирать по argMax(balance, timestamp)
  • https://t.me/clickhouse_ru
    @nyoroon #225687 01:03 PM, 07 Jul 2021
    anyLast берёт последнее значение не хронологически, а то что последнее сам КХ прочитал.
  • https://t.me/clickhouse_ru
    при использовании FINAL (после названия таблицы) агрегация не нужна
    https://clickhouse.tech/docs/ru/sql-reference/statements/select/from/#select-from-final
    FROM | Документация ClickHouse

    Секция FROM В секции FROM указывается источник, из которого будут читаться данные: Таблица Подзапрос Табличная функция С

  • https://t.me/clickhouse_ru
    собственно поэтому он и называется anyLast, а не last :) но для простых случаев на одном инстансе работает ок.
  • https://t.me/clickhouse_ru
    @brbrbr #225691 01:27 PM, 07 Jul 2021
    Напомните, пожалуйста, как пробрасывать переменные во вьюху?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #225692 #225693 01:33 PM, 07 Jul 2021
    Дмитрий, спасибо!
  • @617969007 #225696 02:59 PM, 07 Jul 2021
    Добрый день, подскажите после остановки этого скрипта, что бы продолжить его мне нужны позиции бинлога, где я могу их получить ?
    clickhouse-mysql \
    --src-server-id=1 \
    --src-resume \
    --src-wait \
    --nice-pause=1 \
    --src-host=10.0.0.4 \
    --src-user=reader \
    --src-password=q18234ty \
    --src-tables=t.a \
    --dst-host=127.0.0.1 \
    --dst-table=a \
    --dst-schema=t \
    --pump-data \
    --mempool
  • https://t.me/clickhouse_ru
    Лидер нужен обязательно.
    Таблица не подключена к Зукиперу, чините.
    Должна быть в system.replicas leader, not readonly, not session_expired, и total_replicas=active_replicas.
    Попробуйте system restart replica <table_name>
  • https://t.me/clickhouse_ru
    пробовал, безрезултатно и ошибки нет
  • https://t.me/clickhouse_ru
    SHOW SLAVES на MySQL ничего не показывает вменяемого?
  • https://t.me/clickhouse_ru
    @skirpichenok #225701 03:21 PM, 07 Jul 2021
    Добырй день. Есть таблица table_a с множеством записей - в ней указан order by field_a, field_b. Если сделать select * from table_a order by field_a, field_b limit 100 offset [last page], то все ок - индекс используется. Если сделать view для этой таблицы table_a_view и в описание вьюхи добавить order by field_a, field_b то тоже все ок. Т.е запрос select * from table_a limit 100 offset [last page] отработает нормально. А вот если НЕ добавлять ORDER BY во view definition и выполнить запрос select * from table_a_view order by field_a, field_b limit 100 offset [last page] - то может и память закончится. Я правильно понимаю что в этом случае индексы не используются?
  • https://t.me/clickhouse_ru
    и в логах нет ошибок?
  • Ничего вменяемого, дело в том что после перезапуска его я получаю дырку в кликхаусе, репликация продолжиться с того момента как я запущу этот скрипт.
  • https://t.me/clickhouse_ru
    насколько я понимаю ни where ни order by не пробрасываются во внутрь вьюхи.
    я завёл багу на гитхабе, но что-то мне подсказывает, что это низкоприоритетная таска, хотя в текущем виде вьюхи получаются вообще не юзабельны
    https://github.com/ClickHouse/ClickHouse/issues/25418
    view optimisation · Issue #25418 · ClickHouse/ClickHouse

    Describe the situation CREATE VIEW v1 AS SELECT * FROM t1 FINAL SELECT * FROM v1 WHERE date = today() is too slow. Expected performance If a column in view and in table is the same - it needs to do...

  • https://t.me/clickhouse_ru
    @skirpichenok #225705 03:38 PM, 07 Jul 2021
    да, кстати, с FINAL такая же беда на основной таблице
  • https://t.me/clickhouse_ru
    пожалуйста используйте функцию "ответить", а то ваши сообщения кажутся немного оторванными от контекста
  • https://t.me/clickhouse_ru
    (ReplicatedMergeTreeRestartingThread): void DB::ReplicatedMergeTreeRestartingThread::run(): Code: 49, e.displayText() = DB::Exception: Part 202107_0_1216_999999999 intersects previous part 202107_0_775_5_1215. It is a bug.
  • https://t.me/clickhouse_ru
    @S_Dimitry #225708 03:45 PM, 07 Jul 2021
    В зукипере удалили все таски, и рестарт клика помог в плане определения лидера и появления активных реплик, но детач проблемной патриции снова привел нас к ошибке
  • https://t.me/clickhouse_ru
    @S_Dimitry #225709 03:45 PM, 07 Jul 2021
    Потере лидера и активных реплик для таблицы
  • https://t.me/clickhouse_ru
    @S_Dimitry #225710 03:47 PM, 07 Jul 2021
    Завтра попытаюсь удалить всю инфу по партиции в зукипере и посмотреть на поведение этой таблицы. Иначе вижу только возможность восстановления через обычную таблицу MergeTree
  • https://t.me/clickhouse_ru
    @S_Dimitry #225711 03:47 PM, 07 Jul 2021
    И потом снова в репликацию
  • https://t.me/clickhouse_ru
    @ilior #225712 04:02 PM, 07 Jul 2021
    Добрый день! Запустил из консольного клиента несколько дней назад запрос на modify column с UInt16 на UInt32, на довольно большой таблице. Получил в итоге таймаут, но запрос до сих пор висит в show processlist.
    Как понять, он там вообще ещё работает или просто завис и надо его убить?
  • https://t.me/clickhouse_ru
    GitHub - long2ice/synch: Sync data from the other DB to ClickHouse(cluster)

    Sync data from the other DB to ClickHouse(cluster) - GitHub - long2ice/synch: Sync data from the other DB to ClickHouse(cluster)

  • https://t.me/clickhouse_ru
    @imt16r029 #225714 04:56 PM, 07 Jul 2021
    Всем привет
    Почитал чатик, верно понимаю, что eval() не завезли еще и что-то типа select eval('1+1') -> 2 пока не получится сделать?
  • https://t.me/clickhouse_ru
    не завезли, и не завезут

    eval слишком медленный функционал
  • https://t.me/clickhouse_ru
    вы что конкретно хотите сделать? зачем вам eval?
  • Решение довольно сложное, не ужели оно единственное?
    Не проще мне уж забирать логи с clickhouse-mysql и там смотреть позицию в бинлоге (в случае падения)?
  • @sklepych #225719 06:46 PM, 07 Jul 2021
    mysql->maxwell->kafka -> подставить желаемое
  • @sklepych #225720 06:46 PM, 07 Jul 2021
    тоже как вариант
  • https://t.me/clickhouse_ru
    @JesterDLA #225722 08:02 PM, 07 Jul 2021
    Всем привет! В таблице есть столбец с типом данных AggregateFunction(argMax, UInt16, DateTime), Нужно конвертировать в AggregateFunction(argMax, Int16, DateTime). Подскажите что сделать, кх говорит что не может привести типы...
  • Сам себе отвечу 😁
    Выполнил тесты, подтверждающие, что индексы не используются при удалении:
    Поиск по условию, которое содержится во вторичном индексе в таблице ~7 миллиардов строк: 1.3 сек. Ключ партиционирования был в таблице:
    toYear(dat) * 4 + toQuarter(dat) - 1
    Мутация (удаление) >1000 секунд (к таблице выполнялись также запросы других пользователей).
    После удаления вторичного индекса поиск замедлился до 14 секунд, на скорость мутаций это не повлияло.
  • 08 July 2021 (127 messages)
  • https://t.me/clickhouse_ru
    ну мутации медленные да, индексы туда не догадались прикрутить
  • https://t.me/clickhouse_ru
    Вопрос с подвохом, тк типы одинаковые
  • https://t.me/clickhouse_ru
    @mangoat #225728 06:43 AM, 08 Jul 2021
    А можно ли удалить папку shadow ?
  • ну если вам не нужны те данные, то можно
    она создается заново при новом alter table ... freeze
  • https://t.me/clickhouse_ru
    Спасибо
    Т.е. это копия которую создал freeze?
  • https://t.me/clickhouse_ru
    @mangoat #225731 06:48 AM, 08 Jul 2021
    Именно копия
  • https://t.me/clickhouse_ru
    @mangoat #225732 06:49 AM, 08 Jul 2021
    А detach перемещяет?
  • да, эта директория появляется после создания резервной копии
  • detach отсоединяет партицию/таблицу/парт
  • https://t.me/clickhouse_ru
    @mangoat #225735 06:50 AM, 08 Jul 2021
    Пытаюсь создать бэкап партиций и переместить их в холодный архив
  • https://t.me/clickhouse_ru
    @mangoat #225736 06:51 AM, 08 Jul 2021
    Я правильно понимаю что мне нужно сделать "detach" и переместить партиции на холодный сторож?
  • https://t.me/clickhouse_ru
    @mangoat #225737 06:51 AM, 08 Jul 2021
    И можно все удалять из shadow
  • https://t.me/clickhouse_ru
    @mangoat #225738 06:51 AM, 08 Jul 2021
    Потому как там только копия тех же таблиц
  • нет, детач делает так, что таблица забывает о партиции/парте, либо полностью таблица отсоединяется и перемещается в .../table_name/detached

    А frteze делает копию парта/партиции/таблицы на конкретный момент времени, далее копируете из директории /shadow/N туда куда вам нужно.
    чтобы восстановить, нужно добавить в ../table_name/detached и выполнить attach
  • https://t.me/clickhouse_ru
    @mangoat #225740 06:53 AM, 08 Jul 2021
    Понял
  • https://t.me/clickhouse_ru
    @mangoat #225741 06:53 AM, 08 Jul 2021
    Спасибо!
  • @vvvjhaq #225742 06:53 AM, 08 Jul 2021
    detach и freeze очень разные команды
    в доке все расписано
  • https://t.me/clickhouse_ru
    @mangoat #225743 06:54 AM, 08 Jul 2021
    Да читаю спасибо
    Просто не понятно удаляет ли freeze данные
  • https://t.me/clickhouse_ru
    @mangoat #225744 06:54 AM, 08 Jul 2021
    Судя по всему нет
  • нет, ничто их них не удаляет данные.
  • https://t.me/clickhouse_ru
    @mangoat #225746 06:55 AM, 08 Jul 2021
    "либо полностью таблица отсоединяется и перемещается"
    т.е. После перемещения данные будут и таблице и в директории?
  • нет, КХ просто забудет о существовании такой партиции, которую вы отсоединили. select не даст данных из этого парта/партиции/таблицы.
  • https://t.me/clickhouse_ru
    @mangoat #225748 06:57 AM, 08 Jul 2021
    Понятно!
  • https://t.me/clickhouse_ru
    @mangoat #225749 06:57 AM, 08 Jul 2021
    Это дает ясность
  • https://t.me/clickhouse_ru
    @mangoat #225750 06:57 AM, 08 Jul 2021
    Те мне нужно сделать detach и удалить данные
  • зачем?
    вы хотите резервную копию?
  • https://t.me/clickhouse_ru
    @mangoat #225752 06:58 AM, 08 Jul 2021
    Я хочу переместить партиции в холодный архив
  • https://t.me/clickhouse_ru
    @mangoat #225753 06:58 AM, 08 Jul 2021
    Они мне не нужны на сервере
  • https://t.me/clickhouse_ru
    @mangoat #225754 06:58 AM, 08 Jul 2021
    Они за 2018 а места кушают много
  • https://t.me/clickhouse_ru
    @mangoat #225755 06:59 AM, 08 Jul 2021
    Но с возможностью использования позже
  • https://t.me/clickhouse_ru
    @mangoat #225756 06:59 AM, 08 Jul 2021
    Если нужны будут
  • ну в таком случае я бы сделал freeze partition, а потом drop partition. Но возможно, просто detach тоже хороший метод. Насколько я знаю detach реплицируется, то есть данные забудутся на всех репликах, freeze не реплицируется.
  • https://t.me/clickhouse_ru
    @mangoat #225758 07:02 AM, 08 Jul 2021
    Понял!
  • https://t.me/clickhouse_ru
    @mangoat #225759 07:02 AM, 08 Jul 2021
    Спасибо большое
  • https://t.me/clickhouse_ru
    @mangoat #225760 07:02 AM, 08 Jul 2021
    Shadow как я понял только для freeze и тоже может быть удален
  • вам их нужно будет скопировать в другое место(другой сервер/диск), и потом положить обратно?
  • https://t.me/clickhouse_ru
    Да.
  • да
  • мб лучше подскажут, почему в таком случае можно/нельзя делать detach. Но пока выглядит так, что и detach подходит, если вы хотите отсоединить данные, и потом их переместить и почистить все в detached.
  • https://t.me/clickhouse_ru
    @mangoat #225765 07:04 AM, 08 Jul 2021
    Выглядит то что нужно
    Спасибо
    Попробую в дабе
  • https://t.me/clickhouse_ru
    @ployd #225766 07:53 AM, 08 Jul 2021
    Привет, есть вопрос касательно агрегатных функций и NaN, возможно кто-то сталкивался.

    Есть таблица, куда идут некторые метрики, по которым рисуются графики. Т.к. масштаб при отрисовке может быть разный, то есть несколько MV, агрегирующие min/max/sum/var/etc по секунде/минуте/часу, чтобы ускорять запросы и не группировать с raw данных.

    Проблема в том, что при агрегации хочется пропускать не finite значения (для простоты только NaN) и оставлять в результирующей выборке их только в том случае, если все значения были nan.

    Если использовать столбец minIf AggregateFunction(minIf, Float64, UInt8)
    и при агрегации minIfState(value, isFinite(value)) AS min,
    то работает почти как нужно: nan действительно не учитываются.
    Однако, если все значения были nan, то результат получается 0:
    SELECT minIfMerge(s) FROM (SELECT minIfState(42, isFinite(NaN)) s);
    выдаёт 0

    Как лучше всего обойти эту проблему и получить в результате nan?
  • https://t.me/clickhouse_ru
    @ployd #225767 07:54 AM, 08 Jul 2021
    Пока придумал только костыль с проверкой if(finite_count > 0, minIfMerge(...), NaN), но может есть что-то лучше?
  • @subotic0 #225768 08:25 AM, 08 Jul 2021
    Привет, для кх есть разница между запросами
    select arrayFirst(....) as mynum,
    mynum +1 as mynum1,
    mynum+ 2 as mynum2

    select arrayFirst(....) +1 as mynum1,
    arrayFirst(... ) +2 as mynum2

    в плане оптимизации есть ли разница между этими запросами, или во втором случае arrayFirst(... ) посчитается 1 раз и поучаствует в обоих расчетах?
  • https://t.me/clickhouse_ru
    в первом случае три раза будет считаться
    во втором два
    не знаю будет это исправлено вот тут или нет
    https://github.com/ClickHouse/ClickHouse/pull/23367

    ну и сделайте EXPLAIN PIPELINE
    посмотрите там должно показываться
    Implement short circuit function evaluation by Avogar · Pull Request #23367 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @smirnov_captain #225770 08:38 AM, 08 Jul 2021
    Добрый день коллеги, есть вопрос как вставлять данные в таблицу из приложения.
    Использую clickhouse-jdbc, есть коллекция объектов, перевожу их в json и пытаюсь вставить.
    Код примерно как в примере:
    val sb = new StringBuilder()
    events.map(ev => json.eventToString(ev)).foreach(s => sb.append(s +"\n"))
    val stream = new ByteArrayInputStream(sb.toString().getBytes("UTF-8") )
    try {
    sth.write().sendToTable(table, stream, ClickHouseFormat.JSONStringEachRow)
    } catch {
    case ex: java.sql.SQLException => log.error("An error occurred when inserting data into clickhouse", ex)
    }
    получаю эксептион DB::Exception: Format JSONStringEachRow is not suitable for input (with processors)
    в юнит тестах не нашел примера, может кто подсказать?
  • https://t.me/clickhouse_ru
    @konnectrl #225771 09:12 AM, 08 Jul 2021
    Здравствуйте, как работаь с explain запросами, точней через что можно их выполнять ?
  • https://t.me/clickhouse_ru
    clickhouse-client
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @konnectrl #225774 09:20 AM, 08 Jul 2021
    Я что то не правильно пишу или какие настройки кликхауса нужны ?
  • https://t.me/clickhouse_ru
    @konnectrl #225775 09:21 AM, 08 Jul 2021
    Версия клик хауса 21.6.6.51
  • https://t.me/clickhouse_ru
    А дайте запрос.
  • https://t.me/clickhouse_ru
    @konnectrl #225777 09:23 AM, 08 Jul 2021
    Какой запрос ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ваш запрос, или вы настолько жестоки, что хотите что бы я его руками набирал?
  • https://t.me/clickhouse_ru
    @konnectrl #225780 09:27 AM, 08 Jul 2021
    EXPLAIN SYNTAX SELECT * FROM system.numbers AS a, system.numbers AS b, system.numbers AS c;
  • https://t.me/clickhouse_ru
    да не похоже, ошибки от невозможности приведения сыпятся
  • https://t.me/clickhouse_ru
    EXPLAIN SYNTAX
    SELECT *
    FROM system.numbers AS a, system.numbers AS b, system.numbers AS c

    Query id: 51eddd00-e00f-4eca-a801-7748c9cf94cf

    ┌─explain────────────────────────────┐
    │ SELECT │
    │ `--a.number` AS `a.number`, │
    │ `--b.number` AS `b.number`, │
    │ number AS `c.number` │
    │ FROM │
    │ ( │
    │ SELECT │
    │ number AS `--a.number`, │
    │ b.number AS `--b.number` │
    │ FROM system.numbers AS a │
    │ CROSS JOIN system.numbers AS b │
    │ ) AS `--.s` │
    │ CROSS JOIN system.numbers AS c │
    └────────────────────────────────────┘

    на 21.8 работает.

    Вообще подозрительно похоже на эту ошибку
    https://github.com/ClickHouse/ClickHouse/pull/25082
    Fix crash in explain syntax and cross join. by KochetovNicolai · Pull Request #25082 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @konnectrl #225783 09:31 AM, 08 Jul 2021
    Я не знаю точно в чем проблема и почему не работает в клик хаус клиенте, но в редаше получилось сделать запрос
  • @to0n1 #225785 09:59 AM, 08 Jul 2021
    ребят подскажите пожалуйста.
    столкнулся с такой проблемой: перестали обновляться мат вьюхи, посмотрел логи были ошибки связанные со стартом тредов чтото про cleanup thread, перезапустил под с КХ в кубере, все побежало, но данные за некоторое время так и не попали в мат вьюхи
  • @to0n1 #225786 09:59 AM, 08 Jul 2021
    вопроса 2:
    1) почему такое могло произойти и как избежать
  • @to0n1 #225787 09:59 AM, 08 Jul 2021
    2) поделитесь скриптом для пересоздания матвьюх если такой есть
  • @to0n1 #225788 09:59 AM, 08 Jul 2021
    спасибо
  • https://t.me/clickhouse_ru
    @kavainyishakal #225789 10:00 AM, 08 Jul 2021
    Коллеги, всем привет, подскажите плиз работаю в pyspark, нужно загрузить spark df в Clickhouse (размер примерно 5 млрд записей * 30 столбцов) , как это можно сделать? И могу ли я это сделать через pyspark или придется писать tsv файл и уже его в Clickhouse?
  • https://t.me/clickhouse_ru
    @dkondov #225790 10:06 AM, 08 Jul 2021
    привет! подскажите плз агрегатную функцию для строк, чтобы возвращала самую распространенную строку
  • https://t.me/clickhouse_ru
    @Alele13 #225791 10:06 AM, 08 Jul 2021
    Всем привет. Подскажите как решить проблему с Memory limit (for query) exceeded
    ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #225790 #225794 10:11 AM, 08 Jul 2021
    select s from table group by s order by count() desc limit 1 - не подходит чем-то?
  • https://t.me/clickhouse_ru
    нужная строка лишь одна из многих, которые тоже агрегируются. Думал про anyHeavy() но в доке говорится про недетерминированность результата
  • @SonFire #225800 01:23 PM, 08 Jul 2021
    Интересно почему получается разное количество? С windowFunnel получается больше результатов и они релевантные
    sequenceMatch('(?1).*(?2).*(?3)')(toDateTime(sessionTimestamp + (eventOffset / 1000)),
    eventName = 'cSearchAddress',
    eventName = 'cHouseNumberSearchString',
    eventName = 'cAddress',
    eventName NOT IN
    ('cSearchAddress', 'cHouseNumberSearchString', 'cAddress')) as sequenceEventName

    windowFunnel(60000)(
    toDateTime(sessionTimestamp + (eventOffset / 1000)),
    eventName = 'cSearchAddress',
    eventName = 'cHouseNumberSearchString', eventName = 'cAddress') AS level
  • https://t.me/clickhouse_ru
    @OrNixx #225801 01:39 PM, 08 Jul 2021
    добрый день. пробую отреплицировать таблицу. подскажите пожалуйста, как задать имя (IP), по которому 1 сервер будет обращаться в другой?
    я думал, вот это:
    <macros>
    <replica>clickhouse-2</replica>
    </macros>

    а он пробует по имени хоста обращаться
  • https://t.me/clickhouse_ru
    в config.xml настройка interserver_http_host
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #225802 #225803 01:41 PM, 08 Jul 2021
    то есть он в зукипер запишет значение этой настройки?
  • @84600419 #225804 01:41 PM, 08 Jul 2021
    Здравствуйте, господа.

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

    Шаги:
    1) имеем max_memory_usage, например, 50 Гб
    2) запросу нужно около 70 (эмпирически приверено) и он падает
    3) через некоторое время (10-12 упавших запросов) уже простые запросы не пролезают

    Через top посмотрел, что после каждого упавшего запроса %MEM вырастает на ~7% и не падает назад.

    Если запрос выполняется успешно без ограничения по памяти, то потребление памяти не растет
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #225803 #225805 01:44 PM, 08 Jul 2021
    и можно ли туда IP-адрес вписать, а не имя?
  • https://t.me/clickhouse_ru
    я не очень осведомлён о механизме подгрузки конфига из зоокипера, поэтому не подскажу.

    но по умолчанию точно нет, кликхаус в момент обмена данных с другим инстансом будет смотреть этот параметр
  • https://t.me/clickhouse_ru
    да, обычно используют для задания IP адреса в приватной сети, чтобы кликхаус ходил через неё
  • https://t.me/clickhouse_ru
    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
    имя реплики в ZK это часть path
    значение куда именно обращаться для скачивания новых партов зареганых в ZK берется из interserver_http_host и тоже сохраняется в ZK при регистрации \ изменении конфигурации реплики
  • @vhsmacabre #225811 02:04 PM, 08 Jul 2021
    Добрый день. Чего-то последние релизы (и stable, и LTS) не могут принять от carbon-clickhouse больше 4000 метрик за раз (Attempt to read after eof, сначала пятисотка от HTTP-клиента, потом сегфолтит). Последний раз работало на 20.6.8.5. Не подскажете, куда копать? Или это приколы carbon-clickhouse явные?
  • @alex_shabal #225812 02:31 PM, 08 Jul 2021
    Здравствуйте! Делали insert from select в дистрибьютед таблицу через clickhouse-client одного из инстансов, в процессе этого потеряли коннект к поду.. Продолжил ли запрос выполняться в этом случае, и можно ли как-то проверить, что он до конца отработал не сравнивая данные в таблицах?
  • https://t.me/clickhouse_ru
    возможно умерло что-то в clickhouse
  • @1803285152 #225814 02:42 PM, 08 Jul 2021
    Подскажите как в toDateTime загнать миллисекунды?
  • https://t.me/clickhouse_ru
    в DateTime нет миллисекунд, мб тебе нужен DateTime64 (и соотв. toDateTime64)
  • Он UnixTimestamp64Milli странно переводит
  • https://t.me/clickhouse_ru
    Так используйте fromUnixTimestamp64Milli
  • https://t.me/clickhouse_ru
    если под остался жив и вы просто коннект из clickhouse-client потеряли
    то смотрите на поде в котором clickhouse-client коннектился, в system.processes
    и прогресс как ваш INSERT ..SELECT работает
    и ничего не трогайте

    у вас под distributed лежит ReplicatedMergeTree?
    значит сначала данные у вас будут разбиты по шардам в каталоге /var/lib/clickhouse/data/db/distributed/<shard_host_port>/*.bin этого distributed на ноде инициаторе
    данные там на блоки разобьются на миллион записей кажется (могу ошибаться)
    и потом это будет пушится по доступным репликам в шардах...

    и когда оно доедет до ReplicatedMergeTree
    тогда начнет механизм дедупликации ReplicatedMergeTree работать, а именно там хранятся в ZK контрольные суммы 100 последних вставленных блоков
    если совпадает, то вставляться не будет...

    соответственно, если у вас меньше 100 миллионов успелов вставиться в distributed
    то в целом можно заново запустить...
    если вы KILL сделали

    но надо убеждаться по логам, что данные приехали в тот же шард и у вас нормальное шардирование а не rand() в distributed как любят делать
  • спасибо!
  • Спасибо 👍
  • Возможно умерло чтение gzipped RowBinary, потому что отключение компрессии в carbon-clickhouse помогло. Не ясно только, почему всё ломается только от 4000+ записей...
  • https://t.me/clickhouse_ru
    а покажите StackTrace от 500й ошибки в clickhouse?
  • https://t.me/clickhouse_ru
    @BloodJazMan #225826 03:53 PM, 08 Jul 2021
    было бы круто вообще сам HTTP запрос с 500й увидеть
    и segfault тоже посмортреть
  • Собраны с разных версий CH. Сегфолтит сразу на 21.3.12.2, на 21.3.14.1 надо подождать, чтобы его добиться)
  • https://t.me/clickhouse_ru
    да похоже беда какая то запара с RowBinary

    компрессия gzip На уровне HTTP сделана?

    думаю вам надо issue сделать на github
    и для наглядности привести .pcap файл с 500м запросом, чтобы было понятно что именно байтово передавалось....
  • Сжимает carbon-clickhouse, вероятней всего на HTTP, да.

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

    Спасибо, буду заводить issue, если воспроизведу на других данных!
  • https://t.me/clickhouse_ru
    проверьте на всякий случай алгоритм сжатия в accept-encoding заголовке
    если там какой нибудь brotli и zstd а не gzip то надо осторожнее
  • https://t.me/clickhouse_ru
    @vchernyshev #225834 06:01 PM, 08 Jul 2021
    Добрый вечер. CollapsingMergeTree как лучше всего подружить с Datetime64 данными? Судя по документации то, что слева от UNIX Epoch, поддерживается плохо. Мне лучше тогда хранить эти данные как int64, и потом уже кастовать результат агрегации?
  • https://t.me/clickhouse_ru
    какого типа запросы? alter или обычные select/insert? может у вас таблица типа буффер и она не может из-за ошибок, которые вы видите сбросить данные на диск? запросы в студию :)
  • https://t.me/clickhouse_ru
    topK | Документация ClickHouse

    topK Возвращает массив наиболее часто встречающихся значений в указанном столбце. Результирующий массив упорядочен по уб

  • https://t.me/clickhouse_ru
    оптимизируйте запрос, чтобы он не жрал столько памяти
  • https://t.me/clickhouse_ru
    гугл в помощь
    https://github.com/VaBezruchko/spark-clickhouse-connector
    https://stackoverflow.com/questions/60448877/how-can-i-write-spark-dataframe-to-clickhouse
    GitHub - VaBezruchko/spark-clickhouse-connector: Spark Clickhouse Connector

    Spark Clickhouse Connector. Contribute to VaBezruchko/spark-clickhouse-connector development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    спасибо!
  • Есть таблица, в ней несколько версий по каждому ключу. Задача - выбрать строку с максимальной версией. Для этого попробовали вьюху вида
    Select
    argMax(v1, version),
    argMax(v2, version),
    ...
    From table
    Group by key.

    Потом я выполнил запрос в такую вьюху и он упал из-за лимита.

    Никаких alter/insert, только select
  • https://t.me/clickhouse_ru
    cleanup thread - это не ошибка, а debug инфа (по крайней мере в основном). фиксите ошибку
  • https://t.me/clickhouse_ru
    хотел предложить попробовать другой формат вместо ClickHouseFormat.JSONStringEachRow, но смотрю вам уже ответили :)
    https://github.com/ClickHouse/clickhouse-jdbc/issues/681
    [QUESTION] How to insert collection json strings into a table · Issue #681 · ClickHouse/clickhouse-jdbc

    Hi, how to insert collection json strings into a table? For example, I have a collection of objects, convert them to json strings and send them to a table. // sorry for scala code val sb = new Stri...

  • https://t.me/clickhouse_ru
    да, я сам себе ответил :)
  • https://t.me/clickhouse_ru
    как вариант создать новую колонку с нужным типом, а в качестве дефолта указать значение существующей, после этого старую удалить, а новую переименовать в старую
  • @1803285152 #225845 06:43 PM, 08 Jul 2021
    Что лучше использовать для визуализации в рамках BI? redash/superset или свой вариант
  • superset/redash/metabase
  • Metabase какой то простой сильно
  • @ViacheslavNefedov #225848 06:45 PM, 08 Jul 2021
    они все довольно простые
  • @ViacheslavNefedov #225849 06:45 PM, 08 Jul 2021
    мне больше нравится суперсет
  • https://t.me/clickhouse_ru
    у меня в таких случаях используются nullable() типы и не AggregateFunction, а SimpleAggregateFunction и соответственно функции типа anyLast возвращают null только в том случае, если других вариантов нет
  • https://t.me/clickhouse_ru
    ага, суперсет сильно сложнее. нужно сильно постараться, чтобы получить то что захочешь :) решил пару недель дать ему второй шанс спустя пару лет. ничего не поменялось :) метабейз рулит!
  • Он не видит datetime64 почему то
  • https://t.me/clickhouse_ru
    и если в графике даты по обеим осям, то сгруппировать по часам/дням можно только ту дату, которая по оси x.
  • https://t.me/clickhouse_ru
    Там же все примеры на скале, если правильно понял
  • И это тоже проблема
  • https://t.me/clickhouse_ru
    а вторая ссылка вроде как раз на питоне?
  • https://t.me/clickhouse_ru
    Не припомню в питоне val)))) Но все равно спасибо:3
  • https://t.me/clickhouse_ru
    я патчил в двух местах, сам драйвер (от cloudfare) и типы в superset
    он еще не понимал Nullable(LowCardinality) но все оказалось решаемо
  • она не точная
  • https://t.me/clickhouse_ru
    зато детерминированная :)
  • от limit by отказался(
  • https://t.me/clickhouse_ru
    @dream_of_silence #225864 11:11 PM, 08 Jul 2021
    Доброй ночи, товарищи. У меня, возможно, тупой вопрос, но как определить, к какому блоку принадлежит строка таблицы, чтобы узнать, какие еще строки попали в один блок с этой строкой?
  • @238773844 #225865 11:28 PM, 08 Jul 2021
    оно же может меняться...
  • @238773844 #225866 11:29 PM, 08 Jul 2021
    никогда не задумывался на эту тему, а в чем практический смысл этого ?
  • 09 July 2021 (105 messages)
  • https://t.me/clickhouse_ru
    select _part
    from <tabble_name>
    where <condition>
  • Блоки формируются при чтении, вы можете указывать предпочитаемый размер блока при запросе через сеттинг.
  • Можете использовать одну из функций blocknumber ili rownumberinblock https://clickhouse.tech/docs/en/sql-reference/functions/other-functions/#blocknumber
    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
    Вот меня именно принадлежность к одному блоку вставки интересует
  • Этот запрос возвращает имя партов, другое немного
  • https://t.me/clickhouse_ru
    Долго обьяснять, расследование небольшое из-за кривизны "временного" наколеночного решения )
  • https://t.me/clickhouse_ru
    А набор строк в числе которых была вставлена искомая строка никак не определить?
  • Ну вот этими функциями, но вообще если на это завязана логика, это сеттингами лучше указать напрямую
  • Ааа так вам постфактум узнать после вставки? Нет. Особенно после мерджей. Это надо до вставки делать типа fileİd + вставлять blocknumber
  • https://t.me/clickhouse_ru
    Ну, понятно, спасибо )
  • https://t.me/clickhouse_ru
    @FessAectan #225878 04:26 AM, 09 Jul 2021
    Всем привет!
    Подскажите, пожалуйста, почему билды под arm64 (https://builds.clickhouse.tech/master/aarch64/clickhouse) без поддержки MySQL?
    select * from system.build_options where name like ‘USE_MYSQL’;
    возвращает пустоту

    соответственно, запросы а-ля:
    SELECT * FROM mysql('host.docker.internal:3306', 'db', 'some_table', 'user', 'passwdord') WHERE blablabla;
    не выполняются
  • @345236696 #225880 06:30 AM, 09 Jul 2021
    Добрый день!
    Помогите понять куда копать.
    На клиенте появилась ошибка:

    Error during connection to ru.yandex.clickhouse.settings.ClickHouseProperties@69664607, reporting failure to data source, message: Connection reset

    В этот момент в клик прилетело много запросов.
    Память, CPU, диск не уходили в загрузку на 100%

    что могло вызвать такую ошибку
  • https://t.me/clickhouse_ru
    В чем, к слову, недетерминированность anyHeavy? При наличии нескольких часто встречающихся значений функция вернет любое случайное из них?
  • https://t.me/clickhouse_ru
    @Aytuar #225882 07:55 AM, 09 Jul 2021
    Добрый день. Я новичок в CH. Подскажите есть ли возможность отправлять запросы из postgres через postgres_fwd или что-то похожее?
  • https://t.me/clickhouse_ru
    в последних версиях КХ уже есть возможность создавать таблицы на движке:
    https://clickhouse.tech/docs/en/engines/table-engines/integrations/postgresql/
    PostgreSQL | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @Aytuar ↶ Reply to #225883 #225884 08:02 AM, 09 Jul 2021
    Это я знаю. Мне наоборот нужен доступ ИЗ postgres в КХ. Так у КХ свой диалект SQL, и я не уверен что древнее приложение это переварит.
  • https://t.me/clickhouse_ru
    @Aytuar ↶ Reply to #225885 #225886 08:11 AM, 09 Jul 2021
    Спасибо.
  • @benderit #225887 08:38 AM, 09 Jul 2021
    Всем привет, создал пустой аналог рабочей таблицы, с другим ключом сортировки. Направил туда вставки с приложения, чтобы не терялись новые данные. Затем инмертом вставил данные из рабочей таблицы.

    Проблема в том, что в процессе вставки таблица росла, но по окончанию процесса вместо гигабайт таблица стала в мегабайтах, вместо 7 ярдов строк всего 11 лямов. Что я делаю не так?

    INSERT INTO stat_online_index SELECT * FROM stat_online;

    INSERT INTO stat_online_index SELECT *
    FROM stat_online

    Ok.

    0 rows in set. Elapsed: 8320.453 sec. Processed 7.01 billion rows, 2.64 TB (842.08 thousand rows/s., 317.43 MB/s.)
  • наверное стоит ещё показать как таблицы созданы
  • @benderit #225889 08:45 AM, 09 Jul 2021
    CREATE TABLE stat_online_index (
    `EventDate` Date,
    `EventTime` DateTime,
    `WebinarHash` String,
    `ParticipantHash` String,
    `ParticipantName` String DEFAULT '',
    `UserId` Int32 DEFAULT CAST(-1, 'Int32'),
    `OwnerId` Int32 DEFAULT CAST(-1, 'Int32'),
    `PartnerId` Int32 DEFAULT CAST(0, 'Int32'),
    `IsPublisher` Int8,
    `Duration` Int32 DEFAULT CAST(0, 'Int32'),
    `Streams` Int32 DEFAULT CAST(0, 'Int32'),
    `Average` Int32 DEFAULT CAST(0, 'Int32'),
    `PublishStreams` Int32 DEFAULT CAST(0, 'Int32'),
    `PublishAverage` Int32 DEFAULT CAST(0, 'Int32'),
    `ParticipantStatus` Int32 DEFAULT CAST(0, 'Int32'),
    `ParticipantQuestionsName` Array(String),
    `ParticipantQuestionsValue` Array(String),
    `ParticipantQuestionsType` Array(Int8),
    `ServersIp` Array(String),
    `ServersStream` Array(String),
    `ServersHls` Array(Int8),
    `Ip` String,
    `LocationId` Int32 DEFAULT CAST(0, 'Int32'),
    `LocationCity` Int32 DEFAULT CAST(0, 'Int32'),
    `LocationCountry` Int32 DEFAULT CAST(0, 'Int32'),
    `Os` String,
    `OsType` Int16,
    `IsMobile` Int8,
    `Browser` String,
    `BrowserVersion` Int32 DEFAULT CAST(0, 'Int32'),
    `Resolution` String,
    `ResolutionWidth` Int16,
    `ResolutionHeight` Int16
    ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{layer}-{shard}/stat_online_index','{replica}')
    PARTITION BY toYYYYMM(EventDate)
    PRIMARY KEY WebinarHash
    ORDER BY WebinarHash
    SETTINGS index_granularity = 8192
  • replacing + order by webinarhash, такое ощущение что схлопнулись данные по этому ключу
  • @simpl1g #225891 08:56 AM, 09 Jul 2021
    до этого как было?
  • @benderit #225892 08:57 AM, 09 Jul 2021
    Order by был по 4 колонкам
  • @benderit #225893 08:58 AM, 09 Jul 2021
    Сейчас скину
  • @simpl1g #225894 08:58 AM, 09 Jul 2021
    ну вот это и есть ответ
  • @benderit #225895 09:03 AM, 09 Jul 2021
    ORDER BY
    (
    WebinarHash,
    EventDate,
    ParticipantHash,
    EventTime
    )
  • это из-за движка Replacing, понял
  • да, у вас осталось по 1 записи на вебинар в месяц
  • https://t.me/clickhouse_ru
    @TrFury #225899 09:08 AM, 09 Jul 2021
    Всем привет. Хочу получить общее количество запросов, сложив всех поставщиков. Использую такой запрос (на скрине) Но с ним работает не так как нужно. Я ждал, что на выходе как раз будет общее количество запросов 200 и 500.
    А тут как я понял он просто подсчитывает сколько их было.
    Проверял запрос в gatagrip, там работало по-иному
  • @fs_fs_fs_fs #225900 09:08 AM, 09 Jul 2021
    Всем привет.
    Никак не могу сообразить возможно ли сделать такую штуку:
    Есть пользователь с readonly профилем. Возможно ли сделать новую базу в которую этот пользователь сможет писать.
    То есть глобально он остается readonly для всех без кроме одной.
    Может кто то сталкивался с такой задачей?
  • с профилем не подскажу, но можете ему роль сделать, что читать может из всех, а писать только в одну.
  • наверное вы хотели что-то такое countIf(StatusRes IN (200, 500))
  • спасибо
  • Спасибо. Похоже то что надо. Сейчас попробую.
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225902 #225905 09:20 AM, 09 Jul 2021
    Работает точно так же, как мой count, т.е сколько всего было запросов
  • https://t.me/clickhouse_ru
    @EvilDream #225906 09:21 AM, 09 Jul 2021
    Всех приветствую. Ранее уже задавал этот вопрос, правда ответа не получил. В процессе работы изменял enum, добавлял новое значение в конец.
    Так вот, переносил данные на другой хост - обнаружил что старые PARTITION ругаются на то, что енум отличается. Есть идеи как с этим бороться?
    У меня идея только деаттачнуть все партиции, изменить к старому виду, аттачнуть старые, после изменить к новому виду и аттачнуть новые партиции.
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225902 #225908 09:24 AM, 09 Jul 2021
    в datagrip использовал такой запрос(он как раз считал общее количество запросов)

    SELECT
    count((StatusRes = '200') + (StatusRes <> '200'))
    FROM testproviders.logTrainProvider
    WHERE Date > '2022-07-09 06:23:00' and Date < '2021-07-09 12:24:00'
  • count((StatusRes = '200') + (StatusRes <> '200'))
    это тоже самое что и просто
    count()
  • @simpl1g #225910 09:26 AM, 09 Jul 2021
    countIf принимает условие
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225909 #225911 09:33 AM, 09 Jul 2021
    Вот так отображает "countIf(StatusRes = '200') + countIf(StatusRes <> '200')"
    Но тоже подсчитывает количество статусов.
    Что я могу делать не так? Или может это проблема плагина, если складывается совсем другое
  • countIf(StatusRes = '200') + countIf(StatusRes <> '200')

    это же выборка по абсолютно всем StatusRes, = 200 + <> 200, не понимаю что вы хотите увидеть?)
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225912 #225914 09:41 AM, 09 Jul 2021
    Общее количество запросов, то что я сейчас вижу на графике, вообще не то. Поясню. У меня только у одного поставщика 400-500 запросов. А в графике с общим количеством запросов я вижу число в 2-2,5 раза меньше. Потому что подсчитывается вообще не то)
  • тогда вам наверное надо убрать группировку по Provider, у вас выводится число запросов из 1 провайдера сейчас
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #225915 #225916 09:56 AM, 09 Jul 2021
    Да, похоже в этом и была загвоздка. Спасибо большое :)
  • https://t.me/clickhouse_ru
    @ittaii #225917 10:55 AM, 09 Jul 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #225918 b o t 10:55 AM, 09 Jul 2021
    Total messages: 225917
  • @helloworld2024 #225920 01:20 PM, 09 Jul 2021
    Всем привет, а в клике имеет смысл вообще использовать SSD? Или можно спокойно на HDD жить?
  • https://t.me/clickhouse_ru
    @nyoroon #225921 01:21 PM, 09 Jul 2021
    есть смысл если не хватает скорости HDD
  • @helloworld2024 #225922 01:22 PM, 09 Jul 2021
    ну там ж нету рандомного чтения много вроде как, или есть?
  • https://t.me/clickhouse_ru
    @nyoroon #225923 01:23 PM, 09 Jul 2021
    ну выше 100-200 мб/с с диска не особо почитаешь даже последовательным чтением
  • https://t.me/clickhouse_ru
    Ну, очевидно, что разница будет менее существенной, как у классических строчных реляционных СУБД.. 🤷‍♂️
  • https://t.me/clickhouse_ru
    @nyoroon #225925 01:23 PM, 09 Jul 2021
    оно тратится не только на запросы, но и на мержи
  • https://t.me/clickhouse_ru
    @nyoroon #225926 01:24 PM, 09 Jul 2021
    я бы выбирал всегда по возможности SSD, если есть бюджет на него
  • @helloworld2024 #225927 01:25 PM, 09 Jul 2021
    Понял, спасибо, ну EBS SSD почти в три раза дороже
  • https://t.me/clickhouse_ru
    @seriych #225928 02:06 PM, 09 Jul 2021
    Привет. Случайно наткнулся на настройку do_not_merge_across_partitions_select_final, хотел узнать, насколько безопасно ее включать?
    И можно ли как-то ее включить для всего, но выключить для части таблиц, где такое поведение недопустимо?
  • https://t.me/clickhouse_ru
    @Muradnetpeak #225929 02:11 PM, 09 Jul 2021
    Всем привет. У меня внезапная проблема. Вчера я к своей базе коннектился без проблем. А сегодня выдает ошибку. <Error> Application: DB::Exception: More than one field of 'password', 'password_sha256_hex', 'password_double_sha1_hex', 'no_password', 'ldap', 'kerberos' are used to specify password for user default. Must be only one of them.
  • https://t.me/clickhouse_ru
    @critskiy #225930 02:22 PM, 09 Jul 2021
    Всем привет, у мен отчасти выходит очень неприятная ситуация. Я провожу r'n'd в плане перевода данных на новый движок (в сетапе сервака ssd и hdd), и при перекачке данных из старой тааблицы в новую:

    INSERT INTO rnd.summing_table SELECT min(mindt), max(maxdt), name, type, value, sum(counter) FROM old_db.merge_table GROUP BY name, type, value

    изначально возникала ошибка следующего рода:

    memory limit (total) exceeded While executing AggregationTransform

    окей, мне пришлось вывернуть настройки max_bytes_before_external_group_by = 10000000000, min_bytes_to_use_mmap_io=0 (чисто из любопытства), но у меня вышло следующее:

    Cannot write to file /var/lib/clickhouse/tmp/tmp32301zwraaa, errno: 28, strerror: No space left on device: While executing AggregatingTransform.

    В общем, как порешать проблему кроме как обновления сервачков? Я понимаю, что это идеальное решение, но это гиблая затея. Возможно, я упускаю какую-то настройку (снова), а мошт просто мудак и ткните пжл куда смотреть
  • https://t.me/clickhouse_ru
    кусками вставляй. если упрёшься по итогу в место на диске, надо почистить лишнее и потом вставлять. Если лишнего нет... се ля ви. Хотя мб кодеки помогут на новой таблице, можно до несколько десятков % места сэкономить
  • https://t.me/clickhouse_ru
    Кусками u mean делить по периодам, я не помню шоп в клике такое было, но посмотрю, спс
  • https://t.me/clickhouse_ru
    use WHERE Luke
  • https://t.me/clickhouse_ru
    @critskiy #225935 02:37 PM, 09 Jul 2021
    Йеп, i got it
  • https://t.me/clickhouse_ru
    @critskiy #225936 02:37 PM, 09 Jul 2021
    Протупел
  • https://t.me/clickhouse_ru
    @muhin_ds #225937 02:40 PM, 09 Jul 2021
    Здравствуйте,

    Помогите со скриптом лефтджойна:
    Левая:
    Таймстемп

    Правая:
    Таймстемп
    Текстовое поле

    Джойн по Таймстемп

    Обе Таблицы 10м.

    Джойн не хватило памяти.
    Пытаюсь через унион ол и групбай.

    Я планирую в первой таблице добить столбец NULL и потом сгруппировать по ts.

    Вопрос в том: какую агрегирующую функцию взять, чтобы сделать
    select ts, ???AGG???(text)
    from (table1 union all table2)
    group by ts

    Помогите пожалуйста
  • а в чем проблема? почему памяти не хватило? попробуйте сбрасывать на диск, если мало памяти.
    SELECT now() + interval number second, NULL from system.numbers limit 10
    UNION ALL
    SELECT now() + interval number second, number from system.numbers limit 10;
  • https://t.me/clickhouse_ru
    при джойне правая сторона должна умещаться в оперативе. попробуйте добавить оперативы. к тому же 10м - это вообще ни о чём. у вас только 8 гб оперативы что ли?
  • https://t.me/clickhouse_ru
    может вы джойните по таймстемпу неправильно и у вас кроссжойн получается? попробуйте добавить в where какое-нибудь условие и посмотреть сколько строк будет.
    скиньте ddl таблиц, без этого пока не совсем понятно.
  • @githubreleases_bot #225942 b o t 03:27 PM, 09 Jul 2021
    ClickHouse/ClickHouse description changed: v21.7.2.7-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.2.7-stable
    Release notes:
    ClickHouse stable release v21.7.2.7-stable
    Release v21.7.2.7-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.2.7-stable

  • https://t.me/clickhouse_ru
    ошибся там 300 млн строк
  • https://t.me/clickhouse_ru
    если обе таблицы по 300м, то делайте джойн с условием, например, по одному дню и в цикле пробегаетесь по всей таблице . всё как и в других бд
  • https://t.me/clickhouse_ru
    Спасибо! поделитесь, пжлст, опытом как сделать в цикле
  • https://t.me/clickhouse_ru
    на sql никак, напишите скрипт, который будет формировать sql запрос с WHERE t > ? and t < ? и двигаетесь по одному дню или даже по часу если всё равно данных много
  • https://t.me/clickhouse_ru
    @muhin_ds #225947 03:53 PM, 09 Jul 2021
    через питон например?
  • https://t.me/clickhouse_ru
    да хоть на пхп :)
  • https://t.me/clickhouse_ru
    @muhin_ds #225949 03:56 PM, 09 Jul 2021
    @vvvjhaq @morozovsk спасибо!
  • https://t.me/clickhouse_ru
    танк медленный, крылья не догадались прикрутить
  • https://t.me/clickhouse_ru
    что значит безопасно? Результат запроса будет другой если надо делать final для записей с одинаковым ключом в разных партициях.

    можно только на уровне запроса, через settings
  • https://t.me/clickhouse_ru
    max(coalsce( )) ?
  • https://t.me/clickhouse_ru
    coalesce
  • https://t.me/clickhouse_ru
    что?
  • https://t.me/clickhouse_ru
    у вас опечатка
  • https://t.me/clickhouse_ru
    @den_crane #225956 05:14 PM, 09 Jul 2021
    а
  • https://t.me/clickhouse_ru
    "безопасно" в том смысле, что про некоторые настройки пишут, что оно не протестировано, забаговано, есть подводные камни и т.п. Нет ли тут такой ситуации? А про разницу в работе я понимаю, поэтому и возникла вторая часть вопроса про то, как задать другую опцию для отдельных таблиц. Всех не научишь settings писать. Можно вьюхи сделать для некоторых таблиц типа select * settings, но такое себе.
  • https://t.me/clickhouse_ru
    нету известных багов.
  • https://t.me/clickhouse_ru
    @seriych #225959 05:18 PM, 09 Jul 2021
    ага, спасибо)
  • https://t.me/clickhouse_ru
    вьюхи работают так себе, я стараюсь их избегать. для каких-то запросов прокидывается условие внутрь, для других нет и падение по памяти. в идеале чтобы можно было эти настройки прямо в самой таблице :)
  • https://t.me/clickhouse_ru
    да без поддержки, из-за кросс-компиляции, компилируется на тачке с x86 и там mysqla.lib не та.
    надо собирать под arm-м чтобы был mysql
  • https://t.me/clickhouse_ru
    External data still broken after #22527 · Issue #23648 · ClickHouse/ClickHouse

    Describe the bug After #22527 the post of external data still broken when there is only one line. When there are more then one, \r is appended to the latest. Does it reproduce on recent release? It...

  • https://t.me/clickhouse_ru
    а там точно RowBinary ?
  • Точно, там по даже по стектрейсу видно парсер RowBinary)
  • https://t.me/clickhouse_ru
    а да, вижу INSERT INTO graphite (Path, Value, Time, Date, Timestamp) FORMAT RowBinary
  • https://t.me/clickhouse_ru
    странно почему больше никто не жаловался, у вас какой-то corner-case может, или компрессия у всех выключена
  • https://www.parrot.ru/clickhouse_ru/s2/00001/9574.html#2

    В группе сообщения уже нет, думал написать челу, поинтересоваться)
  • https://t.me/clickhouse_ru
    а сколько памяти у сервера?
  • 100+ гигов свободно, падает не по OOM
  • https://t.me/clickhouse_ru
    @Stofeles #225970 05:45 PM, 09 Jul 2021
    vfgjnt
  • https://t.me/clickhouse_ru
    я понимаю что не ООМ, у КХ бывает проблема из-за того что запросы одни падают с OOM, а потом дргуие начинают ломать КХ, потому что у первых запросов неправильно dealloc сработал, но это явно не ваш случай
  • В сэмпле конфига, который представлен в ридмихе репозитория carbon-clickhouse, компрессия включена.

    Пока добрался до того, что gz-архив (с теми же метриками, что ломают CH при отправке через carbon-clickhouse), отправленный на HTTP-клиент курлом, ничего не ломает. Всё ещё продолжаю расследование)
  • https://t.me/clickhouse_ru
    наверное tcpdump перспективнее смотреть
  • https://t.me/clickhouse_ru
    @pxlvgg #225976 05:53 PM, 09 Jul 2021
    как понять, из-за чего кликхаус иногда перестаёт нормально функционировать, в консоли кроме запроса и query_id ничего не появляется, а драйвер отдаёт ошибку "bad connection"?
  • https://t.me/clickhouse_ru
    в какой консоли? и что такое драйвер?

    что в логе КХ?

    версия КХ?
  • https://t.me/clickhouse_ru
    а кстати у вас КХ далеко от заливалищика? сетевая летенси сколько?
  • В докерах на одной машине. Латенси минимальна, полагаю)
  • https://t.me/clickhouse_ru
    ясно, возможно что goшный компресс делает не совсем такой gzip как линуксовый gzip
  • https://t.me/clickhouse_ru
    Спасибо.
  • 10 July 2021 (24 messages)
  • https://t.me/clickhouse_ru
    В последних версиях КХ умеет притворяться PostgreSQL, принимает запросы на postgresql_port
  • https://t.me/clickhouse_ru
    @gingeard #225987 06:25 AM, 10 Jul 2021
    Всем, привет.
    Помогите обстукать решение, мы только едем на кликхаус.

    Такой кейс: есть 2 таблицы фактов из источников (на самом деле больше, но для простоты): таблица платежей из платежной системы и таблица платежей из нашей учетной системы. В 95% случаев операции соответствуют друг другу 1-к-1, в 5% случаев (свякие отмены, проведения двумя платежами, начисление бонусов и пр.) операции 1-ко-многим.

    Как эти данные правильно засторить при том, что иногда, возникают ситуации, когда нужно сагрегировать суммы по разным атрибутам, которые есть частично в первой, частично во второй таблице, соответственно напрашивается JOIN? Но как мы уже поняли, хранение в разных таблицах и последующий джоин - это антипаттерн клика, нужны широкие таблицы.
  • https://t.me/clickhouse_ru
    для начала надо попробовать join.
  • https://t.me/clickhouse_ru
    @gingeard #225989 06:41 AM, 10 Jul 2021
    пробовали конечно, все затыкается, правая таблица не влазит в память
  • А в чем проблема сделать одну широкую? Уникальность в кх не требуется.
  • https://t.me/clickhouse_ru
    @gingeard #225991 06:50 AM, 10 Jul 2021
    Вопрос как это сделать правильно, варианты:

    1. Все сложить в одну широкую таблицу, ключевые поля объединить, с последующим SummingMergeTree числовых полей.

    Минусы: записи схлопываться в фоновом режиме и мы при вычитке никогда не можем быть уверенны, что запись уже схлопнута.
  • https://t.me/clickhouse_ru
    @gingeard #225992 06:50 AM, 10 Jul 2021
    2. Вообще ничего не объединять, все складывать в одну широкую таблицу, где каждая колонка сообветствует полю исходной таблицы, таким образом получаем струкруру примерно такого вида:
    t1.x, t1.y, t1.z, NULL, NULL, NULL
    NULL, NULL, NULL, t2.x, t2.y, t2.z
    ,а необходимые обогащения атрибутами по внешнему ключу дообогащать в соседних колонках на этапе E&L.

    Минусы: усложнене E&L, отход от ELT
  • https://t.me/clickhouse_ru
    @gingeard #225993 06:51 AM, 10 Jul 2021
    Еще был вариант:

    3. Все сложить в одну узкую generic-таблицу, как описано здесь: https://habr.com/ru/company/badoo/blog/442616/ - и дальше играться с агрегирующими функциями и лямбдами

    Минусы: не очень удобно с этим работать, громоздкие и не тривиальные запросы получаются.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #225991 #225994 06:59 AM, 10 Jul 2021
    Непонятны минусы первого варианта. Ключевые поля объединяются, числовые поля разных таблиц становятся массивами (потому как в 5% случаев 1:N). Некоторые поля исходных таблиц возможно обойдутся и без превращения в массивы. Обычный MergeThree. При агрегациях вылезет немного array функций или даже arrayjoin'ов, но в терпимых количествах.
  • https://t.me/clickhouse_ru
    спасибо за комментарий, правильно ли я понимаю, что структура для записей из двух таблиц:

    t1:
    a b c t2_id

    и

    t2:
    id1 x1 y1 z1
    id2 x2 y2 z2

    должна получится широкая структура:

    a b c t2_id [id1,id2] [x1,x2] [y1,y2] [z1,z2]
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #225995 #225996 07:24 AM, 10 Jul 2021
    да, я бы подумал прежде всего о такой изначальной структуре. дальше надо смотреть насколько сложными получатся arrayXXX запросы, в какой MV это имеет смысл преобразовать, можно ли какие-то исходные аттрибуты сразу превратить в скаляры, итд.
  • https://t.me/clickhouse_ru
    В чем проблема сделать одну таблицу с указанием источника?
  • https://t.me/clickhouse_ru
    вы имеете ввиду мой вариант 3?
  • https://t.me/clickhouse_ru
    извиняюсь за свою чайниковость, что есть MV? 🙄😅
  • https://t.me/clickhouse_ru
    Materialized view
  • https://t.me/clickhouse_ru
    При селекте вы все равно делаете аггрегацию и вам не важно схолпнклось или нет
    Я бы отдельно хранил сырые данные в одной таблице с ttl или с ttl group by

    И настроил MV
    С аггрегацией для ускорения выборок
  • https://t.me/clickhouse_ru
    @skirpichenok #226003 09:06 AM, 10 Jul 2021
    Добрый день. Намереваемся использовать материализованные представления работающие как insert trigger на одной и единственной общей таблице (основной поток данных). Эти представления будут готовить данные для вставки в другие соответствующие таблицы. Есть ли какое-то ограничение на общее колличество таких материализованных представлений и таблиц. Что если их будет 1000 или 2000?
  • https://t.me/clickhouse_ru
    Замедление инстертов
  • https://t.me/clickhouse_ru
    @unamedrus #226005 09:08 AM, 10 Jul 2021
    Скорее всего вам не нужно 1000 вью
  • https://t.me/clickhouse_ru
    нужно т.к. у каждого заказчика свои широкие денормализованные view [до 100 колонок максимум].

    1. может как-то иначе это можно реализовать чтобы замедление инсертов сильно не сказывалось?

    2. А что если иметь 2000 материализованных представлений или более просто как статиские снапшоты данных созданные через POPULATE (без использования insert triggers). На колличество таких тоже есть ограничения?
  • https://t.me/clickhouse_ru
    Я бы такие специфичные для клиентов вещи не на уровне таблиц в кликхаусе моделировал. Такого типа настройки можно положить в обычную базу данных, и потом уже генерировать запросы на основе выбранных пользователем колонок.
  • https://t.me/clickhouse_ru
    А что если кол-во заказчиков вырастет в 10раз? А если в 100 раз?
  • https://t.me/clickhouse_ru
    Да. Пожалуй плохой путь :)
  • https://t.me/clickhouse_ru
    Ну сами подумайте
    Вы вставляете 100 000
    Записей
    И у вас 1000 mv
    Начинают читать этот блок
    То есть вам надо обработать 100 миллионов записей
    Как думаете сколько ядер вам для этого нужно
    И как долго это будет длиться?
    То есть ограничения не программные а физические
  • 11 July 2021 (19 messages)
  • https://t.me/clickhouse_ru
    я придумал другое решение с использованием json. в итоге получилась всего одна таблица. реботает отлично. Например:

    SELECT
    study_id, study_site_id, subject_id, study_event_definition_id, crf_entry_id, row_num,
    JSONExtractString(JSONExtractRaw(json_data, 'claimant_first_name'), 'value') as claimant_first_name,
    JSONExtractString(JSONExtractRaw(json_data, 'claimant_last_name'), 'value') as claimant_last_name,
    JSONExtractString(JSONExtractRaw(json_data, 'law_firm_name'), 'value') as law_firm_name
    FROM xdata_view_ordered
    WHERE study_id = 1526
    LIMIT 100 OFFSET 0

    Но есть требование обеспечить доступ к данным используя regular ANSI SQL. Позволить создавать кастомные вью - то их может быть много в зависимости от колва-ва клиентов (т.е. это плохая идея). Избавиться в данном случае от JSONExtractString & JSONExtractRaw не получится?
  • https://t.me/clickhouse_ru
    Собираю на M1, ловлю вот такую ошибку:
    /opt/homebrew/Cellar/mysql/8.0.25_1/include/mysql/mysql_com.h:979:31: error: use of old-style cast [-Werror,-Wold-style-cast]
    SHUTDOWN_WAIT_CONNECTIONS = MYSQL_SHUTDOWN_KILLABLE_CONNECT,
    Это первая, подобных там еще много. Не подскажете, как можно “полечить”?
  • https://t.me/clickhouse_ru
    Вы не пробовали через докер? Розетта 2 не умеет запускать x86 образы под M1?
  • https://t.me/clickhouse_ru
    пробовал с
    yandex/clickhouse-server:21.3.14.1-alpine

    КХ валится с непонятной ошибкой
    2021.07.09 10:56:54.116706 [ 1 ] {} <Fatal> Application: Child process was terminated by signal 5.

    каждый раз при разных запросах к нему.
    Потому решил собирать на М1.
  • @kalloc ↶ Reply to #226019 #226021 11:11 AM, 11 Jul 2021
    ну там перформанс же прям сильно просядет
  • https://t.me/clickhouse_ru
    Это все равно для разработки.
  • https://t.me/clickhouse_ru
    А нужна именно версия 21.3? В списке изменений для 21.7 заявлена поддержка сборки на M1.
  • https://t.me/clickhouse_ru
    спасибо, сейчас попробую
  • https://t.me/clickhouse_ru
    А в тех коммитах, которые в мастере, вообще собирается уже как часть PR validation.

    https://clickhouse-builds.s3.yandex.net/0/61bf623a3cb4b19534d8725e6a664849f14f7ad7/clickhouse_special_build_check/report.html вот тут, допустим, есть бинарник для darwin aarch64.
  • https://t.me/clickhouse_ru
    @vchernyshev #226026 12:11 PM, 11 Jul 2021
    И, судя по всему, поддержка mysql там просто выключена.
  • https://t.me/clickhouse_ru
    мне выше отвечали:
    “да без поддержки, из-за кросс-компиляции, компилируется на тачке с x86 и там mysqla.lib не та.
    надо собирать под arm-м чтобы был mysql”
  • https://t.me/clickhouse_ru
    нет, не помогло.
    взял yandex/clickhouse-server:21.7.2.7-alpine
    снова
    2021.07.11 13:14:31.045866 [ 1 ] {} <Fatal> Application: Child process was terminated by signal 5.
  • https://t.me/clickhouse_ru
    поставьте clang 11. может поможет
  • @githubreleases_bot #226032 b o t 07:57 PM, 11 Jul 2021
    ClickHouse/ClickHouse tagged: v20.8.19.4-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.8.19.4-stable
    Release notes:
    ClickHouse stable release v20.8.19.4-stable
    Release v20.8.19.4-stable · ClickHouse/ClickHouse

    ClickHouse stable release v20.8.19.4-stable

  • https://t.me/clickhouse_ru
    @kuzmin_m #226033 10:16 PM, 11 Jul 2021
    Привет! Меня интересует гомоморфное шифрование с операцией сложения. Т.е. есть зашифрованные числа, некая агрегатная функция их суммирует так, что расшифровав ее результат я получу сумму исходных незашифрованных чисел. Есть какие-нибудь наработки в этой области?
    Или может быть можно написать собственную агрегатную функцию на c/cpp?
  • https://t.me/clickhouse_ru
    В кликхаусе такого нет.
    Наработки подобного были у IBM и они вроде даже библиотеку выпустили
    https://habr.com/ru/company/dcmiran/blog/513388/

    > Или может быть можно написать собственную агрегатную функцию на c/cpp?
    Написать наверное можно, вмержат в мастер или нет это вопрос.
    IBM открыла инструмент полностью гомоморфного шифрования для Linux

    Компания IBM опубликовала на GitHub исходный код набора инструментов FHE для Linux. Утилиты работают на платформах IBM Z и x86, поддерживаются Ubuntu, Fedora и CentOS. Полностью гомоморфное...

  • @kalloc ↶ Reply to #226033 #226035 10:27 PM, 11 Jul 2021
    А вам для чего? )
  • https://t.me/clickhouse_ru
    Просто идея. Хранить и обрабатывать в облаке метрики в зашифрованном виде без передачи ключей за периметр.
  • https://t.me/clickhouse_ru
    https://github.com/google/fully-homomorphic-encryption ещё есть вот это от Гугла.
    GitHub - google/fully-homomorphic-encryption: Libraries and tools to perform fully homomorphic encryption operations on an encrypted data set.

    Libraries and tools to perform fully homomorphic encryption operations on an encrypted data set. - GitHub - google/fully-homomorphic-encryption: Libraries and tools to perform fully homomorphic enc...

  • 12 July 2021 (142 messages)
  • https://t.me/clickhouse_ru
    к сожалению, нет - не помогло.
    собирал так:
    clang -v
    clang version 11.1.0
    Target: arm64-apple-darwin20.5.0
    Thread model: posix
    InstalledDir: /opt/homebrew/opt/llvm@11/bin

    cmake -DCMAKE_C_COMPILER=/opt/homebrew/opt/llvm@11/bin/clang -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm@11/bin/clang++ -DUSE_MYSQL=1 -DCMAKE_CXX_FLAGS="-I/opt/homebrew/opt/mysql/include/" -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
    -- The C compiler identification is Clang 11.1.0
    -- The CXX compiler identification is Clang 11.1.0
    ...
    cmake --build . --config RelWithDebInfo
  • https://t.me/clickhouse_ru
    ну можно ваши JSONExtract класть в отдельные колонки... при вставке через DEFAULT
    у вас много клиентов, у вас там разные колонки для всех? или все таки одинаковый набор колонок просто внутри JSON они по разному называются?
  • https://t.me/clickhouse_ru
    Разные. Могут добавляться удаляться.
  • @pp31415 #226045 05:02 AM, 12 Jul 2021
    Привет! Мне нужно сделать таблицу, где бы хранились последние версии строк по ID

    требуется, чтобы дедубликация прошла на момент вставки чтобы от пользователя не требовалось писать group by + argMax на каждый запрос

    пытаюсь использовать:
    - table: engine AggregatingMergeTree (id, AggregateFunction(argMax, String, DateTime))
    - materialized view, который в него вставляет с argMaxState() group by ID

    для AggregatingMergeTree в доке указано, что будет коллапс строк, но в таблице есть дубликаты по ID после срабатывания MV

    AggregatingMergeTree
    The engine inherits from MergeTree, altering the logic for data parts merging. ClickHouse replaces all rows with the same primary key (or more accurately, with the same sorting key) with a single row (within a one data part) that stores a combination of states of aggregate functions.

    верно ли, что все равно нужно писать group by + argMax даже при запросах к MV?
  • https://t.me/clickhouse_ru
    прямо савсем разные для всех клиентов?

    или часть одинаковые для всех?
  • https://t.me/clickhouse_ru
    Все крайне динамично. У каждого клиента свои поля колонки
  • https://t.me/clickhouse_ru
    ну и храните тогда каждого клиента отдельно в своей таблице и добавляйте ему свои поля колонки через DEFAULT ExtractJSON через поля в этой таблице...
  • https://t.me/clickhouse_ru
    Наверное не очень хорошо иметь скажем 2000 таблиц или более для этого? Там и репликация и шардирование. Поэтому я решил сделать одну с ключом партицирования по tenant id
  • https://t.me/clickhouse_ru
    а что, хранить никак не несвязанные данные и динамически грузить CPU JSONExtract... прямо сильно лучше?
    в одной таблице сильно лучше?
  • https://t.me/clickhouse_ru
    “и добавляйте ему свои поля колонки через DEFAULT ExtractJSON.” А поля заранее надо создавать или они сами создадутся из того что есть в json? Где про это почитать дайте плиз ссылку?
  • https://t.me/clickhouse_ru
    поля сами не создаются через ALTER TABLE добавляются с DEFAULT выражением

    про подход но в другом use case можно почитать тут
    https://eng.uber.com/logging
    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
    Спасибо
  • https://t.me/clickhouse_ru
    в момент вставки де-дупликация делается, но она идет внутри блока
    и потом в фоне идет при background merge

    используйте SELECT ... FINAL ...
    чтобы финализировать дедупликацию в момент чтения
    сейчас это распаралелено и не так уж и медленно
  • спасибо!
  • @l_dar #226056 07:09 AM, 12 Jul 2021
    Привет всем. Подскажите как можно перенести существующую таблицу с данными из одной базы в другую на разных машинах. Данных где то на 3 ТБ.
  • https://t.me/clickhouse_ru
    clickhouse-copier пробовали?
    https://clickhouse.tech/docs/en/operations/utilities/clickhouse-copier/
    clickhouse-copier | ClickHouse Documentation

    clickhouse-copier Copies data from the tables in one cluster to tables in another (or the same) cluster. Warning To get

  • Как сказали выше - попробуйте clickhouse-copier. Тестовые прогоны показали что он нормально работает для перегона/решардирования данных. Но из вопроса не очень понятно, вам просто перенести данные надо? Возможно просто детач/атач?
  • @l_dar ↶ Reply to #226057 #226059 07:23 AM, 12 Jul 2021
    Спасибо, попробую
  • @l_dar ↶ Reply to #226058 #226060 07:24 AM, 12 Jul 2021
    Да, просто единоразово перенести данные
  • Есть еще вариант частями переносить insert into select from remote()
    Если таблица реплицирована, то можно добавить как реплику и создать таблицу, она сама все скачает и достаточно быстро. На днях так переносил, просто подключаешь новую реплику и все)
  • @l_dar ↶ Reply to #226061 #226062 07:27 AM, 12 Jul 2021
    Спасибо, рассмотрю insert into select from remote.
    А таблица не реплицирована(
  • Еще вам на посмотреть, есть вот такая утилитка (сам пользуюсь для бекапов)
    https://github.com/AlexAkulov/clickhouse-backup
    Автоматически сделает вам бекап, переносите на другую машину и нею же разворачиваете.
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

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

  • https://t.me/clickhouse_ru
    @hostadminonline #226064 07:35 AM, 12 Jul 2021
    добрый день... подскажите плз
    а сохранять в КХ ассоциативные массивы с возможностью потом искать по ним есть ?
  • https://t.me/clickhouse_ru
    @AnKochem #226065 07:43 AM, 12 Jul 2021
    Map(key, value) | ClickHouse Documentation

    Map(key, value) Map(key, value) data type stores key:value pairs. Parameters key — The key part of the pair. String, Int

  • https://t.me/clickhouse_ru
    @evgrom #226067 07:53 AM, 12 Jul 2021
    Привет, может кто подсказать, а есть возможность для postgresql db engine ( https://clickhouse.tech/docs/en/engines/database-engines/postgresql/ ) задавать параметры подключения, в частности, sslmode?
  • @l_dar ↶ Reply to #226063 #226068 08:00 AM, 12 Jul 2021
    Спасибо.
  • https://t.me/clickhouse_ru
    Просто мега полезная статья. Спасибо! Похоже это то что нам нужно. Arrays instead of json
  • https://t.me/clickhouse_ru
    ну, еще есть
    экспериментальная фича
    https://clickhouse.tech/docs/en/sql-reference/data-types/map/
    https://clickhouse.tech/docs/en/sql-reference/functions/tuple-map-functions/#function-map
    она чуть быстрее

    и массивы медленные , когда элементов становится много, потому что жрут CPU больше чем обычные строки
    Map(key, value) | ClickHouse Documentation

    Map(key, value) Map(key, value) data type stores key:value pairs. Parameters key — The key part of the pair. String, Int

  • https://t.me/clickhouse_ru
    👍
  • классная статья
    было бы круто если бы ребята отдали в опеноср свой Log Admin и Query Service
  • @1803285152 #226081 12:19 PM, 12 Jul 2021
    Как быть с ' кавычками, вместо таких "? visitParamExtractInt не видит, что парсить
    visitParamExtractInt(c_pram, 'count') as count_point

    c_pram = {'count': 2}
  • https://t.me/clickhouse_ru
    @gorbonk #226082 12:21 PM, 12 Jul 2021
    Всем доброго дня! А есть способ реализовать unique constraint без запроса к самой таблице в рамках проверки условия?
  • https://t.me/clickhouse_ru
    ну раз у вас жсон такой кривой, то реплейсом сначала :)
  • В ch можно или заново данные заливать?
  • https://t.me/clickhouse_ru
    как удобнее
  • @1803285152 #226086 12:32 PM, 12 Jul 2021
    Спасибо
  • @vmihailenco #226087 12:36 PM, 12 Jul 2021
    Добрый день,

    Пытаюсь обновить тип AggregateFunction(groupUniqArrayArray(1000), Array(String)) на AggregateFunction(groupUniqArrayArray, Array(String)), т.к. ClickHouse ругается на старый тип. MODIFY COLUMN col type не работает. Можно как-то вручную тип подправить без полного перезаписывания колонки?
  • @vmihailenco #226088 12:43 PM, 12 Jul 2021
    Или как-то по--другому обойти https://github.com/ClickHouse/ClickHouse/issues/26196#issuecomment-878247377
    21.5.8, 21.6 & 21.7 break *Array aggregation types · Issue #26196 · ClickHouse/ClickHouse

    Updating existing table to 21.6 and 21.7 breaks *Array aggregation types. The table contains mater view with the following column strings AggregateFunction(topKArray(10), Array(String)), When tryin...

  • А как в ch сделать реплейс? В доки не нашел
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #226089 #226090 12:46 PM, 12 Jul 2021
    For Replacing in Strings | ClickHouse Documentation

    Functions for Searching and Replacing in Strings Note Functions for searching and other manipulations with strings are d

  • @1803285152 #226091 12:48 PM, 12 Jul 2021
    👍
  • https://t.me/clickhouse_ru
    @artilligence #226092 12:52 PM, 12 Jul 2021
    Коллеги, добрый день! Создали дополнительного пользователя в CH с логином и паролем. Через ch-client пытаюсь прокинуть запрос на выборку к распределенной таблице, рандомно отваливается на одном из шардов или реплик с ошибкой авторизации. При этом, сам клиент к серверу подключается. С нераспределенными таблицами проблем нет

    ClickHouse client version 20.3.7.46 (official build).
    ClickHouse server version 20.3.7 revision 54433.
  • https://t.me/clickhouse_ru
    с какой ошибкой"отваливается" ?
  • https://t.me/clickhouse_ru
    Code: 516. DB::Exception: Received from localhost:9000. DB::Exception: Received from chi-clickhouse-db-org-sim-default-1-1:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.
  • а в remote_server прописан юзер/пароль?
  • https://t.me/clickhouse_ru
    @statyank #226096 01:29 PM, 12 Jul 2021
    Здравствуйте,
    такой вопрос: в одной таблице массив номеров company_phone, company_email для вакансии, в другой таблице одиночные номера phone, email, id компаний. Можете подсказать, как можно реализовать присвоение id компании по хотя бы одному совпадающему полю в таблицах, куда смотреть вообще?
  • https://t.me/clickhouse_ru
    посмотрю, спасибо
  • https://t.me/clickhouse_ru
    так пользователь с паролем, есть какие то еще ограничения типа ip, network или host_regexp у него?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226092 #226099 01:37 PM, 12 Jul 2021
    default/networks/ip:
    - "::"
    - "0.0.0.0/0"
  • https://t.me/clickhouse_ru
    @solard #226100 01:37 PM, 12 Jul 2021
    Я так понял вы тоже оператором кластер раскатали
  • https://t.me/clickhouse_ru
    @solard #226101 01:37 PM, 12 Jul 2021
    Можно еще выпилить regexp для отладки
  • https://t.me/clickhouse_ru
    @Coderxlsn #226102 01:37 PM, 12 Jul 2021
    Добрый день. Такой вопрос. Упираемся в ресурсы одного хоста. Есть идея сделать кластер реплику и распределить запросы. Как это правильно сделать и получится 2 тяжелый запроса разделить или сложный запрос разделить между хостами?
  • https://t.me/clickhouse_ru
    смотрите в стороне dictGet и словарей source = clickhouse и с layout = cache layout
    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts/

    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-clickhouse

    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#complex-key-cache
    General Description | ClickHouse Documentation

    External Dictionaries You can add your own dictionaries from various data sources. The data source for a dictionary can

  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226102 #226104 01:39 PM, 12 Jul 2021
    Получится при условии что вы настроите репликацию, у вас агрегация будет занимать в n=кол-во реплик раз меньше памяти на каждом хосте
  • https://t.me/clickhouse_ru
    @Coderxlsn #226105 01:39 PM, 12 Jul 2021
    Да кластер реплика планировал
  • https://t.me/clickhouse_ru
    почему меньше? Одна реплика будет выполнять агрегацию
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226106 #226107 01:40 PM, 12 Jul 2021
    Разве?
  • https://t.me/clickhouse_ru
    @solard #226108 01:40 PM, 12 Jul 2021
    А пардон, шарды надо сделать
  • https://t.me/clickhouse_ru
    @solard #226109 01:40 PM, 12 Jul 2021
    Вот это я обманщик
  • https://t.me/clickhouse_ru
    а при чем тут оператор?)
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226110 #226111 01:40 PM, 12 Jul 2021
    При том что он настройки создает такие что вас будет рефьюзить если вы по regexp не пролезаете из места откуда коннектитесь
  • https://t.me/clickhouse_ru
    @Coderxlsn #226112 01:41 PM, 12 Jul 2021
    А если 2 запроса он сможет их распределить по свободным репликам?
  • https://t.me/clickhouse_ru
    то есть, надо либо регэксп настроить, либо убрать вообще?
  • https://t.me/clickhouse_ru
    а куда упираетесь? в CPU или в Диск?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226113 #226115 01:41 PM, 12 Jul 2021
    Для отладки убрать
  • https://t.me/clickhouse_ru
    нет. Это вы должны делать, балансером на входе, до КХ
  • https://t.me/clickhouse_ru
    @Coderxlsn #226117 01:41 PM, 12 Jul 2021
    А коннект будет через зукипер правильно?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226113 #226119 01:41 PM, 12 Jul 2021
    # Default host_regexp to limit network connectivity from outside
    chConfigNetworksHostRegexpTemplate: "(.*)"
  • https://t.me/clickhouse_ru
    @solard #226120 01:42 PM, 12 Jul 2021
    Вот такой поставьте на время отладки
  • https://t.me/clickhouse_ru
    @artilligence #226121 01:42 PM, 12 Jul 2021
    спасибо!
  • https://t.me/clickhouse_ru
    @Coderxlsn #226122 01:42 PM, 12 Jul 2021
    То есть нужно что-то типа nginx для балансировки еще?
  • https://t.me/clickhouse_ru
    да, посмотрите chproxy
  • https://t.me/clickhouse_ru
    @Coderxlsn #226124 01:42 PM, 12 Jul 2021
    А чем обычно балансируют?
  • https://t.me/clickhouse_ru
    nginx, chproxy, ha-proxy, dns
  • https://t.me/clickhouse_ru
    если не понимаете что это конкретно значит
    и не хотите потом себя где нибудь на https://t.me/dataleak увидеть
    то лучше почитайте
    про host_regexp
    https://clickhouse.tech/docs/en/operations/settings/settings-users/#user-namenetworks
    Утечки информации

    Знаем про утечки все! Поиск утечек и мониторинг даркнета: dlbi.ru Админ: @ashotog (реклама не продается, на вопросы "где взять базу?" не отвечаем). Сообщить об утечке: sendleak@gmail.com Группа в ВК: https://vk.com/dataleakage

  • https://t.me/clickhouse_ru
    еще раз спрошу
    а куда вы упираетесь ? в CPU или в Диск?
  • https://t.me/clickhouse_ru
    @Coderxlsn #226128 01:47 PM, 12 Jul 2021
    8 ядер . и в проц и в диск
  • https://t.me/clickhouse_ru
    @Coderxlsn #226129 01:48 PM, 12 Jul 2021
    И медленно обработка
  • https://t.me/clickhouse_ru
    @Coderxlsn #226130 01:48 PM, 12 Jul 2021
    Сегодня вообще падал запрос
  • https://t.me/clickhouse_ru
    @Coderxlsn #226131 01:49 PM, 12 Jul 2021
    Думал кластером решить проблему параллельно подзапросов
  • @1803285152 #226132 02:06 PM, 12 Jul 2021
    Почему count возвращает 0?
    visitParamExtractInt(c_column, 'count')
  • https://t.me/clickhouse_ru
    потому что visitParam это не совсем json, используй JSONExtract*
  • Но раньше всегда работало с visitParam
  • https://t.me/clickhouse_ru
    пробелов не было (вероятно)
  • спасибо
  • @rikkir #226138 02:11 PM, 12 Jul 2021
    Подскажите пожалуйста в чем проблема с репликацией данных,

    создаю 2 таблицы ReplicatedMergeTree на 2х серверах,
    делаю инсерт в одну из таблиц, данные не реплицируются между репликами,

    нужно ли создавать какие то доп.таблицы, для репликации?
  • https://t.me/clickhouse_ru
    SELECT
    visitParamExtractInt('{"count":1}', 'count'),
    visitParamExtractInt('{"count": 1}', 'count')

    Query id: 85f3ffbd-bc16-4ff8-b962-b8f22e6fde93

    Row 1:
    ──────
    visitParamExtractInt('{"count":1}', 'count'): 1
    visitParamExtractInt('{"count": 1}', 'count'): 0
  • 👍
  • https://t.me/clickhouse_ru
    ZK путь должен совпадать, это должен быть один шард.
    репликация работает по именам из uname -f и порту 9009. Т.е. один сервер будет подключаться к uname -f другого по порту 9009

    ошибки репликации видно в select * from system.replication_queue

    Зукипер должен быть единым ансамблем, а не 3-мя standalone серверами
  • https://t.me/clickhouse_ru
    @herkita #226142 02:24 PM, 12 Jul 2021
    Добрый день. Подскажите, пожалуйста, почему может падать ошибка "Деление на ноль" при запросе:
    select sumIf("field" * "sign", 1) / nullIf(sumIf("sign", "another_field" = 2), 0) from table;
  • https://t.me/clickhouse_ru
    а в результате что дожно получиться? поля из обеих таблиц?

    типа таблица вакансий (company_phone, company_email) [ 555-33, 333-44] , [bbb@c.com]
    таблица2 (phone, email, id) 222-3333 , bbb@c.com, 1

    а результат ожидается?
  • https://t.me/clickhouse_ru
    обе ветки выполняются
  • https://t.me/clickhouse_ru
    Это как то можно обойти?
  • https://t.me/clickhouse_ru
    Так если обе выполняются почему NullIf не срабатывает в правой перед операцией деления?
  • https://t.me/clickhouse_ru
    а какой тип у field ?
  • https://t.me/clickhouse_ru
    Decimal(18, 6)
  • https://t.me/clickhouse_ru
    а так select cast(sumIf( field * sign, 1), 'Nullable(Decimal(18, 6))') / nullIf( sumIf("sign", "another_field" = 2) , 0) from table;
  • https://t.me/clickhouse_ru
    в результате должна получиться такая таблица:
    (company_phone, company_email, company_id)
    [ 555-33, 333-44] , [bbb@c.com], 1
  • https://t.me/clickhouse_ru
    тоже самое (Division by zero)
  • https://t.me/clickhouse_ru
    самое простое сделать float

    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+is%3Aopen+Division+by+zero+decimal
    Issues · ClickHouse/ClickHouse

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

  • @vvvjhaq #226154 02:38 PM, 12 Jul 2021
    Вопрос в тему:
    А не могли бы подсказать, почему здесь round не округляет до 2х символов после запятой?
    select round((t.s1-t.s2)*100, 2) from (select sum(toDecimal128(5.700000000000000000, 9)) as s1, sum(toDecimal128(5.300000000000000000, 9)) as s2) as t;
  • https://t.me/clickhouse_ru
    select toFloat64(sumIf("field" * "sign", 1)) / nullIf(sumIf("sign", "another_field" = 2), 0) from table;

    так заработало, спасибо. Где то можно почитать про логику выполнения деления в КХ например?
  • https://t.me/clickhouse_ru
    Conditional operators (if/case/ternary) always calculate all branches · Issue #1562 · ClickHouse/ClickHouse

    Now ternary operator (function if) always calculates two branches. SELECT 0 = 0 ? 0 : modulo(1, 0) DB::Exception: Division by zero I would like have opportunity to execute this expression. I.e. onl...

  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
    так шарды помогут распределить запрос с подзапросами или нет?
  • https://t.me/clickhouse_ru
    @ARyndin #226160 02:56 PM, 12 Jul 2021
    Всем привет. Можно ли заставить клик показывать нулевую дату как 0000-00-00 вместо 1970-01-01? В версии 19.15 было так :(
  • https://t.me/clickhouse_ru
    decimal имеет фиксированное число знаков после запятой
  • https://t.me/clickhouse_ru
    наверное никак не сделать в КХ, слишком сложно получается.
  • https://t.me/clickhouse_ru
    никак. Это сделано специально.
    Только переписывать запросы, if( ), возвращать строки.
  • короче как то так сделал ФР...
    https://github.com/ClickHouse/ClickHouse/issues/26251
    Unfold all macros when creating ReplicatedMergeTree · Issue #26251 · ClickHouse/ClickHouse

    Use case Currently on creation of replicated merge tree, metadata SQL files are kept as-is (except for {database}, {table}) macros. As every replicated merge tree relies heavily on zookeeper path, ...

  • https://t.me/clickhouse_ru
    Тогда смотреть тикеты на гитхабе. подобные ошибки уже были
    https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+m1
    Issues · 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
    @CYevhenii #226168 04:31 PM, 12 Jul 2021
    Здравствуйте, можно ли сделать так что бы в случае недоступности одной из таблиц, таблица distributed смотрела на реплику недоступной таблицы?
  • она и так же это делает, когда реплика в дауне
  • https://t.me/clickhouse_ru
    @dmitriynvkv #226170 04:35 PM, 12 Jul 2021
    вроде должна сама да
  • https://t.me/clickhouse_ru
    @metelitsaa #226171 04:45 PM, 12 Jul 2021
    Здравствуйте! Существует большое количество словарей с типом подключения PostgreSQL, есть ли возможность вынести часть общих настроек подключения (адрес, порт, логин/пароль и т.д) в какой то общий конфиг, чтобы в случае изменения к примеру данных учетки не пришлось править в каждом словаре отдельно?
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/22471

    https://github.com/ClickHouse/ClickHouse/pull/23424
    Пока только ждать
    Explicit secret management in ClickHouse · Issue #22471 · ClickHouse/ClickHouse

    Use case Passwords/connection data scattered in different parts of the system is difficult/impossible to reuse in other contexts, which is why the same connection data can appear repeatedly in diff...

  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    Можно еще include_from/incl использовать, но почему-то это плохо документированно. Пароли при этом открытые, но в одном файле
  • https://t.me/clickhouse_ru
    похоже то что нужно, спасибо!
  • https://t.me/clickhouse_ru
    @andrew_kole #226176 05:16 PM, 12 Jul 2021
    подскажите, а все вычисления с массивами выполняются в одном потоке? почти все время используется только 1 ядро
    пример:
  • https://t.me/clickhouse_ru
    @andrew_kole #226177 05:18 PM, 12 Jul 2021
    хотя есть ключ по которому группируется intDiv(number , 100) as inter
    и можно выполнять все паралельно
  • https://t.me/clickhouse_ru
    При отключении одной из нод, distributed таблица становится недоступная для селекта, при этом инсерты идут
  • а если "settings skip_unavailable_shards=1 " ?
  • @62444746 #226180 05:37 PM, 12 Jul 2021
    Привет. Вопрос про изменение большого количества данных и мутациям.

    Необходимо изменить существенное количество данных (40к записей).

    Была попытка сделать это одной большой мутацией, мутация по тестам занимает 5+ дней, все это время наблюдается сильно повышенная нагрузка, на проде такое не подходит.
    При запуске 40к мутаций вместо одной ситуация примерно такая же, но нагрузка чуть ниже.

    При запуске мутаций пачками ситуация следущая: 100 мутаций - 20 минут, 1000 мутаций уже 5+ часов.

    Подскажите, пожалуйста, как лучше менять такое количество записей? Возможно есть какой-то бест-практис по количеству одновременно запущенных мутаций? <100 <10?
    Настройки СH дефолтные.
  • https://t.me/clickhouse_ru
    @dmitriynvkv #226181 05:41 PM, 12 Jul 2021
    40к мутаций??
  • https://t.me/clickhouse_ru
    @dmitriynvkv #226182 05:41 PM, 12 Jul 2021
    40к строк или мутаций?
  • @62444746 #226184 05:42 PM, 12 Jul 2021
    Нужно изменить 40к строк, для этого можно сделать 40к альтеров, либо все это в один альтер
    Получается, что 40к записей = 40к мутаций
  • @62444746 #226185 05:42 PM, 12 Jul 2021
    Можно так же пачками по какому-то количеству, но по тестам разницы особой нет
  • https://t.me/clickhouse_ru
    1. Можно попробовать объединить мутацию по принципу затрагивания одной партиции.
    2. Создать новую колонку с дефолтным значением равным старой колонке или новое значение. Потом старую удалить. Новую переименовать в старую.
    3. Дропнуть старые строки и заинсертить новые изменённые.
  • https://t.me/clickhouse_ru
    Сколько у вас всего строк?
  • https://t.me/clickhouse_ru
    Возможно у вас кривые запросы на обновление или ддя поиска этих записей используются индексы, а при мутациях индексы вроде не используются и поэтому эти 40к записей тупо могут долго искаться.
  • Строк 2+ миллиардов. Спасибо за идеи, все потестируем.
  • Про индексы, да, они действительно используются и судя по логам мутации выполняются так долго из-за продолжительного скана.
  • @62444746 #226191 06:11 PM, 12 Jul 2021
    Получается, что если запросы нельзя оптимизировать без использования индексов, а вариант с колонками не подходит из-за того, что значений в колонке может быть много. То остается только вариант с перезаливкой данных в новую таблицу?
  • https://t.me/clickhouse_ru
    > Необходимо изменить существенное количество данных (40к записей).

    40к это скок в таблице строк?

    https://kb.altinity.com/altinity-kb-queries-and-syntax/update-via-dictionary
  • https://t.me/clickhouse_ru
    на основе индексов вычисляете order by, а потом добавляете это условие, чтобы апдейты быстрее искались
  • Спасибо!
  • Строк 2+ миллиардов. Спасибо, вариант с dictionary также изучим.
  • @Nvarchar495 #226197 10:45 PM, 12 Jul 2021
    Доброй ночи!

    пытаюсь подключиться к ch
    взял последнюю версию https://github.com/ClickHouse/clickhouse-jdbc/releases/tag/v0.3.1-patch
    и получаю ошибку
    for 1 sec: java.lang.NoClassDefFoundError: org/apache/http/conn/DnsResolver

    Скажите пожалуйста, чего ему еще не хватает?
    Release Release v0.3.1-patch · ClickHouse/clickhouse-jdbc

    This is a patch release for fixing below critical issues introduced in previous release. incorrect database was used in DDL - see issue #648 batch insert without any parameter didn't work - se...

  • https://t.me/clickhouse_ru
    Надо брать полный jar - 5мб. который. Shaded
  • Благодарю! 🤝
  • 13 July 2021 (105 messages)
  • https://t.me/clickhouse_ru
    Спасибо.
    отписал в https://github.com/ClickHouse/ClickHouse/issues/21191, посмотрим, ответят ли в закрытый.
  • https://t.me/clickhouse_ru
    а как запрос выглядит?

    есть возможность еще диск подключить и сделать JBOD storage policy и в ручную парты ALTER TABLE ... MOVE PART ?
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-multiple-volumes_configure

    потом сделать второй сервер...
    с отдельным шардом
    и сделать ReplicatedMergeTree

    сбалансировать входящий трафик на чтение и запись после того как реплику синхронизируете...
    MergeTree | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @baltazorbest #226202 06:18 AM, 13 Jul 2021
    Приветствую. Подскажите пожалуйста, если делать запрос:
    select * from system.zookeeper where path = '/clickhouse/task_queue/ddl';

    должно ли тут возвращать пустоту или же старые запросы которые зависали то же тут будут показываться?
  • это правда? даже для VersionedCollapsing? в доке вроде "VersionedCollapsingMergeTree предназначен для тех же задач, что и CollapsingMergeTree, но использует другой алгоритм свёртывания, который позволяет вставлять данные в любом порядке в несколько потоков." или речь не об этом?
  • @619428358 #226205 07:19 AM, 13 Jul 2021
    Привет, подскажите пожалуйста, нужно удалить несколько больших таблиц. На max_table_size_to_drop и max_partition_size_to_drop ругается что нет таких параметров. Файл force_drop_table пропадает после первого удаления
  • @619428358 #226206 07:21 AM, 13 Jul 2021
    ClickHouse server version 21.3.2.5 (official build).
  • А где вы пытаетесь установить значение для настроек? И как он ругается?
  • в users.xml profiles->default->max_table_size_to_drop

    [ 50 ] {} <Error> Application: DB::Exception: Unknown setting max_table_size_to_drop
  • @619428358 #226209 07:45 AM, 13 Jul 2021
    также из partition
    [ 50 ] {} <Error> Application: DB::Exception: Unknown setting max_partition_size_to_drop
  • @619428358 #226210 07:46 AM, 13 Jul 2021
    Dockerfile:
    FROM yandex/clickhouse-server:21.3.2.5

    COPY docker_related_config.xml /etc/clickhouse-server/config.d/
    COPY ./users.xml /etc/clickhouse-server/users.xml
    RUN chown clickhouse /etc/clickhouse-server/config.d/docker_related_config.xml && \
    chown clickhouse /etc/clickhouse-server/users.xml

    EXPOSE 9000 8123 9009
  • эта настройка для файла config.xml
  • эта тоже
  • @619428358 #226213 07:46 AM, 13 Jul 2021
    понятно, спасибо, попробую, а то я думал чтото с версией не то
  • она даже имеет параметры по умолчанию, можете по поиску ее найти и изменить
  • @619428358 #226215 07:49 AM, 13 Jul 2021
    есть, спасибо большое!
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #226203 #226216 07:52 AM, 13 Jul 2021
    С VersionedCMT не работал, тут не подскажу.
  • последовательность 1/-1 не важна, сделайте тест и проверьте.
    все равно схлопнутся они в неизвестный момент времени, нужен final или агрегация.
  • https://t.me/clickhouse_ru
    @tedm24 #226218 08:27 AM, 13 Jul 2021
    Всем привет! А подскажите, пожалуйста, может ли clickhouse ходить в zookeeper по ssl ? Есть zookeeper(v3.6.2) со включенным tls, и clickhouse который в него ходит. Последний ругается, что не может ходить в zookeeper, первый что в него прилетают не валидные ssl запросы(
  • https://t.me/clickhouse_ru
    @ployd #226219 08:28 AM, 13 Jul 2021
    Подскажите, может есть -OrDefault, но только с указанием значения?
  • coalesce не подойдет?
  • https://t.me/clickhouse_ru
    @hostadminonline #226221 08:43 AM, 13 Jul 2021
    добрый день
    подскажите, http_zlib_compression_level .... чем больше значение тем выше сжатие ?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #226220 #226222 08:43 AM, 13 Jul 2021
    Похоже подходит. Спасибо!
  • у zlib вроде бы на 1 лучшая скорость, а на 9 лучшее сжатие(соответственно аффектит скорость). У них в доке где-то было это дело, посмотрите.
    Мб еще кто-то подскажет
  • https://t.me/clickhouse_ru
    @unamedrus #226224 08:48 AM, 13 Jul 2021
    Обычно не имеет смысл идти дальше 1-3
  • https://t.me/clickhouse_ru
    @hostadminonline #226225 08:48 AM, 13 Jul 2021
    спасибо .... да вроде всегда было так ... но я что-то усомнился
  • https://t.me/clickhouse_ru
    @1675646290 #226226 08:53 AM, 13 Jul 2021
    Добрый день. Подскажите порядок действий чтоб переместить каталог с данными clickhouse ? Я остановил сервер, изменил путь в файле config.xml и скопировал содержимое /var/lib/clickhouse в новое место... но сервер не стартует
  • https://t.me/clickhouse_ru
    овнер у папки какой и что кх в логах пишет?
  • https://t.me/clickhouse_ru
    Овнер root... по логам щас скажу пока долистаю
  • https://t.me/clickhouse_ru
    а должен быть clickhouse:clickhouse
  • https://t.me/clickhouse_ru
    @rvkggwp #226230 08:58 AM, 13 Jul 2021
    Всем привет. Использую engine = Kafka, kafka_format = 'JSONEachRow'. Вопрос - можно ли сделать так, чтобы если в JSON было лишнее поле, то данные все равно вставились бы, а это поле просто проигнорировалось? Лишнее поле - поле которое не определено в структуре таблицы.
  • https://t.me/clickhouse_ru
    Спасибо.
  • https://t.me/clickhouse_ru
    Да

    input_format_skip_unknown_fields
  • https://t.me/clickhouse_ru
    спасибо большое, ларчик просто открывался))
  • https://t.me/clickhouse_ru
    @irina_zakharovaa #226236 09:40 AM, 13 Jul 2021
    Привет! Подскажите, пожалуйста, как добавить поле в таблицу типа ENGINE = Join?
  • alter вроде бы не работает для join движков.
    пересозданием, вероятно
  • https://t.me/clickhouse_ru
    @seriych #226239 10:17 AM, 13 Jul 2021
    Привет. Есть несколько похожих таблиц, и я делаю вью (не материализованное) для их объединения через union all. В исходных таблицах есть enum колонки с немного разными наборами. Имеет ли смысл их объединять, приведя прямо в запросе к типу LowCardinality(String), или разницы с просто toString не будет, если прямо в запросе к LowCardinality пытаться приводить?
    Ну и аналогичный вопрос, если исходные колонки - это просто String, но известно, что уникальных значений немного. То есть кастить к enum не получится, ибо в исходных таблицах набор может меняться. Словари тоже пока не подходят, хочется уметь быстро генерить вьюхи без дополнительных сущностей.
  • https://t.me/clickhouse_ru
    @seriych #226240 10:17 AM, 13 Jul 2021
    И в процессе обнаружилась такая странность с LowCardinality, что оно читает больше данных, чем string или enum, если фильтровать но нему:

    select count() from (
    select 'test1' as test, number
    from system.numbers
    where test = 'test1'
    limit 1000
    ) settings max_block_size = 5000, max_threads = 4;
    -- Processed 1.00 thousand rows

    select count() from (
    select cast('test1', 'Enum8(\'test1\' = 0)') as test, number
    from system.numbers
    where test = 'test1'
    limit 1000
    ) settings max_block_size = 5000, max_threads = 4;
    -- Processed 1.00 thousand rows

    select count() from (
    select cast('test1', 'LowCardinality(String)') as test, number
    from system.numbers
    where test = 'test1'
    limit 1000
    ) settings max_block_size = 5000, max_threads = 4;
    -- Processed 5.00 thousand rows

    select count() from (
    select toLowCardinality('test1') as test, number
    from system.numbers
    where test = 'test1'
    limit 1000
    ) settings max_block_size = 5000, max_threads = 4;
    -- Processed 5.00 thousand rows

    Это не баг, а фича, как обычно? :-)
    v21.3.10.1
  • https://t.me/clickhouse_ru
    @dsv_ringostat #226241 10:30 AM, 13 Jul 2021
    Добрый день! Подскажите пожалуйста
    При копировании clickhouse-backup upload 2021-07-13T10-19-50 на s3 бакет возникает ошибка fatal error: runtime: out of memory в чем может быть проблема?
  • https://t.me/clickhouse_ru
    @ployd #226242 10:31 AM, 13 Jul 2021
    POPULATE не работает, когда MV и таблица создаются отдельно и используется форма с TO. Есть ли варианты без дублирования запроса?
  • https://t.me/clickhouse_ru
    тут вряд ли подскажут, это внешний, не яндексовый, чат
  • https://t.me/clickhouse_ru
    @abaghyan #226245 11:02 AM, 13 Jul 2021
    понял, спасибо)
  • @1789158330 #226246 11:30 AM, 13 Jul 2021
    Всем привет! Подскажите, пожалуйста, поддерживает ли Clickhouse для оконных функций ignore nulls или нет?
  • https://t.me/clickhouse_ru
    глядя на код тестов
    https://github.com/ClickHouse/ClickHouse/blob/master/tests/queries/0_stateless/01591_window_functions.sql

    кажется нет, не поддерживает
    ClickHouse/01591_window_functions.sql at master · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226239 #226248 11:40 AM, 13 Jul 2021
    Как я понимаю, LowCardinality экономит только диск и IOPS. Если все уже полняли в память, то разницы особой не должно быть, так что я бы не заморачивался и объединял все в простых String.
    Особенность с 5000 в приципе понятна, просили 5000 строк считать через max_block_size - вот и получили. Интересно как оно оптимизирует до 1000 в простых случаях с целыми числами.
  • Планируется ли добавить? Или по старинке надо юзать массивы при необходимости скажем посчитать в окне lead/lag value, учитывая что в окне есть Null-values, так?
  • https://t.me/clickhouse_ru
    надо пушить, прямо вот о планах "здесь и сейчас" не знаю
    вы все таки попробуйте, может получится
    использовать лучше postgres синтаксис

    если нет, то заведите issue на github с примерами запросов и таблиц
  • https://t.me/clickhouse_ru
    Если в настоящей таблице LowCardinality, то оно же "поднимает" в память не строки, а словарик и работает с числами
  • @KevinMort #226252 11:47 AM, 13 Jul 2021
    Всем привет! Можно ли с помощью движка postgresql клонировать таблицу со всей структурой в clickhouse?
  • Понял, спасибо, заведу issue
  • https://t.me/clickhouse_ru
    MaterializedPostgreSQL | ClickHouse Documentation

    MaterializedPostgreSQL Creates ClickHouse table with an initial data dump of PostgreSQL table and starts replication pro

  • Спасибо!
  • https://t.me/clickhouse_ru
    @Pok_pok_pok #226257 01:02 PM, 13 Jul 2021
    Привет, как лучше реализовать поиск по md5 хешу?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226251 #226258 01:02 PM, 13 Jul 2021
    Понятно что можно работать с числами когда нужно сделать group by, а обратный индекс поможет для сравнения числа в словаре со строковой константой. Но как сравнить строки в виде чисел в разных словарях или объединить два словаря (ваш случай) без превращения их в строки?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226257 #226259 01:08 PM, 13 Jul 2021
    ваш вопрос черезмерно краток, но я могу предположить что вам помогут функции для работы с массивами.
  • https://t.me/clickhouse_ru
    @Pok_pok_pok #226260 01:11 PM, 13 Jul 2021
    Ладно, уточню, у меня есть идентификатор пользователя, который нужно хранить в базе и делать по нему поиск. Так исторически сложилось что это md5. Как ускорить поиск, или сохранить иначе этот хэш, чтобы поиск происходил быстрее?
  • https://t.me/clickhouse_ru
    можно сохранить байтиками в FixedString
  • https://t.me/clickhouse_ru
    @nyoroon #226262 01:12 PM, 13 Jul 2021
    но упираться всёравно будет в чтение с диска
  • https://t.me/clickhouse_ru
    @bvt123 #226263 01:14 PM, 13 Jul 2021
    а что плохого в md5? Прекрасный простой хеш. Важно понять какой размер этого хеша. Если вдруг влезет в UInt64 - можно ускорить. Если нет - просто поиск по строкам - делайте order by таблицы по этому полю и все будет быстро
  • https://t.me/clickhouse_ru
    в FixedString и попробовать bloom filter индекс натравить на эту колонку, но то что это сильно поможет не обещаетя
  • https://t.me/clickhouse_ru
    Перевести md5 в десятичный вид?
  • https://t.me/clickhouse_ru
    bloom skip index поможет только если эти хешики достаточно редко повторяются
  • https://t.me/clickhouse_ru
    у md5 размер 16 байт, он не влезет в 64 бита
  • https://t.me/clickhouse_ru
    @unamedrus #226268 01:16 PM, 13 Jul 2021
    Да, конечно

    Я почему то подумал, что пользователи там уникальные будут
  • https://t.me/clickhouse_ru
    @Pok_pok_pok #226269 01:19 PM, 13 Jul 2021
    А если попробовать добавить колонку с sipHash64 от md5 и забросить ее в индекс?
  • https://t.me/clickhouse_ru
    IMHO нормально никак, clickhouse для этого плохо подходит
    это связано прежде

    если есть возможность вместо md5 сделать какой нибудь snowflake-id - int64 будет получше
    но тоже, сильно зависит от того насколько эти ваши ID монотонно возрастают в ваших данных по времени...
  • https://t.me/clickhouse_ru
    @bvt123 #226273 03:28 PM, 13 Jul 2021
    пользуюсь табличной функцией cluster для чтения system.query_log со всех нод сразу. Может быть там есть какой-то тайный _столбец, который покажет имя ноды?
    select query_start_time as ts,
    query_duration_ms as dur, read_rows, memory_usage, query
    from cluster('dc2', system, query_log)
    where event_date > now() - INTERVAL 1 day
    order by ts desc
  • https://t.me/clickhouse_ru
    hostName()
  • https://t.me/clickhouse_ru
    есть функция hostName()
  • https://t.me/clickhouse_ru
    лучше использовать функцию clusterAllReplicas если у вас в шарде больше одной реплики
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226276 #226277 03:45 PM, 13 Jul 2021
    а это точно работает для Replicated?
  • https://t.me/clickhouse_ru
    query_log не реплицируется, или я вопрос не понял
  • https://t.me/clickhouse_ru
    @bvt123 #226279 03:49 PM, 13 Jul 2021
    Я хочу мониторить одним запросом все query_log кластера.
    как я понял суть табличных функций cluster/clusterAllReplicas - обратиться сразу ко всем узлам кластера, без создания distributed/replicated таблиц. Я и обращаюсь. cluster работает, но hostName() дает только себя, clusterAllReplicas спотыкается на авторизации к другому узлу кластера
  • https://t.me/clickhouse_ru
    @zholmyrza_t #226280 04:34 PM, 13 Jul 2021
    всем привет, кто нибудь использует chproxy? почему при подключении http клиента к chproxy выдает ошибку
    http connections are not allowed from 0.0.0.0:...
  • @rikkir ↶ Reply to #62104 #226281 04:44 PM, 13 Jul 2021
    красава, спасибо!
  • https://t.me/clickhouse_ru
    ну можно было просто IP прописать без хождения в /etc/hosts
  • https://t.me/clickhouse_ru
    Не. Тоже была проблема
  • https://t.me/clickhouse_ru
    @dsv_ringostat #226284 04:51 PM, 13 Jul 2021
    Но лучше домены реальные заводить
  • https://t.me/clickhouse_ru
    вот, подвезли сегодня
    https://github.com/ClickHouse/ClickHouse/pull/24206

    ждите в следующих релизах, пока только в мастере
    Data encryption on VFS level by alexelex · Pull Request #24206 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Вау, отличная новость, спасибо!
  • https://t.me/clickhouse_ru
    @dedushka_mao #226287 05:49 PM, 13 Jul 2021
    Коллеги, подскажите, как может такое получиться:
    select avg(price) from table => 69,99
    insert into new_table select avg(price) from table
    select price from new_table => 69,98

    тип столбца в обоих таблицах Decimal(10, 2)
  • https://t.me/clickhouse_ru
    а если посчитать
    sum(price), count() FROM table;
    sum(price), count() FROM new_table;
  • https://t.me/clickhouse_ru
    Там не может быть проблемы в том, что avg всегда возвращает float64?
  • https://t.me/clickhouse_ru
    Может, поэтому я и попросил посчитать сумму и каунт
  • https://t.me/clickhouse_ru
    909.87 | 13
    769.78 | 11
  • https://t.me/clickhouse_ru
    @unamedrus #226292 06:09 PM, 13 Jul 2021
    Какой движок таблицы новой?
  • https://t.me/clickhouse_ru
    @dedushka_mao #226293 06:10 PM, 13 Jul 2021
    MergeTree
  • https://t.me/clickhouse_ru
    @unamedrus #226294 06:12 PM, 13 Jul 2021
    А, я не сразу сообразил
    Вы в новую таблицу вставляете уже среднее

    SELECT CAST(CAST('69.99', 'Float64'), 'Decimal64(2)') AS x

    ┌─────x─┐
    │ 69.98 │
    └───────┘
  • https://t.me/clickhouse_ru
    @unamedrus #226295 06:12 PM, 13 Jul 2021
    Ну вопрос в конвертации между float64 и Decimal
  • https://t.me/clickhouse_ru
    Спасибо, буду разбираться
  • https://t.me/clickhouse_ru
    @unamedrus #226297 06:15 PM, 13 Jul 2021
    SELECT CAST(CAST('69.99', 'Float64'), 'Decimal128(30)') AS x

    ┌─────────────────────────────────x─┐
    │ 69.989999999999580022705340869995 │
    └───────────────────────────────────┘

    SELECT CAST(CAST('69.99', 'Float64'), 'Decimal128(3)') AS x

    ┌──────x─┐
    │ 69.990 │
    └────────┘
  • https://t.me/clickhouse_ru
    Там что-то странное творится, если честно:

    SELECT toDecimal64(CAST('69.99', 'Float64'), 2)

    Query id: 5cccf2bb-320c-4985-a864-c9e966d5a7bb

    ┌─toDecimal64(CAST('69.99', 'Float64'), 2)─┐
    │ 69.98 │
    └──────────────────────────────────────────┘

    SELECT toDecimal64(CAST('69.99', 'Float64'), 3)

    Query id: ef4a14c8-2c3e-4237-9617-cea6f6041704

    ┌─toDecimal64(CAST('69.99', 'Float64'), 3)─┐
    │ 69.990 │
    └──────────────────────────────────────────┘

    SELECT toDecimal64(CAST('69.99', 'Float64'), 5)

    Query id: 166b3af1-21a7-4075-8095-5a351e1f92ad

    ┌─toDecimal64(CAST('69.99', 'Float64'), 5)─┐
    │ 69.98999 │
    └──────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @vchernyshev #226299 06:19 PM, 13 Jul 2021
    Мне непонятно, оно обрезает числа или округляет.
  • https://t.me/clickhouse_ru
    кто? Decimal? Обрезает, или округляет вниз. Поэтому хранить Decimal до двух знаков - такое себе. И при вставке констант будет такая же история. Вставите 69,99, запишется 69,98
  • https://t.me/clickhouse_ru
    @unamedrus #226301 06:23 PM, 13 Jul 2021
    Ну если вставляются честные 69.99 то не будет такой истории, тут же дело в том, что в float на самом деле 69.98...
  • https://t.me/clickhouse_ru
    а каким образом вставить "честные" 69,99?
  • https://t.me/clickhouse_ru
    в строке
    '69.99'
  • https://t.me/clickhouse_ru
    @seriych #226304 06:26 PM, 13 Jul 2021
    а что, так можно было...
  • https://t.me/clickhouse_ru
    А кто запрещает?

    echo "'string','69.99'," | clickhouse-local -S "user String, price Decimal64(2)" -q "SELECT * FROM table" --input-format CSV
    string 69.99
  • https://t.me/clickhouse_ru
    Я бы тогда при запросе трёх знаков после точки ожидал бы увидеть 68.989, но в этом случае результат округляется. Поведение, получается, не всегда одно и то же. Но вообще да, перевод Float64 в Decimal это так себе идея, всё равно проблемы вылезут.
  • https://t.me/clickhouse_ru
    А как кластер сконфигурирован? Там пользователь-пароль прописан?
  • https://t.me/clickhouse_ru
    Неожиданно, спасибо!
  • https://t.me/clickhouse_ru
    @vchernyshev #226311 09:06 PM, 13 Jul 2021
    А подскажите, чем нужно руководствоваться при выборе sharding key для distributed таблиц? Допустим, что есть таблица со следующими колонками:

    date Date
    entity_id UUID
    bucket_timestamp DateTime('UTC')
    measure_a UInt64
    measure_b Decimal(18, 2)
    Используется PARTITION BY toYYYYMM(date). Мне кажется логичным сделать шардирование по entity_id. Есть какие-то ситуации, в которых имело бы смысл, допустим, ещё и date учитывать для разнесения данных одной сущности по нескольким серверам?
  • Исходить нужно из селектов которые будут выполняться. Может вы будете вычислять агрегаты за 5 минут по всем entity, кто ж знает
  • @Nvarchar495 #226313 09:21 PM, 13 Jul 2021
    Доброй ночи!
    получаю ошибку при вставке в кликхаус
    ailed to disable auto commit due to java.sql.SQLFeatureNotSupportedException: Transactions are not supported

    Что то с настройкой драйвера или движка atomic?
  • https://t.me/clickhouse_ru
    Запросы в основном для одной entity_id, но затрагивают очень много дней. Сейчас уже к серверу подключиться не могу для тестов, поэтому накалякаю пример на коленке. Что-то вроде такого:

    select
    bucket,
    sum(measure_a) / count(distinct date) as result
    from
    table
    where
    toYear(date) = 2020
    and entity_id = <...>
    group by
    toStartOfInterval(toTime(bucket_timestamp, 'America/New_York'), interval 15 seconds) as bucket
    order by
    bucket
    То есть внутри одного дня бакеты схлопываются до заданной пользователем точности и потом вычисляется среднее значение за год.
  • 14 July 2021 (190 messages)
  • @KevinMort #226318 02:09 AM, 14 Jul 2021
    Можно ли с помощью движка postgresql клонировать базу данных со всеми таблицами и со всей структурой в clickhouse из нужной схемы?
  • https://t.me/clickhouse_ru
    @Caside #226320 05:09 AM, 14 Jul 2021
    Добрый день!
    Пытаюсь заимпортить данные из CSV в таблицу через dbeaver.
    В данных есть колонка стринговая, в которой могут содержаться и табуляции и запятые.
    Пробовал импортировать и как CSV и как TSV - результат один, сам CH не может правильно распарсить колонку и пытается часть стринговой колонки засунуть в другие.
    Как быть?
  • https://t.me/clickhouse_ru
    @Alexey_037 #226321 05:11 AM, 14 Jul 2021
    обернуть все строки кавычками?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #226321 #226322 05:12 AM, 14 Jul 2021
    И после импорта в таблице данные будут уже без ковычек?
  • https://t.me/clickhouse_ru
    @Caside #226323 05:12 AM, 14 Jul 2021
    И без разницы одинарные или двойные?
  • https://t.me/clickhouse_ru
    @Alexey_037 #226324 05:13 AM, 14 Jul 2021
    Это как настроить в dbeaver
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Caside #226326 05:13 AM, 14 Jul 2021
    Окс, попробуемс
  • https://t.me/clickhouse_ru
    Да. Предварительно можно в мастере импорта посмотреть на результат.
  • https://t.me/clickhouse_ru
    @Alexey_037 #226328 05:16 AM, 14 Jul 2021
    А вообще, если беда только в запятые и табах, то проще всего переделать CSV, чтобы разделитель был редкий, типа |, указать в мастере импорта dbeaver, и тогда и кавычки не нужны.
  • https://t.me/clickhouse_ru
    завести issue в dbeaver на github

    выгрузить таблицу в CSV
    попробовать загрузить через clickhouse-client
  • https://t.me/clickhouse_ru
    @Alexey_037 #226330 05:29 AM, 14 Jul 2021
    А зачем issue? Верное поведение dbeaver, если в качестве разделителя стоит запятая, а в столбце также есть запятые. Просто разделитель надо сменить.
  • https://t.me/clickhouse_ru
    ну тогда еще и в dbeaver надо настроить чтобы кавычки делал правильно если разделитель есть в данных...
  • https://t.me/clickhouse_ru
    @skirpichenok #226333 07:25 AM, 14 Jul 2021
    Привет. Я уже говорил что ORDER BY во view definition работает ок и использует индекс, а если испольовать ORDER BY outside view definition - то индексы не используются. Видимо похожая проблема и с FINAL:

    CREATE VIEW MY_VIEW AS
    SELECT ... FROM TABLE FINAL ORDER BY ... <— не использует индекс и работает медленно если использую ORDER BY

    это планируется исправить?
  • https://t.me/clickhouse_ru
    @TrFury #226334 07:28 AM, 14 Jul 2021
    Всем доброго дня) Пытаюсь получить среднее значение ответа от поставщика, запрос на скрине. Но получаю данные намного меньше ожидаемых. Такой вопрос, в какую сторону смотреть, какую конкретно допустил ошибку.
  • https://t.me/clickhouse_ru
    кажется руки дойдут не скоро
    вы уже подписаны на
    https://github.com/ClickHouse/ClickHouse/issues/25418
    так что остается только пушить время от времени на митапах
    или пытаться пофиксить самому если есть знания...
    view optimisation · Issue #25418 · ClickHouse/ClickHouse

    Describe the situation CREATE VIEW v1 AS SELECT * FROM t1 FINAL SELECT * FROM v1 WHERE date = today() is too slow. Expected performance If a column in view and in table is the same - it needs to do...

  • https://t.me/clickhouse_ru
    на первый взгляд все выглядит ОК
    кликните в "Generated SQL"
    и выполните его в clickhouse-client
    посмотрите на ваши данные...

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

    там в тикете, судя по всему проблема в том что WHERE внутрь VIEW не прокидывается

    и соответственно у вас FINAL применяется не для части данных из TABLE
    а для всей TABLE как есть
    что естественно очень дорого
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #226336 #226338 08:03 AM, 14 Jul 2021
    Вывод вот такой
  • @geneque #226339 08:08 AM, 14 Jul 2021
    так и на графиках это же изображено, нет?
  • https://t.me/clickhouse_ru
    так, а какой вы Unit в закладке Field в правой панели выставили? случано не ms ?
  • https://t.me/clickhouse_ru
    там 2 секунды
  • https://t.me/clickhouse_ru
    @TrFury ↶ Reply to #226340 #226342 08:14 AM, 14 Jul 2021
    Да, ms выбрал
  • @geneque #226343 08:16 AM, 14 Jul 2021
    ну я на графике вижу в основном все чуть выше секунды, и в списке везде примерно по 1100
  • https://t.me/clickhouse_ru
    @Caside #226344 08:19 AM, 14 Jul 2021
    Почему результат запроса может быть без заголовков колонок?
    Запрос отработал правильно, но вместо заголовков идут значения колонок в 1-й строке результата
  • https://t.me/clickhouse_ru
    @combot #226346 b o t 08:23 AM, 14 Jul 2021
    Total messages: 226345
  • https://t.me/clickhouse_ru
    @TrFury #226347 08:31 AM, 14 Jul 2021
    Всё, разобрался, спасибо всем за помощь)
  • https://t.me/clickhouse_ru
    Видимо да. Хотелось бы повысить как то приоритет. Или пофиксить в скором будущем :)
  • https://t.me/clickhouse_ru
    @lockkie #226349 08:57 AM, 14 Jul 2021
    Привет. Подскажите, можно ли при создании роли указать для нее существующую квоту?
  • https://t.me/clickhouse_ru
    результат в каком клиенте делается? для какого языка?

    в запросе случайно
    FORMAT CSV
    не стоит?
  • https://t.me/clickhouse_ru
    @almorgv #226351 09:09 AM, 14 Jul 2021
    Можно ли выключить результаты в дебаг логах, когда стоит send_logs_level='debug'? Нужно посмотреть, как работают skip индексы, но логи улетают быстрее, когда в них пишутся результаты
  • https://t.me/clickhouse_ru
    FORMAT Null
    добавьте, результатов не будет
    а все остальное должно быть точно такое же
  • @cyberkexx #226353 09:29 AM, 14 Jul 2021
    Коллеги, подскажите, пожалуйста, про сохранение состояния агрегатных функций. Есть столбец типа AggregateFunction, запись в него делается с помощью, например, uniqState. При этом uniqMerge, помимо собственно объединения нескольких состояний, осуществляет также получение значение агрегата. Какой функцией нужно пользоваться, если хочется (например, для многоступенчатой агрегации) получить просто объединение состояний, с возможностью записать его в столбец типа AggregateFunction?
  • https://t.me/clickhouse_ru
    -MergeState
  • Спасибо, то что нужно
  • https://t.me/clickhouse_ru
    @OrNixx #226356 09:37 AM, 14 Jul 2021
    всем привет. готовлю КХ для преобразования в реплицируемые таблицы. прописал в конфиге 3 ноды зукипера. Прилетел алерт от заббикса:

    ClickHouse: Too many ZooKeeper sessions opened (2 sessions).

    Откуда берётся 2я сессия, и проблема ли это? Реплицированных таблиц ещё нет
  • zookeper в ансамбле?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226357 #226358 09:46 AM, 14 Jul 2021
    Кластер из 3 нод. Лидер и 2 фолловера
  • https://t.me/clickhouse_ru
    @Keks1k #226359 10:06 AM, 14 Jul 2021
    Добрый день, после обновления кх с 21.4 на 21.7, заметил, что после удаления таблиц с движком RabbitMQ, так же теперь удаляется и очередь, которая указана в rabbitmq_queue_base, не подскажите можно ли сделать так, чтобы она оставалась?
  • https://t.me/clickhouse_ru
    @forward32 #226360 10:13 AM, 14 Jul 2021
    Привет!
    Кто юзает go-migrate с CH? Как добиваетесь того, чтобы на всех нодах была таблица с миграциями и она была заполнена? Какие best practice?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cp1251 ↶ Reply to #226359 #226362 10:14 AM, 14 Jul 2021
    0_o. Действительно нежданчик
  • https://t.me/clickhouse_ru
    ZK сервера в кластере сами по себе? кофиг zookeeper содержит
    все как надо ??
    server.1=
    server.2=
    server.3= есть ??
  • https://t.me/clickhouse_ru
    Спасибо, да, такой вариант и придумали!
  • @githubreleases_bot #226365 b o t 10:17 AM, 14 Jul 2021
    ClickHouse/ClickHouse description changed: v21.7.3.14-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.7.3.14-stable
    Release notes:
    ClickHouse stable release v21.7.3.14-stable
    Release v21.7.3.14-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.7.3.14-stable

  • https://t.me/clickhouse_ru
    два варианта

    1) не использовать ON CLUSTER в SQL...
    и для реплицируемых таблиц писать ALTER TABLE ... ADD COLUMN IF NOT EXISTS и т.п.

    2) либо использовать ON CLUSTER всегда
    и запускать миграции ТОЛЬКО на одной ноде (любой)
    а default.migration_schema создавать самому с Engine=ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226363 #226367 10:24 AM, 14 Jul 2021
    ну да,

    server.1=zoo1:2888:3888
    server.2=zoo2:2888:3888
    server.3=zoo3:2888:3888
  • https://t.me/clickhouse_ru
    SELECT * FROM system.macros
    показывает разные replica для одинаковых shard на всех нодах? или есть повторения?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226369 #226370 10:38 AM, 14 Jul 2021
    replica │ ch1 на одном
    replica │ ch2 на втором
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #216973 #226372 10:49 AM, 14 Jul 2021
    Приветствую!
    Разобралася как с помощью оператора изменить remote_servers ?
  • https://t.me/clickhouse_ru
    оператор сам генерирует remote_servers и пишет его в /etc/clickhouse-server/config.d/
  • https://t.me/clickhouse_ru
    а версия clickhouse какая?
    и откуда брали Zabbix Template? официальный шаблон использовали?
    да , в нашем на сессии триггера нет

    вообще ошибка из разряда "такой точно быть не должно"

    https://github.com/ClickHouse/ClickHouse/search?q=ZooKeeperSession

    покажите что у вас в xml файлах в <zookeeper> прописано?
    Search · ZooKeeperSession · 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
    @kk_dev ↶ Reply to #226373 #226375 11:27 AM, 14 Jul 2021
    У меня собственно возникла эта ошибка , соотвественно нужно внести изменение в remote_user на сколько я понимаю. Пытаюсь понять как это сделать, если работать с оператором
    Solyar in ClickHouse не тормозит

    Почему-то при обращении к distributed таблицам получаю ошибку: DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. При этом пользователь может залогинится в систему и выполнять DDL запросы. Именно на distributed таблицу получаю такую ошибку. В чём может быть проблема?

  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226374 #226376 11:27 AM, 14 Jul 2021
    <zookeeper>
    <node index="1">
    <host>10.1.0.103</host>
    <port>2181</port>
    </node>
    <node index="2">
    <host>10.2.1.95</host>
    <port>2181</port>
    </node>
    <node index="3">
    <host>10.252.0.101</host>
    <port>2181</port>
    </node>
    </zookeeper>

    <macros>
    <replica>ch1</replica>
    </macros>

    ClickHouse client version 20.12.8.5 (official build).
  • https://t.me/clickhouse_ru
    ну, вариантов несколько
    не прокидывается security context в distribtuted sub-query
    то есть вы законектились на сервер под одним юзером, а distributed sub-query до других шардов делается под другим (например default)

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

    одна из причин может быть в то, что для default юзера прописан host_regexp

    host_regexp работает так

    при TCP коннекте делается DNS запрос с типом PTR на TCP SRC IP, получаем обратный резолвинг доменного имени по IP
    дальше это имя сравнивамем по re2 паттерну

    kubectl exec -n your-chi-namespace chi-your-chi-name-cluster-name-0-0-0 -- grep -r host_regexp /etc/clickhouse-server/
    что возвращает?
  • @nibrag #226378 11:36 AM, 14 Jul 2021
    поскажите, плз, как скопировать базу на standalone сервере из db1 в db2?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226377 #226379 11:38 AM, 14 Jul 2021
    Вернуло это
    /etc/clickhouse-server/users.xml: <host_regexp> Regular expression for host names. Example, ^server\d\d-\d\d-\d\.yandex\.ru$
  • @softbot_xxl #226380 11:40 AM, 14 Jul 2021
    Есть Merge таблица, которая объединяет другие таблицы. Могут ли эти другие таблицы иметь одинаковую схему, но разные кодеки на колонках? Я пробую ужать данные, и мне интересно, не будет ли проблем.

    Старые таблицы (ReplicatedMergeTree) будут иметь старые кодеки, новые - новые.
  • https://t.me/clickhouse_ru
    Могут
  • Спасибо!
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226379 #226383 11:45 AM, 14 Jul 2021
    Не прописан, закомментирован текст
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226377 #226384 11:46 AM, 14 Jul 2021
    А как проверить первый момент , под каким юзером выполняется distributed sub-query ?

    Я законнектился под default юзером...
  • https://t.me/clickhouse_ru
    посмотрите users.xml
    этот самый yandex.ru у вас там закоментарен?

    тогда разбирайтесь какие у вас пользователи и какие для них ограничения по ip и network

    grep -r "<ip" /etc/clickhouse-server/
    grep -r "<network" /etc/clickhouse-server/
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226385 #226386 11:53 AM, 14 Jul 2021
    Под юзером demo та же история, но ему разрешено отовсюду...
    <yandex>
    <users>
    <demo>
    <networks>
    <ip>127.0.0.1</ip>
    <ip>0.0.0.0/0</ip>
    <ip>::/0</ip>
    </networks>
    <password_sha256_hex>ebf22d8bfa40cc5ae972270a06934f34056ea7227859ad7d39c6fe9c4b70f</password_sha256_hex>
    <profile>default</profile>
    <quota>default</quota>
    </demo>
    <default>
    <networks>
    <ip>127.0.0.1</ip>
    </networks>
    <password>default</password>
    <profile>default</profile>
    <quota>default</quota>
    </default>
    </users>
    </yandex>

    Ок, пойду дальше копать
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226372 #226387 11:58 AM, 14 Jul 2021
    У меня в общем-то получилось так что я засетапил себе кластер и для default юзера поставил пароль. Не знаю как это повлияло но я не мог селектить дистрибьютед таблицы, потом я снёс кластер, убрал пароль для default, поправил сетевые политики (regexp) и всё поехало
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226387 #226388 12:01 PM, 14 Jul 2021
    да, наблюдал у себя подобное поведение, но нужен более стабильный и повторяемый подход...

    В моем случае работало наоборот:
    Снес clickhouse, установил с дефолтными настройками юзера без пароля, накатил пароль и кажется заработало ...
    У меня еще ограничение для юзера default только с локальхоста, а новый юзер может откуда угодно подключаться.

    regexp у меня не включен.
  • https://t.me/clickhouse_ru
    @solard #226389 12:02 PM, 14 Jul 2021
    Ну я бы сразу сделал пароль для юзеров
  • https://t.me/clickhouse_ru
    в логи посмотреть /var/log/clickhouse-server/ на других нодах во время выполнения запроса к Distributed
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226377 #226391 12:04 PM, 14 Jul 2021
    каким setting'ом управляется будет или не будет прокидываться security context?
  • https://t.me/clickhouse_ru
    для default
    <ip>0.0.0.0/0</ip>
    попробуйте добавить
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226390 #226396 12:09 PM, 14 Jul 2021
    На других нодах нет записей об этом, а на текущей вот
    Сейчас попробую default юзеру разрешить из всех сетей..
    clickhouse-error - 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
    @MrRobot55 #226397 12:09 PM, 14 Jul 2021
    Подскажите, какую BI-систему лучше использовать для связки с clickhouse.
    Сейчас мы используем PowerBI + MSSQL server, но это становится дорого для масштабирования.

    PowerBI с кликхаусом работает только в режиме импорта, что не позволяет сделать сложные дашборды, которые за большой период делают рассчеты.
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226388 #226398 12:11 PM, 14 Jul 2021
    Я остановился на такой настройке для default:
    default/access_management: "1"
    default/networks/ip:
    - "0.0.0.0/0"
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226398 #226399 12:13 PM, 14 Jul 2021
    Хотел default ограничить только локальным дебагом, а нового использовать для подключений из вне...
    Ок, спс
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226398 #226400 12:14 PM, 14 Jul 2021
    С паролем ведь ?
  • https://t.me/clickhouse_ru
    недавно в tableau появился connector
    https://docs.altinity.com/integrations/clickhouse-and-tableau/tableau-desktop-with-clickhouse/
    Connect Tableau Desktop to ClickHouse

    Connect your Tableau Desktop application to ClickHouse

  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226392 #226402 12:16 PM, 14 Jul 2021
    Та же ошибка..
  • https://t.me/clickhouse_ru
    materialize(hostName())
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #226400 #226404 12:17 PM, 14 Jul 2021
    Без, пока отлаживаем
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226404 #226405 12:34 PM, 14 Jul 2021
    в чем тогда смысл этой настройки, если по умолчанию юзер default без пароля имеет доступ ко всему ?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226374 #226406 12:40 PM, 14 Jul 2021
    а насколько это вообще проблема, и нельзя ли забить?
  • https://t.me/clickhouse_ru
    @logast #226407 12:43 PM, 14 Jul 2021
    Привет, подскажите а этому queue вообще реально исполнится при таком объеме?

    2021.07.14 12:39:47.707916 [ 27 ] <Debug> ttttt.ltttt (ReplicatedMergeTreeQueue): Not executing log entry for part 20210209_20210212_9432_9540_2 because source parts size (5.23 GiB) is greater than the current maximum (4.45 MiB).
  • https://t.me/clickhouse_ru
    @unamedrus #226408 12:44 PM, 14 Jul 2021
    Это мерж, у вас просто другие мержи заняли место в пуле
  • Попробуйте metabase
  • https://t.me/clickhouse_ru
    Мы используем superset. Пробовали MetaBase, но не зашло, переключились на SuperSet. Он работаем как визуализатор, без импортов, прямым подключением к базе.
  • https://t.me/clickhouse_ru
    зукиперы сами открывают сессию (фолловеры)
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226413 #226414 12:51 PM, 14 Jul 2021
    т.е. ничего аномального, алерт можно дизаблить?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    так у вас пароль у default не пустой
  • https://t.me/clickhouse_ru
    подключится default нельзя удаленно
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226416 #226418 12:56 PM, 14 Jul 2021
    верно, я установил для него пароль.
    Как это связано с ошибкой ?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226417 #226419 12:57 PM, 14 Jul 2021
    ясно
  • https://t.me/clickhouse_ru
    оператор генерит remote_servers и там пустой пароль default потому что operator не знает что вы задали пароль default
  • https://t.me/clickhouse_ru
    @den_crane #226421 12:58 PM, 14 Jul 2021
    якобы где-то в операторе можно задать пароль default
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226420 #226422 12:58 PM, 14 Jul 2021
    Вот, изначально я и справшивал, как передать это в оператор
  • https://t.me/clickhouse_ru
    @den_crane #226423 12:58 PM, 14 Jul 2021
    в смысле вам не надо его выставлять самому
  • https://t.me/clickhouse_ru
    @den_crane #226424 12:59 PM, 14 Jul 2021
    он задается средствами оператора, тогда оператор генерит правильный remote_servers
  • https://t.me/clickhouse_ru
    @den_crane #226425 12:59 PM, 14 Jul 2021
    ноды КХ ходят к друг другу пользователем default и им нужен пароль
  • https://t.me/clickhouse_ru
    @den_crane #226426 01:01 PM, 14 Jul 2021
    по умолчанию оператор предполает что пароль у default равен пустой строке и оператор защищает вход для default сетью, тем regex что показывали выше
  • https://t.me/clickhouse_ru
    да, это проблема
    Number of sessions (connections) to ZooKeeper. Should be no more than one, because using more than one connection to ZooKeeper may lead to bugs due to lack of linearizability (stale reads) that ZooKeeper consistency model allows.

    то есть репликация потенциально будет работать криво
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226427 #226428 01:07 PM, 14 Jul 2021
    мнения двух коллег из Altinity разделились :)
    и как это вылавливать?
  • https://t.me/clickhouse_ru
    как этот алерт меряет? кол-во конектов от КХ к ЗК? Или кол-во подключенных к ЗК?
  • https://t.me/clickhouse_ru
    метрика специальная в system.metrics с комментариями от Леши
    https://github.com/ClickHouse/ClickHouse/blame/9c2aad6c1781b7b4554f792c27089f5f2e4ebcce/src/Common/CurrentMetrics.cpp#L41
    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
    что у вас возвращает select * from system.metrics where metric like '%ZooKeeperSession%'
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226431 #226432 01:18 PM, 14 Jul 2021
    │ ZooKeeperSession │ 2 │ Number of sessions (connections) to ZooKeeper. Should be no more than one, because using more than one connection to ZooKeeper may lead to bugs due to lack of linearizability (stale reads) that ZooKeeper consistency model allows. │
  • https://t.me/clickhouse_ru
    я бы сделал
    SELECT * FROM system.metric_log WHERE CurrentMetric_ZooKeeperSession > 1 ORDER BY event_time DESC LIMIT 100
  • https://t.me/clickhouse_ru
    а если перестартовать КХ ?
  • https://t.me/clickhouse_ru
    @OrNixx #226435 01:18 PM, 14 Jul 2021
    пробовал, не ушло
  • https://t.me/clickhouse_ru
    а кусок конфига КХ про зукипер?

    кстати сейчас можно два зукипера разных прописать
  • https://t.me/clickhouse_ru
    конфиги правильные вроде
    должно быть все ОК
    надо в логи смотреть
    truncate -s 0 /var/log/clickhouse-server/*.log
    systemctl restart clickhouse-server
    grep -i zoo /var/log/clickhouse-server/
  • https://t.me/clickhouse_ru
    кстати да, а точно у вас один <zookeeper>?

    grep -i zoo /var/lib/clickhouse/preprocessed_configs/
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226438 #226439 01:24 PM, 14 Jul 2021
    да, 3 нужных ноды
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226437 #226440 01:28 PM, 14 Jul 2021
    в логе вообще нет упоминания про ЗК
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226424 #226441 01:30 PM, 14 Jul 2021
    Спасибо большое за детальное пояснение, а есть способ добавить нового юзера с доступом к распределенным теблицам ?

    Просто юзера добавил, а как добавить запись в оператор?
  • https://t.me/clickhouse_ru
    а что показывает netstat -ant|grep 2181 на сервере КХ ?
  • https://t.me/clickhouse_ru
    @OrNixx #226443 01:32 PM, 14 Jul 2021
    tcp 0 0 10.1.0.103:40568 10.2.1.95:2181 ESTABLISHED
    tcp 0 0 10.1.0.103:40570 10.2.1.95:2181 ESTABLISHED
  • https://t.me/clickhouse_ru
    @OrNixx #226444 01:33 PM, 14 Jul 2021
    10.1.0.103 — КХ (на нём кстати стоит одна из нод ЗК, если это имеет значение)
  • https://t.me/clickhouse_ru
    все не так. Все distributed запросы выполняются только от одного пользователя который описан в remote_servers. Не имеет значения каким пользователем вы подключились к КХ.
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226445 #226446 01:34 PM, 14 Jul 2021
    т.е. если я создам нового юзера с паролем, а для default оставлю пустой пароль, то я смогу иметь доступ к распределенным таблицам посредствам пользовтаеля default ?
  • https://t.me/clickhouse_ru
    чудеса, а если создать любую одну таблицу replicated ?
  • https://t.me/clickhouse_ru
    да, конечно
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226448 #226449 01:35 PM, 14 Jul 2021
    супер, спасибо
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226447 #226450 01:36 PM, 14 Jul 2021
    создалась, в ЗК появилась
  • https://t.me/clickhouse_ru
    а что netstat ?
  • https://t.me/clickhouse_ru
    сейчас найду

    отредактируйте configMap с названием etc-clickhouse-operator-files в неймспейсе в котором стоит clickhouse-operator
    найдите там
    chConfigUserDefaultPassword:
    и поставьте тот пароль который вы задали для default пользователя
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226451 #226453 01:37 PM, 14 Jul 2021
    tcp 0 0 10.1.0.103:40568 10.2.1.95:2181 ESTABLISHED
    tcp 0 0 127.0.0.1:41774 127.0.0.1:2181 TIME_WAIT
    tcp 0 0 10.1.0.103:40570 10.2.1.95:2181 ESTABLISHED
  • https://t.me/clickhouse_ru
    @OrNixx #226454 01:40 PM, 14 Jul 2021
    похоже на баг?
  • https://t.me/clickhouse_ru
    скорее всего что-то не так в конфиге.
    distributed_ddl описана?
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #226455 #226456 01:44 PM, 14 Jul 2021
    наверное нет.
  • https://t.me/clickhouse_ru
    ну выложите куда-нибудь весь preprocessed конфиг (без паролей)
  • https://t.me/clickhouse_ru
    Облом, судя по вот этому куску кода
    https://github.com/Altinity/clickhouse-operator/blob/0.15.0/pkg/model/ch_config_generator.go#L316-L319

    надо просто не трогать default юзера и не задавать ему НЕ пустой пароль
    его по умолчанию ограничивают через host_regexp
    и это достаточно надежно
    clickhouse-operator/ch_config_generator.go at 0.15.0 · Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/ch_config_generator.go at 0.15.0 · Altinity/clickhouse-operator

  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226459 #226460 01:47 PM, 14 Jul 2021
    ясно, нужно только включить host regexp )
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    password of default user is not propagated to shards · Issue #265 · Altinity/clickhouse-operator

    Hi, when creating a cluster where the password of default user is set in the manifest, it will not be propagated to remote_servers.xml. This leads to errors using umbrella tables: From this example...

  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226459 #226463 01:52 PM, 14 Jul 2021
    Спасибо еще раз за поддержку и пояснение в деталях !!

    Даже в поддержке )
  • https://t.me/clickhouse_ru
    вроде все ок, ну попробуйте убрать атрибуты index="1" , они не нужны
  • https://t.me/clickhouse_ru
    https://github.com/Altinity/clickhouse-operator/issues/668

    Ага, такая же проблема с secure и inter_server secrets
    Secure remote_servers section · Issue #668 · Altinity/clickhouse-operator

    In order to use secure tcp port(9440 by default) while running distributed queries, it's need to add secure setting in remote_servers settings. It would be great if clickhouse-operator coul...

  • https://t.me/clickhouse_ru
    странно, Саша утверждал что для default можно задать пароль в самом операторе.

    вот это что такое

    defaultChConfigUserDefaultProfile = "default"

    defaultChConfigUserDefaultPassword = "default"
  • https://t.me/clickhouse_ru
    Ну я смотрю сейчас на тот код что скинул Slach и пока не вижу там.
  • https://t.me/clickhouse_ru
    @unamedrus #226468 02:03 PM, 14 Jul 2021
    дефолт юзер/пароль там для другого может быть можно задать
  • https://t.me/clickhouse_ru
    @unamedrus #226469 02:03 PM, 14 Jul 2021
    // Username and Password to be used by operator to connect to ClickHouse instances for
  • https://t.me/clickhouse_ru
    проще тогда перейти на secret, генерить рандом при создании chi и запоминать где-нибудь, в k8s
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226470 #226471 02:36 PM, 14 Jul 2021
    Хороший вариант...
  • Проблему так и не победил, придется грузить csv)
  • https://t.me/clickhouse_ru
    КХ не умеет транзакции, какой jdbc драйвер вы используете?
    движок Атомик из другой сказки, он не про это.
  • По вашему совету clickhouse-jdbc-0.3.1-patch-shaded.jar
  • https://t.me/clickhouse_ru
    OK и где вы его используете? Свой java код или фреймворк?
  • в nifi
    https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.5.0/org.apache.nifi.processors.standard.PutDatabaseRecord/

    пробовал еще через json-jsontosql-putsql (ошибка та же)
  • https://t.me/clickhouse_ru
    Баг был про это, его исправили
  • https://t.me/clickhouse_ru
    Fix several bugs with ZooKeeper client by alesapin · Pull Request #21264 · ClickHouse/ClickHouse

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

  • Нашел такое сообщение
    https://github.com/ClickHouse/ClickHouse/issues/5837

    Коллеги, вставку делают через http
    How to post INSERT into Clickhouse with NiFi - steps needed. · Issue #5837 · ClickHouse/ClickHouse

    Hi, I tried to look at this a few months back, and time and other priorities itervened. Looking again, I have hit a dead end. I would have used the JDBC driver, but I get MapMaker dependency errors...

  • https://t.me/clickhouse_ru
    не обязательно. Они и через JDBC из nifi делают, просто через PutDatabaseRecord это невозможно.
  • https://t.me/clickhouse_ru
    Внутри jdbc отправка тоже идёт http
  • https://t.me/clickhouse_ru
    @gingeard #226486 05:29 PM, 14 Jul 2021
    ребят, а кто что знает про эту фичу:

    <!-- Compatibility with PostgreSQL protocol.
    ClickHouse will pretend to be PostgreSQL for applications connecting to this port.
    -->
    <postgresql_port>9005</postgresql_port>
  • https://t.me/clickhouse_ru
    @gingeard #226487 05:29 PM, 14 Jul 2021
    что-то в доке в упор не нахожу
  • Значит с объёмами проблем быть не должно )
  • https://t.me/clickhouse_ru
    Я видел комментарий в гитхабе что при соблюдении некоторых условий (все записи батча в одну партицию, размер батча не превышает порог) есть гарантия атомарности вставки батча
  • https://t.me/clickhouse_ru
    кашакашакаша.

    Atomic Database. Атомарные инсерты. И nifi откатываемые транзакции вообще никак не связаны, ну вообще никак.
    Так же как visa электрон не связана с молекулой кислорода
  • https://t.me/clickhouse_ru
    Добрый вечер. По вот этому вопросу может кто-нибудь подсказать? Мне всё ещё интересно, есть ли какие-то ситуации, когда имеет смысл разносить данные одной сущности по нескольким серверам :)

    Ниже там есть примерное описание того, какого рода запросы по этим данным планируется делать.
  • https://t.me/clickhouse_ru
    Это понятно
  • https://t.me/clickhouse_ru
    PutDatabaseRecord пытается отключить autocommit , чтобы cделать 2PC. КХ не умеет транзакции, нельзя откатить успешный инсерт.
  • https://t.me/clickhouse_ru
    @smirnov_captain #226495 05:48 PM, 14 Jul 2021
    Да вообще в мире nosql с транзакциями плохо
  • https://t.me/clickhouse_ru
    @Fullherdi #226496 05:49 PM, 14 Jul 2021
    Nosql если я не конченый лузер это не про транзакции
  • https://t.me/clickhouse_ru
    Ну почему nosql? Вот вертика есть, все примерно тоже самое что и в КХ, и с транзакциями все там хорошо, откатывай хоть 100 инсертов
  • https://t.me/clickhouse_ru
    А можно как-то сократить расходы на апдейт поля, сейчас вроде это только новый инсерт?!
  • https://t.me/clickhouse_ru
    никто вам не ответит. Например у вас таблица ReplacingMergeTree и надо коллапсить записи по entity_id, в этом случае конечно нельзя шардить по дате.
    Я вчера на митинге с клиентом обсудил 4 возможных схемы шардирования для одной и той же таблицы. У каждой свои плюсы и минусы, которые исходят из запросов которые будут делаться к таблице, сама структура таблицы мало вообще кого волнует в этом случае.
  • 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
    Окей, буду тогда тестировать методом тыка и в trace логи смотреть.
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    @thebits #226507 06:31 PM, 14 Jul 2021
    Привет.
    Вопрос про ydb. :)
    Хочу разобраться что значят первые два параметра в функции `Digest::SipHash? Если это раунды компресии `c и d, то где ключ? Можете подсказать?
  • https://t.me/clickhouse_ru
    Yandex Database ?
  • https://t.me/clickhouse_ru
    по ydb тут не помогут скорее всего
  • https://t.me/clickhouse_ru
    может лучше в чат по ydb?
  • https://t.me/clickhouse_ru
    Да. Подсказали только что, у них есть свой чат. https://t.me/yandexdatabase_ru
  • https://t.me/clickhouse_ru
    @hostadminonline #226512 08:06 PM, 14 Jul 2021
    добрый вечер
    че то ни как не могу заставить сохранить вот такую цифру 1036.0999999642372,

    поле делаю
    requestStart Decimal64(18),
  • https://t.me/clickhouse_ru
    @hostadminonline #226513 08:06 PM, 14 Jul 2021
    точность 14 знаков после точки ... тут вроде указал 18 ... а пишет
    Decimal value is too big: 5 digits were read: 16335e-1. Expected to read decimal with scale 18 and precision 18
  • https://t.me/clickhouse_ru
    кмк Decimal64(18) означает что слева от запятой 0 знаков
  • https://t.me/clickhouse_ru
    @hostadminonline #226515 08:14 PM, 14 Jul 2021
    Decimal64(10, 18) а так он вообще не дает создать таблицу
  • https://t.me/clickhouse_ru
    вы смешиваете два формата
  • https://t.me/clickhouse_ru
    @den_crane #226517 08:15 PM, 14 Jul 2021
    либо Decimal(28, 18)
    либо Decimal128(18)
  • https://t.me/clickhouse_ru
    @den_crane #226518 08:15 PM, 14 Jul 2021
    в Decimal64 невозможно уместить (10, 18), только (0,18)
  • https://t.me/clickhouse_ru
    @hostadminonline #226519 08:16 PM, 14 Jul 2021
    если либо Decimal(10, 18)
    то он отдает вот это
    Negative scales and scales larger than precision are not supported
  • https://t.me/clickhouse_ru
    @hostadminonline #226520 08:16 PM, 14 Jul 2021
    я уже и так и сяк .... (
  • https://t.me/clickhouse_ru
    а ну Decimal(28,18)
  • https://t.me/clickhouse_ru
    @hostadminonline #226522 08:18 PM, 14 Jul 2021
    nак сработало ... но я так понимаю это уже Deciaml128 ?
  • https://t.me/clickhouse_ru
    @den_crane #226523 08:18 PM, 14 Jul 2021
    create table xx(a Decimal(28,18)) Engine=Memory;
    insert into xx values ('1036.0999999642372') ;
    SELECT * FROM xx
    ┌───────────────────────a─┐
    │ 1036.099999964237200000 │
    └─────────────────────────┘
  • 15 July 2021 (240 messages)
  • @user93 #226527 04:35 AM, 15 Jul 2021
    Добрый день,

    CREATE TABLE xxx (
    name String,
    ts UInt4,
    type Int8 DEFAULT -1,
    value Int8 DEFAULT -1
    )
    ENGINE = ReplacingMergeTree(ts)
    PRIMARY KEY(name)
    ORDER BY (name,type)
    SETTINGS index_granularity = 1024;

    Делаю запрос

    select name,min(value) from xxx group by name order by name limit 10;

    почему CH ( 21.1.10.3 ) сканирует всю таблицу и отменяет запрос по памяти?

    Ведь name - это primary key и все данные лежат в одной/соседних гранулах достаточно только прочитать первые несколько гранул и выдать результат
  • https://t.me/clickhouse_ru
    @Kerigan #226528 06:24 AM, 15 Jul 2021
    Всем привет.
    Подскажите, есть ли возможность нормально получить данные из MSSQL dictionary, если колонки там в binary
    Пробую через String, выходят кракозябры
  • @vmakulov #226529 06:31 AM, 15 Jul 2021
    Кодировка UTF-8 надо видимо
  • https://t.me/clickhouse_ru
    @Kerigan #226530 06:42 AM, 15 Jul 2021
    Да вроде нашел, что не поддерживает binary
    Сделаем вьюшку на MSSQL, конвертнем там в string и уже на вьюшку сделаем словарь
  • https://t.me/clickhouse_ru
    ну наверное потому что у вас name очень высоко кардинальный
    и чтобы сделать GROUP BY name
    надо в памяти сделать здоровущую hash table
    в которой будут в качестве ключей все ваши name
    и только потом применить к этому limit

    и еще есть ньюанс min(value) для ReplacingMergeTree не имеете особого смысла

    попробуйте
    SELECT name, value FROM xxx FINAL ORDER BY name LIMIT 10
  • это какая-то реальная задачи или синтетический пример для понимания работы ch? если name - это primary key зачем делать group by?
  • @andreyduhin #226534 07:06 AM, 15 Jul 2021
    Добрый день. Можно ли использовать CH как dwh для Microsoft sql server analysis services? Если сейчас нельзя, то есть ли такое в планах?
  • https://t.me/clickhouse_ru
    можно просто сливать данные инкрементально из MSSQL в ClickHouse (способов много)
    и потом поверх этого поставить MDX Mondrian
    и вертеть кубы как привыкли...
    https://altinity.com/blog/accessing-clickhouse-from-excel-using-mondrian-rolap-engine

    глубокой интеграции clickhouse + MSSQL в той схеме как вы хотите, не ждите
    Accessing ClickHouse from Excel using Mondrian ROLAP engine

    ClickHouse is a very powerful database for analytics. Microsoft Excel is one of the world’s most popular business applications. There are several ways to bring ClickHouse data to Excel spreadsheets. In this article we will explain how to connect Excel to ClickHouse using the Mondrian OLAP server. This approach has been pioneered in Sergei Semenkov’s[...]

  • @andreyduhin #226536 07:13 AM, 15 Jul 2021
    oledb судя по посту "vishenka" нужен, его не ждать? Через postges(mysql) интерфейсы тоже не работает?
  • @andreyduhin #226537 07:14 AM, 15 Jul 2021
    Статью эту читал, спасибо
  • @spirid_sv #226538 07:19 AM, 15 Jul 2021
    Привет! Подскажите, arrayDifference не хочет в даты. Так и задумано? Придется делать через lambda или есть что-то стандартное?
  • https://t.me/clickhouse_ru
    @nyatmeat #226539 07:31 AM, 15 Jul 2021
    Всем привет. Хотел узнать про uniq и uniqExact.
    Есть примерно какие-то бенчмарки на каких количествах uniq дает отличный от uniqExact результат?
    На нескольких миллионах у нас было расхождение на 10-20, но хотелось бы узнать при каких примерно кол-вах можно ожидать расхождения
  • https://t.me/clickhouse_ru
    uniq вычисляет приближенное значение, uniqExact точное. Тут уже смотреть по контексту задачи что вам именно надо - знать точное или приближенное количество документов
  • https://t.me/clickhouse_ru
    @nyatmeat #226541 07:34 AM, 15 Jul 2021
    Количество уникальных переходов на страницу. По сути на страницу обычно больше нескольких тысяч не бывает
  • https://t.me/clickhouse_ru
    а по clickhouse-benchmark проверяли еще что выгоднее по rps и времени выполнению запроса?
  • https://t.me/clickhouse_ru
    @nyatmeat #226543 07:51 AM, 15 Jul 2021
    В целом на большом интервале uniq выигрывает 0.1-0.15
    Но хотелось бы узнать на каких кол-вах стоит ожидать расхождения
  • https://t.me/clickhouse_ru
    @critskiy #226544 07:52 AM, 15 Jul 2021
    Точных цифр вряд ли кто-то даст, не помню, чтобы где-то приводилась статистика.
  • https://t.me/clickhouse_ru
    @nyoroon #226545 07:58 AM, 15 Jul 2021
    а ведь ещё есть uniqCombined, который автоматически выбирает более оптимальный алгоритм:
    >For a small number of distinct elements, an array is used. When the set size is larger, a hash table is used. For a larger number of elements, HyperLogLog is used, which will occupy a fixed amount of memory.
  • https://t.me/clickhouse_ru
    @kusaeva #226546 08:15 AM, 15 Jul 2021
    привет,
    подскажите, пожалуйста, возможно ли как-то получить список всех mat view, висящих на таблице?
  • https://t.me/clickhouse_ru
    там же ORDER BY (name,type) в таблице ключ сортировки.
  • https://t.me/clickhouse_ru
    это помогает при сортировке ORDER BY в запросе... и при выборке WHERE

    при GROUP BY это ничего не ускоряет
  • https://t.me/clickhouse_ru
    ну можете включить optimize_aggregation_in_order
  • https://t.me/clickhouse_ru
    если вылетает по памяти, не факт что поможет
  • https://t.me/clickhouse_ru
    select database, name,
    arrayZip(dependencies_database, dependencies_table)
    from system.tables
    /*where*/
  • https://t.me/clickhouse_ru
    большое спасибо
  • https://t.me/clickhouse_ru
    Я к тому, что ваш пример SELECT name, value FROM xxx FINAL ORDER BY name LIMIT 10 выдаст несколько результатов, если для одного name в таблице есть несколько type. А человеку, судя по его запросу, нужен один результат для каждого name, с минимальным value
  • это вероятно для тех, которые созданы без TO
  • https://t.me/clickhouse_ru
    С TO тоже, какая разница. Оно выдает сами матвью, а не таблицы назначения
  • у меня они пустые(
  • https://t.me/clickhouse_ru
    может смотрите Distributed таблицы? У нас для MergeTree четко все матвьюхи показывает. v21.3.10.1
  • нет
    все мв сделаны с TO.
    поля пустые. v21.2.9
  • https://t.me/clickhouse_ru
    @SuppieRK #226559 08:43 AM, 15 Jul 2021
    Господа, такой вопрос: есть куча событий относительно изменений состояния сущности - хочется забирать последнее событие для каждой сущности по timestamp + потом прогнать дополнительные аггрегации. Пытаюсь запилить MV на ReplicatedAggregatingMergeTree, но воткнулся в проблему с пониманием maxState/maxMerge аггрегатов - выглядит как будто мне нужно сделать подзапрос с maxMerge до того как я начну считать остальные аггрегаты.
  • https://t.me/clickhouse_ru
    может argMaxState какой нибудь сделать?
  • https://t.me/clickhouse_ru
    Может, вопрос больше в том как потом сделать штуку в запросе типа minIf(timestamp, state == 'SomeState')
  • https://t.me/clickhouse_ru
    @SuppieRK #226563 08:50 AM, 15 Jul 2021
    Туда надо впихнуть maxMerge(timestamp) если я всё правильно понимаю и в оригинале у меня maxState(timestamp)
  • https://t.me/clickhouse_ru
    finalizeAggregation
  • https://t.me/clickhouse_ru
    @seriych #226565 08:59 AM, 15 Jul 2021
    Пытаюсь использовать custom_settings_prefixes. В запросах всё отлично, а если пытаюсь с этим же запросом создать вью (https://kb.altinity.com/altinity-kb-queries-and-syntax/altinity-kb-parameterized-views), то получаю Code: 115, e.displayText() = DB::Exception: Unknown setting ..., и вью не создается.
    Надо куда-то обновиться? Сейчас v21.3.10.1.
  • https://t.me/clickhouse_ru
    Нужно сначала задать настройку а потом создавать view
  • https://t.me/clickhouse_ru
    так тоже пробовал. В пределах одной сессии родного клиента. И даже в settings самого запроса для вью прописывал. Не помогает
  • https://t.me/clickhouse_ru
    Получается если MV имеет поля типа id, anyState(state), maxState(timestamp), то чтобы сделать запрос к таблице рода SELECT id, minIf(timestamp, state == 'SomeState') мне нужно будет секцию FROM определить как SELECT id, finalizeAggregation(state), finalizeAggregation(timestamp)?
  • https://t.me/clickhouse_ru
    id, anyState(state), maxState(timestamp)

    Для any и max вам не нужен state

    https://kb.altinity.com/altinity-kb-queries-and-syntax/simplestateif-or-ifstate-for-simple-aggregate-functions

    SELECT id, minMergeIf(timestamp, finalizeAggregation(state) == 'SomeState')
  • https://t.me/clickhouse_ru
    может кто-нибудь подсказать?
  • https://t.me/clickhouse_ru
    Спасибо! Пойду разбираться )
  • @satanch #226573 09:59 AM, 15 Jul 2021
    доброго дня!

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

    такой запрос не помогает:

    ALTER TABLE visits UPDATE flagE = '' WHERE platform = 'p'
  • https://t.me/clickhouse_ru
    этот запрос выполняется асинхронно почитайте про мутации
    посмотрите SELECT * FROM system.mutations WHERE is_done=0
  • увидел, спасибо громное!
  • https://t.me/clickhouse_ru
    @vladislav_sakun #226576 10:04 AM, 15 Jul 2021
    Подскажите, сейчас последняя LTS версия 21.3?
  • https://t.me/clickhouse_ru
    @unamedrus #226577 10:07 AM, 15 Jul 2021
    Да, следующая будет 21.8 в августе-сентябре
  • @user93 ↶ Reply to #226531 #226578 10:08 AM, 15 Jul 2021
    >и чтобы сделать GROUP BY name надо в памяти сделать здоровущую hash table

    хм, я тогда наверное не правильно представлял себе как CH хранит данные, я думал, что в грануле лежат все записи принадлежащие primary key, те нужно только прочитать строки с одинаковым ключом и дальше их можно уже выдавать, так как в других гранулах этого ключа быть не может

    >и еще есть ньюанс min(value) для ReplacingMergeTree не имеете особого смысла

    почему? Обратите внимание, кроме Primary key там в таблице есть еще ORDER BY с еще одиним полем, Предположим у нас есть работники Иванов/Петров, и переиодически мы их измеряем в талии,бедрах и груди (. и мы хотим узнать минимальный размер работника. Вроде min как раз для этого и подходит

    select * from xxx order by name;

    ┌─name───┬─ts─┬─type─┬─value─┐
    │ Ivanov │ 1 │ 10 │ 100 │
    │ Ivanov │ 1 │ 20 │ 200 │
    │ Ivanov │ 1 │ 30 │ 300 │
    │ Petrov │ 1 │ 30 │ 600 │
    │ Petrov │ 1 │ 10 │ 400 │
    │ Petrov │ 1 │ 20 │ 500 │
    └────────┴────┴──────┴───────┘

    select name,min(value) from xxx group by name order by name limit 10;

    ┌─name───┬─min(value)─┐
    │ Ivanov │ 100 │
    │ Petrov │ 400 │
    └────────┴────────────┘

    И таких "работников" у меня 500 миллионов , как найти минимальное значение среди всех измерений? те каким образом построить таблицу,
  • https://t.me/clickhouse_ru
    А какой период поддержки у LTS версий?
  • https://t.me/clickhouse_ru
    @vladislav_sakun #226580 10:08 AM, 15 Jul 2021
    А то пока ещё на 20.8 сидим)
  • @satanch #226581 10:08 AM, 15 Jul 2021
    насколько хуже я сделал теперь? нужно ли отменять дублирующие мутации или теперь сидеть и ждать?
  • https://t.me/clickhouse_ru
    1 год у яндекса, два года у нас
  • дубли появились потому что я не знал об асинхронности и мутациях
  • @user93 ↶ Reply to #226533 #226584 10:09 AM, 15 Jul 2021
    >если name - это primary key зачем делать group by?

    Обратитие внимание, помимо primary в таблице есть еще ORDER BY с дополнительным полем, именно это поле и дает несколько разных строк на поле name
  • https://t.me/clickhouse_ru
    Тогда ещё один вопрос. С 20.8 на 21.8 переехать сразу норм или лучше через 21.3?
  • https://t.me/clickhouse_ru
    Можно и сразу, но нужно посмотреть релиз нотсы для версий между

    https://docs.altinity.com/altinitystablerelease/releasenotes/releases/21.3/213139/
    ClickHouse Altinity Stable Release™ 21.3.13.9

    Details of the Altinity Stable Release 21.3.13.9

  • @user93 ↶ Reply to #226578 #226588 10:39 AM, 15 Jul 2021
    возможно я неправильно строю таблицу, опишу задачу может кто подскажит в какую сторону смотреть

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

    Две проблемы, которые пытаюсь решить
    1) Как составить таблицу и запрос, чтобы они были как можно легче с точки зрения производительности

    2) Как получить данные в клиента? клиент не может переварить 500 миллионов строк сразу. Мы используем подключение к CH как к Postgres серверу и изначально была идея делать запросы вида

    select ..... where name>'' order by name limit 100;
    select ..... where name>'<тут последнее значение из первого запроса>' order by name limit 100;

    так как полагал, что order by name (который primary key) - это дешевая операция, но видно, что это не так. По сути порядок записей не важен.
  • @Lomdjaria #226589 10:42 AM, 15 Jul 2021
    Привет! Помогите пожалуйста разобраться с json. У меня есть строка, которая хранит массив json упрощенный пример: "[{"title":"Sport"}, {"title":"Electronics"}]"

    Как мне получить из неё title? Это валидный json, но в доке нет ни одного примера на работу с массивом таким. Может его можно как-то перевести в массив нормально
  • https://t.me/clickhouse_ru
    насчёт вопроса 2: насколько я понимаю, пагинация в clickhouse делается через max_block_size. Вот пример для питонячего драйвера: https://clickhouse-driver.readthedocs.io/en/latest/quickstart.html#streaming-results
  • https://t.me/clickhouse_ru
    arrayMap, потом extractParamString или JSon чето там
  • https://t.me/clickhouse_ru
    @dmitriynvkv #226592 10:58 AM, 15 Jul 2021
    ну там будет массив, потмоу нужно его развернуть через arrayJoin
  • Так в том-то и проблема что это не массив, а строка в которой записан массив, поэтому arrayMap не могу использовать
  • https://t.me/clickhouse_ru
    split сделайте
  • пример выше был с упрощением, там вложенная структура, и просто split не зайдет поэтому
  • @softbot_xxl #226596 11:00 AM, 15 Jul 2021
    Добавил TTL в конфигурацию логов (system.query_log, system.query_thread_log). Но после перезагрузки процесса, я не вижу этого поля в show create table system.query_log. Что надо сделать, чтобы ТТЛ появился? Удалить таблицу и перегрузить процесс?
  • https://t.me/clickhouse_ru
    @dmitriynvkv #226597 11:01 AM, 15 Jul 2021
    м по шапке надавайте тому кто это делал
  • https://t.me/clickhouse_ru
    по итогу в у вас просто огромная странная строка?
  • ну она да большая, и странная, но является валидным json
  • https://t.me/clickhouse_ru
    у вас не вложеная структура случаем?

    https://clickhouse.tech/docs/ru/sql-reference/data-types/nested-data-structures/nested/
    Nested | Документация ClickHouse

    Nested Nested(Name1 Type1, Name2 Type2, …) Вложенная структура данных - это как будто вложенная таблица. Параметры вложе

  • @softbot_xxl #226602 11:08 AM, 15 Jul 2021
    Еще вопрос. После изменения метода компрессии по умолчанию (compression -> case -> method: zstd). Он будет сразу применять для новых партов?
  • https://t.me/clickhouse_ru
    JSONExtractRaw может это поможет?
  • https://t.me/clickhouse_ru
    да наверное я не до конца разобрался извините
  • https://t.me/clickhouse_ru
    @SimonOsipov #226606 11:30 AM, 15 Jul 2021
    Привет, есть вопрос, замылился глаз, не знаю, куда б посмотреть
    Есть GCP бакет, в нем лежит архив за каждый день
    Читаю gsutil и использую clickhouse client в докере, запихиваю все колонки в табличку в стиле

    gsutil cat gs:/filename.gz | pv | gzip -d | tail -n+2 | clickhouse-client --tcp_keep_alive_timeout 60 --user $CLICKHOUSE_USER --host $CLICKHOUSE_HOST --password $CLICKHOUSE_PASS --database $CLICHOUSE_DATABASE --query="INSERT INTO table_name(colum1, colum2….) SELECT colum1, colum2…. from input(col1 type, col2 type…) FORMAT CSV”

    Размер файла плюс минус совпадает с количеством строк, файл 20 гигов, а строк 183163558
    Схема, колонки, ничего не месяется в течении месяца

    Но каждый месяц, последний день загружается копейки от всего файла и все
    И так каждый месяц, в мае 30 дней загрузились без проблем, 31 2 тысячи вместо 200 миллионов
    в июне 29 дней ок, 30 июня 5 тысяч вместо 150 миллионов

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

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

    Что это может быть, в каком направлении стоит взглянуть?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226588 #226607 11:30 AM, 15 Jul 2021
    если все что вам надо - получать сортированный список сотрудников по размеру талии, причем с пагинацией, причем сначала малые, то ваш order by (точнее primary key) и будет этим размером талии. Вот тогда выборка будет быстрой, и можно почти безнаказанно делать последовательные запросы с limit/offset.
  • https://t.me/clickhouse_ru
    @SuppieRK #226608 11:33 AM, 15 Jul 2021
    Господа, есть ли способ посмотреть статистику выполнения для distributed query?
  • @user93 ↶ Reply to #226607 #226609 11:36 AM, 15 Jul 2021
    так у меня ведь не только размер талии, а еще два размера. и запросы могут быть дай минимальный размер, дай максимальный размер, дай разницу между размером талии и размером бедер.

    По сути любой запрос - это считать группу строк относящихся к одному человеку (3 строки на человека), как-то их обработать (min,max) и принять решение отдавать в клиента эту строку или нет
  • https://t.me/clickhouse_ru
    глянуть на кластере system.query_log по inital_query_id
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226609 #226613 11:48 AM, 15 Jul 2021
    если критерии выборки столь разнообразны, то от полной переборки таблицы вам никуда не уйти. Считаете свои миллиарды записей, и это будет тормозить на каждом запросе.
    В качестве альтернативы можете потратить дисковое пространство и сделать несколько MV с хранением, оптимизированным под каждый конкретный запрос. Т.е. сложные рассчеты/сортировки будут при вставках (и тормозить их), а не при выборке с пагинацией. Если вставка раз в день, то наверное пойдет. Но может у вас есть ещё нюансы, про которые вы пока не рассказали.
    Так-же можете посмотреть в сторону projections. Это экспериментальная фича, но суть именно та - оптимизация работы с подобной пачкой связанных MV.
  • Там динамическая структура (ну типа в некоторых строках есть в некоторых нет. Походу реально лучше всего будет переложить эту колонку сразу в массив
  • https://t.me/clickhouse_ru
    ну немного мал овволдных сорре, если это раковая строка какая то то по шапке надавать тому кто это делает, или попробовать raw заюзать
  • @user93 ↶ Reply to #226613 #226616 11:56 AM, 15 Jul 2021
    >то от полной переборки таблицы вам никуда не уйти.

    да с этим и не спорю, к этому и готовы. Сами данные занимают мало места (там везде Uint32, UInt64 только(, прочитать их полность с nvme диска - вообще не проблема (время нескольких минут)

    вопрос в том можно ли как-то ускорить запрос вида

    select <тут аггрегации над групой строк> from xxx where name > 'A' group by name order by name limit 100;

    Если данные расположены в упорядоченном по primary key порядке, то по сути нужно прочитать 300-600 строк (если предположить, что каждая вторая запись фильтруется) и отдать в клиента. А сейчас это приводит к почти полной вычитке базы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226616 #226617 11:59 AM, 15 Jul 2021
    с чего бы это 300 строк? Именно что для решения вашей задачи нужно прочитать 100% данных. И как вы сами пишете - это несколько минут. Вот столько и будет занимать каждый запрос. 300 строк - это 300 сотрудников. С чего вы взяли что в них будет искомый минимал? Почему не самый последний, с фамилией на на букву Я?
  • @user93 ↶ Reply to #226617 #226618 12:04 PM, 15 Jul 2021
    Я возможно не понимаю, но моя логика вот такая - name у нас primary key, значит на него в памяти есть индекс (с засечками) и данные лежат в таком порядке

    Алексеев - row 1
    Алексеев - row 2
    Алексеев - row 3
    Петров - row 1
    Петров - row 2
    Яблоков - row 1
    Яблоков - row 2
    ..

    Есть запрос

    select name,count(*) from xxx group by name where name > 'A' limit 2;

    1) По индексу определяем, что читать нужно с Петрова.
    2) Прочитали две строчки петрова, выдали в клиента - Петров, 2
    3) Прочитаели две строчки Яблокова - выдали в клиента Яблоков,2
    4) Два результата у нас есть, ровно столько сколько и просили, завершаем запрос.

    Зачем читать другие строки?
  • Raw попробовал, но проблема, что CH функции с json кажется работают только объектами json, т.е например {'a':1, 'b':2, 'c': [1, 2, 3] } но не могут, когда у нас всё завернуто в массив [{'a':1, 'b':2, 'c': [1, 2, 3] }]
  • https://t.me/clickhouse_ru
    жаль жаль :(
  • но спасибо за помощь)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #226618 #226622 12:08 PM, 15 Jul 2021
    так вы же писали что хотели получить минимальную талию? Просто количество - это очень просто.
  • https://t.me/clickhouse_ru
    А в чем проблема?

    WITH '[{"a":1, "b":2, "c": [1, 2, 3] }]' AS x
    SELECT JSONExtract(x, 'Nested(a UInt32, b UInt32, c Array(UInt32))')

    Query id: 855df5d8-90da-4513-8dd0-fcce5558f6af

    ┌─JSONExtract(x, 'Nested(a UInt32, b UInt32, c Array(UInt32))')─┐
    │ [(1,2,[1,2,3])] │
    └───────────────────────────────────────────────────────────────┘
  • @user93 ↶ Reply to #226622 #226624 12:11 PM, 15 Jul 2021
    я хочу получить минимальный размер измерения у каждого сотрудника. Сравнивать этого сотрудника с другими мне не нужно.

    Да даже если отвлечься от размеров.

    Вот запрос

    select name,count(*) from xxx where name > 'A' group by name limit 2;

    Уходит в фулл скан,

    Ставим опцию

    SET optimize_aggregation_in_order = 1;

    Все начинает работать быстро, но нам еще нужно как-то упорядочивать данные, чтобы в следующем запросе не получить те же самые данные, добавляем order by

    select name,count(*) from xxx where name > 'A' group by name order by name limit 2;

    и снова уходим в фулл скан
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/21756

    Ну ставьте лайки и тд тогда
    optimize_aggregation_in_order, optimize_read_in_order respect subquery ordering · Issue #21756 · ClickHouse/ClickHouse

    optimize_aggregation_in_order (and optimize_read_in_order but it's less important) would respect ORDER BY of subquery result set or subquery GROUP BY (if it's also optimized with op...

  • https://t.me/clickhouse_ru
    Зачем вам по две строки на сотрудника если нужен минимальный размер?
  • @user93 ↶ Reply to #226626 #226627 12:17 PM, 15 Jul 2021
    Не совсем понял Вашего вопроса.

    У каждого сотрудника несколько строк, каждая строка это результат измерения разных данных проведенные в разние дни. В понедельник всем измерили талию, во вторник всем измерили грудь.

    В конце недели нужно получить цифру, какой минимальный размер у каждого сотрудника
  • Order by не добавляет. Но ch не имеет constraint-ов, поэтому дубликаты могут быть. Поэтому да, груп бай там может быть, поэтому согласен, мой вопрос был лишним.
  • https://t.me/clickhouse_ru
    >select name,count(*) from xxx where name > 'A' group by name order by name limit 2;

    Ну уходите не в фулл скан, а в фулл сортировку, это другое

    Во вторых если вы используете optimize_aggregation_in_order ORDER BY name скорее всего не нужен
  • @user93 ↶ Reply to #226629 #226630 12:23 PM, 15 Jul 2021
    > а в фулл сортировку

    а сортировку чего? результатов или исходных строк?

    >Во вторых если вы используете optimize_aggregation_in_order ORDER BY name скорее всего не нужен

    вот это бы решило мою проблему, насколько на это безопасно закладываться? Это так задуманно или то, чтоORDER BY не нужен, это просто особенность реализации, которую завтра могут изменить?
  • О, спасибо большое! Через Nested получилось, по крайней мере моя задача решается. Но опять, же, оно работает, пока фиксирован уровень вложенности
  • https://t.me/clickhouse_ru
    > вот это бы решило мою проблему, насколько на это безопасно закладываться? Это так задуманно или то, чтоORDER BY не нужен, это просто особенность реализации, которую завтра могут изменить?

    > насколько на это безопасно закладываться?

    Гарантий не дам, но думаю достаточно нормально.

    > Это так задуманно или то, чтоORDER BY не нужен, это просто особенность реализации, которую завтра могут изменить?

    Просто не сделана фича (я кидал ссылку на issue), что можно использовать комбинацию GROUP BY и ORDER BY in_order
  • https://t.me/clickhouse_ru
    Ну а что вы хотите в случае динамики?
    Ну можете посмотреть на поддержку JSONPATH
    https://github.com/ClickHouse/ClickHouse/pull/24148
    Jsonpath by l1tsolaiki · Pull Request #24148 · ClickHouse/ClickHouse

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

  • @user93 ↶ Reply to #226632 #226634 12:34 PM, 15 Jul 2021
    ну тогда здорово, и еще один вопрос.

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

    на самом деле для

    SELECT * FROM (SELECT * FROM table ORDER BY xx)

    Точно есть гарантии, что порядок сохраняется, так что не вижу причин, что бы он нарушался после GROUP BY in order
  • @ilnar_lat #226636 12:36 PM, 15 Jul 2021
    Наверно вопрос уже не первый раз прозвучал
    Как сделать аналог ILIKE в кликхаусе?
  • https://t.me/clickhouse_ru
    можно конвертировать в секунды используя toUnixTimestamp
  • @user93 ↶ Reply to #226635 #226638 12:37 PM, 15 Jul 2021
    👍
  • https://t.me/clickhouse_ru
    В новых версиях ILIKE есть
    а так lower(str) LIKE lower('xxdD')
  • https://t.me/clickhouse_ru
    uniq сильно быстрее на больших объемах, особенно если шардов много, ошибка <1%
  • https://t.me/clickhouse_ru
    конечно поможет, у нас у одного клиента расход памяти с optimize_aggregation_in_order уменьшается в 200 раз, запрос правда медленнее в 20 раз.
    optimize_aggregation_in_order обрабатывает в streaming , идя по первичному ключу
  • все гениальное - просто
    а по перфомансу не сильно ударит?
  • https://t.me/clickhouse_ru
    Ну если str в ключе ORDER BY таблице и вы ищете по префиксу, то ударит, а так скорее всего будет терпимо
  • спасибо
  • https://t.me/clickhouse_ru
    есть alter table clear column -- работает моментально, просто удаляет файлы колонки
  • @satanch #226646 12:47 PM, 15 Jul 2021
    Спасибо
  • https://t.me/clickhouse_ru
    group by не использует первичный ключ (по умолчанию) потому что это медленнее, регулируется параметром который написали выше
  • пардон, бампану пару своих вопросов
  • и вот этот
  • @1542923331 #226650 12:50 PM, 15 Jul 2021
    Здравствуйте, пытаемся разобраться с кубернетис кластером кликхауса (просьба не судить строго, опыта нет):
    Подняли кластер в кубернетис (3 Шарда, по 2 реплики)
    Далее пытаюсь создать БД и таблицу:

    CREATE DATABASE IF NOT EXISTS db_name ON CLUSTER cluster_name;

    CREATE TABLE IF NOT EXISTS db_name.table_1 ON CLUSTER cluster_name
    (
    time DateTime,
    id UInt64,
    text String
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table_1', '{replica}')
    PARTITION BY toYYYYMMDD(time)
    ORDER BY (toYYYYMMDD(time), id)

    CREATE TABLE IF NOT EXISTS db_name.table_1_distributed ON CLUSTER cluster_name
    (
    time DateTime,
    id UInt64,
    text String
    )
    ENGINE = Distributed(cluster_name, db_name, table_1)

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

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk
  • @user93 ↶ Reply to #226647 #226652 12:54 PM, 15 Jul 2021
    спасибо, теперь понятно что было и что изменилось с включением настройки optimize_aggregation_in_order
  • Спасибо!
  • https://t.me/clickhouse_ru
    kubectl get chi -o yaml -n ваш_namespace имя_вашего_chi
    можете расшарить через gist.github.com какой нибудь?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.clusters WHERE name='cluster_name';
    что показывает? все 6 нод?
  • да
  • table_1_distributed - есть на всех
    table_1 - только на 3 нодах
  • https://t.me/clickhouse_ru
    По-моему, на это можно полагаться только если у нас один шард и один поток. А так у нас может первым вернуться результат не самого первого в общей сортировке блока.
  • https://t.me/clickhouse_ru
    > А так у нас может первым вернуться результат не самого первого в общей сортировке блока.

    обычный GROUP BY и ORDER BY (+ in_order) же делается с учетом шардов, так что с этой точки зрения никакой разницы
  • https://t.me/clickhouse_ru
    @ARyndin #226661 01:27 PM, 15 Jul 2021
    Добрый день. А тип базы данных может как-то влиять на то как выполняется удаление данных по достижении TTL?
    Есть две реплики, в одной база имеет тип Atomic, в другой — Ordinary
    Таблица одна и та же — с TTL date + toIntervalMonth(12)
    но в атомик данные удаляются ежедневно, в ординари — каждый месяц
  • https://t.me/clickhouse_ru
    что насчет ttl_only_drop_parts настройки у таблиц?
  • https://t.me/clickhouse_ru
    ну вот допустим у нас один шард. И 2 потока. Первый поток прочитал первый блок данных в порядке order by таблицы, второй поток второй блок данных. Так получилось, что второй поток оказался быстрее первого и первым вернул результат. Если в самом запросе нет order by, то разве у нас КХ не выдаст результаты, которые вернул второй поток, если их достаточно по limit? Не дожидаясь первого потока. Ибо зачем?
  • А partition by какой и как выставлена настройка ttl_only_drop_parts?
  • https://t.me/clickhouse_ru
    Пока первый поток не отдаст данные дальше второй поток допустим будет отдыхать или сложит данные в памяти куда то. (одна из причин, почему aggregation_in_order может быть медленнее)

    Ну я к тому, что ваша проблема никак не относится к GROUP BY ORDER BY in_order
    Если бы было так просто, то оно бы вообще ни для каких запросов не работало
  • https://t.me/clickhouse_ru
    везде 0
    но я смотрел глобально, не у отдельных таблиц
    как у таблицы посмотреть настройки?
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE xxx
  • https://t.me/clickhouse_ru
    @unamedrus #226668 01:35 PM, 15 Jul 2021
    на каждой реплике
  • https://t.me/clickhouse_ru
    в create увы тоже ничего
    но при этом очевидно что удаление работат по разному
  • https://t.me/clickhouse_ru
    PARTITION BY toYYYYMM(date)
  • https://t.me/clickhouse_ru
    это реплики одной таблицы?
  • https://t.me/clickhouse_ru
    @ARyndin #226672 01:37 PM, 15 Jul 2021
    да, одна и та же таблица с одинаковым DDL на обоих репликах
    у реплик разные движки БД, как отметил выше — atomic и ordinary
  • https://t.me/clickhouse_ru
    @unamedrus #226673 01:38 PM, 15 Jul 2021
    Если одна реплика назначает TTL мерж, то все реплики его выполняют, что то у вас не то
  • https://t.me/clickhouse_ru
    пытаюсь понять что именно :)
  • https://t.me/clickhouse_ru
    @ARyndin #226675 01:39 PM, 15 Jul 2021
    я ещё пробовал переналить одну из реплик, дропнув таблицу, всё равно приехали только данные по дням почищенные, то есть видно что минимальная дата типа 15-07-2020, а не 01-07-2020
  • Ну это логично если выключена ttl_only_drop_parts, в идеале её всегда включать чтобы нагрузку уменьшить
  • https://t.me/clickhouse_ru
    попробовал ещё optimize выполнить на реплике где строки лишние — ничего не почистилось
    всё равно min(date) = 01-07-2020
  • Materialize TTL тоже пробовали?
  • https://t.me/clickhouse_ru
    А не подойдет просто extractAll?
    with '[{"title":"Sport"}, {"title":"Electronics"}]' as str
    select extractAll(str, '"title":"([^"]*)"');
  • https://t.me/clickhouse_ru
    почистилось
    но почему не само...
    таймаут на очистку стандартный —- 14400
  • 👍 Большое спасибо, что-то я затупил и не догадался через регулярку достать
  • Странно, да. Используйте ttl_only_drop_parts и должно быть все ок
  • @simpl1g #226683 01:51 PM, 15 Jul 2021
    Через modify setting на таблице можно поменять
  • https://t.me/clickhouse_ru
    а если я меняю на таблице настройку, она отобразится в show create?
  • @simpl1g #226686 01:59 PM, 15 Jul 2021
    Да
  • https://t.me/clickhouse_ru
    @alexdzyoba #226687 02:01 PM, 15 Jul 2021
    Привет. А подскажите кто-нибудь почему не применяется настройка max_partitions_per_insert_block? Добавил её в users.xml для default и distributed пользователя (который в кластере используется). Но запрос на вставку через Buffer всё равно падает с ошибкой Too many partitions for single INSERT block (more than 100).
    Даже в query_log видно, что max_partitions_per_insert_block = 0.
    SELECT
    type,
    exception,
    arrayZip(Settings.Names, Settings.Values) AS settings
    FROM system.query_log
    WHERE (event_date = '2021-07-15') AND (query_id = '7f733df8-628f-4d59-85da-091ff284ef26')

    Query id: e39c287e-71d2-4935-be3b-ed12da9b7ec5

    Row 1:
    ──────
    type: QueryStart
    exception:
    settings: [('receive_timeout','300000'),('send_timeout','300000'),('background_pool_size','96'),('background_schedule_pool_size','32'),('load_balancing','random'),('log_queries','1'),('insert_distributed_sync','1'),('max_memory_usage','10000000000'),('max_partitions_per_insert_block','0'),('normalize_function_names','0')]

    Row 2:
    ──────
    type: ExceptionWhileProcessing
    exception: Code: 252, e.displayText() = DB::Exception: Too many partitions for single INSERT block (more than 100). The limit is controlled by 'max_partitions_per_insert_block' setting. Large number of partitions is a common misconception. It will lead to severe negative performance impact, including slow server startup, slow INSERT queries and slow SELECT queries. Recommended total number of partitions for a table is under 1000..10000. Please note, that partitioning is not intended to speed up SELECT queries (ORDER BY key is sufficient to make range queries fast). Partitions are intended for data manipulation (DROP PARTITION, etc). (version 21.3.13.9 (official build))
    settings: [('receive_timeout','300000'),('send_timeout','300000'),('background_pool_size','96'),('background_schedule_pool_size','32'),('load_balancing','random'),('log_queries','1'),('insert_distributed_sync','1'),('max_memory_usage','10000000000'),('max_partitions_per_insert_block','0'),('normalize_function_names','0')]
  • https://t.me/clickhouse_ru
    @alexdzyoba #226688 02:05 PM, 15 Jul 2021
    После добавления в users.xml сервер не перезапускал.
  • https://t.me/clickhouse_ru
    очень странно

    смотрите /var/log/clickhouse-server/clickhouse-server.err.log
    на тех трех нодах где не создалась таблица
  • https://t.me/clickhouse_ru
    скорее всего надо ребутать или делать detach/attach буферной таблице, там шедулед треды давно созданы и работают со старым значением
  • https://t.me/clickhouse_ru
    Ребутнуть попробую, спасибо. А то, что в query log я вижу правильную настройку это ничего не значит?
  • https://t.me/clickhouse_ru
    @526143964 #226692 02:16 PM, 15 Jul 2021
    Все привет. Подскажите как перегнать данные из таблицы с nested structure в так скажем "транспонированную таблицу". Например из table1 в table2:
    table1:
    userId UUID
    errors Nested(errorId UInt16, auditedAmount UInt16, detectedAmount UInt16),

    table2:
    userId UUID,
    errorId UInt16,
    auditedAmount UInt16,
    detectedAmount UInt16,

    чтобы получить
    из такого:

    userId: 1
    errors.errorId: [101,102,103]
    errors.auditedAmount: [1,1,1]
    errors.detectedAmount: [0,0,1]

    такое:
    Row 1:
    ──────
    userId: 1
    errorId: 101
    auditedAmount: 1
    detectedAmount: 0

    Row 2:
    ──────
    userId: 1
    errorId: 102
    auditedAmount: 1
    detectedAmount: 0

    Row 3:
    ──────
    userId: 1
    errorId: 103
    auditedAmount: 1
    detectedAmount: 1

    ----------Делал INSERT SELECT ....FROM table1 ARRAY JOIN errors
    Таким образом, получается только 1 запись для каждого user_id. Остальные пропускаются..
  • https://t.me/clickhouse_ru
    вы видите в query_log инсерты которые делает буферная таблица?
  • https://t.me/clickhouse_ru
    Аргумент) Ок, спасибо.
  • https://t.me/clickhouse_ru
    select from tabl1 array join errors
  • https://t.me/clickhouse_ru
    я так пробовал, не работает
  • https://t.me/clickhouse_ru
    в смысле?
  • https://t.me/clickhouse_ru
    @526143964 #226698 02:26 PM, 15 Jul 2021
    я делаю INSERT SELECT ....FROM table1 ARRAY JOIN errors limit 2000. Получаю в конечной таблице 17 записей
  • https://t.me/clickhouse_ru
    а SELECT ....FROM table1 ARRAY JOIN errors limit 2000 сколько записей возвращает?
  • так и сделал. просто думал, что есть что-то более "высокоуровневое", что бы не делить потом результат) пасиб за ответ.
  • https://t.me/clickhouse_ru
    2000 rows in set. Elapsed: 0.065 sec.
    )
  • https://t.me/clickhouse_ru
    @526143964 #226702 02:50 PM, 15 Jul 2021
    для каждого userId у меня чуть более 100 записей
  • https://t.me/clickhouse_ru
    какой движок у таблицы в которую вставляете? Поди replacing order by uuid ? И все записи перезатираются
  • https://t.me/clickhouse_ru
    вы абсолютно правы! невнимательность. Спасибо большое!
  • https://t.me/clickhouse_ru
    вернее у меня Collapsing
  • https://t.me/clickhouse_ru
    @526143964 #226706 02:58 PM, 15 Jul 2021
    но проблема такая же
  • https://t.me/clickhouse_ru
    select JSONExtract('[{"title":"Sport"}, {"title":"Electronics"}, {"botitle":"xxxx"}]', 'Array(Tuple(title String))').1 x;
    ┌─x──────────────────────────┐
    │ ['Sport','Electronics',''] │
    └────────────────────────────┘
  • https://t.me/clickhouse_ru
    @438893233 #226708 03:14 PM, 15 Jul 2021
    Здравствуйте!
    Подскажите, пожалуйста, есть ли библиотека для джавы для организации пула соединений с кликхаусом или в кликхаусе можно настроить пул соединений?
  • https://t.me/clickhouse_ru
    любой connect pool, в основном я вижу что используют hikari

    НО я не вижу никакого смысла в использовании пула вообще. КХ коннекты очень быстрые. Внутри офф. jdbc драйвера (а вообще их 4 штуки) пулятся http конекты. По тестам select 1 каждый в новом коннекте работает 4-5 мс.
  • https://t.me/clickhouse_ru
    @den_crane #226711 03:21 PM, 15 Jul 2021
    там есть правда лишний sql при установлении коннекта select version, timezone() надо бы его выпилить чтобы еще ускорится
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @dzarlax #226713 03:23 PM, 15 Jul 2021
    Подскажите пожалуйста, есть ли какая-то команда чтобы массив превратить в стрингу, просто со значениями через запятую? Без скобок и кавычек.
  • https://t.me/clickhouse_ru
    как-то типа arrayStringConcat
  • https://t.me/clickhouse_ru
    перфетто, спасибо, совсем уже видеть доку перестал
  • https://t.me/clickhouse_ru
    Большое спасибо.
    Не ожидал что хикари подойдет (в доках его не видел кликхауса).

    Кстати насчет времени коннекта, похоже сильно зависит от железа под сервер (у нас слабое).
    Вот у меня так получается:
    Connection time to CH: 16
    Method: getData. Work time: 31
    Connection time to CH: 21
    Method: getData. Work time: 29
    Connection time to CH: 22
    Method: getData. Work time: 26

    Т.е. очень напрягает что коннект столько же времени занимает как и запрос. А этих запросов много бывает.
  • https://t.me/clickhouse_ru
    а пинг до сервера покажите?
  • https://t.me/clickhouse_ru
    @ikkalinkin #226718 03:32 PM, 15 Jul 2021
    Подскажите пожалуйста, в доке есть описание функции date_sub (https://clickhouse.tech/docs/ru/sql-reference/functions/date-time-functions/#date_sub), а при выполнении запроса пишет, что такую функцию не знает:

    Code: 46, e.displayText() = DB::Exception: Unknown function date_sub: While processing device_id, session_id, event_datetime AS screen_saver_end_datetime, toInt64(YPathExtract(event_value, '/period', 'Float64')) AS screen_saver_time, date_sub('second', screen_saver_time, toDateTime(screen_saver_end_datetime)) AS screen_saver_start_datetime (version 21.4.1.1-arcadia)
    Функции для работы с датами и временем | Документация ClickHouse

    Функции для работы с датами и временем Поддержка часовых поясов Все функции по работе с датой и временем, для которых эт

  • https://t.me/clickhouse_ru
    там нельзя unit строкой

    select DATE_SUB(day, today(), yesterday());
  • https://t.me/clickhouse_ru
    @ikkalinkin #226720 03:35 PM, 15 Jul 2021
    спасибо!
  • https://t.me/clickhouse_ru
    для секунд можно просто минус использовать
  • https://t.me/clickhouse_ru
    @ikkalinkin #226722 03:37 PM, 15 Jul 2021
    имеешь ввиду: toDateTime(date_string) - number_of_seconds?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @ikkalinkin #226724 03:37 PM, 15 Jul 2021
    спасибо!
  • https://t.me/clickhouse_ru
    Ответ от xx: число байт=32 время=6мс TTL=62
    Ответ от xx: число байт=32 время=6мс TTL=62
    Ответ от xx: число байт=32 время=6мс TTL=62
    Ответ от xx: число байт=32 время=5мс TTL=62
  • @mluchkin #226727 03:48 PM, 15 Jul 2021
    Подскажите пожалуйста какие есть варианты решения :
    При попытке сделать alter :
    Metadata on replica is not up to date with common metadata in Zookeeper. Cannot alter

    В логе :

    Cannot execute alter metadata queue-0000614804 with version 10 because another alter 9 must be executed before

    SELECT *
    FROM system.replicas :

    columns_version: -1
  • https://t.me/clickhouse_ru
    обычно должно чиниться c detach table / attach table
  • @mluchkin #226729 03:53 PM, 15 Jul 2021
    не чинится(
  • https://t.me/clickhouse_ru
    select * from system.mutations where not is_done
  • @mluchkin #226731 03:55 PM, 15 Jul 2021
    есть две записи
  • @mluchkin #226732 03:55 PM, 15 Jul 2021
    два дроп колумн
  • https://t.me/clickhouse_ru
    там есть колонки с текстом ошибки и колонка parts_to_do
  • https://t.me/clickhouse_ru
    select * from system.merges
  • @mluchkin #226736 03:58 PM, 15 Jul 2021
    пусто
  • @mluchkin #226737 03:59 PM, 15 Jul 2021
    переодически чет появляется.. но чаще пусто
  • https://t.me/clickhouse_ru
    select * from system.parts where name = имя_из_parts_to_do_names
  • @mluchkin #226739 04:00 PM, 15 Jul 2021
    в предыдущем запросе есть вот такое да
  • @mluchkin #226740 04:00 PM, 15 Jul 2021
    elapsed: 0.000864935
    progress: 0
    num_parts: 1
    source_part_names: ['all_398834_398834_0']
    result_part_name: all_398834_398834_0_398835
    source_part_paths: ['/var/lib/clickhouse/store/4eb/4ebf966e-4e12-41ff-9e2c-94af1f89145a/all_398834_398834_0/']
    result_part_path: /var/lib/clickhouse/store/4eb/4ebf966e-4e12-41ff-9e2c-94af1f89145a/all_398834_398834_0_398835/
    partition_id: all
    is_mutation: 1
    total_size_bytes_compressed: 13098
    total_size_marks: 2
    bytes_read_uncompressed: 0
    rows_read: 0
    bytes_written_uncompressed: 0
    rows_written: 0
    columns_written: 0
    memory_usage: 0
    thread_id: 10972
    merge_type:
    merge_algorithm:
  • @mluchkin #226741 04:00 PM, 15 Jul 2021
    это похоже оно
  • https://t.me/clickhouse_ru
    я не понял что значит пусто а потом не пусто ?
  • @mluchkin #226743 04:02 PM, 15 Jul 2021
    значит выполняешь 4 раза запрос 2 пусто 2 нет =)
  • https://t.me/clickhouse_ru
    а вы в один и тот же КХ ходите?
  • @mluchkin #226745 04:03 PM, 15 Jul 2021
    и всегда он висит
  • @mluchkin #226746 04:03 PM, 15 Jul 2021
    да я локально
  • всегда вот этот отдает
  • @mluchkin #226748 04:03 PM, 15 Jul 2021
    но иногда пусто
  • https://t.me/clickhouse_ru
    читайте лог, ищите там all_398834_398834_0
  • @mluchkin #226750 04:04 PM, 15 Jul 2021
    лог просто засыпает с головой
  • @mluchkin #226751 04:05 PM, 15 Jul 2021
    DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 47, e.displayText() = DB::Exception: Missing columns: 'season_wear' 'site_section' while processing query:
  • @mluchkin #226752 04:05 PM, 15 Jul 2021
    Cannot execute alter metadata queue-0000614804 with version 10 because another alter 9 must be executed before
  • @mluchkin #226753 04:06 PM, 15 Jul 2021
    судя по логу он пытается выполнить запрос на таблицу где нет поля ( было удалено через alter )
  • @mluchkin #226754 04:06 PM, 15 Jul 2021
    но что то пошло не так…
  • @mluchkin #226755 04:07 PM, 15 Jul 2021
    изначальная причина : была таблица где сделали примерно 4 добавления через alter и потом 4 дропа ( того что добавили ) … и началось )
  • https://t.me/clickhouse_ru
    kill mutation where mutation_id = 00000002

    detach / attach
  • @mluchkin #226757 04:10 PM, 15 Jul 2021
    вторую тоже убиваем?
  • @mluchkin #226758 04:10 PM, 15 Jul 2021
    там две их
  • .
  • https://t.me/clickhouse_ru
    с ней тоже самое ? не поправилось после убийства первой?
  • @mluchkin #226761 04:12 PM, 15 Jul 2021
    да висит
  • @mluchkin #226762 04:12 PM, 15 Jul 2021
    килл аттач детач не помог ей )
  • @mluchkin #226763 04:12 PM, 15 Jul 2021
    03 продолжает висеть
  • @mluchkin #226764 04:19 PM, 15 Jul 2021
    после удаления и 03 ошибки с metadata вроде ушли из лога… осталась ошибка
  • @mluchkin #226765 04:19 PM, 15 Jul 2021
    DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 47, e.displayText() = DB::Exception: Missing columns: 'season_wear' 'site_section' while processing query:
  • @mluchkin #226766 04:19 PM, 15 Jul 2021
    видимо он пытается запрос выполнить который должен был пройти когда колонка еще была
  • https://t.me/clickhouse_ru
    надо на реплике смотреть, возможно там тоже надо убивать мутации
  • @mluchkin #226768 04:29 PM, 15 Jul 2021
    Спасибо огромное! помогли сдвинуться с мертвой точки)
  • @mluchkin #226769 04:29 PM, 15 Jul 2021
    буду дальше копать
  • https://t.me/clickhouse_ru
    @Pershin_Artem_spb #226770 04:56 PM, 15 Jul 2021
    Относительно недавно было пофикшено https://github.com/ClickHouse/ClickHouse/issues/23508
    В релиз ноутес для 21.6 написано в секции багфикс.

    но при этом при попытке заапгрейдится на инстансе, где есть таблицы с флоатинг-поинт ключом партицирования летит все та же ошибка
    2021.07.15 16:14:01.401495 [ 33 ] {} <Error> auto DB::MergeTreeData::loadDataParts(bool)::(anonymous class)::operator()() const: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 2. Bytes expected: 8., Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8b6e1fa in /usr/bin/clickhouse
    1. DB::ReadBuffer::readStrict(char*, unsigned long) @ 0x8ba928d in /usr/bin/clickhouse
    2. DB::SerializationNumber<double>::deserializeBinary(DB::Field&, DB::ReadBuffer&) const @ 0xf43271a in /usr/bin/clickhouse
    3. DB::MergeTreePartition::load(DB::MergeTreeData const&, std::__1::shared_ptr<DB::IDisk> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x1028540f in /usr/bin/clickhouse
    4. DB::IMergeTreeDataPart::loadPartitionAndMinMaxIndex() @ 0x101147b9 in /usr/bin/clickhouse
    5. ? @ 0x1019aa1c in /usr/bin/clickhouse
    6. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8bb0fd8 in /usr/bin/clickhouse
    7. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() @ 0x8bb299f in /usr/bin/clickhouse
    8. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8bae51f in /usr/bin/clickhouse
    9. ? @ 0x8bb1a43 in /usr/bin/clickhouse
    10. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    11. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.6.7.57 (official build))

    allow_floating_point_partition_key=1 включено в настройках сервера
    апгрейжусь с 20.4.4.18 до 21.6.7.56
    Can't attach table with Int64 partitioning key in ClickHouse v21.3 · Issue #23508 · ClickHouse/ClickHouse

    We're trying to upgrade ClickHouse server from v20.11.7.16 to v21.3.6.55-lts (VERSION_GITHASH 11776e9) We have following table: CREATE TABLE db.table ( `id` Int64, `field2` String, `field3`...

  • https://t.me/clickhouse_ru
    создавайте issue, там покажите show create table
  • https://t.me/clickhouse_ru
    Добрый вечер!
    Так же столкнулись с проблемой CPU 100%. Я тут не много тугой. а про какую именно очередь идет речь ? И вопрос, а можно как ни будь пользователям порезать по ресурсам потребление CPU(например уменьшить thread)
  • https://t.me/clickhouse_ru
    @zonedberg #226774 06:42 PM, 15 Jul 2021
    Здравствуйте, кто нибудь разбирается в clickhouse-cpp?
  • А как лучше по матвью получить таблицы-назначения? Парсить data_paths или create_table_query?
  • https://t.me/clickhouse_ru
    какую задачу решаете?
  • @abaidarov #226777 07:51 PM, 15 Jul 2021
    Хочу визуализировать зависимости между таблицами в виде графа вершины-таблицы и ребра-матвью
  • @abaidarov #226778 07:51 PM, 15 Jul 2021
    src и matview достаются запросом Сергея. Хочу понять как лучше dst получить
  • @abaidarov #226779 08:00 PM, 15 Jul 2021
    Пока только такое придумал
    select name, arrayMap(x -> splitByChar('/', x)[-2], data_paths) from system.tables where name = '...';
  • 16 July 2021 (144 messages)
  • https://t.me/clickhouse_ru
    @kk_dev #226780 01:39 AM, 16 Jul 2021
    Не рабоатает условие host_regexp по фильтрации по хосту источника. Подскажите какие могут быть решения, как можно отдебажить ?

    В clickhouse operator указана директива, в clickhouse тоже. Подключаюсь из разных подов (т.е. с разных src host ) с разными именами, везде достутп clickhouse открыт, различные варианты regexp пробовал (даже умышленно ставил неправильный host_regexp), ощущение, что эта настройка игнорируется.
    Если указать в
    chConfigNetworksHostRegexpTemplate
    заведомо не верный паттерн, то clickhouse после переустановки не стартанет.

    Развернуто с помощью clickhouse operator 0.14
    clickhouse-operator:
    cat /etc/clickhouse-operator/config.yaml | grep chConfigNetworksHostRegexpTemplate
    chConfigNetworksHostRegexpTemplate: "(.*clickhouse.*)"

    Clickhouse cluster:
    <users>
    <demo>
    <networks>
    <host_regexp>.*xyz.*</host_regexp>
    <ip>0.0.0.0/0</ip>
    <ip>::/0</ip>
    </networks>
    <password_sha256_hex>ebf22d8bfa40cc5ae972270a06934fe1056ea7227859ad7d39c6fe9c497db70f</password_sha256_hex>
    <profile>default</profile>
    <quota>default</quota>
    </demo>
    <default>
    <networks>
    <host_regexp>(.*clickhouse.*)</host_regexp>
    <ip>0.0.0.0/0</ip>
    <ip>::/0</ip>
    </networks>
    <profile>default</profile>
    <quota>default</quota>
    </default>
    </users>
  • https://t.me/clickhouse_ru
    у них через батчи через внешнюю очередь идет вставка в clickhouse
    соответственно 100% CPU на clickhouse Это нормально
    100% CPU они получают на SELECT а не на INSERT

    соответственно если нет возможности несколько clickhouse зайдествовать и вставлять в разные сервера
    то проще мониторить длинну очереди
  • https://t.me/clickhouse_ru
    Спасибо за ответ. Теперь понятно что 100 утилизация ЦПУ при селектах это нормально. Но при такой утилизации мы заметили, что некоторые таблицы могут переходить в статус readonly и не много растет delay. Плюс мы не можем делать alter на изменение таблиц, начинаем падать по ошибке взаимодействия реплики с zk. То есть 100 утилизация ведёт к проблемам работы реплики и zk
  • https://t.me/clickhouse_ru
    @dkondov #226783 06:40 AM, 16 Jul 2021
    доброе утро! функция SELECT isValidJSON('"value"') вернула 1, так и должно быть? "value" является валидным JSON?
  • https://t.me/clickhouse_ru
    Да, есть же онлайн валидаторы
  • https://t.me/clickhouse_ru
    спс
  • https://t.me/clickhouse_ru
    @kk_dev #226788 08:45 AM, 16 Jul 2021
    Не удалется crd из k8s удалить.

    k8s 1.18
    chi-operator: 0.14

    При переустановке пишет, что предыдущий crd не удален.
    Error: rpc error: code = Unknown desc = release clickhouse-operator failed: object is being deleted: customresourcedefinitions.apiextensions.k8s.io "clickhouseinstallations.clickhouse.altinity.com" already exists

    Получается удалить только таким патчем:
    kubectl patch crd/clickhouseinstallations.clickhouse.altinity.com -p '{"metadata":{"finalizers":[]}}' --type=merge

    Есть ли способ пофиксить это поведение, чтобы удаление было корректно ?
  • https://t.me/clickhouse_ru
    получилось создать без on cluster. Но это как-то неудобно по всем годам бегать создавать. И неочевидно.
  • https://t.me/clickhouse_ru
    @Aleksey_Veselov #226790 08:52 AM, 16 Jul 2021
    всем привет!) подскажите плз, хочу выделить число из стринги через самое простое решение - использовав регулярку '\d+'

    SELECT
    extract('hard_80_first','\d+')

    ПО логике я должен получить в результате число 80 но получаю 'd'.
    Видимо у нас какая-то старая версия КХ, потому что в бд другого проекта все работает правильно и в результате функции получается число 80.
    Полагаю что эта версия как-то иначе интепретирует паттерн '\d+'.

    Подскажите плз, кто - то сталкивался с этим, как можно решить проблему? мб вместо обратной косой черты надо испльзовать что-то другое?
  • https://t.me/clickhouse_ru
    если вы делаете ALTER ... UPDATE\DELETE или OPTIMIZE ... постоянно
    IMHO у вас сломана архитектура... =) и надо искать что-то другое вместо того чтобы пытаться крутить кастыли в кликхаусе
  • https://t.me/clickhouse_ru
    Неа, мы очень часто добавляем колонки в таблицы :)
  • https://t.me/clickhouse_ru
    JSON парсите какой то наверное =)
  • @fibersel #226794 08:59 AM, 16 Jul 2021
    Привет, подскажите пожалуйста такой момент

    Есть таблица X с партицированием по колонке dt
    Я хочу сделать обычную вьюшку в духе

    CREATE VIEW flattened AS SELECT * FROM X FLATTEN BY y

    Вопрос: когда будут идти запросы вида
    SELECT *
    FROM flattened
    WHERE dt >= 20210710
    кх учтёт эту фильтрацию по dt при запросе к основной таблице через вьюшку?
  • @fibersel #226795 09:00 AM, 16 Jul 2021
    т.е. хотелось бы, чтобы он исходную таблицу отфильтровал по dt перед тем, как он будет flatt'ить её
  • https://t.me/clickhouse_ru
    а сервер при рестарте не будет жаловаться на такие вьюхи с custom settings? Ведь при рестарте настройки не заданы.
  • https://t.me/clickhouse_ru
    попробуйте \\d или \\\d... Ну или [0-9]
  • https://t.me/clickhouse_ru
    огромное спасибо!!))) я с двумя пробовал а с тремя нет!)) с тремя получилось)))
  • https://t.me/clickhouse_ru
    лучше всё-таки [0-9], а то после обновления запросы могут не заработать
  • https://t.me/clickhouse_ru
    Да, все верно. По этому и возникает вопрос по утилизации CPU. Вот и хотелось бы ограничить как то потребление ЦПУ. Есть какие нибудь идеи в какую сторону можно было бы покопать?
  • В докере можно ограничивать CPU для контейнера…
  • https://t.me/clickhouse_ru
    У нас железяки
  • https://t.me/clickhouse_ru
    @romul87 #226803 09:16 AM, 16 Jul 2021
    В теории можно поиграться cgroup, но опять же это костыль
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226780 #226804 09:29 AM, 16 Jul 2021
    @BloodJazMan Можете помочь с этим ?
  • https://t.me/clickhouse_ru
    max_threads и os_thread_priority через SETTINGS или через profiles ограничивать
  • https://t.me/clickhouse_ru
    тут закрывающий кавычки не хватает как минимум
    запустите какой нибудь kubectl sniff
    на 53й порт в поде clickhouse
    и посмотрите PTR запросы которые делает сервер в попытке отрезолвить ваши клиентские подключения...
    дальше смотрите совпадает он с host_regexp или нет
  • https://t.me/clickhouse_ru
    Понял пропишу в пользовательских профилях ограничения. Я заметил когда пользователи бегают через дистр таблицу, то на репликах в таблице процессес видно, что user внутренний который прописан в конфиге кластера, а user name (содержит имя пользователя кто сделал селект). В этом случаи настройки профиля пользователя все равно ведь работают
  • https://t.me/clickhouse_ru
    ну он и должен быть тот который в remote_servers прописан или default
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226788 #226812 09:36 AM, 16 Jul 2021
    @BloodJazMan А с этим подскажете в чем может быть дело ?
  • https://t.me/clickhouse_ru
    А попробуйте и расскажете? (на тесте)
  • https://t.me/clickhouse_ru
    crd нельзя удалить пока есть хотя бы один CR ссылающийся на этот CRD
  • https://t.me/clickhouse_ru
    попробуйте оператор 0.15.0 поставить
    или 0.14.1
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226815 #226816 09:40 AM, 16 Jul 2021
    +
  • https://t.me/clickhouse_ru
    странно что финалайзер не отрабатывает
    а deployment оператора к этому моменту уже есть?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226818 #226819 09:41 AM, 16 Jul 2021
    Хорошо, спасибо
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226817 #226820 09:41 AM, 16 Jul 2021
    нет, нету. На сколько я видел ничего не было от clickhouse
  • https://t.me/clickhouse_ru
    Хм, то есть я не могу просто воткнуть ограничения на профиле пользователя(у меня пользователь ский профиль и профиль под которым кластер взаимодействует между репликами это два разных профиля) обязательно нужно устанавливать ограничения на профиль кластера? Блин печаль
  • https://t.me/clickhouse_ru
    ну вообще странно, надо бы финалайзеры для CRD посмотреть
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226822 #226823 09:42 AM, 16 Jul 2021
    Где он описан, как его посмотреть ?
  • https://t.me/clickhouse_ru
    не очень понимаю что такое профиль кластера
    можно попробовать через SETTINGS задавать в соответсвующих query
    или через query string параметры если через HTTP запросы делаете

    но не уверен что это будет пробрасываться для distributed query select
  • https://t.me/clickhouse_ru
    В настройках кластера в конфиге прописан пользак default и все реплики через него общаются. Пользователей мы выгнали из профиля default и создали им отдельный профиль с кучей ограничений по памяти, лимитам, времени запроса и тд
  • https://t.me/clickhouse_ru
    @TigProg #226826 09:48 AM, 16 Jul 2021
    Добрый день, коллеги!
    Вчера наткнулся на баг, который решили здесь https://github.com/ClickHouse/ClickHouse/pull/18381 (в мою версию ещё не вмержено)
    Хотелось бы узнать, почему набор партов, среди которых есть wide теоретически может оптимизироваться в compact.
    Я думал, эвристика для определения размера партов это некоторое число строк, при меньшем значении которого парт будет compact, иначе wide
    Restrict merges from wide to compact parts by CurtizJ · Pull Request #18381 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    ну, молодцы
  • https://t.me/clickhouse_ru
    Я как понимаю это сарказм :)
  • https://t.me/clickhouse_ru
    нет, реально молодцы, мало кто так делает

    теперь вы говорите что у вас все равно 100% CPU?
    из под какого пользователя и для каких запросов?

    по идее system.thread_log это может показать правда сходу я запрос не напишу
  • https://t.me/clickhouse_ru
    Да. Приходит пользователи и очень часто любят запускать селекты по полям у которых нет индексов и мы на репликах улетаем в 100%. Кто кушает ресурсы сразу видно. На репликах видно, что запрос типо под пользователем default, вызван пользователем test(хотя, я вспомнил лимит так работают, селекты которые делаются больше отведённого времени обрываются).
  • https://t.me/clickhouse_ru
    @romul87 #226832 10:02 AM, 16 Jul 2021
    А можно пример query. Я как понимаю select name from database.table where name=test settings max_threads = 1. Ну и само собой пропишу пользователям ещё в профиль и погоняю тесты
  • https://t.me/clickhouse_ru
    @romul87 #226833 10:05 AM, 16 Jul 2021
    А на что именно обратить внимание в thread_log?
  • https://t.me/clickhouse_ru
    @Muradnetpeak #226834 10:07 AM, 16 Jul 2021
    Здравствуйте коллеги. У меня есть таблица с 3 колонками. Первая колонка название и по этой колонке будет производится группирование, вторя колонка это массив из 11 элементов типа UIint32, третья колонка это дата. Я пишу запрос который группирует по первой колонке т.е. по имени. А массив суммирую по элементам все первые все вторые и т.д. и получается результат название и массив из 11 элементов. Вот запрос :
    SELECT
    name,
    array(SUM(a.ranksCount[1]),
    SUM(a.ranksCount[2]),
    SUM(a.ranksCount[3]),
    SUM(a.ranksCount[4]),
    SUM(a.ranksCount[5]),
    SUM(a.ranksCount[6]),
    SUM(a.ranksCount[7]),
    SUM(a.ranksCount[8]),
    SUM(a.ranksCount[9]),
    SUM(a.ranksCount[10]),
    SUM(a.ranksCount[11])) AS ranksCount,
    stat_date
    FROM
    factories.cars a
    where
    name = 'BMW'
    and stat_date >= (today() - interval 2 week)
    and stat_date<today()
    GROUP BY
    name ,
    stat_date
    ORDER BY stat_date DESC LIMIT 1;
    Этот запрос работает правильно, но я бы хотел избавится от SUM и использовать вместо array arraySum. При использование arraySum выдает ошибку. Вот запрос который я использовал с arraySum:
    SELECT
    name,
    arraySum(
    a.ranksCount[1],
    a.ranksCount[2],
    a.ranksCount[3],
    a.ranksCount[4],
    a.ranksCount[5],
    a.ranksCount[6],
    a.ranksCount[7],
    a.ranksCount[8],
    a.ranksCount[9],
    a.ranksCount[10],
    a.ranksCount[11]) AS ranksCount,
    stat_date
    FROM
    factories.cars a
    where
    name = 'BMW'
    and stat_date >= (today() - interval 2 week)
    and stat_date<today()
    GROUP BY
    name ,
    stat_date
    ORDER BY stat_date DESC LIMIT 1;
  • https://t.me/clickhouse_ru
    ну по идее у вас thread_id совпадать должен с id треда в OS
    соответсвенно там дальше надо
    initial_user_id смотреть и master_thread_id
  • https://t.me/clickhouse_ru
    то есть я имел ввиду см. top
    оттуда получаем pid для clickhouse
    оттуда смотрим есть ли что в system.query_thread_log и кто это вообще
  • https://t.me/clickhouse_ru
    ну да, через SETTINGS max_threads=1
    вообще другая производительнсоть для одной query получается
    но я не уверен что оно в distributed пробрасывается, смотреть надо
  • https://t.me/clickhouse_ru
    Если у кого есть какие то мысли не стесняйтесь пишите.
  • какая ошибка?
    и судя по всему агрументом arraySum должен быть массив
  • https://t.me/clickhouse_ru
    Да из за того что в аргументах не массив и выводится ошибка. А ест ли такая функция которая решила бы мою проблему?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #226823 #226841 10:20 AM, 16 Jul 2021
    Не подскажите, где его посмотреть ?
    эта проблема через раз появляется
    @BloodJazMan
  • https://t.me/clickhouse_ru
    Спасибо большое, выйду из отпуска начну все тестить и смотреть
  • https://t.me/clickhouse_ru
    ну так вы ж его сами патчили

    kubectl get crd -o yaml
    там смотреть
  • https://t.me/clickhouse_ru
    @herkita #226844 10:37 AM, 16 Jul 2021
    Добрый день. Выполняю SELECT итерациями, после каждой итерации пишу результат в excel файл. Из за разбивки по чанкам, некоторые агрегированные данные выгружаются в разные чанки, из за этого получается задваивание строчек в файле. Вопрос есть ли какая то настройка в ClickHouse, которая позволит выгружать итерациями блоки, согласно указанной группировке (на скрине field1, field2), независимо от размера max_block_size? (SELECT очень крупный, увеличение размера блока не помогает)
  • sumForEach попробуйте
  • @KevinMort #226846 11:16 AM, 16 Jul 2021
    Всем привет! Пытаюсь обратится к таблице с движком Distributed
    Пишет ошибку
    DB::Exception: Table default.bauart.pool_11 doesn't exist
    Хотя я нахожусь в нужной базе данных, в чем дело?
  • @githubreleases_bot #226847 b o t 11:17 AM, 16 Jul 2021
    ClickHouse/ClickHouse tagged: v21.6.8.62-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.6.8.62-stable
    Release notes:
    v21.6.8.62-stable
    Release v21.6.8.62-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.6.8.62-stable

  • https://t.me/clickhouse_ru
    имя таблицы с точкой?

    SHOW TABLES FROM default; таблицу показывает?
  • Так обращаюсь select * from bauart.pool_11_main;
  • https://t.me/clickhouse_ru
    хм... откуда тогда default добавился в ошибке?

    какой клиент?

    SHOW TABLES FROM bauart;
    что показывает?
  • @KevinMort #226852 11:20 AM, 16 Jul 2021
    Клиент default
  • https://t.me/clickhouse_ru
    покажите еще раз запрос
    и ошибку
    а еще попробуйте запрос выполнить не в datagrip а в clickhouse-client
  • CREATE TABLE pool_11_main
    (
    case String,
    event String,
    time DateTime,
    numeric Int32
    )
    ENGINE = Distributed(logs, default, pool_11, rand());

    У меня в движке была ошибка
  • @KevinMort #226855 11:26 AM, 16 Jul 2021
    При создании указал базу default
  • @KevinMort #226856 11:26 AM, 16 Jul 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    @stan_chechun #226857 11:28 AM, 16 Jul 2021
    Добрый день, ребят, подскажите пожалуйста, как можно решить следующую проблему,
    есть таблица с 8 колонками
    hash_slice(SHA-256),
    event_type(String),
    news_id(Uint64),
    stream_uuid(UUID),
    money(Float64),
    money_with_commission(Float64),
    created_at(Datetime),
    sign Int8
    Движок таблицы CollapisngMergeTree(sign)
    ORDER BY в таблице (hash_slice, event_type)
    Нужно сделать аггрегацию этой таблицы, по toStartOfHour(created_at) и hash_slice
    Для этих целей был выбран движок SummingMergeTree((money, money_with_commission))
    Для 2-х типов событий все колонки кроме money и money_with_commission заполнены, а вот для третьего заполены лишь hash_slice, event_type, money, money_with_commission. А другие равны Null, CH при агрегации в каких то случаях, видимо когда последнее событие с нулами, при агрегации трет поля news_id и stream_uuid и в агрегационной статистике они равны NULL, а иногда нет, как сделать так, чтобы при агрегации нулы игнорировались если в событиях выше или ниже есть данные в колонках stream_uuid или news_id и при агрегации эти колонки всегда были заполнены? Есть идеи?
  • https://t.me/clickhouse_ru
    sign для CollapsingMergeTree не может быть UInt8 сделайте Int8
  • https://t.me/clickhouse_ru
    Я препутал, да, там Int8, спасибо))
  • https://t.me/clickhouse_ru
    уберите для money и money_with_comission Float64 замените на Decimal64
    и уберите Nullable
    пусть будет просто 0

    вторая таблица из первой заполняется через Materialized VIEW?
  • https://t.me/clickhouse_ru
    @stan_chechun #226861 11:32 AM, 16 Jul 2021
    угу
  • https://t.me/clickhouse_ru
    Спасибо)) А почему именно Decimal64?
  • https://t.me/clickhouse_ru
    при суммировании будет не будет ошибок округления из Float
    float для денег не предназначен
  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    @BloodJazMan #226865 11:36 AM, 16 Jul 2021
    вообще логика у всех SummingMergeTree или AggregatingMergeTree или Replacing
    простая

    если при слиянии двух партов у двух строк одинаковые значения для полей из ORDER BY
    тогда делается то действие, которое прописано в названии движка
    Summing
    суммируются поля
    Replacing заменяется на одно значение (или на последнее для большего значения поля которое определено как version)

    Aggregating
    проводится Merge для всех State полей и записывается конечный State в одну строку
  • https://t.me/clickhouse_ru
    Тогда как я понял нужен агрегейт
  • https://t.me/clickhouse_ru
    Прости, что отвлекаю, но есть вопрос, AggregatingMergeTree требует группировку по типу GROUP BY datetime, hash_slice, stream_uuid, news_id, тогда у меня в статистике получается не одна строчка а 2, так как 3-е событие имеет в колонках stream_uuid и news_id NULL, а хотелось бы склеивать колонки по hash_slice и datetime.
  • https://t.me/clickhouse_ru
    А чем Summing не устроил?
  • https://t.me/clickhouse_ru
    А там проблема в том, что если в конце залетает событые у которого колонки news_id и stream_uuid NULL, summing переписывает их на NULL в агрегации
  • https://t.me/clickhouse_ru
    @stan_chechun #226870 12:14 PM, 16 Jul 2021
    И выходит что у пераых двух событиый данные есть, группирумем по hash_slice, а в агрегации данных нет
  • https://t.me/clickhouse_ru
    А интами их никак не сделать? Через coalesce в 0 превращать в мat view
  • https://t.me/clickhouse_ru
    Вот так выглядит таблциа, и нужно схлопывать по datetime(часы) и hash, когда делаем агрегацию с summing на выходе получаем вот это
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @stan_chechun #226874 12:25 PM, 16 Jul 2021
    И как там зафигачить коалески, пока хз
  • https://t.me/clickhouse_ru
    @ygrishaev #226875 12:26 PM, 16 Jul 2021
    Для этого все в интах должно быть кмк
  • https://t.me/clickhouse_ru
    @ygrishaev #226876 12:26 PM, 16 Jul 2021
    Как просуммируются uuid c другим uuid?
  • https://t.me/clickhouse_ru
    они не учавствуют в суммировании, SummingMergeTree((money, money_with_commision))
  • https://t.me/clickhouse_ru
    Его нет в ORDER BY, поэтому суммируется
  • https://t.me/clickhouse_ru
    ORDER BY содержит в себе только datetime и hash_slice, чтобы КХ понимал за что цепляться
  • @612200930 #226881 12:59 PM, 16 Jul 2021
    Добрый день!

    Вопрос по отчистке СН. Партиции организованы по суточно, данные требуется хранить определенное время. Можно ли на уровне операционной системы просто удалять файлы просроченных партиций?
  • https://t.me/clickhouse_ru
    Можно это сделать в кх
    merge tree настройка таблицы

    ttl_only_drop_parts
  • @612200930 #226883 01:00 PM, 16 Jul 2021
    Большое спасибо !
  • https://t.me/clickhouse_ru
    ну вы сначала для таблицы TTL выражение задайте только
  • @612200930 #226885 01:26 PM, 16 Jul 2021
    да, прочитал в доке, спс!
  • https://t.me/clickhouse_ru
    @SomeTelegramUser #226886 01:26 PM, 16 Jul 2021
    Коллеги, использует кто-то словарь/движок для mongodb? Для него невозможно указать authSource?
  • https://t.me/clickhouse_ru
    @StasBatururimi #226887 01:30 PM, 16 Jul 2021
    Привет, а не подскажете почему такой запрос может вернуть 2 строчки, в одной из которых ids.transaction_id = NULL , а в другой не NULL

    select * from post.apple_attribution_event evts
    left join (
    select distinct x.transaction_id from post.apple_attribution_event x
    where x.event_name = 'install'
    ) ids on evts.transaction_id = ids.transaction_id
    where evts.transaction_id = '80a600d6-6bd3-424a-92f2-fc26ab28ad54'
  • https://t.me/clickhouse_ru
    @CherkashinSergey #226888 01:32 PM, 16 Jul 2021
    Господа. Я тут при обновлении с 21.6.5.37 на 21.7.3.14 столкнулся с интересной картиной: сломалась materialized view примерно такого содержания:
    CREATE MATERIALIZED VIEW blah_mv
    (
    ...
    `ips` AggregateFunction(groupUniqArray(5000), IPv6) CODEC(ZSTD),
    ...
    )
    ENGINE = AggregatingMergeTree()
    AS SELECT
    ...
    groupUniqArrayState(5000)(remote_addr6) AS ips,
    ...
    FROM blah_main
    Жалуется на то, что не может вставить данные неподходящего типа:
    Conversion from AggregateFunction(groupUniqArray, IPv6) to AggregateFunction(groupUniqArray(5000), IPv6) is not supported
    Собственно, на старой версии КХ эта вьюха вполне себе работала как от неё и ожидалось. Кто-нибудь сталкивался с чем-то подобным? Так стало задумано или всё-таки бага?
  • https://t.me/clickhouse_ru
    ну похоже что-то пере-оптимизировали
    шлите багу
  • https://t.me/clickhouse_ru
    Может, конечно, и можно довериться тому, что groupUniqArrayState(5000) из запроса всё-таки будет работать ограничителем. Но хочется всё-таки знать наверняка =)
  • @vvvjhaq #226891 02:14 PM, 16 Jul 2021
    Добрый день!
    Использую Merge для объединения 3х таблиц. Запрос к каждой из них по отдельности выполняется меньше 0.5 сек.
    Запрос к таблице Merge я не дождался еще(
    В чем может быть проблема?
  • https://t.me/clickhouse_ru
    join в запросе есть? какая версия КХ?
  • нет
    21.2.9.41
    Еще добавлю что объединиение 3 таблиц, там 3 вью внутри которых ограничение по датам захардкожены.
    Обращение к каждой из вью мгновенное.
  • https://t.me/clickhouse_ru
    не реализован пушдаун для этого https://github.com/ClickHouse/ClickHouse/issues/17413
    Predicate pushdown weird behaviour · Issue #17413 · ClickHouse/ClickHouse

    Description intro: updating CH from 20.4.3.16 to 20.10.3.30 and noticed an issue in performance (degrades in new because predicate fails to get to "data layer" correctly) in lower...