• 01 November 2021 (112 messages)
  • @stopost0 #241914 05:29 AM, 01 Nov 2021
    Насколько плоха идея под кластер из 3х zookeper взять 3 виртуалки в хетцнере?
  • https://t.me/clickhouse_ru
    Может КХ эс э сервис в яоблаке ?
  • Вопрос не в том, что нельзя в текущей реализации хэшировать. Нужно чтобы результат хэширования совпадал с результатом в MS SQL. Тогда можно надежно сравнивать содержимое баз данных: OLTP базы MS SQL, которая является источником данных для OLAP базы КХ. OLTP база очень активно изменяется, в том числе данные изменяются "задним числом" и инструментом согласования является сверка по хэшам. Регистрация изменений в данном случае не подходит - их много и быстрее сравнить хэши. Кроме того, регистрация изменений позволяет согласовать данные только двух баз, а сверка хэшей - "накатить" на любой бэкап базы OLAP
  • https://t.me/clickhouse_ru
    @dbalashov #241917 05:42 AM, 01 Nov 2021
    md5 можно уложить в guid :)
  • guid никак не связан с задачей согласования. Более того, в текущей реализации он может изменяться. Например, магазин два раза выслал отчет за день о продажах, а затем выслал одним документом. Предыдущие два документа будут удалены в системе и останется один. Но с точки зрения учета содержимое документов (суммарно в двух или в одном), одинаковое
  • нет, по тз на кх идет 2 шарда + 2 реплики на 4х серверах хетцнера, а про зукипер естественно забыли
  • https://t.me/clickhouse_ru
    @dbalashov #241920 05:51 AM, 01 Nov 2021
    я к тому что и md5 и guid занимают 16 байт, если задача както хранить встроенным типом данных - привести 16-байт хэша md5 к guid и хранить его как guid или uniqueidentifier в mssql
  • Для этого md5 (или SHA256) нужно вначале посчитать способом, который даёт одинаковый результат и в MS SQL и в КХ. Текущий алгоритм согласования данных считает хэш по документам за дату (не по каждому документу). И, если обнаружены изменения, в КХ полностью удаляются данные за день и "перезаливаются" новые из MS SQL.
  • @1063161973 #241922 06:03 AM, 01 Nov 2021
    ... как вариант можно было бы использовать вместо функции приведения типов toString() какую-либо функцию форматирования, которая число представляет с заданным количеством знаков после запятой (даже если там нули). Но подобной в документации КХ я не нашел (
  • https://t.me/clickhouse_ru
    ШТА? я имею в виду, может не заниаться поднятием своего КХ в хетзнере, а взять готовый в яндекс облаке ?
  • @1063161973 #241925 06:26 AM, 01 Nov 2021
    Да, в 21.10 можно выкрутиться с помощью пользовательской функции типа:

    CREATE FUNCTION format_dec AS (x, dec) ->
    mid(toString(x*exp10(dec)), 1, length(toString(x*exp10(dec)))-dec)
    || '.' ||
    mid(toString(x*exp10(dec)), length(toString(x*exp10(dec)))-dec + 1, 30)
    ;
    SELECT
    format_dec(235.1,2)

    Работать будет, но это, мне кажется, уже извращение. Лучше бы
    set output_format_decimal_trailing_zeros=1 работало, как в документации
  • @1063161973 #241928 06:55 AM, 01 Nov 2021
    CREATE FUNCTION format_dec AS (x, dec) ->
    mid(toString(round(x*exp10(dec),dec)), 1, length(toString(round(x*exp10(dec),dec)))-dec)
    || '.' ||
    mid(toString(round(x*exp10(dec),dec)), length(toString(round(x*exp10(dec),dec)))-dec + 1, 30)
  • @1222346560 #241930 07:07 AM, 01 Nov 2021
    Доброго времени суток. Подскажите пожалуйста где можно найти информацию про 'external group by'? У нас возникает проблема в одном из запросов если одновременни используются и two-level aggregation и external group by. Сам запрос имеет формат:

    SELECT k1, t1.p1 as p1, t2.p2 as p2
    FROM (
    -- 3.4M rows, 200Mb peak memory ysage
    SELECT k1, someExpression(pv) as p1
    FROM (
    SELECT k1, pv FROM inner_table1
    WHERE paritionCondition() AND (pn IN ('pn'))
    ) AS inner_data
    GROUP BY k1
    ) AS t1
    FULL OUTER JOIN (
    -- 2.5M rows, 3.62 peak memory usage, 2-level agg
    SELECT inner_table2.k1, inner_table3.p2
    -- 3.4M rows, 60Mb peak memory usage
    FROM inner_table2
    INNER JOIN (
    -- 19M rows, 0Mb peak memory usage
    SELECT k2, k3, k4, p2 FROM cnfx_temp_3222 WHERE someCondition()
    ) AS inner_table3 ON (inner_table2.k2 = inner_table3.k2) AND (inner_table2.k3 = inner_table3.k3) AND (inner_table2.k4 = inner_table3.k4)
    WHERE paritionCondition()
    ) AS t2 using (k1)
    WHERE k1 != 0

    если отключить exteral group by или two level aggregation то запрос укладывается в 5Gb, но если их не отключать, то требуется больще 30gb памяти. Это выглядит как баг, но не понятся кто его "триггерит"
  • @1222346560 #241931 07:09 AM, 01 Nov 2021
    складывается ощущение что сначала "256 hashtables per thread" сбрасываются на диск, а потом все вместе загружаются, причем в памяти держатся и запакованные и заспакованные данные
  • https://t.me/clickhouse_ru
    @konnectrl #241932 07:14 AM, 01 Nov 2021
    🤚, как можно быстро убрать дубликаты из таблицы MergeTree ? Из-за ошибки парсера появились
  • https://t.me/clickhouse_ru
    Как я понял, предложили считать хэш на стороне приложения, которое перекладывает данные из OLTP в КХ и сохранять в отдельный столбец, при сверке пересчитывать только на стороне OLTP и сравнивать с этим столбцом
  • https://t.me/clickhouse_ru
    OPTIMIZE TABLE ... DEDUPLICATE
    https://clickhouse.com/docs/ru/sql-reference/statements/optimize/
    OPTIMIZE | Документация ClickHouse

    OPTIMIZE Запрос пытается запустить внеплановое слияние кусков данных для таблиц. Внимание OPTIMIZE не устраняет причину

  • https://t.me/clickhouse_ru
    Спасибо
  • Нет, для каждой даты выполняется два запроса:
    1. к базе на сервере MS SQL
    2. к базе на сервере КХ
    Каждый из запросов возвращает хэш-сумму и, если они различаются, дата регистрируется в таблице с целью последующей "перезаливки" из MS SQL. Запросы 1, 2 выполняются в цикле по датам.
  • @1063161973 #241937 07:24 AM, 01 Nov 2021
    ... подобная пара запросов своя для каждого из типов документов, которые изменяют остатки. В результате расчеты остатков в 1С (база MS SQL) и КХ совпадают.
  • https://t.me/clickhouse_ru
    @konnectrl #241938 07:40 AM, 01 Nov 2021
    Как можно сделать быстро копию табличке ?
  • https://t.me/clickhouse_ru
    Сделать create table_copy as table и приаттачить туда все партишны из table
  • а это точно будет копия ?
    может лучше:

    CREATE TABLE newtable AS oldtable
    ;
    INSERT INTO newtable
    SELECT * FROM oldtable
  • https://t.me/clickhouse_ru
    PARTITION | ClickHouse Documentation

    Manipulating Partitions and Parts The following operations with partitions are available: DETACH PARTITION — Moves a par

  • 👍 спасибо за информацию
  • https://t.me/clickhouse_ru
    @nyoroon #241943 07:45 AM, 01 Nov 2021
    Там просто хардлинки создаются, при изменении данных будут новые парты в оригинальной таблице или копии
  • https://t.me/clickhouse_ru
    Окей, спасибо по тестим
  • https://t.me/clickhouse_ru
    @sashahit #241948 08:38 AM, 01 Nov 2021
    Всем привет! При обновлении clickhouse c с версии 20.3.8.53 до 20.12.8.5 при старте сервера получаю ошибку:
    2021.11.01 11:30:53.924108 [ 1 ] {} <Error> Application: DB::Exception: Maximum parse depth (1000) exceeded. Consider rising max_parser_depth parameter.: Cannot attach table `data`.`stream166` from metadata file /clickhouse/metadata/data/stream166.sql
    пробовал добавлять параметр max_parser_depth в config.xml и в секцию настроек default profile - не помогло. В ошибке все так же занчиться лимит 1000.
    Подскажите пожалуйста есть ли возможность увеличить лимит вызывающий ошибку и как это сделать?
  • Действительно быстро, даже не верится ) Таблица 173 G скопировалась за 2 секунды
  • @1063161973 #241950 09:03 AM, 01 Nov 2021
    Т.е. фактически копирования нет, линки на старые партиции. И только при изменении данных запись в свои парты.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #241919 #241951 09:10 AM, 01 Nov 2021
    поднять clickhouse-keeper на 3-х из них? Вроде как должно работать......
  • @xfangsx #241952 09:13 AM, 01 Nov 2021
    Добрый день.

    Тестирую MaterializedPostgreSQL на облочном клике 21.10.2.15.

    [1002] ClickHouse exception, message: std::exception.
    Code: 1001, type: pqxx::broken_connection, e.what() = connection to server at __ failed:
    FATAL: must be superuser or replication role to start walsender (version 21.10.2.15 (official build))

    выдал роль репликации пользователю в PG и теперь запрос на создание таблички выдает

    [1002] ClickHouse exception, message: std::exception.
    Code: 1001, type: pqxx::usage_error, e.what() = Started new transaction while transaction was still active. (version 21.10.2.15 (official build))

    Но такую же ошибку начал выдавать ещё до того как выдал права, так понимаю при первой попытке создания таблицы он не погасил запрос/коннект, куда смотреть? Долбить поддержку облака?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #241930 #241954 09:17 AM, 01 Nov 2021
    а почему у вас правые таблицы больше левых? В КХ нет оптимизации в этом месте. Надо делать руками.
  • https://t.me/clickhouse_ru
    @koshakm5 #241956 10:11 AM, 01 Nov 2021
    Всем привет, случилась полная потеря данных в Zookeeper, нашёл что с 21.7 в Clickhouse появился механизм восстановления реплик SYSTEM RESTORE REPLICA, хочу обновить кликхаус и воспользоваться механизмом восстановления, был у кого-нибудь такой опыт?
  • https://t.me/clickhouse_ru
    Большой кх?
  • https://t.me/clickhouse_ru
    @koshakm5 #241958 10:27 AM, 01 Nov 2021
    большой )
  • https://t.me/clickhouse_ru
    Сколько таблиц-партиций и терабайт?
  • https://t.me/clickhouse_ru
    @koshakm5 #241960 10:28 AM, 01 Nov 2021
    5.5 терабайт
  • https://t.me/clickhouse_ru
    @koshakm5 #241961 10:28 AM, 01 Nov 2021
    таблиц сейчас
  • https://t.me/clickhouse_ru
    @unamedrus #241962 10:28 AM, 01 Nov 2021
    И версия
  • https://t.me/clickhouse_ru
    @koshakm5 #241963 10:30 AM, 01 Nov 2021
    20.3.15.133-1
  • https://t.me/clickhouse_ru
    @koshakm5 #241964 10:30 AM, 01 Nov 2021
    40 таблиц
  • https://t.me/clickhouse_ru
    @unamedrus #241965 10:32 AM, 01 Nov 2021
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-zookeeper/altinity-kb-recovering-from-complete-metadata-loss-in-zookeeper/

    > 20.3.15.133-1

    Старенькая версия

    Можете попробовать еще скрипт, что бы не обновляться

    https://github.com/Altinity/clickhouse-zookeeper-recovery
    GitHub - Altinity/clickhouse-zookeeper-recovery

    Contribute to Altinity/clickhouse-zookeeper-recovery development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    ага, я это видел, но обновление всё равно в планах было
  • https://t.me/clickhouse_ru
    @koshakm5 #241967 10:34 AM, 01 Nov 2021
    я там у вас и нашёл про 21.7
  • https://t.me/clickhouse_ru
    Ну тогда смотрите все changelog между версиями

    https://docs.altinity.com/altinitystablebuilds/releasenotes/

    И помните, что скорее всего вниз вы не сможете сделать downgrade
    Release Notes

    Release Notes for Altinity Stable

  • https://t.me/clickhouse_ru
    @koshakm5 #241969 10:35 AM, 01 Nov 2021
    да, про невозможность downgrade в курсе, спасибо
  • https://t.me/clickhouse_ru
    @d4rw1n1s7 #241973 11:47 AM, 01 Nov 2021
    всем здравствуйте. есть вопрос, насколько оправдано использование кликхауса в качестве хранилища таим-серий с учетом вставки каждого события отдельно(не батчами). сейчас вроде бы справляется, но пока нагрузки особой нету, и ожидаем, что в будущем, в пиках будет приходить от 1-5к запросов в секунду, пики ожидаем раз в 10-30 минут. игровой проект, собираемся хранить логи всех действий игроков.
  • https://t.me/clickhouse_ru
    Используйте какой-то kittenhouse или ему подобное, и будут у Вас батчи
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @d4rw1n1s7 #241977 11:53 AM, 01 Nov 2021
    всем спасибо!
  • https://t.me/clickhouse_ru
    INSERT INTO | Документация ClickHouse

    INSERT Добавление данных. Базовый формат запроса: INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v2

  • https://t.me/clickhouse_ru
    вот как раз из-за этого замечания и возник вопрос
  • https://t.me/clickhouse_ru
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @konnectrl #241981 12:00 PM, 01 Nov 2021
    Сказано до 15 тысяч запросов в секунду
  • https://t.me/clickhouse_ru
    ещё в новых версиях планируется https://youtu.be/W6h3_xykd2Y?t=4853
    ClickHouse: онлайн-встреча 19 октября 2021

    У нас много новостей :) Расскажем о больших организационных изменениях в ClickHouse, об UDF in ClickHouse и о шифровании хранимых данных в ClickHouse. Программа: 0:00:00 - Таймер 0:10:17 - Открытие 0:14:47 - UDF in ClickHouse 0:38:40 - Шифрование хранимых данных в ClickHouse 1:17:15 - Потрясающие возможности ClickHouse 1:58:02 - Ответы на вопросы Добавляйтесь в телеграмм сообщество неравнодушных к ClickHouse: https://t.me/clickhouse_ru

  • https://t.me/clickhouse_ru
    @d4rw1n1s7 #241983 12:05 PM, 01 Nov 2021
    всем большое спасибо, вы очень помогли!
  • https://t.me/clickhouse_ru
    @TrueCarry #241984 12:07 PM, 01 Nov 2021
    А что будет происходить если делать много маленьких инсертов? Начнут падать ошибки выполнения запроса вставки?
  • https://t.me/clickhouse_ru
    да, будет не успевать мержить и кидать too many parts
    много файлов на диске создается, надо много iops, большой оверхед по ресурсам
  • https://t.me/clickhouse_ru
    Если в буферные таблицы, то ничего особо страшного. Впрочем, если вставлять слишком быстро по чуть-чуть, то, по моему опыту, заканчиваются доступные соединения в первую очередь и все остальные получают ошибку вроде "too many concurrent queries", или же ошибки ZooKeeper, если совсем мелкие вставки в нижележащие таблицы слишком часто
  • потому-что жизнь зла =) это временные "внешние данные" мы можем котнролировать их размер, то "не до конца"; на самом деле я пробовал менять таблицы местами и как и ожидалось запрос заработал, потому-что размер хеш таблицы получается меньше, но когда понодобится сделать inner join 18M rows x 18M rows он упадет и единственный способ избежать падения - гарантировать что на сервере достаточно памяти чтобы работало без external aggregation. проблема в том что поидее external aggregation должен уменьшать использование памяти а получается наоборот
  • https://t.me/clickhouse_ru
    @alimar05 #241990 01:03 PM, 01 Nov 2021
    Всем привет! Как для определённых таблиц дать доступ только некоторым определённым пользователям?
  • https://t.me/clickhouse_ru
    Используйте RBAC

    https://altinity.com/blog/goodbye-xml-hello-sql-clickhouse-user-management-goes-pro
    Goodbye XML, hello SQL! ClickHouse User Management Goes Pro

    Access control is one of the essential features of database management. ClickHouse now offers enterprise-class user management that integrates smoothly with role-based access control. Best of all, it's all SQL!

  • @simpl1g #241994 01:20 PM, 01 Nov 2021
    Подскажите, как запустить КХ после segfault, стартует и сразу падает из-за мутации на добавление кривой проекции
    https://github.com/ClickHouse/ClickHouse/issues/30861
  • https://t.me/clickhouse_ru
    так а нужна таблица и ее данные?

    таблица replicated ?
  • в идеале нужна, таблица replicated
  • https://t.me/clickhouse_ru
    А как в RBAC для определённой таблицы оставить доступ только некоторым уже существующим, скажем 3, пользователям и сделать её недоступной для всех остальных пользователей?
  • https://t.me/clickhouse_ru
    отложите в сторону директорию с таблицей из data и tp.sql из metadata, КХ стартует создайте новую таблицу с такой же структурой, но без projections, и приатачте парты из старой, projections это поддиректории их можно поудалять

    либо в ZK удалить мутацию в старой таблице
  • понял, спасибо
  • https://t.me/clickhouse_ru
    Спасибо. Разобрался
  • https://t.me/clickhouse_ru
    @alexanderepin #242004 02:23 PM, 01 Nov 2021
    Всем привет!
    Подскажите, будет ли работать подобная конструкция:
    select table1.column1, if(table2.column..) где table2 - это left join
  • https://t.me/clickhouse_ru
    будет
    для left join по умолчанию там будут default значения вместо null
    --join_use_nulls arg Use NULLs for non-joined rows of outer JOINs for types that can be inside Nullable. If false, use default value of corresponding columns data type.
  • @xfangsx #242006 03:12 PM, 01 Nov 2021
    Подскажите, что не так делаю с табличным движком MaterializedPostgreSQL.
    Через движёк PostgreSQL всё отлично подключается, селекты выполняются. Через MaterializedPostgreSQL пишет Code: 1001, type: pqxx::usage_error, e.what() = Started new transaction while transaction was still active.

    Хотя если указать не ту db, табличку, учётку, пароль то будет ругать именно на это, а не на активную транзакцию. Похожая ситуация описана тут https://githubmemory.com/repo/ClickHouse/ClickHouse/issues/30495 там советуют использовать database_engine, так как он более оттестированный, но сейчас возможности использовать его нет.

    version 21.10.2.15
  • https://t.me/clickhouse_ru
    @minihost #242008 03:33 PM, 01 Nov 2021
    Добрый вечер. Не могу найти причину подобного поведения одного из серверов с Кликхаусом:

    SELECT *
    FROM db.table1
    LIMIT (
    SELECT 1
    )

    0 rows in set. Elapsed: 0.007 sec.

    Received exception from server (version 21.9.2):
    Code: 440. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type Nullable(UInt8) of LIMIT expression, must be numeric type. (INVALID_LIMIT_EXPRESSION)

    Пробовал менять параметры в system.settings, не смог избавиться от ошибки
  • https://t.me/clickhouse_ru
    limit подерживает только константы, там не может быть select
  • https://t.me/clickhouse_ru
    Спасибо за ответ, но на других серверах это работает, но там версия 20.*
  • https://t.me/clickhouse_ru
    раньше подзапрос возращал UInt8 , теперь Nullable(UInt8)

    можете конечно написать

    SELECT *
    FROM db.table1
    LIMIT assumeNotNull(SELECT 1)
  • https://t.me/clickhouse_ru
    Так тоже не хочет: Syntax error: failed at position 63 ('1'):
  • https://t.me/clickhouse_ru
    SELECT *
    FROM api_log
    LIMIT assumeNotNull((SELECT 1))
  • https://t.me/clickhouse_ru
    еще пару скобок надо

    select * from table1 limit assumeNotNull((select 1));
  • https://t.me/clickhouse_ru
    это могут сломать в любой момент, зачем вам это?
  • https://t.me/clickhouse_ru
    Спасибо, работает
  • https://t.me/clickhouse_ru
    Не я делаю запросы, программистам нужен вычисляемый LIMIT, SELECT 1 - это чтобы показать саму ошибку
  • https://t.me/clickhouse_ru
    пока что самый простой вариант - это буферные таблицы. добавленные данные можно будет видеть сразу после добавления в отличие от китенхауса.
  • https://t.me/clickhouse_ru
    короче они абьюзают недокументированную возможность. Пусть делают отдельным запросом.
    тестов на это нет. Может сломаться / неправильно работать.
  • https://t.me/clickhouse_ru
    Спасибо огромное за помощь и информацию, передам👍
  • https://t.me/clickhouse_ru
    @morozovsk #242021 04:04 PM, 01 Nov 2021
    есть таблица, которая занимает 40% диска, на сервере 50% свободного места.
    пытаюсь скопировать данные из старой схемы в новую с помощью INSERT SELECT, но не хватает места. если переносить по частям, то сначала юзается лишнее место, а потом оно освобождается и потом можно ещё скопировать часть.
    можно как-то использовать INSERT SELECT, чтобы перенести все данные без разбивания на несколько запросов и ожидания, когда освободится место? я так понимаю, что в процессе создаются промежуточные парты, а потом они через несколько минут удаляются с диска.
  • https://t.me/clickhouse_ru
    можно на новой таблице поставить setting old_part_lifetime=1;
    https://clickhouse.com/docs/en/operations/settings/merge-tree-settings/#old-parts-lifetime
    MergeTree tables settings | ClickHouse Documentation

    MergeTree tables settings The values of merge_tree settings (for all MergeTree tables) can be viewed in the table system

  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @EliziumUA #242027 05:22 PM, 01 Nov 2021
    Всем привет, возник такой вопрос: использую связку из Kafka Engine table, Materialized View, ReplicatedMergeTree table, Distributed table. При записи в kafka абсолютно уникальных значений, хотя бы в одном из полей, например microtime, потери данных в Distributed table не наблюдается, как только я убираю это уникальное поле microtime и передаю абсолютное одинаковые значения во всех остальных, происходит потеря части данных, такое чувство что они схлопываются при вставке Materialized View. Сталкивался кто-то с подобным?
  • https://t.me/clickhouse_ru
    Но вот с VIEW так не работает. Буду признателен за помощь или направление куда копать
  • https://t.me/clickhouse_ru
    @TrueCarry #242029 05:24 PM, 01 Nov 2021
    просто выполните 2 запроса, 1 на лимит, второй на селект с этим лимитом
  • https://t.me/clickhouse_ru
    Если вставляете 2 абсолютно идентичных набора строк в replicated, они дедуплицируются (если между этими вставками было <= 99 вставок)
  • https://t.me/clickhouse_ru
    Спасибо, сброс настройки deduplicate_blocks_in_dependent_materialized_views к нулю, может подойти в качестве решения?
  • https://t.me/clickhouse_ru
    Так он не просто так стоит на 1
    Какую проблему решаете? Зачем вставляете абсолютно одинаковые строки?
  • https://t.me/clickhouse_ru
    И обратите внимание, что там есть вторая настройка insert_deduplicate
  • https://t.me/clickhouse_ru
    Происходит потеря данных при записи, это единственная зацепка, которую обнаружил. Залогирую все входящее данные, спасибо.
  • https://t.me/clickhouse_ru
    Этот параметр не поможет
  • https://t.me/clickhouse_ru
    Можно писать виртуальные поля _partition, _offset

    В реальности такой проблемы не будет скорее всего, потому что не будет повторов блоков
  • https://t.me/clickhouse_ru
    Спасибо, буду разбираться со входящими данными
  • https://t.me/clickhouse_ru
    @ilejn #242038 06:16 PM, 01 Nov 2021
    Добрый вечер, есть ли опыт и/или рекомендации по конфигурированию ClickHouse keeper?
    Первое, что приходит в голову
    1. CH keeper запущен на всех нодах кластера CH.
    2. Каждый инстанс CH знает только про CH keeper на localhost.
    Это разумно, или я что-то упускаю?
  • https://t.me/clickhouse_ru
    и что за ошибка?
  • https://t.me/clickhouse_ru
    1. да но не больше 3 🙂 , т.е. проблема в том что чем больше кол-во киперов ( и тоже самое для зукиперов ), тем медленнее оно работает, и больше сетевой трафик и ждем самого медленного
    2. это ОК.
  • https://t.me/clickhouse_ru
    @tih_kot #242041 06:40 PM, 01 Nov 2021
    Добрый вечер. Плохо ли вставлять записи в кликхаус по одной? Если да , то что нужно использовать, чтобы вставлять данные пачкой? На данный момент использую python asynch для работы с кликхаусом.
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #242040 #242042 06:43 PM, 01 Nov 2021
    Ясно. Спасибо за ценное знание про замедление. Я почему-то думал, что CH keeper призван решить эту проблему. Видимо, плохо [не долго] думал.
    Придется по непонятным принципам выбрать три бокса для CH keeper ...
  • https://t.me/clickhouse_ru
    выше уже ни раз обсуждали. буферные таблицы, киттенхаус, аккаммулирование на стороне приложения, асинхронная вставка в новых версиях
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю эти решения.
  • https://t.me/clickhouse_ru
    Если кратко, то до нескольких тыщ в секунду нормально работают буферные таблицы и асинхронные вставки, дальше нужен либо kittenhouse, либо какой-то другой батчер.
  • https://t.me/clickhouse_ru
    Сорри, неправда моя, и к таблице и к вьюхе такой механизм работает. Всем спасибо
  • https://t.me/clickhouse_ru
    @ilejn #242048 10:12 PM, 01 Nov 2021
    Пересмотрел видео про CH keeper https://www.youtube.com/watch?v=abhcCRW09Ac&t=13s
    Пара вопросов.
    1. В списке хитрых конфигураций zk (или CH keeper, это не важно) есть такие, в которых нода CH взаимодействует с двумя кластерами zk. Как выглядит конфиг CH в этм случае?
    2. Не очень понял, есть ли возможность увеличения/уменьшения количества нод в кластере CH keeper. Александр упоминал elastic quorum configuration, которого нет, но который когда-нибудь появится, но это про добавление узлов без остановки кластера. А с остановкой можно добавлять/исключать узлы?
    Zookeeper Replacement Presentation at August SF Bay Area ClickHouse Meetup

    Presentation by Alexander Sapin, senior ClickHouse engineer at Yandex and lead on Zookeeper replacement. This project replaces Zookeeper consensus with an internal implementation. It is no longer necessary to run Zookeeper for ClickHouse clusters! Slides: https://www.slideshare.net/Altinity/clickhouse-keeper More information: ClickHouse - https://github.com/ClickHouse/ClickHouse ClickHouse Meetup - https://www.meetup.com/San-Francisco-... Altinity (Hosts) - https://altinity.com

  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/pull/17070/files

    2.

    С рестартом то почему нет?
    Support multiple ZooKeeper clusters by fastio · Pull Request #17070 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #242049 #242050 10:39 PM, 01 Nov 2021
    Наверное, вы правы, и такая возможность обязана присутствовать.
    Ок, спасибо.
  • 02 November 2021 (129 messages)
  • https://t.me/clickhouse_ru
    Кафка еще как вариант.
  • @1222346560 #242054 05:55 AM, 02 Nov 2021
    Доброго времени суток. С первого раза не получилось, попробую еще раз. Имеется запрос со следующей структурой:
    (group by, 3.4M rows) full outer join (inner join, 2.5M rows)

    inner join джойнт подзапросы на 3.4М и 18М строк.

    Если отключить two-level aggregation или external group by, то запрос отрабатывает используя 5Gb, а если оставить на усмотрение CH, то запрос умирает сожрав 27Gb памяти. Если поменять местами таблицы в inner join то запрос работаeт (потому-что размер хеш таблицы получается меньше), но когда понодобится сделать inner join 18M rows x 18M rows он упадет и единственный способ избежать падения - гарантировать что на сервере достаточно памяти чтобы работало без external aggregation.

    Это выглядит как баг, но не понятно кто его "триггерит". Складывается ощущение что сначала "256 hashtables per thread" сбрасываются на диск, а потом все вместе загружаются, причем в памяти держатся и запакованные и заспакованные данные. По идее external aggregation должен уменьшать использование памяти, а получается наоборот
  • https://t.me/clickhouse_ru
    @AloDuch #242055 07:55 AM, 02 Nov 2021
    Коллеги, доброе утро. Не пойму, как лучше хранить определенные логи.
    В изначальном виде там несколько колонок + две колонки с массивами(от 1-го до 10000 элементов примерно, в среднем 1000) и данных около 30000 строк в день.
    Поиск будет происходить с фильтрацией и по по обычным полям и по значению в массиве.

    Что лучше, развернуть массивы в кучу строк или оставить как массивы?
    Есть ли смысл добавлять массив в primary key? не понимаю, как это вообще может помочь при поиске
  • https://t.me/clickhouse_ru
    я бы развернул такое в обычную таблицу
  • https://t.me/clickhouse_ru
    потому что строк в целом не много будет и 100% быстрый поиск?
  • @Sapar1999 #242058 08:05 AM, 02 Nov 2021
    Хочу считать через движок file Select * from file('file', 'JSONEachRow','line String') почему то ругается expected EOF перед второй строкой. Хотя там стандартный \n. В чем может быть проблема? движок file вообще работает с JSONEachRow?
  • https://t.me/clickhouse_ru
    @altlinux #242059 08:05 AM, 02 Nov 2021
    да, поиск будет быстрее намного, а данных мало и дубли в колонках отлично сожмутся.
  • https://t.me/clickhouse_ru
    Спасибо, про сжатие хороший аргумент
  • https://t.me/clickhouse_ru
    @konnectrl #242061 08:22 AM, 02 Nov 2021
    Приветствую, сделали копию таблицы и на копию запустили OPTIMIZE TABLE table_copy DEDUPLICATE. Как можно посмотреть те строки которые удалились ? Вес таблицы 10 гб
  • @7699150 #242062 09:01 AM, 02 Nov 2021
    Приветсвую!
    Подкажите, как можно посчитать разницу между двумя датами формата DateTime64?
    Если просто вычитаю одно из второго, то ловлю ошибку `Illegal types`
  • Задача – посчитать возраст

    SELECT
    toDateTime64(now(), 0) AS today,
    toDateTime64('1951-01-02', 0) AS birth_date,
    today - birth_date AS age

    - -
    upd. разобрался
    dateDiff помог:

    SELECT
    toDateTime64(now(), 0) AS today,
    toDateTime64('1951-01-02’, 0) AS birth_date,
    dateDiff('year', birth_date, today) AS age
  • https://t.me/clickhouse_ru
    SELECT fromUnixTimestamp64Milli((
    SELECT toUnixTimestamp64Milli(toDateTime64(now(), 0))
    ) - (
    SELECT toUnixTimestamp64Milli(toDateTime64('1993-01-31', 0))
    ))

    я уже думал как-то так предложить, но твой вариант в апдейте получше будет)
  • https://t.me/clickhouse_ru
    В оригинальной таблице сделать запрос group by having count()>1
  • https://t.me/clickhouse_ru
    так оно будет выдавать неправильный результат

    SELECT dateDiff('year', toDate('2020-10-24'), toDate('2021-09-22'))
    выдаёт 1, но по логике высчитывания возраста должно отдавать 0

    вот так результат будет верный
    SELECT
    toDate('2020-11-02') as bd,
    if(
    addYears(bd, dateDiff('year', bd, today()) as diff) > today(),
    diff - 1,
    diff
    ) as age
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #242057 #242069 10:13 AM, 02 Nov 2021
    Не очень понял, сколько колонок у вас получается. Если 20000, то это довольно проблематичный дизайн.
    В отдельные колонки имеет смысл выделять то, по чему часто будут искать. Остальное лучше хранить вместе. Наверное, map - подходящий вариант. Если только это не syntax shugar и map не разворачивается в колонки, но вроде такого нет.
  • https://t.me/clickhouse_ru
    Колонок штук 10, плюс 2 колонки массива которые вот решили развернуть
  • У меня основная проблема с датами < 1970го года. Оказалось что не все мои кластера умеют с этой датой рабоать )
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #242070 #242072 10:15 AM, 02 Nov 2021
    Если 2 колонки массива развернутся в 20000, то это станет проблемой.
  • спасибо
    переделал )
  • https://t.me/clickhouse_ru
    В 2000 строк, не колонок
  • https://t.me/clickhouse_ru
    О как интересно) а почему не понял? Старые версии кликхауса может?
  • @7699150 #242076 10:19 AM, 02 Nov 2021
    в кх версий <21.4 DateTime64 не умеет в даты ниже нуля в UnixTimestamp (
  • https://t.me/clickhouse_ru
    избитая тема, все плюсы и минусы разных подходов давно описаны здесь:
    https://kb.altinity.com/altinity-kb-schema-design/best-schema-for-storing-many-metrics-registered-from-the-single-source/
  • https://t.me/clickhouse_ru
    Понимаю что избитая, тут больше перестраховываюсь.
    Спасибо за ссылку
  • https://t.me/clickhouse_ru
    @RT_1_98 #242081 10:43 AM, 02 Nov 2021
    Подскажите, можно ли на существующей таблице добавить в enum новые значения через альтер или придется переливать данные?
  • https://t.me/clickhouse_ru
    в перовм квартале следующего года появится новый тип поля - JSON, под капотом он будет сам создавать отсутствующие колонки для оптимизации хранения-чтения, всё остальное - временный вариант в ожидании JSON типа.
  • https://t.me/clickhouse_ru
    Оо, шикарно вообще
  • https://t.me/clickhouse_ru
    поиск по чату "alter enum" выдаст то что вам надо
  • https://t.me/clickhouse_ru
    Можно, но мб могут быть небольшие проблемы если ENUM в ORDER BY
  • https://t.me/clickhouse_ru
    если здесь не ответят можно попробовать тагнуть лично Алексея или написать на гитхаб в issues
  • https://t.me/clickhouse_ru
    старая версия кх?
  • https://t.me/clickhouse_ru
    Спасибо, попробую
  • https://t.me/clickhouse_ru
    Спасибо
  • версия 21.3.12.2
  • https://t.me/clickhouse_ru
    наверно стоит обновиться до 21.3.18.4 перед заведением бага
  • https://t.me/clickhouse_ru
    @ks_aleshina #242095 12:37 PM, 02 Nov 2021
    #вакансия #москва #офис #гибрид #удаленка #ClickHouse

    Вакансия: DBA / ClickHouse разработчик
    Город: Москва (м. Кутузовская)
    Компания: Sber
    Заработная плата: от 150 000 - 350 000 net

    О нас:
    Наша команда сейчас находится в поиске Clickhouse разработчика+DBA для создания аналитической платформы для анализа клиентского поведения в мобильном и веб-приложении СберБанк Онлайн. Платформа обеспечивает онлайн обработку данных, построение на лету базовых продуктовых отчетов, мониторинга аномалий, а также детальной BI-аналитики выделенных сегментов. Пользователи – внутренние клиенты Банка (владельцы продуктов, аналитики, UX-исследователи).

    Техническая сторона:

    • 128 серверов в промышленном кластере;
    • 6 серверов в тестовом;
    • общий объем данных – более 1 ПБ;
    • нагрузка - свыше 10 млрд новых записей в сутки (в пике 150 тыс записей в секунду).

    Задачи:

    • R&D новых решений - разработка новых представлений, таблиц и запросов для новых бизнес-отчетов (воронки, ретеншн, сегментирование);
    • интеграция со смежными системами для обогащения данных;
    • оптимизация производительности, обеспечение высокой доступности прикладных сервисов;
    • настройка репликации данных;
    • аудит и рефакторинг существующих схем;
    • текущее администрирование существующего кластера;
    • мониторинг работы БД на базе Zabbix и/или Prometheus .

    Требования:

    • Опыт работы с Clickhouse (разработка или администрирование);
    • Linux/Unix, опыт работы с высоконагруженными системами, резервирование;
    • базовые знания концепций распределенных систем и стеков технологий больших данных - как Hadoop, Spark, Kafka;
    • желательно знание хотя бы одного языка программирования (Python, Java);
    • желательно знакомство с системами продуктовой аналитики – GA, Яндекс метрика, Amplitude.

    Условия:

    • ДМС, страхование от несчастных случаев и тяжелых заболеваний;
    • прозрачная система бонусов и премий, достойная зарплата — размер обсудим на собеседовании;
    • льготные условия кредитования;
    • доступ к различным курсам обучения по развитию как hard, так и soft skill'ов;
    • бесплатный спортзал и парковка.
    Контакт для связи: @ks_aleshina 😉
  • https://t.me/clickhouse_ru
    @Ibiks #242097 01:09 PM, 02 Nov 2021
    Всем привет. Рестартнулся весь кластер из-за перебоя с электричеством. Теперь при запуске какждая нода пишет:
    <Error> Application: DB::Exception: Cannot create table from metadata file /var/lib/clickhouse/metadata/l0_s1//hits.sql, error: DB::Exception: The local set of parts of table l0_s1.hits doesn't look like the set of parts in ZooKeeper: 9.85 billion rows of 9.86 billion total rows in filesystem are suspicious. There are 170 unexpected parts with 9854837928 rows (156 of them is not just-written with 9854837928 rows), 0 unexpectedly merged parts with 0 rows, 0 missing obsolete parts (with 0 blocks), 1 missing parts (with 4 blocks)., stack trace:
  • https://t.me/clickhouse_ru
    @Ibiks #242098 01:10 PM, 02 Nov 2021
    Погуглил - пишут из реплики восстановить, но так на каждой ноде. Как-нить сбросить этот зукипер можно или не желательно?)
  • https://t.me/clickhouse_ru
    @konnectrl #242099 01:21 PM, 02 Nov 2021
    Переход с MergeTree на ReplacingMergeTree без тупого перелива данных возможен ?
  • https://t.me/clickhouse_ru
    @Ibiks #242100 01:24 PM, 02 Nov 2021
    как узнать возможен или нет?
  • https://t.me/clickhouse_ru
    ALTER TABLE ATTACH PARTITION
  • https://t.me/clickhouse_ru
    Много строчек и вставок у вас слишком потерялось в zookeeper, аж 10 лярдв и 170 партов
  • https://t.me/clickhouse_ru
    Просто создать таблицу с такой же структурой и подключить туда партиции ? Изменив только engine ?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    В данных лежащих в партициях, со временем уберутся дубликаты ?
  • https://t.me/clickhouse_ru
    На это не стоит сильно рассчитывать, дубликаты же будут убираться eventually
  • https://t.me/clickhouse_ru
    @Ibiks #242108 01:33 PM, 02 Nov 2021
    хм извините за глупый вопрос, а как. Пытаюсь clickhouse-client'ом подключиться
    clickhouse-client
    ClickHouse client version 19.3.7.
    Connecting to localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000, 127.0.0.1)
  • https://t.me/clickhouse_ru
    > ClickHouse client version 19.3.7.

    Сильно старая у вас версия.

    <Error> Application: DB::Exception: Cannot create table from metadata file /var/lib/clickhouse/metadata/l0_s1//hits.sql, error:

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

    Пишите запрос, как будто они есть

    https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/
    https://kb.altinity.com/engines/mergetree-table-engine-family/replacingmergetree/altinity-kb-replacingmergetree-does-not-collapse-duplicates/
  • https://t.me/clickhouse_ru
    @VASergeev #242113 01:38 PM, 02 Nov 2021
    Добрый день кто может подсказать куда посмотреть
    ALTER TABLE FREEZE не создает файлы в shadow как узнать почему?
    Таблица в БД есть, доступ к ней есть, данные в ней тоже, операция завершается успешно, но файлов нет
  • https://t.me/clickhouse_ru
    @Ibiks ↶ Reply to #242109 #242114 01:38 PM, 02 Nov 2021
    ну да, а как создать таблицу тогда?
  • https://t.me/clickhouse_ru
    ALTER TABLE database.table FREEZE PARTITION 'partition_number'
    вы так делаете?
    Успешно это когда вот такое сообщение в логе
    Freezing part 202110_1213722_1213757_3
  • https://t.me/clickhouse_ru
    @VASergeev #242116 01:45 PM, 02 Nov 2021
    не хочу всю таблицу сразу, без указания бд, указывал её при подключении ) пол года назад такое работало (иду по своей же инструкции) попробую с указанием схемы
  • https://t.me/clickhouse_ru
    @massimovs #242117 01:48 PM, 02 Nov 2021
    Также было бы удобно диапазон партиций указывать временной например с 2015 года до 2020. И фризить их.
  • https://t.me/clickhouse_ru
    ALTER TABLE schema.table
    FREEZE PARTITION '197001'

    Query id: 61035509-6991-4b2a-9514-b87a9d748e51

    Ok.

    0 rows in set. Elapsed: 0.228 sec.
  • https://t.me/clickhouse_ru
    @koshakm5 #242119 02:42 PM, 02 Nov 2021
    Всем привет, я тут вчера вопрос про обновление завадал, в итоге обновился с 20.3.15 до 21.8.10, это было непросто, но проблемы ещё не кончились
  • https://t.me/clickhouse_ru
    @koshakm5 #242120 02:42 PM, 02 Nov 2021
    DB::Exception: Array does not start with '[' character: While parsing null_value for attribute with name chain in dictionary regions_mapping
  • https://t.me/clickhouse_ru
    @koshakm5 #242121 02:43 PM, 02 Nov 2021
    вот такую ошибку получаю, насколько я понял из ченжлога это может быть из-за Arrays in dictionaries are now supported
  • https://t.me/clickhouse_ru
    @koshakm5 #242122 02:44 PM, 02 Nov 2021
    боролся кто-нибудь с такой штукой?
  • https://t.me/clickhouse_ru
    @tih_kot #242124 02:45 PM, 02 Nov 2021
    Добрый вечер. Пробую использовать clickhouse-bulk , но что бы я не передавал в адресной строке, даже если просто вписать адрес, у меня постоянно {"message":"Method Not Allowed"}

    как правильно с ним работать? подскажите, пожалуйста. Не нашел документации.
  • https://t.me/clickhouse_ru
    кто поменял конфиг, и теперь replica макрос отличается?
  • https://t.me/clickhouse_ru
    не на том диске ищите?
  • https://t.me/clickhouse_ru
    а вы точно на 21.8 обновились?
    может на 20.8 ?
  • https://t.me/clickhouse_ru
    точно )
  • https://t.me/clickhouse_ru
    show create dictionary regions_mapping
  • https://t.me/clickhouse_ru
    @koshakm5 #242131 03:09 PM, 02 Nov 2021
    Received exception from server (version 21.8.10):
    Code: 130. DB::Exception: Received from localhost:9000. DB::Exception: Array does not start with '[' character: While parsing null_value for attribute with name chain in dictionary regions_mapping.
  • https://t.me/clickhouse_ru
    cat regions_mapping.sql
  • https://t.me/clickhouse_ru
    Полагаю, в clickhouse-bulk данные должны отправляться с помощью POST. Браузер же будет по умолчанию в Вашем случае использовать GET
  • https://t.me/clickhouse_ru
    Received exception from server (version 21.8.10):
    Code: 390. DB::Exception: Received from localhost:9000. DB::Exception: Table regions_mapping doesn't exist.
  • https://t.me/clickhouse_ru
    нет такого
  • https://t.me/clickhouse_ru
    @koshakm5 #242136 03:12 PM, 02 Nov 2021
    это внешний словарь
  • https://t.me/clickhouse_ru
    cat regions_mapping.xml
  • https://t.me/clickhouse_ru
    @koshakm5 #242138 03:12 PM, 02 Nov 2021
    /etc/clickhouse-server/regions_mapping_dictionary.xml
  • https://t.me/clickhouse_ru
    прям сюда?
  • https://t.me/clickhouse_ru
    @koshakm5 #242140 03:14 PM, 02 Nov 2021
    на пастбин сейчас скину
  • https://t.me/clickhouse_ru
    <dictionaries> <comment>Отображение из id-шников геобазы MaxMind в нагенери - Pastebin.com

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

  • https://t.me/clickhouse_ru
    Ух точно, забыл, что новый добавляли, спсибо)
  • https://t.me/clickhouse_ru
    @Ibiks ↶ Reply to #242126 #242143 03:20 PM, 02 Nov 2021
    проверил, конфиг /etc/clickhouse-server/config.xml старый с которым кликхаус стартует
    Правда у кластера зукипера одна нода не поднялась, может из-за нее проблемы?
  • https://t.me/clickhouse_ru
    @Ibiks #242144 03:23 PM, 02 Nov 2021
    или может быть из-за того что кликхаус в докере запущен?
  • https://t.me/clickhouse_ru
    Вы правы! Спасибо! Очевидная причина, а я думал я что то не так настроил...
  • https://t.me/clickhouse_ru
    это реально весь словарь? или вы подчистили куски?

    я бы попробовал удалить коментарии, не представляю что могло сломаться в таком простом случае
  • https://t.me/clickhouse_ru
    1001 1
    1002 2
    1003 3
    1004 4
    1005 5
    1006 6
    1007 7
    1009 8
    1011 9
    1012 10
  • https://t.me/clickhouse_ru
    по идее вот словарь
  • https://t.me/clickhouse_ru
    @koshakm5 #242149 03:28 PM, 02 Nov 2021
    на него ссылка в xml
  • https://t.me/clickhouse_ru
    @koshakm5 #242150 03:29 PM, 02 Nov 2021
    нет, я целиком скопировал, не чистил ничего
  • https://t.me/clickhouse_ru
    я бы попробовал удалить коментарии
  • https://t.me/clickhouse_ru
    @koshakm5 #242152 03:30 PM, 02 Nov 2021
    ок, спасибо, сейчас попробую
  • https://t.me/clickhouse_ru
    @nshumshurova #242155 03:59 PM, 02 Nov 2021
    Почему ALTER TABLE 'table_name' UNFREEZE WITH NAME 'backup_name' требует имя? если при создании бекапа мы его не указывали?
  • https://t.me/clickhouse_ru
    @nshumshurova #242156 04:05 PM, 02 Nov 2021
    есть еще такой вопрос, есть ли возможность чистить системные таблицы, они разъелись в 40 гб в сумме или только смириться?
  • https://t.me/clickhouse_ru
    @StadnikD #242158 04:10 PM, 02 Nov 2021
    Обновил драйвер для Clickhouse в datagrip и почему-то показывает теперь время в UTC. В настройках стоит Europe/Kaliningrad. В чем косяк?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Наверное это время сервера, а не ваше
  • https://t.me/clickhouse_ru
    так стоит в настройках use_server_time_zone = false
  • https://t.me/clickhouse_ru
    не помогло
  • https://t.me/clickhouse_ru
    у вас много словарей?
  • https://t.me/clickhouse_ru
    @koshakm5 #242164 04:21 PM, 02 Nov 2021
    2
  • https://t.me/clickhouse_ru
    @koshakm5 #242165 04:21 PM, 02 Nov 2021
    даже не
  • https://t.me/clickhouse_ru
    @koshakm5 #242166 04:21 PM, 02 Nov 2021
    один
  • https://t.me/clickhouse_ru
    @koshakm5 #242167 04:21 PM, 02 Nov 2021
    сейчас второй проверю, есть он или нет )
  • https://t.me/clickhouse_ru
    короче

    mkdir /etc/clickhouse-server/dict/
    mv /etc/clickhouse-server/regions_mapping_dictionary.xml /etc/clickhouse-server/dict/

    в конфиге КХ, не знаю где вы их держите
    <?xml version="1.0"?>
    <yandex>
    <dictionaries_config>dict/*.xml</dictionaries_config>
  • https://t.me/clickhouse_ru
    @koshakm5 #242169 04:23 PM, 02 Nov 2021
    ок
  • https://t.me/clickhouse_ru
    ааа, писатель jdbc драйвера жжот, все сломал видимо
  • https://t.me/clickhouse_ru
    как починить то ? =(
  • https://t.me/clickhouse_ru
    откатывать драйвер
  • https://t.me/clickhouse_ru
    блин, у меня было 2 хмл, сразными именами и почти одинаковым содержимым, после того как я одну удалил всё заработало
  • https://t.me/clickhouse_ru
    @koshakm5 #242175 04:33 PM, 02 Nov 2021
    спасибо за подсказку
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    бред какой-то
  • https://t.me/clickhouse_ru
    java показывает в таймзоне винды
  • https://t.me/clickhouse_ru
    так в винде то корректная таймзона
  • https://t.me/clickhouse_ru
    А в кликхаус клиенте все нормально ?
  • https://t.me/clickhouse_ru
    не проверял
  • https://t.me/clickhouse_ru
    @StadnikD #242182 04:57 PM, 02 Nov 2021
    а кто может другую версию драйвера скинуть где корректно работает ?
  • https://t.me/clickhouse_ru
    вообще это нормально и так было всегда, пока jdbc не сломали.

    Время в КХ это число секунд после 1970 года. У колонки может доп. атрибут TZ.
    Т.е. на самом деле там у вас одно и тоже число в обеих колонках.

    КХ-клиент! когда показывает на экране число секунд после 1970 в виде строки, использует атрибут TZ и строка получается с учетом TZ
    JDBC драйвер просто передавал это число секунд после 1970 года в java-у, java рендрерит в строку с учетом таймзоны локального компа (TZ колонки ни на что не влияла).
  • https://t.me/clickhouse_ru
    короче свиснул у коллеги старый файл настроек залил и все норм вроде стало
  • https://t.me/clickhouse_ru
    @StadnikD #242185 06:09 PM, 02 Nov 2021
    если работает не трогай короче
  • https://t.me/clickhouse_ru
    суть в том, что время то +2 часа от того что он показывает
  • https://t.me/clickhouse_ru
    @StadnikD #242187 06:10 PM, 02 Nov 2021
    т.е тут какой-то косяк двойной конвертации
  • https://t.me/clickhouse_ru
    select timezone(), toString(now()), now()
  • https://t.me/clickhouse_ru
    Я видел твои сообщения на гитхабе. Если преобразовать в строку показывает корректно, текущий таймзон тоже
  • https://t.me/clickhouse_ru
    select timezone(), toString(now()), now()
  • https://t.me/clickhouse_ru
    @kosmodromov #242193 06:36 PM, 02 Nov 2021
    Всем привет,
    Я агрегирую данные в materialized view c движком SummingMergeTree. После агрегации сырые данные в исходной таблице не нужны и я их удаляю по TTL. Можно ли как то бэкапить MV с таким движком, и, самое главное, восстанавливать? В гугле уже был, но если направите по нужному адресу, будет прекрасно. 🙂
  • https://t.me/clickhouse_ru
    SummingMergeTree это обычная таблица, просто у нее необычное имя если она в MV, поэтому можно и бекапить и восстанавливать.
    Имя зависит от движка базы данных. show create database ....вашабаза....
    Еще очень удобно использовать MV с синтаксисом TO. тогда все еще проще.
  • https://t.me/clickhouse_ru
    Сорри, я немного не до конца объяснил картину - из исходной таблицы у меня агрегируются данные в несколько MV с интервалами, от 5 минут и до 1 дня. Бэкапить я предполагаю MV которая 5 минут и хотелось бы чтобы при восстановлении остальные MV агрегировали бы эти данные. Проблема, на которую я не могу найти ответ в гугле - т.к. движок у MV SummingMergeTree, то и восстанавливатся она будет с этим же движком (в этом я не уверен, но вроде звучит логично). Поэтому в голове у меня зреет велосипед - восстановить эту таблицу, сделать select * и insert в исходную с движком MergeTree, откуда уже остальные MV сделают агрегацию. Звучит немножко диковато, поэтому хочется верить что существует более простой путь )
  • https://t.me/clickhouse_ru
    @r3bfish #242196 09:46 PM, 02 Nov 2021
    Доброй ночи! Словил проблему
    Coordination::Exception: All connection tries failed while connecting to ZooKeeper. I/O error: 33

    Версия клика 21.9, до сегодняшнего ЧП все было ок.

    Одна из zk-нод определяется как лидер
    (использовал команду echo mntr|nc localhost 2181)

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

    Стетевое соединение со стороны клика до zk проверил, все в норме.

    Поиск по чатику не дал результатов. Куда еще могу посмотреть?
  • https://t.me/clickhouse_ru
    а с сервера КХ echo mntr|nc ipzk 2181
  • https://t.me/clickhouse_ru
    переделайте ваши матвью на каскад, что бы остальные строились на основе первой SummingMergeTree
  • 03 November 2021 (183 messages)
  • https://t.me/clickhouse_ru
    @Ibiks #242199 04:27 AM, 03 Nov 2021
    подскажите, а эта хрень как лечится?
    {} <Error> l0_s2.hits (ReplicatedMergeTreeRestartingThread): Couldn't start replication: Replica /clickhouse/tables/l0_s2/hits/replicas/replica_1 appears to be already active. If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/l0_s2/hits/replicas/replica_1/is_active manually, DB::Exception: Replica /clickhouse/tables/l0_s2/hits/replicas/replica_1 appears to be already active. If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/l0_s2/hits/replicas/replica_1/is_active manually, stack trace:
  • @2051926424 #242200 05:16 AM, 03 Nov 2021
    Bouncing back stronger when it comes to finance I must say that it really makes me happy all thanks to you actually I made about $35,500 with an investment of $4000. And I am here to recommend you all to @DennisonAlbertfx 👇👇👇👇👇https://t.me/joinchat/xVMFbnJ0HfxiODJk
  • https://t.me/clickhouse_ru
    Проверил через dns/ip с сервера clickhouse: отвечает с тем же результатом, как если выполнять запросы прям на серверах ZK. На всякий случай отключил внутренний dns-кэш клика, но это ничего не дало. Вы наталкнули меня на мысль помониторить сетевой трафик, возможно там найду проблему. Если будут какие-то еще идеи, то я буду рад их услышать. Спасибо!
  • https://t.me/clickhouse_ru
    @Krisantis #242203 07:14 AM, 03 Nov 2021
    всем привет. Очень хочется ходить в GSheet из CH напрямую. Всё, чего удалось добиться, это:
    CREATE TABLE url_engine_table (
    col_String String,
    col_Int Int16,
    Col_Date String,
    Col_DateTime String,
    Col_Array Array(String)
    ) ENGINE=URL(
    'https://docs.google.com/spreadsheets/d/{KEY}/gviz/tq?tqx=out:csv&sheet={SHEET_ID}', CSVWithNames)
    всё работает, но для такого Sheet должен быть расшарен доступ по ссылке глобально.
    Подскажите:
    Можно ли как-то ходить CH в GSheet с авторизацией? Вот в Redash например есть системный пользователь, на которого шарится доступ в GSheet.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242203 #242204 07:37 AM, 03 Nov 2021
    >After you have an API key, your application can append the query parameter key=yourAPIKey to all request URLs.
    Так не работает?
    https://developers.google.com/sheets/api/guides/authorizing
  • @1002712185 #242206 10:41 AM, 03 Nov 2021
    Подскажите пожалуйста, если я вставляю даные в Buffer на таблицу MergerTree - то в какой момент данные мерджатся на диске? в тот момент когда забираются из буфера? или через какое то время позже?
  • @7699150 #242207 10:42 AM, 03 Nov 2021
    подскажите пожалуйсста
    есть датасет, в котором данные разделены двоеточиями
    можно его как-то кликхаусу скормить, или нужно в csv переформатировать?
  • Input and Output Formats | ClickHouse Documentation

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

  • Вы предлагаете здесь поискать или какой-то конкретный формат?
  • https://t.me/clickhouse_ru
    @gudinagutin #242210 10:47 AM, 03 Nov 2021
    Здравствуйте, объясните пожалуйста, чем отличается создание матвью с ключевым словом TO и без него?
  • @1002712185 #242211 10:48 AM, 03 Nov 2021
    там много форматов разделено двоеточиями. если ни один из них на Ваш не похож - то скорее всего нужен формат Template или CSV
  • с TO более гибко работать можно
  • https://t.me/clickhouse_ru
    @gudinagutin #242213 10:48 AM, 03 Nov 2021
    А можно подробнее:)
  • Без TO — создастся скрытая .inner табличка, в которой будут лежать данные.

    С TO можна создать целевую таблицу любого движка и с помощью MV пересылать данные. Можно в любое время удалить или переделать MV, не задевая никак целевую таблицу
  • https://t.me/clickhouse_ru
    @gudinagutin #242216 10:50 AM, 03 Nov 2021
    Спасибо
  • если размер данных небольшой - то проще переформатировать
  • гига 3 сырого текста )
  • @7699150 #242219 10:54 AM, 03 Nov 2021
    думаю переформатирую как-то )
  • а использование format_csv_delimiter = ‘;’ не помогает?
  • попробую
    спасибо
  • https://t.me/clickhouse_ru
    @Gulshan5k #242222 11:19 AM, 03 Nov 2021
    Добрый день!
    Подскажите пожалуйста может кто-то уже сталкивался с такой проблемой.
    В Zeppelin при записи в КХ и ds.show() выдает ошибку

    paymentSubsCurrent.write
    .format("jdbc")
    .option("driver","ru.yandex.clickhouse.ClickHouseDriver")
    .option("url","jdbc:clickhouse://X.X.X.X:PORT/test")
    .option("dbtable","test")
    .mode("append")
    .save()

    java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.rdd.RDDOperationScope$

    zeppelin 0.10.0
    spark 3.2.0
    scala 2.12.15
  • https://t.me/clickhouse_ru
    а весь стектрейс? может там какой-то вспомогательной библиотеки не хватает, например jackson или apache http
  • @7699150 #242228 12:40 PM, 03 Nov 2021
    Привет!
    Пытаюсь загрузить в КХ большой датасет из файлика. Подскажите, можно ли как-то скипнуть строки, которые не удалось расспарсить?
    Формат TSV
  • @7699150 #242229 12:41 PM, 03 Nov 2021
    upd.
    Нашел

    input_format_allow_errors_num
  • https://t.me/clickhouse_ru
    @Xapa6apga #242230 12:42 PM, 03 Nov 2021
    Вcем привет, а не кто не стыкался, как можно подключится к clickhouse из под AWS Glue

    Как сделать коннекшин или сделать odbc/jdbc?
  • Другими словами - как работает Compaction в MergeTree когда есть буфер? и можно ли этим как-то управлять?
  • https://t.me/clickhouse_ru
    @boklazhenko #242232 01:13 PM, 03 Nov 2021
    ребята привет. подскажите, возможно функцию histogram использовать как то с группировкой по полю? типо наподобие такого ( не работает )

    SELECT histogram(10)(length), user FROM stathist.messages
    GROUP BY user
  • https://t.me/clickhouse_ru
    MergeTree таблица и мержи не в курсе про буфер.

    Вы делаете 100 инсертов по одной строке в течении 1й секунды в MergeTree. В КХ образуется 100 партов. Скорее всего КХ помержит 4 раза по 25 партов в 4 и еще один раз 4 парта в один парт, итого 5 мержей.
    Если поставить буфер который копит и сбрасывает раз в 2 секунды и делать инсерты в него, то мержей не будет, потому что все 100 записей будут записаны в MergeTree одним инсертом.
    Если у буфера 16 слоев, то конечно будет 16 инсертов, если слой один, то один инсерт, т.е. у буфера задается сколько там внутри под-буферов, для увеличения скорости параллельных вставок
  • @shkurik #242236 01:54 PM, 03 Nov 2021
    Всем привет!
    Подскажите пожалуйста у меня Докер контейнер не подымается и в логах докера есть только такое
    Processing configuration file '/etc/clickhouse-server/config.xml'.
    Merging configuration file '/etc/clickhouse-server/config.d/config.xml'.
    Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.
    Merging configuration file '/etc/clickhouse-server/config.d/users.xml'.
    Include not found: clickhouse_compression

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

    SELECT g, histogram(5)(number + 1) FROM (  SELECT number%3 g, number FROM system.numbers  LIMIT 200 ) group by g;
    ┌─g─┬─histogram(5)(plus(number, 1))────────────────────────────────────────────────────────────────┐
    │ 0 │ [(1,47.5,16.5),(47.5,87.25,13.125),(87.25,123.25,11),(123.25,162.25,14),(162.25,199,12.375)] │
    │ 1 │ [(2,48.5,16.5),(48.5,88.25,13.125),(88.25,124.25,11),(124.25,163.25,14),(163.25,200,12.375)] │
    │ 2 │ [(3,49.5,16.5),(49.5,89.25,13.125),(89.25,125.25,11),(125.25,163.5,13.875),(163.5,198,11.5)] │
    └───┴──────────────────────────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    пробросьте через volume куда нибудь себе
    /var/log/clickhouse-server/

    посмотрите в /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242235 #242239 01:57 PM, 03 Nov 2021
    А есть способ как-то автоматически настроить перенаправление данных из буфера в таблицу на диск и удаление их из буфера?
  • @silentsokolov #242240 01:58 PM, 03 Nov 2021
    Добрый день, подскажите по поводу шардирования, с свежих версих КХ: каждый шард собирает часть данных и джойнит их или джоин происходит на ноде с которой произашел запрос? (таблицу, что джойниться нельзя разместить на каждой ноде, раньше это было нужно, чтобы как раз не таскать данные с ноды на ноду) То есть будет ли две ноды по 20Гб равны одной на 40Гб, при условии, что джойны довольно серьезные иногда и требуют минимум 30Гб

    (или ссылку где почитать)
  • https://t.me/clickhouse_ru
    вы доку вообще читали? буфер только так и работает. Инсерты надо в буфер делать
    по другому буфер вообще не умееет
  • Если из Buffer (больше 100 строк) всё одним инсертом вставляется большим в MergeTree, то Codec Delta(1) будет сразу применяться? Расчет будет до записи на диск?
  • https://t.me/clickhouse_ru
    Да, НО вам вообще не надо про это знать. Никакой разницы нет для Delta и Codec есть буфер или нет.
  • @1002712185 #242244 02:01 PM, 03 Nov 2021
    Ну разница есть и на мой взгляд принципиальная: или сначала на диск пишет данные без кодека и потом перезаписывает с кодеком или сразу пишет с кодеком.
  • https://t.me/clickhouse_ru
    дада, будет разница, .00001%
    вы какбы на спичках, даже на обрезках спичек пытаетесь экономить
  • @iamkree #242247 02:03 PM, 03 Nov 2021
    Всем привет!
    Вопрос: в кликхауз сохраняются записи, характеризующиеся следующим набором полей: row_id, amount, status

    status имеет идентификаторы 1, 30, 1000
    Для одного row_id в таблице может быть не более трех записей с последовательно меняющимися статусами 1 , 30, 1000, т.е. в группировке по row_id получаю, наапример, sum(status) = 1031

    Как контролировать то, что не запишется еще одна 1000? т.е. нужно защититься от sum(status) = 2031

    Есть возможность построить такой индекс?
  • https://t.me/clickhouse_ru
    @den_crane #242248 02:03 PM, 03 Nov 2021
    без буфера, проблема для CPU и диска -- это само кол-во инсертов
  • https://t.me/clickhouse_ru
    @den_crane #242249 02:03 PM, 03 Nov 2021
    неактивные парты хранятся 8 минут, они жрут кучу места и файлов
  • 😂
    Есть какие то настройки для этого если Вы можете их рекомендовать?
  • https://t.me/clickhouse_ru
    вставлять редко и по многу.
  • https://t.me/clickhouse_ru
    никак
  • @1002712185 #242254 02:05 PM, 03 Nov 2021
    Я понял о чем вы
  • я так и знал 😞
  • @1002712185 #242256 02:05 PM, 03 Nov 2021
    Просто не очень быстро понимал
  • https://t.me/clickhouse_ru
    никак. В КХ нету никаких таких констрейнтов чтобы не замедлять вставку и не делать зависимости между шардами
  • https://t.me/clickhouse_ru
    @den_crane #242258 02:07 PM, 03 Nov 2021
    Шарды в КХ не знают про друг друга вообще ничего. В общем случае ваши записи могут оказаться на разных серверах
  • как напишете запрос, может сначала сделать на шардах джойн если у вас данные разложены правильно. Может со всех шардов собрать таблицу для джойна

    https://clickhouse.com/docs/ru/sql-reference/operators/in/#select-distributed-subqueries
  • https://t.me/clickhouse_ru
    djoin

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

  • https://t.me/clickhouse_ru
    с вложенным запросом , действительно работает, спасибо !
  • https://t.me/clickhouse_ru
    картинка странная. у hdd порядка 100 rps. конечно с 8 дисками можно добиться в 8 раз больше - ок

    у ssd - порядка 50 тыщ rps. даже если по одному числу менять за раз - нужно прочитать сектор, поменять его и записать назад. это всё равно 25 тыщ rps получится

    линейная скорость у sata ssd - 500 МБ/с, у серверной памяти - порядка 100 ГБ/с
  • https://t.me/clickhouse_ru
    windows 2003 как бы намекает
  • https://t.me/clickhouse_ru
    @nebotov_dmitry #242264 02:23 PM, 03 Nov 2021
    Всем привет, а кто контрибьютил в гошный драйвер https://github.com/mailru/go-clickhouse как долго маентейнеры просматривают pull request?
    GitHub - mailru/go-clickhouse: Golang SQL database driver for Yandex ClickHouse

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

  • получается что Clickhouse в любом случае с буфером или без - сначала пишет на диск - а фоновом режиме применяет compaction?
  • @1002712185 #242267 02:31 PM, 03 Nov 2021
    все равно не понятно при чем тут спички. без сжатия на диск нужно записать 100 гигабайт, со сжатием - 2 гигабайта. принципиальная же разница даже при линейной записи.
  • https://t.me/clickhouse_ru
    @TrueCarry #242268 02:32 PM, 03 Nov 2021
    Вы же не за раз записываете 100гб. А если за раз, то у вас хранилище будет в петабайтах, какая разница?
  • https://t.me/clickhouse_ru
    всё что идёт на диск - выгодней сжимать
  • https://t.me/clickhouse_ru
    "Кто котрибьютил" - там на гитхабе есть кнопка "contributors" для этого.

    "Как долго рассматривают" - в том же гитхабе есть эта инфа в коммитах. Надо взять datetime мерджа и вычесть из нее datetime коммита.

    Можно не благодарить, но если очень хочется, то благодарности принимаю переводами по номеру телефона :)
  • https://t.me/clickhouse_ru
    buffer в памяти
    codec не настолько влияет на перформанс, проблема в лишних мержах и лишних файлах.
  • @1002712185 #242272 02:38 PM, 03 Nov 2021
    если данные заливаются большими пачками - либо реально большими пачками накапливаются в буфере и проблем с мерджами нет, то как можно оптимизировать Кодеки? нужно дописывать код кликхауса для этого?
    Есть ли какие-то условия по мерджам для того чтобы кодеки начали применяться?
  • 100 Гигабайт у меня в оперативной памяти спокойно хранится - и не понятно зачем их на диск писать перед применением кодеков и что можно сделать чтобы не писать - вот в этом вопрос
  • https://t.me/clickhouse_ru
  • эм, вы что-то путаете, кодеки применятся перед записью на диск. А мержи в бэкграунде просто будут пытаться объеденить вставленные куски в более крупные
  • спасибо - вот в этом как раз и был вопрос - я хотел узнать когда применяются кодеки
  • https://t.me/clickhouse_ru
    боже, что вы несете.

    Codec-и надо использовать и с буфером и без буфера, и с маленькими вставками и с большими. Они просто не имеют вообще никакого отношения к вопросу
  • https://t.me/clickhouse_ru
    @den_crane #242278 02:44 PM, 03 Nov 2021
    Кодек применяется при создании парта
  • https://t.me/clickhouse_ru
    @den_crane #242279 02:44 PM, 03 Nov 2021
    Пишем одиночный инсерт, кодек применяется
  • @1002712185 #242280 02:44 PM, 03 Nov 2021
    👍
  • https://t.me/clickhouse_ru
    @den_crane #242281 02:44 PM, 03 Nov 2021
    Пишем еще один инсерт, кодек применяется
  • https://t.me/clickhouse_ru
    @den_crane #242282 02:45 PM, 03 Nov 2021
    Мерж мержит 2 инсерта (парта) в один, кодек снова применяется
  • @1002712185 #242283 02:45 PM, 03 Nov 2021
    спасибо огромное - всё встает на свои места
  • https://t.me/clickhouse_ru
    вы понимаете что если питание выдернуть, то весь буфер пропадет?
  • понимаю - это уже просто отдельный вопрос - есть ли для этого решения?
  • https://t.me/clickhouse_ru
    у меня ETL собирает большие пачки, если один инстанс ETL не доставил до КХ, другой инстанс ETL доставит

    ну кафка , для бедных
  • https://t.me/clickhouse_ru
    Можно в кафку всё писать и потом уже в клик
  • @1002712185 #242288 02:53 PM, 03 Nov 2021
    Если у меня допустим 2 сервера кликхаус независимо пишут одинаковые данные от поставщика данных. Пачки могут быть разного размера(из-за разного пинга до поставщика данных) но данные точно полностью одинаковые и вставляются в Buffer. я могу повесить слушателя *KEEPER на таблицу Mergetree(чтобы восстановить один из серверов в случае потери буфера Buffer)? такое решение существует и применимо? я смогу для реализации такой настройки нанять специалиста?
  • https://t.me/clickhouse_ru
    @critskiy #242290 03:27 PM, 03 Nov 2021
    Добрый вечер, я сейчас очень туплю, но правильно ли я понимаю, что в случае, когда имеется у меня запрос вида c представлениями:

    select a,b,c from view_1 where a in (select a in view_2 where d='some value' and dt>today()-30 group by a order by a) group by a,c

    То лучше всего будет сделать таблицу AggregatingMergeTree для таблиц во view_2 или временную таблицу на движке Memory(), куда скидывать результат подзапроса, и ссылаться в результате на времянку? Я предполагаю это как варианты обхода проблемы с проседанием по производительности, потому что по трейсингу логов сейчас видно, как для каждой таблицы внутри view_1 подзапрос каждый раз выполняется заново, тем самым собирая для каждой таблицы во view_2 результат...
  • Если надо много запросов в короткий промежуток времени, то можно наверное и временную таблицу сдеелать, а если постоянно делаете запросы то почему не Materialized VIEW?
  • https://t.me/clickhouse_ru
    Мне об этом и подумалось, кстати
  • https://t.me/clickhouse_ru
    @critskiy #242294 03:49 PM, 03 Nov 2021
    Просто это как бе маленькое наследие на коленке, которое я разбираю)
  • А запрос работает если создать простой View?
  • https://t.me/clickhouse_ru
    @ilejn #242296 04:39 PM, 03 Nov 2021
    Добрый вечер, расскажите, пожалуйста, про иерархию конфигурационных параметров.
    Например, max_concurrent_queries я не могу задать на сессию и не могу прописать в профиле пользователя, он может быть только глобальным.
    Это логично, но как узнать, какие еще параметры обладают таким свойством? Документация эту тайну мне не выдала (возможно, не был достаточно настойчив).
    Можно ли посмотреть куда-нибудь еще?
  • https://t.me/clickhouse_ru
    никак, просто знать все параметры.

    таким же ствойством обладают все pool параметры (они вообще на сессию не влияют), и нужен рестарт чтобы применились
  • https://t.me/clickhouse_ru
    @sakutepov #242299 04:45 PM, 03 Nov 2021
    Добрый вечер,
    Подскажите, пожалуйста, как побороть Memory limit (for query) exceeded: would use 9.32 GiB (attempt to allocate chunk of 0 bytes), maximum: 9.31 GiB: While executing AggregatingTransform. (MEMORY_LIMIT_EXCEEDED)

    Если указывать set max_memory_usage с запасом, то работает, но хочеться системно подойти к решению
  • https://t.me/clickhouse_ru
    @ilejn #242300 04:47 PM, 03 Nov 2021
    "никак, просто знать все параметры" - это хорошо сказано ;)
    Но вообще кажется, что отсутствие в src/core/Settings.h - это признак.
  • https://t.me/clickhouse_ru
    в общем случае никак. 10ГБ просто мало.
    т.е. можно делать группировки и сортировки через диск, но это мало поможет с 10ГБ и миллиардами строк и десятками жирных полей в запросе
  • https://t.me/clickhouse_ru
    можно как-то изменить лимит?
    на машине 160 оперативки
  • https://t.me/clickhouse_ru
    конечно, просто задайте в профиле пользователя (default для всех)

    $ cat /etc/clickhouse-server/users.d/memory_usage.xml
    <?xml version="1.0" ?>
    <yandex>
    <profiles>
    <default>
    <max_bytes_before_external_group_by>25291027968</max_bytes_before_external_group_by>
    <max_memory_usage>50582055936</max_memory_usage>
    </default>
    </profiles>
    </yandex>

    например для 160ГБ, я бы поставил max_memory_usage = 120ГБ, max_bytes_before_external_group_by=70ГБ
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    А почему в max_memory_usage вы не поставили 160ГБ ?
  • https://t.me/clickhouse_ru
    ReplacingMT
  • https://t.me/clickhouse_ru
    иначе рано или поздно к КХ придет OOM
  • @ClojureRing #242310 05:40 PM, 03 Nov 2021
    Коллеги есть ли смысл юзать клик как бд для хранения пользовательских данных к которым они сами и ходят. То есть как обычную бд для веб сервиса?
  • @ClojureRing #242311 05:40 PM, 03 Nov 2021
    Предполагается табличка размером в 100 -200 миллионов и пользовательские селектв где то 20-100 в секунду
  • @ClojureRing #242312 05:40 PM, 03 Nov 2021
    С выборкой по дате и пользователю
  • https://t.me/clickhouse_ru
    так это на запрос лимит. Если один запрос все же отъест 160ГБ, то все остальные, даже маленькие попадают.
  • https://t.me/clickhouse_ru
    не должен, потому что там есть total limit = 0.9*160
  • https://t.me/clickhouse_ru
    а давно такое появилось? мы периодически ловили оом при неудачных настройках лимитов
  • https://t.me/clickhouse_ru
    конечно. КХ это аналитическая БД, 100 запросов с сек, это не ее профиль совсем.
  • https://t.me/clickhouse_ru
    около года назад, там не все учитывалось сначала, типа мержи не входили, или всякая лабуда, типа размер памяти расходованной на инсерты неправильный, постепенно улучшается, в общем-то сейчас более менее.
  • https://t.me/clickhouse_ru
    можно, сам так и использую на одной из задач, потому что нет экспертизы в касандре, а тут уже известная лошадка
  • https://t.me/clickhouse_ru
    а ну тогда понятно, мы к сожалению пока ретрограды и сидим на 19.*
  • https://t.me/clickhouse_ru
    на новых версиях говорят есть куча оптимизаций, которые сильно ускоряют запросы. так что не плохо бы и обновиться :)
  • https://t.me/clickhouse_ru
    там есть другой параметр <max_memory_usage_for_all_queries>50582055936</max_memory_usage_for_all_queries>
    поставьте его 0.8 * ОЗУ
  • https://t.me/clickhouse_ru
    конечно неплохо, мы даже план написали, осталось реализовать... очень аккуратно)
  • https://t.me/clickhouse_ru
    да ладно, я сам недавно обновился с 18.14 на одной задаче, только ухудшения заметил 🙂
  • https://t.me/clickhouse_ru
    просто запросы были нормально написаны, а ускорили только кривые запросы :)
  • https://t.me/clickhouse_ru
    @den_crane #242326 05:55 PM, 03 Nov 2021
    и теперь при спонтанном ребуте железки, у меня КХ гарантировано не поднимается из-за кучи битых Log таблиц, у которых размеры файлов = 0 из-за ребута
  • https://t.me/clickhouse_ru
    >18.14
    это просто жесть, я тут до сих пор под впечатлением, что люди сидят на 19.*, а тут 18.14...
  • https://t.me/clickhouse_ru
    @Sablast #242328 05:56 PM, 03 Nov 2021
    так работает же)
  • https://t.me/clickhouse_ru
    @Sablast #242329 05:57 PM, 03 Nov 2021
    а если работает, то не трогай)
  • https://t.me/clickhouse_ru
    @den_crane #242330 05:57 PM, 03 Nov 2021
    да фигня есть люди с 1.0... (начало 2017 года)
  • https://t.me/clickhouse_ru
    @dbalashov #242331 05:57 PM, 03 Nov 2021
    мы только недавно обновили виртуалку c 18.14 на которой стоял CH последние N лет и копил телеметрию с софта
  • https://t.me/clickhouse_ru
    @dbalashov #242332 05:57 PM, 03 Nov 2021
    :)) просто забыли все что такое есть
  • https://t.me/clickhouse_ru
    ну если конечно никак не трогать, то ок, но если там что-то надо допиливать, то это просто неимоверное ограничение на каждом шагу.
  • https://t.me/clickhouse_ru
    @morozovsk #242336 06:03 PM, 03 Nov 2021
    бывает нужно залезть на какой-нибудь сервак и посмотреть какие-нибудь данные, а там тупо ilike не работает и это начинает напрягать, когда простейшие запросы нужно как-то костылить на старых серверах. в итоге везде обновился и забыл про всё как про страшный сон.
  • https://t.me/clickhouse_ru
    а тут же оно как, если в инфрастуруктуре ничего новее нет, то ты и не пользуешь ilike, а автоматом оборачиваешь все что нужно в lowerUTF8() =)
  • @simpl1g #242338 06:06 PM, 03 Nov 2021
    было бы неплохо, чтобы в документации указывали веерсию с которой доступен функционал, а то приходится по гитхабу вычленять
  • https://t.me/clickhouse_ru
    тоже думал об этом, но не понятно куда её пихать.
    вот например недавно я задокументировал JSON_EXISTS, пихать номер версии в туже строку, что и название функции наверное не вариант, потому что она тогда попадёт в левое меню и сделает его не юзабельным. писать в отдельной строчке - документация сильно распухнет в размерах. писать как "примечание", так вообще удвоится. к тому же желательно придерживаться общей стилистики, а а версия нигде не указывается. ещё бывают бекпорты, т.е. нужно будет указывать по несколько версий. в общем те кто сидят на последних версиях - им норм, остальные страдают :)
    https://clickhouse.com/docs/ru/sql-reference/functions/json-functions/#json-exists
    JSON | Документация ClickHouse

    Функции для работы с JSON В Яндекс.Метрике пользователями передаётся JSON в качестве параметров визитов. Для работы с та

  • да просто мелким шрифтом под именем функции хотябы)
    в маркдауне можно так <sup><sub>@since 21.10</sub></sup>
  • @simpl1g #242341 06:24 PM, 03 Nov 2021
    ну и стили на фронте можно же подкрутить
  • https://t.me/clickhouse_ru
    @morozovsk #242342 06:28 PM, 03 Nov 2021
    мне больше нравится такой вариант. там справа от названия функции обычно полно места, но для этого надо чтобы кто-то изменил разметку для генерации документации
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242343 06:28 PM, 03 Nov 2021
    а вы знаете про такую штуку: https://www.jetbrains.com/datagrip/ ? с CH совместима
    DataGrip: The Cross-Platform IDE for Databases & SQL by JetBrains

    A powerful IDE from JetBrains for SQL on macOS, Windows, and Linux.

  • совместима, если это вопрос)
  • https://t.me/clickhouse_ru
    да, но там недоработан функционал
  • https://t.me/clickhouse_ru
    @critskiy #242346 06:29 PM, 03 Nov 2021
    поэтому часть работы придется осуществлять через CLI
  • https://t.me/clickhouse_ru
    мы то про неё знаем, а вот она например про JSON_EXISTS ничего не знает
  • https://t.me/clickhouse_ru
    вообще это нормальная практика для всех других бд и яп и всего чего угодно кроме кликхауса так что наверно скоро и это сюда приедет.
  • https://t.me/clickhouse_ru
    @nefertiti_ru #242349 06:43 PM, 03 Nov 2021
    Вакансия - Волгоград / full time, remote
    Должность Dev RTB
    Компания I-advert.biz
    Список задач
    🔸Написание bidder, автоматической аналитики на основе данных
    🔸Техническая поддержка и сопровождение RTB-интеграций с партнерами
    🔸Технический контроль и мониторинг RTB трафика
    О нас
    Наша рекламная сеть регистрирует и сохраняет десятки тысяч запросов от пользователей в минуту. Это возможно только благодаря команде умных, талантливых и инициативных людей. IT команда активно растет вместе с сервисом, и мы ищем настоящего профессиона, который готов вместе с нами реализовать новые и амбициозные планы, которые позволят сохранить позиции одного из лучший сервисов для наших клиентов.
    Требования
    🔸Основной стек: clickhouse / golang
    🔸python + php + mysql желательны
    🔸Крайне необходимо: опыт в сетке directadvert/mgid/adskeeper/adlabs/kadam
    ЗП от 200к
    Контакт @nefertiti_ru
  • Ещё как вариант под разные версию генерить свою доку
  • https://t.me/clickhouse_ru
    ну это вообще фантастика :)
  • Раньше был выбор версии. Но дока на обновлялась вовремя ))
  • https://t.me/clickhouse_ru
    @nbsbbs #242353 06:51 PM, 03 Nov 2021
    Ну вообще да, удобно, когда знаешь, с какой версии появилась фича
  • https://t.me/clickhouse_ru
    у КХ это просто, если у вас не последняя версия КХ, это ваши проблемы
  • https://t.me/clickhouse_ru
    хотя бы доку по старым версиям могли бы выложить. её и так вебархивом можно найти наверно
  • https://t.me/clickhouse_ru
    да она была, там не смогли настроить переключалку версий (чисто веб-UI проблема) и поиск чтобы работал внутри версии.
  • 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
    @konnectrl #242361 07:32 PM, 03 Nov 2021
    Соболезную
  • https://t.me/clickhouse_ru
    в моей конюшне это выглядит так:

    шелдон купер 1-го уровня: следит за стандартами С++
    2-го уровня: читает все пропозалы к стандарту С++
    3-го уровня: читает обсуждения всех пропозалов на реддит
    4-го уровня: участвует в этих дискуссиях
    5-го уровня: сам пишет пропозалы
  • https://t.me/clickhouse_ru
    @den_crane #242363 07:35 PM, 03 Nov 2021
    ну видимо да https://github.com/ClickHouse/ClickHouse/issues/created_by/UnamedRus
    https://github.com/ClickHouse/ClickHouse/issues/created_by/den-crane
    https://github.com/ClickHouse/ClickHouse/issues/created_by/salttan
    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
    я сегодня днем подумал о версиях в доке, а сейчас увидел это сообщение, поэтому зареплаил (может совсем не по адресу, сорри)

    почему не сделать как, например, делают в доке python? если учесть, что фич много, можно положить под спойлер детализацию (added argument / deprecated / changed behavior с указанием версии)
    думаю у многих будут претензии к внешнему виду доки, но как вариант
    почему это хорошо - разрабы и крутые dba наверняка и так глубоко знают changelog, а вот обычные пользователям зашло бы
  • https://t.me/clickhouse_ru
    @TigProg #242365 07:42 PM, 03 Nov 2021
    имею в виду это
  • https://t.me/clickhouse_ru
    напишите FR на гитхабе об этом.
    Со мной бессмыленно это обсуждать, я же не работаю в команде clickhouse
  • https://t.me/clickhouse_ru
    @den_crane #242367 07:44 PM, 03 Nov 2021
    Для меня написание доки адский труд, потому что мне очень тяжело писать, я точно никакие спойлеры писать не буду, пусть докаписатели на зарплате этим занимаются
  • https://t.me/clickhouse_ru
    полностью понимаю
    но доку же поддерживают кто-то в более менее актуальном состоянии
    пожалуй попробую написать завтра, если не найду ничего подобного
  • https://t.me/clickhouse_ru
    @konnectrl #242369 07:54 PM, 03 Nov 2021
    Сегодня столкнулся с такой проблемой.
    Все подчеркнутые значения, должны совпадать, но они не совпадают. Почему так ? Хоть запрос по идее одинаковый по получению данных. Версия КХ 21.7.3.14
  • https://t.me/clickhouse_ru
    @konnectrl #242370 07:58 PM, 03 Nov 2021
    А если попытаться протестить от основного запроса, то всё работает, как ожидается
  • https://t.me/clickhouse_ru
    @valyala #242371 07:58 PM, 03 Nov 2021
    на первой странице hacker news есть новая статья про clickhouse vs timescaledb - https://news.ycombinator.com/ . Комменты под постом приветствуются :)
  • https://t.me/clickhouse_ru
    это что за клиент? Что если обернуть в toString( )
  • https://t.me/clickhouse_ru
    это DataSpell, я не думаю что проблема в клиенте
  • https://t.me/clickhouse_ru
    а еще нельзя использовать один и тот же аргумент в лябда функциях

    x->x , x->x
    x->x , y->y

    именуйте по разному
  • https://t.me/clickhouse_ru
    @den_crane #242375 08:02 PM, 03 Nov 2021
    иначе бывает вот такое

    select so,
    r
    from
    (select [('y',0),('n',1)] as cg,
    if( arrayMap( x -> x.1, cg ) != ['y', 'n'], 'y', 'n') as so,
    arrayFilter( x -> x.1 = so , cg) as r
    );
    ┌─so─┬─r─────────┐
    │ n │ [('n',1)] │
    └────┴───────────┘

    select --so,
    r
    from
    (select [('y',0),('n',1)] as cg,
    if( arrayMap( x -> x.1, cg ) != ['y', 'n'], 'y', 'n') as so,
    arrayFilter( x -> x.1 = so , cg) as r
    );
    ┌─r─────────┐
    │ [('y',0)] │
    └───────────┘
  • https://t.me/clickhouse_ru
    @den_crane #242376 08:03 PM, 03 Nov 2021
    коментируем одно поле во внешнем запросе и результат меняется в другом поле
  • https://t.me/clickhouse_ru
    @den_crane #242377 08:05 PM, 03 Nov 2021
    меняем имя аргумента
    select --so,
    r
    from
    (select [('y',0),('n',1)] as cg,
    if( arrayMap( x -> x.1, cg ) != ['y', 'n'], 'y', 'n') as so,
    arrayFilter( y -> y.1 = so , cg) as r
    );
    ┌─r─────────┐
    │ [('n',1)] │
    └───────────┘
  • https://t.me/clickhouse_ru
    Это я в play запустил
  • https://t.me/clickhouse_ru
    Окей сейчас попробую
  • https://t.me/clickhouse_ru
    play.clickhouse.tech displays Int64 incorrectly 9223372033328794000 instead of 9223372033328793741 · Issue #10824 · ClickHouse/ClickHouse

    SELECT '- '||toString(max(WatchID))||' -', max(WatchID), toString(max(WatchID)) FROM hits_100m_obfuscated where WatchID = 9223372033328793741 - 9223372033328793741 -...

  • https://t.me/clickhouse_ru
    Рил получается вся история фич и багов ..... Помогло
  • https://t.me/clickhouse_ru
    @den_crane #242382 08:19 PM, 03 Nov 2021
    ну блин ну зачем мерять

    SELECT count(*) FROM rides

    Database Query Duration (ms)
    TimescaleDB 435
    ClickHouse 3
    ну издевательство же.
  • https://t.me/clickhouse_ru
    напишите-напишите. у меня есть ощущение что команда CH просто немного тормозит в переходе к солидному корпоративному уровню с поддержкой старых версий втч их доки. их подход - такой типично гиковский, ну может ещё дело в том что их клиентом до сих пор были только яндексовские команды
  • https://t.me/clickhouse_ru
    @gigimon4ik #242385 08:41 PM, 03 Nov 2021
    Здравствуйте, а подскажите пожалуйста, как составить (и можно ли) такой запрос. Есть у меня таблица такого вида:
    ```
    pair String,
    price Decimal64(9),
    date DateTime,
    changeDate DateTime
    ```
    pair повторяются с другими date/changeDate. Как мне вывести pair/price отсортированные по changeDate, но только 1 последнему значению?
  • https://t.me/clickhouse_ru
    а date тут зачем?
  • https://t.me/clickhouse_ru
    1 последнему значению changeDate ?
  • https://t.me/clickhouse_ru
    @gigimon4ik #242388 08:44 PM, 03 Nov 2021
    date - дата когда данные закинулись, changeDate - когда они последний раз менялись на источнике
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    select pair, price, changeDate from .... order by pair desc, changeDate desc limit 1 by pair
  • https://t.me/clickhouse_ru
    @gigimon4ik #242391 08:46 PM, 03 Nov 2021
    спасибо, а есть кроме оф доки еще что-то по кликхаусу?
  • https://t.me/clickhouse_ru
    @gigimon4ik #242392 08:46 PM, 03 Nov 2021
    по языку запросов
  • https://t.me/clickhouse_ru
    ну нету. Ваш вопрос решается практически одинаково в любой SQL базе, и в документациях нету таких ответов.

    спрашивайте тут в чате
  • https://t.me/clickhouse_ru
    @gigimon4ik #242394 09:02 PM, 03 Nov 2021
    спасибо еще раз
  • https://t.me/clickhouse_ru
    ещё полезно https://kb.altinity.com/ почитать
  • https://t.me/clickhouse_ru
    @gigimon4ik #242396 09:23 PM, 03 Nov 2021
    спасибо за ссылку
  • https://t.me/clickhouse_ru
    а это в стандарт sql не входит?
  • https://t.me/clickhouse_ru
    limit by ? кажется нет. В некоторых базах и limit-а нет, например в Оракле (раньше точно не было)
  • https://t.me/clickhouse_ru
    @den_crane #242399 10:54 PM, 03 Nov 2021
    И только в КХ 3 разных синтаксиса поддерживается. Ад. top / limit / fetch

    select * from(select * from (select top 3 * from numbers(10)) limit 5) order by number OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
  • https://t.me/clickhouse_ru
    Больше десяти лет как добавили в оракл лимит
  • https://t.me/clickhouse_ru
    я на 11м закончил

    а ну да похоже в 12м добавили и limit и fetch
    хорошо, у них и PERCENT есть FETCH FIRST 5 PERCENT ROWS ONLY;
  • 04 November 2021 (115 messages)
  • @2017512165 #242404 03:47 AM, 04 Nov 2021
    𝐓𝐡𝐞 𝐬𝐞𝐜𝐫𝐞𝐭 𝐭𝐨 𝐬𝐮𝐜𝐜𝐞𝐬𝐬 𝐢𝐬 𝐭𝐡𝐚𝐭 𝐈 𝐛𝐢𝐭 𝐨𝐟𝐟 𝐦𝐨𝐫𝐞 𝐈 𝐜𝐨𝐮𝐥𝐝 𝐜𝐡𝐞𝐰 𝐚𝐧𝐝 𝐜𝐡𝐞𝐰𝐞𝐝 𝐚𝐬 𝐟𝐚𝐬𝐭 𝐚𝐬 𝐈 𝐜𝐨𝐮𝐥𝐝. 𝐓𝐡𝐚𝐧𝐤𝐬 𝐌𝐫s charmel chavezBTC @charmelchavezBTC 𝐟𝐨𝐫 𝐲𝐨𝐮𝐫 𝐬𝐮𝐩𝐩𝐨𝐫𝐭 𝐢𝐧 𝐦𝐲 𝐭𝐫𝐚𝐝𝐢𝐧𝐠 s𝐡𝐞 𝐢𝐬 the 𝐫𝐢𝐠𝐡𝐭 𝐩𝐞𝐫𝐬𝐨𝐧 𝐭𝐨 𝐰𝐨𝐫𝐤 𝐰𝐢𝐭𝐡 𝐚𝐧𝐝 𝐥𝐞𝐠𝐢𝐭𝐢𝐦𝐚𝐭𝐞 𝐰𝐢𝐭𝐡 𝐡er 𝐩𝐫𝐨𝐠𝐫𝐚𝐦
    👇👇
    https://t.me/joinchat/Ga2V1yvJFJw4YmM0
  • https://t.me/clickhouse_ru
    в Oracle всегда был лимит но писалось по другому rownum<100
  • https://t.me/clickhouse_ru
    !report
  • https://t.me/clickhouse_ru
    @hostadminonline #242411 07:52 AM, 04 Nov 2021
    всем привет
    подскажите плз
    вот у меня вот такая констуркция
    CREATE DICTIONARY lotinfo_agency_analitics.dict_clientsBase
    (
    id UInt64,
    fio String
    )
    PRIMARY KEY id
    SOURCE(CLICKHOUSE(TABLE clientsBase DB 'lotinfo_agency_analitics' UPDATE_FIELD 'date'))

    вызывает
    DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED)

    а что нужно где прописать в настройках чтобы когда он сам к себе обращается ему не нужны были логины и пароли ?
  • https://t.me/clickhouse_ru
    Не было там лимита до версии 12с
  • https://t.me/clickhouse_ru
    @nikitosiusis #242414 08:00 AM, 04 Nov 2021
    а в mssql есть?)
  • https://t.me/clickhouse_ru
    механизм был. оператора offset не было
  • https://t.me/clickhouse_ru
    Да-да, "механизм", субселект делать
  • https://t.me/clickhouse_ru
    а rownum ?
  • https://t.me/clickhouse_ru
    А rownum не позволяет сортировать, он сначала выбирает, а только потом сортирует
  • https://t.me/clickhouse_ru
    ты прав
  • https://t.me/clickhouse_ru
    кто нить встречался ? упорно не могу найти (
  • делайте так
    CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default'
    и разрешите default user с локалхоста
  • https://t.me/clickhouse_ru
    @hostadminonline #242422 08:55 AM, 04 Nov 2021
    > и разрешите default user с локалхоста
    а как разрешить ? у меня
    <networks>
    <ip>::/0</ip>
    </networks>

    т.е. получается что со всех ИПов ... или еще что-то нужно прописать ?
  • @dj_mixer #242423 08:57 AM, 04 Nov 2021
    да, у вас на default пароль чтоли поставлен? лучше дать пустой и ограничить по IP
  • https://t.me/clickhouse_ru
    @hostadminonline #242424 08:58 AM, 04 Nov 2021
    там прописано <password></password>
  • тогда должно работать при использовании
    CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default'
  • https://t.me/clickhouse_ru
    @hostadminonline #242426 08:59 AM, 04 Nov 2021
    ооо класс спасибо .... на default был прописан шифрованный пароль
  • https://t.me/clickhouse_ru
    @AlexTheDolphin #242427 09:30 AM, 04 Nov 2021
    Коллеги, как вы думаете, что эффективнее

    insert into remote() select from local where

    или

    insert into local select from remote() where
  • https://t.me/clickhouse_ru
    В простейшем варианте, когда с обоих сторон по одной тачке, одинаково бодрые диски и всё такое?
    Второе эффективнее. Первое создаст временную дистриб таблицу, напихает сначала туда, потом отправит.
    Второе сразу будет класть партами что получит из селекта.
  • https://t.me/clickhouse_ru
    Спасибо! where же на удалённом сервере будет фильтровать?
  • https://t.me/clickhouse_ru
    Ну есть всякие GLOBAL джойны и подобоное когда нет, не только на удалённом. Но если таким не балуетесь, то да, на удаленном и только.
  • https://t.me/clickhouse_ru
    Да, там простой фильтр по колонке.
    Понял, еще раз спасибо!
  • https://t.me/clickhouse_ru
    @floxard #242432 10:52 AM, 04 Nov 2021
    А, и ещё на всякий случай, MV сверху remote() работать не будет.
  • https://t.me/clickhouse_ru
    @floxard #242433 10:56 AM, 04 Nov 2021
    @AlexTheDolphin есть ещё такая штука делает как раз что вы хотите
    https://clickhouse.com/docs/ru/operations/utilities/clickhouse-copier/
  • https://t.me/clickhouse_ru
    Знаю, но это не то, что мне надо
  • https://t.me/clickhouse_ru
    @floxard #242435 10:56 AM, 04 Nov 2021
    Почему? Оно так же делает insert select, там так же можно задать where
  • https://t.me/clickhouse_ru
    Потому что у неё есть одна проблема. Она не обрабатывает уже обработанные партиции, даже если они были дополнены.

    Ну и у меня чуть другая задача.
  • https://t.me/clickhouse_ru
    @yaski #242437 11:06 AM, 04 Nov 2021
    не могу никак синтаксис для джоинов понять
    у меня каждый раз ругается неясно изза чего
    вот в следующем запросе например в чем ошибка на LEFT JOIN?
  • https://t.me/clickhouse_ru
  • так а ошибка то какая?
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242439 #242441 11:33 AM, 04 Nov 2021
    Code: 62. DB::Exception: Syntax error: failed at position 223 ('LEFT') (line 4, col 5): LEFT JOIN (
  • а это весь запрос? почему select в скобки обёрнут перед джойном?
  • https://t.me/clickhouse_ru
    @k0st1an #242443 11:44 AM, 04 Nov 2021
    Всем хорошего дня. Подскажите как заставить КХ загрузить словарь CSV в таком виде

    99306,IQ,Maysan,,\'Ali al Gharb,

    Постоянно получаю ошибку

    Column 4, name: city_name, type: String, parsed text: "<BACKSLASH>"ERROR
    Code: 27, e.displayText() = DB::ParsingException: Cannot parse input: expected '\\N' before: '\'Ali al Gharb,\n' (version 21.7.7.47 (official build))

    Может хак какой есть? (пробовал разные способы экранировать). Без бэкслеша вообще ничего не может

    Code: 27. DB::Exception: Received from localhost:9000. DB::Exception: Cannot parse input: expected ',' at end of stream.: Buffer has gone, cannot extract information about what has been parsed..
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242442 #242444 11:45 AM, 04 Nov 2021
    Чтобы название таблицы для джоина потом указать
    Но без скобок таже ошибка
  • https://t.me/clickhouse_ru
    @esvalukhin #242445 11:50 AM, 04 Nov 2021
    Добрый день, подскжаите пожалуйста по следующему моменту.
    У нас есть в Postgres две таблицы, есть необходимость перенести эти две таблицы из Postgres в Clikchouse объединив данные в одну таблицу, Хотел воспользоваться способом создания двух таблиц в СH c Engine = PostgreSQL, и потом через select s join объединить данные этих двух таблиц и сделать уже insert в таблицу CH. Но одна из таблиц в Postgres имеет jsonb поле, как в таком случае можно настроить маппинг в CH?
    или же лучше попробовать в Postgres сделать VIEW который будет равзвертывать jsonb поле в соответствующие поля, и уже на основе данного VIEW делать таблицу в CH?
  • без скобок должно работать, у вас может старая версия КХ?
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242446 #242447 11:51 AM, 04 Nov 2021
    21.10.2.15
  • а, понял, с where не будет так работать, надо в подзапрос обернуть

    select client_id, … from (select from abonements where..) join (select from table2) using client_id
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242448 #242449 11:55 AM, 04 Nov 2021
    То есть без where можно подзапрос не делать а с ним нужно делать? Довольно неудобно
  • я всегда пишу с подзапросом джойны везде, поэтому не замечал никогда этого)
  • @dj_mixer #242451 12:03 PM, 04 Nov 2021
    max_streams_multiplier_for_merge_tables
    если выставить в 1, можно рассчитывать что запросы в отдельные таблицы пойдут по очереди?
    если использовать merge -> distributed -> local
  • https://t.me/clickhouse_ru
    Есть параметр format_csv_allow_single_quotes его можно поставить=0 тогда экранировать не надо

    Есть параметер input_format_null_as_default=0 тогда будет работать экранированный
  • https://t.me/clickhouse_ru
    все немного сложнее оказалось на стороне CSV. но спасибо за наводку
  • https://t.me/clickhouse_ru
    да, я в курсе, rownum моя самая любимое выражение.
    Я 10 лет занимался переписыванием запросов, стабилизируя план с помощью предиката rownum>0, оптимизатор не имеет права переносить предикаты внутрь и наружу если есть rownum и мержить select from select.
  • https://t.me/clickhouse_ru
    не знал
  • https://t.me/clickhouse_ru
    @den_crane #242456 12:49 PM, 04 Nov 2021
    ну это естественно, это результат запроса может изменить, поэтому в КХ такой же точно трюк работает
    select (select ... from where какой-то хороший предикат limit 10000000000000) where какой-то плохой предикат
    и все, плохой предикат нельзя перенести внутрь, под limit
  • https://t.me/clickhouse_ru
    кажется да, этот параметр как раз делали чтобы ускорить запросы к Merge
  • https://t.me/clickhouse_ru
    только теперь кто угодно может зайти без пароля из-за <ip>::/0</ip>, обычно делают локально чтобы можно было ходить без пароля, или локально+все другие ноды КХ
  • https://t.me/clickhouse_ru
    не все норм .... мы уже прописали ограничение только на локлхост, спасибо )
  • https://t.me/clickhouse_ru
    👍
  • @subotic0 #242462 01:07 PM, 04 Nov 2021
    Добрый день, работает ли final для движка ReplacingMergeTree в джойнах?
    select t1.*, t2.* from test_table1 t1
    join replacing_table2 t2 final on t1.col1= t2.col2
    Эта конструкция не работает, или я делаю что-то не так? если джойнить подзапрос
    ...(select * from replacing_table2 final) t2..
    то работает верно
  • https://t.me/clickhouse_ru
    все так, без подзапроса FINAL не работает при join. Тупо unfinished code
  • @packofopinions #242465 01:19 PM, 04 Nov 2021
    Добрый день. Подскажите пожалуйста последовательность при обновлении materialized view с указанной таблицей для сохранения. При ее детаче нет возможности обновить с помошью MODIFY QUERY. Пишет, что не существует. Можно ли просто пересоздать эту view?
  • https://t.me/clickhouse_ru
    @yaski #242466 01:27 PM, 04 Nov 2021
    Нашел странную особенность. Если указать в HAVING название поля до аггрегации то он будет работать не после агггрегации а до. На мой взгляд он в такой ситуации должен выбрасывать ошибку.
  • https://t.me/clickhouse_ru
    так не надо detach. Прямо меняете и все, в том и суть фичи чтобы можно было на ходу менять.

    команда detach выгружает из сервера все знания о таблице или ином объекте, как будто этого объекта вообще нет.
  • https://t.me/clickhouse_ru
    нет. Не должен, если это поле в groupby
  • https://t.me/clickhouse_ru
    @yaski #242470 01:31 PM, 04 Nov 2021
    оно не в group by, оно используется в функции
  • https://t.me/clickhouse_ru
    в какой функции?
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242471 #242473 01:32 PM, 04 Nov 2021
    countIf(status = 'activated' OR status = 'new') as active, any(status) as state
  • https://t.me/clickhouse_ru
    @yaski #242474 01:32 PM, 04 Nov 2021
    я в HAVING указал status вместо state
  • https://t.me/clickhouse_ru
    @yaski #242475 01:32 PM, 04 Nov 2021
    и оно вместо фильтрации после отфильтровало до
  • https://t.me/clickhouse_ru
    @yaski #242476 01:33 PM, 04 Nov 2021
    как будто это WHERE а не HAVING
  • https://t.me/clickhouse_ru
    @den_crane #242477 01:34 PM, 04 Nov 2021
    в КХ сделан хак из-за дистрибьютид запросов и все предикаты всегда как бы перемещаются из where в having, а затем проваливаются назад из having в where (если можно их провалить)
  • https://t.me/clickhouse_ru
    ну т.е. на результат запроса это не влияет, вы просто исользовали неправильное поле.
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242478 #242479 01:35 PM, 04 Nov 2021
    очень даже влияет
  • https://t.me/clickhouse_ru
    @yaski #242480 01:35 PM, 04 Nov 2021
    в результаты совершенно не тот результат что я ожидаю
  • https://t.me/clickhouse_ru
    не в этом смысле
  • https://t.me/clickhouse_ru
    @yaski #242482 01:36 PM, 04 Nov 2021
    было бы лучше если бы ошибку кидал
  • https://t.me/clickhouse_ru
    @yaski #242483 01:36 PM, 04 Nov 2021
    что в having используется поле которое не в group by
  • https://t.me/clickhouse_ru
    да лучше бы, к сожалению таких мест десятки
  • https://t.me/clickhouse_ru
    Вроде бы это не запрещено? Если в having есть поле, которое не в group by, то оно просто эквивалентно WHERE. В MySQL также работает
  • https://t.me/clickhouse_ru
    @cocainefornina #242486 02:00 PM, 04 Nov 2021
    Добрый вечер! Напомните пожалуйста команду, которая перемешивает данные в кх, чтобы на каждый запрос выкидывались новые данные?!
  • https://t.me/clickhouse_ru
    ну не совсем

    select sum(price) from price group by tag_key having tag_key = 1;
    +------------+
    | sum(price) |
    +------------+
    | 30 |
    +------------+

    select sum(price) from price having tag_key = 1;
    ERROR 1054 (42S22): Unknown column 'tag_key' in 'having clause'
  • https://t.me/clickhouse_ru
    Согласен, нужно в SELECT указать эту колонку тоже, в WHERE это не требуется
  • https://t.me/clickhouse_ru
    order by rand() ?
  • https://t.me/clickhouse_ru
    @den_crane #242490 02:26 PM, 04 Nov 2021
    В общем Amos в какой-то момент решил упростить код с Distributed и написал штуку которая понимает что из having можно передвинуть в where и затем сделал так что инициатор в шарды присылает запрос в котором все предикаты засунуты в having и теперь мы имеем то что имеем
  • https://t.me/clickhouse_ru
    А кто такой Amos, кстати?
  • https://t.me/clickhouse_ru
    @den_crane #242493 02:33 PM, 04 Nov 2021
    Аmos разработчик КХ который пилит мегасложные фичи.
    https://www.youtube.com/watch?v=jJ5VuLr2k5k
  • https://t.me/clickhouse_ru
    @den_crane #242494 02:35 PM, 04 Nov 2021
    сложные с точки зрения математики, там чистая магия
  • @packofopinions #242496 03:38 PM, 04 Nov 2021
    Не подскажете? При попытке добавить колонки в таблицу, из которой производится выборка (materialized view) в другую таблицу, возвращается ошибка, что этой самой matview не существует (вне зависимости удалена она или нет)
  • https://t.me/clickhouse_ru
    типа alter table add column кидает ошибку что нету mat view ? Покажите копи-пейст ошибки
  • https://t.me/clickhouse_ru
    надо посмотреть. не верится чт там есть что-то недостпное для условного воспитанника мгу
  • Все верно, add column, только on cluster еще

    Received exception from server (version 21.8.8):
    Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: There was an error on [192.168.56.11:9000]: Code: 60, e.displayText() = DB::Exception: Table xxx.mv_xxxx (c2eac057-851e-43fd-82ea-c057851ef3fd) doesn't exist (version 21.8.8.1.altinitystable (altinity build)).
  • https://t.me/clickhouse_ru
    @konnectrl #242500 04:49 PM, 04 Nov 2021
    Не подскажите, какую нибудь статью про проекции в CH ? Зачем они ? Как использовать ?
  • https://t.me/clickhouse_ru
    тут читали?
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#projection-query
    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
    @critskiy #242503 04:57 PM, 04 Nov 2021
    есть еще презентация, но не знаю, подойдет ли, потому что митап с этой презентацией мне не доводилось слушать...
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Да, я не понимаю как их использовать
  • https://t.me/clickhouse_ru
    @konnectrl #242506 04:59 PM, 04 Nov 2021
    Для запросов которые работаю ежедневно ?
  • https://t.me/clickhouse_ru
    @konnectrl #242507 04:59 PM, 04 Nov 2021
    Например для дашбордов ?
  • https://t.me/clickhouse_ru
    @critskiy #242508 05:00 PM, 04 Nov 2021
    возможно
  • https://t.me/clickhouse_ru
    @critskiy #242509 05:00 PM, 04 Nov 2021
    у нас версия 20.5 на проекте, поэтому не припоминаю, чтобы эта фича была
  • https://t.me/clickhouse_ru
    @critskiy #242510 05:01 PM, 04 Nov 2021
    Projection (RFC) · Issue #14730 · ClickHouse/ClickHouse

    Projections are like materialized views, but defined in part-level. It provides consistency guarantees along with automatic usage in queries. This RFC proposes a way to implement projections in Cli...

  • https://t.me/clickhouse_ru
    @critskiy #242511 05:02 PM, 04 Nov 2021
    если смотреть в вертику, то возможно projections как альтернатива MV для ежедневных выборок
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @critskiy #242513 05:02 PM, 04 Nov 2021
    но думаю, @den_crane пояснит лучше, мне щупать не довелось
  • https://t.me/clickhouse_ru
    Спасибо, за попытки помочь :)
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-queries-and-syntax/projections-examples/

    эта штука позволяет обходится без MV и преагрегировать данные, и сортировать колонки по другому, т.е. можно эмулировать индексы в широких таблицах, просто добавив прожекшин в котором есть поля первичного ключа, но отсортированные по другому полю, и таким образом находить редкие уникальные строки
  • https://t.me/clickhouse_ru
    Спасибо :)
  • @1002712185 #242518 09:07 PM, 04 Nov 2021
    Добрый день!
    Вставляю данные через asynch.
    При обработке неправильных данных, которые выходят за пределы границ своих типов(например, пытаюсь вставить число -10 в UInt) - получаем ошибку:
    Code: 53. Type mismatch in VALUES section. Repeat query with types_check=True for detailed info. Column ie: argument out of range.
    После этого все зависает. Похоже что кликхаус зависает.
    иногда бывает ошибка если пытаюсь продолжать вставлять другие данные или заменяю(исправляю) текущие(текст ошибки приведен ниже).
    Кто-нибудь сталкивался?
    Как правильно обрабатывать числа которые выходят из диапазона значений ячейки?
    Заранее благодарен любым советам.
    *****
    Error> TCPHandler: Code: 33. DB::Exception: Cannot read all data in NativeBlockInputStream. Rows read: 0. Rows expected: 100. (CANNOT_READ_ALL_DATA), Stack trace (when copying this message, always include the lines below):
    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x936a17a in /usr/bin/clickhouse
    1. DB::NativeBlockInputStream::readData(DB::IDataType const&, COW<DB::IColumn>::immutable_ptr<DB::IColumn>&, DB::ReadBuffer&, unsigned long, double) @ 0x10d49083 in /usr/bin/clickhouse
    2. DB::NativeBlockInputStream::readImpl() @ 0x10d49ca2 in /usr/bin/clickhouse
    3. DB::IBlockInputStream::read() @ 0x104c3a86 in /usr/bin/clickhouse
    4. DB::TCPHandler::receiveData(bool) @ 0x117b6ee2 in /usr/bin/clickhouse
    5. DB::TCPHandler::receivePacket() @ 0x117ac3ab in /usr/bin/clickhouse
    6. DB::TCPHandler::readDataNext() @ 0x117ae56f in /usr/bin/clickhouse
    7. DB::TCPHandler::processInsertQuery() @ 0x117ac908 in /usr/bin/clickhouse
    8. DB::TCPHandler::runImpl() @ 0x117a5dff in /usr/bin/clickhouse
    9. DB::TCPHandler::run() @ 0x117b8519 in /usr/bin/clickhouse
    10. Poco::Net::TCPServerConnection::start() @ 0x1437788f in /usr/bin/clickhouse
    11. Poco::Net::TCPServerDispatcher::run() @ 0x1437931a in /usr/bin/clickhouse
    12. Poco::PooledThread::run() @ 0x144ac199 in /usr/bin/clickhouse
    13. Poco::ThreadImpl::runnableEntry(void*) @ 0x144a842a in /usr/bin/clickhouse
    14. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    15. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
  • @1002712185 #242519 09:11 PM, 04 Nov 2021
    Возможно ошибка в библиотеке asynch - но пока до конца не разобрался
  • https://t.me/clickhouse_ru
    А почему не валидируете данные на питоне ?
  • @1002712185 #242521 09:22 PM, 04 Nov 2021
    слишком дорого
  • @1002712185 #242522 09:23 PM, 04 Nov 2021
    и ошибки крайне редко - это скорее исключение - но все умирает
  • https://t.me/clickhouse_ru
    я бы вам что то подсказал, но мы используем clickhouse-driver и валидируем все входящие данные :(
  • @1002712185 #242524 09:27 PM, 04 Nov 2021
    ну вот очень бы не хотелось все данные валидировать 😐
  • https://t.me/clickhouse_ru
    Возможно вам подскажут более опытные люди, как это обойти кликхаусом
  • https://t.me/clickhouse_ru
    да конечно баг
  • https://t.me/clickhouse_ru
    А подскажите, пожалуйста, это ожидаемое поведение, что проекция, созданная с toStartOfMinute(timestamp) не используется для запросов, содержащих просто toStartOfHour(timestamp)? Приходится делать что-то вроде toStartOfHour(toStartOfMinute(timestamp)).
  • @snoopyin #242528 10:20 PM, 04 Nov 2021
    Подскажите пожалуйста как лучше сделать ETL в таком случае:
    1. Есть source таблица с ReplacingMergeTree и в нее каждый день льются данные за последние 2 месяца (они волатильны).
    2. Есть MV которое агрегирует данные (получается данных раза в 3 меньше чем в source).
    3. Пользователям нужны данные из MV, но без дубликатов, которые возникают из-за ежедневного обновления окна на 2 месяца назад.

    Пока идеи такие:
    1. staging-таблица копирующая MV + replace partiotion в MV после ежедневной заливки - вроде ок, но усложняется ETL pipeline
    2. ReplacingMergeTree в MV + final. но это удар по перформансу
  • https://t.me/clickhouse_ru
    Да. Это не реализовано. Тяжело сделать. Сделайте проджекшин в котором оба дименшина, to..hour, tominute..
    Это почти не повлияет на размер
  • https://t.me/clickhouse_ru
    это на какой версии?

    не воспроизводится 21.11.1.8636, может питон нужен или много строк за раз

    create table async_test( A UInt64 ) Engine=MergeTree order by tuple();

    clickhouse-benchmark -c 10 --async_insert=1 <<< "insert into async_test values ( -10 )"
  • https://t.me/clickhouse_ru
    Хорошо, спасибо за совет.
  • https://t.me/clickhouse_ru
    @den_crane #242532 11:30 PM, 04 Nov 2021
    Projections are not very smart about datetime dimension. · Issue #26369 · ClickHouse/ClickHouse

    create table ptest ( account UInt64, clip UInt64, ts DateTime, v Int64, play Int64, uid Int64 ) Engine = MergeTree order by tuple(); insert into ptest select number%3, number%7, toDateTime(&#39...

  • 05 November 2021 (102 messages)
  • https://t.me/clickhouse_ru
    Join идёт после from или другого. Join и никак не после where
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242528 #242536 05:49 AM, 05 Nov 2021
    странно что вам помогает ReplacingMT + final. Вероятно у вас аггрегация за один день . При таком как у вас подходе с дубликатами на входе, любая агрегация с суммированием в MV обычно приводит к невозвратной порче данных. Типичное решение - CollapsingMT и сторнирование (вы должны не просто дубликаты присылать, а удаляемые строчки целиком, с флагом -1. В основной табличке Collapsing сделает свое дело, а в аггрегации для MV у вас будет шанс отнять лишнее из счетчика/сумматора). Но это другой подход к ETL, тут нужно не ежедневный слепок базы делать, а слать в КХ полный поток изменений.
    Если же вы пригонятете каждый день слепок данных за последние два месяца, аггрегируя их по дням, то чудес нет - надо старые неправильные данные как-то удалять. К вашим двум вариантам можно добавить ещё пару (или десяток) подобных, но все они будут с изъянами.
  • Я ишью вмдел. Дособеру данные для воспроизведения
  • @355295714 #242540 09:19 AM, 05 Nov 2021
    Добрый день, подскажите пожалуйсте, можно ли собрать результат запроса в массив значений по ключу группировки?
    Пример: есть табличка с полями unique_id и type, хотелось бы собрать ответ в виде unique_id, [type]
  • использyйте groupArray(type)
  • Спасибо большое
  • https://t.me/clickhouse_ru
    @andrecpc #242543 10:06 AM, 05 Nov 2021
    Доброго всем дня! Вопрос не по кликхаузу, но может всё же поможете)) (postgresql)
    Есть такая таблица с id пользователя, временем события сессии и типом события. ss - старт сессии, ue - периодические события. Необходимо посчитать среднюю длину сессии по пользователю или длины каждой сессии. По сути от времении каждого ss надо отнимать последнее ue, до нового ss (наоборот только). Но что-то не вывожу(( Помогите, пожалуйста.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242543 #242544 10:30 AM, 05 Nov 2021
    два вложенных запроса с оконками. внутренний создает через lead ещё один столбец "следующее событие". внешний - находит минимальное время события после старта для которого следующее событие это старт.
    М.б. в pg такое можно сделать в рамках одного запроса, но в КХ у меня получается только за два вложенных.
  • https://t.me/clickhouse_ru
    Спасибо большое! Вроде, понял)
  • https://t.me/clickhouse_ru
    Чистый clickhouse-driver при упаковке int-ов при помощи питоновского struct в случае их переполнения кинет ошибку: https://github.com/mymarilyn/clickhouse-driver/blob/1114f88fb9f1fccc9a2b517d56da8270340c887e/tests/columns/test_int.py#L34

    Так что проверять вроде нет нужды.

    asynch должен сделать то же самое по идее
    clickhouse-driver/test_int.py at 1114f88fb9f1fccc9a2b517d56da8270340c887e · mymarilyn/clickhouse-driver

    ClickHouse Python Driver with native interface support - clickhouse-driver/test_int.py at 1114f88fb9f1fccc9a2b517d56da8270340c887e · mymarilyn/clickhouse-driver

  • https://t.me/clickhouse_ru
    @aspcartman #242547 11:19 AM, 05 Nov 2021
    У нас сейчас тестовая пода кликхауса со своей нагрузкой случайно решила заглянуть на чужу ноду и радостно потеснила собой все задачи там, подняв load_avg до 22.

    При всем при этом сам этот заблудившийся кликхаус работает так же быстро, будто ничего и не случилось и ему норм. Браво, кликхаус не тормозит! 😄 Очень круто.
  • @pavel_maksimow #242548 11:23 AM, 05 Nov 2021
    Добрый день.
    Есть массив массивов с дробными числами, который получается в результате вычисления и округления чисел.
    [[0.21,0.08,0.22,0.15],[0.15,0.15,0]]
    Если просуммировать то получаю
    0.039999999999999925
    Должно быть 0.04.
    Подскажите, что с этим можно сделать?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242548 #242549 11:26 AM, 05 Nov 2021
    Перестать использовать float . Вы же не физику считаете?
  • @beebeeep #242550 11:28 AM, 05 Nov 2021
    `toDecimal32(0.21, [2|4|8|какая еще точность нужна])` и так далее
  • да, точно, умножение на 1млн помогает. Спасибо
  • https://t.me/clickhouse_ru
    либо округлять, в доп к предложенному, это нормальное поведение
  • @simpl1g #242553 11:56 AM, 05 Nov 2021
    может у когонибудь был опыт использования/сравнения singlestore vs clickhouse, а то они пишут с уверением что будет лучше)
  • https://t.me/clickhouse_ru
    у вас какая назгрузка то?
    OLAP или OLTP?
  • OLAP, сжатых данных где-то 80Тб + репликация х2
  • @simpl1g #242556 12:06 PM, 05 Nov 2021
    нормального обновления данных конечно не хватает, но пока норм работает drop/replace дневных партиций
  • https://t.me/clickhouse_ru
    Учитывая, что singlestore растет из memsql, есть некоторые подозрения, что хранилище на дисках у них менее оптимизировано
  • у них главная маркетинговая фишка что у них лучше сжатие
  • https://t.me/clickhouse_ru
    На новых физических принципах? :)

    Ну тогда должны быть бенчмарки
  • Beyond being closed source, SingleStoreDB’s License explicitly prohibits benchmarking 😂😂
  • @simpl1g #242561 12:16 PM, 05 Nov 2021
    даже если она будет немного лучше/быстрее, думаю по деньгам там всерано выйдет примерно раз в 8 дороже по моим прикидкам)
  • Спасибо, понятно что магии нет )
  • https://t.me/clickhouse_ru
    так, кликхаусовцы! кто забыл выключить тестовый код skynet перед выпуском в прод?!
  • https://t.me/clickhouse_ru
    @yaski #242564 01:06 PM, 05 Nov 2021
    Подскажите пожалуйста у меня есть таблица в которой строки по столбцу "months" содержат значения 0,1,2,3,4,5 и тд
    Я хочу повернуть таблицу так чтобы эти значения стали именами столбцов. А строки содержали значения по соответствию из других столбцов. Как на картинке ниже
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @yaski #242566 01:06 PM, 05 Nov 2021
    Как можно такое сделать, какие функции использовать лучше всего?
  • https://t.me/clickhouse_ru
    @yaski #242567 01:08 PM, 05 Nov 2021
    я так думаю можно сгруппировать по колонке mm, а значения разместить в массив. Потом по уникальным значениям months фильтровать и отображать значения в этом массиве. Но не понятно пока как сделать чтобы имя колонки задавалось динамически.
  • https://t.me/clickhouse_ru
    https://stackoverflow.com/questions/62306158/pivot-in-clickhouse
    https://stackoverflow.com/questions/61781720/pivot-or-equivalent-in-clickhouse
    https://stackoverflow.com/questions/66024153/pivot-column-into-nxm-table-in-clickhouse
    Pivot In clickhouse

    I want to do a pivot in clickhouse I have data in the form of rule_name | result 'string_1', 'result_1' 'string_2', 'result_2' 'string_3', 'result_3' 'string_4', 'result_4' I want to pivot it to...

  • https://t.me/clickhouse_ru
    так же как специализированные olap движки могут сильно побить обычные на своих задачах, так и специализированные алгоритмы сжатия могут сильно побить обычные на своих задачах - в данном случае сжатия столбцов. в КХ тоже есть такие алгоритмы (delta и пр.), но они совсем простые
  • https://t.me/clickhouse_ru
    @den_crane #242570 01:13 PM, 05 Nov 2021
    кстати ZSTD шибко умный и умеет сам и delta и doubledelta, и похоже ZSTD(2) жмет лучше чем delta+LZ4
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242570 #242571 01:16 PM, 05 Nov 2021
    а почему ZSTD2 не выставили по умолчанию? Разве там настолько выше затраты на cpu?
  • https://t.me/clickhouse_ru
    Да, он медленнее раза в 2
  • https://t.me/clickhouse_ru
    возможно, это не мерял
  • https://t.me/clickhouse_ru
    даже если не учитывать компресиию, ZSTD медленее на декомпресии чем LZ4

    но я не могу это намерять на проде, в смысле нет разницы в перфомансе запросов, а CPU занят < 20% .
    Поэтому у меня ZSTD1 по дефолту на всех базах изначально. Видимо у меня ZSTD/LZ4 занимает очень маленький % от общего и все время выполнения уходит на диск+словари+join-ы
  • Amos Bird - kuaishou.com - Projections in ClickHouse - Percona Live 2021

    Projections are collections of table columns with different physical layout to speed up queries. They are the main constructs of Vertica. Comment 💬, Share 🔗, Like 👍, and Subscribe ✅ to our channel 📺, and turn on the 🔔 to be alerted to new videos about #OpenSource #Databases... and many other things! https://percona.tv/subscribe At kuaishou.com we have implemented PROJECTIONs support for ClickHouse. It boosts our OLAP analytic capabilities by an order of magnitude. This talk will highlight the design considerations, some implementation details, how it is integrated into #ClickHouse design. Examples and demo of the feature will be shown. You can find more information about #OpenSource #Databases and Percona Database Events in these links 👇👇👇 Watch Percona Live 2021 Talks ⏩ https://percona.tv/PerconaLive2021 Percona Services ⏩ https://per.co.na/Q8eykw Monitor your Database For Free ⏩ https://percona.tv/pmm-yt Kubernetes Operator for Databases ⏩https://per.co.na/kubernetes-operators Connect With us on our…

  • если точнее по нашим измерениям, медленнее на компрессии.
    на чтениях почти не было разницы вплоть до 22
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242568 #242577 01:42 PM, 05 Nov 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @yaski #242578 01:42 PM, 05 Nov 2021
    И ещё вопрос. Можно ли как-то из Select запроса узнать типы итоговых значений? Чтобы можно было достаточно просто новую таблицу сделать и туда INSERT потом
  • https://t.me/clickhouse_ru
    CREATE TABLE omg AS SELECT ...
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242579 #242580 01:46 PM, 05 Nov 2021
    🔥 работает!
  • https://t.me/clickhouse_ru
    мне кажется, что-то ты путаешь. zstd этого не умел и учитывая обратную совместимость, не должен был научиться. возможно в ch кодек переделан, учитывая его спецнужды
  • https://t.me/clickhouse_ru
    zstd = lz+huf, поэтому декомпрессия медленней. при сжатии поиск совпадений занимает (кроме самых быстрых режимов) больше времени чем huf
  • https://t.me/clickhouse_ru
    desc (select ....)
  • https://t.me/clickhouse_ru
    я не знаю точно про внутренности ZSTD, я просто много раз проверял на реальных данных.
  • @softbot_xxl #242585 02:23 PM, 05 Nov 2021
    На моих задачах (логирование json-ов + аналитика) zstd1 дал выигрыш в 45% по компрессии, за счет 11% падения в ingestion latency, по сравнению с lz4, поэтому он сейчас стоит по умолчанию.
  • https://t.me/clickhouse_ru
    JSON, у меня подозрение что ZSTD надо надо применять CODEC-м на все String колонки, не думая, будет ускорение и чтения и записи, потому что меньше I/O
  • https://t.me/clickhouse_ru
    @den_crane #242587 02:29 PM, 05 Nov 2021
    и я пробовал JSON-ы жать ZSTD2 вместо ZSTD1, не увидел разницы
  • если на специфичную колонку (toTypeName(columnname))
  • Я посмотрел результаты тестрования, zstd(10) дал выигрыш в 9% по компрессии по сравнению с zstd(1), за счет двухкратного увеличения латенси.
  • @softbot_xxl #242590 02:46 PM, 05 Nov 2021
    Т.е. смысла использовать высокие уровни мало, если надо сохранить скорость.
  • https://t.me/clickhouse_ru
    @cocainefornina #242591 02:49 PM, 05 Nov 2021
    Коллеги, какая команда в кликхаусе по типу having, where обладает условием (ХОТЯ БЫ одно (ANY) имеет [условие])?
  • https://t.me/clickhouse_ru
    OR ?

    where a = 5 or b = 6 or z = -1
  • https://t.me/clickhouse_ru
    Не совсем. Когда есть условие какое-то и мы хотим чтобы оно точно выполнилось, но необязательно у всех переменных. Хотя бы у одного
  • https://t.me/clickhouse_ru
    это arrayExists
  • https://t.me/clickhouse_ru
    @cocainefornina #242595 03:01 PM, 05 Nov 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    @121548504 #242596 03:35 PM, 05 Nov 2021
    Подскажите
  • https://t.me/clickhouse_ru
    @121548504 #242597 03:35 PM, 05 Nov 2021
    SOURCE(POSTGRESQL(
    port 5432
    host 'postgresql-hostname'
    user 'postgres_user'
    password 'postgres_password'
    db 'db_name'
    table 'table_name'
    replica(host 'example01-1' port 5432 priority 1)
    replica(host 'example01-2' port 5432 priority 2)
    where 'id=10'
    invalidate_query 'SQL_QUERY'
    ))
  • https://t.me/clickhouse_ru
    @121548504 #242598 03:35 PM, 05 Nov 2021
    как сюда SSLmode подставить?
  • а уже можно дропать данные парта не дропая projection? а то у нас пока отдельные таблицы, батчи, джобы... итд итп... ТТЛу доверия мало.
  • @1528585504 #242602 04:19 PM, 05 Nov 2021
    переменные поддерживаются в запросах?
  • @1528585504 #242603 04:20 PM, 05 Nov 2021
    типо @i := id
  • разве там такое планировалось? прожекшены хранятся внутри партов, нет парта - нет прожекшена
  • нет, только если with, with 1 as a select a
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242602 #242606 04:24 PM, 05 Nov 2021
    в tabix есть переменные
  • @1528585504 #242607 04:24 PM, 05 Nov 2021
    ну мне нужно в подзапрос переменную как-то вставить..
  • https://t.me/clickhouse_ru
    а в чём проблема
    WITH 'значение' as var ?
  • @1528585504 #242609 04:26 PM, 05 Nov 2021
    пробую
  • планировалось, как минимум со своими ТТЛъ
  • как то странно, данные в прожекшене в теории не должны отличаться от основной таблицы. Была штука TTL GROUP BY чтобы меньше данных хранилось со временем
  • Вам надо хранить. Месяц сырых данных и аггрегированные 5 лет. Вполне обычный кейс. Это вроде даже было у амоса на слайдах
  • ну так TTL GROUP BY как раз это делает
  • https://t.me/clickhouse_ru
    К сожалению он далек от production ready
  • это да, но задумка то что надо
  • /report
  • @heyroman #242621 05:26 PM, 05 Nov 2021
    @blinkovivan или кто тут админ
  • https://t.me/clickhouse_ru
    Приди порядок наведи
  • https://t.me/clickhouse_ru
    @StadnikD #242623 05:28 PM, 05 Nov 2021
    а в других мессенджерах тоже такая хрень? я просто другие не пользую
  • https://t.me/clickhouse_ru
    в других еще хуже
  • https://t.me/clickhouse_ru
    @den_crane #242627 05:32 PM, 05 Nov 2021
    я не понимаю почему вас так спам анноит. Ну спам, и что, ну реклама тоже кругом, и что.
  • https://t.me/clickhouse_ru
    да просто реклама наркоты сразу тригерит
  • https://t.me/clickhouse_ru
    @StadnikD #242629 05:32 PM, 05 Nov 2021
    на весь экран
  • https://t.me/clickhouse_ru
    @den_crane #242630 05:34 PM, 05 Nov 2021
    тяжело вам, у нас легализована, всем пофиг
  • https://t.me/clickhouse_ru
    ну у вас то не все легализовано, а только трава вроде
  • где-то недавно читал что у ZSTD после T64 лучше результаты
  • @1002712185 #242637 06:40 PM, 05 Nov 2021
    там в коде асинч есть стракт - и он в процессе участвует на котором все зависает
  • @1002712185 #242638 06:40 PM, 05 Nov 2021
    но в чем проблема я так и не пойму. написана программа с примером вставки после которой ничего больше не работает
  • @1002712185 #242639 06:45 PM, 05 Nov 2021
    точнее похоже висит и ждем тайм аут
    и после тайм аута ошибки с пингом сыпятся

    Exception: Code: 102. Unexpected packet from server 127.0.0.1:9000 (expected Pong, got Unknown packet). Traceback (most recent call last):

    Exception: Code: 102. Unexpected packet from server 127.0.0.1:9000 (expected Pong, got Hello). Traceback (most recent call last):
  • https://t.me/clickhouse_ru
    Что-то не вычитывается из сокета или пишется лишнее, похоже, и всё взаимодействие клиента и сервера рушится
  • https://t.me/clickhouse_ru
    @yaski #242641 07:08 PM, 05 Nov 2021
    Как-то можно в кликхаус делать сравнение строчек между собой? Либо для каждой строки получить массив N предыдущих значений столбца.
  • https://t.me/clickhouse_ru
    Через оконные функции
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242642 #242643 07:13 PM, 05 Nov 2021
    я почему-то думал что они ещё не доступны
  • https://t.me/clickhouse_ru
    Смотря какая версия у вас в КХ, но вроде они в новых релизах даже не экспериментальные уже
  • https://t.me/clickhouse_ru
    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
    @yaski ↶ Reply to #242645 #242646 07:16 PM, 05 Nov 2021
    спасибо как раз эту статью смотрю и версия кликхауса у меня выше чем в статье
  • https://t.me/clickhouse_ru
    Window Functions | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @yaski #242648 11:47 PM, 05 Nov 2021
    есть функция neighbor которая возвращает соседнюю строку
  • 06 November 2021 (83 messages)
  • https://t.me/clickhouse_ru
    у нее просто есть ограничения, и непредсказуемый результат
  • https://t.me/clickhouse_ru
    @den_crane #242650 12:14 AM, 06 Nov 2021
    create table A (A Int64) engine=MergeTree order by A;
    insert into A values (1); 
    insert into A values (1000); 
    insert into A values (1002);

    select A, neighbor(A,-1) from (select A from A order by A) ;
    ┌─A─┬─neighbor(A, -1)─┐
    │ 1 │ 0 │
    └───┴─────────────────┘
    ┌────A─┬─neighbor(A, -1)─┐
    │ 1000 │ 0 │
    └──────┴─────────────────┘
    ┌────A─┬─neighbor(A, -1)─┐
    │ 1002 │ 0 │
    └──────┴─────────────────┘
  • https://t.me/clickhouse_ru
    @yaski #242651 12:21 AM, 06 Nov 2021
    странно конечно
    это изза того что на диске каждая запись как отдельный файл до мерджа?
  • https://t.me/clickhouse_ru
    и да и нет. Тут да блоки по одной строке, потому что инсерты так были, но блоки формируются исходя из кучи параметров, например макс. размер блока, или например после агрегации могут блоки и по 3 строки получится, и т.д.
  • https://t.me/clickhouse_ru
    @yaski #242653 12:24 AM, 06 Nov 2021
    понял спасибо
    с оконными функциями такой проблемы не будет?
  • https://t.me/clickhouse_ru
    не будет, ваша задача я думаю решается легко на массивах. Просто толком неясно что надо
  • https://t.me/clickhouse_ru
    @yaski #242655 12:25 AM, 06 Nov 2021
    у меня задача будет посчитать movingAverage и другие подобные функции на графике
  • https://t.me/clickhouse_ru
    @yaski #242656 12:26 AM, 06 Nov 2021
    как минимум нужна разница значения строки с предыдущей
  • https://t.me/clickhouse_ru
    @den_crane #242657 12:30 AM, 06 Nov 2021
    movingAverage считается либо через WF, либо через groupArrayMovingAvg
  • https://t.me/clickhouse_ru
    @yaski #242661 01:24 AM, 06 Nov 2021
    спасибо
  • https://t.me/clickhouse_ru
    Дык в аниме тянки лучше и бесплатно. Нафиг не нужно. Оставь себе
  • https://t.me/clickhouse_ru
    Дык в аниме тянки лучше и бесплатно. Нафиг не нужно. Оставь себе
  • https://t.me/clickhouse_ru
    @RemiZOffAlex #242669 01:41 AM, 06 Nov 2021
    Было бы на что смотреть
  • https://t.me/clickhouse_ru
    @RemiZOffAlex #242670 01:41 AM, 06 Nov 2021
    Чего там не видели?
  • https://t.me/clickhouse_ru
    @Hardstep83 #242681 10:32 AM, 06 Nov 2021
    https://gist.github.com/hardstep33/d36c24277846b36a57ea3b65696a073f
    Может не все знают, и кому-то будет интересно. dateDiff работает не так как ожидалось. Второй пример работает точнее (при желании можно сделать функцию)

    select dateDiff('year',CAST('1983-02-02' as DateTime64),CAST('2021-02-01' as DateTime64))
    -- 38
    ;
    select (toYYYYMMDDhhmmss(CAST('2021-02-01' as DateTime64)) - toYYYYMMDDhhmmss(CAST('1983-02-02' as DateTime64)))
    / toUInt64('1' || replaceRegexpAll('MMDDhhmmss','.','0'))
    --37.9999
    CH_date_diff_correct

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

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242681 #242682 10:59 AM, 06 Nov 2021
    хм. если вам нужна точность - спросите в днях
    select dateDiff('day',CAST('1983-02-02' as DateTime64), CAST('2021-02-01' as DateTime64))/365.25;
  • https://t.me/clickhouse_ru
    А потом делить на 365 или 366 в зависимости от года?)
  • https://t.me/clickhouse_ru
    @bvt123 #242684 11:00 AM, 06 Nov 2021
    я поделил на 365.25 - чтобы получить результат сравнимый с вашим. я же не знаю в чем задача
  • https://t.me/clickhouse_ru
    Задача посчитать полных лет человеку сколько
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242686 11:03 AM, 06 Nov 2021
    37.9999 не выглядит корректным приближением для 37+364/365
  • https://t.me/clickhouse_ru
    @Hardstep83 #242687 11:03 AM, 06 Nov 2021
    Человеку еще не стукнуло 38, а показывает что 38
    select dateDiff('day',CAST('1983-02-01 23:59:59' as DateTime64), CAST('2021-02-01 20:58:59' as DateTime64))/365.25
    -- 38.001368925393564
  • https://t.me/clickhouse_ru
    @Hardstep83 #242688 11:05 AM, 06 Nov 2021
    А тут все норм:
    select (toYYYYMMDDhhmmss(CAST('2021-02-01 20:58:59' as DateTime64)) - toYYYYMMDDhhmmss(CAST('1983-02-01 23:59:59' as DateTime64)))
    / toUInt64('1' || replaceRegexpAll('MMDDhhmmss','.','0'))
    --37.99999699
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242689 11:06 AM, 06 Nov 2021
    наверно корректней сравнить год и откорректировать его на 1 сравнив месяц и день
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242690 11:07 AM, 06 Nov 2021
    но да, ch для таких задач полезно иметь функцию возвращающую сколько прошло ПОЛНЫХ лет, месяцев и дней
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242691 11:08 AM, 06 Nov 2021
    как и функцию, добавляющую к дате оные
  • https://t.me/clickhouse_ru
    @bvt123 #242692 11:09 AM, 06 Nov 2021
    select round(dateDiff('day',CAST('1983-02-01 23:59:59' as DateTime64), CAST('2021-02-02 00:00:00' as DateTime64) - interval 184 day)/365.25);
    :)
  • https://t.me/clickhouse_ru
    @Hardstep83 #242693 11:09 AM, 06 Nov 2021
    По моему очевидно что если результат точнее а скорость вычислений соразмерима (проверил clickhouse-benchmark), то лучше выбрать более точный вариант? Зачем спорите?
  • https://t.me/clickhouse_ru
    SELECT (toYYYYMMDDhhmmss(CAST('2021-01-01 20:58:59', 'DateTime64')) - toYYYYMMDDhhmmss(CAST('2020-12-31 23:59:59', 'DateTime64'))) / toUInt64(concat('1', replaceRegexpAll('MMDDhhmmss', '.', '0'))) AS z

    Query id: d590aba6-53cf-455d-957e-7769e8eea851

    ┌──────────z─┐
    │ 0.88699699 │
    └────────────┘
  • https://t.me/clickhouse_ru
    @unamedrus #242697 11:31 AM, 06 Nov 2021
    Так нельзя считать
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242698 11:32 AM, 06 Nov 2021
    если интересуют только полные года, то как раз так и надо
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #242699 11:35 AM, 06 Nov 2021
    можно просто разницу в годах + разницу в месяцах / 100 + разницу в днях / 10000
  • @uhaahahah #242700 12:52 PM, 06 Nov 2021
    Здравствуйте. А кто-нибудь знает, через какое время может появиться 21.10 stable?
  • https://t.me/clickhouse_ru
    Уже вроде давно. Скоро уже 21.11 будет :)
  • https://t.me/clickhouse_ru
    @konnectrl #242702 03:10 PM, 06 Nov 2021
    Приветствую, как можно произвести адекватное сравнения таблиц с одинаковыми столбцами, но с разной схемой хранения и архивации данных. Просто данные в кэш попадают и всё на этом. Разнице просто нету
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242702 #242703 03:17 PM, 06 Nov 2021
    вы хотели сказать сравнение производительности? Создайте миллиард строк. Скорее всего увидите разницу. На десятках миллионов - наверное нет.
  • https://t.me/clickhouse_ru
    @konnectrl #242704 03:18 PM, 06 Nov 2021
    ну я решил на 500 млн смотреть разницу, у меня 10 млрд таблица основная
  • https://t.me/clickhouse_ru
    set min_bytes_to_use_direct_io=1
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242704 #242706 03:20 PM, 06 Nov 2021
    запрос на котором тестируете случайно не целиком вычитывает данные?
  • https://t.me/clickhouse_ru
    целиком
  • https://t.me/clickhouse_ru
    @bvt123 #242708 03:21 PM, 06 Nov 2021
    ну вот. а что вы тогда хотели? Вся оптимизация тут про "меньше читать"
  • https://t.me/clickhouse_ru
    @bvt123 #242710 03:23 PM, 06 Nov 2021
    вам надо считать с диска (и распаковать) сколько то данных. Это занимает основное время. Оптимизация по партициям, по скип индексам (прежде всего первичному), по столбцам позволяет считать не все данные. Отсюда и ускорение.
  • https://t.me/clickhouse_ru
    @yaski #242711 03:55 PM, 06 Nov 2021
    Есть array я хочу его отфильтровать и при этом в итоговый array сохранить индексы элементов которые остались. Как это можно сделать?
    Либо второй вариант - отфильтровать nested array по одному из полей. Какой-то из этих вариантов можно как-то реализовать?
  • https://t.me/clickhouse_ru
    Пока я тестирую именно сжатие данных
  • https://t.me/clickhouse_ru
    Индексы до фильрации ?
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242713 #242714 03:56 PM, 06 Nov 2021
    да
  • https://t.me/clickhouse_ru
    ниче не понять, пример нужен
    сохранить сами индексы или сохранить элементы на старых позициях?
  • https://t.me/clickhouse_ru
    @yaski #242716 03:58 PM, 06 Nov 2021
    индексы получить элементов которые остались после фильтрации
  • https://t.me/clickhouse_ru
    все Array функции accept множество массивов, пример давайте
  • https://t.me/clickhouse_ru
    пример нужен
  • https://t.me/clickhouse_ru
    Как я понял
    arrayZip(ar,arrayEnumerate(ar)) as ar_zip,
    arrayMap(x->x.1 !=0,ar_zip)
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242717 #242720 03:59 PM, 06 Nov 2021
    при этом по ним итерируется одновременно?
  • https://t.me/clickhouse_ru
    ваша телепатия круче моей
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    короче, скорее всего вы пытаетесь изобрести велосипед с кубическими колесами, пример дайте что на входе что на выходе
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @yaski #242725 04:00 PM, 06 Nov 2021
    На входе это
  • https://t.me/clickhouse_ru
    @den_crane #242726 04:01 PM, 06 Nov 2021
    >arrayZip(ar,arrayEnumerate(ar)) as ar_zip,
    arrayZip конечно не нужен
  • https://t.me/clickhouse_ru
    @yaski #242727 04:01 PM, 06 Nov 2021
    на выходе я хочу получить в abonements.active только те элементы которые содержат 1
  • https://t.me/clickhouse_ru
    @yaski #242728 04:01 PM, 06 Nov 2021
    либо сдублировать весь nested array и получить элементы которые active
  • https://t.me/clickhouse_ru
    @konnectrl #242729 04:02 PM, 06 Nov 2021
    Пример на реальных данных на вход и что хотите получить
  • https://t.me/clickhouse_ru
    @konnectrl #242730 04:02 PM, 06 Nov 2021
    Например на вход [1,2,3] на выходе [3,2,1]
  • https://t.me/clickhouse_ru
    я понял, вы суперленивый

    филтруем элементы которые не делятся на 3

    select arrayFilter(i,j -> j % 3, b, a) from (select [1,6,8,10] a, ['a','b','c','d'] b) ;
    ┌─arrayFilter(lambda(tuple(i, j), modulo(j, 3)), b, a)─┐
    │ ['a','c','d'] │
    └──────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @yaski #242732 04:04 PM, 06 Nov 2021
    на вход
    array.balance = [1,2,4,5]
    array.active = [0,0,1,0]
    на выходе первый вариант:
    array.balance = [4]
    array.active = [1]
    либо второй вариант выхода
    array.balance = [1,2,4,5]
    array.active = [3] — индекс элемента
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242712 #242733 04:04 PM, 06 Nov 2021
    https://clickhouse.com/docs/ru/operations/utilities/clickhouse-compressor/#clickhouse-compressor - не хотите потренироваться на кошечках?
    ClickHouse compressor | Документация ClickHouse

    ClickHouse compressor Simple program for data compression and decompression in ClickHouse way. Examples Compress data wi

  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242731 #242734 04:06 PM, 06 Nov 2021
    А arrayFilter на вход можно передать больше чем два массива?
  • https://t.me/clickhouse_ru
    select arrayFilter(i, j -> j, array.balance, array.active) from (select [1,2,4,5] array.balance, [0,0,1,0] array.active )
    ┌─arrayFilter(lambda(tuple(i, j), j), array.balance, array.active)─┐
    │ [4] │
    └──────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    Ну для меня это открытие, ну получается что да можно
  • https://t.me/clickhouse_ru
    Спасибо, попробую
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #242731 #242739 04:23 PM, 06 Nov 2021
    спасибо
    сделал похожим образом

    arrayFilter(i, j -> j, arrayEnumerate(abonements_active), abonements_active) as abonements_active
  • https://t.me/clickhouse_ru
    походу документацию нужно в закреп добавить, каждый день открытия уже открытого :)
    https://clickhouse.com/docs/ru/sql-reference/functions/array-functions/#array-filter
    Массивы | Документация ClickHouse

    Массивы empty Проверяет, является ли входной массив пустым. Синтаксис empty([x]) Массив считается пустым, если он не сод

  • https://t.me/clickhouse_ru
    Я и так каждый день её октрываю, просто даже не мог подумать, что можно сразу несколько массивов передавать
  • https://t.me/clickhouse_ru
    @den_crane #242743 04:49 PM, 06 Nov 2021
    SELECT arrayMap((i, j) -> (i + j), array.balance, array.active)
    FROM
    (
    SELECT
    [1, 2, 4, 5] AS `array.balance`,
    [2, 0, 1, 0] AS `array.active`
    )

    Query id: 13029896-ba40-47a9-8d0d-3e9b60d7fd8b

    ┌─arrayMap(lambda(tuple(i, j), plus(i, j)), array.balance, array.active)─┐
    │ [3,2,5,5] │
    └────────────────────────────────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    Drop table на проде?)
  • https://t.me/clickhouse_ru
    Голый порт без фаерволла в инет
  • https://t.me/clickhouse_ru
    В ClickHouse это не так легко — удалить таблицу, если там уже есть много данных :)
  • https://t.me/clickhouse_ru
    Ну ладно, партиции почистить ещё)
    Но мы же шалим)
  • https://t.me/clickhouse_ru
    Кстати раньше можно было через ALTER DELETE достаточно данных удалить сначала, а потом уже дропнуть. Не знаю, поправили или нет (и если поправили, то интересно, каким образом)
  • https://t.me/clickhouse_ru
    Ну что Вы начинаете, вот я недавно видел шедевр-скрипт который снёс дБ из-за недостатка валидации передаваемого в rm -rf path/$variable, точнее туда просто ничего не передали
  • https://t.me/clickhouse_ru
    Кто видел Bumblebee, в цирке не смеется (скрипт удаления дров nvidia по ошибке сносил весь /usr из-за лишнего пробела)
  • @Irina_kharchenko1 #242755 09:45 PM, 06 Nov 2021
    Всем привет! Вдруг кто-то сталкивался с такой проблемой, когда при импорте csv файла в базу импортируются не все строки. У меня есть сырые логи rest api (скачиваю их в csv формате), при импорте в базу иногда переливаются все строки, а иногда только часть. Думала, дело в кодировке, но я пробовала utf-8, ISO-8859-1, не помогло. Помогите, плиз, идеями, с чем это может быть связано.
  • @1717110891 #242757 10:52 PM, 06 Nov 2021
    добрый вечер, не подскажите может кто сталкивался с таким, после того как закончилась память на сервере кликхауса, после добавления памяти и перезапуска clickhouse выдает такое:
    <Error> reports.`.table`: Part /var/lib/clickhouse/data/db/table/20210401_20210425_882973_1797724_3190 is broken. Looking for parts to replace it.
    <Error> reports.`.table`: Detaching broken part /var/lib/clickhouse/data/db/table/20210401_20210425_882973_1797724_3190 because it covers less than 2 parts. You need to resolve this manually
  • https://t.me/clickhouse_ru
    Смотрите ошибки в логах кликхауса.
  • https://t.me/clickhouse_ru
    Поищите эту ошибку по чату. Там рекомендовали использовать спец команду для фикса данных.
  • 07 November 2021 (51 messages)
  • @2059055979 #242760 04:20 AM, 07 Nov 2021
    𝐈𝐭'𝐬 𝐧𝐨𝐭 𝐰𝐡𝐞𝐭𝐡𝐞𝐫 𝐲𝐨𝐮'𝐫𝐞 𝐫𝐢𝐠𝐡𝐭 𝐨𝐫 𝐰𝐫𝐨𝐧𝐠 𝐭𝐡𝐚𝐭'𝐬 𝐢𝐦𝐩𝐨𝐫𝐭𝐚𝐧𝐭, 𝐛𝐮𝐭 𝐡𝐨𝐰 𝐦𝐮𝐜𝐡 𝐦𝐨𝐧𝐞𝐲 𝐲𝐨𝐮 𝐦𝐚𝐤𝐞 𝐰𝐡𝐞𝐧 𝐲𝐨𝐮'𝐫𝐞 𝐫𝐢𝐠𝐡𝐭 𝐚𝐧𝐝 𝐡𝐨𝐰 𝐦𝐮𝐜𝐡 𝐲𝐨𝐮 𝐥𝐨𝐬𝐞 𝐰𝐡𝐞𝐧 𝐲𝐨𝐮'𝐫𝐞 𝐰𝐫𝐨𝐧𝐠.𝐓𝐨𝐨 𝐦𝐚𝐧𝐲 𝐢𝐧𝐯𝐞𝐬𝐭𝐨𝐫𝐬 𝐛𝐞𝐜𝐨𝐦𝐞 𝐨𝐛𝐬𝐞𝐬𝐬𝐞𝐝 𝐰𝐢𝐭𝐡 𝐛𝐞𝐢𝐧𝐠 𝐫𝐢𝐠𝐡𝐭, 𝐞𝐯𝐞𝐧 𝐰𝐡𝐞𝐧 𝐭𝐡𝐞 𝐠𝐚𝐢𝐧𝐬 𝐚𝐫𝐞 𝐬𝐦𝐚𝐥𝐥. 𝐖𝐢𝐧𝐧𝐢𝐧𝐠 𝐛𝐢𝐠 𝐚𝐧𝐝 𝐜𝐮𝐭𝐭𝐢𝐧𝐠 𝐲𝐨𝐮𝐫 𝐥𝐨𝐬𝐬𝐞𝐬 𝐰𝐡𝐞𝐧 𝐲𝐨𝐮'𝐫𝐞 𝐰𝐫𝐨𝐧𝐠 𝐚𝐫𝐞 𝐦𝐨𝐫𝐞 𝐢𝐦𝐩𝐨𝐫𝐭𝐚𝐧𝐭 𝐭𝐡𝐚𝐧 𝐛𝐞𝐢𝐧𝐠 𝐫𝐢𝐠𝐡𝐭.𝐈𝐧𝐯𝐞𝐬𝐭 with @Johnson_Robbison 💯 𝐢𝐬 𝐭𝐡𝐞 𝐛𝐞𝐬𝐭 𝐚𝐧𝐝 𝐬𝐞𝐜𝐮𝐫𝐞𝐝 𝐩𝐥𝐚𝐭𝐟𝐨𝐫𝐦 𝐜𝐨𝐦𝐩𝐚𝐧𝐲 𝐜𝐥𝐢𝐜𝐤 𝐨𝐧 𝐭𝐡𝐞 𝐥𝐢𝐧𝐤 𝐛𝐞𝐥𝐨𝐰 𝐚𝐧𝐝 𝐬𝐭𝐚𝐫𝐭 𝐞𝐚𝐫𝐧𝐢𝐧𝐠 👇👇👇👇👇
    https://t.me/joinchat/PFl26iGdxVU4M2M0
    https://t.me/joinchat/PFl26iGdxVU4M2M0
  • https://t.me/clickhouse_ru
    @solod89 #242762 09:34 AM, 07 Nov 2021
    Всем привет!
    Столкнулся с такой проблемой:
    Используется Clickhouse 20.9.2.20 в docker-контейнере, коннектится к postgres по odbc.
    При использовании контейнера Clickhouse версии 21 и выше подключиться к postgres невозможно с такими же настройками.

    odbcinst.ini:
    [PostgreSQL ANSI]
    Description=PostgreSQL ODBC driver (ANSI version)
    Driver=psqlodbca.so
    Setup=libodbcpsqlS.so
    Debug=0
    CommLog=1
    UsageCount=1

    [PostgreSQL Unicode]
    Description=PostgreSQL ODBC driver (Unicode version)
    Driver=psqlodbcw.so
    Setup=libodbcpsqlS.so
    Debug=0
    CommLog=1
    UsageCount=1

    odbc.ini
    [DEFAULT]
    Driver = psql

    [psql]
    Description = PostgreSQL connection to db
    Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
    Database = db_local
    Servername = postgres
    UserName = admin
    Password = password
    Port = 5432
    Protocol = 9.3
    ReadOnly = Yes
    RowVersioning = No
    ShowSystemTables = No

    Сталкивался кто-нибудь с подобным?
    Где-то можно почитать, что изменилось касательно odbc в 21 версии?
  • @pavel_maksimow #242763 09:38 AM, 07 Nov 2021
    Добрый день.
    Подскажите, что за процесс идет под именем. Таких логов прилично выводятся.
    2021.11.07 12:34:44.454183 [ 3701 ] {} <Trace> db.table (dataProcessingTask): Execution took 313 ms.
    Проблема в том, что КХ выедает прилично ресурсов. Ищу причину.
  • https://t.me/clickhouse_ru
    кажется что нынче ODBC не нужен для походов из CH в PG
    https://clickhouse.com/docs/en/engines/database-engines/postgresql/
    https://clickhouse.com/docs/en/engines/table-engines/integrations/postgresql/
    https://clickhouse.com/docs/en/sql-reference/table-functions/postgresql/
    PostgreSQL | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    Спасибо большое! Попробую!
  • https://t.me/clickhouse_ru
    @ivan_blohin #242766 11:16 AM, 07 Nov 2021
    Коллеги, для разработки и на стейдже используем КХ в докере.
    Переодически случается так, что при кривой остановке контейнера и последующем запуске КХ выдает:

    ClickHouse init process failed

    Иногда помогало удаления файла status из директории с данными, но конретно сейчас не помогает.

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

    Сталкивался кто-то с подобное проблемой? На проде, слава богу, кх в облаке яндекса и таких проблем (тьфу-тьфу) нет.
  • https://t.me/clickhouse_ru
    Вы пользуетесь init sh?
  • https://t.me/clickhouse_ru
    нет, просто запускаю контейнер со всеми настройками по дефолту и пробрасываю директорию на хост
    а надо?
  • https://t.me/clickhouse_ru
    Такая ошибка должна возникать если вы пользуетесь initdb

    https://github.com/ClickHouse/ClickHouse/blob/15b9d65221c4e9f632a19aa5d74d19146fa72091/docker/server/entrypoint.sh#L121
    ClickHouse/entrypoint.sh at 15b9d65221c4e9f632a19aa5d74d19146fa72091 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    сами мы ничего не используем, полагаемся полностью на ентрипоинт команду
  • https://t.me/clickhouse_ru
    ls /docker-entrypoint-initdb.d/​

    Что в этой папке тогда есть?
  • https://t.me/clickhouse_ru
    @unamedrus #242772 11:28 AM, 07 Nov 2021
    ​CLICKHOUSE_DB=​"​${CLICKHOUSE_DB​:-​}​"

    Пользуетесь ли?
  • https://t.me/clickhouse_ru
    Увеличил CLICKHOUSE_INIT_TIMEOUT - взлетело
  • https://t.me/clickhouse_ru
    @ivan_blohin #242774 11:29 AM, 07 Nov 2021
    Спасибо за ссылку на
    https://github.com/ClickHouse/ClickHouse/blob/15b9d65221c4e9f632a19aa5d74d19146fa72091/docker/server/entrypoint.sh#L121
    ClickHouse/entrypoint.sh at 15b9d65221c4e9f632a19aa5d74d19146fa72091 · 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
    а что значит невозможно? Ошибка какая?
    и драйвера от odbc и pg есть в контенере? usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so ?
  • https://t.me/clickhouse_ru
    @solod89 #242777 02:36 PM, 07 Nov 2021
    Драйвер есть.
    isql выдаёт ошибку:
    [08001][unixODBC]could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
  • https://t.me/clickhouse_ru
    @solod89 #242778 02:41 PM, 07 Nov 2021
    Причём на любой версии 21.х.х...
    На 20.x.x всё ок.
    Посгрес пингуется, телнетом можно подключиться - с ним явно нет проблем.
  • https://t.me/clickhouse_ru
    Пытается подключиться через Unix socket, если нужен tcp, то используйте 127.0.0.1 в качестве хоста (помним про контейнер и/или проверяем, что все проброшено)
  • https://t.me/clickhouse_ru
    @solod89 #242780 02:49 PM, 07 Nov 2021
    т.е. мне нужно переправлять запросы на локалхост на целевой контейнер?
  • https://t.me/clickhouse_ru
    Нужно понять каким образом доступен pg из контейнера с ch

    И да, странно, почему сервер localhost а не postgres как в конфиге
  • https://t.me/clickhouse_ru
    @solod89 #242782 02:57 PM, 07 Nov 2021
    Из контейнера ch: телнет на порт подключается, сам контейнер пингуется, psql подключается без проблем:

    root@cc941d9d3aff:/# psql -h postgres -U postgres
    Password for user postgres:
    psql (12.8 (Ubuntu 12.8-0ubuntu0.20.04.1), server 10.14 (Debian 10.14-1.pgdg90+1))
    Type "help" for help.
    postgres=#
  • https://t.me/clickhouse_ru
    Я третий день понять не могу, почему odbc упорно идёт на локалхост)
  • https://t.me/clickhouse_ru
    @solod89 #242784 02:58 PM, 07 Nov 2021
    На поломку odbc.ini isql реагирует как положено.
  • https://t.me/clickhouse_ru
    1. в clickhouse используется dsn=psql ?

    2. а права на файл какие у /etc/odbc.ini ?

    3. isql psql из контейнера работает?

    4. что будет если вместо /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so сделать /usr/lib/x86_64-linux-gnu/odbc/psqlodbca.so

    5. что если вместо имени в Servername написать IP адрес?

    ну и нет смысла использовать odbc, встроенный в КХ postrgesql намного быстрее, и не надо париться с установкой дров pg и odbc
  • https://t.me/clickhouse_ru
    @solod89 #242788 05:38 PM, 07 Nov 2021
    1) да
    2) 644 (-rw-r--r-- 1 root root)
    3) isql - нет, psql - да
    4) Без изменений
    5) IP - адрес также не работает, более того, обратил внимание, что если в odbc.ini изменить servername на заведомо несуществующий, то ничего не изменится.

    Такое поведение воспроизводится на любой 21.х.х версии.
  • https://t.me/clickhouse_ru
    удалите odbcinst.ini

    >3) isql - нет, psql - да
    isql psql -- это одна команда 🙂 .
  • https://t.me/clickhouse_ru
    @den_crane #242790 05:40 PM, 07 Nov 2021
    isql это программа для ODBC
  • https://t.me/clickhouse_ru
    @den_crane #242791 05:40 PM, 07 Nov 2021
    psql это ее аргумент, вы так dsn назвали
  • https://t.me/clickhouse_ru
    и конечно ODBC + PG + 21 работает. Я 2 недели назад проверял (https://github.com/ClickHouse/ClickHouse/issues/30413#issuecomment-952181892)
  • https://t.me/clickhouse_ru
    @solod89 #242793 05:43 PM, 07 Nov 2021
    Прошу прощения, я подумал, что имеется в виду postgres-client)

    root@73eb4cb5bab6:/# isql -v psql
    [08001][unixODBC]could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

    [ISQL]ERROR: Could not SQLConnect
  • https://t.me/clickhouse_ru
    вот это и надо чинить и всегда проверять, до того как начали мучать КХ.

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

    Servername = postgres
    Servername = postgres
  • https://t.me/clickhouse_ru
    @den_crane #242795 05:45 PM, 07 Nov 2021
    Т.е. КХ 21 тут вообще ни при чем если даже isql -v psql не робит.
  • https://t.me/clickhouse_ru
    @solod89 #242796 05:46 PM, 07 Nov 2021
    Но если я заменю имейдж на версию 20, то всё великолепно работает.
  • https://t.me/clickhouse_ru
    @solod89 #242797 05:46 PM, 07 Nov 2021
    odbc.ini пробрасывается в контейнер
  • https://t.me/clickhouse_ru
    ну а драйвера в контейнере как появляются?
  • https://t.me/clickhouse_ru
    @solod89 #242799 05:48 PM, 07 Nov 2021
    При запуске выполняется скрипт:
    apt-get install -y unixodbc odbcinst odbc-postgresql
  • https://t.me/clickhouse_ru
    @den_crane #242800 05:49 PM, 07 Nov 2021
    я не спорю, ODBC работает совсем по другому в версии 21. Потому что там используется nanodobc либа, а не POCO.
    но тут не о чем разговаривать пока isql -v psql кидает ошибку.

    вы из контейнера точно видите что там odbc.ini есть и он читаемый?
  • https://t.me/clickhouse_ru
    @den_crane #242801 05:51 PM, 07 Nov 2021
    возможно в имеджах 20 и 21 разные линуксы и разные ODBC
  • https://t.me/clickhouse_ru
    @den_crane #242802 05:51 PM, 07 Nov 2021
    я бы начал с удаления пробелов и удаления odbcinst.ini
  • https://t.me/clickhouse_ru
    @solod89 #242803 05:54 PM, 07 Nov 2021
    odbc.ini читаемый, пробовал не пробрасывать его в контейнер, а настроить - результат аналогичный.
    Удалил odbcinst.ini - также результат аналогичный.
  • https://t.me/clickhouse_ru
    @solod89 #242804 05:55 PM, 07 Nov 2021
    В общем, любые манипуляции приводят к

    root@73eb4cb5bab6:/# isql -v psql
    [08001][unixODBC]could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
  • https://t.me/clickhouse_ru
    @solod89 #242805 05:57 PM, 07 Nov 2021
    Попробую поднять контейнер, ничего не запуская и не пробрасывая и настроить ручками.
  • https://t.me/clickhouse_ru
    а пробелы что?
  • https://t.me/clickhouse_ru
    @solod89 #242807 05:58 PM, 07 Nov 2021
    Аналогично
  • https://t.me/clickhouse_ru
    docker run -d --name odbc --ulimit nofile=262144:262144 yandex/clickhouse-server:21.9
    docker exec -it odbc /bin/bash

    apt-get update;apt-get install -y unixodbc odbcinst odbc-postgresql vim

    # cat /etc/odbc.ini
    [DEFAULT]
    Driver = psql

    [psql]
    Description = PostgreSQL connection to db
    Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
    Database= db_local
    Servername = postgres
    UserName= admin
    Password= password
    Port= 5432
    Protocol= 9.3
    ReadOnly= Yes
    RowVersioning = No
    ShowSystemTables= No

    # isql -v psql
    [08001][unixODBC]could not translate host name "postgres" to address: Name or service not known

    [ISQL]ERROR: Could not SQLConnect
  • @snoopyin #242809 06:30 PM, 07 Nov 2021
    Подскажите, а где в конфиге сервера прописать allow_experimental_projection_optimization=1 чтобы оно по дефолту для всех пользователей было true?
  • https://t.me/clickhouse_ru
    /etc/clickhouse-server/users.d/allow_projections.xml
    <yandex><profiles><default><allow_experimental_projection_optimization>1</allow_experimental_projection_optimization></default></profiles></yandex>
  • Спасибо!
  • https://t.me/clickhouse_ru
    Не надо так делать. Это ломает некоторые запросы. Сейчас 10 тестов в ci падает из за этого. Лучше включить только в конкретных запросах через settings в конце запроса
  • 😱
  • https://t.me/clickhouse_ru
    отключите трейс и таких логов будет выводиться меньше
  • 08 November 2021 (183 messages)
  • @2088641240 #242816 12:45 AM, 08 Nov 2021
    It's amazing trading with someone with excellent skills and knowledge about the market. I enjoyed full profits and easy withdrawals with no complains, and all I do is just invest $800 and received $8000 within 48hours and watch my money grow inevitably with Mr @kelvinsmith_fx_trader ... for more information contact him on the name below👇👇
    https://t.me/joinchat/qEQme6fpucA5Njk0
    https://t.me/joinchat/qEQme6fpucA5Njk0
    RE🅰L F🅾REX AND BIN🅰RY TR🅰DE™

    Incredible win rate, 3-5 accurate signals daily with adjoining funds. Make Money While You Sleep 😍 ✅ Secret Trading〽️Formula✔️ ✅ Account Management 💼🛃✔️ ✅ Get 1 to 3 BTC in 7days T.me/kelvinsmith_fx_trader

  • https://t.me/clickhouse_ru
    @it_haisenberg #242817 02:57 AM, 08 Nov 2021
    Не могу найти инфу чем грозит частый alter table update, кто-нибудь может поделиться?
    Нужно апдейтнуть довольно таки большое кол-во строк в кх за день (чтобы восстановить статистику скажем так).

    Я постарался минимизировать кол-во alter update запросов и тем не менее их получилось 4, но нужно выполнить единожды (а не на постоянной основе)
  • https://t.me/clickhouse_ru
    Разово нет никакой проблемы. Под контролем, когда вы вручную запускаете, проверяете что закончилось и реально проапдейтилось. Проблемы у тех кто пытается использовать мутации как часть бизнес логики запуская десятки тысяч мутаций подряд.
  • https://t.me/clickhouse_ru
    @it_haisenberg #242819 03:45 AM, 08 Nov 2021
    Спасибо ;)

    А есть какая-нибудь инфа/статья о том как это работает под капотом и влияет на фс или цпу утилизацию? Ну то бишь в целом где может вдруг выстрелить? Вдруг данных для апдейта очень много и сожрёт всю оперу и убьёт сервер и тд?
  • https://t.me/clickhouse_ru
    Да просто как обычный МЕРЖ читает все строки в колонке и пишет в новый файл в новом парте.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спс
  • https://t.me/clickhouse_ru
    @Caside #242823 04:45 AM, 08 Nov 2021
    Помогите пожалуйста с идеей реализации.

    Есть таблица с колонкой со строковыми значениями.
    Нужно получить все возможные комбинации этих значений.
    Например есть значения a, b, c

    Нужно получить таблицу с колонокй комбинаций:
    ''
    'a'
    'b'
    'c'
    'a', 'b'
    'a','c'
    и т.д., комбинации можно и в массиве хранить
  • https://t.me/clickhouse_ru
    порядок важен?
  • https://t.me/clickhouse_ru
    обычно просто join таблицу саму с собой без указания соединения должно дать декартово произведение. и делаете конкатенации строк
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #242824 #242826 05:14 AM, 08 Nov 2021
    кхм... важен в том смысле, что комбинация a, b должна быть в единственном виде. b, a уже не должно быть
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242826 #242828 05:31 AM, 08 Nov 2021
    where a > b
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #242828 #242829 05:40 AM, 08 Nov 2021
    и да, нужны вообще все комбинации, именно как число сочетаний.
    И a, b, c, d ....
    И пропуски любых других строк
  • https://t.me/clickhouse_ru
    декартово произведение попробуйте
  • @beebeeep #242832 08:16 AM, 08 Nov 2021
    всем привет
    у меня с утречка взорвался зк (пока не очень понял что триггернуло - то ли объем инсертов скаканул и уложил зк, то ли зк икнул и ретраи инсертов все разнесли, но наверное не суть), и теперь кх начал жаловаться в логах на

    Code: 235, e.displayText() = DB::Exception: Part cd344a9912588f9f53a1df27f6e7b72e_29931_29931_0 (state Committed) already exists.

    Парты все разные, упоминаются в логе только один раз.
    Вижу что похожая ошибка тут упоминалась в https://github.com/ClickHouse/ClickHouse/issues/20964 но чет там особо не пришли к решению
    Собственно, хотелось бы понять, что это, свидетельствует ли это о какой-то реальной проблеме, могли ли потеряться какие-то данные и надо ли что-то делать с этим?

    Версия 20.12.4 revision 54442.
  • https://t.me/clickhouse_ru
    @pic_Nick77 #242833 09:36 AM, 08 Nov 2021
    Здравствуйте. Я правильно понимаю, что для иерархических внешних словарей можно использовать только числовой ключ? Есть ли планы по использованию строк в качестве ключа?
  • https://t.me/clickhouse_ru
    @mag_o_med #242834 09:40 AM, 08 Nov 2021
    Всем привет!
    нашел ошибку в кликхаусе
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242829 #242835 09:43 AM, 08 Nov 2021
    задача попахивает рекурсивностью, но рекурсии в КХ нет. Поэтому разворачиваем рекурсию в циклы, а циклы у нас в виде window functions.
    with data as ( select arrayJoin(['A','B','C','D']) as col),
    data1 as (select c1, lagInFrame(c1) over (order by c1) as c2
    from (select groupArray(col) over (order by col) as c1 from data))
    select distinct arrayFilter(x->not has(B.c2,x),A.c1) as X
    from data1 A cross join data1 B
    where length(X) >0
    order by X
  • не уверен что это ошибка
  • @simpl1g #242837 09:43 AM, 08 Nov 2021
    надо делать select cast('0.018', 'Decimal64(8)')
  • https://t.me/clickhouse_ru
    SELECT
    toDecimal64(0.018, 8),
    CAST(0.018, 'Decimal64(8)')
    ┌─toDecimal64(0.018, 8)─┬─CAST(0.018, 'Decimal64(8)')─┐
    │ 0.01799999 │ 0.01799999 │
    └───────────────────────┴───────────────────┘
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242838 #242840 09:56 AM, 08 Nov 2021
    0.018 - константа типа float. с ними бывают указанного рода проблемы, которые никого не волнуют, потому что тут все "бухгалтеры", для которых нужен decimal. как вам справедливо указано '0.018' - это константа типа строка, и с ней проблем нет.
  • https://t.me/clickhouse_ru
    @bvt123 #242841 10:00 AM, 08 Nov 2021
    в новых КХ можно как в PG:
    select 0.018::Decimal64(8) +1 ;

    SELECT CAST('0.018', 'Decimal64(8)') + 1
    ┌─plus(CAST('0.018', 'Decimal64(8)'), 1)─┐
    │ 1.018 │
  • https://t.me/clickhouse_ru
    @ufaweb #242843 10:26 AM, 08 Nov 2021
    из-за чего кликхаус может начать создавать очень много нод в /log в зукипере?

    SELECT
    name,
    numChildren
    FROM system.zookeeper
    WHERE path = '/clickhouse/tables/01/db_name.table_name'

    ┌─name───────────────────────┬─numChildren─┐
    │ alter_partition_version │ 0 │
    │ metadata │ 0 │
    │ temp │ 1 │
    │ log │ 615627 │
    │ leader_election │ 2 │
    │ columns │ 0 │
    │ blocks │ 403 │
    │ nonincrement_block_numbers │ 0 │
    │ replicas │ 2 │
    │ quorum │ 3 │
    │ pinned_part_uuids │ 0 │
    │ block_numbers │ 410 │
    │ mutations │ 4 │
    │ part_moves_shard │ 0 │
    └────────────────────────────┴─────────────┘
  • @865226418 #242844 10:26 AM, 08 Nov 2021
    Вопрос из зала - открывать баг репорт в случае такого сценария?
  • @865226418 #242845 10:27 AM, 08 Nov 2021
    CREATE TABLE main (x String) ENGINE = Memory

    insert into main (x) VALUES ('test string 01')

    select * from main;

    SELECT *
    FROM main

    ┌─x──────────────┐
    │ test string 01 │
    └────────────────┘

    CREATE TABLE main_url
    (
    x String
    )
    ENGINE = URL('http://127.0.0.1:9998/', 'JSON')

    #Port is not opened!!!

    CREATE MATERIALIZED VIEW main_mv TO main_url
    (
    x String
    ) AS SELECT x FROM main

    insert into main (x) VALUES ('test string 02')

    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: Connection refused.

    select * from main;

    SELECT *
    FROM main

    ┌─x──────────────┐
    │ test string 01 │
    └────────────────┘

    1 rows in set. Elapsed: 0.004 sec.
  • @865226418 #242846 10:27 AM, 08 Nov 2021
    получается если порт не доступен - то ничего в основную таблицу на запишется
  • https://t.me/clickhouse_ru
    @konnectrl #242847 10:28 AM, 08 Nov 2021
    Как перейти всеми таблицами оптимально на другой метод сжатия ? Просто перелив ?
  • @865226418 #242848 10:28 AM, 08 Nov 2021
    IMHO надо вешать просто флаг и игнорировать MV - но это не значит что данные надо дропать
  • https://t.me/clickhouse_ru
    @agnek ↶ Reply to #242847 #242849 10:28 AM, 08 Nov 2021
    ALTER TABLE + OPTIMIZE. Можно не переливать.
  • By design.

    Insert is successful only if all inserts into dependent materialized views succeeded.
  • @865226418 #242852 10:31 AM, 08 Nov 2021
    ну тогда URL Engine бесполезен по дизайну - он не гарантирует 100% коннект
  • @865226418 #242853 10:32 AM, 08 Nov 2021
    надо тогда feature request открыть
  • @anotherbugmaster #242854 10:36 AM, 08 Nov 2021
    Привет! Создаю Materialized View и пытаюсь наполнить его, делая вставку из таблицы-источника в саму себя:

    CREATE VIEW ...
    FROM source_table;

    INSERT INTO source_table SELECT * FROM source_table ORDER BY date desc;

    Это работает, но через некоторое время этот запрос съедает 128 ГБ RAM и падает. Выглядит так, как будто клик читает исходную таблицу в память, есть ли способ заставить его стримить данные, кроме нарезания запроса по date вручную?
  • @anotherbugmaster #242855 10:40 AM, 08 Nov 2021
    P.S.: date стоит на первом месте в sorting key, партиционирование по месяцам. Вроде как клик должен сам лить таблицу, сортированную по sorting key, но без ORDER BY появляется огромное количество мёрджей и клик тоже умирает
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242854 #242856 10:47 AM, 08 Nov 2021
    выглядит страшно - из себя в себя. Ну и ответ понятен - order by занимается сортировкой - или относительно быстро в памяти или медленно через диск. Но зачем так? Если вам не нравится POPULATE (мне тоже), то сделайте таблицу Null повесьте аналогичное MV на нее, вставляйте (без order by) туда, MV наполнится. Новые данные пойдут уже пачками нормального размера через основной MV.
  • @anotherbugmaster #242857 10:54 AM, 08 Nov 2021
    Да, так точно сработает, спасибо
  • @anotherbugmaster #242859 11:01 AM, 08 Nov 2021
    Оказалось, что вставка в себя, несмотря на то, что выглядит страшно, тоже работает - просто нужно было сильно уменьшить max_insert_threads. В графане вижу такую картину
  • https://t.me/clickhouse_ru
    @Diroman #242860 11:04 AM, 08 Nov 2021
    привет, подскажите, в каком порядке будут выполняться действия
    запрашиваются строки с сортировкой, фильтрацией и лимитом
    ожидается поведение: сортировка -> фильтрация -> лимит
    клик так отработает?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242860 #242861 11:12 AM, 08 Nov 2021
    порядок ровно такой как в SQL - prewhere/where/group by/having/order by/limit Если вам нужна сортировка раньше фильтрации- делайте подзапрос.
    Однако ваш вопрос выглядит необычно. Тут все наоборот стремятся фильтрацию вынести вперед, чтобы меньше читать, даже придумали prewhere. А вы по какой-то причине хотите прочитать все данные с диска, отсортировать их, и только потом фильтровать. Зачем?
    В подзапрос (на более ранний этап обработки) выносят limit, ровно для того-же - меньше читать и обрабатывать. Но order by????
  • https://t.me/clickhouse_ru
    @Diroman #242862 11:31 AM, 08 Nov 2021
    в целом, данные в таблице уже лежат отсортированными по нужным полям, такая последовательность действий нужна для корректной пагинации, т.е. мы хотим запрашивать данные батчами, limit/offset не подходит, поэтому делаем условие по полям, чтобы обозначить, с какого места читать данные и хотелось бы, чтобы данные в разных запросах не теряли порядок, иначе начнется хаос
    если нет order by, но таблица отсортирована, всегда ли порядок строкв результате будет одинаков?
    Например есть таблица t
    a | b
    1 | 1
    1 | 2
    1 | 3
    2 | 1
    2 | 2
    (table with ORDER BY a, b)
    И запрос
    SELECT a, b
    FROM t
    WHERE (a > 1) OR (a = 1 AND b > 1);
    Всегда ли порядок строк результата будет
    1 | 2
    1 | 3
    2 | 1
    2 | 2
  • @anotherbugmaster #242863 11:35 AM, 08 Nov 2021
    Точно нет
  • @anotherbugmaster #242864 11:35 AM, 08 Nov 2021
    Без ORDER BY нет гарантии сортировки данных в результате запроса
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242862 #242865 11:37 AM, 08 Nov 2021
    там же несколько тредов читают несколько партов и мерджат результат в памяти. Без сортировки не получится получить стабильный результат. А чем не угодил limit/offset?
  • https://t.me/clickhouse_ru
    @Diroman #242866 11:37 AM, 08 Nov 2021
    могут данные попадать в просмотренные батчи из-за чего появится дублирование
  • @sergey_alaev #242867 11:38 AM, 08 Nov 2021
    Вопрос на ту же тему - order by умеет использовать факт сортировки по первичному ключу? Алгоритмически в этом случае нет необходимости тратить память на сортировку.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242867 #242868 11:39 AM, 08 Nov 2021
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242866 #242869 11:40 AM, 08 Nov 2021
    да, это проблема. тут пока нет isolation. Придется дедублицировать в REST или даже в клиенте :(
  • https://t.me/clickhouse_ru
    технически надо держать константное число буферов чтобы слиять сортированные результаты из многих партиций или многих шардов
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #242843 #242872 12:06 PM, 08 Nov 2021
    @den_crane извините что напрямую вас зову, просто не получается никак понять в чем причина этого (кол-во нод в /log не перестает расти, по 20-30 тыс штук в час)
  • https://t.me/clickhouse_ru
    Какая версия кх? Вы удалили реплику не дропая таблицы на ней.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а сколько реплик кх у вас? все остальное работает?
  • https://t.me/clickhouse_ru
    @StadnikD #242876 12:13 PM, 08 Nov 2021
    Ребят, а можно как-то включить последовательное выполнение запросов в КХ ?
  • https://t.me/clickhouse_ru
    @StadnikD #242877 12:14 PM, 08 Nov 2021
    объясню для чего мне это. Power BI бросает по заданию кучу запросов сразу и их отшибает по памяти. В этом говне нельзя сделать последовательную загрузку через ODBC коннектор по крайней мере.
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #242875 #242878 12:16 PM, 08 Nov 2021
    2. да, сама репликация работает нормально, данные актуальные и инсерты идут нормально

    причем даже посмотерть что в этом log не получается, если в консоли zk выполнить /ch/retroview/clickhouse/tables/01/db_name.table_name/log получаешь ошибку WatchedEvent state:Disconnected type:None path:null на клиенте zk и на zk сервере:

    2021-11-08 12:14:59,932 [myid:2] - WARN [NIOWorkerThread-4:NIOServerCnxn@364] - Unexpected exception
    EndOfStreamException: Unable to read additional data from client, it probably closed the socket: address = /127.0.0.1:51650, session = 0x5000c41cb820005
    at org.apache.zookeeper.server.NIOServerCnxn.handleFailedRead(NIOServerCnxn.java:163)
    at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:326)
    at org.apache.zookeeper.server.NIOServerCnxnFactory$IOWorkRequest.doWork(NIOServerCnxnFactory.java:522)
    at org.apache.zookeeper.server.WorkerService$ScheduledWorkRequest.run(WorkerService.java:154)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
  • https://t.me/clickhouse_ru
    Просто detach/attach таблицы пробовали сделать?
    перезагрузить все реплики кх?
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #242879 #242880 12:17 PM, 08 Nov 2021
    нет, есть документация про это? (что и как лечит detach/attach в случае реплицированных таблиц)
  • https://t.me/clickhouse_ru
    Можно попробовать посмотреть в эту сторону
    queue_max_wait_ms +

    https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#max-concurrent-queries-for-user
    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
    ? Просто sql. detach table T; attach table T
    Тоже самое что происходит когда кх выключается и включается. Таблица просто исчезнет пока она detach
  • https://t.me/clickhouse_ru
    очередь будет если запросов больше 100. Если их три то они все равно сразу начнут выполняться
  • https://t.me/clickhouse_ru
    Ну а можно зарезать max-concurrent-queries-for-user для power bi до 1 запроса?
  • https://t.me/clickhouse_ru
    я не уверен что будет очередь в этом случае. Но проверить то не сложно.
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #242882 #242886 12:25 PM, 08 Nov 2021
    правильно ли я понимаю: отключаем таблицу на всех узлах, что после этого должно произойти? кликхаус удалит из зукипера ноды связанные с реплиацией этой таблицы?
  • https://t.me/clickhouse_ru
    Нет конечно.
    Ладно не парьтесь. Просто пергрузите все ноды кх.
    У вас скорее все просто тред который чистит очередь упал или в старом зукипере все еще чистит.
  • https://t.me/clickhouse_ru
    @x1unix #242889 12:44 PM, 08 Nov 2021
    Добрый день, господа. У меня есть вопрос по поводу Clickhouse.

    У меня есть таблица в которую пишется телеметрия с устройств промежутком в 5-10 сек.
    Количество записей довольно огромное, поэтому встает необходимость со временем ужимать старые записи (вместо интервала раз в 10 сек до 1-2 часов например).

    Скажите пожалуйста есть ли такая функциональность в Clickhouse или как лучше такое реализовать?

    Спасибо
  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #242887 #242890 12:45 PM, 08 Nov 2021
    спасибо, помогло
  • https://t.me/clickhouse_ru
    @putopelatudo #242891 12:48 PM, 08 Nov 2021
    Всем привет. Подцепил в SuperSet (опенсорсная визуализация данных) базу ClickHouse
    При попытке создать DATASET выдает ошибку. Куда копать не знаю. В ClickHouse не силен. Можете подсказать в чем может быть проблема?
  • Добрый день. Так написано же, проверьте конекшн, проверьте базу данных и таблицу. Имеется ли она у вас или нет.
  • @mr_slava1 #242894 12:53 PM, 08 Nov 2021
    Всем добрый день. Сталкивался ли кто-нибудь с ситуацией когда нужно создать арм имейдж под старую версию кликхауса? Сейчас используется yandex/clickhouse-server:20.8.12, но она под армом на локале естественно не работает.

    Может кто-нибудь пожалуйста подсказать как сбилдить имейдж с такой же версией кликхауса, но уже под АРМ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Коннект к кластеру и базе точно есть. Могу выбрать любую другую базу и из нее таблицу. Т.е. те таблицы которые были созданы через экспорт данных из ЯМетрики средствами API не цепляются (как на скриншоте). А те которые были созданы ранее, скажем так, руками, в этом же кластере, цепляются без проблем
  • https://t.me/clickhouse_ru
    @lesikv #242897 12:57 PM, 08 Nov 2021
    Привет! подскажите пожалуйста, может ли таблица с движком kafka быть destination table в materialisez view?
  • а вы можете посмотреть созданы ли те таблицы, которые вы импортировали в КХ из яндекс метрики?
  • https://t.me/clickhouse_ru
    arm сборки не production ready.
    вам оно зачем?
  • https://t.me/clickhouse_ru
    Да. Данные есть, я их вижу в кластере
  • Для девелопменте на арм ноуте.
    Продакшн само собой не на арме
  • https://t.me/clickhouse_ru
    куча вариантов, graphiteMergeTree, ttl groupby, materialized view
  • https://t.me/clickhouse_ru
    apple m1 или на самом деле arm ?
  • m1, да
  • Если обобщить то на локале docker compose используется. На линуксовых и интел маках все работает, но вот первый член команды купил себе ноут с м1 и имейдж уже соответственно не работает.
  • https://t.me/clickhouse_ru
    ну 20.8 я не видел, надо собирать, а так есть https://hub.docker.com/r/kolsys/clickhouse-server/tags
  • я так же пробовал взять образ `20.10.1.4844-testing-arm` из https://hub.docker.com/r/altinity/clickhouse-server/tags?page=1&name=arm , но на ней ловим ошибки которые явно из-за скачка версии происходят
  • https://t.me/clickhouse_ru
    эммм, например?
  • https://t.me/clickhouse_ru
    может
  • Code: 342. DB::Exception: Existing table metadata in ZooKeeper differs in primary key. Stored in ZooKeeper: <list_of_fields> (METADATA_MISMATCH)
  • @mr_slava1 #242911 01:14 PM, 08 Nov 2021
    это при прогоне миграций
  • Code: 371, e.displayText() = DB::Exception: Table <table_name> is replicated, but shard #2 isn't replicated according to its cluster definition. Possibly <internal_replication>true<\\/internal_replication> is forgotten in the cluster config.
    и такую тоже
  • не похоже на разницу в версиях
  • https://t.me/clickhouse_ru
    я не понял, это у него на ноуте кластер из 20.10 и там такое?
  • https://t.me/clickhouse_ru
    тут нельзя конкретного юзера указать, это распространится на всех пользователей
  • на ноуте докер композом поднимается кластер, да. Версия 20.8.12.
    Эта ошибка появляется если пытаешься сбилдить все под 20.10 версией
  • 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
    при чем тут 20.8 ?
  • https://t.me/clickhouse_ru
    у него ноут arm m1 докер 20.10
  • https://t.me/clickhouse_ru
    @den_crane #242923 01:22 PM, 08 Nov 2021
    он создает кластер КХ
  • https://t.me/clickhouse_ru
    @den_crane #242924 01:22 PM, 08 Nov 2021
    в 20.10
  • https://t.me/clickhouse_ru
    @den_crane #242925 01:22 PM, 08 Nov 2021
    и потом миграции падают?
  • https://t.me/clickhouse_ru
    @vburakov_dev #242926 01:23 PM, 08 Nov 2021
    Всем привет, кто-то может подсказать как поменять тему документации со светлой на тёмную?
  • Попробую сначала. =)

    Есть проект, который в локальном окружении билдится с помощью компоуза. В компоузе поднимается сам проект и два инстанса кликхауса.
    Имейдж кликхауса в нем - image: yandex/clickhouse-server:20.8.12

    После билда на этом всем создаются таблицы(под словом "миграция" я имел ввиду создание/альтер таблиц)

    все это давным давно уже у всей команды на локале работает без проблем.

    Теперь к самой проблеме - появился человек с ноутом на м1, у него компоуз уже соответственно ниче не собирает, так как имейдж кликхауса не под арм. Мы попытались найти арм имейдж с такой же версией 20.8.12, но не нашли. Нашли сбилженный под арм `20.10.1.4844-testing-arm`, попробовали на нем, но при создании таблиц ловим ошибки, которые я постил выше.

    Мой первоночальный вопрос - как сбилдить арм имейдж для конкретной 20.8.12 версии, чтобы люди на м1 тоже могли локально работать над проектом?
  • @subotic0 #242928 01:55 PM, 08 Nov 2021
    Добрый день, можно ли через конфиг файлы создать роль и выдать роли гранты? или все это делается только через sql синтаксис?
  • https://t.me/clickhouse_ru
    только sql
  • а если ты у себя запустишь сейчас с нуля на 20.8 то всё пройдёт?
  • Да
  • https://t.me/clickhouse_ru
    проверил. Не сработало =(
  • https://t.me/clickhouse_ru
    вот пример dockerfile который собирает КХ https://hub.docker.com/r/kolsys/clickhouse-server
    вам лишь нужно либо замаунтить исходники с 20.8 либо сделать git clone ; checkout прямо в dockerfile
  • спасибо, а если роль создана, назначение юзеру роли аналогично только через sql?
  • ❤️ Спасибо!
  • https://t.me/clickhouse_ru
    да
  • @vladget #242938 02:17 PM, 08 Nov 2021
    Коллеги, подскажите с проблемой:

    Есть источник данных - очередь в rabbitmq, есть PHP обработчик этих данных, которых насыщается, например 10к данными и отправляет их по HTTP интерфейсу в CH,
    в это время происходит исключение - проблемы с сетью и ни 200 OK, ни 500 Error не прилетают на PHP HTTP client, от чего PHP отваливается по timeout и снимает ACK с очереди, когда как запрос в CH успешно выполнен. Имеем задвоение данных.

    Что мы делаем неправильно и как это делать правильно?
    Спасибо!
  • https://t.me/clickhouse_ru
    таблица Replicated? insert при повторе абсолютно такой же, ровно столько же строк? в тот же самый шард?
  • Не replicated, intert абсолютно такой
    задвоенние данных потому что мы не получает ответ от CH из-за проблем с сетью
  • https://t.me/clickhouse_ru
    >Не replicated,
    а какой?
  • MergeTree
  • https://t.me/clickhouse_ru
    non_replicated_deduplication_window │ 0 │ 0 │ How many last blocks of hashes should be kept on disk (0 - disabled).

    cat /etc/clickhouse-server/config.d/dedup.xml
    <?xml version="1.0"?>
    <yandex>
    <merge_tree>
    <non_replicated_deduplication_window>500</non_replicated_deduplication_window>
    </merge_tree>
    </yandex>

    +restart
  • https://t.me/clickhouse_ru
    >задвоенние данных потому что мы не получает ответ от CH из-за проблем с сетью

    неполучение ответа это нормальная ситуация и надо строить системы которые к этому готовы и умеют идемпотентность
    ну и например у меня балалайка которая в случае любой ошибки включая таймаут просто проверяет сколько вставилось конкретным инсертом
  • Согласен полностью. Но по http это давольно сложно.. Вариант с проверкой вставки тоже рассмытриваем..
  • https://t.me/clickhouse_ru
    при чем тут http ?

    ну и non_replicated_deduplication_window вам однозначно поможет
  • Я имел ввиду http интерфейс кликхауса… в смысле, что вот мы отправили инсерт, потерялся ответ, стригирился тайм-аут, и как система должна понять, что данные доставлены и инсерт на стороне кликхауса произошёл, а не например потерялись все данные инсерта?

    За дедубликацию спасибо, будем пробовать.
  • https://t.me/clickhouse_ru
    а как это у вас реализовано?
  • https://t.me/clickhouse_ru
    так какая разница HTTP TCP или UDP

    забудьте про КХ на секунду.

    вот в mysql вы начали транзакцию, записали 100 строк, потом говорите commit; а вам драйвер mysql говорит timeout. И что ? Сколько строк записалось 0 ? 100 ?

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

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

    1 это атомарные инсерты https://kb.altinity.com/altinity-kb-queries-and-syntax/atomic-insert/

    2 все просто, у каждого инсерта есть уникальный id UInt64, это тупо время + id сервера который вставляет, наверное логично snowflake/sonyflake использовать. И общем можно сделать такой запрос что select count() where .... and id = ? вернет результат за 10мс, там просто свойства партиций и первичного ключа позволяют сделать такой запрос быстро и на клиенте есть информация из полей инсерта.

    У других коллег примерно также но там id инсерта коррелирует с первичным ключом, поэтому можно min_max индекс использовать.
  • https://t.me/clickhouse_ru
    да, но не дропать, а удалять из xml
  • https://t.me/clickhouse_ru
    👍🏻👍🏻👍🏻
  • https://t.me/clickhouse_ru
    @datamanager #242958 02:57 PM, 08 Nov 2021
    Коллеги, просветите плиз. Можно закинуть результаты выборки в массив и можно получить каждый элемент массива, обратившись к нему по номеру. А аот цикл по элементам массива сделать можно?
  • https://t.me/clickhouse_ru
    arrayMap
  • https://t.me/clickhouse_ru
    @den_crane #242960 02:59 PM, 08 Nov 2021
    SELECT arrayStringConcat(arrayMap(i -> (x[-i]), arrayEnumerate(extractAll('Misha', '.') AS x))) AS z

    ┌─z─────┐
    │ ahsiM │
    └───────┘
  • https://t.me/clickhouse_ru
    @den_crane #242961 03:01 PM, 08 Nov 2021
    но в целом arrayEnumerate не нужен и лучше избегать его. Просто arrayMap ( i -> i , массив ) в i будет сам элемент
  • create role test_role;
    GRANT create table ON test_db.* TO test_role;
    GRANT select ON test_db.* TO test_role;
    GRANT insert ON test_db.* TO test_role;

    SET DEFAULT ROLE test_role TO test_user;
    Role should be granted to set default: Couldn't update user test_user. Successfully updated: none

    Не могу юзеру выдать роль, можете подсказать как фиксится?
  • https://t.me/clickhouse_ru
    ????

    grant test_role to test_user; SET DEFAULT ROLE test_role TO test_user; ?
  • спасибо!
  • https://t.me/clickhouse_ru
    @Caside #242965 03:28 PM, 08 Nov 2021
    А есть ли возможность очень просто создать на ходу колонку с номером строки?
  • https://t.me/clickhouse_ru
    на ходу в селекте можно
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #242966 #242967 03:29 PM, 08 Nov 2021
    вот в селекте и нужно
  • https://t.me/clickhouse_ru
    @Caside #242968 03:29 PM, 08 Nov 2021
    желательно не обращаясь к numbers
  • https://t.me/clickhouse_ru
    rowNumberInAllBlocks()
  • https://t.me/clickhouse_ru
    @Caside #242970 03:33 PM, 08 Nov 2021
    Спасибо, именно то что нужно
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242955 #242972 03:46 PM, 08 Nov 2021
    это для insert retry ? Чтобы проверить после ошибки что вставилось 50k из 100k и потом попробовать вставить недостающее?
  • https://t.me/clickhouse_ru
    там инсерты атомарные, либо 0 либо все.
    это чтобы в случае ошибки (включая таймаут) можно было проверить вставилось или нет, чтобы решить повторить инсерт или нет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #242973 #242974 04:11 PM, 08 Nov 2021
    с одной стороны инсерты атомарные, а с другой - в проверочном запросе делается select count() - возник когнитивный диссонанс. Вероятно count() был применен просто так, чтобы было что спросить.
  • https://t.me/clickhouse_ru
    а так для перфоманса без разницы что спрашивать, плюс просто дополнительная проверка что КХ данные не потерял и инсерт все еще атомарный
  • https://t.me/clickhouse_ru
    @floxard #242976 04:29 PM, 08 Nov 2021
    -- количество строк с ID-шками которые ЕСТЬ в результате подзапроса в мускуль, в разрезе по месяцам ;
    select count() cnt,
    toYYYYMM(date) month
    from table
    where id in ( query to engine=mysql table )
    group by month order by month;

    -- количество строк с ID-шками которых НЕТ в результате подзапросе в мускуль, в разрезе по месяцам ;
    select count() cnt,
    toYYYYMM(date) month
    from table
    where id not in ( query to engine=mysql table )
    group by month order by month

    запросы различаются только "where id in" и "where id not in"
    как в один запрос сделать?
  • https://t.me/clickhouse_ru
    SELECT
    count(1),
    countIf(1, number IN
    (
    SELECT number
    FROM numbers(3)
    ))
    FROM numbers(10)

    Query id: 07dd756e-d71e-4add-8e15-8854879ab006

    ┌─count(1)─┬─countIf(1, in(number, _subquery6774))─┐
    │ 10 │ 3 │
    └──────────┴───────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @floxard #242978 04:41 PM, 08 Nov 2021
    спс
  • https://t.me/clickhouse_ru
    @nyatmeat #242980 05:15 PM, 08 Nov 2021
    Всем привет. Нашел такую вещь, что при передаче в mysql передаются только условия сравнения (>, <, =, !=) и так понимаю что in условие не передается, а фильтруется на стороне клика и нужно делать field = 'value1' or field = 'value2'. У меня таким образом получается очень большой запрос. Как-то можно придумать чтобы результаты подзапроса улетели до mysql и там уже по индексам нормально отфильтровалось?
  • https://t.me/clickhouse_ru
    @kirilldikalin #242981 05:17 PM, 08 Nov 2021
    Всем привет!
    У нас в яндекс клауде лежат данные в паркете около 150 Гб
    Также есть ВМ-ки и Managed Service for ClickHouse и пр.
    И вот хотелось бы паркеты засунуть сразу в кликхаус без мороки со спарком и тд.
    Если кто-то так делал или знает как такую штуку можно провернуть, то напишите пожалуйста )
  • https://t.me/clickhouse_ru
    SELECT * FROM s3('s3//', Parquet)

    гуглите
  • https://t.me/clickhouse_ru
    @OrNixx #242983 05:50 PM, 08 Nov 2021
    вечер добрый. есть зарубежные хостеры с облачным КХ ?
  • https://t.me/clickhouse_ru
    altinity например
  • https://t.me/clickhouse_ru
    @OrNixx #242985 05:52 PM, 08 Nov 2021
    а чтобы вся экосистема была, типа aws ?
  • https://t.me/clickhouse_ru
    altinity умеет поднимать в aws и gcp (судя по сайту)
  • https://t.me/clickhouse_ru
    в Altinity кластере будет возможность сделать пиринг со своим VPC

    а так у alibaba-cloud был КХ
  • https://t.me/clickhouse_ru
    @den_crane #242988 05:58 PM, 08 Nov 2021
    ClickHouse/cloud.md at v21.8.3.44-lts · 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
    Привет, мы запустили закрытое превью такого сервиса поверх AWS. Напиши мне и мы дадим тестовый бесплатный доступ до нашего GA. Мы - это дочерняя компания Яндекса.
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #242989 #242990 06:20 PM, 08 Nov 2021
    некий кукбук, который в авс развернёт кластер КХ с зоотехником?
  • https://t.me/clickhouse_ru
    @OrNixx #242991 06:20 PM, 08 Nov 2021
    а то я не очень представляю себе, что значит поверх aws
  • https://t.me/clickhouse_ru
    managed service, как MongoDB atlas
  • https://t.me/clickhouse_ru
    @gaploid #242993 06:21 PM, 08 Nov 2021
    как RDS в AWS, только разворачивается в нашем экаунте.
  • https://t.me/clickhouse_ru
    @gaploid #242994 06:23 PM, 08 Nov 2021
    Просто выбираешь размер нод, кол-во реплик и шардов и вжух у тебя кластер с admin доступом и connections strings к нему.
  • https://t.me/clickhouse_ru
    Хм, звучит двояко.

    Скорее такая возможность (конкретно VPC endpoint) уже есть и много кто пользуется ею.
  • https://t.me/clickhouse_ru
    исправил
  • https://t.me/clickhouse_ru
    @pirozhkov_v #242997 06:34 PM, 08 Nov 2021
    Всем привет! есть таблица
    CREATE TABLE employes_full (
    `id` Nullable(UUID),
    `patient_id` Nullable(String),
    `subdivision_id` UUID,
    `location_id` Nullable(UUID),
    `position` Nullable(String),
    `employment_date` Nullable(Date),
    `terminate_date` Nullable(Date),
    `group_type` Nullable(Int32),
    `member_type` Nullable(Int32),
    `subdivision_code` Nullable(String),
    `subdivision_name` Nullable(String),
    `subdivision_parent_code` Nullable(String)
    ) ENGINE = MergeTree
    ORDER BY subdivision_id
    есть две вьюхи из кафки
    CREATE MATERIALIZED VIEW subdivisions_mv2 TO employes_full (
    `subdivision_id` UUID,
    `subdivision_code` String,
    `subdivision_name` String,
    `location_id` UUID,
    `subdivision_parent_code` Nullable(String)
    ) AS
    SELECT
    id as subdivision_id,
    code as subdivision_code,
    name as subdivision_name,
    location_id,
    parent_code as subdivision_parent_code
    FROM
    subdivisions_queue

    CREATE MATERIALIZED VIEW employes_mv2 TO employes_full (
    `id` UUID,
    `patient_id` String,
    `subdivision_id` UUID,
    `position` String,
    `employment_date` Nullable(Date),
    `group_type` Int32,
    `member_type` Int32,
    `terminate_date` Nullable(Date)
    ) AS
    SELECT
    id,
    employee_external_id as patient_id,
    subdivision_id,
    position,
    if(
    isNull(employment_date),
    NULL,
    toDate(employment_date)
    ) AS employment_date,
    group_type,
    member_type,
    if(
    isNull(terminate_date),
    NULL,
    toDate(terminate_date)
    ) AS terminate_date
    FROM
    employes_queue
    Я ожидал, что обе вьюхи будут заполнять данные в таблице employes_full. В реале только прилетают данные от subdivisions_mv2. Т.е. я делаю что-то не так? или из двух вьюх в одну таблицу нельзя так записать?
  • https://t.me/clickhouse_ru
    В целом можно, а что в логах есть?
  • https://t.me/clickhouse_ru
    @unamedrus #242999 06:46 PM, 08 Nov 2021
    SHOW CREATE TABLE employes_queue;
  • https://t.me/clickhouse_ru
    @pirozhkov_v #243000 06:48 PM, 08 Nov 2021
    ошибок нет
  • https://t.me/clickhouse_ru
    select * from employes_queue limit 1
    работает?
  • https://t.me/clickhouse_ru
    @pirozhkov_v #243002 06:51 PM, 08 Nov 2021
    да
  • https://t.me/clickhouse_ru
    в смысле видно поля? значения?
  • https://t.me/clickhouse_ru
    это что-то странное
    if(isNull(employment_date), NULL,toDate(employment_date))

    в худшем случае можно toDateOrNull(employment_date) as employment_date
  • https://t.me/clickhouse_ru
    @den_crane #243005 06:55 PM, 08 Nov 2021
    SELECT toDateOrNull('Null')

    Query id: c6cc2656-8c44-4e35-9f7d-768e8c7f8706

    ┌─toDateOrNull('Null')─┐
    │ ᴺᵁᴸᴸ │
    └──────────────────────┘
  • https://t.me/clickhouse_ru
    @pirozhkov_v #243006 06:55 PM, 08 Nov 2021
    все получилось, вьюха смотрела на источник из кафки, топик который уже был обработан
  • https://t.me/clickhouse_ru
    это помогло)
  • https://t.me/clickhouse_ru
    @den_crane #243008 06:57 PM, 08 Nov 2021
    if(isNull(employment_date), NULL,toDate(employment_date))

    если x is null тогда null иначе x -- это что странное
  • https://t.me/clickhouse_ru
    Так это и есть в AWS. Вся экосистема на месте. Приходите.
  • https://t.me/clickhouse_ru
    @OrNixx #243010 07:14 PM, 08 Nov 2021
    буду иметь в виду, спасибо
  • https://t.me/clickhouse_ru
    Спасибо!
  • 09 November 2021 (199 messages)
  • https://t.me/clickhouse_ru
    @serikzhilibayev #243016 04:43 AM, 09 Nov 2021
    Всем привет. У меня есть distributed table (на ReplacingMergeTree) где находятся 5 ТБ данных на каждой ноде (5 нодов * 5ТБ примерно). Данные партиционированы по дате, TTL год, партиции варируется [1GB, 250GB]. И я хочу обновить одну колонку с String на Point (geo point). И хотел бы у вас спросить как можно это осушествить
  • https://t.me/clickhouse_ru
    @serikzhilibayev #243017 04:45 AM, 09 Nov 2021
    как можно бы это сделать без проблем с мутациями.
  • https://t.me/clickhouse_ru
    @JonyBPlaya #243019 05:22 AM, 09 Nov 2021
    Всем привет! Никто не пробовал строить связи между матаданными КХ? Например у меня есть таблица 1, которая через MV пишет в другую таблицу 2. Могу ли я используя какую то системную информацию и вывести информацию что есть цепочка Таблица 1-> MV-> Таблица 2.
  • https://t.me/clickhouse_ru
    @351787200 #243021 06:54 AM, 09 Nov 2021
    Добрый день. Для реплицируемой таблицы есть две реплики на двух серверах. Когда один сервер остановлен начинают копиться части, быстро выходим за пределы parts_to_throw_insert и получаем ошибку Too many parts. Как правильно обрабатывать более или менее длительный простой сервера с репликой?
  • https://t.me/clickhouse_ru
    @dmitriynvkv #243026 07:59 AM, 09 Nov 2021
    Всем привет, а при использовании Buffer какие подводные камни? Хочется иметь прослойку для более менее частой вставки, выглядит как решение.
  • https://t.me/clickhouse_ru
    @anikulov #243027 08:01 AM, 09 Nov 2021
    Добрый день.
    У меня есть таблица: data, field_1, field_2, field_3. Поля String.
    На входе следующий json:
    {
    "data": {
    "k1":"v1",
    "k2":"v2",
    "k3": {
    ...
    }
    },
    "filed_1": "v3",
    "filed_2": "v4",
    "filed_3": "v5"
    }
    Я бы хотел записать в нее данные следующим образом:
    * в поле data - значение ключа data. Все значения в приведены к строкам.
    * в поля field_1(2,3) - значения ключей filed_1(2,3) соответственно.
    Однако, когда я передаю этот объект на insert c JSONEachRow, то получаю ошибку:
    "Cannot parse JSON string: expected opening quote: (while reading the value of key data)"

    Как это победить?
  • https://t.me/clickhouse_ru
    пишите весь JSON в поле JSON
    и вставляйте только это поле
    а поля data и field_1,2,3 сделайте через DEFAULT JSONExtract...(data, ...)
    https://clickhouse.com/docs/en/sql-reference/functions/json-functions/
    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
    @S_Dimitry #243029 08:26 AM, 09 Nov 2021
    Коллеги, готовых статей сравнения не нашел, что в КХ быстрее UNION DISTINCT или select distinct и UNION ALL. Есть опыт у кого?
  • https://t.me/clickhouse_ru
    Я думаю проще всего будет попробовать самому на ваших данных и даже версии кх :)
  • https://t.me/clickhouse_ru
    ну да, получил выигрыш в 15-20 ms на своих объемах данных
  • https://t.me/clickhouse_ru
    Можно поинтересоваться выигрыш в пользу последнего варианта?
  • https://t.me/clickhouse_ru
    @S_Dimitry #243035 08:48 AM, 09 Nov 2021
    да, UNION DISTINCT чуть быстрее
  • https://t.me/clickhouse_ru
    @KanyeWinner #243036 08:49 AM, 09 Nov 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @adwski #243037 08:49 AM, 09 Nov 2021
    Клик крешится с сообщением "Coordination::Exception: Can't get data for node ... ". Можно его как-то запустить принудительно, чтобы detach сделать?
  • https://t.me/clickhouse_ru
    @masha_badmaeva #243038 08:51 AM, 09 Nov 2021
    🏹 Генератор ПЦР!
    〽️ Вот как мог бы выглядеть Ваш тест!
    🧬 Бот создаст его за считанные секунды.
    🚨 Посмотрите уже сейчас.

    @fastpcr_bot
  • https://t.me/clickhouse_ru
    @bananavodka #243039 08:52 AM, 09 Nov 2021
  • https://t.me/clickhouse_ru
    Ну отлично тогда, пользуйтесь :)
  • https://t.me/clickhouse_ru
    @solod89 #243041 08:54 AM, 09 Nov 2021
    Всем привет!
    Подключаюсь к PostgreSQL в соответствии с документацией:
    https://clickhouse.com/docs/ru/engines/database-engines/postgresql/

    Пробую подключиться, указав схему, как в примере:
    CREATE DATABASE db
    ENGINE = PostgreSQL('postgres:5432', 'local', 'postgres', 'password', 'billing', 1);

    Получаю ошибку:
    Code: 36, e.displayText() = DB::Exception: PostgreSQL Database require host:port, database_name, username, password arguments [, use_table_cache = 0]. (version 21.8.10.19 (official build))

    Это в документации ошибка или я что-то делаю не так? Как правильно указать схему при подключении?
  • А local у вас что значит?
  • https://t.me/clickhouse_ru
    @solod89 #243044 08:58 AM, 09 Nov 2021
    Имя БД
  • https://t.me/clickhouse_ru
    @masha_badmaeva #243045 08:58 AM, 09 Nov 2021
    🏹 Генератор ПЦР!
    〽️ Вот как мог бы выглядеть Ваш тест!
    🧬 Бот создаст его за считанные секунды.
    🚨 Посмотрите уже сейчас.

    @fastpcr_bot
  • А postgres тогда что?
  • https://t.me/clickhouse_ru
    @solod89 #243047 08:58 AM, 09 Nov 2021
    username
  • https://t.me/clickhouse_ru
    @solod89 #243048 08:59 AM, 09 Nov 2021
    PostgreSQL('postgres:5432', 'database_name', 'postgres_user', 'password', 'scheme',1);
  • схему в движок БД добавили только недавно, в 21.8 ещё нет. В движке твблицы должна быть с 21.4
  • https://t.me/clickhouse_ru
    спасибо
    вставлять только поле со всем json - получилось
    поля field_1(2,3) через DEFAULT JSONExtractString заполняться тоже получилось
    не получается конструкцией DEFAULT JSONExtractString(json, 'data') получить структуру из ключа 'data' - возвращает пусто
    В чем может быть причина?
  • https://t.me/clickhouse_ru
    вопрос решился изменением JSONExtractString(json, 'data') на JSONExtractRaw(json, 'data')
    спс))
  • https://t.me/clickhouse_ru
    Прошу прощения, если глупый вопрос, а как тогда подключиться к схеме?
  • не уверен что это можно сделать в вашей версии, 21.9 минимальная
  • https://t.me/clickhouse_ru
    @solod89 #243057 09:27 AM, 09 Nov 2021
    Понял, спасибо! Попробую на 21.9
  • @simpl1g #243058 09:27 AM, 09 Nov 2021
    ну или создавать отдельными таблицами
  • @UMSynergy #243059 09:29 AM, 09 Nov 2021
    Коллеги, доброго времени
    Использую CH в связке с Apach Superset

    В Superset есть фильтр, но он с точным соответствием. Для получения поля с условием "Содержит", необходимо создать вычисляемое поле

    Помогите, пожалуйста, понять как построить запрос типа - like(url, '%*%'), где вместо * подставляется произвольное значение
  • https://t.me/clickhouse_ru
    @cassej #243060 09:43 AM, 09 Nov 2021
    всем привет, подскажите, есть ли возможность как-то обновить materialized view
    у меня используется join двух таблиц и видимо в основную таблицу данные попали раньше, чем в ту что join
    в итоге сейчас в materialized view наблюдаю null вместо данных
  • @softbot_xxl #243061 09:51 AM, 09 Nov 2021
    Всем Привет. В КХ появился тип MAP, в котором пара ключ/значение хранятся как кортежи (tuple) в массиве, они не отсортированы по ключу, поэтому поиск занимает линейное время. Я хочу понять, почему так было сделано? Есть какая-то причина не делать бинарный поиск по отсортированым ключам (типа как flat_map в boost)?
  • Так вручную можно вставку сделать
  • https://t.me/clickhouse_ru
    @cassej ↶ Reply to #243062 #243063 09:52 AM, 09 Nov 2021
    то есть провести alter с delete и потом вставить те записи, которых нету?
  • https://t.me/clickhouse_ru
    @konnectrl #243064 09:53 AM, 09 Nov 2021
    Ну да
  • https://t.me/clickhouse_ru
    Лучше сделать MV которая через TO пишет в другую таблицу. Тогда легко поддерживать
  • https://t.me/clickhouse_ru
    Потому что так сделать было достаточно просто.
    А всякие оптимизации вроде на потом запланированы были
  • Спасибо. А не в курсе, делает ли это кто-нибудь? У нас есть задача, которой нужен быстрый поиск по ключу/значению. MAP демонстрирует лучшую производительность, чем 2xArray, похоже за счет лучшей локальности. Бинарный поиск бы ее улучшил еще больше.
  • https://t.me/clickhouse_ru
    Наверное никто, большие у вас мапы выходят?
  • У нас большой QPS и большие объемы сканирования.
  • @softbot_xxl #243070 09:57 AM, 09 Nov 2021
    Мапы сами небольшие (до 20 элементов).
  • https://t.me/clickhouse_ru
    Это не ответ :)

    Какого размера у вас мапы в среднем?
  • https://t.me/clickhouse_ru
    Ну ок,

    Просто в случае больших мап бывает имеет смысл посмотреть в разбиении их на несколько мап по меньше. Оно работает лучше если нужно достать 1 колонку
  • @softbot_xxl #243073 09:59 AM, 09 Nov 2021
    Да, это сейчас сделано, но для массивов.
  • @softbot_xxl #243074 09:59 AM, 09 Nov 2021
    Ну ок, я понял, просто надо кому-то сделать.
  • https://t.me/clickhouse_ru
    Да, либо смотреть в сторону subcolumns и JSON data type это уже делается
  • @softbot_xxl #243076 10:02 AM, 09 Nov 2021
    Еще вопрос, по другой теме. Мы хотим сделать heatmap доступа к партишнам, чтобы попытаться выгрузить холодные парты в облако. Насколько мы посмотрели, через системные таблицы такой информации не получить?
  • @softbot_xxl #243077 10:02 AM, 09 Nov 2021
    Вроде бы это есть в трейс логе, но если его включить, то сильно упадет производительность.
  • https://t.me/clickhouse_ru
    Интересный вопрос :)

    Можно query_log попарсить думаю на условия в запросах.

    Либо в trace_log

    > Вроде бы это есть в трейс логе, но если его включить, то сильно упадет производительность.

    У нас trace_log включен в продакшене чего и всем клиентам рекомендуем.
  • @softbot_xxl #243079 10:04 AM, 09 Nov 2021
    Не так выразился, не trace_log, а лог на уровне trace 🙂
  • https://t.me/clickhouse_ru
    Ну, мы рекомендуем так включать.

    Может в случае high qps это действительно заметно замедляет, но в обычных условиях все норм
  • https://t.me/clickhouse_ru
    @unamedrus #243081 10:06 AM, 09 Nov 2021
    Если вы готовы к некоторым изменениям кода, то можете попробовать вписывать потенциально затрагиваемые парты у запроса в log_comment запроса
  • Понял, спасибо.
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #243083 10:09 AM, 09 Nov 2021
    Привет! У меня есть 500 миллионов уникальных id в Кликхаусе и таблица в Постгресе на 1.5 миллиарда уникальных id, где каждый день каждому id сопоставляется некоторое значение. Хочется каждый день за приемлимое время эти значения перетаскивать в ту таблицу, которая в Кликхаусе.

    Я вижу два варианта -
    - внешний словарь (direct) и alias-ы. Буду раз в день делать обычный селект и класть результат выполнения в результирующую таблицу
    - etl-ка, которая раз в день будет джойнить таблицы и давать результирующую

    Как лучше поступить?
  • https://t.me/clickhouse_ru
    @DarshilxD #243086 10:22 AM, 09 Nov 2021
    кто-нибудь поможет? , я не могу понять эту ошибку, которая говорит: DB :: exception: Неверное количество полей в выражении раздела: 1, должно быть: 0., e.what () = DB ::
  • https://t.me/clickhouse_ru
    @pic_Nick77 #243087 10:29 AM, 09 Nov 2021
    Подскажите, пользовательские функции с какой версии доступны? Пробую пример из документации
    CREATE FUNCTION linear_equation AS (x, k, b) -> k*x + b;
    и получаю ошибку
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 8 ('FUNCTION'): FUNCTION linear_equation AS (x, k, b) -> k*x + b. Expected one of: VIEW, LIVE, DATABASE, USER, PROFILE, TEMPORARY, TABLE, ROW POLICY, POLICY, DICTIONARY, QUOTA, OR REPLACE, ROLE, SETTINGS PROFILE, MATERIALIZED (version 21.7.11.3 (official build))
  • @efreeman #243088 10:30 AM, 09 Nov 2021
    Всем салют, можно ли как-то посчитать размер колонки, не таблицы а именно колонки в cH?
  • system.columns
    Там есть данные по сжатым и несжатым данным.
    SELECT formatReadableSize(sum(total_bytes)), database, table FROM system.columns GROUP BY database, table
  • мм, там не данных о размере. возможно parts_columns подойдет
  • https://t.me/clickhouse_ru
    @DarshilxD #243091 10:50 AM, 09 Nov 2021
    why select * from remote not working
  • https://t.me/clickhouse_ru
    @DarshilxD #243092 10:50 AM, 09 Nov 2021
    i am using exact syntax
  • data_uncompressed_bytes+marks_bytes?
  • https://t.me/clickhouse_ru
    @DarshilxD #243094 10:51 AM, 09 Nov 2021
    с использованием точного синтаксиса все еще ошибка
  • https://t.me/clickhouse_ru
    why
  • 21.10
  • use remote('addresses_expr', db, table, 'superuser', 'password')
  • увы, получаю все время 0.00B
  • https://t.me/clickhouse_ru
    wow it worked thanks
  • ну используйту psrts_columns
  • @efreeman #243101 11:00 AM, 09 Nov 2021
    а там почему-то нет нужным мне колонок? ерунда какая-то
  • @efreeman #243102 11:01 AM, 09 Nov 2021
    а для distributed таблиц такая функциональность поддерживается? или не имеет значения какая таблица?
  • distributed таблица занимает 0 байт, она ничего не хранит
  • parts_columns это для семейства mergetree
  • @simpl1g #243105 11:02 AM, 09 Nov 2021
    вам надо смотреть размер таблицы на которую смотрит distributed таблица
  • @efreeman #243106 11:04 AM, 09 Nov 2021
    да-да, все верно, это и имел ввиду. я пытаюсь найти разрел колонки в шарде, потом просто умножу на кол-во серверов и найду приближенное значение. но штука в том что в таблице system.parts_columns не вижу шард таблицы
  • @efreeman #243107 11:04 AM, 09 Nov 2021
    хотя она MergeTree
  • а эта таблица создана на этом сервере? вы можете сделать select из нее?
  • @efreeman #243109 11:06 AM, 09 Nov 2021
    ха, таблица есть, но она пустая. хмм
  • @efreeman #243110 11:06 AM, 09 Nov 2021
    пойду на других серверах посмотрю
  • ну вот, как всегда)
    чудес не произошло, что просто так данные в системные таблицы не попали
  • используйте cluster функцию чтобы посмотреть на всех серверах сразу размер

    SELECT formatReadableSize(sum(data_compressed_bytes)), formatReadableSize(sum(data_uncompressed_bytes)), name FROM cluster(‘your_cluster_name’, ‘system’, ‘columns’) WHERE database = ‘’ AND table = ‘’ GROUP BY name
  • https://t.me/clickhouse_ru
    @privatejesus #243113 11:12 AM, 09 Nov 2021
    привет
    ребят, кто сталкивался и может помочь, нужен ответ от сапорта clickhouse/яндекс, но через почты они не отвечают

    может кто-то уже имел подобного рода проблематику/вопросы и получилось решить, был бы признателен за помощь, спасибо!
  • https://t.me/clickhouse_ru
    @DarshilxD #243114 11:15 AM, 09 Nov 2021
    i deleted table and again creating but it gives error saying metadata still available
  • https://t.me/clickhouse_ru
    @DarshilxD #243115 11:15 AM, 09 Nov 2021
    how to clean metadata of zookeeper?
  • Добрый день.
    Подскажите разобрались ли вы с вопросом? Столкнулся с такой же ситуацией. Мутация висит, в parts_to_do_names список партов которых нигде нет.
  • Добрый, нет, проблему не решили. (благо ALTER TABLE не часто бывают).
    Подскажите, тоже реплицируемая таблица?
  • Да. При этом мутация висит только на одной реплике. На остальных нет.
    Попробую сейчас просто прибить зависшую мутацию
  • https://t.me/clickhouse_ru
    @kott0 #243119 12:17 PM, 09 Nov 2021
    друзья, а почему toDateTime может не конвертировать время в таймзоны нужные?
    SELECT
    toDateTime(10000, 'Europe/London') as lon_time,
    toDateTime(10000, 'Europe/Moscow') as mos_time
    и первое и второе отдают одинаковый результат - 1970-01-01 02:46:40
  • https://t.me/clickhouse_ru
    @kott0 #243120 12:18 PM, 09 Nov 2021
    21.9.4.35 версия
  • а вы где проверяете? в clickhouse-client вроде норм

    SELECT
    toDateTime(10000, 'Europe/London') AS lon_time,
    toDateTime(10000, 'Europe/Moscow') AS mos_time

    ┌────────────lon_time─┬────────────mos_time─┐
    │ 1970-01-01 03:46:40 │ 1970-01-01 05:46:40 │
    └─────────────────────┴─────────────────────┘
  • https://t.me/clickhouse_ru
    @kott0 ↶ Reply to #243121 #243122 12:20 PM, 09 Nov 2021
    клиент - да, а вот в датагрипе нет, разве он может влиять?
  • датагрип на своей стороне конвертит в свою таймзону поидее
  • https://t.me/clickhouse_ru
    @kott0 ↶ Reply to #243123 #243124 12:22 PM, 09 Nov 2021
    очень странное поведение, но похоже вы правы
    SELECT
    toString(toDateTime(10000, 'Europe/London')) as lon_time,
    toString(toDateTime(10000, 'Europe/Moscow')) as mos_time
    отдает верный результат
  • @simpl1g #243125 12:22 PM, 09 Nov 2021
    вернее jdbc драйвер, поищите по чатику, тут уже не первый раз такое
  • @githubreleases_bot #243127 b o t 01:17 PM, 09 Nov 2021
    ClickHouse/ClickHouse description changed: v21.11.2.2-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.11.2.2-stable
    Release notes:
    ClickHouse stable release v21.11.2.2-stable
    Release v21.11.2.2-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.11.2.2-stable

  • https://t.me/clickhouse_ru
    колонок много? В смысле какой % данных надо поменять? одну колонку из 100 или 1 колонку из 5 ?

    >И я хочу обновить одну колонку с String на Point (geo point)
    просто добавляете колонку, с default выражением, дальше alter table update, потом rename колонок. должно работать, проверьте на стейдже
  • https://t.me/clickhouse_ru
    в системных таблицах видно dependant, тут в чатике был запрос который такое доставал
  • https://t.me/clickhouse_ru
    такого быть не должно, это очень странно, все КХ ноды независимы, может нагрузка удваивается на одну ноду, когда вторая в down ?
  • https://t.me/clickhouse_ru
    Всем добрый день! Пробую. Не понимаю. ArrayMap возвращает массив. Но как достучаться в цикле до каждого его элемента? Или как построитб цикл по элементам массива каким то иным способом?
  • https://t.me/clickhouse_ru
    в доке же все написано. Меняет порядок вставленных строк, ломает дедупликацию вставки, может потерять данные при внезапной потере эл-ва или перезагрузке оси
  • https://t.me/clickhouse_ru
    Ну да, вы правы, спасибо.
  • https://t.me/clickhouse_ru
    @dmitriynvkv #243134 01:46 PM, 09 Nov 2021
    Думал может что то ещё.
  • https://t.me/clickhouse_ru
    так понятно?

    SELECT arrayMap(i -> concat(toString(i), ' - ahaha'), [1, 2, 3]) AS r
    ┌─r─────────────────────────────────────┐
    │ ['1 - ahaha','2 - ahaha','3 - ahaha'] │
    └───────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    нет, ничего нового
  • https://t.me/clickhouse_ru
    тут надо понять что ваш JSON это не JSONEachRow. JSONEachRow это плоская структура, без вложенностей и в одной строке, без переводов строки.
    JSONEachRow конечно быстрее чем JSON
  • https://t.me/clickhouse_ru
    Если честно, то не очень. Я хотел построить выражение вида select * from fff where ggg =элемент массива. А функции все равно возвращают весь массив целиком.
  • https://t.me/clickhouse_ru
    просто .sql файл в котором attach table переложить в любую папку, или мамку, например в /tmp
  • https://t.me/clickhouse_ru
    create table XXX(x Int64, ip Array(IPv4)) Engine=Memory;
    insert into XXX values ( 1, ['10.10.10.10', '20.20.20.20']);

    SELECT
    x,
    arrayFilter(i -> (i IN (toIPv4('10.10.10.10'), toIPv4('20.20.20.20'))), ip) AS res
    FROM XXX
    WHERE length(res) > 0
    ┌─x─┬─res───────────────────────────┐
    │ 1 │ ['10.10.10.10','20.20.20.20'] │
    └───┴───────────────────────────────┘

    SELECT
    x,
    arrayJoin(ip) AS z
    FROM XXX
    WHERE z = toIPv4('10.10.10.10')
    ┌─x─┬─z───────────┐
    │ 1 │ 10.10.10.10 │
    └───┴─────────────┘

    SELECT
    x,
    ip
    FROM XXX
    WHERE has(ip, toIPv4('10.10.10.10') )
    ┌─x─┬─ip────────────────────────────┐
    │ 1 │ ['10.10.10.10','20.20.20.20'] │
    └───┴───────────────────────────────┘

    SELECT
    x,
    _ip
    FROM XXX array join ip as _ip
    WHERE _ip = toIPv4('10.10.10.10')

    ┌─x─┬─_ip─────────┐
    │ 1 │ 10.10.10.10 │
    └───┴─────────────┘
  • https://t.me/clickhouse_ru
    в имя таблицы через .
  • https://t.me/clickhouse_ru
    Спасибо большое!
    В конечном итоге использовал версию 21.9.5.16, теперь всё ок)
  • https://t.me/clickhouse_ru
    так нету смысла в этом никакого
    потому что это все лежит в 2 двух запакованых .bin файлах, все строки подряд, внутри строк неотсортированные Key
    толку-то сортировать, даже чтобы найти конкретную строку надо прочитать 8192 строки целиком, все KEY, все VALUE
  • Оно будет загружено в память, да. Но если сканирование ищет конкретный ключ, разве бинарный поиск не будет быстрее (если ключи отсортированы).
    Т.е. select id from mapped_table where map_field[‘key_string’] = ‘value’
  • @softbot_xxl #243145 02:42 PM, 09 Nov 2021
    И ключа может не быть в мапе. Тогда бинарный поиск быстрее это обнаружит.
  • https://t.me/clickhouse_ru
    ну да все так, мы потратили 10 минут на чтение и распаковку .bin и поиск строки
    вы предлагает 3 сек. сэкономить, мудро

    в итоге все будет переделано вот так https://kb.altinity.com/altinity-kb-schema-design/best-schema-for-storing-many-metrics-registered-from-the-single-source/#2e-several-baskets-of-arrays

    это уже все переделано
  • @softbot_xxl #243147 02:46 PM, 09 Nov 2021
    Это если QPS невысок, но у нас он высок, и распаковываем мы намного реже чем читаем.
  • https://t.me/clickhouse_ru
    чта? мы всегда распаковываем, ВСЕГДА, КАЖДЫЙ РАЗ
  • хм, ок. Под распаковкой понимается что конкретно? Чтение из памяти?
  • @softbot_xxl #243150 02:49 PM, 09 Nov 2021
    Допустим есть uncompressed cache
  • https://t.me/clickhouse_ru
    так им никто не пользуется, он выключен у всех, потому что это не работает. БЫСТРЕЕ каждый раз делать декомпрессию lz4/zstd, на каждое чтение
  • https://t.me/clickhouse_ru
    распаковка это декомпресия LZ4
  • https://t.me/clickhouse_ru
    @den_crane #243153 02:53 PM, 09 Nov 2021
    намного эффективнее больше держать запакованных данных в кеше чем uncompressed cache, вон чуваки выяснили что если marks держать compressed в marks cache и делать лишние чтения, то это все равно эффективнее
  • В моем случае у нас есть use_uncompressed_cache = 1 (если мы об одном и том же говорим), т.е. я предполагаю, что на вход методам ColumnMap приходит один и тот же разжатый кусок памяти.
  • Можно ссылку на статью?
  • https://t.me/clickhouse_ru
    ну вы фантазер, что тут сказать
  • https://t.me/clickhouse_ru
    RFC: save memory and improve mark cache hit rate by compressing marks in memory by jorisgio · Pull Request #30434 · ClickHouse/ClickHouse

    When using tables with hundreds of billions of rows and 10s of columns, storing all marks in memory can easily use several hundreds of gigabytes. Although mark cache is officially a cache, running ...

  • Я не идеален, но хотелось бы объективных аргументов, чтобы я стал лучше и умней.
  • @BBRSOFF #243159 02:55 PM, 09 Nov 2021
    Всех приветствую! Нашёл интересное поведение
    Есть 2 шарда по 2 реплики
    сделал rename table (Distributed таблицы) on cluster; на одном шарде (2 репликах) изменения применились, а вот на другом уже 20 минут как висит
    сам запрос тоже висит в system.processes. Помимо него, есть выполняющийся процесс optimize table on cluster, но это совершенно другая таблица. Связано ли это и если да, то как?
  • https://t.me/clickhouse_ru
    ну нету смысла держать uncompressed_cache = 8 GB , мы оперируем терабайтами на каждый запрос, хит рейт = 0
  • https://t.me/clickhouse_ru
    Доступ к кешу в сотни раз быстрее, чем к оперативной памяти. Чем больше будем работать с кешем, тем больше throughput. То есть, прочитать немного ОЗУ и с использованием кеша распаковать данные получается выгоднее, чем постоянно читать ОЗУ то там, то сям.
  • https://t.me/clickhouse_ru
    select name from system.tables format Null выполняется на том втором сервере?
  • @softbot_xxl #243163 02:58 PM, 09 Nov 2021
    Мир очень разный. В большой компании тяжело притянуть новые технологии, но у нас уже есть КХ и стараемся делать на нем, в качестве general-purpose columnar engine.
  • DB::Exception: Syntax error: failed at position 44 ('FORMAT') (line 2, col 1): FORMAT TabSeparatedWithNamesAndTypes;. Expected one of: end of query, SETTINGS (version 21.8.4.51 (official build)).
  • https://t.me/clickhouse_ru
    select name from system.tables
  • Да, всё отдаётся. Запрос выполнился как только завершился optimize
  • https://t.me/clickhouse_ru
    который запрос?
  • rename table on cluster
  • https://t.me/clickhouse_ru
    обновляйтесь на 21.8.10.19
  • @BBRSOFF #243170 03:01 PM, 09 Nov 2021
    Почему optimize таблицы1 держал rename distributed таблицы 2?
  • Понял,спасибо
  • https://t.me/clickhouse_ru
    @datamanager #243172 03:07 PM, 09 Nov 2021
    Коллеги, всем огромное спасибо за помощь. Изучая присланные поимеры поймал просветление: select * from table where c1 in ( select c1 from table where <условие> order by <условие доп>) and c2 in ( select c2 from table where < условие> order by <условие доп). Работает. Но все-таки можно это сделать как то изящнее, с помощью массивоа напртмер?
  • https://t.me/clickhouse_ru
    это странное поведение. В чем разница MAP и 2 Array ? Вы как к Array обращаетесь?
    В общем я получил ускорение в 20 раз, сделав 20 пар Array, вместо 1 пары
  • @softbot_xxl #243174 03:15 PM, 09 Nov 2021
    value_arr[indexOf(key_arr, ‘key’)]
  • https://t.me/clickhouse_ru
    чудеса, MAP не отличается принципиально, они хранятся одинаково на диске

    я тестил пол года назад, мап проигрывал
    https://gist.github.com/den-crane/7a59c05db1c51631bd595900e44f3271
    Map benchm

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

  • @softbot_xxl #243176 03:24 PM, 09 Nov 2021
    Тупл хранит значение в двух колонках?
  • @softbot_xxl #243177 03:25 PM, 09 Nov 2021
    (я в коде не оч)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    да, это видно прямо в ls -l
  • https://t.me/clickhouse_ru
    @den_crane #243180 03:26 PM, 09 Nov 2021
    для каждого элемента тупла mrk, bin файлы
  • https://t.me/clickhouse_ru
    @den_crane #243181 03:26 PM, 09 Nov 2021
    tuple(a,b,c) это минимум 6 файлов
  • @softbot_xxl #243182 03:28 PM, 09 Nov 2021
    Ок, тогда может быть дело в дополнительных проверках для массива. has(keys, ‘x’) and values[indexOf(…)]
  • @softbot_xxl #243183 03:28 PM, 09 Nov 2021
    Т.к. ключа может и не быть.
  • https://t.me/clickhouse_ru
    так а зачем проверка? Ну и я обхожу массивы ArrayFilter потому что один ключ может быть несколько раз (у меня)
  • @softbot_xxl #243185 03:32 PM, 09 Nov 2021
    У нас один ключ - одно значение. Лямбда я не проверял, но на других кейсах производителность была не очень.
  • https://t.me/clickhouse_ru
    Предположим у меня один из двух узлов остановлен. Из двух реплик таблицы доступна только одна. Произвожу вставку данных на оставшийся узел, умеренными пачками, скажем раз в 10 секунд по несколько сотен или тысяч записей. Будут ли вновь образованные части таблицы укрупняться в рамках активной реплики до восстановления репликации?
  • https://t.me/clickhouse_ru
    конечно будут
  • https://t.me/clickhouse_ru
    да нет никакой разницы под капотом, map, arrayFilter, indexOf
  • https://t.me/clickhouse_ru
    Это хорошо, а то оказался в недоумении. Возможно у меня что-то заклинило в ZK, теперь уже не разберусь. Пришлось конвертировать реплицируемую таблицу в обыкновенную. Далее настрою репликацию заново.
  • https://t.me/clickhouse_ru
    есть тонкий момент, что если реплика хочет скачать парт с другой реплики и этот парт нужен для последовательного мержа, то да может быть проблема, но очень редкий corner case.
    и это решаемо. И в современных КХ, КХ сам это исправит
  • https://t.me/clickhouse_ru
    Может это значимо, по результатам сбоя в ZK в узле .../tables/{uuid}/01/replicas/{replica}/queue скопилось более 100 тыс. элементов для одной реплики и более 50 тыс. для другой.
  • https://t.me/clickhouse_ru
    @lrv_october #243193 03:45 PM, 09 Nov 2021
    Всем привет. Подскажите, пожалуйста, а кликхаус умеет только с unix timestamp in seconds работать? Я только две функции нашел, toDateTime и FROM_UNIXTIME и все работают с секундами, а хотелось бы из миллисекунд перевести в timestamp. Получается, только на 1000 делить, стандартных функций нет?
  • https://t.me/clickhouse_ru
    это ни при чем тут , надо смотреть таблицу system.replication_queue
  • https://t.me/clickhouse_ru
    а в чем разница ? intDiv ( , 1000 ) ,
    можно заморочится и перевести по другому, но в реальности это не про время вообще, это про числа

    тип DateTime64

    функции

    toUnixTimestamp64Milli
    toUnixTimestamp64Micro
    toUnixTimestamp64Nano
    fromUnixTimestamp64Milli
    fromUnixTimestamp64Micro
    fromUnixTimestamp64Nano¶
  • https://t.me/clickhouse_ru
    Похоже это представление и отражает очередь из ZK. В момент сбоя были те самые 100 тыс. записей.
  • https://t.me/clickhouse_ru
    нет никакой очереди в ZK все вообще не так
  • https://t.me/clickhouse_ru
    SELECT
    database,
    table,
    type,
    any(last_exception),
    any(postpone_reason),
    min(create_time),
    max(last_attempt_time),
    max(last_postpone_time),
    max(num_postponed) AS max_postponed,
    max(num_tries) AS max_tries,
    min(num_tries) AS min_tries,
    countIf(last_exception != '') AS count_err,
    countIf(num_postponed > 0) AS count_postponed,
    countIf(is_currently_executing) AS count_executing,
    count() AS count_all
    FROM system.replication_queue
    GROUP BY
    database,
    table,
    type
    ORDER BY count_all DESC
  • https://t.me/clickhouse_ru
    Спасибо. Да просто с приложения на андройде пишется в миллисекундах значение в базу, использовать fromUnixTimestamp64Milli будет читабельней, чем делить и потом оборачивать в FROM_UNIXTIME. В документации не нашел этих функций, видать искал плохо.
  • https://t.me/clickhouse_ru
    тут две проблемы.

    1. В КХ два типа для времени DateTime (секунды от 1970 - UInt32) и DateTime64 (фракции секунды). Естественно второй занимает в 2 раза больше места в среднем и в 2 раза медленее. Поэтому надо решить что будем хранить.

    2. ETL, когда передаете из приложения (или из ETL) время в миллисекундах вместо секунд, вы просто тратите электричество и bandwidth
  • https://t.me/clickhouse_ru
    Спасибо за запрос. Еще уточню. Из документации: "При репликации, по сети передаются только исходные вставляемые данные. Дальнейшие преобразования данных (слияния) координируются и делаются на всех репликах одинаковым образом."
    Отсюда делаю вывод, что при недоступности целевой реплики скопировать на нее исходные данные можно только сохранив эти данные в некоторой очереди и в исходными кусками. Как я понял, вы говорите, что слияние будет производиться до починки реплики. Полного понимания у меня пока нет.
  • https://t.me/clickhouse_ru
    Спасибо за развернутый ответ. Я вот в проде вижу, что тип у этого поля с датой Int64. Даже не беззнаковый тип. Возможно, есть смысл исправить.
  • https://t.me/clickhouse_ru
    нет, не совсем так.

    то что видно в system.replication_queue имеет мало отношения к /{replica}/queue потому что replication_queue это отображение памяти КХ и она пестраивается каждую секунду на основе данных из списка партов и данных из ЗК

    в ZK /{replica}/queue/ некоторое время в очереди будут добавляться команды, длина тех очередей ограничена

    SELECT *
    FROM system.merge_tree_settings
    WHERE name LIKE '%replicated_logs%'

    Query id: 47d194d0-8682-4421-a74a-9eafdfc6d4a2

    ┌─name────────────────────────┬─value─┬─changed─┬─description────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─type───┐
    │ max_replicated_logs_to_keep │ 1000 │ 0 │ How many records may be in log, if there is inactive replica. Inactive replica becomes lost when when this number exceed. │ UInt64 │
    │ min_replicated_logs_to_keep │ 10 │ 0 │ Keep about this number of last records in ZooKeeper log, even if they are obsolete. It doesn't affect work of tables: used only to diagnose ZooKeeper log before cleaning. │ UInt64 │
    └─────────────────────────────┴───────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────┘

    есть клинер который чистит https://github.com/ClickHouse/ClickHouse/blob/master/src/Storages/MergeTree/ReplicatedMergeTreeCleanupThread.cpp

    там есть логика , если реплика lost (неактивна) то чистить ее очередь.

    После долгого downtime реплика при старте знает что ее log_pointer сильно отстал от жизни, и ее queue/ почищена, и реплика начинает процедуру синка ее партов со списками партов в зукипере у других реплик, удаляет queue/ и начинает после синка с белого листа (таже самая процедура как при добавлении чистой реплики)

    клинер работает периодически, поэтому в зк в /queue/ может быть больше чем 1000

    у меня реплики периодически ломаются и иногда разрывается связь между датацентрами ( на часы) , иногда сервер выключен несколько часов, в 99% случаев это вообще не требует ручного вмешательства и никто из потребителей КХ не замечает что что-то не так.
  • https://t.me/clickhouse_ru
    [ ] marks optional paramters in a documentation

    https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form Optional items enclosed in square brackets: [<item-x>].
    Backus–Naur form

    In computer science, Backus–Naur form (/ˌbækəs ˈnaʊər/) or Backus normal form (BNF) is a metasyntax notation for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols. They are applied wherever exact descriptions of languages are needed: for instance, in official language specifications, in manuals, and in textbooks on programming language theory.

  • https://t.me/clickhouse_ru
    для compaсt партов хранятся нули, потому что в compaсt партах все колонки хранятся как одна
  • https://t.me/clickhouse_ru
    metadata is stored for 8 minutes after drop

    https://kb.altinity.com/engines/altinity-kb-atomic-database-engine/
  • https://t.me/clickhouse_ru
    этот парт есть в ЗуКипере.
    мутация назначается по данным ЗК.

    в современных КХ, сервер автоматически создает парт из 0 строк для таких потерянных партов и проблема решена
  • А современный насколько? У нас 21.8.8.1-altinity-stable
  • https://t.me/clickhouse_ru
    Надо просто понять что TZ это просто метаданные колонки (и даже не колонки в таблице) , а колонки select-а и insert-а

    JDBC драйвер 100500 раз переделали уже, в будущем JDBC драйвер будет показывать время в TZ колонки селекта а не в TZ jvm.
    но JDBC драйвер на самом деле ничего не показывает, он передает в java как число секунд, а java при рендеринге в строку, конвертирует в TZ jvm

    в КХ все значения DateTime лежат в UTC (число секунд от 1970), TZ это просто намек как парсить и рендерить строки.
    дефолтная TZ задается 3 способами, в конфиге, через env переменную TZ, через таймзону сервера (линукс)
  • И я правильно понял ваше сообщение что современный КХ эту ситуацию должен сам разрулить? Ибо мутация пару дней висела 😊
  • https://t.me/clickhouse_ru
    detach table / attach table попробуйте

    https://github.com/ClickHouse/ClickHouse/pull/25820
    в 21.8 есть уже Better handling of lost parts for ReplicatedMergeTree tables. Fixes rare inconsistencies in ReplicationQueue. Fixes #10368. #25820 (alesapin).
    Replace lost parts with empty parts instead of hacking replication queue by alesapin · Pull Request #25820 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    да правильно
  • https://t.me/clickhouse_ru
    @koshakm5 #243215 05:52 PM, 09 Nov 2021
    всем привет, делаю сейчас полную репликацию данных с одной ноды КХ на другую, хотел воспользоваться ограничением канала, появившимся в 21.7, но iftop показывает что утилизируется весь канал, может быть я что-то не так задал?
    <default>
    <max_memory_usage>20000000000</max_memory_usage>
    <load_balancing>random</load_balancing>
    <max_replicated_sends_network_bandwidth_for_server>500000000</max_replicated_sends_network_bandwidth_for_server>
    <max_replicated_fetches_network_bandwidth_for_server>500000000</max_replicated_fetches_network_bandwidth_for_server>
    </default>
  • https://t.me/clickhouse_ru
    @koshakm5 #243216 05:52 PM, 09 Nov 2021
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @koshakm5 #243217 05:55 PM, 09 Nov 2021
    оба сервера - 21.8.10.19
  • https://t.me/clickhouse_ru
    скорее всего нужен рестарт
  • https://t.me/clickhouse_ru
    @koshakm5 #243219 06:16 PM, 09 Nov 2021
    рестарт делал, обнаружил друю забавную вещь
  • https://t.me/clickhouse_ru
    @koshakm5 #243220 06:17 PM, 09 Nov 2021
    max_replicated_fetches_network_bandwidth_for_server: "100000000"
  • https://t.me/clickhouse_ru
    @koshakm5 #243221 06:17 PM, 09 Nov 2021
    вот такая цифра в настройках соотетствует примерно 800 мегабитам
  • https://t.me/clickhouse_ru
    @Mikhastos #243222 06:17 PM, 09 Nov 2021
    Подскажите, пожалуйста, как можно сделать так, чтобы в Табиксе пользователь видел только те базы, к которым ему прописан доступ? А остальные не видел. В мануале нашел только ограничение получения данных из таблицы...Если можно с примером. (Соло установка, не кластер) Спасибо
  • https://t.me/clickhouse_ru
    ??????

    100000000 / 1024 / 1024 * 8 = 762.939453125
  • https://t.me/clickhouse_ru
    @koshakm5 #243224 06:18 PM, 09 Nov 2021
    в общем работает, но интерпретацию цицры из конфига я не понял )
  • https://t.me/clickhouse_ru
    @den_crane #243225 06:18 PM, 09 Nov 2021
    а ОК, можно дописать в доку
  • https://t.me/clickhouse_ru
    похоже на правду )
  • https://t.me/clickhouse_ru
    >к которым ему прописан доступ

    а каким образом прописывали? XML ? SQL ?
  • https://t.me/clickhouse_ru
    Xml в users.xml
  • https://t.me/clickhouse_ru
    для XML не работает
  • https://t.me/clickhouse_ru
    В сторону sql settings копать?
  • https://t.me/clickhouse_ru
    show databases;
    ┌─name────┐
    │ arc │
    │ colddb │
    │ db │
    │ default │
    │ dict │
    │ dw │
    │ lf │
    │ system │
    │ test │
    │ test_g │
    └─────────┘

    create user test identified by 'pass1234';
    grant select on test_g.* to test;

    $ clickhouse-client -u test --password pass1234

    show databases;
    ┌─name───┐
    │ test_g │
    └────────┘
  • https://t.me/clickhouse_ru
    Спасибо!
  • 10 November 2021 (149 messages)
  • https://t.me/clickhouse_ru
    @1590549415 #243238 02:55 AM, 10 Nov 2021
    Materialized view aggregation field query why must declare, otherwise will report an error
  • https://t.me/clickhouse_ru
    дисковый кеш ведь и хранится в ОЗУ, мне кажется вы путаете с процессорным кешем, который имеет микроскопический размер
  • https://t.me/clickhouse_ru
    не будет тут бинарный поиск быстрее. я даже больше скажу, тут может быть дешевле сравнить элемент со всеми ключами вместо выхода из цикла при успехе :)
  • https://t.me/clickhouse_ru
    @it_haisenberg #243241 05:05 AM, 10 Nov 2021
    Не могу найти с какой версии в клике появился SELECT DISTINCT ON? Чёт на 20.8.18 не очень работает
  • https://t.me/clickhouse_ru
    @it_haisenberg #243242 05:06 AM, 10 Nov 2021
    Очень не работает, даже так я сказал бы)
  • https://t.me/clickhouse_ru
    @it_haisenberg #243243 05:07 AM, 10 Nov 2021
    Received exception from server (version 20.8.18):
    Code: 46. DB::Exception: Received from 192.168.100.14:9000. DB::Exception: Unknown function ON. Maybe you meant: ['or','in'].
  • https://t.me/clickhouse_ru
    Через год. В 21.8
    это тупо алиас на limit by
  • https://t.me/clickhouse_ru
    Вах спасибо ;) Переделал под limit by как хотел)
  • https://t.me/clickhouse_ru
    При распаковке утилизируется одна и та же область памяти (буфер декомпрессора), которая попадает в кеш. Соответственно, доступ к такой памяти осуществляется без задержек в отличие от чтения закешированных данных из прлизвольной области в ОЗУ. Поэтому выигрыш здесь может быть достаточно весомый, так как инструкции процессора не простаивают в ожидании поступления данных из озу, а получают их из кеша процессора.
  • https://t.me/clickhouse_ru
    сам процесс распаковки идёт медленней чтения из озу, поэтому ни о каком выигрыше, тем более в сотни раз, тут говорить не приходится
  • https://t.me/clickhouse_ru
    @konnectrl #243249 06:29 AM, 10 Nov 2021
    Я правильно понимаю, что изменения кодека сжатия будут применяться при мерджах данных, ну то есть при вставке в патрицию ?
    ALTER TABLE table_test MODIFY COLUMN column_test CODEC(ZSTD)
  • https://t.me/clickhouse_ru
    да, будет применяться, для новых партов
  • https://t.me/clickhouse_ru
    @konnectrl #243252 07:40 AM, 10 Nov 2021
    То есть чтобы изменить всё нужно OPTIMIZE TABLE table FINAL
  • https://t.me/clickhouse_ru
    Я проверил, да
  • https://t.me/clickhouse_ru
    ну вообще как бы бранч предикшен в CPU и спекулятивное исполнение (пока идет обработка данных из L1, идет подсос данных в L2 и L3 ... и если буфер действительно в CPU кеш пролазит, то за счет branch prediction идет подсос в cpu кеш и меньшее кол-во cpu cache miss соответственно общее время исполнения быстрее...
  • https://t.me/clickhouse_ru
    branch prediction на декомпрессии не играет существенной роли, кмк
  • https://t.me/clickhouse_ru
    @1695040889 #243257 08:01 AM, 10 Nov 2021
    и дело не в объемах, хитах и промахах, а в непредсказуемом потоке данных
  • @softbot_xxl #243258 08:22 AM, 10 Nov 2021
    Хотелось бы тестов, я тоже сомневаюсь, что общая компрессия даст какой-то буст за счёт локальности
  • https://t.me/clickhouse_ru
    @1695040889 #243262 09:06 AM, 10 Nov 2021
    а тесты - штука не быстрая, я зарядил на 100М записей, надо подождать
  • https://t.me/clickhouse_ru
    @edwvee #243264 09:16 AM, 10 Nov 2021
    Есть кликхаус версии v20.5.4.40-stable. Он работал стабильно больше года не считая редких перезагрузок сервера. Недавно он упал. Был поднят без проблем. Хочу узнать в чем может быть причина падения.
    1. Таблицы system.crash_log нет.
    2. В содержимом папки /var/log/clickhouse-server/ ничего обнаружить не удалось. Только clickhouse-server.log есть временной промежуток в который нет записей. Просто они перестают писаться резко на какой-то момент, и все.
    Не подскажите куда еще можно смотреть?
  • https://t.me/clickhouse_ru
    @nblagodarnyy #243265 09:25 AM, 10 Nov 2021
    Всем привет. Подскажите, пожалуйста, какой метод ClickHouseRowBinaryStream стоит взять для корректной записи в поле DateTime64(6) ? Я каких-то специфичных в последней версии не вижу. А writeDateTime под капотом берет UInt32.
  • https://t.me/clickhouse_ru
    Messages/kernel log? Вдруг там оом пришёл или ещё чёт отъехало
  • https://t.me/clickhouse_ru
    @1492547175 #243268 09:45 AM, 10 Nov 2021
    Привет. pull request 24921 refresh материализованного представления - запланирован в roadmap 2021. Какой сейчас есть способ обновить материализованное представление, если в исходной таблице поменялись данные?
  • https://t.me/clickhouse_ru
    Я удаляю MV и делаю по новой, но у меня таблица отдельно от MV
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #243269 #243270 09:56 AM, 10 Nov 2021
    плохое состояние базы получается в интервале времени от удаления старого до окончания создания нового. Наверное стоит новые данные писать в другую таблицу, а потом делать EXCHANGE TABLES
  • https://t.me/clickhouse_ru
    А у нас не постоянно льются данные
  • https://t.me/clickhouse_ru
    место на сервере есть?
    там должен быть еще /var/lib/clickhouse-server/clickhouse-server.err.log
    если вы никакие настройки не меняли и не отключали его
  • https://t.me/clickhouse_ru
    @edwvee ↶ Reply to #243272 #243273 10:04 AM, 10 Nov 2021
    там нет ничего относительно времени предполагаемого падения
  • @dnzhirnov #243274 10:10 AM, 10 Nov 2021
    коллеги, подскажите. нужно сделать последовательность выпуска продукции, марки в последовательности могут повторяться, важна хронология. Если я сделаю просто groupby по марке, то потеряю хронологию, а как сделать, чтобы при группировке учитывалась хронология с учетом повторяющихся марок?
  • https://t.me/clickhouse_ru
    groupArray попробуйте использовать для марок
  • Можно поподробнее, а то из оф. информации не совсем понятно
  • https://t.me/clickhouse_ru
    @konnectrl #243277 10:24 AM, 10 Nov 2021
    Например у вас есть Время, Марка в таблице.
    Вы пишите
    groupArray(Марка)
    а снизу group by (время) , и вы получаете последовательность марок
  • https://t.me/clickhouse_ru
    journalctl --xe -u clickhouse-server --no-pager --since="YYYY-MM-DD HH:mm:ss" --until="YYYY-MM-DD HH:mm:ss"| less

    вы уверены что время падения правильно определили?

    SELECT now() - uptime();
    проверьте
  • https://t.me/clickhouse_ru
    @edwvee #243279 10:33 AM, 10 Nov 2021
    Он не сразу поднялся
  • https://t.me/clickhouse_ru
    @edwvee #243280 10:34 AM, 10 Nov 2021
    Там какая-то чекалка-поднималка от админов
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #243271 #243281 10:42 AM, 10 Nov 2021
    Тут интереснее насколько постоянно они читаются. Разумеется если аналитики в одном часовом поясе, то проблемы нет.
  • https://t.me/clickhouse_ru
    Ссылка в запросах идёт на таблицу, а не на MV.
  • https://t.me/clickhouse_ru
    не очень понятно что за чекалка...
    но если у вас какой то кастомный сетап, может сначала надо разобраться в его деталях?
  • https://t.me/clickhouse_ru
    @edwvee #243285 10:52 AM, 10 Nov 2021
    я имею в виду, что не я сам поднимал и когда оно конкретно упало по аптайму от кликхаус сервера судить нельзя
  • https://t.me/clickhouse_ru
    @edwvee #243286 10:52 AM, 10 Nov 2021
    потому что какое-то время прошло просто так
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #243282 #243287 10:58 AM, 10 Nov 2021
    разумеется мы говорим о dest таблице с аггрегированными данными. Если пересоздание занимает час, а Аналитики сидят в Москве и SF, то после удаления таблицы они целый час будут страдать (точнее повышается вероятность, что они столкнутся с проблемами). В случае постоянно работающего сервиса все ещё хуже. Поэтому правильно делать - сначала создание новой таблицы, а потом exchange.
  • https://t.me/clickhouse_ru
    Ну когда я меняю саму табличку в MV, я так и делаю.
  • https://t.me/clickhouse_ru
    @serikzhilibayev #243289 11:35 AM, 10 Nov 2021
    Здравствуйте, можно ли просто удалить .bin файлы в папке distributed table?
  • @danyakurbatov #243291 12:10 PM, 10 Nov 2021
    Здравствуйте, использую табличную функцию s3:
    s3(path, [aws_access_key_id, aws_secret_access_key,] format, structure, [compression])
    Получаю ошибку:

    Code: 499, e.displayText() = DB::Exception: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Bad URI syntax: bad or invalid port number: 0 (version 21.8.3.44 (official build)): While executing S3 (version 21.8.3.44 (official build))
  • как url указываете?
  • @danyakurbatov #243293 12:13 PM, 10 Nov 2021
    s3://bucket_name/home_folder/data
  • @simpl1g #243294 12:13 PM, 10 Nov 2021
    s3('https://bucket/path’, ‘access_key’, ‘secret_key’, format)
  • https://t.me/clickhouse_ru
    можно. Но это незавершенные инсрты.
  • https://t.me/clickhouse_ru
    Это часть кх. Он сам запускается если его уронили или он упал.
  • https://t.me/clickhouse_ru
    @DarshilxD #243297 12:41 PM, 10 Nov 2021
    can anyone tell me how can i create a user which can be accessed via loadbalancer in altinity file
  • https://t.me/clickhouse_ru
    Нету datetime64? Странно.
    Вообще это decimal64. Можно писать как decimal64
  • https://t.me/clickhouse_ru
    @DarshilxD #243299 12:41 PM, 10 Nov 2021
    in k8s cluster
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    look to
    kubectl explain chi.spec.configuration.users

    https://github.com/Altinity/clickhouse-operator/blob/master/docs/custom_resource_explained.md#specconfigurationusers
    clickhouse-operator/custom_resource_explained.md at master · Altinity/clickhouse-operator

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/custom_resource_explained.md at master · Altinity/clickhouse-operator

  • @x0rr0 #243303 01:32 PM, 10 Nov 2021
    create table sale(ts DateTime('Europe/Moscow'))

    1. подскажите пожалуйста как так выходит что на выходе разные даты?
    2. ну и время в разных часовых поясах одинаковое?
  • Datagrip?
  • @x0rr0 ↶ Reply to #243304 #243306 01:34 PM, 10 Nov 2021
    да
  • ну тут в чате уже много раз проблема была обозначена, поищите по поиску, скорее всего в jdbc драйвере ошибка.
  • https://t.me/clickhouse_ru
    @121548504 #243308 01:48 PM, 10 Nov 2021
    Добрый день. Подскажите. Не получается изменить параметр max_ast_elements через запись в users.xml. Какое бы значение не задавал дефолтное в 50000 не меняется. Рестарт не помогает.
  • вы же в профиль юзера добавляете?
  • https://t.me/clickhouse_ru
    @121548504 #243310 01:52 PM, 10 Nov 2021
    <profile><default>
  • profiles*
    ну значит все должно быть верно, и насколько я помню, то перезагрузка не нужна
  • https://t.me/clickhouse_ru
    спасибо.
  • не за что, если не уверены, можете показать конфиг, тут есть люди, которые могут подсказать)
  • https://t.me/clickhouse_ru
    реально спасибо. опечатлся в профилях
  • https://t.me/clickhouse_ru
    все же очевидно.

    Когда в jdbc мы имеем число секунд + tz Moscow мы можем применить TZ и перевести это в другую дату
    Когда в jdbc мы имеем число дней +tz Moscow , как мы можем применить TZ ? мы не знаем времени, мы не знаем надо менять дату или нет.
  • https://t.me/clickhouse_ru
    @DarshilxD #243316 02:01 PM, 10 Nov 2021
    DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.

    i have 4 pods 2 replicas and 2 shards i dumped data into distributed table and whenever i try to query data via disteibuted table it gives this error with 3 pods and one of the pod gives query outpu succsfully

    i try to query from loadbalancer ip so it connects to diffrent pods each time

    how can i solve this error i think they want default password but i havent given any password for default anywhere
  • https://t.me/clickhouse_ru
    @DarshilxD #243317 02:02 PM, 10 Nov 2021
    i am using altiny oprator
  • https://t.me/clickhouse_ru
    did you change password for default user?
  • https://t.me/clickhouse_ru
    @DarshilxD #243319 02:09 PM, 10 Nov 2021
    no i didnt
  • @x0rr0 ↶ Reply to #243315 #243321 02:20 PM, 10 Nov 2021
    нууу, так как-то не честно ведь:
    1. в основе расчета дата со временем;
    2. принимает 2е значение и не жужжт toDate(ts,'Europe/Moscow')
  • https://t.me/clickhouse_ru
    эм. Вы неправильного хотите. Вы хотите чтобы часть делал Сервер и отрезал время, а конвертирует у вас Клиент которому время уже отрезали.

    просто конвертируйте прямо на сервере тогда - toString( , 'Moscow')
  • @x0rr0 ↶ Reply to #243322 #243323 02:26 PM, 10 Nov 2021
    я думал (и пока продолжаю так думать) что запрос выполняется на сервере, и там все данные в секундах и с TZ - поэтому ожидаю от сервера верно вернет, а клиент да, уже может переврать при отображении, но т.к. дата (наверно строкой пришла) то тут нечего перевирать.
  • https://t.me/clickhouse_ru
    OK. какая таймзона у компа и что возвращает через jdbc

    SELECT
    timezone(),
    toDateTime('2021-01-01 23:00:00', 'UTC') AS ts,
    toDateTime(ts, 'Europe/Moscow') AS dt,
    toDate(ts, 'Europe/Moscow') AS t

    Query id: de2264f9-da78-4565-8f0b-bb5a5fa89dfa

    ┌─timezone()─┬──────────────────ts─┬──────────────────dt─┬──────────t─┐
    │ Etc/UTC │ 2021-01-01 23:00:00 │ 2021-01-02 02:00:00 │ 2021-01-02 │
    └────────────┴─────────────────────┴─────────────────────┴────────────┘
  • https://t.me/clickhouse_ru
    @den_crane #243325 02:30 PM, 10 Nov 2021
    Я вижу через JDBC

    timezone() ts dt t
    Etc/UTC 2021-01-01 19:00:00 2021-01-01 19:00:00 2021-01-02

    и это правильно.
  • @549781487 #243326 02:30 PM, 10 Nov 2021
    Всем привет! Подскажите пожалуйста, а как можно посмотреть прогресс выполнения мутации? Уже достаточно давно висит в таблице system.mutations c is_done=0. В таблице processes пусто. Либо как понять, почему мутация не стартанула? Заранее спасибо!
  • @x0rr0 ↶ Reply to #243324 #243327 02:31 PM, 10 Nov 2021
    и toString(ts) он мне вместе со временем конвертит :) а мне собственно только дата нужна, т.е. еще и из стринга нужно будет вырезать кусок?
  • https://t.me/clickhouse_ru
    OK. какая таймзона у компа и что возвращает через jdbc

    SELECT
    timezone(),
    toDateTime('2021-01-01 23:00:00', 'UTC') AS ts,
    toDateTime(ts, 'Europe/Moscow') AS dt,
    toDate(ts, 'Europe/Moscow') AS t
  • https://t.me/clickhouse_ru
    в system.mutation и system.merges
  • @x0rr0 ↶ Reply to #243328 #243330 02:33 PM, 10 Nov 2021
    Europe/Moscow,2021-01-01 23:00:00,2021-01-01 23:00:00,2021-01-02
  • https://t.me/clickhouse_ru
    аааа,

    какая таймзона у компа === ВАШЕГО ДЕСКТОПА
    вы сами в какой TZ ?
  • @x0rr0 ↶ Reply to #243331 #243332 02:34 PM, 10 Nov 2021
    MSK (Europe/Moscow)
  • https://t.me/clickhouse_ru
    тогда какая-то лажа действительно.
    У JDBC есть настройка use_server_time_zone_for_dates, она false должна быть
  • @x0rr0 ↶ Reply to #243333 #243334 02:37 PM, 10 Nov 2021
    вот так на CH еще у меня
  • https://t.me/clickhouse_ru
    а если в true поставить меняется?
  • @x0rr0 ↶ Reply to #243336 #243337 02:44 PM, 10 Nov 2021
    тут вроде стало верно
  • https://t.me/clickhouse_ru
    @den_crane #243338 02:44 PM, 10 Nov 2021
    для меня например

    SELECT
    toDateTime('2021-01-01 23:00:00', 'UTC') AS ts,
    toDateTime(ts, 'Europe/Moscow') AS dt,
    toDate(ts, 'Europe/Moscow') AS t

    2021-01-01 19:00:00.0 --- время в атлантической канаде
    2021-01-01 19:00:00.0 --- время в атлантической канаде
    2021-01-02 --- дата в москве

    и это все ожидаемо
  • https://t.me/clickhouse_ru
    какая версия jdbc ?
  • @x0rr0 ↶ Reply to #243339 #243340 02:45 PM, 10 Nov 2021
    0.3.1
  • @x0rr0 ↶ Reply to #243338 #243342 02:48 PM, 10 Nov 2021
    проблема в крайних датах после 21:00 когда TZ выкидывает дату на следующий день (19:00 будет все ок для TZ MSK)
  • @x0rr0 ↶ Reply to #243336 #243343 02:49 PM, 10 Nov 2021
    тут стало еще печальнее
  • https://t.me/clickhouse_ru
    @EyeShield77 #243345 02:58 PM, 10 Nov 2021
    Друзья, что подскажете по замене/как заставить работать pandas to_sql?

    Сама по себе она не справляется с созданием таблицы. А интерес именно в избегании прописывания способа хранения, иногда просто хочется загнать табличку в базу (MergeTree() без ключей с автоматически определяемыми типами), чтобы с ней уже поработали другие люди или BI-инструмент.
  • https://t.me/clickhouse_ru
    ну возьмите 0.2.6 и проверьте на нем
  • @x0rr0 ↶ Reply to #243346 #243347 03:12 PM, 10 Nov 2021
    пробовал эти - другие jetBrains не видит
  • https://t.me/clickhouse_ru
    а попробуйте в dbeaver с тем же 0.3.1
  • @x0rr0 ↶ Reply to #243348 #243349 03:23 PM, 10 Nov 2021
    тут только 0.2.6 видит из коробки. и ответ похож на правду:
    toString(ts) |ts |toTypeName(ts) |toDate(ts, 'Europe/London')|toDateTime(ts, 'Europe/London')|toDate(ts, 'Europe/Moscow')|toDateTime(ts, 'Europe/Moscow')|
    -------------------+-----------------------+-------------------------+---------------------------+-------------------------------+---------------------------+-------------------------------+
    2021-11-09 21:16:54|2021-11-09 21:16:54.000|DateTime('Europe/Moscow')| 2021-11-09| 2021-11-09 21:16:54.000| 2021-11-09| 2021-11-09 21:16:54.000|
  • @x0rr0 ↶ Reply to #243348 #243350 03:27 PM, 10 Nov 2021
    в dbeaver на 0.3.1 МСК => Ок, Лондон не Ок - они равны - все как будто с TZ MSK
  • https://t.me/clickhouse_ru
    вас невозможно понять, Лондон это что? Вы у себя у компа в винде поставили Лондон?

    внимательно перечитайте вот это https://t.me/clickhouse_ru/243338
    Denny Crane [Starship Captain at Altinity (NB,Canada)] in ClickHouse не тормозит

    для меня например SELECT toDateTime('2021-01-01 23:00:00', 'UTC') AS ts, toDateTime(ts, 'Europe/Moscow') AS dt, toDate(ts, 'Europe/Moscow') AS t 2021-01-01 19:00:00.0 --- время в атлантической канаде 2021-01-01 19:00:00.0 --- время в атлантической канаде 2021-01-02 --- дата в москве и это все ожидаемо

  • @x0rr0 ↶ Reply to #243351 #243352 03:29 PM, 10 Nov 2021
    SELECT toString(ts), ts, toTypeName(ts), toDate(ts,'Europe/London'), toDateTime(ts,'Europe/London'), toDate(ts,'Europe/Moscow'), toDateTime(ts,'Europe/Moscow')
  • https://t.me/clickhouse_ru
    ну так это логично. Объясняю еще раз.

    SELECT
    toDateTime('2021-01-01 23:00:00', 'UTC') AS ts,
    toDateTime(ts, 'Europe/Moscow') AS dt,
    toDate(ts, 'Europe/Moscow') AS d


    ts: 2021-01-01 19:00:00
    dt: 2021-01-01 19:00:00
    d: 2021-01-02

    с сервера мне внутрь в jdbc приходит число 1609542000 -- это UTC и конвертируется в мою таймзону в макоси == 2021-01-01 19:00:00
    с сервера мне внутрь в jdbc приходит число 18629 -- это число дней от 1970 года, это 2021-01-02
  • @x0rr0 ↶ Reply to #243353 #243354 03:38 PM, 10 Nov 2021
    Дааа! я уже вот так проверил и понял toString(toDateTime(ts,'Europe/London')) - спасибо!!!
  • https://t.me/clickhouse_ru
    @den_crane #243355 03:43 PM, 10 Nov 2021
    Мейнтенер jdbc собирается кстати это все изменить. И передавать в java тип time с TZ 1609542000+Europe/Moscow.
    Проблема в том что каждое приложение само должно решить как показывать 1609542000+Europe/Moscow,
    dbgip может начать показывать в таймзоне Канады и снова покажет 2021-01-01 19:00:00 ,
    а dbeaver захочет делать такжк как КХ клиент и будет показывать 2021-01-01 23:00:00
  • https://t.me/clickhouse_ru
    интересно, мы пишем как Long, но у нас DateTime64(3)
  • https://t.me/clickhouse_ru
    переходы здесь вообще не при чём. мы либо читаем из памяти уже разжатые данные, либо читаем сжатые и распаковываем целый блок перед обработкой

    скорость памяти на линейное чтение - 100-200 ГБ/с
    скорость распаковки LZ4 - скажем 2.5 ГБ/с на ядро
    итого 20 ядер могут распаковать 50 ГБ/с, т.е. даже потратив все вычислительные ресурсы, мы не получим той скорости, что при чтении готовых распакованных данных

    хотя для integer compression с использованием simd распаковка может быть гораздо быстрее

    и как я понимаю, даже при медленной распаковке выгодней хранить данные сжатыми, чтобы их больше влезло в озу
  • https://t.me/clickhouse_ru
    @den_crane #243361 06:23 PM, 10 Nov 2021
    DateTime64 это Decimal, а Decimal это просто кол-во фракций, то есть для Decimal64(3) .001 хранится как 1, т.е. для DateTime64(3) это одна милисекунда.

    echo "select toDecimal64('1636568096.195',3) format RowBinary"|clickhouse-client |hexdump
    0000000 5dc3 0b0f 017d 0000
    0000008

    echo "select toDateTime64('2021-11-10 18:14:56.195',3) format RowBinary"|clickhouse-client |hexdump
    0000000 5dc3 0b0f 017d 0000
    0000008

    echo "select toUnixTimestamp64Milli(toDateTime64('2021-11-10 18:14:56.195',3)) format RowBinary"|clickhouse-client |hexdump
    0000000 5dc3 0b0f 017d 0000
    0000008

    в смысле в RowBinary это один и тот же набор байт.
  • https://t.me/clickhouse_ru
    Здрасте

    https://www.microway.com/knowledge-center-articles/performance-characteristics-of-common-transports-buses/

    100-200 это минимум 6-8 канальная память и машина может иметь несколько сотен тредов в таком случае.
    Performance Characteristics of Common Transports and Buses - Microway

    Page Discussion History Articles > Performance Characteristics of Common Transports and Buses Memory The following values are measured per CPU socket. They must be doubled or quadrupled to calculate the total memory bandwidth of a multiprocessor workstation or server. For … Continue reading →

  • https://t.me/clickhouse_ru
    так сейчас все серверные платформы имеют 6-8 каналов, 4 канала - это уже удел hedt, нет?

    если взять 64 ядра по 2.5 ГБ/с - это будет 160 ГБ/с, как раз скорость ОЗУ на такой машинке. вероятно, с учётом SMT будет раза в полтора больше. но ресурсов на вычисления уже не будет оставаться

    если 2 cpu - то как я понимаю, будет и два 8-канальных контроллера памяти, они же в cpu встроены
  • https://t.me/clickhouse_ru
    @den_crane #243364 06:52 PM, 10 Nov 2021
    ГБ/с это что? биты или байты ?
  • https://t.me/clickhouse_ru
    Обычно если "Б" большая то байты, а если маленькая то биты
  • https://t.me/clickhouse_ru
    байты. я придерживаюсь той же религии, что и Максим :)
  • всякие подсчёты с шинами и попугаями это очень большая теория. те же 64 ядра - там как минимум 4 нума нод... стоит одному потоку читать данные "неоттуда" и все уже в разы хуже.
    сидеть и просто умножать нельзя... оно вообще не так работает (разве что если вы тупо параллельные матем. подсчёты не делаете)
  • @dj_mixer #243368 07:08 PM, 10 Nov 2021
    я так долго читал эту переписку и до сих пор не понял как uncompressed cache может быть выгодней в общем случае, учитывая что колоночные данные обычно сжимаются минимум 5-10 раз. есть конечно 5% случаев когда данных так мало что оно все влезает, но тогда смысла использовать КХ не так много... либо данные так ужасно сжимается (тут было у человека когда после мердж общий размер увеличивался), но в основном всегда лучше иметь больше данных в кеше ФС.
  • https://t.me/clickhouse_ru
    Если берем планки по 2666MHz, то там уже 170 для 8 каналов в теории, а на практике судя по этой таблице будет еще меньше на 30ГБ

    Плюс подозреваю, тк кх данные все таки не в /dev/null пишет, то "параллельная" запись в память может чтение замедлять.
  • https://t.me/clickhouse_ru
    @unamedrus #243370 07:12 PM, 10 Nov 2021
    А вообще вроде была либо статья на эту тему, либо видео от авторов кх.

    Они там объясняли почему LZ4 почти "не тормозит"
  • https://t.me/clickhouse_ru
    @yaski #243371 07:12 PM, 10 Nov 2021
    Изза чего может быть такое? Если вызываю только select то работает нормально. Если в составе View то происходит ошибка "Cannot detect left and right JOIN keys. JOIN ON section is ambiguous.: While processing service_id = t2.id. (INVALID_JOIN_ON_EXPRESSION) (version 21.10.2.15 (official build))
    "
  • https://t.me/clickhouse_ru
    @den_crane #243372 07:12 PM, 10 Nov 2021
    надо делать либо бакеты и хранить куски Map в разных файлах
    либо делать Native/Parquet и хранить Map как подколонки ( последовательности key из разных строк ) с возможностью прыгать в следущую дощечку (как в compact формате)
  • https://t.me/clickhouse_ru
    view не поддерживают алиАсы таблиц, пишите без алиасов
  • https://t.me/clickhouse_ru
    @yaski #243374 07:14 PM, 10 Nov 2021
    алиасы имеется ввиду конструкция AS?
  • https://t.me/clickhouse_ru
    как бы её найти? я видел только об ускорении распаковки. хотя если речь о том, что лучше хранить в озу в 5 раз больше данных и постоянно разжимать их - то это и так понятно
  • https://t.me/clickhouse_ru
    @unamedrus #243376 07:17 PM, 10 Nov 2021
    Мне кажется, что если научить кх доставать только определенные ключи на моменте "расжатия" или создания колонки мапы, то этого уже будет достаточным для 90% случаев.

    Те подобный запрос
    SELECT map['aa']

    Не будет полностью собирать всю мапу, а только один ключ.
  • https://t.me/clickhouse_ru
    @yaski ↶ Reply to #243373 #243377 07:17 PM, 10 Nov 2021
    а всё понял это имя для джоина
  • https://t.me/clickhouse_ru
    @yaski #243378 07:17 PM, 10 Nov 2021
    убрал работает спасибо
  • https://t.me/clickhouse_ru
    да, это теоретический лимит производительности, на практике кпд<100%

    я исхожу из того, что данные распаковываются кусками и тут же употребляются, так что дальше L2$ они не провалятся
  • https://t.me/clickhouse_ru
    последний подсчёт относится к наиболее выгодному для lz4 варианту - когда число ядер, делённое на число каналов, максимально - один сокет с 64 ядрами и 8 каналами озу. с учётом кпд озу, скорость линейного чтения будет заметно меньше 200 ГБ/с
  • Возьмите процессор, собственно только эпики есть 64 сейчас. Они внутри поделены на ccp. Посмотрите сколько там нума нод. И посмотрите тесты реальные по времени доступа и пропускной способности когда данные разбросаны..
  • https://t.me/clickhouse_ru
    насколько я в курсе, у последних эпиков 8 чипов с ядрами и 1 чип с контроллером памяти. это одна нума нода, 8-канальная, на все 64 ядра. разве не так?
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #243383 07:33 PM, 10 Nov 2021
    в первом поколении было иначе
  • https://t.me/clickhouse_ru
    Необычные случаи оптимизации производительности на примере ClickHouse / Алексей Миловидов (Яндекс)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- HighLoad++ Весна 2021 Крупнейшая профессиональная конференция для разработчиков высоконагруженных систем 17 и 18 мая 2021. Москва, Крокус-Экспо Тезисы и презентация: https://www.highload.ru/spring/2021/abstracts/7653 Правда ли, что распаковать данные — быстрее, чем просто скопировать их? Ответ: "нет и да", а вообще всё сложнее. Как быстрее всего транспонировать Structure of Arrays в Array of Structures и зачем это нужно? Как лучше читать файлы — read, O_DIRECT, mmap, io_uring? Ответ снова нетривиален. Почему MergeTree-таблицы в ClickHouse могут работать лучше, чем in-memory-таблицы? ... -------- Нашли ошибку в видео? Пишите нам на support@ontico.ru

  • Это виртуально объединено (можно в биосах выставлять). Физически задержки разные. Межсокетные больше. Внутрисокетные тоже разные. Любой дев гайд под амд смотрите ну или на форумах
  • https://t.me/clickhouse_ru
    в биосе можно выставлять для разных сокетов или для одного? вы в курсе, что архитектура менялась - у первого поколения эпиков в одном сокете была numa, у нынешнего все 8 каналов памяти подцеплены к одному i/o чипу?

    далее, для наших расчётов интересны только соотношение числа ядер к числу каналов памяти

    numa вносит сложности в управление данными, но нельзя сказать что она однозначно даёт выигрыш наличию или отсутствию сжатия
  • Да там их 4 (контроллера). И только один из этих четырёх локальный.
  • https://t.me/clickhouse_ru
    давайте всё же уточним, про какое поколение epyc идёт речь
  • Rome, 2
  • https://t.me/clickhouse_ru
    AMD Rome Second Generation EPYC Review: 2x 64-core Benchmarked

    Just in case you have missed it, in our microarchitecture analysis article Ian has explained in great detail why AMD claims that its new Zen2 is significantly better architecture than Zen1:

  • 😊 я устал, Я ухожу
  • https://t.me/clickhouse_ru
    да, там в других комментах говорится про 25% разницу во времени доступа. признаю, я этого не знал. но к использованию lz4 это отношения не имеет, поскольку нам важна не latency, а bandwidth
  • Latency тоже влияет. Вы же не будете читать одним махом весь кеш же. Поэтому в реальных нагрузках и нет по 200ГБ/с. И еще учитывайте что вы подразумеваете что данные размазаны равномерно. В общем можете колоться и пробовать. Может в вашем случае и будет толк. Но пока таких не наблюдалось.
  • @1996868869 #243395 08:24 PM, 10 Nov 2021
    Так latency вроде в районе 40-50 наносекунд в лучшем случае, разве нет?
  • https://t.me/clickhouse_ru
    latency не влияет, поскольку из памяти просто читается несколько десятков КБ последовательно и распаковывается уже в кеше cpu

    пробовать я ничего не буду, поскольку я спец по низкоуровневой оптимизации и архитектуре cpu, даже не по dbms и тем более не кликхаусу и его эксплуатации
  • https://t.me/clickhouse_ru
    да. для серверов типично 100
  • Latency обратно пропорционально зависит от частоты RAM, на серверах в основной массе это 2666 МГц DDR4
  • https://t.me/clickhouse_ru
    нет, latency особо не меняется уже десятилетия, поскольку зависит от физических возможностей памяти. рост частоты позволяет увеличить b/w, а для latency просто увеличивают число циклов. вы не поверите, но в ddr1 оно было всего несколько тактов, тогда как сейчас в районе 20
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #243400 08:30 PM, 10 Nov 2021
    но при этом у серверных cpu контроллер памяти оптимизирован в сорону большего числа одновременных запросов, а у десктопных - на минимизацию latency
  • Хм, очень интересно, огромное Вам спасибо за замечание
  • https://t.me/clickhouse_ru
    банальным поиском можно найти репринты byte, pc week, pc magazine за 80-е и в них рекламные объявления о продаже памяти 100-150 ns с 0 wait states

    в начале 80-х у нас был 8088 с 8-битной шиной памяти

    в середине 90-х - пентиум с 64-битной шиной и edo-памятью с latency < 100 ns

    в конце 90-х - 64-битная sdr-100 память, т.е. 100М/с транзакций, при том что latency была всё те же 50-100 нс

    с тех пор в десктопах перешли только на 128-битную память, зато ddr1...ddr5 удваивали число байт, передаваемых за единицу времени. всё это стало возможно, поскольку микросхемы, передающие данные по шине, масштабируются по частоте так же, как сами процессоры, а вот память - хрен

    эту штуку ещё в конце 90-х назвали memory wall, и с тех пор все эти уровни кешей приобрели особую важность, cpu сейчас выживают только за счёт кешей, и gpu отличаются от низ в первую очередь отсутствием серьёзного кеширования
  • Хм, спасибо огромное, буду знать😉😎
  • вспомнил наконец где я видел измерение.
    ну вот мр. миловидов пробовал уже
    Т.е. некомпрессед получается выгодней когда не все потоки процессора читают (чтобы увеличить max bw per core).

    https://news.ycombinator.com/item?id=25928020

    Using LZ4 can easily improve performance even if all data reside in memory.
    This is the case in ClickHouse: if data is compressed, we decompress it in blocks that fit in CPU cache and then perform data processing inside cache; if data is uncompressed, larger amount of data is read from memory.

    Strictly speaking, LZ4 data decompression (typically 3 GB/sec) is slower than memcpy (typically 12 GB/sec). But when using e.g. 128 CPU cores, LZ4 decompression will scale up to memory bandwidth (typically 150 GB/sec) as well as memcpy. And memcpy is wasting more memory bandwidth by reading uncompressed data while LZ4 decompression reads compressed data.
  • 11 November 2021 (134 messages)
  • @githubreleases_bot #243407 b o t 12:37 AM, 11 Nov 2021
    ClickHouse/ClickHouse description changed: v21.11.3.6-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.11.3.6-stable
    Release notes:
    ClickHouse stable release v21.11.3.6-stable
    Release v21.11.3.6-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.11.3.6-stable

  • @549781487 #243409 06:08 AM, 11 Nov 2021
    Всем привет! В случае, если при массивных инсертах закончилось место на диске default и теперь ловим ошибку "no space left on device while executing parallelformattingOutputFormat, cannot write to file /var/lib/clickhouse/tmp", можно ли пока в качестве скорой помощи на диске что-то руками почистить? Или только объём диска расширять? Есть ли какие-то правила по расчёту объёма диска default? Заранее всем спасибо за помощь!
  • можете начать с логов... КХ их хранит 10 штук по 1Г вроде.
    вообще лучше иметь свободное место которое покроет все вставки + мерджи + спиллы (если будут).
  • Спасибо! А какие логи точно можно безболезненно снести? Это в /var/log файлики с расширением .log ?
  • @dj_mixer #243412 06:14 AM, 11 Nov 2021
    /var/log/clickhouse-server/*.gz
  • Огромное спасибо!
  • @dj_mixer #243414 06:15 AM, 11 Nov 2021
    но вообще если поискать с помощью du, у вас выйдет какойнить локальный дам гигов на 30, его и удалите
  • @dj_mixer #243415 06:15 AM, 11 Nov 2021
    т.е. это вообще ни разу не решение...
  • Да, это больше скорая медицинская помощь, чтобы хоть пациент в чувство пришёл. А после уже наверное будем диск расширять и разбираться, что именно привело к такой беде
  • Посмотрела-у нас эта папка весит 4 Кб, и вообще в папке /var/log ничего криминально огромного нет. Может в какой другой директории можно что снести?
  • du -sh / рекурсивно
  • Ещё размер таблиц trace_log и query_log в system гляньте
  • https://t.me/clickhouse_ru
    @kirilldikalin #243421 08:20 AM, 11 Nov 2021
    Всем привет!
    У меня есть схема выгрузки с типами
    LongType()),
    IntegerType()
    StringType()
    TimestampType()
    Они были добавлены from pyspark.sql.types import ShortType, IntegerType, LongType, StringType, TimestampType
    и мне нужно закинуть эту выгрузку в кликхаус, какие типы указывать вместо этих при написании схемы для создания таблицы?
  • https://t.me/clickhouse_ru
    @Mike_Er #243424 08:29 AM, 11 Nov 2021
    Добрый день, в каталогах /data/DB/TABLE/detached накопились приличные объемы данных, на разных шардах и репликах по-разному везде. Внутри каталоги виде ignored_*, clone_*, detached_*.
    Руками attach/detach не делаем (и не делали), т.е. это результат жизни КХ. Вопрос в чем - можно это все удалить? На одном из серверов объем этого каталога больше, чем нужных данных.
  • @110248354 #243425 08:33 AM, 11 Nov 2021
    Коллеги, просвятите, как организовать хранение результатов запросов для последующего использования в других запросах? Есть база метрик, хотелось бы иметь суточные срезы статистики, чтобы не выполнять их многократно позднее
  • https://t.me/clickhouse_ru
    @724279396 #243426 08:46 AM, 11 Nov 2021
    Что то бошку ломаю ничего придумать не могу, помогите пожалуйста
    ребят как у меня есть 4 поля: время, камера и 2 колонки с координатами, нужно вывести для каждой камеры последнее время, когда обновлялись координаты, как это можно сделать?
  • https://t.me/clickhouse_ru
    select max(change_datetime), camera_id from t group by camera_id
  • https://t.me/clickhouse_ru
    А где взять change_datetime? У меня же просто время
  • https://t.me/clickhouse_ru
    SELECT id, max(changingDate) FROM (
    SELECT min(date) changingDate, id FROM t GROUP BY id, coord1, coord2
    ) GROUP BY id
  • https://t.me/clickhouse_ru
    Сейчас попробую
  • https://t.me/clickhouse_ru
    Если я все правильно понял, то это гениально
  • https://t.me/clickhouse_ru
    Получается мы формируем группу камера-координаты и ищем мин время когда произошло изменение либо камеры либо координат (назовем это "переключение"), а потом группируем камеры и находим самое позднее переключение, но уже координаты
  • https://t.me/clickhouse_ru
    @maxim_zmushko #243433 09:12 AM, 11 Nov 2021
    Последнее переключение по группе параметров id-coord1-coord2, у камеры же идентификатор не может меняться?
  • https://t.me/clickhouse_ru
    Не может
  • https://t.me/clickhouse_ru
    @maxim_zmushko #243435 09:13 AM, 11 Nov 2021
    Тогда похоже это то что надо.
  • https://t.me/clickhouse_ru
    Да, похоже на то, спасибо большое! А я лез куда то в оконные функции, а оно вот как элегантно получилось!
  • https://t.me/clickhouse_ru
    @art_mir #243438 10:11 AM, 11 Nov 2021
    Всем привет, может кто-то сталкивался, я гружу данные КХ через ODBC в pbi, движок таблицы replacingmergetree, возможно ли как-то грузить финальные данные, по типу select * from test final?
  • @1063161973 #243439 10:13 AM, 11 Nov 2021
    Добрый день.
    Установил новую версию КХ и при работе через HTTP получаю ошибку 501 без доп.информации, а в файле логов есть сообщение: "Cannot print extra info for Poco::Exception (version 21.11.3.6)"
    При этом в интерфейсе DBeaver через JDBC данные на сервере отображаются. Как можно решить проблему с HTTP ?
  • https://t.me/clickhouse_ru
    Сделай View и селекти с неё)
  • https://t.me/clickhouse_ru
    Спасибо, хороший вариант
  • @anttoon #243442 11:24 AM, 11 Nov 2021
    Подскажите пожалуйста
    Engine RabbitMQ
    создаю таблицу, в settings указываю ```rabbitmq_queue_settings_list = 'x-max-length=1048545'``` (потому-что очередь уже создана с этим параметром)
    Ошибка DB::Exception: Unknown setting rabbitmq_queue_settings_list: for storage RabbitMQ (version 21.3.18.4 (official build))
    с какой версии поддерживается параметр rabbitmq_queue_settings_list для движка RabbitMQ
  • https://t.me/clickhouse_ru
    @natomist #243443 11:24 AM, 11 Nov 2021
    Всем привет. Мне дали доступ к только к базе данных system. Я надеялся, что этого доступа достаточно чтобы делать запросы в таблицы tables и parts.
    Возможно ли в Clickhouse выдать гранты так чтобы у меня был свободный доступ ко всем данным в system, но не к пользовательским данным?
  • На версии 21.11.3.6 успешно работают HTTP GET запросы, с POST - проблема. Сервер КХ возвращает 501-ю ошибку
  • @1063161973 #243445 11:39 AM, 11 Nov 2021
    До обновления версии POST работал нормально. Может настройка какая-то новая появилась ?
  • https://t.me/clickhouse_ru
    @386851661 #243446 11:58 AM, 11 Nov 2021
    Добрый день. В базе (не кликхаус) есть столбец с датой, но тип у него явно не даты....
    Как в запросе преобразовать этот столбец с типом дата?
    Пробовала cast(столбец as date) - не получается((
  • https://t.me/clickhouse_ru
    Type Conversion | ClickHouse Documentation

    Type Conversion Functions Common Issues of Numeric Conversions When you convert a value from one to another data type, y

  • https://t.me/clickhouse_ru
    он там еще может в теле запроса текст ошибки отдать, посмотрите на него
  • https://t.me/clickhouse_ru
    а как именно вам его дали? через RBAC?

    или как то по другому?

    ну то есть сделать пользователя у которого только SELECT права на system.*
    вполне реально

    версия clickhouse какая?
  • смотрел, тело ответа - пустая строка, код ошибки 501
  • https://t.me/clickhouse_ru
    @sibbarb #243451 12:40 PM, 11 Nov 2021
    Всем привет, коннекчу питон и кликхаус через pandahouse
    и какой бы я запрос не сделал, ошибки плюс мину похожие на эту , подскажите как вылечить
  • https://t.me/clickhouse_ru
    думаю стоит задать вопрос автору https://github.com/kszucs/pandahouse/issues
    как сделать поддержку Decimal
    Issues · kszucs/pandahouse

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

  • https://t.me/clickhouse_ru
    @sidadmin #243453 12:49 PM, 11 Nov 2021
    Здравствуйте, очень сильно разрослась таблица, решил настроить мув старых\холодных данных в s3.
    Создал такую таблицу:
    create table new
    (
    id UInt64,
    key1 String,
    key2 String,
    created DateTime,
    created_date Date

    )
    engine = MergeTree
    partition by created_date
    ORDER BY (key1, key2)
    TTL toStartOfDay(created, 'UTC') + interval 1 year to volume 's3'
    SETTINGS storage_policy = 'tiered';

    перегнал туда данные со старой таблицы (~500GB), запросы по таблице работают, но сама таблица (/var/lib/clickhouse-server/data/new) весит 60KB.
    таблица по пути /var/clickhouse-server/disks/s3/data/new весит 880Мб,
    таблица по пути /var/clickhouse-server/disks/s3/cache/new весит 809Мб.

    Такое чувство, что все данные ушли на s3 (включительно с последним годом)
    Я же расчитывал что данные за последний год останутся на диске.
    Что я делаю не так?
  • https://t.me/clickhouse_ru
    да там уже ничего не поддерживается вроде, через sqlalchemy в pandas грузите
  • https://t.me/clickhouse_ru
    echo 'SELECT Version()' | curl -vvv 'http://clickhouse-host:8123/' --data-binary @-
    что показывает?
  • @480131917 #243456 12:51 PM, 11 Nov 2021
    Добрый день! Подскажите пожалуйста выполняю удаление через alter table delete на таблице
    Мутация висит и не завершается, выдаёт ошибку Code:49 Sort order of blocks violated for column number 0 left UInt64_9 right UInt64_3?
  • https://t.me/clickhouse_ru
    как мутация выглядит?
  • https://t.me/clickhouse_ru
    Версия: 20.11.5.18
    GRANT SELECT ON system.* TO my_user_name

    SELECT database FROM tables GROUP BY database;
    Выдает только system, хотя на сервере 100% есть куча других баз данных с другими таблицами
  • Извиняюсь, это уже ответ прежнего сервера (я переустановил). Сейчас верну последний, проверю еще раз
  • Сам запрос?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.storage_policies FORMAT Vertical

    вроде все правильно в TTL задано
  • https://t.me/clickhouse_ru
    да
    SELECT * FROM system.mutations WHERE is_done=0 FORMAT Vertical
  • https://t.me/clickhouse_ru
  • это ответ от новой версии сервера
  • @1063161973 #243466 01:02 PM, 11 Nov 2021
    Новая версия почему-то отказывается с портом 8123
  • https://t.me/clickhouse_ru
    выглядит так что вам надо еще
    SHOW добавить

    https://clickhouse.com/docs/en/sql-reference/statements/grant/#grant-show
    GRANT | ClickHouse Documentation

    GRANT Statement Grants privileges to ClickHouse user accounts or roles. Assigns roles to user accounts or to the other r

  • https://t.me/clickhouse_ru
    ss -nltp | grep 8123
    вы проверьте сначала что у вас старая версия стопанулась или нет?
  • @1063161973 #243469 01:04 PM, 11 Nov 2021
    ss -nltp | grep 8123
    пустой ответ
    останавливал сервер перед переустановкой версии
  • https://t.me/clickhouse_ru
    Используйте clickhouse-driver
  • https://t.me/clickhouse_ru
    выше ребята ответили в чем прикол, проблема с алиасами во вью
  • https://t.me/clickhouse_ru
    так, SELECT engine, name FROM system.databases посмотрите?

    если Atomic для той базы данных которая у вас в new таблице
    тогда смотрите
    /var/lib/cickhouse/storage/db/new

    в /var/lib/clickhouse/data/db/new теперь только симлинки для atomic
  • https://t.me/clickhouse_ru
    там ordinary engine
  • https://t.me/clickhouse_ru
    ок. HTTP POST запросы у вас работают

    смотрите свой код и что именно он в HTTP отсылает

    tcpdump -w clickhouse.pcap port 8123

    и запускайте ваш код который 501 возвращает

    дальше через wireshark открывайте и смотрите
  • https://t.me/clickhouse_ru
    странно тогда =(

    текущий сторейдж должен оставить последний год на default
    если default на 90% занят, тогда перегнать на s3

    см. move_factor
  • https://t.me/clickhouse_ru
    df -h /var/lib/clickhouse/data/
  • https://t.me/clickhouse_ru
    /dev/nvme1n1 5,8T 5,0T 617G 90% /var/lib/clickhouse-server
  • https://t.me/clickhouse_ru
    @sidadmin #243479 01:11 PM, 11 Nov 2021
    это все обьясняет
  • https://t.me/clickhouse_ru
    @sidadmin #243480 01:12 PM, 11 Nov 2021
    спасибо вам большое, я бы сам еще долго б копался
  • @1063161973 #243483 01:23 PM, 11 Nov 2021
    случайно весь экран захватил ((
  • https://t.me/clickhouse_ru
    может уже стоит web.telegram.org запустить и скопипастить на pastebin.org ссылочку с результатом?

    это явно не формат Vertical
  • https://t.me/clickhouse_ru
    правой кнопкой по выделенному фрагменту и Follow HTTP Stream или Follow TCP Stream
    не помню уже точно

    вы там явно что-то не то гоните в 8123 порт

    строку с No 4 посмотрите, там 308 байт чего то непонятного...
  • https://t.me/clickhouse_ru
    то что вы показываете, это явно не FORMAT Vertical
  • Это же PUT а не POST
  • Да, PUT. Не обратил внимание. Но в прежней версии работал..
  • а где-то задокументировано что его можно использовать? Если нет, значит будьте готовы что что-то не будет работать в новой версии
  • https://t.me/clickhouse_ru
    KILL MUTATION WHERE is_done=0;
    SELECT toTypeName(ObjectID), toTypeName(ActionID) FROM db.table LIMIT 1
  • @1063161973 #243498 01:53 PM, 11 Nov 2021
    Спасибо всем за помощь ! Действительно, проблема в том, что PUT запрос перестал отрабатывать в новой версии.
    Заменил на POST и всё ОК.
  • @silentsokolov #243499 01:54 PM, 11 Nov 2021
    Добрый день, подскажите будет ли профит если в смехе с класера с одной репликой, разделить запись и чтение: то есть один сервер будет работать только на инсерт, второй будет отдан на чтение?
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/interfaces/http/

    вот тут сказано

    When using the GET method, ‘readonly’ is set. In other words, for queries that modify data, you can only use the POST method. You can send the query itself either in the POST body or in the URL parameter.

    про PUT вообще упоминаний в исходниках не много
    HTTP Interface | ClickHouse Documentation

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

  • @simpl1g #243501 01:58 PM, 11 Nov 2021
    Ну я про это и говорю) не стоит использовать то что не описано)
  • https://t.me/clickhouse_ru
    @iusik #243502 01:59 PM, 11 Nov 2021
    Подскажите пожалуйста что будет работать быстрей поиск подстроки через Like или через функцию https://clickhouse.com/docs/en/sql-reference/functions/string-search-functions/#position ?
    For Searching in Strings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    что такое схема кластера с одной репликой?
    один шард одна реплика?
    или один шард две реплики?

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

    вставка у вас все равно будет реплицироваться

    и будет простой ресурсов

    лучше поставьте перед кластером какой то load balancer типа chproxy или nginx
    и вставляйте и читайте с обоих нод
    получите более равномерное распределение нагрузки
  • https://t.me/clickhouse_ru
    там код в общем случае один и тот же будет, векторизированный поиск по подстроке
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #243504 #243505 02:02 PM, 11 Nov 2021
    Спасибо!
  • Тип полей UInt64
  • Убил мутации заново запустил удаление обратно висит есть какой нибудь вариант удалить?
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #243509 02:28 PM, 11 Nov 2021
    смех в класере: будни саппорта :)
  • https://t.me/clickhouse_ru
    точно UInt64??

    сообщение об ошибке довольно странное

    Code:49 Sort order of blocks violated for column number 0 left UInt64_9 right UInt64_3?

    вы как-то запрос в мутации поменяли?

    toUInt64(445) ?
  • https://t.me/clickhouse_ru
    @enclaved #243511 02:48 PM, 11 Nov 2021
    как наиболее корректно хранить IPv4/IPv6-адреса в одной колонке? сейчас храню как IPv6 с конвертацией v4-to-v6
  • https://t.me/clickhouse_ru
    так и храните.
    Можете еще проверить CODEC(ZSTD)
  • https://t.me/clickhouse_ru
    @enclaved #243513 02:53 PM, 11 Nov 2021
    zstd чтоб первые байты жать?
  • https://t.me/clickhouse_ru
    типа того. Возможно lz4 и так жмет ОК, там же 0000 0000 0000 0000 0000 ffff повторяется для ipv4, но я бы проверил и ZSTD
  • https://t.me/clickhouse_ru
    вы бы начали с апгрейда до последнего фикса в вашей 21.3 ветке
  • https://t.me/clickhouse_ru
    @den_crane #243516 02:57 PM, 11 Nov 2021
    у вас 21.3.4, обновляйтесь до 21.3.18.4
  • https://t.me/clickhouse_ru
    спасибо, в плане хранения это не так важно. я спросил почему: некоторые клиенты у меня получают CSV из кх напрямую как он его отдает, и их ставит в ступор ::ffff: перед v4-адресами. можно как-то им обратный маппинг v6-to-v4 делать на лету в селекте, оставляя v6-адреса как есть?
  • https://t.me/clickhouse_ru
    @enclaved #243518 03:01 PM, 11 Nov 2021
    видимо, только через каст в строку
  • То есть в этой версии clickhouse есть баг по delete?
  • https://t.me/clickhouse_ru
    без понятия
  • https://t.me/clickhouse_ru
    просто нет смысла смотреть на картинки, вы используете раннюю забагованную версию
  • 21.3.18.4 stable?
  • https://t.me/clickhouse_ru
    все версии КХ stable, если они не testing. Сейчас testing 21.12, т.е. все что ДО 21.12 -- это stable
  • https://t.me/clickhouse_ru
    @den_crane #243524 03:08 PM, 11 Nov 2021
    у testing версия пишется типа 21.12.1.4665 (4 знака в последнем числе)
  • https://t.me/clickhouse_ru
    zstd определённо лучше сожмёт информацию матчей, и скорость распаковки должна не сильно упасть
  • Хорошо, спасибо, попробуем обновиться
  • https://t.me/clickhouse_ru
    @glader_ru #243528 03:16 PM, 11 Nov 2021
    Подскажите, может кто сталкивался. Выгребаю данные из клика через python client, метод execute_iter. Получаю ошибку
    Unexpected packet from server (expected Pong, got Data)
    такое ощущение, что слишком долго читаю из итератора, или неправильно его использую.
  • @1233550302 #243529 04:34 PM, 11 Nov 2021
    Добрый вечер. Может у кого-нибудь была похожая ошибка,в каком направлении следует смотреть?
  • @1233550302 #243531 04:35 PM, 11 Nov 2021
    Колонка user.email у меня в бд вообще без данных пока что
  • https://t.me/clickhouse_ru
    клиент в одном потоке используется? https://clickhouse-driver.readthedocs.io/en/latest/quickstart.html#async-and-multithreading
  • https://t.me/clickhouse_ru
    Кх подумал, что user это nested структура.
  • https://t.me/clickhouse_ru
    это фича Nested. Т.е. Nested проверяет что размер массива одинаковый, иначе потом будет нельзя сопоставить где чей имейл

    типа ['vasya', 'petya', 'ivan'] , ['ivan@.....']

    поэтому используйте пустые строки ['vasya', 'petya', 'ivan'] , ['', '', 'ivan@.....']
  • @1233550302 #243535 04:44 PM, 11 Nov 2021
    И ещё вопрос касательно этой колонке в CSV файла, по логике вещей её тоже пока оставить пустой?
  • https://t.me/clickhouse_ru
    массив CSV выглядит ['', '', 'ivan@.....']
  • https://t.me/clickhouse_ru
    @den_crane #243537 04:46 PM, 11 Nov 2021
    select ['a','b'] format CSV;
    "['a','b']"
  • https://t.me/clickhouse_ru
    Да. Там мультипроцессинг, вроде не должен мешать.
  • https://t.me/clickhouse_ru
    до того, как всё через execute_iter не вычитаете, не вызываете client.execute*? https://github.com/mymarilyn/clickhouse-driver/issues/117
    Partially consumed packet generator leaves client in a broken state · Issue #117 · mymarilyn/clickhouse-driver

    cc @xzkostyan >>> from clickhouse_driver import Client >>> >>> client = Client(host='localhost', port=9000, user=&...

  • https://t.me/clickhouse_ru
    Как интересно. Спасибо, покопаю.
  • https://t.me/clickhouse_ru
    читайте доку, берите подходящие типы. для стринга - стринг и т.д.
    https://clickhouse.com/docs/ru/sql-reference/data-types/
    Введение | Документация ClickHouse

    Типы данных ClickHouse может сохранять в ячейках таблиц данные различных типов. Зависимость имен типов данных от регистр

  • https://t.me/clickhouse_ru
    Спасибо! Так и сделал)
  • Спасибо большое за ответ)
  • https://t.me/clickhouse_ru
    @kirilldikalin #243545 07:34 PM, 11 Nov 2021
    Знатоки, ещё вопрос )
    При заполнении таблицы получил ошибку "Too many parts (N). Merges are processing significantly slower than inserts."
    Как один из вариантов решения предлагается увеличить установленное по умолчанию активное число партиций parts_to_throw_insert
    Делается это при создании таблицы:
    CREATE TABLE foo
    (
    A Int64
    )
    ENGINE = MergeTree
    ORDER BY tuple()
    SETTINGS parts_to_throw_insert = 600;

    Так вот вопрос, я могу изменить это значение, не удаляя и не пересобирая заново таблицу? И если есть ещё адекватные решения этой проблемы кроме добавления buffer таблицы, то это будет супер )
  • https://t.me/clickhouse_ru
    можно https://clickhouse.com/docs/en/operations/settings/merge-tree-settings/#merge-tree-settings
    в 99% это не лечение, но костыль.

    https://github.com/ClickHouse/ClickHouse/issues/3174#issuecomment-423435071
    MergeTree tables settings | ClickHouse Documentation

    MergeTree tables settings The values of merge_tree settings (for all MergeTree tables) can be viewed in the table system

  • https://t.me/clickhouse_ru
    @den_crane #243547 08:21 PM, 11 Nov 2021
    ALTER TABLE foo
    MODIFY SETTING parts_to_throw_insert = 600;
  • https://t.me/clickhouse_ru
    Если я при создании таблицы не указывал SETTINGS, то такая тема прокатит MODIFY SETTING parts_to_throw_insert = 600?
  • https://t.me/clickhouse_ru
    а не проще проверить?

    ответ: да, можно менять
  • https://t.me/clickhouse_ru
    @kirilldikalin #243550 08:34 PM, 11 Nov 2021
    Спасибо
  • 12 November 2021 (124 messages)
  • @Sapar1999 #243554 06:22 AM, 12 Nov 2021
    Добрый день. При загрузке данных через дистрибутивную таблицу в синхронном режиме, как-то можно повлиять на размер кусков ( в строка) улетающих на каждый шард? При распределении через rand(), скажем, 1000000 строк бьются кусками по 10-15к, из-за этого количество партов резко растет.
  • https://t.me/clickhouse_ru
    @ImZonG #243557 07:29 AM, 12 Nov 2021
    Добрый день!
    Подскажите, как лучше настроить RBAC.
    У нас есть юзер "ch_loader" который создает новую бд "client", создает роль "client_ro" и выдает ей права "grant select on client.* to client_ro". Но получает в ответ ошибку
    Not enough privileges. To execute this query it's necessary to have grant SELECT ON client.* WITH GRANT OPTION

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

    grant select on *.* to ch_loader with grant option;
    сделать не можем по соображениям безопасности
  • https://t.me/clickhouse_ru
    @VVit1 #243558 10:12 AM, 12 Nov 2021
    А как так вышло для взаимопомощи по клику завелся этот чат где все бесконечно задают вопросы на которые уже когда-то был ответ?
  • https://t.me/clickhouse_ru
    @VVit1 #243559 10:12 AM, 12 Nov 2021
    Тяжко долго рассказывать про то чем плох чат тут статья про прописные истины про это: https://habr.com/ru/company/productivity_inside/blog/588761/
    Сообществам разработчиков лучше общаться на форумах, чем в чатах

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

  • https://t.me/clickhouse_ru
    @VVit1 #243560 10:13 AM, 12 Nov 2021
    Может пора что-то с этим сделать?
  • https://t.me/clickhouse_ru
    так уже сделали, у альтинити есть база знаний
  • вы здесь ни разу не отвечали и не спрашивали, зачем этот вброс?
    Не нравится не читайте, здесь люди помогают друг другу.
  • это вброс, реклама статьи)
  • +++
  • @7699150 #243565 10:26 AM, 12 Nov 2021
    причем оригинал статьи англоязычный и в нем сравнивают форумы с Дискордом и Слаком
  • https://t.me/clickhouse_ru
    @AnKochem #243566 10:28 AM, 12 Nov 2021
    Я кстати согласен. Хорошо, когда есть чат, где тебе помогут.
    Но круто, когда есть общедоступная база знаний, типа StackOverflow.
    Проще гуглить.

    Когда у меня вопрос, я иду по пути
    Поиск по чату в телеге -> поиск в github -> поиск StackOverflow -> задать вопрос в чате
  • https://t.me/clickhouse_ru
    @nefertiti_ru #243567 10:52 AM, 12 Nov 2021
    Вакансия - Волгоград / full time, remote
    Должность Developer
    Компания I-advert.biz
    Список задач
    🔸Написание bidder, автоматической аналитики на основе данных
    🔸Техническая поддержка и сопровождение RTB-интеграций с партнерами
    🔸Технический контроль и мониторинг RTB трафика
    О нас
    Наша рекламная сеть регистрирует и сохраняет десятки тысяч запросов от пользователей в минуту. И это благодаря команде умных, талантливых и инициативных людей. IT команда активно растет вместе с сервисом, и мы ищем настоящего профессионала, который готов вместе с нами реализовать новые и амбициозные планы, которые позволят сохранить позиции одного из лучший сервисов для наших клиентов.
    Требования
    🔸Основной стек: clickhouse / golang
    🔸python + php + mysql желательны
    ЗП от 200к
    Контакт @nefertiti_ru
  • https://t.me/clickhouse_ru
    @725845313 #243569 11:21 AM, 12 Nov 2021
    Пытаюсь настроить параметризированный http handler. Беру настройку конфига из доки:

    после чего такие ошибки в логе: 2021.11.12 14:18:01.641177 [ 6147 ] {} <Error> Application: DB::Exception: Listen [::1]:8123 failed: Code: 137. DB::Exception: Unknown element in config: http_handlers.rule.method. (UNKNOWN_ELEMENT_IN_CONFIG) (version 21.12.1.8691 (official build))

    Подскажите, что не так делаю? Версия свежая, недавно развёрнутая на тестовой машине. Примечательно, что не параметризированный хендлер отрабатывает .
  • https://t.me/clickhouse_ru
    @VVit1 ↶ Reply to #243562 #243571 11:24 AM, 12 Nov 2021
    Я просматриваю регулярно сюда, несколько раз находил ответы на возникающие вопросы. В процессе посматривания, регулярно натыкаюсь на не раз повторяющиеся вопросы.
    Что-то спрашивать в чате и вести осмысленную беседу на отдельно взятую тему, это как-то... неконституциально что-ли. Хотя это только может мои представления.
  • https://t.me/clickhouse_ru
    @myaksheva #243573 12:01 PM, 12 Nov 2021
    #вакансия #powerBI #аналитика

    Вакансия: Разработчик PowerBI
    Формат работы: проектная работа, гибкий график
    Зарплатная вилка: с успешным кандидатом готовы обсуждать индивидуальные условия.

    Задачи
    1. Разработка дашбордов по основным показателям
    2. Внедрение сквозной аналитики
    3. Интеграция с источниками данных (CRM, рекламные кабинеты, GetCourse, ERP)
    4. Работа с API

    для отклика и по всем вопросам писать - @myaksheva
  • @1074632746 #243575 12:13 PM, 12 Nov 2021
    Всем привет. Подскажите плз, как работает настройка mutations_sync при ALTER TABLE на кластере:
    Есть 2 инсталляции CH: single-сервер (H1) и кластерная (3 ноды, H2). Создал таблицу foo с движками: H1 - ReplacingMergeTree, H2 - ReplicatedReplacingMergeTree (указывал ON CLUSTER bar). Делаю запросы:
    Для каждого запроса генерировал 1кк записей (около 200 MB получилось примерно).
    1. Запрос на H1 (single-server)
    clickhouse-client -h $H1 --queries-file=queries.sql

    queries.sql:

    ALTER TABLE foo DELETE WHERE 1 SETTINGS mutations_sync = 0;

    SELECT * FROM foo LIMIT 1

    В результате select'a выдается какая-то запись, которая не успела удалиться. Все логично

    2. Делаю то же самое, но ставлю mutations_sync = 1. Результат select'a пустой. С mutations_sync = 2 - тоже. Пока все ожидаемо.

    3. Запрос на H2 (cluster):
    clickhouse-client -h $H2 --queries-file=queries.sql

    queries.sql:

    ALTER TABLE foo ON CLUSTER bar DELETE WHERE 1 SETTINGS mutations_sync = 2;

    SELECT * FROM foo LIMIT 1

    В результате select'a выдается какая-то запись, хотя вроде как не должна, т.к. mutations_sync = 2 означает, что запрос должен завершиться на всех репликах, прежде чем он будет закончен (или я что-то не так понимаю?)

    4. Делаю то же самое, но убираю ON CLUSTER bar из ALTER TABLE. В таком случае, результат select'a пустой.

    Может кто-то объяснить такое поведение? Я так понимаю, что когда в 4 убран ON CLUSTER - то данные успевают удалиться только на одной реплике. Это так или нет? Если так, то как сделать, чтобы alter завершался после того, как мутация будет выполнена на всех репликах?

    Ещё в 3 и 4 пробовал вместо (и вместе) с mutations_sync = 2 пробовал replication_alter_partitions_sync = 2 - результат select'a все равное выдается.

    BTW: в чем разница между replication_alter_partitions_sync = 2 и mutations_sync = 2 для кластерной инсталляции?
  • https://t.me/clickhouse_ru
    @unamedrus #243579 12:34 PM, 12 Nov 2021
    > BTW: в чем разница между replication_alter_partitions_sync = 2 и mutations_sync = 2 для кластерной инсталляции?

    Наверное replication_alter_partitions_sync не влияет на мутации.

    > В результате select'a выдается какая-то запись, хотя вроде как не должна, т.к. mutations_sync = 2 означает, что запрос должен завершиться на всех репликах, прежде чем он будет закончен (или я что-то не так понимаю?)

    ON CLUSTER работает через помещения запроса в ZooKeeper и ожидание его выполнения, мб по какой то причине в этом случае ожидание мутации работает не совсем корректно.
  • https://t.me/clickhouse_ru
    статья - так себе. на гитхабе повторяющихся вопросов тоже хватает. нафига использовать какие-то древние форумные движки, если на гитхабе уже давно есть обсуждения, правда они не особо популярны, но точно популярнее форумов.
    не нравится чат - можно не использовать его, а использовать обсуждения на гитхабе.
  • @1074632746 #243581 12:54 PM, 12 Nov 2021
    Спасибо за ответ. Пойду тогда проверять, удаляются ли данные на всех репликах в 4 случае
  • @1074632746 #243582 12:54 PM, 12 Nov 2021
    > BTW: в чем разница между replication_alter_partitions_sync = 2 и mutations_sync = 2 для кластерной инсталляции?

    Наверное replication_alter_partitions_sync не влияет на мутации.

    > В результате select'a выдается какая-то запись, хотя вроде как не должна, т.к. mutations_sync = 2 означает, что запрос должен завершиться на всех репликах, прежде чем он будет закончен (или я что-то не так понимаю?)

    ON CLUSTER работает через помещения запроса в ZooKeeper и ожидание его выполнения, мб по какой то причине в этом случае ожидание мутации работает не совсем корректно.
  • https://t.me/clickhouse_ru
    @VVit1 #243583 01:00 PM, 12 Nov 2021
    replication_alter_partitions_sync - отвечает за синхронность DDL запросов, mutations_sync - для DML запросов.
  • https://t.me/clickhouse_ru
    @725845313 #243584 01:05 PM, 12 Nov 2021
    Коллеги, поправьте доку, пожалуйста. Там вместо тега method Должно быть methods
  • https://t.me/clickhouse_ru
    нажмите "редактировать"->комит->пуллреквест и всё...
  • https://t.me/clickhouse_ru
    @xavierteodonius #243587 01:14 PM, 12 Nov 2021
    Доброго времени суток!

    Пытаюсь решить задачу - в 1 таблицу Clickhouse читать из 2х разных топиков kafka, возможно ли это? Открыл страницу документации про интеграцию с кафкой но прямого ответа не нашел https://clickhouse.com/docs/ru/engines/table-engines/integrations/kafka/

    Вижу что в конфигурации есть topic_list, но нет примера как использовать.

    Допусим есть таблица employee
    id | name | fio | department | salary

    Есть 2 топика в kafka, в 1м есть поля id | name | fio, во втором id | department | salary. Можно ли это както в clickhouse склеивать в 1 таблицу по id employee ?
    Kafka | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @putopelatudo #243588 01:15 PM, 12 Nov 2021
    Всем привет. Параметр ЯМетрики goalsID
    Для загрузки в ClickHouse базу какое значение имеет?
    Имею ввиду String, UInt16, UInt32, ???
    Где это можно посмотреть?
  • https://t.me/clickhouse_ru
    спасибо
  • чтобы писать из 2 разных топиков просто создаёте 2 Kafka Engine + 2 Materialzed View

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

    Но вообще не оч эффективно
    https://kb.altinity.com/engines/mergetree-table-engine-family/aggregatingmergetree/#last-non-null-value-for-each-column
  • https://t.me/clickhouse_ru
    спасибо, а не очень эффективно это грубо говоря насколько медленнее? Скажем если грубо 1млн записей в сутки на хорошем сервере, это особо проблем не сделает? Или будет адский лаг или что-то такое?
  • https://t.me/clickhouse_ru
    Ну 1 млн не очень много.

    Просто в время запроса, вы должны агрегировать и делать GROUP BY id, что не бесплатно
  • https://t.me/clickhouse_ru
    а процесс попадания данных вам не позволяет через Kafka Stream собирать топик до слкадывания в кх?
  • https://t.me/clickhouse_ru
    Вероятно нет, т.к. через пару дней уже делать надо начинать, а с Kafka Stream у нас не работали/не слышали/не установили ) Если только вторым этапом
  • https://t.me/clickhouse_ru
    @Sablast #243597 01:32 PM, 12 Nov 2021
    ну просто это было бы логично тем более что id | department | salary - выглядит как редко меняющийся топик
  • https://t.me/clickhouse_ru
    а как эта штука работает? Можно склеить силами Kafka 2 топика в 1 ?
  • https://t.me/clickhouse_ru
    @Sablast #243599 01:33 PM, 12 Nov 2021
    да
  • https://t.me/clickhouse_ru
    @Sablast #243600 01:33 PM, 12 Nov 2021
    гуглить Kafka Streams
  • https://t.me/clickhouse_ru
    @xavierteodonius #243601 01:33 PM, 12 Nov 2021
    Спасибо! Пойду почитаю и стану умнее )
  • https://t.me/clickhouse_ru
    @maria_kirjanova #243602 01:39 PM, 12 Nov 2021
    Всем, привет!
    Кто-нибудь сталкивался с неправильным отображением времени логирования (выводит на 3 часа назад все), текущего и вообще в DataGrip? В настройках стоит UTC3, пробовала менять, пробовала -Duser.timezone=, не помогло)
  • https://t.me/clickhouse_ru
    dataGrip(java) переводит в таймзону локального компа
    скорее всего вы косячите при записи в КХ

    UTC3 это 100% неправильно
  • https://t.me/clickhouse_ru
    Поставила как в документации было,но я пробовала и другие варианты проставить. Бесполезно. Часовой пояс на маке стоит Москва.
  • https://t.me/clickhouse_ru
    Т.е. например у вас все даты в UTC, вы пишете в КХ в UTC и КХ прямо на сервере показывает в КХ клиенте UTC, а потом вы запускаете запрос с компа у которого локальное время MSC и используете java, то вы увидите MSC, тут нет никакой ошибки, просто java переводит в TZ юзера. Если вы хотите увидеть UTC в datashit вам надо в нем поставить -Duser.timezone=UTC
  • https://t.me/clickhouse_ru
    как, как, все как написано в статье, для того чтобы получить быстрый отклик РазработчикиКХ сделали чат и получили то что им было нужно. И ушли из чата, а чат не удалили и вот получилась херня которая получилась. Я бы конечно удалил чат.
    Попробую надавить на них чтобы удалить все чаты. Конечно ужасно жаль что потеряно все что расказали здесь разрабы.

    Самая классная штука это news / Usenet groups. Как было хорошо-то, это чистый героин был, все что после этого сосет, причем работало в оффлайн, и индексировалось
  • https://t.me/clickhouse_ru
    надеюсь это был сарказм? я пока только осваивают апи телеги и ещё не выкачал из этого канала всю инфу, а тут её немало...
    UPDATE: после вашего апдейта выдохнул :)
  • https://t.me/clickhouse_ru
    нет сарказма, я серьезно. Я тоже считаю что сейчас чат потерял смысл. Можно конечно просто выйти из чата.
  • https://t.me/clickhouse_ru
    @good_developer #243609 02:02 PM, 12 Nov 2021
    Именно, кому не нравится пусть выходят, тут же не цепью приковали
  • Речь идет про этот канал чтоле? Это лучшая вещь о КХ, что где-то можно спросить.
  • @ViacheslavNefedov #243611 02:03 PM, 12 Nov 2021
    6000 человек считают, что в этом чате бывают интересные вещи
  • https://t.me/clickhouse_ru
    про этот и про тот который en
  • @softbot_xxl #243613 02:03 PM, 12 Nov 2021
    Если хотите индексации, пушите создание вопроса на стек-оверфлоу, чтобы находилось в инете.
  • @ViacheslavNefedov #243614 02:03 PM, 12 Nov 2021
    я у себя чищу каналы время от времени, этот пока остаётся
  • @ViacheslavNefedov #243615 02:04 PM, 12 Nov 2021
    я сам обычно спрашиваю именно на stackoverflow
  • https://t.me/clickhouse_ru
    так надо чтобы все перешли на stackoverflow
  • @softbot_xxl #243617 02:04 PM, 12 Nov 2021
    Мы так делали, и в принципе работало. Типа, чувак, мы тебе ответим, но создай на СО и кинь сюда ссылку.
  • https://t.me/clickhouse_ru
    @AnKochem #243618 02:05 PM, 12 Nov 2021
    Канал крутой, никто не спорит. Но это как закрытая вечеринка)
    Люди , которые не в курсе про канал, нигде не могут найти инфу о КХ
  • https://t.me/clickhouse_ru
    при желании можно распарсить канал, разбить треды на отдельные страницы, загнать в поисковик на индексацию.
  • https://t.me/clickhouse_ru
    @AnKochem #243620 02:08 PM, 12 Nov 2021
    Если у меня вопрос, например, по джаве, я гуглю и тут же вижу вопрос с 10 готовыми ответами на stackoverflow
    Если я что-то гуглю по кликхаусу, то я ничего не нахожу 🙂 Это имхо проблема
  • https://t.me/clickhouse_ru
    @aspcartman #243621 02:08 PM, 12 Nov 2021
    Без чата не ясно где инфу брать, чат просто спасение
  • https://t.me/clickhouse_ru
    потому что все похоронено в чате и так будет пока чат существует
  • https://t.me/clickhouse_ru
    это проблема курицы и яйца) Чат - спасение, потому что ничего другого нет. Ничего другого нет, потому что есть чат 🙂
  • https://t.me/clickhouse_ru
    @den_crane #243624 02:10 PM, 12 Nov 2021
    в общем я отвечаю более развернуто на стековерфлоу и на гитхабе
  • https://t.me/clickhouse_ru
    @AnKochem #243625 02:11 PM, 12 Nov 2021
    И это круто! Но вопросов там мало
  • @softbot_xxl #243626 02:11 PM, 12 Nov 2021
    Может нужна интеграция с СО?
  • https://t.me/clickhouse_ru
    @AnKochem #243627 02:12 PM, 12 Nov 2021
    а кто-то читает СО на русском ?)
  • https://t.me/clickhouse_ru
    @den_crane #243628 02:12 PM, 12 Nov 2021
    со стековерфлоу тоже есть проблема в том что там кроме стековерфлоу по КХ есть еще stackexchange и stackadmin ?
  • https://t.me/clickhouse_ru
    вот-вот постоянно добавляются новые фичи, про которые в документации ни слова. хотя бы на хабре раз в месяц статью писали о том, что добавилось новое с примерами, а не "были добавлены новые функции для работы с json", переходишь на пуллреквест - в нём как обычно ни слова в описании кроме того что автор согласен с лицензией. лезешь в тесты и только тогда приблизительно становится понятно, что это за функция.
  • https://t.me/clickhouse_ru
    Читайте CHANGELOG на гитхабе )
  • https://t.me/clickhouse_ru
    а чат вам чем помогает в этом случае?
  • https://t.me/clickhouse_ru
    так там и написано "были добавлены новые функции для работы с json"
  • https://t.me/clickhouse_ru
    в чате кто-то кинул ссылку на видео с лёхой, а там чисто случайно узнал про эти функции. чат позволяет постоянно находиться в контексте и чисто случайно узнавать про новые фичи, про которые в чейнжлоге либо слишком скупо описали, либо вообще ни слова.
  • https://t.me/clickhouse_ru
    вы же понимаете надеюсь что если какой-то разработчик добавляет фичу без документации, ее мержат и никто включая Миловидова не знает на 100% как ей пользоваться
  • https://t.me/clickhouse_ru
    в общем будете закрывать чат, то не забудьте где-нибудь выложить для индексации его историю.
  • @softbot_xxl #243636 02:18 PM, 12 Nov 2021
    Денни, если хотите удержать коммьюнити, и прорекламировать альтинити, почему бы не сделать интеграцию с кб?
  • @softbot_xxl #243637 02:19 PM, 12 Nov 2021
    Вопрос, может перевод на английский, поиск, рекомендация.
  • @softbot_xxl #243638 02:19 PM, 12 Nov 2021
    Может через бот.
  • https://t.me/clickhouse_ru
    @aspcartman #243639 02:25 PM, 12 Nov 2021
    Ну вот как например то что MV с внутренними таблицами вполне себе живет здравствует при идущем populate и запихивает в себя новые данные паралельно с популяцией, которая в свою очередь судя по графику вообще в два потока бежит, но то не точно. Никто не в курсе кто и когда это добавил и вообще что это есть, а оно вон.

    А КХ кемто в плане распространения и в принципе его "внешней политикой" занимается?
  • https://t.me/clickhouse_ru
    @Sablast #243640 02:26 PM, 12 Nov 2021
    вот эти ребята - https://clickhouse.com/company/ )))
  • @softbot_xxl #243641 02:26 PM, 12 Nov 2021
    clickhouse.com, но что-то их тут не видно
  • https://t.me/clickhouse_ru
    Очень много работы по очистке всего.
    Плюс ответы за 2020 и раньше уже не совсем релевантные.

    Так то новые вещи мы и так заносим в kb
  • https://t.me/clickhouse_ru
    @iusik #243646 04:05 PM, 12 Nov 2021
    Подскажите, пробовую создать словарь вот так:

    CREATE DICTIONARY default.dict_data (
    bcid UInt64 DEFAULT 0,
    name String DEFAULT ''
    )
    PRIMARY KEY bcid
    SOURCE(HTTP(
    url 'https://somesite.com/data.json'
    format 'JSONEachRow')) LAYOUT(HASHED()) LIFETIME(300);

    Но когда делаю запрос в select * default.dict_data вылетает ошибка:
    Code: 117. DB::Exception: Received from localhost:9000. DB::Exception: Unknown field found while parsing JSONEachRow format: status: (at row 1)
    Можно как-то игнорировать поля которых нет в структуре словаря?

    SET input_format_skip_unknown_fields=1; – не помогает
    clickhouse-client --input_format_skip_unknown_fields=1 – также не помогает 🙁
  • https://t.me/clickhouse_ru
    @peter_ll #243647 04:10 PM, 12 Nov 2021
    подскажите плиз кто сталкивался
    (21.9.5 revision 54449, реплики с ЗК, 2 набора дисков ssd + hdd и мув по ттл)
    в какой-то рандомный момент времени мержи зависают в system.merges (и выедают пулл как свой ==16 так и репликации == 8)
    пример elapsed 28654.781420539, progress 0 (на hdd все что вижу, если это релевантно)

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

    CREATE DICTIONARY item_dict ( id UInt64, attr String )
    PRIMARY KEY id SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000
    TABLE item_dict_t DB 'dw' USER 'default'))
    settings (input_format_skip_unknown_fields=1)
    LIFETIME(MIN 0 MAX 0) LAYOUT(HASHED());
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #243648 #243649 04:15 PM, 12 Nov 2021
    Спасибо, маэстро.
    Как тебе пивка передать ?
  • https://t.me/clickhouse_ru
    @peter_ll #243650 04:39 PM, 12 Nov 2021
    Подскажите плиз
    Есть способы убить конкретный мерж? или надо рестартовать КХ?
  • @Nikolay_N_Nesterov #243651 04:48 PM, 12 Nov 2021
    Подскажите, возможно ли удалить из MergeTree-таблицы один из ключей сортировки? PRIMARY KEY в явном виде не задан, в секции ORDER BY задано несколько полей таблицы (а именно 6), нужно удалить одно из них из ORDER BY. Т.е. не сам столбец, а просто исключить его из ключей сортировки. Пытаюсь выполнить: MODIFY ORDER BY (<список полей>), получаю ошибку: Code: 36. DB::Exception: Primary key must be a prefix of the sorting key, but its length: 6 is greater than the sorting key length: 5. (BAD_ARGUMENTS)
  • https://t.me/clickhouse_ru
    для replicated таблиц не поможет. Надо в ZK удалять на всех репликах.
    Что случилось, не последствия, а что случилось?
  • https://t.me/clickhouse_ru
    можно только последний элемент из order by убрать
  • https://t.me/clickhouse_ru
    в очереди репликации source_replica это не локальная машина, при этом в system.merges на ней пусто, а парт по пути присутствует (с мтаймами ~+минута с постановки в очереди)
  • https://t.me/clickhouse_ru
    В том то и дело что каких-то явных предпосылок нет - падений и т.п. не было - сетапим новый кластер, еще нагрузку сильную даже не дали
  • Вот как раз последний элемент и пытаюсь убрать. И получаю ошибку.
  • https://t.me/clickhouse_ru
    покажите show create table .... кусок про primary key и order by и ваш modify
  • https://t.me/clickhouse_ru
    диски сдохли?

    sar -d 1 100
  • https://t.me/clickhouse_ru
    Average: DEV tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
    Average: dev259-0 12.72 0.00 102.78 0.00 8.08 0.00 0.04 0.50
    Average: dev259-4 12.72 0.00 102.78 0.00 8.08 0.00 0.04 0.50
    Average: dev9-1 18.96 0.00 99.43 0.00 5.24 0.00 0.03 0.30
    Average: dev9-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-0 34.95 114.03 4173.32 0.00 122.68 0.06 1.64 2.82
    Average: dev8-128 34.21 83.47 4116.09 0.00 122.77 0.06 1.66 2.76
    Average: dev65-32 38.33 131.71 4128.73 0.00 111.16 0.06 1.56 3.36
    Average: dev8-208 34.48 117.63 4071.49 0.00 121.51 0.06 1.65 3.08
    Average: dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-64 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-80 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-96 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-112 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-144 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-160 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-224 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-176 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-192 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev65-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev8-240 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev65-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev65-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    Average: dev9-127 421.22 446.60 8237.10 0.00 20.62 31.04 73.69 4.20
    Average: dev9-126 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
  • show create table:

    CREATE TABLE table
    (
    ...
    )
    ENGINE = MergeTree
    ORDER BY (unid,
    user_stfunid,
    user_card_unid,
    account_type,
    account_value,
    account_sid)

    primary key в явном виде не задан, только ordey by

    запрос на modify:

    ALTER table lndata.access_accounts MODIFY ORDER BY (unid,user_stfunid,user_card_unid,account_type,account_value)
    То есть перечислены все поля, кроме последнего (account_sid)
    Ошибка: Code: 36. DB::Exception: Primary key must be a prefix of the sorting key, but its length: 6 is greater than the sorting key length: 5. (BAD_ARGUMENTS)
  • https://t.me/clickhouse_ru
    перегружайте КХ, что-то знакомое, не помню
  • https://t.me/clickhouse_ru
    primary key в явном виде не задан, только ordey by, значит он == ordey by
    значит удалять нельзя, потому что надо изменить файлы primary key index на диске
  • @Nikolay_N_Nesterov #243664 05:11 PM, 12 Nov 2021
    Понял, спасибо!
  • https://t.me/clickhouse_ru
    @ilya_martynov #243666 07:11 PM, 12 Nov 2021
    Как пошагово развернуть локальный КХ и через dbeaver поработать с большим csv?
    На Mac OS.
    Может кто-нибудь объяснить человеку, который не работал с командной строкой?)
  • https://t.me/clickhouse_ru
    @den_crane #243667 07:18 PM, 12 Nov 2021
    https://clickhouse.com/docs/en/getting-started/install/#from-single-binary
    MacOS x86_64 — curl -O 'https://builds.clickhouse.com/master/macos/clickhouse' && chmod a+x ./clickhouse
    MacOS Aarch64 (Apple Silicon) — curl -O 'https://builds.clickhouse.com/master/macos-aarch64/clickhouse' && chmod a+x ./clickhouse

    https://habr.com/ru/company/oleg-bunin/blog/551572/

    ClickHouse без сервера
  • https://t.me/clickhouse_ru
    @den_crane #243668 07:19 PM, 12 Nov 2021
    а хотя это про dbeaver, тут сервер надо запустить, но почти тоже самое
  • https://t.me/clickhouse_ru
    похоже это баг, populate блокирует инсерты, надо исправить
  • https://t.me/clickhouse_ru
    О! Все получилось. Осталось понять, как в localhost найти нужную таблицу.
  • https://t.me/clickhouse_ru
    Наоборот же очень удобно, не надо танцевать с бубном для пересоздания и пересчета. drop, create - все
  • https://t.me/clickhouse_ru
    или просто нужно создать таблицу и туда можно экспортировать файл?
  • https://t.me/clickhouse_ru
    default это база данных.

    создать таблицу не сложно из бобра.

    А вот как данные в таблицу из бобра закинуть я не знаю. curl-м можно/знаю
  • https://t.me/clickhouse_ru
    ну в любом случае надо дописать в доку, может у кого-нибудь из-за этого инсерты застрянут на 2 часа пока populate бежит.
  • https://t.me/clickhouse_ru
    кажется разобрался, создать через create table, а потом экспортом добавить данные, буду пробовать, спасибо!
  • @AlStd ↶ Reply to #243602 #243676 07:31 PM, 12 Nov 2021
    Попробуйте в DataGrip в настройках драйвера ClickHouse сменить версию на 0.2.4
  • @1996868869 #243677 08:06 PM, 12 Nov 2021
    Скажите, пожалуйста, включено ли по умолчанию сжатие данных в Clickhouse? Либо кодеки и уровень компрессии нужно задавать самому вручную?
  • https://t.me/clickhouse_ru
    Включено, но можно менять
  • Сжатие lz4 включено по умолчанию, а дальше уже руками что надо тюните
  • @1996868869 #243680 08:11 PM, 12 Nov 2021
    Есть ли смысл использовать тогда в самой таблице поля а-ля field UInt32 Codec(T64, LZ4)?
  • @1996868869 #243681 08:11 PM, 12 Nov 2021
    Даёт ли это профит при хранении данных в плане занятого места и насколько снижает скорость чтения данных?
  • https://t.me/clickhouse_ru
    @TrueCarry #243682 08:13 PM, 12 Nov 2021
    Место уменьшается, скорость когда как, цифры вам надо проверять на своих данных.
  • Лучше провести тесты на своих данных, всё сильно зависит от низ
  • @1996868869 #243684 08:15 PM, 12 Nov 2021
    Спасибо
  • https://t.me/clickhouse_ru
    лучше делать field UInt32 Codec(T64, Default)
    в этом случае будет сжматься кодеком заданным в конфиге и самое главное это позволит пережать при TTL recomress
  • https://t.me/clickhouse_ru
  • Спасибо большое за замечание
  • @84600419 #243690 08:34 PM, 12 Nov 2021
    Уважаемые знатоки, что делать если не дропается таблица (а так же не транкейтится и не переименовывается) по причине write locking attempt timrout 120000.

    Версия кх 20.6
    Пробовал перезагружать кх - не посогает
  • https://t.me/clickhouse_ru
    таблица replicated ?
    detach table xxxx работает?

    когда КХ выключен просто сделайте
    mkdir /var/lib/tmp
    mv /var/lib/clickhouse/data/база/таблица /var/lib/tmp/
    mv /var/lib/clickhouse/metadata/база/таблица.sql /var/lib/tmp/
  • Не replicated. Detach table тоже виснет
  • @84600419 #243693 08:51 PM, 12 Nov 2021
    Вариант дропа через юникс щас попробую
  • @84600419 #243694 11:07 PM, 12 Nov 2021
    Спасибо, помогло
  • 13 November 2021 (20 messages)
  • https://t.me/clickhouse_ru
    @pxlvgg #243696 09:04 AM, 13 Nov 2021
    кликхаус потребляет память гигабайтами, после перезагрузки они удаляются
  • https://t.me/clickhouse_ru
    @pxlvgg #243697 09:04 AM, 13 Nov 2021
    на что потребляется память и как ограничить это?
  • https://t.me/clickhouse_ru
    mark cache

    uncompressed cache

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/
  • @1528585504 #243699 10:41 AM, 13 Nov 2021
    от system.part_log зависит что-то?
  • @1528585504 #243700 10:41 AM, 13 Nov 2021
    или можно удалять не боясь
  • https://t.me/clickhouse_ru
    Ничего не зависит. Можно. https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
    Кх ее создаст снова.
  • @mrtmnc #243703 12:43 PM, 13 Nov 2021
    Денfh
  • https://t.me/clickhouse_ru
    С футболкой Кликхаус не тормозит, надеюсь?
  • https://t.me/clickhouse_ru
    @dbalashov #243716 02:41 PM, 13 Nov 2021
    а есть видео где ты настраиваешь zookeper ?
  • https://t.me/clickhouse_ru
    Многопоточная обработка данных)
  • https://t.me/clickhouse_ru
    @dbalashov #243722 02:50 PM, 13 Nov 2021
    да прибейте уже бота
  • @michael_best #243730 04:16 PM, 13 Nov 2021
    ребят, такая ошибка

    Code: 216. DB::Exception: Query with id = mysql:[ERRFMT] is already running. (QUERY_WITH_SAME_ID_IS_ALREADY_RUNNING)

    Пытаюсб из java клиента через mysql драйвер создавать таблицы.
  • @michael_best #243731 04:17 PM, 13 Nov 2021
    Через IF NOT EXISTS
    Если таблицы нет, то все ок
    Если есть, то такая ошибка
  • @michael_best #243732 04:24 PM, 13 Nov 2021
    в моем понимании, если таблица есть, то ошибки не должно быть, иначе смысл IF NOT EXISTS...
  • https://t.me/clickhouse_ru
    @aksimemor #243733 06:03 PM, 13 Nov 2021
    Подскажите, можно ли создавать 2 MATERIALIZED VIEW которые бы переливали данные в одну таблицу?
  • https://t.me/clickhouse_ru
    Да
    Можно
  • https://t.me/clickhouse_ru
    @b0dyaa ↶ Reply to #239909 #243736 10:23 PM, 13 Nov 2021
    Доброго времени суток!
    Столкнулся с подобной ошибкой. Подскажите, как решили?

    КХ (21.11.2.2) на удаленном сервере, порт 8123.
    Доступ через requests работает, а через clickhouse_driver Client возвращает ошибку:
    Code: 102. Unexpected packet from server х.х.х.х:8123 (expected Hello or Exception, got Unknown packet)
  • https://t.me/clickhouse_ru
    Питоновский драйвер на порт 9000 надо. 8123 это не то

    8123 http
    9000 tcp
    Питон драйвер через tcp
  • https://t.me/clickhouse_ru
    техподдержка идёт даже в ночь с субботы на воскресенье :)))
  • https://t.me/clickhouse_ru
    да, а самое смешное что я прямо сейчас в слаке Альтинити решаю дурацкую проблему у клиента который решил поработать ночью в субботу
  • 14 November 2021 (46 messages)
  • https://t.me/clickhouse_ru
    У тебя клиент почему то устанавливает query_id параметр
    Не уникальный
    И есть другие коннекты с таким же query_id
  • https://t.me/clickhouse_ru
    @b0dyaa ↶ Reply to #243737 #243742 06:41 AM, 14 Nov 2021
    Спасибо!
  • Спасибо, получалось, что приложение вначале пыталось записать в базу, а потом только пулл конекшеннов создавало)
  • https://t.me/clickhouse_ru
    Добрый день! Спасибо вам большое за обратную связь, но к сожалению не помогло. Пробовала прописывать в разделах use_time_zone и разделе VM.

    В superset даты отображаются в соответствии с текущем временем (Мск) и временем логирования в таблицах.

    А вообще select now делаю, на это ориентируюсь.

    У коллег все в норме.
  • https://t.me/clickhouse_ru
    Попробовала, проверка соединения:

    DBMS: ClickHouse
    Case sensitivity: plain=exact, delimited=exact
    Driver: ru.yandex.clickhouse-jdbc (ver. 0.1, JDBC0.1)
    Effective version: UNKNOWN (ver. 0.0)
    Ping: 76 ms (keep-alive query results in error)

    Code: 516, e.displayText() = DB::Exception: Invalid authentication: it is not allowed to use Authorization HTTP header and authentication via parameters simultaneously (version 21.7.5.29 (official build)).
  • https://t.me/clickhouse_ru
    @kazah_700lvl #243751 03:13 PM, 14 Nov 2021
    Привет всем, я не спец в бд. Подскжите, использование UUID в качестве PK - уменьшит производительность ClickHouse, в сравнении с целым числом? Спасибо!
  • https://t.me/clickhouse_ru
    да. Самая большая проблема даже не в том что UUID не монотонный, а в том что UUID 16 байт, против UInt64 - 8 байт. Просто все операции в два - три раза медленее с UUID.

    Также прямо сейчас наконец-то задумались как ужасно для btree индексов что UUID не монотонен, и создают аж 4 новых версии UUID.

    Рекомендую посмотреть на twitter snowflake и sony sonyflake (там 64 бит и монотонность) потому что время в первых битах

    39 bits for time in units of 10 msec
    8 bits for a sequence number
    16 bits for a machine id
  • https://t.me/clickhouse_ru
    Большое спасибо! Первый раз строю бд в которой будет более млрд записей, потому думаю над pk - ибо это осноная табица, ее id не относятся ни к чему и нужна только уникальность. Пошел изучать sonyflake)
  • https://t.me/clickhouse_ru
    Лучше почитайте описание движка mergetree сначала
  • https://t.me/clickhouse_ru
    возможно вы роете не в ту сторону.

    1. Зачем вам PK вообще?
    2. Вам нужен простой хеш? Просто cityHash64 ?
  • https://t.me/clickhouse_ru
    Его надо не читать, а прочувствовать))
  • https://t.me/clickhouse_ru
    По сути, все что мне нужно, это обязательная уникализация записи. Т.к записи будут добавляться разными скриптами - хочу не допустить конфликта, совпадений записей. Возможно вы правы, и есть иное решение
  • https://t.me/clickhouse_ru
    Спасибо, беру во внмание )
    Ранее работал только с PostgreSQL
  • Uuid который со временем еще и переполнится может если что. Году к 32 так насколько я помню.
  • https://t.me/clickhouse_ru
    @TrueCarry #243760 03:55 PM, 14 Nov 2021
    Попробуйте подумать как не вставлять дубликаты лучше, удалять их на стороне клика не лучшая идея
  • https://t.me/clickhouse_ru
    Если надо перенести данные из PG, есть MaterilizePG движок базы данных
  • https://t.me/clickhouse_ru
    Ну вот я и задумался над гарантированной генерацией уникальной id записи не на стороне кх 🙂
    Я бы мог не использовать Id или PK в целом, но от этих таблиц дльше буду строить связь, вклдывая id в другие таблицы.
  • https://t.me/clickhouse_ru
    Спасибо! Пригодится еще)
  • https://t.me/clickhouse_ru
    Возможности интеграции PostgreSQL с ClickHouse / Ксения Сумарокова (Yandex)

    Запись доклада PG Day'21 Russia Подписывайтесь на рассылку на нашем сайте чтобы не пропустить анонс следующей конференции https://pgday.ru/ ----------- Возможности интеграции PostgreSQL с ClickHouse / Ксения Сумарокова Доклад о том, как PostgreSQL может взаимодействовать с ClickHouse – зачем это нужно и какие возможности для этого есть. Будет рассказано о разных вариантах интеграции: реализация специализированных PostgreSQL движков разных видов для разных целей, у каждого свои преимущества. Большая часть рассказа будет посвящена репликации из PostgreSQL в ClickHouse – когда ClickHouse притворяется репликой PostgreSQL базы, причем реплицироваться может как вся база, так и любое подмножество таблиц. Расскажу о том, как реализована репликация – о протоколе логической репликации, подробно про его устройство и о том как он реализован в ClickHouse для репликации из PostgreSQL. Слайды: https://pgday.ru/presentation/281/60f04d3f07516.pdf

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

    Нашел уже пару статей по вашим рекомендациям, изучаю. Спасибо за ответы!
  • https://t.me/clickhouse_ru
    @little0big #243767 06:14 PM, 14 Nov 2021
    ребят, всем привет. Вопрос не технического плана.
    А давно кликхаус от Яндекса откололся и стал самостоятельной организацией?
  • https://t.me/clickhouse_ru
    @AnKochem #243768 06:32 PM, 14 Nov 2021
    буквально месяц назад
  • https://t.me/clickhouse_ru
    Конец сентября

    https://clickhouse.com/blog/en/2021/clickhouse-inc/
    Introducing ClickHouse, Inc.

    Today I’m happy to announce ClickHouse Inc., the new home of ClickHouse. The development team has moved from Yandex and

  • https://t.me/clickhouse_ru
    @bralbral #243770 07:38 PM, 14 Nov 2021
    Добрый вечер. Работают ли настройки max_insert_block_size
    /
    min_insert_block_size_rows при вставки из кафки в дистрибутивную таблицу через матвью ? Смущает , что при изменении размера блока в таблице Кафка, на годы прилетает +- одно количество строк.
  • kafka_max_block_size меняли?
  • https://t.me/clickhouse_ru
    Да, его и увеличивал.
  • min_insert_block_size_bytes тоже?
  • https://t.me/clickhouse_ru
    min_insert_block_size_rows/bytes не трогал. Буду смотреть , спасибо.
  • https://t.me/clickhouse_ru
    с кафкой вообще все по другому. По умолчанию там poll идет какое-то время и флашится kafka_max_block_size
    но если мы наконсьюмили 100 записей за период то и зафлашатся 100 записей

    параметры https://github.com/ClickHouse/ClickHouse/pull/11388

    kafka_flush_interval_ms
  • https://t.me/clickhouse_ru
    В том-то и дело, что лаг миллиарды, и он уменьшается по 3-4кк, только вот прилетает на ноды по 30к ( всего 5 нод). Спасибо
  • https://t.me/clickhouse_ru
    это возможно Distributed так делает, когда режет на 5

    зачем у вас Distributed?
  • https://t.me/clickhouse_ru
    @den_crane #243778 08:07 PM, 14 Nov 2021
    может включить --distributed_directory_monitor_batch_inserts arg Should StorageDistributed DirectoryMonitors try to batch individual inserts into bigger ones.
  • https://t.me/clickhouse_ru
    А, вы хотите предложить к конкретной партиции топика привязаться ?
  • https://t.me/clickhouse_ru
    нет конечно.

    зачем у вас Distributed? -- Это нестандартный подход с кафка engine, и используется когда надо шардить по ключу.
  • https://t.me/clickhouse_ru
    @den_crane #243781 08:09 PM, 14 Nov 2021
    в 99% случаев с kafka engine просто пишут напрямую в *MergeTree
  • https://t.me/clickhouse_ru
    Собственно да, шардим по ключу.
  • https://t.me/clickhouse_ru
    ну это вам Distributed и дробит
  • https://t.me/clickhouse_ru
    @den_crane #243784 08:10 PM, 14 Nov 2021
    пробуйте включить --distributed_directory_monitor_batch_inserts arg Should StorageDistributed DirectoryMonitors try to batch individual inserts into bigger ones.
  • https://t.me/clickhouse_ru
    @ptylopsis #243785 08:12 PM, 14 Nov 2021
    Добрый вечер, позникла необходимость перенести базу на другой диск в пределах той же самой машины. Я так понимаю что правкой конфига CH и физическим переносом каталогов тут не обойдёшься, правильным ли будет делать это через бекап и последующее восстановление или есть какой-то безболезненный способ?
  • https://t.me/clickhouse_ru
    А это с синхронным работает модом для дистрибутивной таблицы ?
  • https://t.me/clickhouse_ru
    нет не работает
    типа у вас кафка engine ждет что-ли пока все доедет до шардов?
  • https://t.me/clickhouse_ru
    Ну да, так получается
  • https://t.me/clickhouse_ru
    нет, не нужен бекап.

    Можно перенести и поправить конфиг

    Ну и еще проще остановить КХ, перенести /var/lib/clickhouse/* на другой диск и замаунтить тот диск в /var/lib/clickhouse/
  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
  • 15 November 2021 (144 messages)
  • https://t.me/clickhouse_ru
    @zubarevts #243796 07:44 AM, 15 Nov 2021
    Всем привет. Разрабатываем систему аналитики, PostgreSQL не справляется, смотрим на clickHouse. Сейчас есть вопросы у нас, кто может проконсультировать по внедрению, напишите, пожалуйста, в личку.
  • https://t.me/clickhouse_ru
    @1207506950 #243797 07:47 AM, 15 Nov 2021
    мдя
  • https://t.me/clickhouse_ru
    @catent #243798 08:02 AM, 15 Nov 2021
    Привет, а референс по бинарному протоколу CH есть где-то, или классическое чтение исходников все ещё применимо?
  • https://t.me/clickhouse_ru
    Зачем? В смысле есть питон и го реализации. На go даже 2.
    И речь про именно tcp протокол или native формат?
    А ну и cpp есть
  • https://t.me/clickhouse_ru
    @catent ↶ Reply to #243799 #243800 08:09 AM, 15 Nov 2021
    Именно про tcp протокол, да.

    Ну была надежда, что появилась дока.
  • https://t.me/clickhouse_ru
    @sguryan #243801 08:10 AM, 15 Nov 2021
    Всем привет. Сейчас в банке мы забираем данные из яндекс аппметрики и скадываем их в субд оракл, чтобы обогатить данными из других источников. Процесс достаточно долгий. Может кто-нибудь подсказать, поможет ли кликхаус ускорить процесс загрузки данных.
  • https://t.me/clickhouse_ru
    Вы можете начать собирать их не в оракл а в кликхаус)
  • https://t.me/clickhouse_ru
    @sguryan #243803 08:13 AM, 15 Nov 2021
    @dmitriynvkv Спасибо, то есть загрузка данных тоже будет быстрее, чем в оракл? Я слышал, что всякие запросы очень быстро выполняются в кликхаус с данными Яндекс по сравнению с другими СУБД, но про скорость загрузки сырых данных ничего не находил.
  • https://t.me/clickhouse_ru
    У Вас заливка долгая или обогащение?
  • https://t.me/clickhouse_ru
    @sguryan #243805 08:13 AM, 15 Nov 2021
    заливка
  • https://t.me/clickhouse_ru
    И как заливаете?
  • https://t.me/clickhouse_ru
    сорри, я просто капитана включил
  • https://t.me/clickhouse_ru
    @catent ↶ Reply to #243800 #243808 08:17 AM, 15 Nov 2021
    Вообще пока для экспериментов, но мне нужна поддержка трейсинга, прогресса выполнения запроса, отсутствие оверхеда на рефлексию/interface{}, поддержка Map и т.д.
  • https://t.me/clickhouse_ru
    @sguryan #243809 08:17 AM, 15 Nov 2021
    Oleg заливаю не я , а дата инженеры. Но как я понимаю простым гет запросом по апи
  • https://t.me/clickhouse_ru
    Ок, вопрос к DE, как лучше настроить экспорт через параллельные потоки
  • @s4851 ↶ Reply to #243809 #243813 08:27 AM, 15 Nov 2021
    Здесь очень помогла бы информация сколько строк/ и сколько в этих строках колонок) заливается в сутки.
  • https://t.me/clickhouse_ru
    @sguryan #243814 08:27 AM, 15 Nov 2021
    @s4851 окей, чуть позже отвечу на этот вопрос
  • @s4851 ↶ Reply to #243814 #243815 08:29 AM, 15 Nov 2021
    Принципиально КХ очень быстро записывает новые данные, главное отправлять их относительно большими пачками по 5к -50к строк
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #243816 08:33 AM, 15 Nov 2021
    да, важно не сколько в сутки (раз уже оракл с этим справляется), а сколько в пачке
  • https://t.me/clickhouse_ru
    Кривой пайплайн будет, надо проверить сколько пачками забираете в оракл в сколько потоков. Возможно, косяк со стороны API...
  • https://t.me/clickhouse_ru
    @1207506950 #243818 08:52 AM, 15 Nov 2021
    Если не ошибаюсь ЯМ отдает по 10ГБ за запрос, не очень понимаю зачем тут оракл, забирать через ЯМ API можно чем угодно...никто не мешает параллельно запустить кучу запросов и упереться в ширину интернет канала
  • @green_pea #243819 09:11 AM, 15 Nov 2021
    Подскажите пожалуйста, что тут не так?
    Запрос:
    SELECT * FROM (SELECT * FROM mydb.table1 cc INNER JOIN mydb.table2 dd ON dd.id=cc.table2_id ) d
    ORDER BY d.id LIMIT 50 OFFSET 0

    Вылетает ошибка:
    ERROR [ExceptionsHandler] Syntax error: failed at position 38 ('*') (line 1, col 38): * FROM (SELECT * FROM mydb.table1 cc INNER JOIN mydb.table2 dd ON dd.id=cc.table2_id ) d ORDER BY . Expected one of: UNION, SAMPLE, LIMIT, WHERE, WINDOW, INNER, end of query, HAVING, AS, UUID, GROUP BY, INTO OUTFILE, identifier, OFFSET, LEFT ARRAY JOIN, PREWHERE, JOIN, alias, ORDER BY, array join, SETTINGS, ARRAY JOIN, FORMAT, Dot, WITH, table, table function, subquery or list of joined tables, FINAL, token (version 21.8.5.7 (official build))
  • https://t.me/clickhouse_ru
    @a1s_333444 #243821 09:17 AM, 15 Nov 2021
    Подскажите пж
    В логах кх куча ошибок типа
    <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer
    Что за пир мне неизвестно

    Затем решил посмотреть логи ZK ииии походу вот он ответ
    Refusing session request for client /10.13.2.80:43890 as it has seen zxid 0x3b00000001 our last zxid is 0x2332cd19c client must try another server

    Но самое интересное, кажется что репликация работает валидно.
    Вопрос как пофиксить zxid ?
  • https://t.me/clickhouse_ru
    @sguryan #243822 09:23 AM, 15 Nov 2021
    @s4851 Данных 30 гб в день, параллельно 3 загрузчика, 1 день загружается за 8-9 часов через шину. Если тянем руками, то есть просто запрос через браузер, за 3 часа прогружается.
  • @s4851 ↶ Reply to #243822 #243823 09:26 AM, 15 Nov 2021
    Те прирост 1ТБ в месяц?
  • https://t.me/clickhouse_ru
    @sguryan #243824 09:27 AM, 15 Nov 2021
    все так
  • @s4851 #243825 09:29 AM, 15 Nov 2021
    А у вас сейчас в оракле сколько лет загружено и все данные условно "горячие"?
  • https://t.me/clickhouse_ru
    @sguryan #243826 09:32 AM, 15 Nov 2021
    мы всегда 90 дней оставляем
  • https://t.me/clickhouse_ru
    @sguryan #243827 09:33 AM, 15 Nov 2021
    исторический
  • https://t.me/clickhouse_ru
    @sguryan #243828 09:33 AM, 15 Nov 2021
    затираем все предыдущие
  • @s4851 ↶ Reply to #243828 #243829 09:38 AM, 15 Nov 2021
    Новые данные клик принимает очень быстро(именно новые, не update старых), но в любом случае вашей прослойке необходимо забирать данные из сервиса и отдавать их в клик.
    По поводу скорости запросов, надо хорошо продумывать архитектуру таблиц чтобы запросы были быстрыми
  • @s4851 #243830 09:40 AM, 15 Nov 2021
    Данные рекомендуется вставлять пачками не менее 1000 строк или не более одного запроса в секунду. При вставке в таблицу типа MergeTree из tab-separated дампа, скорость вставки будет в районе 50-200 МБ/сек

    https://clickhouse.com/docs/ru/introduction/performance/#proizvoditelnost-pri-vstavke-dannykh
    Производительность | Документация ClickHouse

    Производительность По результатам внутреннего тестирования в Яндексе, ClickHouse обладает наиболее высокой производитель

  • @s4851 #243831 09:40 AM, 15 Nov 2021
    Те 30гб это порядка 600 секунд
  • https://t.me/clickhouse_ru
    @sguryan #243832 09:57 AM, 15 Nov 2021
    @s4851 Спасибо за ответы, мб добавлю сюда нашего инженера, чтоб он поспрашивал побольше и более умные вопросы))
  • https://t.me/clickhouse_ru
    @1207506950 #243833 09:59 AM, 15 Nov 2021
    😀
  • https://t.me/clickhouse_ru
    @koshakm5 #243835 10:31 AM, 15 Nov 2021
    Привет! как лучше вывести и ввести ноду с репликой в кластер? мне надо поменять диски, чтобы потом реплика налилась с двух оставшихся в шарде надо чтобы в зоокипере она не оставалась в путях, drop database на ноде перед реинсталлом - то что надо? или надо ещё что-то предварительно сделать?
  • https://t.me/clickhouse_ru
    @koshakm5 #243836 10:49 AM, 15 Nov 2021
    https://github.com/ClickHouse/ClickHouse/issues/20868#issuecomment-781356896
    вот это мне подойдёт? без первого пункта если
    How to remove replica from clickhouse cluster? · Issue #20868 · ClickHouse/ClickHouse

    We are using 3 replica node clickhouse cluster with node names of ch111,ch112,ch113 and we are using tables with engine Replicated merge tree, I would like to remove ch113 from the clickhouse clust...

  • По моему опыту заливка данных в ClickHouse на один сервер до полумиллиона записей в секунду
    Только надо очень прилично буфферизировать записи - чем больше тем лучше
    Это конечно не чисто реляционная база (нет транзакций)
    но скорость выполнения простых и агрегационных запросов при правильно выбранных ключах впечатляет
  • https://t.me/clickhouse_ru
    @sguryan #243838 11:04 AM, 15 Nov 2021
    @kafnevod тут есть проблема, что долгое время занимает сам гет запрос к апи, это как-то можно оптимизировать?
  • Чей API? ClickHouse?
  • @s4851 ↶ Reply to #243838 #243840 11:06 AM, 15 Nov 2021
    Мне кажется имеется ввиду запрос к Апи Я метрики?
  • https://t.me/clickhouse_ru
    @sguryan #243841 11:08 AM, 15 Nov 2021
    @s4851 все верно, запрос к апи аппметрики
  • @s4851 ↶ Reply to #243841 #243842 11:11 AM, 15 Nov 2021
    Здесь вряд ли помогут с этим вопросом. Вам надо самим разбираться что именно и как вы запрашиваете.
  • https://t.me/clickhouse_ru
    разбивайте на куски поменьше, чтобы параллельно несколько запросов крутились и по статусу progressed отслеживать
  • @sciro2 #243845 11:20 AM, 15 Nov 2021
    Добрый день, подскажите можно ли делать modify order by в проде?
  • https://t.me/clickhouse_ru
    Можно. Проблема в том что это очень ограниченная команда, она меняет только метаданные, т.е. можно добавить колонку и одновременно добавить ее в конец order by. Индекс не меняется. Т.е. в индекс эта колонка не добавится.
  • @sciro2 #243848 11:33 AM, 15 Nov 2021
    Хм, а если мне надо именно индекс добавить для уже существующей колонки?
  • https://t.me/clickhouse_ru
    А никак
  • @sciro2 #243850 11:35 AM, 15 Nov 2021
    Спасибо)
  • https://t.me/clickhouse_ru
    @tonymironov #243851 11:43 AM, 15 Nov 2021
    Всем привет, такая проблема. Есть статичные (как правло строки и айдишники) данные о событии, а есть динамичные (только числовые).

    Хочется поместить все данные в одну таблицу, динамичные данные просто обновлять с помощью добавления новых строк + используя движок summingmergetree.

    Но событий очень много, следовательно и обновлять динамичные данные придется часто.
    А чтобы динамику вставить в таблицу, надо добавлять её вместе со статикой, чтобы статика при слиянии summingmergetree не потерялась. Следовательно встала проблема как эту статику вытаскивать быстрее всего. Если вытаскивать из кликхауса, то это будет очень медленно (т.к. point queries).

    Что можете посоветовать в данном кейсе?
  • @Dr_Wut #243852 11:46 AM, 15 Nov 2021
    Добрый день всем
    подскажите пожалуйста ресурс где можно почитать про предпочтительные кодеки сжатия для разных типов данных для кликхауса?
  • https://t.me/clickhouse_ru
    У меня пока только мысли появились в сторону создать materialized view, где будет index_granularity занижен и делать point queries (но это антипаттерн и хз сколько запросов эта система выдержит)
  • https://t.me/clickhouse_ru
    Что значит статические? Сколько их? Это дименшины? Тогда external dictionary
  • https://t.me/clickhouse_ru
    Мало выдержит. Тыщу в секунду может, может 5 тыщ. Там проблема из-за блоков компрессии и вообще кх не приспособлен для такого
  • https://t.me/clickhouse_ru
    а блоки нельзя уменьшить?
  • https://t.me/clickhouse_ru
    А проекции не вариант сделать ?
  • https://t.me/clickhouse_ru
  • тыщу в секунду selectов на summingMT?
  • https://t.me/clickhouse_ru
    Вопрос был как бы не про это. Я подумал про коллапсинг/replacing и т.д.
  • https://t.me/clickhouse_ru
    пример строки:
    статика: datetime, campaign_id, key (уникальный), lang, country и еще порядка 10 строк различных (некоторые из них в словари не запишешь)
    динамика: cost, event, payout и еще подобных штук 10

    так вот чтобы мне например изменить payout, то я добавляю всю строку целиком, а для payout добавляю разницу с предыдущим значением
  • https://t.me/clickhouse_ru
    для текстов - только lz4/zstd. zstd медленней распаковывает

    для чисел в доке КХ вроде неплохо объяснено, поверх t64 можно наворотить lz4/zstd если там данные повторяются, а поверх прочих - даже нужно, поскольку они лишь уменьшают энтропию
  • https://t.me/clickhouse_ru
    Причем тут самминг. Вообще не про эту таблицу речь была?
  • https://t.me/clickhouse_ru
    @tonymironov #243865 11:59 AM, 15 Nov 2021
    Так вот самая боль это в вытащить статику, чтобы при слиянии не потерялась
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/ru/sql-reference/statements/alter/projection/, https://www.youtube.com/watch?v=jJ5VuLr2k5k&t=636s&ab_channel=Percona . Возможно поможет проекция, которая позволит создать дополнительные ключи
    PROJECTION | Документация ClickHouse

    Манипуляции с проекциями Доступны следующие операции с проекциями: ALTER TABLE [db].name ADD PROJECTION name ( SELECT <C

  • https://t.me/clickhouse_ru
    В ETL до втставки в кх надо такое делать
  • ну там человек написал, что вроде хочет самминг использовать и как я понял писать в нее через МВ.
    мой вопрос про "тыщу"
    Тыщу селектов выдержит или чего?
  • @Dr_Wut ↶ Reply to #243863 #243869 12:01 PM, 15 Nov 2021
    а если у меня рандомные цифры?
  • https://t.me/clickhouse_ru
    Вот тут тесты с direct словарем https://kb.altinity.com/engines/altinity-kb-embeddedrocksdb-and-dictionary/ все числа видны. Там был nvme
  • https://t.me/clickhouse_ru
    рандом не жмётся :) но если это цифры в текстовом поле, то zstd их пожмёт - это фактически lz4+huffman
  • https://t.me/clickhouse_ru
    а можете пояснить как это? Как я понял, это где-то в другой key-value БД иметь мою строку, оттуда ее быстро достать и уже потом вставить в КХ
  • https://t.me/clickhouse_ru
    Даже если выключить сжатие все равно будут блоки компрессии, просто не сжатые. Их правда можно уменьшить но на инсерте, в мержах опять все разьедется
  • https://t.me/clickhouse_ru
    Да. MySQL redis Cassandra
  • https://t.me/clickhouse_ru
    ну то есть система сразу х2 памяти потребует если не больше)
    печально, но куда деваться
  • https://t.me/clickhouse_ru
    ты перепутал двух вопрошающих, Антон про блоки ничего не спрашивал
  • https://t.me/clickhouse_ru
    @tonymironov #243877 12:05 PM, 15 Nov 2021
    там просто этих строк миллиарды, но благо те что надо обновлять можно хранить только последние 6 месяцев
  • https://t.me/clickhouse_ru
    К сожалению чудес не бывает.
  • https://t.me/clickhouse_ru
    Ну я примерно так и подозревал что придется сделать. Спасибо за подсказки
  • @Dr_Wut #243880 12:07 PM, 15 Nov 2021
    то есть я правильно понимаю что если я везде (на рандомных числах) поставлю тип string то я выиграю при сжатии но мне надо будет делать изменение типа чтобы делать историю с поиском (если захочу больше/меньше)
  • https://t.me/clickhouse_ru
    Нет конечно. Только хуже станет.
  • https://t.me/clickhouse_ru
    нет, конечно. если у тебя случайные числа, то они не жмутся. если ты их сохранишь как string - они займут больше места и zstd (а фактичсеки просто huffman из него) сожмёт их до оригинального размера. это понятие энтропии из computer science
  • @Dr_Wut ↶ Reply to #243882 #243883 12:10 PM, 15 Nov 2021
    если я правильно понимаю ваш ответ - то клик жмет данные только в пределах ячейки? я почему-то думал что там история с жатием всей патиции/столбца
  • https://t.me/clickhouse_ru
    он жмёт кусок столбца размером в десятки килобайт минимум. если есть повторы между строками - lz4/zstd могут помочь, но вряд ли сильно. в lz4 миним. длина совпадения для сжатия - 4 байта. в старших режимах zstd (с медленным сжатием) размер матча начинается с 2-3 байт
  • https://t.me/clickhouse_ru
    @DarshilxD #243885 12:14 PM, 15 Nov 2021
    hello all, we need to frequntly update the tables that we created on cluster in distributed way but we come to know that distrbuted tables dosent support mutation

    is there any better way to update tables on cluster ?
  • @subotic0 #243886 12:14 PM, 15 Nov 2021
    Добрый день, ошибка в работе aes_decrypt_mysql для "неподходящих" значений (к примеру пустая строка) это баг или фича? в mysql возвращает null
  • https://t.me/clickhouse_ru
    @ARyndin #243887 12:22 PM, 15 Nov 2021
    Привет. Кто-либо сталкивался с утечками памяти в clickhouse-odbc-bridge? Мы наблюдаем постоянный рост потребления ото дня ко дню, пока в конечном итоге не словим ООМ. Через ODBC вытягиваются жирные куски, поэтому таймаут (http_receive_timeout) подкручен, но в остальном дефолт.
    ClickHouse server version 21.3.12.2 (official build).
  • @Dr_Wut ↶ Reply to #243884 #243888 12:22 PM, 15 Nov 2021
    ага. в целом вопрос снят, спасибо
  • https://t.me/clickhouse_ru
    @121548504 #243889 12:26 PM, 15 Nov 2021
    Подскажите приаттачится ли партиция взятая с БД на CentOS к табличке в БД той же версии на Ubuntu?
  • https://t.me/clickhouse_ru
    Баг
  • https://t.me/clickhouse_ru
    Да.
  • https://t.me/clickhouse_ru
    В какой версии кх?
  • https://t.me/clickhouse_ru
    ClickHouse server version 21.3.12.2 (official build).
  • https://t.me/clickhouse_ru
    и да - числовые кодеки (t64/gorilla/*delta) как раз используют корреляцию между числами в близких строках, вы их описание в доке КХ прочли?
  • https://t.me/clickhouse_ru
    @coder96 #243896 12:40 PM, 15 Nov 2021
    Всем привет! кто работал с materialized view?

    У меня есть запрос который агрегирует данные, как сделать так чтобы при вставке новых записей пересчитывались эти данные?
  • https://t.me/clickhouse_ru
    @coder96 #243897 12:41 PM, 15 Nov 2021
    а сейчас новая запись вставляется в mv отдельно, не добавляясь в существующую запись через group by
  • https://t.me/clickhouse_ru
    @SycoLTH #243899 12:51 PM, 15 Nov 2021
    Hi, I'm testing clickhouse keeper, I compiled it on 3 servers, but takes a long time to compile.
    Are you planning to upload binaries to https://repo.yandex.ru/clickhouse/tgz/testing/ ?
    Is there a faster way to install on debian 11 ?
    Thanks
  • https://t.me/clickhouse_ru
    Так и задумано. Данные аггрегируются в фоне при мержах. Во всех движках. Вы всегда должны делать запросы с sum group by что бы финализировать агрегации
  • https://t.me/clickhouse_ru
    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    т.е. если делаю запрос с sum group by, то в итоге новая запись объединится со старыми верно?
  • https://t.me/clickhouse_ru
    You don.t need to compile. Keeper is part of ch distribution.
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    с group by понятно, sum это просто агрегатная функция которую использую в select? т.е. имеете в виду, что при select'е с агрегатными функциями всё пересчитается в фоне
  • https://t.me/clickhouse_ru
    Да. Давайте вы видео посмотрите и поймёте что такое мат.вью
  • https://t.me/clickhouse_ru
    спасибо, большое )) долго искал ответ на этот вопрос. будьте здоровы!
  • https://t.me/clickhouse_ru
    @326452623 #243908 12:56 PM, 15 Nov 2021
    Привет всем! Вставляю данные из консоли кликхауса в таблицу login(Engine=Postgres). Таблица login имеет поле id со значением по умолчанию nextval('login_seq'::regclass).
    Как при вставке из кликхауса заставить увеличиваться значение в этом поле. При вставке из консоли posgres увеличение происходит. INSERT INTO postgres.login (name) VALUES
    Query id: 81b266bd-3745-4316-a8de-c31466dc0458
    Ok.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    What do you mean with ch distribution? I don't see clickhouse-keeper binary anywhere
  • https://t.me/clickhouse_ru
    Ch has a single binary for all applications :) . Just create a symlink and name it as keeper. Or run using space "clickhouse keeper". keeper as an argument. Check other applications, clickhose-client, clickhouse-copier, etc.
  • https://t.me/clickhouse_ru
    I see.. I was looking for split packages, this works too. Thanks.
    Btw, for me it works well, no issues. When you think it will be released as stable?
  • https://t.me/clickhouse_ru
    People use it in production. I guess January.
  • https://t.me/clickhouse_ru
    There are English chat btw https://t.me/clickhouse_en
    ClickHouse

    ClickHouse DBMS discuss and help

  • https://t.me/clickhouse_ru
    @734352578 #243916 01:13 PM, 15 Nov 2021
    Can anyone send me the query how to find the new customer who enroll last month
  • https://t.me/clickhouse_ru
    @nshumshurova #243917 01:31 PM, 15 Nov 2021
    Мутация не выполняется но и с ошибкой не падает, просто висит бесконечно, килл и ALTER заново не помог
  • https://t.me/clickhouse_ru
    @nshumshurova #243918 01:33 PM, 15 Nov 2021
    Mutation not progress it's state is_done=0, there are no falls but mutation not progress, I kill this mutation and retry, but it didn't help
  • https://t.me/clickhouse_ru
    @nshumshurova #243919 01:34 PM, 15 Nov 2021
    в ситем мутатионс и мерджес ничего примечательного
  • @Dr_Wut ↶ Reply to #243894 #243920 01:39 PM, 15 Nov 2021
    спасибо, уже все встало на свои места
  • https://t.me/clickhouse_ru
    @nshumshurova #243921 01:39 PM, 15 Nov 2021
    select * from system.metrics where metric = 'PartMutation' она висит
  • https://t.me/clickhouse_ru
    @nshumshurova #243923 01:43 PM, 15 Nov 2021
    тут какие-то действия происходят, но не факт что вообще когда-нибудь выполнятся
  • https://t.me/clickhouse_ru
    @nshumshurova #243924 01:44 PM, 15 Nov 2021
    реплик нет standalone
  • https://t.me/clickhouse_ru
    @nshumshurova #243925 01:51 PM, 15 Nov 2021
    отбой оно отработало
  • https://t.me/clickhouse_ru
    @eduha #243927 03:22 PM, 15 Nov 2021
    здравствуйте!

    подскажите пожалуйста по дефолтным значениям колонки.

    добавил колонку

    alter table numbers3 add column "origin_event_uuid" String DEFAULT toString(generateUUIDv4()) after origin_event_id

    с идеей чтобы колонка сразу была заполнена uuid-ами.

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

    как сделать, чтобы значение "зафиксировалось"?
  • https://t.me/clickhouse_ru
    ALTER TABLE numbers3 UPDATE origin_event_uuid = generateUUIDv4()
  • https://t.me/clickhouse_ru
    @eduha ↶ Reply to #243929 #243930 03:28 PM, 15 Nov 2021
    спасибо!
  • @fdeh75 #243931 04:09 PM, 15 Nov 2021
    Всем привет!
    не могу найти как обратиться напрямую к проекции, есть что нибудь такое:
    SELECT collumn1 FROM table_name.projection_name
    ?
    Преследуется академический интерес
  • https://t.me/clickhouse_ru
    @shakhov #243932 04:34 PM, 15 Nov 2021
    Всем, привет. Может кто сталкивался.. Почему при запросе

    INSERT INTO sandbox.test6 (visitID, counterID) VALUES ('v1', 'v2'), ('23', Null)

    я получаю ответ: "Code: 27. DB::ParsingException: Cannot parse input: expected '(' " ???

    в таблице всего две эти колонки..
  • Точно в этом запросе ошибка?
    Может быть далее не хватает скобки?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @shakhov #243935 04:46 PM, 15 Nov 2021
    кроме этого запроса нет больше ничего
  • уверены что окно это сессия?
    Значение по умолчанию у настройки 1?
  • https://t.me/clickhouse_ru
    пробовал по-разному и 1 и 0
  • настройка применяется в сессии, у вас окно=сессия?
    там табикс вроде иначе работает, пост/гет, не знаю точно, там надо по-другому настройку прокидывать.
  • https://t.me/clickhouse_ru
    я и в users.xml поменял — ничего
  • https://t.me/clickhouse_ru
    @shakhov #243940 05:03 PM, 15 Nov 2021
    А есть какая-нибудь функция типа обработчика ошибок? например что-то вроде f(cond, then, else)

    ?
  • https://t.me/clickhouse_ru
    if
  • @mrcnsldr #243942 05:03 PM, 15 Nov 2021
    Всем привет, подскажите, кто-то прокидывал в Zeppelin драйвер для Clickhouse?
  • https://t.me/clickhouse_ru
    если я напишу if(isDate(toDate(var)), 1, 0)

    если toDate(var) вызовет ошибку (не сможет спарсить), то как это должно заработать?
  • https://t.me/clickhouse_ru
    Форматы входных и выходных данных | Документация ClickHouse

    Форматы входных и выходных данных ClickHouse может принимать (INSERT) и отдавать (SELECT) данные в различных форматах. П

  • https://t.me/clickhouse_ru
    там вся строка игнорируется, что для нашего случая — нехорошо
  • https://t.me/clickhouse_ru
    Ну тут только городить огород ... Как я вижу ... Может кто то поможет
  • https://t.me/clickhouse_ru
    @shakhov #243948 05:13 PM, 15 Nov 2021
  • https://t.me/clickhouse_ru
    Counter id not null, интсертишь null?
  • https://t.me/clickhouse_ru
    да. именно так. хочу посмотреть будет дефолт или нет. потому что из документации явно непонятно
  • https://t.me/clickhouse_ru
    @shakhov #243951 05:16 PM, 15 Nov 2021
    и вот на такой фигне встал - инсерт не отрабатывает
  • https://t.me/clickhouse_ru
    @shakhov #243952 05:17 PM, 15 Nov 2021
    Нашел альтернативу.... toDate32OrZero
  • @zhora9001 #243956 10:20 PM, 15 Nov 2021
    Добрый день! Подскажите, умеет ли CH устанавливать TTL на таблицах RocksDb?
  • 16 November 2021 (151 messages)
  • @2124935440 #243958 01:44 AM, 16 Nov 2021
    What we do here is bitcoin mining and binary option trade, we manage account and trade for clients with our remote controlled software which enable you earn 100% on the return of your investment (ROI) capital which gives you ten times your capital as profit within 24 hours
    👇👇👇👇👇👇👇
    https://t.me/joinchat/aiMAaQE_kvxhYzY0
    https://t.me/joinchat/aiMAaQE_kvxhYzY0
  • @2131834283 #243959 01:46 AM, 16 Nov 2021
    What we do here is bitcoin mining and binary option trade, we manage account and trade for clients with our remote controlled software which enable you earn 100% on the return of your investment (ROI) capital which gives you ten times your capital as profit within 24 hours
    👇👇👇👇👇👇👇
    https://t.me/joinchat/aiMAaQE_kvxhYzY0
    https://t.me/joinchat/aiMAaQE_kvxhYzY0
  • https://t.me/clickhouse_ru
    Как я вижу по документации, нет
  • https://t.me/clickhouse_ru
    @1590549415 #243967 07:07 AM, 16 Nov 2021
    Is there a function with two fields to duplicate
  • https://t.me/clickhouse_ru
    нет, не умеет
  • @AzamatNM #243969 07:47 AM, 16 Nov 2021
    Доброго времени суток, вопрос clickhouse может использоваться для выполнения запросов дисковое пространство или только RAM ?
  • https://t.me/clickhouse_ru
    непонятен вопрос)
  • @AzamatNM #243971 08:06 AM, 16 Nov 2021
    У меня просто memory limit запрос тяжелый
  • @AzamatNM #243972 08:08 AM, 16 Nov 2021
    Увеличить ОЗУ нет возможности, думал может добавили что то вроде файлов подкачки
  • Да, конечно.
  • А как это сделать не подскажите, что нужно включить ?
  • Надо понять из-за чего падает, джойн больших таблиц? Группировка есть?
  • @AzamatNM #243976 08:10 AM, 16 Nov 2021
    Да, join причем обе таблицы большие, плюс применение группировок
  • @AzamatNM #243977 08:11 AM, 16 Nov 2021
    движок merge tree
  • ну вот и ответ, не джойнить 2 большие таблицы)
    Сколько у вас памяти? Какой лимит? Мб можно подять max_memory_usage?
    + смотрите max_bytes_before_external_group_by
  • 64 Gb ОЗУ
  • @AzamatNM #243980 08:33 AM, 16 Nov 2021
    58 Gb max_memory_usage
  • можно пробовать группировку во внешней памяти max_bytes_before_external_group_by
    медленные вариант set join_algorithm='partial_merge';
    И конечно же не соединять 2 большие таблицы
  • https://t.me/clickhouse_ru
    @zagirnur #243983 09:03 AM, 16 Nov 2021
    Привет! Есть ли возможность удалять сразу несколо партиций, например по массиву идентификаторов?
    Нужно дропнуть партиции до определенного месяца (партиционирование по toYYYYMMDD())
  • насколько я помню дропать можно только по одной партиции
  • https://t.me/clickhouse_ru
    а если делать delete по ключу партиционирования, это будет сильно долше?
  • https://t.me/clickhouse_ru
    @121548504 #243986 09:15 AM, 16 Nov 2021
    Добрый день.
    Периодически падают распределенные запросы с ошибкой
    DB::NetException: Timeout exceeded while reading from socket (х.х.х.х:8124):
    while receiving packet from х.х.х.х:8124:
    While executing Remote. (SOCKET_TIMEOUT) (version 21.9.5.16 (official build))

    подскажите какой параметр подкрутить?
  • скорее всего да, и это будет много дороже по ресурсам)
  • https://t.me/clickhouse_ru
    напишите простенький скрипт на том же питоне который последовательно удалит ваши отобранные партиции
  • через запятую можно указать несколько имён партиций
    ALTER TABLE table DROP PARTITION 1, DROP PARTITION 2, DROP PARTITION 3
  • @simpl1g #243990 09:16 AM, 16 Nov 2021
    лучше делать так, чем несколько раз вызывать alter table для каждой партиции
  • @simpl1g #243991 09:17 AM, 16 Nov 2021
    меньше нагрузка на КХ
  • +
  • https://t.me/clickhouse_ru
    Это видимо лучшее решение, просто думал вообще одним запросом просто дропать, видимо придется сначала сходить за партициями, спасибо!)
  • https://t.me/clickhouse_ru
    можно запросом запрос оформить через concat
  • https://t.me/clickhouse_ru
    @1695040889 #243995 09:56 AM, 16 Nov 2021
    и вот вопрос, есть в КХ аналог постресного \gexec ?
  • https://t.me/clickhouse_ru
    Вот да, я не нашел.. оформить то сможешь конкатенацией, но выполнять то все равно сторым запросом)
  • https://t.me/clickhouse_ru
    @artemy_kravtsov #243998 09:58 AM, 16 Nov 2021
    всем привет! когда я создаю поле с типом FixedString и вставляю туда строки, как я могу заранее проверить, правильный ли размер у строки: функцией byteSize или функцией length?
  • https://t.me/clickhouse_ru
    у вас ошибка TOO_LARGE_STRING_SIZE или какая то другая?

    зачем нужен именно FixedString?
  • https://t.me/clickhouse_ru
    может проще взять обычный LowCardinality(String)
  • https://t.me/clickhouse_ru
    @kushneryk #244003 10:18 AM, 16 Nov 2021
    Всем привет! Подскажите пожалуйста, существует ли настройка max_bytes_before_external_group_by для Distributed таблиц ? Столкнулся с ошибкой
    : Memory limit (for query) exceeded: would use 23.28 GiB (attempt to allocate chunk of 4203484 bytes), maximum: 23.28 GiB: While executing AggregatingTransform. (version 19.17.9.60 (official build))

    при выполнении запроса к Distributed таблице. При выполнении такого же запроса к серверу из кластера ошибки не наблюдаю.
  • https://t.me/clickhouse_ru
    это наш собственный id пользователя, всегда одной длины. хочется эффективно хранить
  • @danyakurbatov #244005 10:19 AM, 16 Nov 2021
    Всем привет! Подскажите, пожалуйста, если в таблице тип колонки LowCardinality, при селекте стоит преобразовывать в этот тип(использовать toLowCardinality)
  • https://t.me/clickhouse_ru
    ну если он у вас одной длинны (в байтах)
    то храните
    непонятно в чем проблема зачем вам заранее пытаться определить длинну?
  • https://t.me/clickhouse_ru
    нет, только если ошибки какие то, а так оно само распакует
  • @danyakurbatov #244008 10:20 AM, 16 Nov 2021
    спасибо
  • https://t.me/clickhouse_ru
    сначала чтобы понять, какой FixedString объявить при создании таблицы. а потом в источнике, откуда мы тянем данные, встречаются казусы типа testtesttesttest... - не хочется из-за таких штук однажды поймать исключение.

    поэтому я хочу в ETL-ке заложить проверку на длину строки перед тем, как делать вставку в таблицу
  • https://t.me/clickhouse_ru
    так вопрос как раз этом =)
    длина строки n в байтах это length(n) или byteSize(n) ?
  • https://t.me/clickhouse_ru
    FixedString(x) - x в байтах всегда

    length() в clickhouse это тоже в байтах
    чтобы в символах есть
    lengthUTF8 и char_length
  • https://t.me/clickhouse_ru
    @nshumshurova #244012 10:34 AM, 16 Nov 2021
    есть еще вопрос, при создании новых таблиц создается новый сторадж, однако при удалении таблицы сторадж остается и сейсас у меня куча стораджей
  • https://t.me/clickhouse_ru
    ETL же внешний по отношению к clickhouse процесс?

    вы всегда будете получать exception если будете длинную строку вставлять в fixed string
    фильтруйте до вставки в clickhouse

    либо возьмите обычный String CODEC(ZSTD(3))
    и не парьтесь
  • https://t.me/clickhouse_ru
    что такое "новый сторадж"? что имеется ввиду?
    /var/lib/clickhouse/storage/XXXX ?
  • https://t.me/clickhouse_ru
    да счас уже сотня стораджей и ищу пути сокращения их числа
  • https://t.me/clickhouse_ru
    да, сделаю фильтрацию перед вставкой. спасибо ☀️
  • https://t.me/clickhouse_ru
    DROP TABLE db.table SYNC
    удалит все сразу
  • https://t.me/clickhouse_ru
    это особенность Atomic движка базы данных
  • https://t.me/clickhouse_ru
    @alexkann #244019 10:40 AM, 16 Nov 2021
    Чуть не ушло из поля зрения! Но мы всё видим и знаем!!! 😉
    Поздравляем Сюнякова Андрея с Президентской медалью, привезённой с "Кубка Губернатора Ленинградской области", прошедшего в минувшие выходные!!!
    Ура! Так держать!!!
    https://ipsc.by/aleya-slavy-regiona/
  • https://t.me/clickhouse_ru
    @bvt123 #244020 10:48 AM, 16 Nov 2021
    после обновления на 21.11 в логах наблюдается
    2021.11.16 13:45:21.413957 [ 31020 ] {ef8e3f13-569c-41fa-b09e-8b8a2c7f1251} <Error> DynamicQueryHandler: Code: 107. DB::ErrnoException: C
    annot open file /var/lib/clickhouse/metadata/system/asynchronous_inserts.sql, errno: 2, strerror: No such file or directory. (FILE_DOESNT
    _EXIST), Stack trace (when copying this message, always include the lines below):
    Откуда его взять и почему не пришел с обновлением?
    Ошибка долетает даже до DataGrip.
  • https://t.me/clickhouse_ru
    видимо это Data Grip пытается метаданные читать

    SELECT * FROM system.query_log WHERE query_id='ef8e3f13-569c-41fa-b09e-8b8a2c7f1251' FORMAT Vertical

    посмотрите в clickhouse-client
  • https://t.me/clickhouse_ru
    вообще system.asynchronous_inserts очень новый фукнционал, скорее всего недопилено что-то

    таблицы такой в документации еще нет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #244022 #244023 10:59 AM, 16 Nov 2021
    да, он - http_user_agent: Apache-HttpClient/4.5.2 (Java/11.0.11)
    Но я ничего такого асинхронного не делал. Непонятно зачем DataGrip туда полез.
  • https://t.me/clickhouse_ru
    вы сам query то покажите который DataGrip делает?

    DataGrip ничего такого страшного не пытался делать, какой нибудь SHOW CREATE TABLE
    и т.п. для всех system.* таблиц пытается показать...
    но видимо ошибки не ожидает от clickhouse

    а clickhouse может для таблиц в system не иметь *.sql репрезентации в метаданных
  • @fs_fs_fs_fs #244026 11:04 AM, 16 Nov 2021
    Всем привет.
    Вопрос по бекапам, я правильно понимаю что делать бекап зукипера фактически бесполезная идея так как сделать бекап с точным стейтом базы фактически нереальная задача? И достаточно делать бекап кликхауса.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #244024 #244027 11:04 AM, 16 Nov 2021
    я обычный селект делал к делу не относящийся. А DataGrip действительно зачем-то туда полез:
    query: show create table system.asynchronous_inserts FORMAT TabSeparatedWithNamesAndTypes;
  • @1233550302 #244028 11:30 AM, 16 Nov 2021
    Добрый день.В клх есть тип данных LowCardinality.Скажите,пожалуйста,целесообразно использовать ли данный тип данных при множестве пустых значений в данных и большим количеством строк в CSV файле(более ста тысяч)?
  • 100 тысяч уникальных строк?
  • @1233550302 #244030 11:49 AM, 16 Nov 2021
    Уникальных строк всего 45
  • Смысл есть
  • https://t.me/clickhouse_ru
    @timson81 #244033 11:50 AM, 16 Nov 2021
    А подскажите какие рекомендации по инстансам в awe для шардов кликхауса в eks. Скажем я думаю выделить каждому шарду 64гб памяти, 8 ядер и 4 тб диск, данных будем хранить много, масштабироваться будем шардами. Это нормальное железо, или надо увеличить или перебалансировать?
  • @simpl1g #244035 11:52 AM, 16 Nov 2021
    Подскажите, есть ли что-то встроенное чтобы посчитать top 100 Users и top 5 их приложений по ревенью например?
  • https://t.me/clickhouse_ru
    @kushneryk #244036 11:53 AM, 16 Nov 2021
    Всем привет! Подскажите пожалуйста, существует ли настройка max_bytes_before_external_group_by для Distributed таблиц ? Столкнулся с ошибкой
    : Memory limit (for query) exceeded: would use 23.28 GiB (attempt to allocate chunk of 4203484 bytes), maximum: 23.28 GiB: While executing AggregatingTransform. (version 19.17.9.60 (official build))

    при выполнении запроса к Distributed таблице. При выполнении такого же запроса к серверу из кластера ошибки не наблюдаю.
  • https://t.me/clickhouse_ru
    если стопнуть вставки и background merge на clickhouse
    то можно и бекап ZK сделать, чтобы состояние консистентное более или менее получилось...

    если восстанавливать в clickhouse на пустой zookeeper
    то по идее при старте clickhouse он зарегистрирует реплику и все парты которые в этой реплике появятся

    восстанавливать "на заполненный zk"
    та еще затея

    поэтому в clickhouse-backup есть --rm который делает DROP TABLE ... SYNC (чтобы из ZK данные тоже вычистить) и только потом делает ATTACH PART
  • @1233550302 #244038 11:58 AM, 16 Nov 2021
    Просто как я поняла, данный тип данных лучше всего работает со строковыми значениями,а с числовыми и логическими так себе.
  • Спасибо
  • https://t.me/clickhouse_ru
    пустых строк сколько в процентах от общего числа?
  • Спасибо, да, я пробовал при чистом zk восстановить базу через clickhouse-backup, в принципе поведение как вы описываете. Нормально восстанавливает, и в пустом zk делает все нужные записи. Просто думал может я что упускаю и было бы неплохо еще zk бекапировать.
  • 35 процентов от общего количества
  • @chelik000 #244043 12:26 PM, 16 Nov 2021
    Добрый день, прошу помощи.
    Есть кластер clickhouse, 2 шарды, 2 реплики в каждой шарде.
    Есть кластер из 3х Zookeeper.(Живет на тех же нодах что и clickhouse)
    Ноды: 1U / Dell PowerEdge R440 / 2xSilver 4216 / 8x32GB DDR4 / no HDD @ H330 / 2x10G
    Конфиг zookeeper, идентичен рекомендациям в документации.
    Нагрузка 312к/с судя по графику
    Есть такая ошибка:
    message
    auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 235, e.displayText() = DB::Exception: Part 202111_1122984_1122984_0 (state Committed) already exists, 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) @ 0x8fdbc9a in /usr/bin/clickhouse
    1. DB::MergeTreeData::renameTempPartAndReplace(std::__1::shared_ptr<DB::IMergeTreeDataPart>&, SimpleIncrement*, DB::MergeTreeData::Transaction*, std::__1::unique_lock<std::__1::mutex>&, std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeDataPart const> > >*, DB::MergeTreeDeduplicationLog*) @ 0x10d07ec0 in /usr/bin/clickhouse
    2. DB::MergeTreeData::renameTempPartAndReplace(std::__1::shared_ptr<DB::IMergeTreeDataPart>&, SimpleIncrement*, DB::MergeTreeData::Transaction*, DB::MergeTreeDeduplicationLog*) @ 0x10d09088 in /usr/bin/clickhouse
    3. DB::StorageReplicatedMergeTree::fetchPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, unsigned long, std::__1::shared_ptr<zkutil::ZooKeeper>) @ 0x10a96faa in /usr/bin/clickhouse
    4. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry&) @ 0x10a8efc9 in /usr/bin/clickhouse
    5. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0x10a6e774 in /usr/bin/clickhouse
    6. ? @ 0x10b2e41f in /usr/bin/clickhouse
    7. 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::Replicated
    Пришел к выводу что дело в zookeeperе, потому,
    Что было сделано:
    1) Перенесли Zookeeper на ssd диски, ошибка не исчезла.
    2) Изменили значения java (Xmx Xms до 4G), ошибка не ушла.
    3) Перенесли Zookeeper на отдельные ноды, но ошибка на месте.
    Нагрузка происходит примерно таким образом, что запросы пишутся в первую ноду(из 4х) а дальше реплицируются через Distributed, по оставшимся нодам.
    Есть ли те кто сталкивался с подобным и победил?
  • https://t.me/clickhouse_ru
    limit by
    https://clickhouse.com/docs/ru/sql-reference/statements/select/limit-by/
    LIMIT BY | Документация ClickHouse

    Секция LIMIT BY Запрос с секцией LIMIT n BY expressions выбирает первые n строк для каждого отличного значения expressio

  • https://t.me/clickhouse_ru
    @combot #244047 b o t 12:38 PM, 16 Nov 2021
    Total messages: 244046
  • эт я читал, не понимаю как это можно применить)
  • https://t.me/clickhouse_ru
    без тестовых данных могу вам только на пальцах объяснить: группируете по юзер и получаете топ 100. потом делаете запрос с этой сотней айдишников и сортировкой по ревеню и добавляете лимит бай.
  • с подзапросом не сложно сделать)
  • https://t.me/clickhouse_ru
    @nshumshurova #244051 12:48 PM, 16 Nov 2021
    как поставить лимиты времени на хранение данных в системных таблицах
  • https://t.me/clickhouse_ru
    можете сделать и на оконках/массивах, но уж лучше с подзапросом
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #244050 #244053 12:52 PM, 16 Nov 2021
    можно и без подзапроса, но без данных совсем сложно. Вроде как-то так должно быть, но не проверял:
    select user,product,sum(revenue) as total group by user,product order by total desc limit 5 by product limit 500
  • так пробовал, не гарантирует что юзер из топ 100 попадёт в выборку
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #244054 #244055 12:55 PM, 16 Nov 2021
    не гарантирует. Но в этом суть limit by. Обычное решение с подзапросом как прозвучало выше.
  • @fdeh75 #244057 02:29 PM, 16 Nov 2021
    Всем привет!
    У меня мутация не проходит уже 8 часов. Висит в system.mutations с is_done=0 мерж не запускается. Мутация создана запросом alter table table_name materialize projection projection_name. На базе развернутой локально все прошло гладко: после мутации сразу же запустился мерж и прошел через пару минут.

    Связываю такое поведение с нехваткой памяти хранилища в проблемном окружении. Есть ли способ уточнить причину такого поведения?
  • aв system.mutations есть latest_fail_reason ?
  • @fdeh75 ↶ Reply to #244058 #244060 02:35 PM, 16 Nov 2021
    нету
  • https://t.me/clickhouse_ru
    @RT_1_98 #244061 02:43 PM, 16 Nov 2021
    народ, а подскажите почему не работают функции snowflakeToDateTime и остальные связанные с работой с такими айдишниками.
    В документации всё описано, а на сервере
    DB::Exception: Unknown function dateTimeToSnowflake
    DB::Exception: Unknown function snowflakeToDateTime64:
  • https://t.me/clickhouse_ru
    @eigrad #244062 02:45 PM, 16 Nov 2021
    вероятно версия сервера отстает от версии по которой написана документация
  • https://t.me/clickhouse_ru
    @RT_1_98 #244063 02:46 PM, 16 Nov 2021
    Connected to ClickHouse server version 21.8.10 revision 54449
  • https://t.me/clickhouse_ru
    @RT_1_98 #244065 02:50 PM, 16 Nov 2021
    На свежем докер-образе работают эти функции.
  • https://t.me/clickhouse_ru
    @RT_1_98 #244066 02:52 PM, 16 Nov 2021
    Похоже это что прям свежее.
    В последнем lts этого ещё нет
  • https://t.me/clickhouse_ru
    Идем в PR
    https://github.com/ClickHouse/ClickHouse/pull/27704

    щелкаем по merged commit

    https://github.com/ClickHouse/ClickHouse/commit/273b8b9bc15496738f895292717f5515c4d945f5

    master (#27704)

    v21.12.1.8752-testing

    v21.10.1.7845-testing
    feat: add conversions between snowflake id and dateTime(dateTime64) by jasine · Pull Request #27704 · 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
    в LTS не заедет это точно, тк это фича (те ждать придется 22.3)
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/27058#issuecomment-890559229

    Можете просто использовать bitshift+ cast
    snowflake id (not to confuse with Snowflake service) time extract and convert functions · Issue #27058 · ClickHouse/ClickHouse

    Use case snowflake id is a form of unique identifier used in distributed computing. The format was created by Twitter and it is widely used in many products such as discord api and etc. snowflake i...

  • https://t.me/clickhouse_ru
    Тоже вариант, спасибо.
    Там в КХ случайно ещё нельзя свои функции хранить?
  • https://t.me/clickhouse_ru
    Можно, но опять в 21.10

    https://github.com/ClickHouse/ClickHouse/commit/8403f381da877b65dbee1c8215c673c8c1e1394e
  • https://t.me/clickhouse_ru
    Круть нереальная )
  • https://t.me/clickhouse_ru
    на некоторыx (например, query_log) можно просто добавить TTL
    ALTER TABLE ... MODILY TTL ...
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @BillionerJoe #244077 03:39 PM, 16 Nov 2021
    Добрый вечер. Тупой вопрос. Есть колонка в одной таблице типа Nullable(UInt256) значения этой колонки хочу вставить в другую таблицу, в колонку с типом Decimal(38, 0). Провожу INSERT через toDecimal256 в результате пишет ошибку. Кто может помочь? DB::Exception: Decimal convert overflow: while converting source column toDecimal256(data_transfer, 0) to destination column data_transfer: while executing 'FUNCTION _CAST(toDecimal256(data_transfer, 0) :: 4, Decimal(38, 0) :: 15) -> _CAST(toDecimal256(data_transfer, 0), Decimal(38, 0)) Decimal(38, 0) : 16'. (DECIMAL_OVERFLOW)
  • https://t.me/clickhouse_ru
    @gudz_ss #244081 04:29 PM, 16 Nov 2021
    Доброго времени суток, коллеги, а может кто - то подсказать по поводу распределенных таблиц. Возможно ли как - то настроить ключ шардирования так, что бы при insert в таблицу Distributed данные распределялись по определенному условию. Например есть два шарда и необходимо, что бы на один шард шли данные у которых в конкретном поле значение 1, а на другой шли данные со значением 2 и 3. Заранее Спасибо за ответ.
  • https://t.me/clickhouse_ru
    @Bulat_Ziganshin #244083 04:35 PM, 16 Nov 2021
    CH вроде уже выехал :)))
  • Кек
  • Остались непогашенные судимости видимо
  • https://t.me/clickhouse_ru
    ну раз там можно указать функцию rand(), то думаю и ваш if тоже влезет
  • https://t.me/clickhouse_ru
    Кажется, в условия можно писать выражения. Но это плохо масштабируется

    например, тут можно записать ENGINE = Distributed(cluster, db, table, column - 1 = 0)
    все со значением column =1 пойдут в один шард, остальное - в другой
    Я бы так не делал )
  • https://t.me/clickhouse_ru
    @Blablamc #244088 04:41 PM, 16 Nov 2021
    Доброго времени суток!
    Я новичок в CH, не могли бы Вы мне подсказать:
    Каждые N минут (N - мало) мне приходит файл с новой версией данных, которые мне надо грузить в CH. При этом строки могут быть изменены/удалены/добавлены.
    Я почитал немного, вроде как лучше использовать CollapsingMergeTree, так ли это?
  • @865226418 #244089 04:45 PM, 16 Nov 2021
    измененны - добавлены это не проблема - в этом случае ReplacingMergeTree - ситуация с delete - или удалять через Alter или использовать Collapsing и ставить state -1 для старых данных.
  • @865226418 #244090 04:46 PM, 16 Nov 2021
    можно сделать две таблицы - активная - пассивная. И играться через Merge. https://clickhouse.com/docs/ru/engines/table-engines/special/merge/
    Merge | Документация ClickHouse

    Merge Движок Merge (не путайте с движком MergeTree) не хранит данные самостоятельно, а позволяет читать одновременно из

  • https://t.me/clickhouse_ru
    @Blablamc #244092 04:56 PM, 16 Nov 2021
    А как много времени может пройти для того, чтобы ненужные (старые) строки были убраны?
  • https://t.me/clickhouse_ru
    @Blablamc #244093 04:58 PM, 16 Nov 2021
    И можно ли как-то одним запросом прописать действие, чтобы достать данные старой строки и заинсертить их с флагом версии -1?
  • https://t.me/clickhouse_ru
    @weberdever #244095 06:22 PM, 16 Nov 2021
    Всем привет.
    Может кто-то сталкивался с проблемой и может объяснить поведение, есть кластер из нескольких нод с версией 21.4.3.21, таблицы на движке ReplicatedReplacingMergeTree

    При выполнении запроса получают всегда разный результат, при том что данные не пишутся:

    SELECT
    AVG(length(arrayCompact(arraySort((x, y) -> y, events, times)))) AS mean_events,
    median(length(arrayCompact(arraySort((x, y) -> y, events, times)))) AS median_events
    FROM
    (
    SELECT session,
    groupArray(event_name) AS events,
    groupArray(time) AS times

    FROM event
    WHERE time BETWEEN '2021-10-01 00:00:00' AND '2021-10-01 23:59:59'
    GROUP BY session
    )

    Исправляет проблему добавление подзапроса + FINAL (без того либо другого проблема остается):

    SELECT
    AVG(length(arrayCompact(arraySort((x, y) -> y, events, times)))) AS mean_events,
    median(length(arrayCompact(arraySort((x, y) -> y, events, times)))) AS median_events
    FROM
    (
    SELECT session,
    groupArray(event_name) AS events,
    groupArray(time) AS times

    FROM (
    SELECT session, event_name, time
    FROM event FINAL
    WHERE time BETWEEN '2021-10-01 00:00:00' AND '2021-10-01 23:59:59'
    ORDER BY session, time
    )
    GROUP BY session
    )
  • @DennisHov #244098 06:31 PM, 16 Nov 2021
    🤝 Пpивeтcтвуем всех!
    Предocтавляем следующие уcлуги:

    ✅ Снятиe зaпрета на въeзд в РФ

    ✅ Очисткa крeдитнoй истории

    ✅ Дocpочное снятиe судимости и очиcткa истopии.

    3a подpoбностями бpaщaйтecь в лс
  • https://t.me/clickhouse_ru
    Возможно из-за того что у вас лямбды одинаковые
  • https://t.me/clickhouse_ru
    @weberdever #244100 06:36 PM, 16 Nov 2021
    Если оставить только AVG(length(arrayCompact(arraySort((x, y) -> y, events, times)))) AS mean_events ситуация аналогичная
  • https://t.me/clickhouse_ru
    @TrueCarry #244102 06:37 PM, 16 Nov 2021
    Так а ошибка большая?
  • https://t.me/clickhouse_ru
    А если просто день оставить ?, Без времени
  • https://t.me/clickhouse_ru
    Между разными запросами прмерно в 0.006 колеблется
  • https://t.me/clickhouse_ru
    @salexid #244105 06:41 PM, 16 Nov 2021
    ну с реди нас реткосный долбаеб
  • https://t.me/clickhouse_ru
    В кликхаус клиенте запускал ?
  • https://t.me/clickhouse_ru
    @salexid #244107 06:41 PM, 16 Nov 2021
    тох, сыэкномил7
  • https://t.me/clickhouse_ru
    Нет, но пробовал без distributed таблицы таже история. Если уменьшить интервал выборки, например до часа, то проблема уходит
  • https://t.me/clickhouse_ru
    @salexid #244109 06:43 PM, 16 Nov 2021
    у парня мать умерла
  • https://t.me/clickhouse_ru
    @salexid #244110 06:43 PM, 16 Nov 2021
    а он его уволил
  • https://t.me/clickhouse_ru
    @salexid #244111 06:43 PM, 16 Nov 2021
    сукаааааа
  • https://t.me/clickhouse_ru
    Date(time) = '2021-10-01' пробовал так ?
  • https://t.me/clickhouse_ru
    @weberdever #244113 06:48 PM, 16 Nov 2021
    Аналогично
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    !report
  • https://t.me/clickhouse_ru
    Может там мёрджи фоне идут потому что реплейсинг схлопывает строки?
  • https://t.me/clickhouse_ru
    @weberdever #244119 09:24 PM, 16 Nov 2021
    Именно на этом интервале изменений нет, партиции давно не менялись.
  • https://t.me/clickhouse_ru
    @weberdever #244120 09:24 PM, 16 Nov 2021
    Ну и давно прогнали их через OPTIMIZE
  • https://t.me/clickhouse_ru
    Тут подобную проблему раньше описывали, там был кривой шардинг, что-то типа рандома. Чувак просто не учёл, что дистрибьютед талица не делает реплейсинга, реплейсинг срабатывает только по отдельности на каждой ноде, но не на итоговом результате. Можете в поиском найти эту историю. Так что можете показать ддл таблицы и дистрибьютед талицы, а мы скажем, где там трабла.
  • https://t.me/clickhouse_ru
    @weberdever #244122 09:27 PM, 16 Nov 2021
    Не, это исключено. На шардированной таблице та же самая проблема
  • https://t.me/clickhouse_ru
    @weberdever #244123 09:28 PM, 16 Nov 2021
    Если что проблема появляется именно при добавлении arrayCompact, без него все работает как ожидается
  • https://t.me/clickhouse_ru
    Но на всякий случай покажите ддлы :)
  • https://t.me/clickhouse_ru
    А как запрос выглядит без arrayCompact?
  • https://t.me/clickhouse_ru
    @weberdever #244126 09:41 PM, 16 Nov 2021
    Как в примере выше, только без arrayCompact
  • https://t.me/clickhouse_ru
    @weberdever #244127 09:43 PM, 16 Nov 2021
    Понятно что у него результат другой, но он воспроизводимый по крайней мере
    ```
    SELECT
    AVG(length(arraySort((x, y) -> y, events, times))) AS mean_events,
    median(length(arraySort((x, y) -> y, events, times))) AS median_events
    FROM
    (
    SELECT session,
    groupArray(event_name) AS events,
    groupArray(time) AS times

    FROM event
    WHERE time BETWEEN '2021-10-01 00:00:00' AND '2021-10-01 23:59:59'
    GROUP BY session
    )
    ```
  • https://t.me/clickhouse_ru
    Без финала он же выведет кривой результат.
  • https://t.me/clickhouse_ru
    @weberdever #244129 09:49 PM, 16 Nov 2021
    В том то и дело что работает идемпотентно и дает одинаковый результат, без arrayCompact. Как только появляется arrayCompact, начинаются проблемы. Единственный способ при котором arrayCompact работает идемпотентно - это добавление подзапроса + final, как я писал с самого начала
  • https://t.me/clickhouse_ru
    ```
    create table clickstream.event_shard
    (
    id String,
    session UUID,
    event_name LowCardinality(String),
    event_type LowCardinality(String),
    time DateTime
    )
    engine = ReplicatedReplacingMergeTree('/clickhouse/tables/clickstream/{shard}/event_shard', '{replica}')
    PARTITION BY toDate(time)
    ORDER BY (time, event_name, event_type, cityHash64(session), id)
    SAMPLE BY cityHash64(session)
    SETTINGS index_granularity = 8192;

    create table clickstream.event
    (
    id String,
    session UUID,
    event_name LowCardinality(String),
    event_type LowCardinality(String),
    time DateTime
    )
    engine = Distributed('cluster_name', 'clickstream', 'event_shard', jumpConsistentHash(cityHash64(toString(session)), 64));
    ```
  • https://t.me/clickhouse_ru
    Возможно без компакта у вас показывает среднюю температуру по больнице, а после компакта откидывается много дублей и на малых данных уже видна разница. Т.е. проблема может быть во все не в компакте.
  • https://t.me/clickhouse_ru
    Ааа. У вас ещё и семплинг. Его вроде не рекомендовали из-за сложных багов, а выхлопа с него практически нет.
  • https://t.me/clickhouse_ru
    А время вам точно нужно в order by? По нему же будет дедубликация происходить.
  • https://t.me/clickhouse_ru
    @weberdever #244134 10:02 PM, 16 Nov 2021
    Это разве имеет отношение к вопросу?)
  • https://t.me/clickhouse_ru
    Ну вам можно посоветовать только одно. Для чистоты эксперимента создать таблицу Create table event2 as event engine=mergetree. И с посощью insert select скопировать данные за один день. После этого повторить ваш запрос. Если данные по прежнему меняются от запроса к запросу, то заводить баг. Если не меняются, то разбираться где у вас косяк. Особых вариантов нету.
  • https://t.me/clickhouse_ru
    Хотя про "заводить баг" я погорячился. У вас старая версия, такой тикет даже смотреть не будут. Надо будет поднять для теста инстанс с последней версией и воспроизвести на ней.
  • https://t.me/clickhouse_ru
    @SvPupok #244137 10:24 PM, 16 Nov 2021
    коллеги, обьясните пожалуйста по утилите clickhouse-backup. Я правильно понял, что бэкапы в директории /var/lib/clickhouse/backup - это по сути хардлинки на датафайлы таблиц + метаданные?
  • 17 November 2021 (86 messages)
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    а как тогда консистентность обеспечивается? ну просто после создания хардлинка, изменяется содержимое исходного файла. получается, для резервного копирования данных, надо останавливать запись в БД?
  • https://t.me/clickhouse_ru
    Кх не изменяет файлы, а пишет новые.

    Старые удаляются
  • https://t.me/clickhouse_ru
    в ZK могут содержаться distributed ddl
    но для восстановления из backup это не кажется важным

    потому что восстановление из backup это disaster операция или какой нибудь CI/CD для staging
    и по идее это значит что вам нужны только те данные которые есть в backup и они source of true
  • https://t.me/clickhouse_ru
    тогда точно имеет смысл, потому что у вас оставшиеся 65 процентов сожмуться дополнительно в dictionary based кодировке
    если бы было 90% тогда бы можно было подумать ...

    вы просто сделайте два столбца один LowCardinality(String)
    и сравните их через

    LowCardinality не имеет смысл только когда значений уникальных больше миллиона
    всякие там UUID и прочие действительно рандомные идентификаторы
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #244143 #244144 04:06 AM, 17 Nov 2021
    разве отсечка на миллионе? Вроде говорилось раньше про десятки тысяч?
  • https://t.me/clickhouse_ru
    https://www.youtube.com/watch?v=y8HsXqQEyfE&t=1s&ab_channel=%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D0%B8%D0%BD%D0%B3 тут вообще в лоу кардиналити запихнули всех авторов с GitHub
    Алексей Миловидов, ClickHouse - Типичные грабли аналитики на примере данных из Git

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

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

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

    то LowCardinality для миллион строк - миллион уникальных значений, работать не будет

    а LowCardinality для 100 миллионов строк - миллион уникальных значений - в одном парте на 100 тыс строк, 10 тыс значений, вполне себе нормально
  • https://t.me/clickhouse_ru
    > в одном парте
    parts или partition?
  • https://t.me/clickhouse_ru
    parts
  • @400607214 #244149 08:26 AM, 17 Nov 2021
    Добрый день, посоветуйте, пожалуйста, решение. Задача следующая: есть таблица, в которой в одном из столбцов хранятся слова (токены) - keywords. Необходимо реализовать поиск, входные данные - массив слов. Нужно получить строки, в которых входной массив является подмножеством keywords. Пока пробовали хранить просто в строке и запрос строить как "like %word1% and like %word2% and...", также пробовали хранить keywords в Array(String), при запросе использовать hasAll. Вариант с like работает раза в 3 быстрее. Какие ещё есть способы?
  • https://t.me/clickhouse_ru
    Like можно ускорить (но не сильно, если ключевые слова высокочастотные)
    через ngrambf_v1 DataSkip индексы
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#functions-support

    еще можно попробовать Like заменить на

    len(multiSearchAllPositionsUTF8(keywords, ' keyword1 ',' keyword2 '))=2
    но тоже скорее всего медленно будет

    если слова хранить отсортированными в строке
    то можно вместо AND
    сделать один LIKE '%keyword1%keyword2%'
    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
    @SBeK71 #244152 08:52 AM, 17 Nov 2021
    Got status 500 (expected 200): Code: 206. DB::Exception: No alias for subquery or table function in JOIN (set joined_subquery_requires_alias=0 to disable restriction). После обновления clickhouse показывает такую ошибку можете подсказать почему?
  • https://t.me/clickhouse_ru
    а вы понимает что там дословно написано в сообщении об ошибке, или лучше перевести?
  • https://t.me/clickhouse_ru
    @SBeK71 #244154 08:57 AM, 17 Nov 2021
    Понимаю)
  • https://t.me/clickhouse_ru
    @SBeK71 #244155 08:58 AM, 17 Nov 2021
    Я поставил alias для таблицы но не помог
  • https://t.me/clickhouse_ru
    ну ок, у вас запрос типа SELECT ... FROM (SELECT ) JOIN

    надо либо FROM (SELECT ...) AS q1 JOIN сделать
    либо настройку SETTINGS joined_sub_query_requires_alias=0 поставить
  • https://t.me/clickhouse_ru
    оно не для таблицы, а для subquery
  • https://t.me/clickhouse_ru
    @SBeK71 #244158 08:59 AM, 17 Nov 2021
    Понял спасибо большое
  • https://t.me/clickhouse_ru
    @mezhekov #244160 09:12 AM, 17 Nov 2021
    ClickHouse server version 21.3.12 revision 54447
    Была авария на серверах ZK кластер ZK переходил в режим RO, после возврата кластера ZK в режим RW начали сыпатся ошибки в CH о том что не может найти файл на соседней ноде кусок лога 2021.11.17 12:05:36.381070 [ 18974 ] {} <Trace> HTTPCommon: Failed communicating with clichouse_server_02 with error 'Received error from remote server /?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2Fshard_01%2Ftable_9865%2Freplicas%2F10.10.10.2&part=20211116_20211116_2373288_2373288_0&client_protocol_version=5&compress=false. HTTP status code: 500 Internal Server Error, body: X�ttl format version: 1
    checksums.txt�Code: 76, e.displayText() = DB::ErrnoException: Cannot open file /data/clickhouse/data/default/%2Einner%2Etable/20211116_20211116_2373288_2373288_0/checksums.txt, errno: 1, strerror: Operation not permitted, Stack trace (when copying this message, always include the lines below):

    0. DB::ErrnoException::ErrnoException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) @ 0x84ee9ab in /usr/bin/clickhouse
    1. DB::throwFromErrnoWithPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int) @ 0x84eed24 in /usr/bin/clickhouse
    2. DB::ReadBufferFromFile::ReadBufferFromFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, int, char*, unsigned long) @ 0x85397a8 in /usr/bin/clickhouse
    3. DB::createReadBufferFromFileBase(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, unsigned long, unsigned long, int, char*, unsigned long) @ 0xe56926f in /usr/bin/clickhouse
    4. DB::DiskLocal::readFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long, unsigned long, unsigned long, unsigned long) const @ 0xe79092e in /usr/bin/clickhouse
    5. DB::DataPartsExchange::Service::sendPartFromDisk(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, DB::WriteBuffer&, int) @ 0xf30fdf7 in /usr/bin/clickhouse
    6. DB::DataPartsExchange::Service::processQuery(DB::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, DB::HTTPServerResponse&) @ 0xf30ee5c in /usr/bin/clickhouse
    7. DB::InterserverIOHTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0xf5f2a1b in /usr/bin/clickhouse
    8. DB::InterserverIOHTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0xf5f32e1 in /usr/bin/clickhouse
    9. DB::HTTPServerConnection::run() @ 0xf668d5f in /usr/bin/clickhouse
    10. Poco::Net::TCPServerConnection::start() @ 0x11d138af in /usr/bin/clickhouse
    11. Poco::Net::TCPServerDispatcher::run() @ 0x11d152c1 in /usr/bin/clickhouse
    12. Poco::PooledThread::run() @ 0x11e4b9e9 in /usr/bin/clickhouse
    13. Poco::ThreadImpl::runnableEntry(void*) @ 0x11e4784a in /usr/bin/clickhouse
    14. start_thread @ 0x7dd5 in /usr/lib64/libpthread-2.17.so
    15. __clone @ 0xfdead in /usr/lib64/libc-2.17.so
    (version 21.3.12.2 (official build))' will try to reconnect session
    2021.11.17 12:05:36.381196 [ 18974 ] {} <Trace> ReadWriteBufferFromHTTP: Sending request to http://clichouse_server_02:9009/?endpoint=DataPartsExchange%3A%2Fclickhouse%2Ftables%2Fshard_01%2Ftable_9865%2Freplicas%2F10.10.10.2&part=20211117_20211117_2480343_2480343_0&client_protocol_version=5&compress=false
  • https://t.me/clickhouse_ru
    @mezhekov #244161 09:14 AM, 17 Nov 2021
    Собственно вопрос, это говорит о серьезной проблеме на серверах CH?
  • https://t.me/clickhouse_ru
    @mezhekov #244162 09:14 AM, 17 Nov 2021
    Как их решить если это так?
  • https://t.me/clickhouse_ru
    @mezhekov #244163 09:15 AM, 17 Nov 2021
    может нужно что-то делать с CH после падения ZK
  • https://t.me/clickhouse_ru
    Словил такую же ошибку при обновление дерева в DataGrip на последней версии КХ
  • https://t.me/clickhouse_ru
    @BloodJazMan #244166 09:26 AM, 17 Nov 2021
    SYSTEM DROP REPLICA
    а потом SYSTEM RESTORE REPLICA
    должно помочь, но это доступно с 21.8 а у вас 21.3

    попробуйте
    SYSTEM RESTART REPLICAS
    на тех нодах откуда не получается достать данные

    вообще странно, если clickhouse таблицы были в режиме RO
    то вроде бы background merge для них не должен выполнятться и соответсвенно если у вас восстановился ZK правильно, а не какая то устаревшая версия данных, тогда таких ошибок не должно быть
  • https://t.me/clickhouse_ru
    На тех нодах от куда пытаются файлы достать, файлов нет и папки парта тоже нет
  • https://t.me/clickhouse_ru
    Запись в кластер ведётся очень активно
  • https://t.me/clickhouse_ru
    @mezhekov #244169 09:44 AM, 17 Nov 2021
    Может из-за этого
  • https://t.me/clickhouse_ru
    @Den_molybdenum #244172 10:58 AM, 17 Nov 2021
    Привет!
    Подскажите, пожалуйста, какой параметр стоит изменить, чтобы избавиться от ошибки DB::Exception: Limit for rows or bytes to read exceeded, max bytes: 9.09 TiB, current bytes: 9.10 TiB: While executing Remote (version 21.8.10.19 (official build))?
  • https://t.me/clickhouse_ru
    имеется ввиду запись ведется мелкими чанками?
  • https://t.me/clickhouse_ru
    простите, вы точно уверен что вам для результата работы нужно прочитать 9 терабайт?
    может надо query переписать?
    max_bytes_to_read настройка называется, но не советую ее менять
  • https://t.me/clickhouse_ru
    @Arendath #244176 11:10 AM, 17 Nov 2021
    Всем привет!
    Может кто подсказать?
    Создаем дикт с SOURCE(POSTGRESQL(
    port ***
    host ‘***’
    user ‘***’
    password ‘****’
    db ‘***’
    schema ‘***’
    table ‘***’
    ))
    Дикт создается без проблем, но когда через минуту он идет автоматически обновиться - выдает ошибку
    pqxx::undefined_table, e.what() = ERROR: relation «table» does not exist, такое ощущение что при повторном походе за данными он просто игнорирует схему и не знает куда идти
  • https://t.me/clickhouse_ru
    словари lazy
    вы сразу после загрузки пробовали делать
    SELECT * FROM db.dict_name?
  • https://t.me/clickhouse_ru
    сейчас попробую
  • https://t.me/clickhouse_ru
    селект выполнился без проблем
  • https://t.me/clickhouse_ru
    в смысле данные выдал прямо из словаря?
  • https://t.me/clickhouse_ru
    Но вижу в system.dictionaries в столбце source у него стоит PostgreSQL: db.table ; т.е. схема не записывается в сурс дикта,..

    Да, выдал данные из словаря. Я выставил ему лайфтайм 120, по идее сейчас он пойдет за данными и выдаст ошибку
  • https://t.me/clickhouse_ru
    @artemhnilov #244182 11:20 AM, 17 Nov 2021
    Привет. Подскажите, пожалуйста, как скачать build конкретной ARM версии (не master)?
  • https://t.me/clickhouse_ru
    @flashws #244183 11:23 AM, 17 Nov 2021
    Всем привет!

    Возник вопрос по оптимизации работы со словарем.

    Есть словарь margin_pricelist у него составной ключ (complex_key_hashed) margin_id, pricelist_id и в нем набор полей margin_id UInt64, pricelist_id UInt64, margin float, active UInt8

    Есть таблица margin_pricelist созданная из словаря margin_pricelist

    И есть запрос к товарным предложения где
    В разделе SELECT цена для клиента получается с наценкой из словаря dictGetFloat32('margin_pricelist', 'margin', (toUInt64(9999), toUInt64(pricelist_id)))
    В разделе WHERE есть фильтр доступных прайс-листов для клиента путем запроса pricelist_id IN (SELECT pricelist_id FROM margin_pricelist WHERE active = 1 AND margin_id = 9999)

    Так вот поиск по таблице перебирает весь словарь, а так как он очень большой работает недопустимо медленно, как этот запрос можно оптимизировать или есть другой способ?
  • https://t.me/clickhouse_ru
    Большими и пару раз в секунду
  • https://t.me/clickhouse_ru
    нет, это не влияет
  • https://t.me/clickhouse_ru
    кх в нынешнем мире - так сексуально, что сюда каждую ночь проникают дерзкие девчонки. а некоторые уже и ночи не в силах дождаться :)
  • https://t.me/clickhouse_ru
    похоже в данном случае спасет только кронжоба с system reload dictionary для обновления диктов. Все что можно попробовал, не хочет дикт повторно идти по правильному пути в постгру за данными
  • https://t.me/clickhouse_ru
    выглядит как повод для issue на github

    а какая версия clickhouse у вас?
    обновитесь до последней 21.8

    https://github.com/ClickHouse/ClickHouse/commit/ed3f89a7be58b20c146fc8c000f43fb4759b073c
  • https://t.me/clickhouse_ru
    попробуйте хранить 4-байтные хеши слов в массиве. по ним поиск может быть быстрее. а сами слова использовать только для окончательной верификации совпадения
  • https://t.me/clickhouse_ru
    попробуйте вместо schema

    table 'schema.table'
    ?
    если получится сделайте issue на github
  • https://t.me/clickhouse_ru
    версия не последняя. да
    21.6.5.37
  • https://t.me/clickhouse_ru
    да, пробовал так. Данные первый раз забирает успешно, но спустя лайфтайм ошибкой опять вываливается
  • https://t.me/clickhouse_ru
    @ilyshka_fox #244196 12:33 PM, 17 Nov 2021
    Добрый день. У меня возникла проблема.

    ClickHouse 21.3.4.25
    Есть конструктор запросов, который делает запросы в CH.

    — Запросы
    1) SELECT ...(Тут большой запрос с куча join)... WHERE field in ('xxx').
    2) SELECT ...(Тут большой запрос с куча join)... WHERE field in ('xxx') AND 0 = 0.
    Запросы отличаться только условием 0 = 0

    — Результат
    1) все нормально отрабатывает. Explain поэтому запросу вернул 128 строк. Использовано оперативной памяти по query_log ~4.5GB
    2) запрос падает по лимиту памяти 9.8GB. Explain по этому звапросу вернул 233 строки.

    В чем может быть проблема? Я не могу убрать 0 = 0 т к это заглушка у конструктора, если небыли переданы параметры.
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/commit/ed3f89a7be58b20c146fc8c000f43fb4759b073c

    попробуйте обновиться до 21.6 последней
    если критично
    21.6.9.7 последняя версия в этой ветке
  • https://t.me/clickhouse_ru
    скорее всего в clickhouse расчет всегда ведется по всем бранчам логики, short cirсuit logic далеко не везде приехал
    https://github.com/ClickHouse/ClickHouse/search?q=short+circuit

    0 = 0
    всегда будет вычисляться
    вне зависимости от field in ('xxx')

    вам все таки надо конструктор запросов переделать
    Search · short circuit · 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
    спасибо! попробую
  • @githubreleases_bot #244200 b o t 12:47 PM, 17 Nov 2021
    ClickHouse/ClickHouse tagged: v21.11.4.14-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.11.4.14-stable
    Release notes:
    v21.11.4.14-stable
  • @chelik000 #244201 12:54 PM, 17 Nov 2021
    Добрый день, прошу помощи.
    Есть кластер clickhouse, 2 шарды, 2 реплики в каждой шарде.
    Есть кластер из 3х Zookeeper.(Живет на тех же нодах что и clickhouse)
    Ноды: 1U / Dell PowerEdge R440 / 2xSilver 4216 / 8x32GB DDR4 / no HDD @ H330 / 2x10G
    Конфиг zookeeper, идентичен рекомендациям в документации.
    Нагрузка 312к/с судя по графику
    ClickHouse server version 21.8.10
    Есть такая ошибка:
    message
    auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 235, e.displayText() = DB::Exception: Part 202111_1122984_1122984_0 (state Committed) already exists, 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) @ 0x8fdbc9a in /usr/bin/clickhouse
    1. DB::MergeTreeData::renameTempPartAndReplace(std::__1::shared_ptr<DB::IMergeTreeDataPart>&, SimpleIncrement*, DB::MergeTreeData::Transaction*, std::__1::unique_lock<std::__1::mutex>&, std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeDataPart const> > >*, DB::MergeTreeDeduplicationLog*) @ 0x10d07ec0 in /usr/bin/clickhouse
    2. DB::MergeTreeData::renameTempPartAndReplace(std::__1::shared_ptr<DB::IMergeTreeDataPart>&, SimpleIncrement*, DB::MergeTreeData::Transaction*, DB::MergeTreeDeduplicationLog*) @ 0x10d09088 in /usr/bin/clickhouse
    3. DB::StorageReplicatedMergeTree::fetchPart(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool, unsigned long, std::__1::shared_ptr<zkutil::ZooKeeper>) @ 0x10a96faa in /usr/bin/clickhouse
    4. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry&) @ 0x10a8efc9 in /usr/bin/clickhouse
    5. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0x10a6e774 in /usr/bin/clickhouse
    6. ? @ 0x10b2e41f in /usr/bin/clickhouse
    7. 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::Replicated
    Пришел к выводу что дело в zookeeperе, потому,
    Что было сделано:
    1) Перенесли Zookeeper на ssd диски, ошибка не исчезла.
    2) Изменили значения java (Xmx Xms до 4G), ошибка не ушла.
    3) Перенесли Zookeeper на отдельные ноды, но ошибка на месте.
    Нагрузка происходит примерно таким образом, что запросы пишутся в первую ноду(из 4х) а дальше реплицируются через Distributed, по оставшимся нодам.
    Есть ли те кто сталкивался с подобным и победил?
  • https://t.me/clickhouse_ru
    short cirсuit вроде с версии 21.9 пришел? у нас установлена 21.3. и почему при условии которое должно ничего не делать, кроме как возращать всегда true, ломает выполнение запроса? и таже проблема если этот злополучное выражение перенести в having. без 0=0 работает с ним нет.
  • https://t.me/clickhouse_ru
    202111_1122984_1122984_0

    судя по номерам блоков в парте, скажите, как часто и какими кусками в вставляете?
    312k/sec это что? rows per second?
    сколько это в queries per second?
  • https://t.me/clickhouse_ru
    а вы EXPLAIN PIPELINE смотрите или просто EXPLAIN ?

    есть возможность сделать EXPLAIN ESTIMATE ?
    https://clickhouse.com/docs/en/sql-reference/statements/explain/#explain-pipeline
    EXPLAIN | ClickHouse Documentation

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

  • К сожалению есть только эта информация:
    Посмотрел нагрузку на вставку:
    все перенесенные на кластер парсеры 80-150К/sec
    с одним парсером ~1К/sec, тестовый
    и то что я прислал, взятое из грейлога, по каким критериям он считает, точно не скажу
  • https://t.me/clickhouse_ru
    такое ощущение, что вы меня не слышите

    что такое k/sec?

    k это тысячи ЧЕГО?
  • https://t.me/clickhouse_ru
    Смотрел просто EXPLAIN
    EXPLAIN - 128 строк - 233 строки
    EXPLAIN PIPELINE - 263 строки - 479 строк
    EXPLAIN ESTIMATE - выдает ошибку. т к неподдерживает
  • Не знаю в чем исчесляется.
    В данный момент тестовая нагрузка такая, ошибки так же сохроняются:
    -finder-paths='{TYPE}/{YYYY}.{MM}.{DD}/{HH}' \
    -reader-workers=1 \
    -parser-workers=2 \
    -finder-range-level=minutes \
    -finder-last-step=1440 \
    -xh-storage-mysql-dsn='.....' \
    -ch-storage-clickhouse-dsn='tcp://....' \
    -aggregator-size=100000 \
    -parser-time-rounding=5m \
    -finder-time-from='2021-09-01T00:00' \
    -config-countries-url='.....' \
    -writer-batch-size=50000 \
  • https://t.me/clickhouse_ru
    а можете EXPLAIN и EXPLAIN PIPELINE
    результаты выложить на pastebin.com куда нибудь?
  • https://t.me/clickhouse_ru
    Я смотрел чем они отличаются. Все что есть в первом плане, присутствует и во втором. Но почти в конце во втором добавляется целый большой блок.

    EXPLAIN
    1) https://pastebin.com/6QQZyQRQ
    2) https://pastebin.com/qLHr2wMT

    EXPLAIN PIPELINE
    1) https://pastebin.com/5eKVK8gp
    2) https://pastebin.com/ipqZhYFQ
    EXPLAIN SELECT WHERE - 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
    @xavierteodonius #244213 02:47 PM, 17 Nov 2021
    Добрый вечер!

    Подскажите, пожалуйста, может ли Clickhouse работать с гео данными wkt формата, а именно wkt Multypolygon? Я не могу найти в документации подтверждений , нашел только https://clickhouse.com/docs/en/sql-reference/data-types/geo/. Однако в исходниках clickhouse как будто что-то такое есть (мб только для внутренного использования) https://clickhouse.com/codebrowser/html_report/ClickHouse/contrib/boost/boost/geometry/io/wkt/read.hpp.html

    У меня в топике Кафка Полигоны в виде MULTIPOLYGON(((39.730000675456 43.600639579669,39.730834842459 43.601307747678,39.731411517398 43.602232293498,39.732516587512 43.603770581947,39.734297574298 43.60765497366,39.732709706561 43.608214305406,39.731368602053 43.609068829976,39.733417809741 43.611220624431)))

    Думаю как можно их преобразовать при консюминге в CH формат Polygon
    Geo | ClickHouse Documentation

    Geo Data Types ClickHouse supports data types for representing geographical objects — locations, lands, etc. Warning Cur

  • https://t.me/clickhouse_ru
    @tratatataass #244215 02:57 PM, 17 Nov 2021
    Привет!
    Подскажите пожалуйста, а как можно в кх такой JSON распарсить?

    SELECT
    '[10000000000000000000000,4000000000000000000000]' as Json,
    isValidJSON(Json) IsValid;

    Выдает 0. Хочется сделать хотя бы JSONExtractArrayRaw(Json), но не выходит. Остается только по делиметру сплитить?
    кх 21.11.3.6
  • https://t.me/clickhouse_ru
    @orginux #244216 03:00 PM, 17 Nov 2021
    Привет. А есть возможность в ClickHouse использвать любой LDAP сервер, который прописан в конфиге, для авторизации юзера?
    Вроде такого:
    CREATE USER my_user IDENTIFIED WITH ldap SERVER '*';
  • https://t.me/clickhouse_ru
    судя по всему у вас WHERE 0=0 пытается делаться push down внутрь sub queries и в результате сильно усложняется план запроса

    а без условия, такое ощущение что все эти ваши JOIN всегда false ... и где то clickhouse об этом догадался
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    это не исходники clickhouse это сторонняя либа boost

    сам clickhouse читать wkt не умеет
  • https://t.me/clickhouse_ru
    спасибо, то есть единственный путь это splitByString/SplitByRegexp какой то свой в 10 этажей делать?
  • https://t.me/clickhouse_ru
    думаю что придется producer переписать
    либо не использовать Engine=Kafka а писать свой консюмер с конвертацией
  • https://t.me/clickhouse_ru
    ну или producer переписать
    или свой consumer с парсингом писать
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/sql-reference/statements/create/user/

    см. WITH ldap SERVER 'server_name'

    server_name вот отсюда
    https://clickhouse.com/docs/en/operations/external-authenticators/ldap/

    ну и должен быть разрешен <access_management>1</access_management>
    для пользователя из под которого CREATE USER запускается
    USER | ClickHouse Documentation

    CREATE USER Creates user accounts. Syntax: CREATE USER [IF NOT EXISTS | OR REPLACE] name1 [ON CLUSTER cluster_name1] [,

  • https://t.me/clickhouse_ru
    нет, любой сервер нельзя
  • https://t.me/clickhouse_ru
    и список нельзя?