• 15 June 2021 (89 messages)
  • @1029917248 #222628 12:56 PM, 15 Jun 2021
    С форматом все ок, пушил с теми же скриптами и данными в тот же кх, работает. А в контейнере нет
  • https://t.me/clickhouse_ru
    тогда предлагаю посмотреть что в error логе пишет )
  • 5 сек)
  • Можно использовать JSONExtract:

    WITH JSONExtract('[{"id":1,"name":"Test","subtotal":84.99,"count":1},{"id":2,"name":"Test2","subtotal":267.0,"count":3}]', 'Array(Tuple(id UInt64, name String, subtotal Float64, count UInt64))') AS parsed_json
    SELECT
    tupleElement(parsed_json, 'id') AS id,
    tupleElement(parsed_json, 'name') AS name,
    tupleElement(parsed_json, 'subtotal') AS subtotal,
    tupleElement(parsed_json, 'count') AS count

    ┌─id────┬─name─────────────┬─subtotal────┬─count─┐
    │ [1,2] │ ['Test','Test2'] │ [84.99,267] │ [1,3] │
    └───────┴──────────────────┴─────────────┴───────┘

    1 rows in set. Elapsed: 0.020 sec.
  • Спасибо, попробую
  • @1542923331 #222633 01:06 PM, 15 Jun 2021
    Здравствуйте, подскажите пожалуйста:
    В базе данных есть две таблицы, на таблицу номер один довольно высокая нагрузка на запись разделена на 3 шарда
    На таблицу номер 2 нагрузки почти что нет
    Можно ли для записи в таблицу номер два использовать только один шард а для таблицы номер один все шарды?
  • https://t.me/clickhouse_ru
    вы собираетесь потом объединять таблицу 1 и таблицу 2 или это полностью независимые данные?
  • независимые
  • https://t.me/clickhouse_ru
    ну смотрите
    если вы говорите "шарды"
    то значит у вас комбинация
    SELECT из Distrbuted Таблицы
    вставка в Distributed или в *MergeTree таблицу напрямую

    можно в <remote_servers> определить два разных кластера с разными хостами или с разными весами...
    и таким образом регулировать вставку...

    переопределение remote_servers работает без перезагрузки сервера
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #222612 #222638 01:30 PM, 15 Jun 2021
    Example for schema bootstraping Clickhouse cluster were added in docs by solyard · Pull Request #722 · Altinity/clickhouse-operator

    Thanks for taking the time to contribute to clickhouse-operator! Please, read carefully instructions on how to make a Pull Request. This will help a lot for maintainers to adopt your Pull Request. ...

  • https://t.me/clickhouse_ru
    @zahnik #222639 01:30 PM, 15 Jun 2021
    Всем привет. Кто-то стыкался с проблемой, когда внешний словарь с источником PostgreSQL и аттрибутом типа bool (UInt8 в CH) не создается из-за того что PostgreSQL возвращает t, f значения вместо 1, 0. И CH не может спарсить эти значения в UInt8.

    Проблемы не было, когда источником был ODBC и в DSN уже были указаны параметры подключения к базе.
    Когда поменяли на SOURCE(POSTGRESQL(...)) все сломалось.
  • https://t.me/clickhouse_ru
    @zahnik ↶ Reply to #222639 #222640 01:48 PM, 15 Jun 2021
    Решил проблему, добавил EXPRESSION 'colname::int'
  • Спасибо
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    None
  • https://t.me/clickhouse_ru
    @399999446 #222645 01:50 PM, 15 Jun 2021
    всем привет
    В онлайне нужно обновлять статистику, можно ли джойнить табличку с движком NULL c таблицей MergeTree??

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

    CREATE MATERIALIZED VIEW adm.mv TO adm.tab_stat
    (
    col1 Date,
    col2 String,
    hits Int64
    ) AS
    select
    t1.col1,
    t2.col2,
    sum(hits) as hits
    from tab_engine_null as t1
    left join tab_engine_mergetree as t2
    on t1.id = t2.id
    group by t1.col1,t2.col2
  • @f1yegor #222646 02:09 PM, 15 Jun 2021
    »from tab_engine_null as t1
    »left join tab_engine_mergetree as t2
    а если переставить порядок таблиц как
    tab_engine_mergetree right join tab_engine_null ? в какую таблицу приходят данные - в _null или _mergetree?
  • вообще можно, но МВ реагирует только на вставку в левую табличку
  • https://t.me/clickhouse_ru
    в _null табличку
  • https://t.me/clickhouse_ru
    @nikitosiusis #222649 02:56 PM, 15 Jun 2021
    а подскажите как мне синхронизировать данные в двух одинаковых табличках?
    одна табличка у меня заполняется по крону(редко)
    а вторая из пушей, которые приходят по хттп(в реальном времени)
    данные в них одинаковые
    но так как сервис по приему пушей писал умный девопс(я), то во второй образуются "дырки" когда сервис сломан или не отвечает

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

    есть какой-то способ обнаружить чего не хватает во второй таблице?
  • https://t.me/clickhouse_ru
    @nikitosiusis #222650 02:57 PM, 15 Jun 2021
    например найти места, где разница между датами между двумя последующими строками больше 10 минут, или чего-нить такое
  • https://t.me/clickhouse_ru
    SELECT * FROM t1 LEFT JOIN t2 on(t1.id = t2.id) where t2.id is null
  • https://t.me/clickhouse_ru
    @nikitosiusis #222653 04:10 PM, 15 Jun 2021
    оно в память должно влезть?)
  • https://t.me/clickhouse_ru
    дайте ddl таблиц для быстрого воспроизведения ситуации
  • https://t.me/clickhouse_ru
    должно
  • https://t.me/clickhouse_ru
    Кажется, что можно для начала посчитать каунты посекундные для одного дня ( всего 100к ключей в GROUP BY) а потом сравнивать
  • https://t.me/clickhouse_ru
    @bvt123 #222658 05:44 PM, 15 Jun 2021
    есть ли какие-то нюансы для partial updates словарей? RockDB/View в качестве исходной таблицы можно сделать - или это пока не поддерживается?
    Делаю примерно как вот тут - https://kb.altinity.com/altinity-kb-dictionaries/partial-updates - с LIFETIME(MIN 0 MAX 0) ничего не обновляется, как не меняй таймстемп, но с LIFETIME(5) - все обновляется.
  • https://t.me/clickhouse_ru
    так естесвенно с LIFETIME(MIN 0 MAX 0) ничего не обновляется, я опечатался в kb, сейчас на 30 заменю
  • https://t.me/clickhouse_ru
    @den_crane #222661 07:46 PM, 15 Jun 2021
    поправил
  • https://t.me/clickhouse_ru
    @bvt123 #222662 08:23 PM, 15 Jun 2021
    я правильно понимаю что раз в 30с идет обращение с where updated_at и полученные id заменяются в хеш-таблице?
  • https://t.me/clickhouse_ru
    да
  • 16 June 2021 (182 messages)
  • https://t.me/clickhouse_ru
    @BloodJazMan #222665 03:31 AM, 16 Jun 2021
    https://github.com/growthbook/growthbook

    еще одна тула с поддержкой clickhouse
    GitHub - growthbook/growthbook: The Open Source A/B Testing Platform

    The Open Source A/B Testing Platform. Contribute to growthbook/growthbook development by creating an account on GitHub.

  • большое спасибо! помогло!
  • https://t.me/clickhouse_ru
    @Caside #222669 06:58 AM, 16 Jun 2021
    Подскажите пожалуйста.
    Подключаю внешнюю таблицу из постгреса в CH через Dictionary.
    В DDL первой колонкой идёт колонка с типом String.
    После создания dicrionary она автоматически становится Uint64. Это такая фича или как вообще понимать?
  • https://t.me/clickhouse_ru
    Нет ли сериал какого-то в постгресе, как ключ? Мб него берёт
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222670 #222671 07:01 AM, 16 Jun 2021
    Там есть индекс, который идёт 1-й колонкой. Я его не пробрасываю в dictionary намерено.
  • https://t.me/clickhouse_ru
    Вот он, скорее всего и берется, как UInt8,но хз почему))
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222672 #222674 07:04 AM, 16 Jun 2021
    Добавил индекс в словарь, сделал его PRIMARY KEY, всё починилось. Спасибо )
  • https://t.me/clickhouse_ru
    @Caside #222675 07:08 AM, 16 Jun 2021
    Другая ситуация: создаю dictionary из внешней таблицы postgress. Указываю стринговую колонку в качестве PRIMARY KEY словаря. После создания словаря эта колонка пропадает из полученной таблицы.
  • @KevinMort #222676 07:36 AM, 16 Jun 2021
    Пытаюсь подключиться к удаленной базе postgresql, выдает ошибку
    Code: 998. DB::Exception: Received from localhost:9000. DB::Exception: Unable to connect to any of the replicas.

    В чем может быть дело?
  • https://t.me/clickhouse_ru
    @Caside #222679 07:51 AM, 16 Jun 2021
    А что делать при подключении внешней таблицы через Dictionary, если ни одна колонка не подходит в качестве PRIMARY KEY? Составной ключ не получается сделать. А если я выбираю любую стринговую колонку в качетсве ключа - она исчезает из результирующей таблицы в CH.
  • https://t.me/clickhouse_ru
    @galievruslan #222680 08:16 AM, 16 Jun 2021
    Всем привет
    Может кто подскажет, ситуация такого плана, необходимо перелить данные в агрегированном виде из одной таблицы в другую(При SELECT используется FINAL). Одним запросом не получается, падает по памяти. Сейчас разделили запрос на пакеты, по одному из полей. Запускаем эти запросы силами backend, соотвественно приходится контролировать данный процесс. Вопрос: есть ли у Clickhouse какой-либо механизм пакетного переноса агрегированных данных?
    p.s. Materialized View не подходит из-за движка таблицы источника ReplacingMergeTree и поменять его в данный момент возможности нет.
  • https://t.me/clickhouse_ru
    @michailmarketplace #222683 08:25 AM, 16 Jun 2021
    Добрый день, у меня задача посчитать агрегационные данные для разных когорт объектов, объединенных общим признаком.
    Для примера - это товары в рубриках магазина. Нужно построить таблицу, где будут указаны рубрики и суммарные данные по всем товарам + по тем товарам, которые делают 80% оборота рубрики.
    Пока не могу придумать ни одного варианта, кроме как перебор каждой рубрики отдельно с серией запросов на каждую, но, видимо, я не замечаю какой то возможности.
    Условная таблица
    create table sales (rubric UInt32, product_id UInt32, revenue UInt32)
    Сейчас делается запрос
    select rubric, count(distinct product_id), sum(revenue) from sales group by rubric
    и далее отдельными запросами для каждой рубрики выбираются товары
    select product_id, sum(revenue) as rev from sales where rubric='some_rubric' group by product_id order by rev desc
    пробегаемся по результату набирая 80% оборота нарастающим итогом и получаем информацию о том, сколько товаров делают 80% оборота в рубрике.
    Уверен, есть более изящный и правильный способ, намекните, пожалуйста.
  • @AurimasJ #222684 08:48 AM, 16 Jun 2021
    😨
  • https://t.me/clickhouse_ru
    что такое результирующая таблица?
    в смысле в SELECT * ... не появляется?
    а через SELECT field FROM db.dictionary выбирается?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222685 #222686 09:06 AM, 16 Jun 2021
    вот та таблица, что создалась, в ней даже в описании колонок отсутствует та колонка, которую я взял за primary key, но она есть в DDL
  • https://t.me/clickhouse_ru
    нет, механизм это запросы вида INSERT ... SELECT ... WHERE ... FINAL
  • https://t.me/clickhouse_ru
    в смысле имеется ввиду таблица которая в system.tables возникает как результат CREATE DICTIONARY ?

    вам для чего словарь то нужен? dictGet делать? или JOIN ?
    и какой источник?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222688 #222689 09:11 AM, 16 Jun 2021
    Да, результат create dictionary. Источник postgres, нужен этот словарь для джойна с другими данными из других источников. Решили что это все в ch будет собираться и в нем джойниться
  • Привет! Ты работал с движком postgresql в clickhouse?
  • https://t.me/clickhouse_ru
    сколько записей в таблице postgres?
    и какая структура в postgres? неужели там нет id SERIAL какого нибудь?
  • https://t.me/clickhouse_ru
    только в тестах всяких
    имеется ввиду Engine=PostgreSQL() для таблиц ?
    а что конкретно интересует?
  • Пробую простое подключение к базе, а тут ошибка
  • @KevinMort #222694 09:14 AM, 16 Jun 2021
    Мой запрос
  • https://t.me/clickhouse_ru
    что-то не похоже это на ошибку которая к postgres относится
  • https://t.me/clickhouse_ru
    аа... а через psql пытался соедениться?
  • https://t.me/clickhouse_ru
    сервер к которому цепляетесь точно с сервера clickhouse Доступен?
  • Да
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222691 #222699 09:16 AM, 16 Jun 2021
    35000 строк, нет индекса, нет чего-либо, похожего на primary key, если имеется в виду колонка с уникальными значениями.
    Составной primary key тоже не получается использовать в DDL при создании словаря.
    В результате выбрал колонку, которую готов потерять, в качестве primary key. В результате с CH на 13 строк меньше, чем в оригинальной таблице в PG.
  • Порты открыты для данного сервера
  • https://t.me/clickhouse_ru
    для составного primary key нужен layout COMPLEX_KEY_HASHED
  • https://t.me/clickhouse_ru
    @mirka_bit #222702 09:25 AM, 16 Jun 2021
    в чем может быть проблема, такая ошибка
  • https://t.me/clickhouse_ru
    @mirka_bit #222703 09:25 AM, 16 Jun 2021
    SQL Error [241]: ClickHouse exception, code: 241, host: clickhouse.prod.aliengain.com, port: 443; Code: 241, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 64.00 GiB (attempt to allocate chunk of 5386060 bytes), maximum: 64.00 GiB: While executing AggregatingTransform (version 20.12.6.29 (official build))
  • https://t.me/clickhouse_ru
    @mirka_bit #222704 09:25 AM, 16 Jun 2021
    │ max_memory_usage │ 422000000000 │
  • https://t.me/clickhouse_ru
    Может что то типа того:

    SELECT rubric,
    product_id,
    runningAccumulate(sum_revenue, rubric) / totals.revenue as runnind_revenue_pct
    FROM (
    SELECT rubric,
    product_id,
    sumState(revenue) as sum_revenue
    FROM sales
    GROUP BY rubric, product_id
    ORDER BY rubric, sum_revenue DESC
    ) ranged_sales
    ALL LEFT JOIN (
    SELECT rubric, sum(revenue) AS revenue
    FROM sales
    GROUP BY rubric
    ) AS totals USING rubric
  • https://t.me/clickhouse_ru
    @Vladimir_Borisov #222706 09:33 AM, 16 Jun 2021
    Привет, ребят
    Подскажите, пожалуйста, как правильно писать Avro decimal черезе Kafka Engine ?
    В Avro это
    "type": "bytes",
    "logicalType": "decimal",
    И он в Decimal CH не ложится
  • max_memory_usage_for_user?
    max_server_memory_usage?
  • https://t.me/clickhouse_ru
    от запроса зависит
  • https://t.me/clickhouse_ru
    ух, мощно, разбираюсь. Спасибо. Выглядит дьявольски
  • https://t.me/clickhouse_ru
    наверное вы первый кто в Avro на этом канале за пол года спрашивает
    сложно сказать почему не мапится

    я бы в отдельный файл сохранил
    и попробовал через file() табличную функцию прочитать...
  • https://t.me/clickhouse_ru
    @Vladimir_Borisov #222711 10:16 AM, 16 Jun 2021
    Я без файла могу в КХ записать -> в String
    Но вижу там только bytes, думаю может есть простой способ делать преобразование
  • https://t.me/clickhouse_ru
    ну там же все преобразования через схемы делаются
    https://clickhouse.tech/docs/en/interfaces/formats/#data-format-avro
    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
    @Vladimir_Borisov #222714 10:44 AM, 16 Jun 2021
    Ага, увидел, ClickHouse поддерживает все
    https://avro.apache.org/docs/1.10.2/spec.html#schema_primitive

    а с Logical Types парсит Дату и время, но не Decimal)
  • https://t.me/clickhouse_ru
    @Vladimir_Borisov #222715 10:44 AM, 16 Jun 2021
    спасибо
  • @nibrag #222717 11:09 AM, 16 Jun 2021
    почему данные в таблицу могут не вставляться?

    select count(*) from item_daily_data;
    1621302942

    select count(*) from tmp_tmp_item_daily_data_2021_06_16_1491f208bd;
    1438

    INSERT INTO "item_daily_data"  ("added","main_spider_id","spider_item_id", ..., "version","source","sign") SELECT "added","main_spider_id","spider_item_id", ....,"version","source","sign" FROM "tmp_tmp_item_daily_data_2021_06_16_1491f208bd" ORDER BY "sign";

    Ok.

    0 rows in set. Elapsed: 0.006 sec. Processed 1.44 thousand rows, 271.41 KB (227.21 thousand rows/s., 42.88 MB/s.)

    select count(*) from item_daily_data;
    1621302942
  • https://t.me/clickhouse_ru
    @rasstr0en #222718 11:11 AM, 16 Jun 2021
    Ребята, может ли происходить мерж в mergeTree если у 2х строк один праймари кей?
  • https://t.me/clickhouse_ru
    @rasstr0en #222719 11:11 AM, 16 Jun 2021
    Если в 1 инсерте - мержится
  • https://t.me/clickhouse_ru
    потому что таблица ReplicatedMergeTree и вы повторно пытаетесь вставить тот же самый блок данных
    происходит дедупликация на уровне блоков по контрольной сумме
    ReplicatedMergeTree хранит контрольную сумму 100 (настраиваемая величина) последних вставленных блоков
  • @nibrag #222721 11:13 AM, 16 Jun 2021
    таблица VersionedCollapsingMergeTree. Один сервер, без реплик
  • https://t.me/clickhouse_ru
    есть PRIMARY KEY
    есть ORDER BY (sorting key)
    если таблица просто MergeTree то нечего мержить
    вставит просто две строки
  • https://t.me/clickhouse_ru
    @rasstr0en #222723 11:15 AM, 16 Jun 2021
    в одном инсерте умно выкидывает 1 строку
  • https://t.me/clickhouse_ru
    ерунда какая то =) куда вставляете этот INSERT? в какой ENGINE?
  • https://t.me/clickhouse_ru
    @rasstr0en #222725 11:15 AM, 16 Jun 2021
    MergeTree
  • https://t.me/clickhouse_ru
    @rasstr0en #222726 11:15 AM, 16 Jun 2021
    сейчас попробую примерчик
  • https://t.me/clickhouse_ru
    SELECT engine_full FROM system.tables WHERE table='item_daily_data'; ?
  • @nibrag ↶ Reply to #222727 #222729 11:17 AM, 16 Jun 2021
    VersionedCollapsingMergeTree(sign, version) PARTITION BY toYYYYMM(added) ORDER BY (added, main_spider_id, spider_item_id, region_id) SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    попробуйте сделать пустую таблицу с такой же структурой как item_daliy_data
    и дважды вставить через INSERT SELECT из вашей временной
  • @nibrag ↶ Reply to #222730 #222731 11:23 AM, 16 Jun 2021
    сделал. не вставляет вообще
  • @nibrag ↶ Reply to #222730 #222732 11:26 AM, 16 Jun 2021
    в обычный collapsing вставляет
  • https://t.me/clickhouse_ru
    так, может у вас version поля в данных нет?
    что-то странное
  • https://t.me/clickhouse_ru
    @BloodJazMan #222734 11:26 AM, 16 Jun 2021
    но вообще странно конечно
  • @nibrag ↶ Reply to #222733 #222735 11:29 AM, 16 Jun 2021
    version во временной таблице у всех строк 1623793578225
  • https://t.me/clickhouse_ru
    а sign разный? или -1 ?
  • @nibrag ↶ Reply to #222736 #222737 11:32 AM, 16 Jun 2021
    часть с -1, часть 1
  • https://t.me/clickhouse_ru
    @den_crane #222739 11:35 AM, 16 Jun 2021
    либо дедупликация инсертов insert_deduplicate=1 --insert_deduplicate arg For INSERT queries in the replicated table, specifies that deduplication of insertings blocks should be performed
    либо оптимизация инсертов --optimize_on_insert arg Do the same transformation for inserted block of data as if merge was done on this block.
  • https://t.me/clickhouse_ru
    вообще не вставляет в смысле проглатывает без ошибок и потом SELECT count() FROM new_table = 0 ?
  • https://t.me/clickhouse_ru
    всё проще, локально ReplacingMergeTree была ^_^ извинити
  • https://t.me/clickhouse_ru
    @rasstr0en #222742 11:36 AM, 16 Jun 2021
    чуть не поседел
  • https://t.me/clickhouse_ru
    @hostadminonline #222744 11:39 AM, 16 Jun 2021
    Добрый день, нашли вроде как ошибку

    Делаем POST запрос на создание заведомо уже созданной таблицы получаем ожидаемую ошибку

    ****.mdb.yandexcloud.net 9440 57 Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build)) 1 0
    ****.mdb.yandexcloud.net 9440 57 Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build)) 0 0
    Code: 57, e.displayText() = DB::Exception: There was an error on [********.mdb.yandexcloud.net:9440]: Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build)) (version 21.3.12.2 (official build))

    но когда мы выполняем запрос на CREATE или DROP с FORMAT JSON чтобы получить ответ в JSON формате получаем рузльтат со сломанным JSON-ом

    {
    "meta":
    [
    {
    "name": "host",
    "type": "String"
    },
    {
    "name": "port",
    "type": "UInt16"
    },
    {
    "name": "status",
    "type": "Int64"
    },
    {
    "name": "error",
    "type": "String"
    },
    {
    "name": "num_hosts_remaining",
    "type": "UInt64"
    },
    {
    "name": "num_hosts_active",
    "type": "UInt64"
    }
    ],

    "data":
    [
    {
    "host": "********.mdb.yandexcloud.net",
    "port": 9440,
    "status": "57",
    "error": "Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build))",
    "num_hosts_remaining": "1",
    "num_hosts_active": "0"
    },
    {
    "host": "********.mdb.yandexcloud.net",
    "port": 9440,
    "status": "57",
    "error": "Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build))",
    "num_hosts_remaining": "0",
    "num_hosts_active": "0"
    }Code: 57, e.displayText() = DB::Exception: There was an error on [********.mdb.yandexcloud.net:9440]: Code: 57, e.displayText() = DB::Exception: Table test.test2 already exists. (version 21.3.12.2 (official build)) (version 21.3.12.2 (official build))
  • @nibrag ↶ Reply to #222740 #222745 11:42 AM, 16 Jun 2021
    Во временной таблице N строк с sign = -1, N строк по тому же PK с sign = 1
    при вставке в debug таблицу ошибок нет, по результату count выдает 0. Видимо во временной все сразу же схлопывается?
  • @nibrag ↶ Reply to #222739 #222746 11:47 AM, 16 Jun 2021
    set optimize_on_insert=0 помог
    спасибо
  • @nibrag #222747 11:50 AM, 16 Jun 2021
    проблема появилась из-за того, что отменяющие строки (sign=-1) имели ту же версию, что и новые (sign=1)
  • https://t.me/clickhouse_ru
    так и задумано
  • https://t.me/clickhouse_ru
    @hostadminonline #222749 11:51 AM, 16 Jun 2021
    задумано ломать JSON ответ ?
  • https://t.me/clickhouse_ru
    @hostadminonline #222750 11:51 AM, 16 Jun 2021
    его не возможно прочитать
  • https://t.me/clickhouse_ru
    да, HTTP протокол не позволяет вернуть ошибку если body уже началось, поэтому ошибка пишется прямо текстом посреди ответа, ломая CSV / TSV/ JSON
    и это хорошо.
  • https://t.me/clickhouse_ru
    @den_crane #222752 11:53 AM, 16 Jun 2021
    ошибка в http code возвращается?
  • https://t.me/clickhouse_ru
    @hostadminonline #222753 11:53 AM, 16 Jun 2021
    а можно тогда не возвращать 200 код .... по сути при запросе мы не можем 100% знать что произошла ошибка .... и узнать какая мы тоже не можем чтобы принять решение что делать
  • https://t.me/clickhouse_ru
    @hostadminonline #222754 11:53 AM, 16 Jun 2021
    возращается 200
  • https://t.me/clickhouse_ru
    проверяйте на 21.1 должно было не 200 вернуться при такой ситуации.
  • https://t.me/clickhouse_ru
    @hostadminonline #222756 11:55 AM, 16 Jun 2021
    у нас 21.3 LTS
  • https://t.me/clickhouse_ru
    @den_crane #222757 11:56 AM, 16 Jun 2021
    есть еще http параметр wait_end_of_query=1 , но и без него должно быть ок
  • https://t.me/clickhouse_ru
    @hostadminonline #222759 11:56 AM, 16 Jun 2021
    пробелема как раз в том что не ОК .... приходит 200 мы поэтому начали пытаться читать JSON а он испорченный
  • https://t.me/clickhouse_ru
    @den_crane #222760 11:59 AM, 16 Jun 2021
    не знаю про POST может c POST всегда так было
  • https://t.me/clickhouse_ru
    @den_crane #222761 12:00 PM, 16 Jun 2021
    echo 'drop table xxxx format JSON' | curl -vvv 'http://localhost:8123' --data-binary @-

    < HTTP/1.1 404 Not Found
  • https://t.me/clickhouse_ru
    @hostadminonline #222762 12:08 PM, 16 Jun 2021
    echo 'CREATE TABLE parsing_stat.xxxx ON CLUSTER c9q930o5i86rsdloqlc9 (date dateTime) ENGINE = ReplicatedMergeTree() ORDER BY (date) format JSON' | curl -vvv '***.mdb.yandexcloud.net:8443' --cacert /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt -H 'X-ClickHouse-User: ' -H 'X-ClickHouse-Key: ' --data-binary @-
  • https://t.me/clickhouse_ru
    @hostadminonline #222763 12:09 PM, 16 Jun 2021
    < HTTP/1.1 200 OK
    < Date: Wed, 16 Jun 2021 12:08:18 GMT
    < Connection: Keep-Alive
    < Content-Type: application/json; charset=UTF-8
    < X-ClickHouse-Server-Display-Name: rc1a-1xqj5fcgypyn4f4y.mdb.yandexcloud.net
    < Transfer-Encoding: chunked
    < X-ClickHouse-Query-Id: 53f9dd9b-b2cf-4107-b54e-10692ccd9931
    < X-ClickHouse-Format: JSON
    < X-ClickHouse-Timezone: Europe/Moscow
    < Keep-Alive: timeout=3
    < X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0"}
    <
    {
    "meta":
    [
    {
    "name": "host",
    "type": "String"
    },
    {
    "name": "port",
    "type": "UInt16"
    },
    {
    "name": "status",
    "type": "Int64"
    },
    {
    "name": "error",
    "type": "String"
    },
    {
    "name": "num_hosts_remaining",
    "type": "UInt64"
    },
    {
    "name": "num_hosts_active",
    "type": "UInt64"
    }
    ],

    "data":
    [
    {
    "host": "rc1a-1xqj5fcgypyn4f4y.mdb.yandexcloud.net",
    "port": 9440,
    "status": "57",
    "error": "Code: 57, e.displayText() = DB::Exception: Table parsing_stat.xxxx already exists. (version 21.3.12.2 (official build))",
    "num_hosts_remaining": "1",
    "num_hosts_active": "0"
    },
    {
    "host": "rc1b-lpvh2az57kvuujgy.mdb.yandexcloud.net",
    "port": 9440,
    "status": "57",
    "error": "Code: 57, e.displayText() = DB::Exception: Table parsing_stat.xxxx already exists. (version 21.3.12.2 (official build))",
    "num_hosts_remaining": "0",
    "num_hosts_active": "0"
    }Code: 57, e.displayText() = DB::Exception: There was an error on [rc1a-1xqj5fcgypyn4f4y.mdb.yandexcloud.net:9440]: Code: 57, e.displayText() = DB::Exception: Table parsing_stat.xxxx already exists. (version 21.3.12.2 (official build)) (version 21.3.12.2 (official build))
    * Connection #0 to host rc1a-1xqj5fcgypyn4f4y.mdb.yandexcloud.net left intact
  • https://t.me/clickhouse_ru
    а ну да из-за ON CLUSTER

    тут да , ничего не сделать, HTTP протокол, боди уже идет, уже клиенту никак не сообщить ошибку
  • https://t.me/clickhouse_ru
    @den_crane #222765 12:11 PM, 16 Jun 2021
    попробуйте wait_end_of_query=1
  • https://t.me/clickhouse_ru
    @den_crane #222766 12:12 PM, 16 Jun 2021
    ну т.е. JSON специально ломается, чтобы клиенту просигналить об ошибке
  • https://t.me/clickhouse_ru
    @den_crane #222767 12:13 PM, 16 Jun 2021
    ну или вам можно CREATE TABLE if not exists использовать
  • https://t.me/clickhouse_ru
    @399999446 #222768 12:15 PM, 16 Jun 2021
    Все привет
    Нужно создать словарь на основании таблички

    CREATE DICTIONARY adm.host_category
    (
    name String,
    cat String
    )
    PRIMARY KEY name
    SOURCE(CLICKHOUSE(HOST '127.0.0.1' PORT 9000 USER 'login' PASSWORD 'pass' DB 'adm' TABLE 'tab'))
    LIFETIME(MIN 300 MAX 360)
    LAYOUT(FLAT());

    При обращении
    select dictGetString('adm.host_category', 'cat', tuple('003ms.ru'))

    Ошибка
    Unsigned type must not contain '-' symbol: Cannot parse UInt64 from String: while converting source column name to destination column name

    Не погу понять из за чего ошибка?
  • https://t.me/clickhouse_ru
    flat только числовой UINT64 ключ умеет,
    вам complex_key_hashed надо layout
  • https://t.me/clickhouse_ru
    @den_crane #222770 12:18 PM, 16 Jun 2021
    flat это обычный массив в памяти, обращение в элементам по индексу (числу)
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #222772 12:37 PM, 16 Jun 2021
    Прошу прощения за тупой вопрос. Сдох диск с данными КХ. Если я запущу КХ с теми же конфигами, с тем же ЗК, но с пустой папкой данных — он ведь сам скачает все данные с реплик?
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #222773 12:42 PM, 16 Jun 2021
    Или лучше его как новую реплику теперь заводить, под новым именем?
  • https://t.me/clickhouse_ru
    Скачает. Но нужен файлик force recovery что-то там. В доке написано. А и нужны файлы метаданных, можно скопировать с реплики
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #222776 01:10 PM, 16 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    @innopolis #222779 03:12 PM, 16 Jun 2021
    При вставке в колонку type: Array(String) пустого значения падает с Cannot parse input: expected [ before. Можно ли как-нибудь обойти? Колонку на Nullable(Array(String)) не удается поменять (Nested type Array(String) cannot be inside Nullable type (version 19.16.4.12)
  • https://t.me/clickhouse_ru
    Array(Nullable(String))
    должен по идее пустой массив воспринимать как []
  • https://t.me/clickhouse_ru
    Array does not start with '[' character: while executing

    INSERT INTO test2 VALUES ('')
  • https://t.me/clickhouse_ru
    INSERT INTO test2 VALUES([]);
  • https://t.me/clickhouse_ru
    да мне либа https://github.com/yndx-metrika/logs_api_integration возвращает
    Column 20, name: From, type: String, parsed text: <EMPTY>
    Column 21, name: GoalsCurrency, type: Array(String), parsed text: <EMPTY>ERROR

    и я думаю она пытается что-то типа пустой строки пропихнуть.
    GitHub - yndx-metrika/logs_api_integration: Script for integration with Logs API

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

  • https://t.me/clickhouse_ru
    не знаю, лично я предпочитаю https://bitbucket.org/clickhouse_pro/metrika2clickhouse
    но не знаю насколько оно сейчас с текущими лимитами на logs API совмесимо
  • https://t.me/clickhouse_ru
    странно, что не помогает
    'input_format_allow_errors_num': 99999,
    'input_format_allow_errors_ratio': 1
  • https://t.me/clickhouse_ru
    @solard #222786 03:39 PM, 16 Jun 2021
    Народ обьясните пожалуйста как через SQL создать юзера с sha256
  • https://t.me/clickhouse_ru
    @solard #222787 03:39 PM, 16 Jun 2021
    Создаю вроде правильно но КХ думает что это не хеш а строка и по паролю есесно не авторизует, только по хешу (который по сути строка)
  • https://t.me/clickhouse_ru
    @solard #222788 03:40 PM, 16 Jun 2021
    CREATE USER IF NOT EXISTS 'user1' IDENTIFIED WITH sha256_password BY 'b82df0483b3612c737f3d312d5f21330f4acf6c498717109f70e2414e7a1019f' ON CLUSTER '{cluster}';
  • https://t.me/clickhouse_ru
    @Luck1ess #222789 03:58 PM, 16 Jun 2021
    Всем привет, а насколько нормально что КХ при лефт/райт джоине вместо Налов проставляет пустые строки?
  • https://t.me/clickhouse_ru
    Абсолютно нормально. По умолчанию кх подставляет дефолтные значения типа
  • https://t.me/clickhouse_ru
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    Спасибо большое!
  • https://t.me/clickhouse_ru
    а как там вообще строки в массиве записываются / возвращаются либой?
  • https://t.me/clickhouse_ru
    IDENTIFIED WITH sha256_hash BY 'hash'

    https://clickhouse.tech/docs/en/sql-reference/statements/create/user/#identification
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #222794 #222795 04:19 PM, 16 Jun 2021
    Разобрался, спасибо. Под конец дня голова не работает
  • https://t.me/clickhouse_ru
    content = content.encode('utf-8')

    query_dict = {
    'query': 'INSERT INTO ' + table + ' FORMAT TabSeparatedWithNames ',
    'input_format_allow_errors_num': 99999,
    'input_format_allow_errors_ratio': 1
    }

    if (CH_USER == '') and (CH_PASSWORD == ''):
    r = requests.post(CH_HOST, data=content, params=query_dict, verify=SSL_VERIFY)
    else:
    r = requests.post(CH_HOST, data=content, params=query_dict,
    auth=(CH_USER, CH_PASSWORD), verify=SSL_VERIFY)
  • https://t.me/clickhouse_ru
    go больно. У вас при работе с ней не возникало проблем/необходимости в переписывании?
  • https://t.me/clickhouse_ru
    переписывании чего?
    вы в целом про golang сейчас или конкретно про metrika2clickhouse?
    я ее достаточно давно использовал
    но если у вас трудности будут, смогу помочь

    Яндексовский репозиторий вообще не обновлялся довольно давно
  • https://t.me/clickhouse_ru
    golang, надеюсь, не переписывали) имел ввиду metrika2clickhouse, так как питон либу я уже переписывал (вернее, дополнял) несколько раз

    спасибо за предложение, но пока использование metrika2clickhouse самый крайний вариант (даги на питоне вертятся) 🙌
  • @Derzkii_SPooN #222800 04:36 PM, 16 Jun 2021
    Привет, а никто не сталивался с такой проблемой. Пытаюсь базу создать Postgresql. делал по доке: https://clickhouse.tech/docs/ru/engines/database-engines/postgresql/

    Команда такая у меня: CREATE DATABASE production_gp ON CLUSTER my_cluster ENGINE = PostgreSQL("my_host:5432", "gp_db", "user", "pw", 1);

    На что получаю ошибку, которая немного ставит в тупик:
    Code: 36, e.displayText() = DB::Exception: Database engine PostgreSQL cannot have arguments (version 21.1.2.15 (official build)).

    Никто не подскажет, что я не так делаю?
    PostgreSQL | Документация ClickHouse

    PostgreSQL Позволяет подключаться к БД на удаленном сервере PostgreSQL. Поддерживает операции чтения и записи (запросы S

  • https://t.me/clickhouse_ru
    вроде как в 21.1 PostgreSQL движка нет
  • эх (
  • @Derzkii_SPooN #222803 04:39 PM, 16 Jun 2021
    Спасибо
  • https://t.me/clickhouse_ru
    жутко извиняюсь за ап темы, но может быть найдутся еще какие то варианты, кажется, единственный предложенный не совсем про это
  • https://t.me/clickhouse_ru
    @tratatataass #222805 05:06 PM, 16 Jun 2021
    Привет!
    Поймал в логах КХ такое:
    Got exception while starting thread for connection. Error code: 0, message: 'No thread available'

    И КХ перестал отвечать. Что может быть?
  • https://t.me/clickhouse_ru
    посмотрите загрузку CPU
    выглядит так что тредов не хватает ... и слишком много коннектов...
  • https://t.me/clickhouse_ru
    Ага вижу спасибо. Кол-во коннектов возрасло с 10 до 500+ в один момент.
  • https://t.me/clickhouse_ru
    Мб что то такое

    WITH
    sumMap([product_id], [revenue]) AS map,
    arrayReverseSort(x -> (x.2), arrayZip(map.1, map.2)) AS sorted,
    arrayFilter((x, y) -> (y < (0.8 * total)), sorted, arrayPushFront(arrayPopBack(arrayCumSum(sorted.2)), 0)) AS product
    SELECT
    rubric,
    countDistinct(product_id),
    sum(revenue) AS total,
    product
    FROM sales
    GROUP BY rubri
    Либо через оконки делать
  • https://t.me/clickhouse_ru
    @innopolis #222811 05:53 PM, 16 Jun 2021
    кто-нибудь сортировал по алфавиту имена колонок в схеме бд?
  • https://t.me/clickhouse_ru
    что бы что?
  • https://t.me/clickhouse_ru
    мне тут вставка идет по отсортированным колонкам, и запрос типа INSERT INTO, пытается вставить часть данных не в те колонки (некоторые колонки в схеме не упорядочены, а при вставке идут упорядоченно) - это насколько я понял, дебажа
  • https://t.me/clickhouse_ru
    @dem_On #222814 06:04 PM, 16 Jun 2021
    Приветствую, кто-нибудь сталкивался с такой ситуацией?

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

    DROP TABLE products_mv_v2_2 ON CLUSTER cluster

    Query id: 6b5b5547-e97a-4c1a-9a0d-555829f01749

    ┌─host───────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
    │ node4.some_host.net│ 9000 │ 0 │ │ 3 │ 0 │
    └────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
    ↘️ Progress: 1.00 rows, 62.00 B (4.55 rows/s., 282.33 B/s.) 24%
    1 rows in set. Elapsed: 180.761 sec.

    Received exception from server (version 21.3.9):
    Code: 159. DB::Exception: Received from 10.0.1.30:9000. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000675 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 3 unfinished hosts (0 of them are currently active), they are going to execute the query in background.

    Такое происходило раза 4 за 5 месяцев
  • https://t.me/clickhouse_ru
    alter table modify column after|first

    tl;dr
  • https://t.me/clickhouse_ru
    select * from system.merges на том сервере где зависло
  • https://t.me/clickhouse_ru
    @dem_On ↶ Reply to #222816 #222817 06:27 PM, 16 Jun 2021
    SELECT *
    FROM system.merges

    Query id: ec657678-3547-4be4-85af-7b19c2320452

    Ok.

    0 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    в момент когда висит
  • https://t.me/clickhouse_ru
    @dem_On ↶ Reply to #222818 #222819 06:29 PM, 16 Jun 2021
    то же самое, в одном окне терминала делаю дроп, в другом селект из system.merges, и все равно ничего не выдает
  • https://t.me/clickhouse_ru
    @rasstr0en #222820 06:29 PM, 16 Jun 2021
    товарищи, а кто использует ssd+hdd? У нас при наполнении SSD взрывается по i/o всё, таймауты в зукипер, реплика умирает, может можно ограничить как-то откладывание с SSD на HDD по скорости?
  • https://t.me/clickhouse_ru
    а кусок кх лога, с дропом? Теоритически drop table может работать довольно долго (минуты), если много партов в таблице то их надо удалить с диска, если таблица replicated надо удалить все из зукипера.
  • https://t.me/clickhouse_ru
    чего, кто где стоял, на ком?
    типа место на ssd заканчивается и КХ начинает двигать сразу много партов одновременно?
  • https://t.me/clickhouse_ru
    несет 700Gb с SSD на HDD (80% накопил и начинает тащить на HDD)
  • https://t.me/clickhouse_ru
    @rasstr0en #222824 06:35 PM, 16 Jun 2021
    LA при этом на реплике
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @rasstr0en #222826 06:36 PM, 16 Jun 2021
    в кассандре есть настроечка ограничить интенсивность использования диска, в кх не найду для вот этих мувов такого
  • https://t.me/clickhouse_ru
    @rasstr0en #222827 06:38 PM, 16 Jun 2021
    <max_data_part_size_bytes>50000000</max_data_part_size_bytes>
  • https://t.me/clickhouse_ru
    @rasstr0en #222828 06:39 PM, 16 Jun 2021
    если поставить такое - парты будут падать на другой диск при мерже или просто появится очень много партов?
  • https://t.me/clickhouse_ru
    нету в КХ
  • https://t.me/clickhouse_ru
    будет очень много партов
  • https://t.me/clickhouse_ru
    @den_crane #222832 06:42 PM, 16 Jun 2021
    сколько мержей TTL одновременно?
  • https://t.me/clickhouse_ru
    осталось выяснить как происходит мув - вдруг это просто один большой парт
  • https://t.me/clickhouse_ru
    @rasstr0en #222834 06:43 PM, 16 Jun 2021
    если да, то много x2 партов в обмен на тихие мувы выглядит норм
  • https://t.me/clickhouse_ru
    видно это в логе и таблице part_log
  • https://t.me/clickhouse_ru
    @alexanderzaitsev #222836 06:46 PM, 16 Jun 2021
    Через 15 минут англоязычный ClickHouse meetup. Там будут интересные новости про Tableau: https://www.meetup.com/San-Francisco-Bay-Area-ClickHouse-Meetup/events/278144089/
    ClickHouse June [Virtual] Meetup

    Wed, Jun 16, 2021, 12:00 PM: Hello ClickHouse Fans,Welcome to the June 2021 ClickHouse Meetup! We have a talk from Alexey Milovidov on ClickHouse roadmap plus popular ways to visualize ClickHouse data

  • https://t.me/clickhouse_ru
    @alexanderzaitsev #222837 06:46 PM, 16 Jun 2021
    June ClickHouse Bay Area Meetup -- ClickHouse News

    Join us for this session on latest #ClickHouse news. We'll cover ClickHouse Roadmap (starring Alexey Milovidov, lead committer) and have another TBD talk. You can ask questions from Youtube. See the meetup invite for more information: https://www.meetup.com/San-Francisco-Bay-Area-ClickHouse-Meetup/events/278144089/ #DataWarehouse #Meetup ----------------- Check out more ClickHouse resources here: https://altinity.com/resources/​ Join Reddit community: https://www.reddit.com/r/Clickhouse/​ ----------------- Learn more about Altinity! Site: https://www.altinity.com​ LinkedIn: https://www.linkedin.com/company/alti...​ Twitter: https://twitter.com/AltinityDB

  • https://t.me/clickhouse_ru
    а с какой версии сть part_log?
  • https://t.me/clickhouse_ru
    @den_crane #222839 06:50 PM, 16 Jun 2021
    с 1-й
  • https://t.me/clickhouse_ru
    @rasstr0en #222840 06:50 PM, 16 Jun 2021
    The system.part_log table is created only if the part_log server setting is specified.
  • https://t.me/clickhouse_ru
    @rasstr0en #222841 06:50 PM, 16 Jun 2021
    ага включить
  • https://t.me/clickhouse_ru
    @rasstr0en #222842 06:50 PM, 16 Jun 2021
    спасибо, будем смотреть
  • @238773844 #222844 07:02 PM, 16 Jun 2021
    @alexanderzaitsev
  • https://t.me/clickhouse_ru
  • @238773844 #222847 07:10 PM, 16 Jun 2021
    тож самое, что и link с eventribe, я буду с youtube смотреть...
  • https://t.me/clickhouse_ru
    @graid2030 #222848 07:41 PM, 16 Jun 2021
    SELECT isp,
    count(DISTINCT log.messageId),
    count(DISTINCT last.messageId)
    FROM log
    LEFT JOIN
    (
    SELECT messageId
    FROM log
    WHERE typeId = 5
    GROUP BY messageId
    ) AS last USING (messageId)
    WHERE typeId = 1
    GROUP BY isp;

    Помогите с запросом.
    last.messageId может быть NULL, и DISTINCT посчитает его как отдельную запись, как не считать?
  • @s4851 ↶ Reply to #222848 #222849 07:46 PM, 16 Jun 2021
    Where last.messageId is not null
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #222848 #222850 07:51 PM, 16 Jun 2021
    count null не считает (неважно distinct там или нет)
  • https://t.me/clickhouse_ru
    Это так же уберет значения из log.messageId
  • https://t.me/clickhouse_ru
    Набросал пример
  • я тут немного погрепал...
    получается так...
    была мутация (дроп колонки) на много партиционную таблицу, но она никак не отрабатывала.
    и видимо кто-то замерджил парт до того как мутация отработала.
    Как вообще очередность между мерджами и мутациями решается?

    2021.04.27 08:35:33.156739 [ 12284 ] {} <Trace> mnp.tblname: Executing log entry to merge parts 20210427-421_0_6_1, 20210427-421_7_14_1, 20210427-421_15_21_1, 20210427-421_22_29_1, 20210427-421_30_30_0, 20210427-421_31_31_0, 20210427-421_32_32_0, 20210427-421_33_33_0, 20210427-421_34_34_0, 20210427-421_35_35_0, 20210427-421_36_36_0 to 20210427-421_0_36_2
    2021.04.27 08:35:51.237777 [ 12284 ] {} <Trace> mnp.tblname: Renaming temporary part tmp_merge_20210427-421_0_36_2 to 20210427-421_0_36_2.
    2021.04.30 19:33:23.693630 [ 12294 ] {} <Debug> mnp.tblname (ReplicatedMergeTreeQueue): Not executing log entry MUTATE_PART for part 20210427-421_0_36_2_111 because source parts size (324.06 MiB) is greater than the current maximum (0.00 B).
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #222852 #222854 08:21 PM, 16 Jun 2021
    какой-то неудачный пример, не понимаю к чему он
  • https://t.me/clickhouse_ru
    count (что-то) -- считает КОЛ-ВО СТРОК!!! где что-то не null.
  • https://t.me/clickhouse_ru
    @den_crane #222856 08:22 PM, 16 Jun 2021
    любая агрегирующая функция просто пропускает null
  • https://t.me/clickhouse_ru
    Значит я что-то не понимаю(
    Для messageId = 2, нету записи в last как выходит что там 1
  • https://t.me/clickhouse_ru
    join в КХ не продьюсит null по дефолту
  • https://t.me/clickhouse_ru
    @den_crane #222859 08:24 PM, 16 Jun 2021
    --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.
  • https://t.me/clickhouse_ru
    по идее они последовательно должны выполнятся, странно каким образом мутация с drop колонки ждала и мерж пролез раньше, надо спросить у девелоперов
  • спасибо, ладно, когда остальные логи доедут, I'll be back
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #222857 #222862 08:28 PM, 16 Jun 2021
    выведи message_id. Думаю, тебе не надо группировать по тому полю по которому считаешь каунт
  • https://t.me/clickhouse_ru
    А как тогда лучше обойтись в таком случае?
    SELECT isp,
    count(DISTINCT log.messageId), -- if typeId = 1
    count(DISTINCT log.messageId), -- if typeId = 5
    FROM log
    GROUP BY isp;
    Можно как-то условие на count поставить чтобы посчитать уникальные записи для каждого typeId?
  • countif
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #222863 #222865 08:36 PM, 16 Jun 2021
    countIf(distinct log.messageId, log.messageId=1)
  • https://t.me/clickhouse_ru
    @graid2030 #222866 08:37 PM, 16 Jun 2021
    Спасибо всем =)
  • 17 June 2021 (246 messages)
  • https://t.me/clickhouse_ru
    @Caside #222867 03:12 AM, 17 Jun 2021
    Подскажите пожалуйста наилучший вариант аналога постгрессовского
    SELECT DISTINCT ON (a) a, b, c, d from table
    ORDER BY a, b
    с использованием GROUP BY для Clickhouse
    Нужно взять для каждого уникального "a" по 1 строке с наименьшим значением "b", например. Или для более сложной сортировки.
  • https://t.me/clickhouse_ru
    order by a, b... limit 1 by a
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222868 #222869 03:44 AM, 17 Jun 2021
    Спасибо, невероятно изящно. Постепенно меняю отношение к CH
  • https://t.me/clickhouse_ru
    @Caside #222870 04:12 AM, 17 Jun 2021
    Почему при создании dictionary из внешней таблицы постгресса в колонке с типом int64 пропадают отрицательные значения?
    Эта колонка не используется в primary key
  • https://t.me/clickhouse_ru
    INSERT INTO table(column1, column2)
    в том порядке какой вам нужен задаете и вставляете
  • @Mr_A275 #222872 04:49 AM, 17 Jun 2021
    Всем привет! Есть проблема не проходит TRUNCATE на таблицу. Подскажите, пожалуйста, куда смотреть? Таблица совсем маленькая 28000 строк.
  • https://t.me/clickhouse_ru
    не проходит с какой то ошибкой? или просто молча говорит ОК и данные не удаляются

    какой engine у таблицы? не distributed случайно?
  • движок ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    ошибка то какая?
    timeout?
  • да, просто таймаут
  • https://t.me/clickhouse_ru
    @Caside #222877 05:10 AM, 17 Jun 2021
    А есть какой-то вариант делать JOIN с условием OR? То есть
    SELECT * from A
    LEFT JOIN B ON A.a = B.a OR A.b = B.b
  • https://t.me/clickhouse_ru
    Значит что-то еще блокирует таблицу
    вставка идет паралельно например
  • @1063161973 #222879 06:01 AM, 17 Jun 2021
    Добрый день. Второй день ловлю ошибку 473 при попытке удаления таблицы (эта таблица в базе с движком Ordinary, первая была в базе с движком Atomic). Можно ли как-нибудь "побороть" такую ошибку ?
  • @1063161973 #222880 06:03 AM, 17 Jun 2021
    ... версия сервера КХ : 21.2.5.5
  • https://t.me/clickhouse_ru
    пока нет
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/pull/24420
    подписывайтесь мониторьте тестируйте
    Support conditions in JOIN ON section by vdimir · Pull Request #24420 · 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
    ну очевидно можно, путем того что перестать пытаться паралельно вставлять в таблицу... или перейти на более свежую версию clickhouse и сконвертировать базу в Engine=Atomic
  • @1063161973 #222885 06:09 AM, 17 Jun 2021
    Параллельных вставок в таблицу нет, один процесс занимается изменением данных. Atomic на другой таблице был, такая же беда. Но на новую версию, наверное, уже пора перейти. Еще вопрос - можно ли сконвертировать базу из Ordinary в Atomic без пересоздания и перезаливки всех таблиц исходной базы ?
  • эквивалент джойна с OR это UNION:

    SELECT * from A
    LEFT JOIN B ON A.a = B.a

    UNION ALL

    SELECT * from A
    LEFT JOIN B ON A.b = B.b
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #222886 #222887 06:13 AM, 17 Jun 2021
    +
  • https://t.me/clickhouse_ru
    Это 1С весь на КХ ?
  • https://t.me/clickhouse_ru
    нет, просто репортинг скорее всего сделали
  • @1063161973 #222890 06:47 AM, 17 Jun 2021
    Нет, с КХ синхронизируются документы, влияющие на остатки, справочники и часть регистров. И расчет остатков в КХ выполняется. Остатки/обороты в разрезах товар/магазин/дата. Цены в разрезе товар/дата (вместо срезов, так быстрее)
  • @1063161973 #222891 06:47 AM, 17 Jun 2021
    Из КХ аналитики затем свои отчеты делают в Excel и PowerBI
  • https://t.me/clickhouse_ru
    ну если сервер выключить
    и ручками в metdata покопаться добавив UUID и потом перенести в /var/lib/clickhouse/store
    может что нибудь и получится
  • @1063161973 #222893 06:48 AM, 17 Jun 2021
    Часть ресурсоемких отчетов в 1С также из КХ данные берут
  • https://t.me/clickhouse_ru
    о, а расскажите как выостатки обороты считаете в clickhouse?

    ну вот есть у вас таблица с движениями
    есть отдельная таблица с итогами?
    как пересчет этой таблицы идет?
    а то всегда хотел понять как именно регистр сведений организовать средствами кликхаус
  • Остатки и обороты количественные (не партионный учет конечно). Обороты просто - все документы, которые двигают остатки, сложить с соответствующим знаком и приведением датывремени к дате. Перемещение - два раза (т.к. два магазина). В результате получим в КХ обороты за каждый день.
  • https://t.me/clickhouse_ru
    А как синхронизируете чем ? ETL какой-то или скриптами ?
  • @1063161973 #222897 06:53 AM, 17 Jun 2021
    Затем циклом в 1С к остаткам на начало прибавляются (запросом КХ) остатки на следующий день, и т.д.
    Т.е. таблицы итогов нет. Есть остатки на каждый день
  • Отдельная технологическая база 1С для зтого. И набор "мультискриптов", сценариев их исполнения. Мультискрипт - смешанный код на 1С, включает исполнение пакетных запросов в КХ, обращения к базе 1С через универсальный Web (или HTTP) сервис для удаленного исполнения запросов и алгоритмов 1С, обращения к SQL базе 1С через ADO,
    формирование SQL запросов для исполнения утилитой BCP.EXE
  • https://t.me/clickhouse_ru
    спасибо
  • @1063161973 #222900 06:58 AM, 17 Jun 2021
    Скриптом выполняется быстрое сравнение (тип документов/дата/сумма) или медленное по SHA256, если за какой-то день найдены расхождения, в КХ удаляются данные и грузятся заново
  • https://t.me/clickhouse_ru
    через ALTER TABLE данные удаляете или через DROP PART?
  • Через ALTER TABLE с mutation_sync=2
  • @s4851 #222903 07:02 AM, 17 Jun 2021
    Данные перенесены в КХ только для аналитиков или используются в операционной работе?
  • Данные чеков - только в КХ, грузятся непрерывно
  • https://t.me/clickhouse_ru
    @kozyrevMikhail #222905 07:02 AM, 17 Jun 2021
    Добрый день.
    Подскажите, может кто сталкивался, есть словарь который хранится в MS SQL
    В поле Version лежат значения вроде 1.0.5, 1.0.6 и тд
    При запросе словаря в клике получаю ошибку

    type: std::invalid_argument, e.what() = stoull: no conversion

    Я так понимаю у него проблемы с конвертацией данных, как с этим бороться?
    Тип данных в словаре указан String
  • @s4851 ↶ Reply to #222904 #222906 07:03 AM, 17 Jun 2021
    Т.е в 1С остались ОРП, а сами чеки только в КХ?
  • ОРП (реестры) есть и в КХ и в 1С, чеки только в КХ, 1С не "вывозит" ~10000 магазинов
  • @s4851 #222909 07:05 AM, 17 Jun 2021
    Таблицы типа Replacing не используете?
  • @s4851 #222910 07:07 AM, 17 Jun 2021
    Т.е в 1С постоянно все меняется и использовать мутации тяжело, интересно используете ли встроенные механизмы устранения дублей которые дает клик
  • https://t.me/clickhouse_ru
    ну вот выглядит так что к этой таблице у вас что-то еще прилетает, репликация какая нибудь постоянная или вставки
    и DROP TABLE просто не может заблокрировать таблицу

    смотрите system.merges, system.processes, system.mutations, system.replication_queue для этой таблицы
  • Заблокировалась другая таблица, work.tovzap. Она по расписанию раз в сутки обновляется одним процессом.
    С чеками пока проблем не было..
  • https://t.me/clickhouse_ru
    хм, выборка из нее идет из этой таблицы?
    просто суть в том что DROP TABLE в Ordinary
    это блокировка на запись, и потом физическое удаление файлов и каталог в metadata и data

    если у вас replicated merge tree
    то еще отдельно из ZK вычищается реплика для этой таблицы

    я бы попробовал DROP TABLE ... ON CLUSTER ... SYNC
  • @1063161973 #222914 07:14 AM, 17 Jun 2021
    Evgeniy Sergeev, [17.06.21 10:07]
    Т.е в 1С постоянно все меняется и использовать мутации тяжело, интересно используете ли встроенные механизмы устранения дублей которые дает клик

    Именно поэтому онлайновой синхронизации нет, раз в сутки выполняется сравнение данных 1С и КХ, затем через bcp.exe выгружаются данные по датам с расхождениями, в КХ ALTER TABLE удаляются прежние данные за эти даты и заливаются обновленные данные из 1С. На всё уходит около часа времени
  • https://t.me/clickhouse_ru
    @k1nteg #222915 07:17 AM, 17 Jun 2021
    Всем привет, насколько сильно падает скорость поиска/вставки при количестве партиций от тысячи до 10 и от 10 тысяч до 20?
  • @1063161973 #222916 07:19 AM, 17 Jun 2021
    Реплик нет, рабочий сервер КХ пока один (256 Гб ОЗУ + 2 Тб SSD), поэтому и непонятно. Движки таблиц - MergeTree, SummingMergeTree,
  • https://t.me/clickhouse_ru
    @hostadminonline #222917 07:30 AM, 17 Jun 2021
    добрый день. Подскажите с точки зрения настроек
    например у нас 2 шарда и каждый реплицируется *2 .... если данные находятся на 2ом шарде ... клиент может обращаться к любому шарду/реплике или это нам нужно на своей стороне контролировать где хранятся данные ?
  • https://t.me/clickhouse_ru
    MergeTree для Ordinary блокируется либо background merge либо мутациями либо другими insert

    смотрите в system.merges, system.mutations, system.processes, system.query_log и system.part_log
    по времени когда случается ошибка с фильтрацией по имени таблицы
  • Спасибо, попробую в system поискать
  • @1063161973 #222920 07:38 AM, 17 Jun 2021
    ... и версию обновить и перезалить таблицы в базу Atomic
  • @kissex #222922 09:00 AM, 17 Jun 2021
    День добрый.
    Есть 6 шардов, на каждом стоит словарь с типом hashed. При этом объём занимаемой памяти словарём около 80 gb.
    На одном из шардов решил поменять тип на sparse_hashed и при этом после обновления словаря объём занимаемой им памяти остался прежним.
    Хотя в документации сказано:
    Аналогичен hashed, но при этом занимает меньше места в памяти и генерирует более высокую загрузку CPU.
    Подскажите куда копать? Спасибо

    ver. 19.15.3.6
  • https://t.me/clickhouse_ru
    @artcorp96 #222924 09:02 AM, 17 Jun 2021
  • https://t.me/clickhouse_ru
    а если попробовать PREALLOCATE=0 ?

    "less memory"
    означает что на сам хеш памяти меньше, а значения атрибутов наверняка столько же весят...
    если у вас 80 гигов то экономить вам скорее всего получится 1-2 гига максимум а скорее всего 100-200 мегабайт если кол-во элементов большое...
  • https://t.me/clickhouse_ru
    источник у словаря какой?
  • @kissex ↶ Reply to #222926 #222927 09:07 AM, 17 Jun 2021
    Postgre.
    У словаря 13 атрибутов
  • @kissex ↶ Reply to #222925 #222928 09:10 AM, 17 Jun 2021
    да, я чего то с ходу так и не понял в чём назначение этой штуки preallocate. Чтож попробую. Спасибо
  • https://t.me/clickhouse_ru
    ну, ничего особенного, сильно прямо ничего такого не получится экономить...
  • https://t.me/clickhouse_ru
    можно попробовать обновить clickhouse и использовать ssd_cache layout
    https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout/#ssd-cache

    или просто попробовать cache
    если у вас не все элементы словаря используются
    Storing Dictionaries in Memory | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @pic_Nick77 #222932 09:25 AM, 17 Jun 2021
    Подскажите, если в system.columns в поле compression_codec пусто, то это значит, что использован кодек по-умолчанию?
  • https://t.me/clickhouse_ru
    да
    LZ4
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    но на всякий случай посмотрите внимательно на вашу секцию <compression> в конфигах
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-compression
    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
    @mezhekov #222937 09:30 AM, 17 Jun 2021
    Привет, вопрос. Есть кластер с шардами в каждом шарде по 2 реплики, в нем есть таблица, replicatedmergetree над этой таблицей строится материальная вьюшка на каждой реплике и уже на эти вьюшки смотрит дистрибутед, вопрос вот в чем, проходили работы на железе и выключались реплики на несколько дней, после включения исходная табличка догналась данными, а вот материальная вьюшка нет, что делать? Данных хулиярг и небольшая тележка пересоздавать вьюшку не вариант, есть какието альтернативные методы. В связи с этой проблемой возникает другой вопрос, если данные на сервер приходят не через запрос а через репликацию, они попадает во вьюшку или нет? CH v.21.3.12.2
  • https://t.me/clickhouse_ru
    У меня эта секция вообще закомментирована.
  • https://t.me/clickhouse_ru
    тогда LZ4
  • https://t.me/clickhouse_ru
    Надо было materialized view делать с TO db.another_replicated_mergetree_table выражением
    а так у вас похоже обычные MergeTree внутри MV созданы

    POPULATE делать не вариант

    можно попробовать руками данные догнать

    INSERT INTO db.inner_таблица_из_mv SELECT ... FROM db.исходная_replicated_tree
    WHERE (тут грамотно подобрать условие чтобы повторно данные не вставить) GROUP BY ...

    имя inner Таблицы смотрите через SHOW TABLES
  • https://t.me/clickhouse_ru
    CREATE MATERIALIZED VIEW mv_table ENGINE = SummingMergeTree(…) AS SELECT … FROM source_table вот так создавалось
  • https://t.me/clickhouse_ru
    ну значит создали локальную inner таблицу внутри mv_table
    SHOW TABLES посмотрите...
  • https://t.me/clickhouse_ru
    @mezhekov #222944 09:48 AM, 17 Jun 2021
    да .inner.mv_table
  • @salionov #222945 09:49 AM, 17 Jun 2021
    Добрые люди, насколько безопасно обновлять

    ClickHouse server version 19.4.1 revision 54416.

    до актуальной с ReplicationMergeTree на борту?)

    вроде тут писали, что что-то у ребят не завелось, но ответа я не нашел , как в итоге он вышел из оказии

    мож безопаснее на какой-нибудь 19.9 и тд и так по одному мажору обновлять?
  • https://t.me/clickhouse_ru
    ну вот в нее руками через INSERT .. SELECT аналогичный тому что в CREATE делали и вставляйте , только условие WHERE добавьте чтобы повторно данные не вставить
  • https://t.me/clickhouse_ru
    тут, понятно, в другом не ясность, если реплика отстала, в момент репликации в эту inner не добавится?
  • https://t.me/clickhouse_ru
    ну если сервера стопнуть от вставок... и обновлять одновременно, то нормально должно обновиться...
  • а если начать писать в другие таблички и обновлять кусками? а потом просто хвост долить
  • https://t.me/clickhouse_ru
    ну тоесть в процессе востановления реплики, почему она не догнала в inner таблице?
  • https://t.me/clickhouse_ru
    ну по идее репликация это не вставка
    это просто регистрация имени нового парта в ZK
    и его последующая асинхронная скачка через HTTP протокол в виде как есть...

    а MV это after insert trigger
    а вставки вроде как и не было...
  • https://t.me/clickhouse_ru
    ясно
  • https://t.me/clickhouse_ru
    @mezhekov #222953 09:54 AM, 17 Jun 2021
    тоесть если делать insert через distributed то даже в штатном режиме будет жопа?) destrib же передает запрос на 1 из 2 реплик шарда и каждый раз запрос прилетает на разную реплику и на ту куда он не пришел прилетают просто пачки после репликации
  • https://t.me/clickhouse_ru
    @mezhekov #222954 10:02 AM, 17 Jun 2021
    для пояснения в distributed над таблицей source_table
  • https://t.me/clickhouse_ru
    ну INSERT через distributed это сначала разбиение по sharding key и буфферизация в .bin в ноде инициаторе, а потом push передача .bin файлов через distributed sends на реплики шардов соответсвующих условию sharding_key

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

    в общем надо разбираться смотреть когда срабатывает INSERT TRIGGER а когда нет...
  • https://t.me/clickhouse_ru
    я просто, по ходу пьесы посмотрел исторические данные увидел, что count() в mv одного шарда отличается иногда оооочень сильно.
  • https://t.me/clickhouse_ru
    @mezhekov #222958 10:14 AM, 17 Jun 2021
    вот теперь думаю как исправить эту ситуацию в будущем
  • @1789158330 #222959 10:25 AM, 17 Jun 2021
    Всем добрый день. Подскажите, пожалуйста, такой момент: в системе есть Kafka, в которую загружаются ивенты из некоторой системы в один топик event_topic,
    ивенты из себя представляют некоторый JSON с произвольным набором столбцов, который зависит от типа самого ивента, в каждом ивенте есть атрибут
    eventtype, который хранит название типа события в системе.
    Будет ли хорошей практикой в clickhouse создать таблицу следующего вида:

    create table t_kafka_message
    (
    message String,
    insert_date DateTime default now()
    ) engine = Kafka()
    settings
    kafka_broker_list='127.0.0.1:9092',
    kafka_topic_list='event_topic',
    kafka_group_name='clickhouse_kafka_group',
    kafka_format='JSONEachRow';

    а далее с помощью материализованного представления выполнять разбор содержимого в столбце message в таблице t_kafka_message
    с последущей записью в заданные таблицы (для каждого типа события создана своя таблица)? Есть ли потенциальные проблемы с производительностью
    при таком подходе к реализации задачи?
  • @1063161973 #222960 10:29 AM, 17 Jun 2021
    В последней версии КХ появилась возможность задания комментария при создании таблицы. А команды ALTER для этого нет ? Существующая только для колонок работает
  • @Alex54938 #222961 10:37 AM, 17 Jun 2021
    кто знает, подскажите пожалуйста, как столбец с типом AggregateFunction(uniq, UInt32) в секции where проверить на какое-то значения, например на нулевое. uniqMerge в секции where не доступена
  • https://t.me/clickhouse_ru
    переделать MV
    на триггер + отдельная replicated merge tree таблица

    вместо inner делать TO db.имя_отдеьной_таблицы
    посмотрите синтаксис
    https://clickhouse.tech/docs/en/sql-reference/statements/create/view/#materialized
    VIEW | ClickHouse Documentation

    CREATE VIEW Creates a new view. Views can be normal, materialized and live (the latter is an experimental feature). Norm

  • https://t.me/clickhouse_ru
    @hostadminonline #222963 10:44 AM, 17 Jun 2021
    а почему на CREATE DICTIONARY tarifs ON CLUSTER
    выдает: Syntax error: failed at position 8:
    Expected one of: DATABASE, TEMPORARY, MATERIALIZED, TABLE, VIEW
    ?
  • @Icecube092 #222965 10:47 AM, 17 Jun 2021
    Всем привет! Помогите пожалуйста разобраться с проблемой.
    Clickhouse запущен в докере
    Необходимо было удалить записи из таблицы, запрос удаления выдавал "0 rows in set", запрос на выборку с такими же условиями работал корректно.
    Произвел перезапуск докер-контейнера.
    После этого любые запросы в эту таблицу перестали работать, через 300 секунд отваливались по таймауту, но в процессах все также продолжают висеть
    Что делать?

    UPD: kill query и kill mutation зависает также как и обычный запрос
  • покажите весь код
    и в вашей версии КХ можно создавать через create dictionary?
  • https://t.me/clickhouse_ru
    что такое КХ ? 🙂
  • ClickHouse)
  • https://t.me/clickhouse_ru
    @hostadminonline #222969 10:48 AM, 17 Jun 2021
    )))
  • https://t.me/clickhouse_ru
    @timofeevdmitry #222970 10:48 AM, 17 Jun 2021
    Здравствуйте.
    —————————-
    select
    argMaxMerge(actual_st) as actual_st,
    ifNull(minIfMerge(order_created), '1970-01-01 00:00:00') as order_created
    —————————-
    Объясните, пож-та, тайный смысл приставки Merge
    Доку на сайте читал.
    Не понимаю.
    Может статья есть с объяснением работы функций с Мержами?
  • https://t.me/clickhouse_ru
    либо Clubhouse, в зависимости от контекста)
  • https://t.me/clickhouse_ru
    а как узнать можно или нет ?
  • можно наверно на гитхабе погулять, думаю
  • https://t.me/clickhouse_ru
    мы юзаем yandex cloud
  • https://t.me/clickhouse_ru
    @hostadminonline #222975 10:50 AM, 17 Jun 2021
    не кастом
  • с ним не работал, но можете прислать весь текст создания словаря, мб в синтаксисе ошибка
  • https://t.me/clickhouse_ru
    смотрите

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

    соответственно *Merge как модификатор берет эти промежуточные состояния с предыдущих этапов выборки
    и "доаггрегирует"

    подробнее тут
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/
    Combinators | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    Спасибо.
    Всё равно не понимаю :)
    Можно наводящий вопрос
    1) функция с приставкой Merge, например argMaxMerge уместна только на движке AggregatingMergeTree ?
    2) На движке MergeTree она уже не будет работать?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    сейчас попробую пояснить примером
  • https://t.me/clickhouse_ru
    SELECT sumMerge(s) FROM (SELECT sumState(number) s FROM numbers(1000));

    вот тут никакого MergeTree нет и AggregatingMergeTree нет

    AggregatingMergeTree
    это движок который как раз использует преймущество модификаторов Merge и State при background merge
  • https://t.me/clickhouse_ru
    @timofeevdmitry #222982 11:17 AM, 17 Jun 2021
    🙈🙈🙈 я тупой
  • https://t.me/clickhouse_ru
    @timofeevdmitry #222983 11:17 AM, 17 Jun 2021
    Пойдем сначала )))
  • https://t.me/clickhouse_ru
    @timofeevdmitry #222984 11:17 AM, 17 Jun 2021
    Пойду читать про aggregation State
  • https://t.me/clickhouse_ru
    ну давайте на пальцах поясню
    вот смотрите
    у вас есть простой запрос

    SELECT count() as goods_count, category FROM goods GROUP BY category

    чтобы посчитать goods_count
    что нужно?
    нужно в памяти создать hashMap в котором ключ category а значение это счетчик который увеличивается на 1 на каждую строку с этой category. мы читаем поточно и передаем строку из 1 поля category на вход агрегатной функции

    вот этот hash Map можно передать по конвейеру вышестоящему как countState()
  • https://t.me/clickhouse_ru
    @dvenum #222987 11:20 AM, 17 Jun 2021
    Подскажите, пожалуйста, можно как-то узнать, что лочит query?
  • @Derzkii_SPooN #222988 11:22 AM, 17 Jun 2021
    Привет, а никто не сталивался с такой проблемой. Пытаюсь базу создать Postgresql. делал по доке: https://clickhouse.tech/docs/ru/engines/database-engines/postgresql/

    Команда такая у меня: CREATE DATABASE production_gp ON CLUSTER my_cluster ENGINE = PostgreSQL("my_host:5432", "gp_db", "user", "pw", 1);

    На что получаю ошибку, которая немного ставит в тупик:
    Code: 36, e.displayText() = DB::Exception: Database engine PostgreSQL cannot have arguments (version 21.3.4.25(official build)).

    Базу Postgresql выкатили в 21-2, вроде как, должно работать.
    Никто не подскажет, что я не так делаю?
    PostgreSQL | Документация ClickHouse

    PostgreSQL Позволяет подключаться к БД на удаленном сервере PostgreSQL. Поддерживает операции чтения и записи (запросы S

  • https://t.me/clickhouse_ru
    SELECT engine_full FROM system.tables WHERE name='restaurant_timetables' ?
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #222989 #222990 11:26 AM, 17 Jun 2021
    Спасибо. А что это такое?
  • https://t.me/clickhouse_ru
    это метаданные таблицы, просто хочется понять что за таблица нет ли там каких нибудь зависимостей
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #222991 #222992 11:27 AM, 17 Jun 2021
    Удалось узнать, что запросы к этой таблице стали зависать после alter table, который не прошел. И запросы к system.mutations тоже виснут.
  • https://t.me/clickhouse_ru
    странно конечно
    LIMIT из обычной MergeTree не должен тормозить... тем более у вас там ни сортировки ничего

    DROP TABLE там паралельно никто не делает?
  • https://t.me/clickhouse_ru
    а, ну дык это
    SELECT * FROM system.mutations WHERE is_done=0

    делайте KILL MUTATION
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #222993 #222995 11:30 AM, 17 Jun 2021
    Drop никто не делает. В списке 'show processlist' только свежие select. Мы можем перезапустить весь сервер, тогда processlist очищается, а все новые запросы к этой таблице старательно виснут.

    upd: kill mutation тоже виснет.
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #222994 #222996 11:31 AM, 17 Jun 2021
    "select * from system.mutations where is_done=0;"
    запрос зависает.
  • https://t.me/clickhouse_ru
    ну KILL MUTATION виснет видимо потому что кто-то у вас убил таблицу большим кол-вом мутаций, не понимая как это работает
  • https://t.me/clickhouse_ru
    ну, тяжко вам

    ищите в system.query_log
    что именно делали с таблицей
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #222998 #222999 11:33 AM, 17 Jun 2021
    Спасибо, причина уже понятнее и мы так больше не будем, честно-честно. А как можно починить эту таблицу обратно?
  • https://t.me/clickhouse_ru
    только если стопнуть миграции через KILL MUTATION WHERE ... SYNC
    с большим receive_timeout (если используете clickhouse-client)
  • https://t.me/clickhouse_ru
    ну еще можно наверное стопнуть сервер и .txt файлы с миграциями ручками поудалять в /var/lib/clickhouse/data/имя_бд/имя_вашей_проблемной_таблицы

    только аккуратно не все txt файлы надо удалять а те которые migration_xxx.txt
  • https://t.me/clickhouse_ru
    посмотрите еще в system.merges и в system.parts_log что происходит с вашей таблицей там по имени таблицы можно фильтровать
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #223002 #223003 11:40 AM, 17 Jun 2021
    Спасибо. system.merges пустая совсем, а parts_log у нас нет, только parts и parts_columns
  • https://t.me/clickhouse_ru
    @k1nteg #223004 11:41 AM, 17 Jun 2021
    Всем привет. Есть ли в кх механизм, который по определённым параметрам будет перенаправлять запросы к таблице в её материализованное представление?
    Ситуация такая, что для более эффективного поиска было принято решение создать 2 представления. С java не проблема на основании параметров решать, у кого производить поиск. Но интересно, можно ли это сделать средствами кх.
  • https://t.me/clickhouse_ru
    part_log
  • https://t.me/clickhouse_ru
    SELECT count() FROM system.mutations;
    тоже виснет?
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #223006 #223007 11:44 AM, 17 Jun 2021
    Да, этот виснет. А вот count() из проблемной таблицы отвечает. Запрос "kill mutation where database='dbname' sync;" висит пока.
    Вижу много mutattion_$$.txt в /var/lib/clickhouse/data/dbname, почищу их руками.
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #223001 #223008 11:51 AM, 17 Jun 2021
    Так и было, clickhouse не смог выполнить одну из mutation, а таблица залочилась до завершения. Собрали список mutations перед удалением, найдем проблемную.
    Спасибо, все запустилось.
  • https://t.me/clickhouse_ru
    при выключенном сервере
  • https://t.me/clickhouse_ru
    мутации асинхронно выполняются

    с ними осторожно надо по условиям мутаций
    либо запускайте только с ALTER TABLE ... UPDATE|DELETE ... SETINGS mutations_sync=2

    вообще если вы вдруг решили делать дофига мутаций
    значит вы не понимаете как это рабоает и путаете OLAP Таблицу с OLTP
  • https://t.me/clickhouse_ru
    таблица может оказаться в непонятном состоянии в этом случае
    в смысле где то мутации прошли, где то нет
  • https://t.me/clickhouse_ru
    @malkeshar #223013 11:55 AM, 17 Jun 2021
    Добрый день. Простите за нубский вопрос. А посоветуйте, пожалуйста, как для временных рядов в клике(Path, Timestamp, Value) посчитать максимальный промежуток времени, когда значение Value не менялось. Верчу в голове вопрос, но не понимаю, как его на уровне самой базы решить. Наверняка с богатым перечнем функций клика это не обязательно выносить на уровень скриптов.
  • https://t.me/clickhouse_ru
    @dvenum ↶ Reply to #223012 #223014 11:55 AM, 17 Jun 2021
    Так и есть, путаем, но у нас это еще dev и мы просто пробуем всякое.
  • https://t.me/clickhouse_ru
    IMHO через WINDOW functions наверное

    SELECT DISTINCT
    path, value,
    min(timestamp) over (PARTITION BY path, value ORDER BY timestamp) AS min_time,
    max(timestamp) over (PARTITION BY path, value ORDER BY timestamp) AS max_time
    toDateTime(max_date) - toDateTime(min_date) AS period,
    formatReadableTimeDelta(period) AS readable_period
    FROM ts_table
    ORDER BY path, timestamp, period DESC

    но может памяти не хватить для DISTINCT
  • https://t.me/clickhouse_ru
    @malkeshar #223017 12:30 PM, 17 Jun 2021
    Спасибо большое! Это, видимо, с версии 21. По моему оконные функции там добавили
  • https://t.me/clickhouse_ru
    да, 21.4 и выше
  • https://t.me/clickhouse_ru
    @Maxim247 #223020 12:42 PM, 17 Jun 2021
    всем привет, подскажите куда смотреть и как подобраться пожалуйста к решению задачи)

    есть таблица логирования времени над задачей, отрезки хранятся в периоде 5-10 минут.
    user int64
    datetime_start Datetime
    datetime_end Datetime
    seconds int64
    activity_percent int64
    Как можно сгруппировать интервалы начала и конца по дням, часам, неделям, месяцам?)
    Если нужны какие то уточняющие данные, скину)

    Итого хочу получить отчет по дням сколько человек отработал
    Искал в документации работу с Interval но там ничего интересного для задачи не нашел :(
  • возможно такое подойдет?
    select toStartOfInterval(dt_start, INTERVAL 1 day) as dt_start1,
    toStartOfInterval(dt_end, INTERVAL 1 day) as dt_end1, sum(dt_end - dt_start)/3600, user from
    (select 1 as user,now() as dt_start, now() + interval 3 hour as dt_end
    union all
    select 1 as user,now() + interval 4 hour as dt_start, now() + interval 6 hour as dt_end
    union all
    select 2 as user,now() + interval 4 day as dt_start, now() + interval 6 day as dt_end
    union all
    select 2 as user,now() + interval 8 hour as dt_start, now() + interval 10 hour as dt_end) as t
    group by user,dt_start1, dt_end1;
  • https://t.me/clickhouse_ru
    @Maxim247 #223022 01:09 PM, 17 Jun 2021
    Я сейчас вроде придумал вариант другой, раз данные денормализованны и секунды у меня уже есть, буду приводить start а на end забивать)
    и попробую toStartOfHour toStartOfDay и по ним group by
  • https://t.me/clickhouse_ru
    @Maxim247 #223023 01:24 PM, 17 Jun 2021
    забавно просто получилось и очень быстро работает в отличии от постгреса)
    select toStartOfHour(start), (sum(seconds) / 60 / 60) from worktimes
    where user = 14 and toDate(start) == '2021-03-12'
    group by toStartOfHour(start)
    order by toStartOfHour(start);
  • https://t.me/clickhouse_ru
    CH не понимает VarChar(-1), используйте VarChar(255)
  • https://t.me/clickhouse_ru
    @svdmitriy #223025 01:41 PM, 17 Jun 2021
    Всем привет.
    Вчера весь день (компьютер) собирал по инструкции https://clickhouse.tech/docs/en/development/build/#how-to-build-clickhouse-debian-package
    А куда он в итоге deb пакеты складывает, я так и не нашёл, или опять не так понял фразу "How to Build ClickHouse Debian Package" ?
    Какие-то переменные возможно нужно установить кроме
    $ export CC=clang-11
    $ export CXX=clang++-11
    кто подскажет?
    Build on Linux | ClickHouse Documentation

    How to Build ClickHouse on Linux Supported platforms: x86_64 AArch64 Power9 (experimental) Normal Build for Development

  • https://t.me/clickhouse_ru
    вообще проблема не в этом, скорость может упасть в 100 раз, может вырасти.
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223026 #223027 01:42 PM, 17 Jun 2021
    А от чего это зависит?
  • https://t.me/clickhouse_ru
    зависит от запросов, если select читает 1000 партиций это очень медленно. Если у вас 10тыс. партиций и запрос читает одну партицию, это очень быстро. Если у вас 100тыс. партиций то запрос тратит 3 сек. на анализ партиций еще до старта. Если инсерт делает вставку в одну партицию и у вас 100 тыс. партиций то это очень быстро, если запрос делает вставку в 10 партиций и у вас 20 партиций, то это очень медленно, если у вас больше 1000 партиций то скорее всего у вас сломались любые мутации и alter, если у вас 100 тыс партиций то скорее всего КХ будет стартовать около часа на HDD.
  • https://t.me/clickhouse_ru
    @aksimemor #223030 01:46 PM, 17 Jun 2021
    Подскажите, как правильнее будет добавить индекс к таблице по двум колонкам с типами datetime, string?

    Немного не понимаю за что отвечает Type type

    ALTER TABLE [db.]name ADD INDEX name expression TYPE type GRANULARITY value

    А также в каком формате указывать условие?
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223028 #223031 01:48 PM, 17 Jun 2021
    Спасибо большое!
  • https://t.me/clickhouse_ru
    skip индексы это совсем не те индексы что вы подумали. Что лежит в полях индексируемых и как выглядит запрос?
  • https://t.me/clickhouse_ru
    @aksimemor #223033 01:51 PM, 17 Jun 2021
    В полях лежат event_time, и название проекта.

    Запросы разного формата, зачастую это агрегация из сырых данных с условие where event_time >= '2021-05-05' and project_name = 'same_project' а также ряд условий на другие колонки
  • https://t.me/clickhouse_ru
    @aksimemor #223034 01:51 PM, 17 Jun 2021
    Проблема заключается в том, что имеется большая таблица в которой хранятся события с множества проектов и партиция установлена на toYYYYMMDD(event_time)
  • https://t.me/clickhouse_ru
    а ORDER BY какой у таблицы?
  • https://t.me/clickhouse_ru
    @aksimemor #223036 01:53 PM, 17 Jun 2021
    ORDER BY event_time
  • https://t.me/clickhouse_ru
    тогда я рекомендую сделать ORDER BY (toStartOfDay(event_time), project_name, event_time) или ORDER BY (project_name, event_time)

    в принципе вам возможно подойдет skip index min_max, но скорее всего нет. Потому что возможно project_name размазан по гранулам и в каждой грануле есть любой project_name и отбросить нельзя ни одну гранулу.
  • https://t.me/clickhouse_ru
    @aksimemor #223038 01:56 PM, 17 Jun 2021
    order by можно будет изменить через alter table?

    а также необходимо ли будет делать final?
  • https://t.me/clickhouse_ru
    @den_crane #223039 01:57 PM, 17 Jun 2021
    >ORDER BY (toStartOfDay(event_time), project_name, event_time) или ORDER BY (project_name, event_time)
    а хотя я чушь сказал у вас уже по дням партиции toYYYYMMDD

    скорее всего вам просто надо ORDER BY (project_name, event_time)
  • https://t.me/clickhouse_ru
    ORDER BY изменить нельзя
  • https://t.me/clickhouse_ru
    То есть это делать уже непосредственно в запросах?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @hostadminonline #223043 02:01 PM, 17 Jun 2021
    одскажите плз, а есть ли возможность сделать следующим образом
    у нас есть например 10 строк в каждой строке описывается некое состояние ... нам нужно посчитать количество строк ну т.е. COUNT() он будет равен 10 и вывести последнее по времени состояние т.е. запрос должен отдать типа SELECT COUNT(), last_status FROM *** и если возможно то как это сделать ?
    В реляционных базах данных приходилось делать вложенный запрос ... сначала доставать данные - сортировать и потом группировать .... как это работает здесь ?
  • https://t.me/clickhouse_ru
    @aksimemor #223044 02:02 PM, 17 Jun 2021
    Просто пересоздавать таблицу выглядит явной проблемой — так как надо будет переместить примерно 3-4 ТБ данных
  • https://t.me/clickhouse_ru
    есть функция argMax -- argMax(last_status, timestamp)
  • https://t.me/clickhouse_ru
    все так, надо раньше думать и тестить
  • https://t.me/clickhouse_ru
    оо спасибо большое
  • https://t.me/clickhouse_ru
    "зато возможно из-за правильной сортировки данные станут лучше сжиматься и сэкономите половину терабайта на диске" - это можете шефу сказать, чтобы он одобрил данную процедуру , но выхлоп вряд ли будет большой, и то только если у вас в рамках каждого проекта более менее консистентные данные иначе только больше занимать станет :)
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223049 #223051 02:14 PM, 17 Jun 2021
    А админы тут есть? этого парня бы забанить.
  • https://t.me/clickhouse_ru
    тут скорее проблема в том. что раньше была другая структура которая из-за ошибочного решения была изменена на одну таблицу сразу под все проекты. Раньше под проект была отдельная таблица, но это диктовало другие проблемы в работе с tableau
  • https://t.me/clickhouse_ru
    возможно в новой структуре в ключ партицирования также стоит добавить project_name
  • https://t.me/clickhouse_ru
    в данный момент уже 352 партиции. И 420 уникальных проекта
  • https://t.me/clickhouse_ru
    кстати как вам tableau? мы сейчас юзаем metabase и tableau как-то выглядит как перегруженая система для суровых аналитиков и не очень юзер френдли для обычных менеджеров и обычных юзеров.
  • https://t.me/clickhouse_ru
    @aksimemor #223056 02:22 PM, 17 Jun 2021
    Есть сомнения что партиция по (event_time, project_name) может очень сильно увеличить количество партов, или я что-то не понимаю в построении партиций
  • https://t.me/clickhouse_ru
    можно сделать партиции не по дням, а не по месяцам. но это конечно зависит от кейсов использования.
  • https://t.me/clickhouse_ru
    @ilnur_ibatullin #223058 02:23 PM, 17 Jun 2021
    Добрый день
    Есть таблица, небольшая по меркам КХ, около 18млн строк
    в силу бизнес логики эта таблица каждый день пересоздается (новые данные льются в новую таблицу > drop current table > rename tmp table to current)
    и нужно по этой таблице делать запросы с разными фильтрами
    охота несколько индексов повесить на разные столбцы, чтобы фильтровать по ним, искать по ним
    ЗЫ: таблица с товарами. надо искать по брендам, поставщикам, артикулу, по категориям
  • https://t.me/clickhouse_ru
    скорее всего в /root
  • https://t.me/clickhouse_ru
    @aksimemor #223060 02:24 PM, 17 Jun 2021
    Там все очень сильно зависит от назначения.

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

    Так же есть настройка privacy в дэшах в зависимости от того,какие данные надо отображать юзеру.

    metabase использовал на небольшом стартапе - он клевый, но на текущем месте был выбран табло
  • https://t.me/clickhouse_ru
    вот не надо такого советовать. Это 70% выстрел в ногу. Замедление инсертов и умножение кол-ва партиций в десятки раз.
  • https://t.me/clickhouse_ru
    возможно поможет с лучше помощью в вопросе. По большей части таблица имеет события пользователей и большая часть sql это аналитика на юзер левеле либо общая по событиям
  • https://t.me/clickhouse_ru
    ну после определенного уровня, остается только табло. Там наверху пирамиды больше никого нет.
  • https://t.me/clickhouse_ru
    MergeTree | Документация ClickHouse

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

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

    "соответственно *Merge как модификатор берет эти промежуточные состояния с предыдущих этапов выборки
    и "доаггрегирует""
  • https://t.me/clickhouse_ru
    К сожалению, нет. Запуск find ./ -name *.deb в каталогах /root и в домашнем каталоге пользователя ничего не дают.
    Собрались бинарники в build/programs, но руками их раскидывать по дереву каталогов системы как-то не хочется. Разве что положить куда-то и прописать в PATH.
    Но почему всё же не собрались deb пакеты, завершилось всё без ошибок...
  • https://t.me/clickhouse_ru
    ну у меня только 3 проекта, а вот для пары сотен проектов такой подход уже вообще не гуд, насколько я понимаю, потому что при каждом инсерте в 10к записей велика вероятность зацепить чуть-ли ни все партиции, вызвать кучу мёрджей и т.д.
  • https://t.me/clickhouse_ru
    sumMerge говорит что берем sumState
    и досуммируем
  • @helloworld2024 #223070 02:48 PM, 17 Jun 2021
    Всем привет, а есть какой-то простой способ материализовать array колонку в зависимости от каких-то условий?
    tags Array(String) MATERIALIZE

    push(tags, 't1') if condition1
    push(tags, 't2') if condition2

    и тд
  • https://t.me/clickhouse_ru
    такого функционала нет. Так как индекс в кх это просто сортировка данных. Можно только один индекс
  • https://t.me/clickhouse_ru
    Как рекурсивный вызов?
  • https://t.me/clickhouse_ru
    @earhipov #223073 03:03 PM, 17 Jun 2021
    Привет всем пользователям управляемого Clickhouse Яндекс Облака в этом чате!
    Хотим поделиться последними новинками нашего сервиса.
    - Поддержка быстрых дисков без дополнительной репликации для случаев когда скорость важнее повышенной надежности
    - Управление пользователями через нативный интерфейс Clickhouse (GRANT ... и друзья). Возможность управления грантами через API сохраняется: это удобно когда нужно занести это в сценарии терраформа.
    - Полноценная поддержка Terraform. Теперь все, что можно из API, можно из Terraform.
    - Автоматическое копирование схемы данных при добавлении новых хостов в кластер.
    - Наконец, как всегда -- самые актуальные ClickHouse версии, включая 21.6.3.14 от 5 июня.
  • https://t.me/clickhouse_ru
    @earhipov #223074 03:03 PM, 17 Jun 2021
    Если у вас есть вопросы про новинки или сервис в целом, буду рад ответить)
  • https://t.me/clickhouse_ru
    зачем вам собирать самому?
  • https://t.me/clickhouse_ru
    привычных индексов нет, но есть индексы пропуска данных
  • https://t.me/clickhouse_ru
    Я собираю форк с фичей MaterializedPosrgreSQL
  • https://t.me/clickhouse_ru
    State / Merge имеет смысл для нелинейных функций , AVG, uniq. Потому что нельзя из AGV посчитать AVG
    стейты в первую очередь нужны для шардов / Distributed.
    Каждый шард считает avgState и передает на инициатор, на инициаторе Distributed делает Merge, прозрачно для юзеров.
    Но это оказалось удобной фичей для Aggregated движков
  • https://t.me/clickhouse_ru
    такое ощущение что вы не понимаете что я пишу
    давайте вы перечитаете... и попробуете понять

    https://t.me/clickhouse_ru/222986
    Slach [altinity] in ClickHouse не тормозит

    ну давайте на пальцах поясню вот смотрите у вас есть простой запрос SELECT count() as goods_count, category FROM goods GROUP BY category чтобы посчитать goods_count что нужно? нужно в памяти создать hashMap в котором ключ category а значение это счетчик который увеличивается на 1 на каждую строку с этой category. мы читаем поточно и передаем строку из 1 поля category на вход агрегатной функции вот этот hash Map можно передать по конвейеру вышестоящему как countState()

  • https://t.me/clickhouse_ru
    так возьмите готовый, тысячи deb пакетов, на кажый комит.

    скачайте testing https://repo.yandex.ru/clickhouse/deb/testing/main/ 21.7.1.7112
  • https://t.me/clickhouse_ru
    я же написал " Но это оказалось удобной фичей для Aggregated движков "
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю
  • https://t.me/clickhouse_ru
    Читаю :) И по несколько раз :) Спасибо. Просто не понимаю.

    это "вот этот hash Map можно передать по конвейеру вышестоящему как countState()" похоже на рекурсию...
  • https://t.me/clickhouse_ru
    То есть приписка к функции Merge
    minIfMerge(order_created)
    говорит о том, что сначала посчитай по шардам и потом вычисли на мастере наименьшее, так?

    а если так
    minIf(order_created)
    то ... не будет же он считать по другому? пройдет по шардам, сведет и отминимайзит.
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @timofeevdmitry #223087 03:19 PM, 17 Jun 2021
    @BloodJazMan @den_crane спасибо за объяснения.
    Я правда не понимаю, сорри :)
    Завтра попробую разобраться.
    Надо уложить нейроны выспаться и выстроиться )
  • https://t.me/clickhouse_ru
    вы не должны использовать minIfMerge, minIfMerge только для стейтов.
    если вы делаете запрос одноуровневый в Distributed то просто minIf
    если запрос select from select from Distributed и вам нужно сгруппировать по разным полям и функция типа AVG , тогда нужно State+Merge. Откуда вообще такие вопросы?
  • https://t.me/clickhouse_ru
    этой фичи вроде ещё нету в теститнг. эта ветка ещё никуда не была вмержена, даже в мастер
    https://github.com/ClickHouse/ClickHouse/pull/20470
    MaterializePostgreSQL table engine and database engine by kssenii · Pull Request #20470 · 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
    мне такой не известен. разве что самому писать простенький прокси на nodejs/njs парсить запрос и подменять название таблицы.
  • https://t.me/clickhouse_ru
    @BloodJazMan #223092 04:05 PM, 17 Jun 2021
    Народ проголосуйте https://github.com/dbgate/dbgate/issues/104
    FEAT: Add support for ClickHouse · Issue #104 · dbgate/dbgate

    Is your feature request related to a problem? Please describe. There is no ClickHouse in the list of supported DBMS. Describe the solution you'd like Add support for ClickHouse. Describe al...

  • @Derzkii_SPooN #223093 04:12 PM, 17 Jun 2021
    Есть вопрос, а если я табличку создаю у которой engine = postgresql мне надо что-то настраивать дополнительно, или оно должно работать сразу? Есть какие-то ограничения на символы в пароле? )
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    сначала проголосовал, потом почитал :) а прикольная штука. прямо в браузере работает. то что надо. наконец-то можно будет заменить adminer.php
    PS: для тех кто не переходил по ссылке: крутой веб-интерфейс для быстрого просмотра данных в табличках бд, можно быстро отфильтровать, сгруппировать и т.д.
  • https://t.me/clickhouse_ru
    огонь. спасибо!
  • https://t.me/clickhouse_ru
    @logast #223097 04:27 PM, 17 Jun 2021
    Привет, подскажите плиз при where notEmpty вылетает Segmentation fault на других потоках клика и они поочереди сдуваются вместе с ним, с чем может быть связано? Кх староватый, 18.10.3
  • https://t.me/clickhouse_ru
    ёмаё, там даже графики можно строить
  • https://t.me/clickhouse_ru
    возьмите 18.14.18. (он лучше чем 18.10 и там все будет работать что работало в 18.10)
  • https://t.me/clickhouse_ru
    Да, в мастере она только в моём личном форке. Так что всё же буду использовать получившийся бинарник и самопальный конфиг systemd.
  • https://t.me/clickhouse_ru
    не надо :) выше ссылку давали, там на каждый пулл-реквест уже собраный пакет есть :)
    https://clickhouse-builds.s3.yandex.net/20470/00e76ca372edccde2b6f7ac7430d3231878b19e8/clickhouse_build_check/report.html
  • https://t.me/clickhouse_ru
    Ok (-:
  • https://t.me/clickhouse_ru
    посмотрите, есть ли еще колонки, упорядочивание по которым приведет к появлению подряд идущих одинаковых или похожих данных в других колонках. Если да, тоже можно добавить в ORDER BY (project_name, /*еще низкокардинальные колонки,*/event_time). Так можно отдельные колонки пожать в сотни раз, и в общем таблицу как повезет. Попробуйте разные кодеки сжатия - рекомендую codec(T64, LZ4) для целых типов, особенно для маленьких значений, Gorilla и DoubleDelta у меня редко оказывались лучше T64. Можно ZSTD для редко используемых жирных колонок. Еще стоит узнать, какие запросы идут к этой таблице (особенно частые или тяжелые), и добавить в order by низкокардинальные колонки, по которым часто идет фильтрация. Создайте несколько вариантов таблиц с разными order by и кодеками, скопипастите туда данные за один день, и смотрите что там по месту и производительности запросов.
    Если в order by добавится высококардинальная колонка, то задать еще primary key, где указать всё из order by до первой высококардинальной колонки, включая ее, и не включая все последующие. Ну то есть типа ORDER BY (project_name, country, user_id, event_time) primary key (project_name, country, user_id)
  • https://t.me/clickhouse_ru
    @seriych #223104 05:48 PM, 17 Jun 2021
    и есть момент, что для разных order by могут быть оптимальными разные кодеки. Сначала выбираем order by, потом тестим, дают ли что-то кодеки.
  • https://t.me/clickhouse_ru
    Нет, что-то не задалось.
    CREATE database mydb ENGINE = MaterializePostgreSQL('localhost:5432', 'mydb', 'user', 'password');
    Code: 36. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Database engine MaterializePostgreSQL cannot have arguments.
    С собственноручно собранным бинарником то же сообщение. Вот и потестили фичу MaterializePostgreSQL
    Вот дока https://github.com/kssenii/ClickHouse/blob/pg-ch-replica/docs/en/engines/database-engines/materialize-postgresql.md
    Видимо, ещё не доработано.
  • @subotic0 #223107 06:35 PM, 17 Jun 2021
    Добрый день, а может кто-то пояснить почему
    select arrayJoin(range(0,2)) as a, arrayJoin(range(0,2)) as b
    0,0
    1,1

    Но при этом
    select arrayJoin(range(0,2)) as a, arrayJoin(range(1,3)) as b
    0,1
    0,2
    1,1
    1,2
  • https://t.me/clickhouse_ru
    потому что второй arrayJoin(range(0,2)) заменяется на алиас
  • https://t.me/clickhouse_ru
    @unamedrus #223109 06:49 PM, 17 Jun 2021
    Multiple arrayJoins with same expression being calculated only once. · Issue #24225 · ClickHouse/ClickHouse

    Clickhouse replaces second arrayJoin with result of first, but most likely it's not what users want in this situation. How to reproduce clickhouse version 21.6 SELECT arrayJoin([1, 2, 3, 4]...

  • https://t.me/clickhouse_ru
    средствами КХ нет. Есть сторонние фреймворки jskube или как-то.

    на самом деле может вам взять projections вместо MV ?
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223110 #223111 07:17 PM, 17 Jun 2021
    Хм, интересно, а где можно прочитать про projections? Не нашёл в документации клика.
  • https://t.me/clickhouse_ru
    по той же причине что и

    SELECT
    rand(),
    rand()

    ┌─────rand()─┬─────rand()─┐
    │ 3602581504 │ 3602581504 │
    └────────────┴────────────┘

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

    https://youtu.be/jJ5VuLr2k5k
    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…

  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223113 #223114 07:18 PM, 17 Jun 2021
    Спасибо!)
  • @dj_mixer #223115 07:30 PM, 17 Jun 2021
    Кстати мой вчерашний вопрос про гибридные проекции был вызван как раз важностью их в свете проекций ( условно если держим проекции 5 лет, данные 3 месяца, + меняем последние данные часто )... В след раз добью ))
  • https://t.me/clickhouse_ru
    я думаю это очень сложно, в конце рассказа Амос намекал удаление данных таблицы, но похоже у него тоже нет в голове картины как это впихнуть
  • Ну эт понятно, но без подобного сейчас все сводится к нескольким таблицам с мердж енджин поверх (и для гибридов, и для проекций). ДДЛ делать очень больно в реальных случаях. А такие вещи как частые изменения или более точечные recent партиции - частая вещь.. в гринпламе в этом плане хорошо сделано в плане возможностей гибридных партиций
  • https://t.me/clickhouse_ru
    @unamedrus #223118 07:41 PM, 17 Jun 2021
    Вообще кажется, что проще научить кх переписывать запросы на MV, тем более переписывать для проекций он уже умеет.
  • Ну в проекциях есть плюс в плане уменьшенного мейнтенанса (не надо держать в 10 раз больше таблиц, автогенерация данных), просто этот плюс нивелируется довольно сильно отсутствием возможности сделать гибридное партиционирование (либо для самих проекций, либо на всю таблицу хотя бы для старых данных)
  • https://t.me/clickhouse_ru
    Ну, главный плюс проекций для меня это консистентность и автогенерация запросов, если мы потерям консистентность(тк исходных данных уже нет) то смысл городить это конкретно на проекциях уже отпадает, тк MV дает тоже самое.
  • https://t.me/clickhouse_ru
    @unamedrus #223121 07:50 PM, 17 Jun 2021
    Не знаю как в гринпламе, но в постгре партиционирование вообще делается через создание таблицы для каждой партиции, емнип.
  • я консистентность все объединил под автогенерацией данных. когда данных проекции ещё нет они при запросе создадуться
  • в ПГ это вообще костыль который ещё и на триггерах (!сик) и все эти версии это осталось костылем даже с декларативным partitioning.
    в ГП этот костыль красиво обернут в хороший синтаксис, структуру папок и без левых триггеров и одним ДДЛ, но автосоздание партиций недовезли
    (
    но суть в том что там можно держать горячие данные в строках, дальше допустим по месяцам, ещё старее по годам... и это очень хорошо ложится на энтерпрайз реалии обычно... потому что тут всегда есть момент когда данные приходится "чинить" (
  • https://t.me/clickhouse_ru
    А, ну это кстати обсуждалось

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

    Но хороший способ как описать логику создания партиций так и не придумали, если есть идеи то можешь предложить кстати.
    Subpartition (RFC) · Issue #18695 · ClickHouse/ClickHouse

    Subpartitions are parts of a MergeTree table's partition. It's defined by an expression based on minmax columns (not the partition expr). It provides the ability to confine merges i...

  • да, я читал этот тикет, но если честно по мне в других системах subpartition это не про лямбда архитектуры, а скорее для того чтобы делать прунинг в двух измерениях, либо менять данные по второму ключу. как по мне этого в КХ не надо с учетом того что в КХ партишнинг по нескольким полям поддерживается с отдельным прунингом по любому из них.
  • т.е. название как минимум неудачное, ну и синтаксис мягко говоря непростой
  • я догрепал. к КХ вопросы отпали.
    было так:
    реплика2 запустила и отработала мутацию
    реплика1 зависла с ошибкой об отсутствии места (или потоков). - "... is greater than the current maximum (0.00 B)"
    после рестартов уже ничего не поднималось и не мерджило - местные данные - part mutations (625) is greater than max_replicated_merges_in_queue (32), so won't select new parts to merge or mutate
    короче после нескольких смен параметров и рестартов человек просто удалил очередь ЗК для реплики и стартанул, и с тех пор данные разъехались.
    Лидеры не причем походу
  • @dj_mixer #223130 10:42 PM, 17 Jun 2021
    кстати вот, https://github.com/ClickHouse/ClickHouse/issues/25445
    не нашел другого такого, но мы как то часто ловим дедлок на раных продах...
    Improve logging for "Not executing log entry ... is greater than the current maximum" errors · Issue #25445 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Use case There are many scenarios when clickhouse goes into infinite error saying: Not executing log entry MUTATE_PART for part xxxx-421_0_36_2...

  • @Mr_A275 #223131 10:45 PM, 17 Jun 2021
    Коллеги, подскажите, пожалуйста: Можно ли в CREATE VIEW использовать CTE (WITH main AS (SELECT .. ) ? У меня выдает ошибку: WITH movement as (
    SELECT
    da. Expected one of: SELECT query, possibly with UNION, list of union elements, SELECT subquery, SELECT query, subquery, possibly with UNION, SELECT query, SELECT, WITH (version 21.4.3.21 (official build))
  • обновитесь
    https://github.com/ClickHouse/ClickHouse/pull/22657
    Fix CTE usage in view definition by amosbird · Pull Request #22657 · 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...

  • 18 June 2021 (101 messages)
  • @vvvjhaq #223134 06:30 AM, 18 Jun 2021
    Привет!
    В наличии есть парты PARTITION BY formatDateTime(dt, '%Y%m%d%H') с engine=CollapsingMT, которые нужно приаттачить.
    В них есть не схлопнувшиеся строки, подскажите, как правильно, их приаттачить(интересуется последовательность attach, так как при неправильной последовательности происходит нарушение алгоритма их вставки). Вставлены были 1-> -1 -> 1. Следовательно хочу оставлять только последнюю строку.
  • https://t.me/clickhouse_ru
    непонятно про какое нарушение идет речь
    аттачишь парт
    это просто аттач парта, он только потом будет попадать на background merge это разные процессы
    и при background merge два парта будут мержиться так чтобы

    почасовая partition by, не лучший выбор, у вас там правда так много данных? или вы всегда в выборке используете только один час?
  • >почасовая partition by
    да, много, таблица пару дней, с горячими данными. 95% выборок в 1 час укладываются.
  • https://t.me/clickhouse_ru
    @hostadminonline #223137 06:55 AM, 18 Jun 2021
    добрый день
    подскажите пожалуйста, для ускорения джоинов таблиц какой лучше использовать тип индекса ? тип столбца String
  • >непонятно про какое нарушение идет речь
    насколько я понял, что при неправильной последовательности аттача парта, неправильно схлопнуться.
    т.е данные вставлялись 3 строками 1-> -1 -> 1
    а при аттаче может получится, что порядок такой: -1-> 1 -> 1
    и отсюда следует, что схлопнуться не так, как ожидается(
  • вот набросал:
    create table default.test_del_tab1(id UInt8, value UInt8, sign Int8)
    engine =CollapsingMergeTree(sign)
    PARTITION BY id ORDER BY id;

    insert into default.test_del_tab1 values(1, 1, 1);
    insert into default.test_del_tab1 values(1, 1, -1);
    insert into default.test_del_tab1 values(1, 2, 1);

    alter table default.test_del_tab1 freeze;

    дальше перенести в detached и 3 парта приаттачить не в неправильной последовательности( 1_1_3_0, 1_1_2_0, 1_1_1_0 )-название взял как пример
  • @DovgalyukA #223142 07:40 AM, 18 Jun 2021
    Всем привет!
    @BloodJazMan , вроде ты контрибьютил в телеграф плагин клика. С такой проблемой ранее не сталкивались, случайно? Используется сингл-нода.
    [root@a0410dadmgtmon01 telegraf.d]# telegraf --test --config clickhouse.conf
    2021-06-18T07:33:26Z I! Starting Telegraf 1.19.0
    > clickhouse_tables,database=graphite,host=a0410dadmgtmon01.grameenphone.com,source=192.168.213.23,table=graphite bytes=2032539934i,parts=20i,rows=1640760866i 1624001606000000000
    ...
    Ещё 10 строк про clickhouse_tables
    ...
    panic: runtime error: index out of range [0] with length 0

    goroutine 41 [running]:
    github.com/influxdata/telegraf/plugins/inputs/clickhouse.(*ClickHouse).replicationQueue(0xc000dec360, 0x5648b38, 0xc000662a00, 0xc000dd7020, 0x0, 0x0)
    /go/src/github.com/influxdata/telegraf/plugins/inputs/clickhouse/clickhouse.go:334 +0x333
    github.com/influxdata/telegraf/plugins/inputs/clickhouse.(*ClickHouse).Gather(0xc000dec360, 0x5648b38, 0xc000662a00, 0x0, 0x0)
    /go/src/github.com/influxdata/telegraf/plugins/inputs/clickhouse/clickhouse.go:212 +0x176
    github.com/influxdata/telegraf/agent.(*Agent).testRunInputs.func2(0xc000dd09b0, 0xc000383b70, 0xc000d2dce0, 0xc0006629a0, 0xc000da5950)
    /go/src/github.com/influxdata/telegraf/agent/agent.go:403 +0x222
    created by github.com/influxdata/telegraf/agent.(*Agent).testRunInputs
    /go/src/github.com/influxdata/telegraf/agent/agent.go:372 +0x109
  • @cinder2 #223144 07:55 AM, 18 Jun 2021
    Добрый день. Был кластер версии 19.14.10.16 на 2 шарды по 2 реплики.
    К нему подключили ещё по две реплики на каждый шард, но, самой свежей версии 21.6.4 и создали там две таблицы ReplicatedSummingMegreTree, после чего данные стали попадать только на один шард и только на сервера новой версии .
    В логах старой версии были ошибки DB::Exception: Cannot parese input: expected quorum
    После обновления старого кластера до версии 20.3.21 появились ошибки
    Only Wide parts can be used with non-adaptive granularity.
    И часто пишет что не находит Marks file "some_path/table_name/tmp_fetch_202106_289863_310914_5333/event_date.mrk" doesn't exist
    Вопрос, куда сейчас попадают данные, так как ошибок что данные не записались нет , но и а КХ их не видно ( по крайней мере из одной шарды ) ?
    И как можно починить репликацию ? Безопасно ли продолжать обновление кластера до версии 21.6.4?
  • https://t.me/clickhouse_ru
    @Caside #223146 08:02 AM, 18 Jun 2021
    Добрый день!
    Как заставить в CH COALESCE(a, b) работать так, чтобы если a = '' в результате возвращалась b?
    В Postgress в данном кейсе вместо a был NULL ивсё работало как надо, а тут нет.
  • COALESCE(NULLIF(a, ‘’), b)
  • https://t.me/clickhouse_ru
    @hostadminonline #223149 08:08 AM, 18 Jun 2021
    не пойму что не так ?
    ALTER TABLE test ADD INDEX ssidHash TYPE minmax
    Syntax error: failed at position 22:

    ALTER TABLE test ADD INDEX ssidHash TYPE minmax

    Expected COLUMN

    у меня ENGINE = ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #223148 #223150 08:08 AM, 18 Jun 2021
    Спасибо, то, что надо
  • https://t.me/clickhouse_ru
    а что тут ожидается на выходе?
    Одна запись 1,2,1 ? а получается 1,1,1 ?
  • https://t.me/clickhouse_ru
    привет
    надо разбираться, с такой проблемой не сталкивались, можете Issue на мена повесить в github ?
  • да
  • https://t.me/clickhouse_ru
    ну да, поведение при мержах такое...
    и да,надо как то в правильном порядке аттачить...
  • еще проверить хочу как аттачиться, если указываем аттач партишн, внутри партишена правильно ли они схлопнуться.
    а как нейминг партов происходит? можно ли по неймингу понять очередность аттача?
  • https://t.me/clickhouse_ru
    каждый парт в подкаталоге
    <partition_by_expression>_<min_block>_<max_block>_<layer>

    блин не помню 0 layer это самый свежий или самый старый только
  • 0 это вроде который еще не мержился
  • https://t.me/clickhouse_ru
    @hostadminonline #223158 09:34 AM, 18 Jun 2021
    подскажите пожалуйста, каким образом указать на столбец при создании таблицы фиксированную точность ? использую Float32 ... ноль оказался бесконечностью .... хочется чтобы ну хоть 0.00 было ... )
  • decimal

    https://clickhouse.tech/docs/ru/sql-reference/data-types/decimal/#decimalp-s-decimal32s-decimal64s-decimal128s
    Decimal | Документация ClickHouse

    Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S), Decimal256(S) Знаковые дробные числа с сохранением точности оп

  • https://t.me/clickhouse_ru
    @quagway #223160 09:40 AM, 18 Jun 2021
    Здравствуйте.

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

    А ля:

    select * from (a, b) values (b, c), (d, e)

    пока приходит в голову только

    select b, c union all select d, e

    что коряво
  • https://t.me/clickhouse_ru
    Разбираю наследство...
    Все знают, но объяснить не могут. Видимо, я тупой! :)

    Пока понимаю одно, что если убрать эти постфиксы Merge то всё перестает работать... видимо они какой-то флаг для агрегирующих функций выполняют ...

    https://altinity.com/blog/2017/7/10/clickhouse-aggregatefunctions-and-aggregatestate
    "уникальная особенность ClickHouse - агрегатные состояния"
    И статей с доступным изложением уникальных особенностей нет - всё же весьма просто и все телепаты :)
    Заметьте, сколько статей написано про Оракл и МССКЛ и мало не понимает. А тут КликХаус! :)
  • https://t.me/clickhouse_ru
    ну там имя_идекса имя_колонки должно быть
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/index/
    см. expression
    INDEX | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    ALTER TABLE test ADD INDEX indexName ssidHash TYPE minmax

    ?
  • https://t.me/clickhouse_ru
    SELECT engine_full FROM system.tables WHERE name='orders'
    что показывает
  • https://t.me/clickhouse_ru
    да, вроде так
  • https://t.me/clickhouse_ru
    та же ошибка
  • https://t.me/clickhouse_ru
    ALTER TABLE test ADD INDEX indexName(ssidHash) TYPE minmax
    может так?
  • https://t.me/clickhouse_ru
    @hostadminonline #223168 09:52 AM, 18 Jun 2021
    нет тоже самое (
  • https://t.me/clickhouse_ru
    Сейчас скину скрин, спасибо.

    Если можно - поделитесь, пожалуйста, ссылками на статьи, где почитать про агрегатные состояния, движки и фишки функций Merge или State на нижнем уровне.

    ...
    Можно посмотреть устройство эти комбинаторных функций на Си ? Может так я быстрее пойму? Можете скинуть код этой функции?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    CREATE TABLE t1(v UInt64, indexed_value UInt64) ENGINE=MergeTree() ORDER BY v;
    ALTER TABLE t1 ADD INDEX index_name indexed_value TYPE minmax GRANULARITY 1;

    ошибку невнимательно читаете
    GRANULARITY в data skip индексе это кол-во гранул из PK
  • https://t.me/clickhouse_ru
    @hostadminonline #223172 10:00 AM, 18 Jun 2021
    CREATE TABLE t1 ON CLUSTER c9q930o5i86rsdloqlc9 (v UInt64, indexed_value UInt64) ENGINE=ReplicatedMergeTree() ORDER BY v;

    ALTER TABLE t1 ADD INDEX index_name indexed_value TYPE minmax GRANULARITY 1;

    Syntax error: failed at position 20:

    ALTER TABLE t1 ADD INDEX index_name indexed_value TYPE minmax GRANULARITY 1;

    Expected COLUMN

    я так понимаю проблема в ReplicatedMergeTree

    но в документации заявлена поддержка *MergeTree
  • https://t.me/clickhouse_ru
    ок. таблица Distributed

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

    извините если вы не понимаете что тут написано, я не знаю как еще более понятно расписать
    https://t.me/clickhouse_ru/222977
    Slach [altinity] in ClickHouse не тормозит

    смотрите любая аггрегатная функция, для того чтобы выдать конечный результат аллоцирует в памяти какие то структуры (например хеш таблицы с ключами по которым идет группировка) это промежуточное состояние называется aggregation State и State можно использовать как модификатор имени аггреганой функции в запросе соответственно *Merge как модификатор берет эти промежуточные состояния с предыдущих этапов выборки и "доаггрегирует" подробнее тут https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/

  • https://t.me/clickhouse_ru
    версия clickhouse какая?
    SELECT version()
  • https://t.me/clickhouse_ru
    @hostadminonline #223175 10:02 AM, 18 Jun 2021
    21.3.12.2
  • https://t.me/clickhouse_ru
    Не всё могу я скринить, не обижайтесь.
    Но на ваш вопрос - ответил :)

    Спасибо за то, что написали, почитаю Инет, вернусь к allocated memory ... И поверьте, не я один не понимаю, что значат эти Мерджи 😉
  • https://t.me/clickhouse_ru
    @temurlord #223178 10:10 AM, 18 Jun 2021
    Добрый день. Не могу никак разобраться с Созданием Materialized View с движком AggregatingMergeTree

    Есть таблица
    CREATE TABLE IF NOT EXISTS indicators_processes_ingest
    (
    id VARCHAR(255),
    machine_id VARCHAR(255),
    ts_start Nullable(TIMESTAMP),
    ts_end Nullable(TIMESTAMP),
    command_line Nullable(TEXT),
    parent_id Nullable(VARCHAR(255))
    ) ENGINE = Null();

    Пытаюсь создать вью и оно падает с ошибкой, то не хватает колонок id, machine_id и я что-то никак не пойму где именно их не хватает
    CREATE MATERIALIZED VIEW IF NOT EXISTS indicators_processes
    ENGINE = AggregatingMergeTree() ORDER BY (machine_id, id) AS
    SELECT (
    machine_id,
    id,
    anyIfOrNull(parent_id, isNotNull(parent_id)) AS parent_id
    ) FROM indicators_processes_ingest
    GROUP BY (machine_id, id)
    [2021-06-18 13:06:36] Code: 47, e.displayText() = DB::Exception: Missing columns: 'id' 'machine_id' while processing query: 'machine_id, id', required columns: 'machine_id' 'id' 'machine_id' 'id' (version 21.6.4.26 (official build))
  • CREATE MATERIALIZED VIEW IF NOT EXISTS indicators_processes
    ENGINE = AggregatingMergeTree() ORDER BY (machine_id, id) AS
    SELECT
    machine_id,
    id,
    anyIfOrNull(parent_id, isNotNull(parent_id)) AS parent_id
    FROM indicators_processes_ingest
    GROUP BY (machine_id, id)
  • https://t.me/clickhouse_ru
    @temurlord #223181 10:18 AM, 18 Jun 2021
    Ох, я такой идиот. Не знаю почему мой мозг решил там скобки поставить.

    Спасибо!
  • https://t.me/clickhouse_ru
    вы какой то странный тапл формируете, зачем скобки в SELECT ( ... ) ?
  • https://t.me/clickhouse_ru
    @temurlord #223183 10:20 AM, 18 Jun 2021
    Видимо недостаточно сплю. Не знаю почему вдруг такую глупость сделал. Да ещё и разобраться не мог в проблеме минут 20.
  • https://t.me/clickhouse_ru
    SELECT countIf(num_tries>1) AS replication_num_tries_replicas, countIf(num_tries>100) AS replication_too_many_tries_replicas FROM system.replication_queue

    что говорит на вашем сервере?
  • https://t.me/clickhouse_ru
    вы ссылку на github issue можете прислать?
  • https://t.me/clickhouse_ru
    Возможно, проще понять на примере матвью.
    Допустим, вам нужно матвью для подсчета количества уникальных id юзеров в день. Вот у вас есть какое-то текущее состояние дел посреди дня. 1000 уникальных id, например. Вы записываете в исходную таблицу еще пачку записей с 10 уникальными id. Чтобы узнать новое количество уникальных id за весь день, матвью не может просто сделать 1000+10. Нужно сначала проверить, а были ли в этой 1000 старых id кто-то из этих новых 10 id. То есть хранить в матвью мы должны больше данных, чем просто число 1000. Например, массив уникальных id. При добавлении новых 10 id мы проверяем, есть ли они в нашем массиве из 1000 id, и добавляем недостающих. Вот этот вот массив и будет State состоянием. То есть некое состояние, из которого легко получить готовый ответ (у нас это будет длина массива), и при этом позволяет пересчитывать данные при добавлении новых.
    Для avg состоянием avgState может быть, например, пара значений: сумма и количество значений. И т.п. Ну и, в реальности State состояния могут быть внутри устроены более сложно и оптимально с точки зрения ресурсов, и нам не обязательно знать, как именно.
    Когда нужно получить готовый ответ, нам нужно "схлопнуть" это State состояние, для этого используем суффикс Merge.
  • https://t.me/clickhouse_ru
    @timofeevdmitry #223187 10:38 AM, 18 Jun 2021
    @seriych благодарю, заскринил, почитаю 🤝
  • https://t.me/clickhouse_ru
    @dmitry_lukyanov #223189 11:16 AM, 18 Jun 2021
    Коллеги, добрый день,
    А может кто-то подсказать, для какого числа нод нужен Zookeeper? Из доки я так понял, что для трёх минимум, но не понимаю логики. Ведь он для репликации, а реплика может быть и одна... 🤔
  • https://t.me/clickhouse_ru
    @dmitry_lukyanov #223190 11:16 AM, 18 Jun 2021
    И нужен ли он вообще для настройки репликации?
  • он нужен для взаимодействия реплик между собой
  • https://t.me/clickhouse_ru
    Что это значит? Без него же реплика тоже работает, верно?
  • Репликация не зависит от шардирования. На каждом шарде репликация работает независимо.
    При создании таблиц Replicated* вы указываете путь в zookeeper
  • https://t.me/clickhouse_ru
    А по числу нод zookeeper?
    Я правильно понимаю, что для настройки репликации простой (две ноды Clickhouse) мне надо иметь три ноды с zookeeper?
  • https://t.me/clickhouse_ru
    как только у вас есть хоть одна ReplicatedMergeTree таблица, вам нужен ZK
    Даже если у вас всего один сервер, без ZK ReplicatedMergeTree не работает
  • https://t.me/clickhouse_ru
    нет
    одной ноды ZK достаточно,
    3 ноды ZK надо если вам нужно отказоустойчивый ZK кластер
  • там есть правило 2N+1, но одной тоже хватит
  • https://t.me/clickhouse_ru
    А его можно запихнуть туда же, где chproxy стоит уже? Какие тут риски?
  • https://t.me/clickhouse_ru
    ну риск один
    что ZK будет с chproxy за CPU \ Disk \ RAM бороться ... и от этого может страдать репликация...
    ZK достаточно чувствителен к дисковым задержкам
  • https://t.me/clickhouse_ru
    @yourock88 #223200 11:24 AM, 18 Jun 2021
    Я помню, что ClickHouse хотели потихоньку от ZK переходить на что-то своё, или я придумываю?
  • https://t.me/clickhouse_ru
    Есть в роадмапе ) поищите на Гите/офф сайте
  • https://t.me/clickhouse_ru
    Я в доке ничего подобного не видел. Везде пишут про ZK
  • https://t.me/clickhouse_ru
    Это только в планах вроде
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #223204 11:25 AM, 18 Jun 2021
    Roadmap 2021 (discussion) · Issue #17623 · ClickHouse/ClickHouse

    This is ClickHouse roadmap 2021. Descriptions and links to be filled. It will be published in documentation in December. Main tasks Provide alternative for ZooKeeper Implementation of a server with...

  • https://t.me/clickhouse_ru
    @temurlord #223205 11:54 AM, 18 Jun 2021
    А может быть кто-нибудь поможет мне исправить мою картину мира?

    Есть таблица с движком NULL, и есть MaterializedView с движком AggregatingMergeTree.

    CREATE TABLE IF NOT EXISTS indicators_processes_ingest
    (
    id VARCHAR(255),
    machine_id VARCHAR(255),
    ts_last_update TIMESTAMP default NOW(),
    ts_start Nullable(TIMESTAMP),
    ts_end Nullable(TIMESTAMP),
    command_line Nullable(TEXT),
    parent_id Nullable(VARCHAR(255))
    ) ENGINE = Null();

    CREATE MATERIALIZED VIEW IF NOT EXISTS indicators_processes
    ENGINE = AggregatingMergeTree()
    TTL ts_last_update + INTERVAL 1 MONTH
    ORDER BY (machine_id, id)
    AS
    SELECT machine_id,
    id,
    max(ts_last_update) AS ts_last_update,
    anyIfOrNull(ts_start, isNotNull(ts_start)) AS ts_start,
    anyIfOrNull(ts_end, isNotNull(ts_end)) AS ts_end,
    anyIfOrNull(command_line, isNotNull(command_line)) AS command_line,
    anyIfOrNull(parent_id, isNotNull(parent_id)) AS parent_id
    FROM indicators_processes_ingest
    GROUP BY (machine_id, id);

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

    Для проверки вставлю 2 строки
    INSERT INTO indicators_processes_ingest (id, machine_id, ts_start, ts_end, command_line, parent_id)
    VALUES ('id', 'machine_id', NULL, NOW(), 'cmd.exe', NULL);

    INSERT INTO indicators_processes_ingest (id, machine_id, ts_start, ts_end, command_line, parent_id)
    VALUES ('id', 'machine_id', NOW(), NULL, NULL, 'test');

    И выполняю вот такой селект
    SELECT
    *,
    'original' AS s
    FROM indicators_processes
    UNION ALL
    SELECT
    *,
    'final'
    FROM indicators_processes
    FINAL
    UNION ALL
    SELECT
    machine_id,
    id,
    max(ts_last_update) AS ts_last_update,
    anyIfOrNull(ts_start, isNotNull(ts_start)) AS ts_start,
    anyIfOrNull(ts_end, isNotNull(ts_end)) AS ts_end,
    anyIfOrNull(command_line, isNotNull(command_line)) AS command_line,
    anyIfOrNull(parent_id, isNotNull(parent_id)) AS parent_id,
    'group-by'
    FROM indicators_processes
    GROUP BY (machine_id, id)
    Чтобы посмотреть что есть в таблице, что в ней будет после мержа и что выдал бы GROUP BY. Видим, что результат GROUP BY и то, что в FINAL это совершенно разные значения

    ┌─machine_id─┬─id─┬──────ts_last_update─┬────────────ts_start─┬──────────────ts_end─┬─command_line─┬─parent_id─┬─s────────┐
    │ machine_id │ id │ 2021-06-18 11:45:56 │ ᴺᵁᴸᴸ │ 2021-06-18 11:45:56 │ cmd.exe │ ᴺᵁᴸᴸ │ original │
    │ machine_id │ id │ 2021-06-18 11:45:57 │ 2021-06-18 11:45:57 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ test │ original │
    │ machine_id │ id │ 2021-06-18 11:45:57 │ 2021-06-18 11:45:57 │ 2021-06-18 11:45:56 │ cmd.exe │ test │ group-by │
    │ machine_id │ id │ 2021-06-18 11:45:56 │ ᴺᵁᴸᴸ │ 2021-06-18 11:45:56 │ cmd.exe │ ᴺᵁᴸᴸ │ final │
    └────────────┴────┴─────────────────────┴─────────────────────┴─────────────────────┴──────────────┴───────────┴──────────┘
  • https://t.me/clickhouse_ru
    нет
    нужно использовать maxState вместо max
    чтобы при мерже сливались состояния ... а не конкретные значения
    из документации
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree/
    ClickHouse replaces all rows with the same primary key (or more accurately, with the same sorting key) with a single row (within a one data part) that stores a combination of states of aggregate functions.
    AggregatingMergeTree | ClickHouse Documentation

    AggregatingMergeTree The engine inherits from MergeTree, altering the logic for data parts merging. ClickHouse replaces

  • https://t.me/clickhouse_ru
    @timofeevdmitry вот, почитайте, может больше поймете
  • https://t.me/clickhouse_ru
    Призываом, наверное ошиблись, но спасибо!
  • https://t.me/clickhouse_ru
    @timofeevdmitry
  • https://t.me/clickhouse_ru
    нет, там человек не понимает зачем нужны State и Merge
  • https://t.me/clickhouse_ru
    @temurlord #223211 12:02 PM, 18 Jun 2021
    А, понял
  • https://t.me/clickhouse_ru
    @temurlord #223212 12:11 PM, 18 Jun 2021
    Теперь всё заработало! Огромное спасибо!
  • https://t.me/clickhouse_ru
    там видимо в таблице у поля order_created специальная AggregateFunction(minIf )
    desc таблица покажите
  • @480131917 #223216 12:20 PM, 18 Jun 2021
    Привет, подскажите если выставить параметр <listen_host>::</listen_host > на сервере подключения по каким ip будет принимать?
  • https://t.me/clickhouse_ru
    @399999446 #223217 12:29 PM, 18 Jun 2021
    всем привет

    desc default._q

    seg_proba_impl Array(Float32)

    Для экономии места хочу конвертнуть в другой тип
    alter table default._q MOdify column seg_proba_impl Array(decimal(10,3))

    select * from default._q
    Но к данным уже не обратиться
    org.jkiss.dbeaver.model.exec.DBCException: Can't extract array data from JDBC array
    at org.jkiss.dbeaver.model.impl.jdbc.data.JDBCCollection.makeCollectionFromArray(JDBCCollection.java:263)
    ......

    Что не так и как можно конвернтнуть?
  • будет отвечать всем
  • https://t.me/clickhouse_ru
    это IPv6 аналог IPv4 0.0.0.0
  • @simpl1g #223220 12:47 PM, 18 Jun 2021
    Подскажите, тестирую связку TTL + S3 (21.3), данные которые лежали на дисках занимали 160Гб, после того как они переехали на S3 стали занимать 440Гб, так и должно быть? как-то по другому хранятся на С3?
  • https://t.me/clickhouse_ru
    @Valenvaryon #223223 12:55 PM, 18 Jun 2021
    как можно избавиться от множества зависших записей в replication_queue, вида
    Code: 234, e.displayText() = DB::Exception: Not found part 3_3514_3514_26 (or part covering it) neither source table neither remote replicas (version 21.3.12.2 (official build))

    как вообще Кликхаусу сказать, чтобы он уже больше не мучался?
  • https://t.me/clickhouse_ru
    SYSTEM RESTART REPLICA ...
  • https://t.me/clickhouse_ru
    @Valenvaryon #223225 01:00 PM, 18 Jun 2021
    не помогает
  • https://t.me/clickhouse_ru
    а как считаете?
    у вас там случайно не в один бакет с нескольких реплик данные слились?
  • есть 2 реплики, на каждой КХ даже меньше показывает если смотреть только партиции на S3 53.57 * 2 = 107 Gb. Консоль S3 показывает что в бакете занято 438.3 GB. Настроена только эта таблица, других данных не должно быть. 2 реплики пишут в 1 и тот же бакет, из-за этого могут быть проблемы?

    ```
    SELECT formatReadableSize(sum(bytes)) AS size
    FROM system.parts
    WHERE (table = 'impressions_log_shard_v1') AND (disk_name = 's3')
    ┌─size──────┐
    │ 53.57 GiB │
    └───────────┘
    ```
  • UP
    Может у кого-то есть практики аттача CollapsingMT?
  • https://t.me/clickhouse_ru
    ну, в s3 хранятся только .bin файлы а метаданные для них хранятся в /var/lib/clickhouse/store
    для Atomic

    походите по store и поищите соответсвие в s3 бакете

    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-s3
    у вас S3 endpoint разный для разных реплик?
    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
    @filippchistiakov #223230 02:07 PM, 18 Jun 2021
    Ребят, напомните функцию, которая ищет по пользователям цепочки ивентов, которые мы задали. Никак в документации не могу найти
  • https://t.me/clickhouse_ru
    windowFunnel
  • https://t.me/clickhouse_ru
    @filippchistiakov #223232 02:11 PM, 18 Jun 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @bralbral #223233 02:15 PM, 18 Jun 2021
    Добрый вечер. Версия кликхауса 21.4.3.21 из таблицы flat есть несколько матвью на aggregatingmergetree. Матвью ничем не отличаются , отличается лишь ордер бай в конечных таблицах. Структура таблиц одинаковая . Но данных разное количество. Запросы делали с final. Кто-то сталкивался с подобным ?
  • база Ordinary, это же не должно никак влиять?

    2 реплики пишут в 1 бакет, поэтому и спрашиваю, могут ли быть из-за этого проблемы? Сейчас рядом настроим похожую таблицу только с разными папками в бакете под разные реплики
  • https://t.me/clickhouse_ru
    это по идее положительно должно влиять
    потому что нету всех заморочек с неблокирующими атомарными alter и тем что "данные не удаляются"
  • @arkhip0vvv #223237 02:43 PM, 18 Jun 2021
    Всем привет только начал админить clickhouse.
    Скиньте плиз кто нибудь статейку годную, как настроить с бэкап сервера резервное копирование.
  • https://t.me/clickhouse_ru
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

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

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @timofeevdmitry #223242 06:12 PM, 18 Jun 2021
    @BloodJazMan @temurlord мерси, посмотрю 🤝 Хороший кейс, становится ближе... ТТТ
    https://clickhouse.tech/docs/ru/sql-reference/data-types/aggregatefunction/#data-type-aggregatefunction
    тут инфа есть
    надо изучать
    AggregateFunction | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    Да, около этого.
    Не ругайтесь, пожалуйста, если не то или не всё :)
    Подскажите - исправлюсь.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Introduction to ClickHouse Backups and clickhouse-backup

    This article will explore the plumbing involved in backing up ClickHouse and introduce the clickhouse-backup tool for automating the process.

  • https://t.me/clickhouse_ru
    мн, так есть специальные движки AggregatingMergeTree / SummingMergeTree они умеют коллапсить/ агрегировать строки.
    Для хитрых функций надо использовать стейты, если храним aggregateFunction, то надо домерживать их результат -Merge комбинатором
  • @savvy_bonker #223249 08:37 PM, 18 Jun 2021
    Здравствуйте. Хотелось бы узнать корректность схемы таблицы.
    CREATE TABLE <table name> (ServerName String, MetricName String, CreatedAt DateTime, Value Float) ENGINE = MergeTree() ORDER BY (ServerName, MetricName, CreatedAt) PARTITION BY (ServerName, toYYYYMM(CreatedAt))
    Серверов мало, метрик чуть побольше (около 200 на каждый сервер), а вот собираются данные каждую секунду, так что по итогу строк много.
    У меня возникает сразу же несколько вопросов:
    1) Целесообразна ли здесь замена строк на целые числа? (т.е. вместо ServerName String использовать ServerId UInt16)
    2) Подойдёт ли такая схема для того, чтобы данные можно было визуализировать --- выбирать определённый сервер, несколько метрик, определённый промежуток времени и отображать соответственно данные (агрегация на уровне avg, median)?
    3) Подходит ли вообще эта БД для такого типа задач? Есть всякие Prometheus, но возникает проблема с историческими данными и с их количеством.
    4) Можно ли как-то улучшить схему?
  • https://t.me/clickhouse_ru
    1) можно не париться
    2) да
    3) victoria metrics как раз для этого
  • https://t.me/clickhouse_ru
    лучше всего закодировать сервер в id метрики, просто сквозная нумерация и хранить только 3 поля.
    расшифровку Metric хранить в mysql или в отдельной таблице в КХ + словарь

    (Metric UInt32, CreatedAt DateTime, Value Float CODEC(Delta?/Gorilla?, ....) )
    ENGINE = MergeTree() ORDER BY (Metric, CreatedAt)

    в victoria metrics все это уже решено и оптимизировано внутри и огромный плюс victoria поддерживает promql
  • 19 June 2021 (47 messages)
  • https://t.me/clickhouse_ru
    ну не сказал бы что прямо promql это такой уж плюс
    всякие if внутри instant vector не поделать
  • https://t.me/clickhouse_ru
    @sasha_from_space #223254 03:34 AM, 19 Jun 2021
    привет! вопрос, у меня следующая таблица, добляю около 1bil записей раскиданных в пределах 3 месяцев, name='price' получаю около 1000 parts, я так понимаю я должна создаваться одна part YYYYMM-name
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @sasha_from_space #223256 03:36 AM, 19 Jun 2021
    а получаю неслько десятков для одного partition key
  • https://t.me/clickhouse_ru
    @orloffv #223257 03:37 AM, 19 Jun 2021
    Ну они помержаться потом
  • https://t.me/clickhouse_ru
    @orloffv #223258 03:37 AM, 19 Jun 2021
    Сделай optimize final
  • https://t.me/clickhouse_ru
    @orloffv #223259 03:37 AM, 19 Jun 2021
    Тем более active = 0, тебе должны быть не интересны
  • https://t.me/clickhouse_ru
    @sasha_from_space #223260 03:39 AM, 19 Jun 2021
    a понял, по принципу MergeTree работает, спасибо!
  • https://t.me/clickhouse_ru
    @sasha_from_space #223261 03:40 AM, 19 Jun 2021
    после optimize final 1000 -> 30
  • https://t.me/clickhouse_ru
    не надо было делать optimize. Парты active=0 удаляются через 8 минут. Optimize зря только диски насиловал
  • Спасибо. Я и то, и другое решение сравню
  • @v_vasily #223265 07:40 AM, 19 Jun 2021
    Uu
  • @v_vasily #223266 07:41 AM, 19 Jun 2021
    DC a Pool ds da da d da
  • @v_vasily #223267 07:41 AM, 19 Jun 2021
    If
  • @v_vasily #223268 07:44 AM, 19 Jun 2021
    Eďo was es if we are ddwoys
  • https://t.me/clickhouse_ru
    @ruslansvir #223275 01:28 PM, 19 Jun 2021
    Вопрос не критический, но сталкиваюсь часто: Запятая перед FROM вызывает в CHYT ошибку, в отличие от некоторых других диалектов SQL. При этом сообщение об ошибке довольно неинтуитивное. Можно ли с этим что-то сделать?
  • https://t.me/clickhouse_ru
    @paveltyavin #223276 01:31 PM, 19 Jun 2021
    в clickhouse over youtube, как в обычном, trailing coma запрещены
  • https://t.me/clickhouse_ru
    А что за диалекты такие? В мускуле или постгре так можно?
  • https://t.me/clickhouse_ru
    @ruslansvir #223278 02:18 PM, 19 Jun 2021
    такое допускается в YQL, или вот тут в T-SQL
    также допускается в списках в Питоне, например.
    Удобство такой гибкости в том, что иногда нужно отключить/добавить фичу в списке и это можно сделать поставив/убрав знак комментария, а дополнительная перестановка финальной запятой реально раздражает.
    Why doesn't a trailing comma after the last field matter when creating a table using T-SQL?

    Shouldn't one of these statements work and one fail? Intuition says Statement 2 should fail because there is a comma after int and no second column listed. Yet both work and the trailing comma ","

  • https://t.me/clickhouse_ru
    @ruslansvir #223279 02:19 PM, 19 Jun 2021
    Ещё есть люди, которые ставят запятую перед элементом списка, но это переносит проблему с последнего элемента на первый...
  • https://t.me/clickhouse_ru
    Так себе диалекты конечно. Но идея хорошая, такое есть почти в каждом языке программирования. Только sql конечно более консервативный язык, я бы не надеялся
    С другой стороны кх - динамично развивается, может и добавчт такую фичу. В любом случае для этого надо заводить таску на гитхабе. Обсуждение этой проблемы в телеге ни к чему не приведёт. Может такоц фича реквест уже и был создан.
  • https://t.me/clickhouse_ru
    @ruslansvir #223281 02:28 PM, 19 Jun 2021
    спасибо за идею, попытаю счастья на ГХ
  • https://t.me/clickhouse_ru
    @ruslansvir #223282 06:13 PM, 19 Jun 2021
    напомните, пожалуйста, как слить 2 списка из разных столбцов таблицы в словарь?
  • https://t.me/clickhouse_ru
    два списка это что?
    массивы?
  • https://t.me/clickhouse_ru
    @unamedrus #223284 06:14 PM, 19 Jun 2021
    По каким правилам сливать
  • https://t.me/clickhouse_ru
    @ruslansvir #223285 06:14 PM, 19 Jun 2021
    да массивы. одинаковой длины. в одном ключи, в другом значения.
  • https://t.me/clickhouse_ru
    @unamedrus #223286 06:15 PM, 19 Jun 2021
    ну тогда
    ARRAY JOIN arr_1, arr_2
  • https://t.me/clickhouse_ru
    @unamedrus #223287 06:16 PM, 19 Jun 2021
    либо arrayZip но не понятно, что конкретно вы хотите на самом деле
  • https://t.me/clickhouse_ru
    @ruslansvir #223288 06:17 PM, 19 Jun 2021
    не то - это массивы, которые сидят в полях одной и той же таблицы. (Аппметрка Яндекса )
  • https://t.me/clickhouse_ru
    @ruslansvir #223289 06:20 PM, 19 Jun 2021
    Скорее нужно что-то типа Map(key, value), но он дает ошибку "Unknown function map"
  • https://t.me/clickhouse_ru
    @ruslansvir #223290 06:21 PM, 19 Jun 2021
    Мне в общем достаточно найти позицию ключа и взять значение...
  • https://t.me/clickhouse_ru
    a
    через indexOf можно

    value[indexOf(key,'key_name')]
  • https://t.me/clickhouse_ru
    @unamedrus #223292 06:24 PM, 19 Jun 2021
    либо через arrayFirst((x,y)-> y='key_name',value,key) думаю
  • https://t.me/clickhouse_ru
    @ruslansvir #223293 06:28 PM, 19 Jun 2021
    сделал через indexOf. спасибо!
  • https://t.me/clickhouse_ru
    @ruslansvir #223294 06:28 PM, 19 Jun 2021
    arrayFirst - перспективно. Изучу.
  • https://t.me/clickhouse_ru
    @ruslansvir #223295 06:31 PM, 19 Jun 2021
    а как делать WITH с несколькими выражениями. Цель: определить 2 выборки SELECT, обозначить их через WITH и далее использовать в джойнах.
  • @dj_mixer #223297 06:42 PM, 19 Jun 2021
    кто может придумать магический способ скипать несуществующие таблицы для cluster/clusterAllReplicas?

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

    select * from clusterAllReplicas('clustername', schema.tblname);

    There is no table `schema`.`tblname` on server: host-02-ro:9000

    : While executing Remote (version 21.3.12.2 (official build))

    т.е. игнорировать эту ошибку (можно конфигом).
    и имеет ли смысл такой ФР
  • https://t.me/clickhouse_ru
    а skip_unavaliable_shard пробывали?
  • https://t.me/clickhouse_ru
    @unamedrus #223299 06:42 PM, 19 Jun 2021
    ну вдруг
  • @dj_mixer #223300 06:43 PM, 19 Jun 2021
    не пробовал, предположил что cluster* вызывает Remote, а тот валится вполне логично
  • https://t.me/clickhouse_ru
    @unamedrus #223301 06:44 PM, 19 Jun 2021
    Кластер вроде как раз Distributed создает, там же нужно груп бай считать правильно
  • насколько я знаю skip_unavaliable_shard это фича именно distributed
  • Поигрался я с VM, интересная вещь и Grafana из коробки поддерживает, не так долго пришлось разбираться с настройкой панели, но данные вставлять --- это боль, надо разобраться с нативным форматом, чтобы это выполнять операцию быстро, а для CH есть clickhouse-driver, который работает очень даже быстро
  • https://t.me/clickhouse_ru
    данные? вставлять?
    В смысле у вас неоткуда скрепать метрики в формате прометея?
  • Можно было бы данные в реал-тайме получать, но, если честно, задача немного другая, но а это как пример. Я упомянул исторические данные, с ними беда (скорость вставки). А так данные собираются в одном файле за час, потом его надо прочитать и за этот последний час вставить данные
  • https://t.me/clickhouse_ru
    @tratatataass #223308 08:31 PM, 19 Jun 2021
    Гайз, а можно как-то настроить роль юзера, что бы тот для всех таблиц базы имел readonly, а только в одну write access?
  • https://t.me/clickhouse_ru
    Через sql rbac можно
  • 20 June 2021 (66 messages)
  • Извините за то, что я не разбираюсь в этой теме, но если исходить из моего последнего комментария, то что лучше выбрать или разницы нет особой?
  • https://t.me/clickhouse_ru
    @zholmyrza_t #223314 09:05 AM, 20 Jun 2021
    всем привет! никто не сталкивался с подобной ошибкой? Обновлял версию с 20.11 по 21.3.12 не помогло
    Code: 49, e.displayText() = DB::Exception: Can't adjust last granule because it has 8192 rows, but try to subtract 24555 rows.: While executing MergeTreeThread
  • @1063161973 #223315 09:07 AM, 20 Jun 2021
    Добрый день.
    Можно ли добавить комментарий к уже существующей таблице (версия сервера 21.6.4.26). При создании таблицы это работает, хотелось бы не перезаливать из-за комментарев все таблицы.
  • https://t.me/clickhouse_ru
    COLUMN | ClickHouse Documentation

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

  • По этой ссылке речь о добавлении комментариев для колонок. А вопрос был о комментарии к таблице.
  • @1063161973 #223318 09:09 AM, 20 Jun 2021
    При создании таблицы можно добавить комментарий:
    CREATE TABLE IF NOT EXISTS work.test
    (
    s String
    )
    ENGINE=Memory()
    COMMENT 'Тестовая таблица'
  • https://t.me/clickhouse_ru
    не вижу возможности, судя по документации, комментарий можно добавлять ток при создании
  • https://t.me/clickhouse_ru
    @critskiy #223320 09:10 AM, 20 Jun 2021
    как вариант, вы можете создать новую с комментарием и идентичной структурой попробовать и перенести залитые данные в новую
  • Тоже не нашел. Хотя через ALTER TABLE было бы удобно, функциональность простая.
  • @1063161973 #223322 09:12 AM, 20 Jun 2021
    ... что-то типа: ALTER TABLE test TABLE COMMENT 'Тестовая ятаблица'
  • https://t.me/clickhouse_ru
    ALTER TABLE xxx MODIFY COMMENT?
  • https://t.me/clickhouse_ru
    нет такого, емнип
  • https://t.me/clickhouse_ru
    @unamedrus #223325 09:12 AM, 20 Jun 2021
    Но это в новых версиях ктолько
  • 👍 да, именно так хотелось бы
  • https://t.me/clickhouse_ru
    ну пишите фича реквест, хз почему не сделали
  • https://t.me/clickhouse_ru
    погодите, а разве он не может сделать через rename/exchange переход на таблицу с идентичной структурой и добавленным комментарием? Или я туплю? 🤔
  • https://t.me/clickhouse_ru
    Да может.

    А если это MergeTree таблица, не реплицированная то можно просто файл на диске обновить
  • https://t.me/clickhouse_ru
    @unamedrus #223331 09:20 AM, 20 Jun 2021
    и сделать DETACH ATTACH
  • https://t.me/clickhouse_ru
    мм, про этот нюанс про файл на диске моя забыль
  • Через DETACH / ручная правка метаданных / ATTACH - да можно.
    Нелогично просто, в SHOW и CREATE поддержка есть, а в ALTER TABLE - нет
  • https://t.me/clickhouse_ru
    нууууу логично/нет - приходится решать проблему обходным путем :)
  • ага, как все "нормальные герои" 😁
  • https://t.me/clickhouse_ru
    В VM данные будут занимать места сильно меньше, чем в клике. Берите VM.
  • чот не встаёт 21.1 со словарями в xml, хотя фикс вроде вмержен. ругается на то же самое.
  • https://t.me/clickhouse_ru
    Замените запросы на dictGetUInt8, те на те у которых есть тип
  • dictGetFloat64('currencies', 'rate', tuple(toString(currency))) вот такой дефолт используем. вроде типизированный.

    а есть какой-то способ бесшовно с xml-словарей переехать на ddl? или такой переезд не поможет с этой проблемой?
  • https://t.me/clickhouse_ru
    А, ну тогда хм
  • https://t.me/clickhouse_ru
    @unamedrus #223341 11:06 AM, 20 Jun 2021
    Какая конкретно ошибка то
  • https://t.me/clickhouse_ru
    @hostadminonline #223342 11:21 AM, 20 Jun 2021
    помогите плз ... ни как не могу разобраться, запрос выполняется очень медленно

    запрос: select a.ssid, b.ssid from adsApi a left join mongodb b ON (b.ssidHash = a.ssidHash) LIMIT 0, 10

    таблица которая присоединяется
    CREATE TABLE parsing_stat.mongodb
    (
    date DateTime,
    sourceId UInt64,
    ssid String,
    regionId UInt64,
    avg UInt64,
    parsingType String,
    ssidHash UInt64 DEFAULT sipHash64(ssid),
    INDEX ssidHash ssidHash TYPE minmax GRANULARITY 4,
    INDEX ssidHash2 (sourceId, ssidHash) TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/f8dd7945-db55-43a0-a667-b3146a9b183b/{shard}', '{replica}')
    ORDER BY (sourceId, regionId, date)
    TTL date + toIntervalMonth(3)
    SETTINGS index_granularity = 8192

    в итоге отрабатывается это все со следующими результатами
    Progress: 3.12 million rows, 93.29 MB (4.06 million rows/s., 121.34 MB/s.) 92%
    10 rows in set. Elapsed: 0.769 sec. Processed 3.12 million rows, 93.29 MB (4.06 million rows/s., 121.32 MB/s.)
  • https://t.me/clickhouse_ru
    Сколько записей в правой таблице
  • https://t.me/clickhouse_ru
    @hostadminonline #223344 11:24 AM, 20 Jun 2021
    3 млн
  • https://t.me/clickhouse_ru
    @unamedrus #223345 11:25 AM, 20 Jun 2021
    Ну кх сначала джойнит те поднимает правую таблицу в памчть а только потом делает лимит
  • https://t.me/clickhouse_ru
    @unamedrus #223346 11:26 AM, 20 Jun 2021
    А в чем смысл запроса то
  • https://t.me/clickhouse_ru
    @hostadminonline #223347 11:26 AM, 20 Jun 2021
    в левой таблице 5 млн запросов в правой 3 ... мне нужны листинги с пониманием того у каких записей левой таблице отсутствуют записи в правой
  • https://t.me/clickhouse_ru
    @unamedrus #223348 11:27 AM, 20 Jun 2021
    Ну сделайте через not in
  • https://t.me/clickhouse_ru
    @unamedrus #223349 11:28 AM, 20 Jun 2021
    Как часто вы его выполнят то будете
  • https://t.me/clickhouse_ru
    @hostadminonline #223350 11:28 AM, 20 Jun 2021
    да тут дело немного не в этом ... у меня это объединение работает в даталенсе .... для построения графиков .... и график поднимается очень медленно
  • https://t.me/clickhouse_ru
    @hostadminonline #223351 11:29 AM, 20 Jun 2021
    а учитывая что графиков много .... это прям очень медленно работает ... вот сижу пытаюсь индексами ускорить процесс
  • https://t.me/clickhouse_ru
    @unamedrus #223352 11:29 AM, 20 Jun 2021
    Индексами это дело вы не ускорите
  • https://t.me/clickhouse_ru
    @unamedrus #223353 11:29 AM, 20 Jun 2021
    Вам либо правую таблицу в join table движок пихать либо как словарь
  • https://t.me/clickhouse_ru
    @hostadminonline #223354 11:30 AM, 20 Jun 2021
    хм
  • https://t.me/clickhouse_ru
    @hostadminonline #223355 11:30 AM, 20 Jun 2021
    спасибо .... ща буду копать
  • https://t.me/clickhouse_ru
    @unamedrus #223356 11:30 AM, 20 Jun 2021
    Но запрос странный, если он один раз посмотреть то ок
  • https://t.me/clickhouse_ru
    @unamedrus #223357 11:30 AM, 20 Jun 2021
    А если постоянно вызывается, то это странно
  • https://t.me/clickhouse_ru
    @kapustor #223358 01:08 PM, 20 Jun 2021
    Всем привет!
    В этот вторник, 22-го июня, специалисты из Glowbyte совместно с Яндекс.Облаком проводят семинар по построению рекомендательных движков. Стек: ClickHouse, S3, BI (DataLens), Kafka, ML-стек (Data Sphere).

    Вебинар будет интересен всем, перед кем стоит задача в сжатые сроки построить эффективный механизм рекомендаций для повышения среднего чека или уменьшения оттока клиентов (e-commerce, retail, финтех, сервисы, ad tech).
    Будет секция вопросов и ответов - можно будет пообщаться онлайн.
    https://cloud.yandex.ru/events/368
    Рекомендательные системы: архитектура и применение

    Покажем современную архитектуру рекомендательного движка на базе платформы данных Yandex.Cloud

  • https://t.me/clickhouse_ru
    а если использовать CollapsingMergeTree (order by ssid) и 2 мат вью, чтобы когда в таблицу adsApi запись происходила, то в CollapsingMergeTree писать sign=1, а если втавка в mongodb, то в CollapsingMergeTree писать sign=-1. т.о. в отдельной таблице всегда будет актуальный список записей ssid, которые есть в adsApi, но нет в mongodb?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #223359 #223360 03:02 PM, 20 Jun 2021
    Для Collapsing MT принципиальна последовательность записей с 1 и -1. Сначала всегда должна идти 1.
  • https://t.me/clickhouse_ru
    @brbrbr #223361 03:03 PM, 20 Jun 2021
    Иначе они не схлопнутся.
    Поэтому если у вас запись из Монго может прийти раньше, то такая схема не подойдёт.
  • https://t.me/clickhouse_ru
    ну у меня вообще монги нету, я только набрасываю варианты решения понравившейся мне задачи. как там у ТС пишется - хз :)
  • https://t.me/clickhouse_ru
    а если сделать проекцию с order by ssid? тогда по идее при джойне правая таблица уже будет "готовой", её не надо будет пересортировывать и джойн по идее будет быстрее
  • https://t.me/clickhouse_ru
    Разве проекция хоть каким-то образом влияет на join?
  • https://t.me/clickhouse_ru
    Правая таблица будет "готовой", если её положить в подходящий Join заранее
  • https://t.me/clickhouse_ru
    этот вариант уже озвучивали выше
  • https://t.me/clickhouse_ru
    Верно, просто обратил внимание про "готовность" таблицы
    В моем представлении проекция и джойн - это никак не связанные вещи
  • https://t.me/clickhouse_ru
    а в моём представлении, проекция должна использоваться для ускорения запроса и не важно где находится таблица с проекцией в FROM или в JOIN. но сейчас скорее всего проекция не используется при джойн, потому что сейчас в проекциях даже WHERE не работает. так что может потом такое и сделают.
  • https://t.me/clickhouse_ru
    я вот задумался
    если проекцию задать с ключом group by, который в каком-то конкретном случае сильно жмет данные
    затем джойнить другую таблицу на исходную так, чтобы должно было хватать проекции, это КАК-БУДТО ДОЛЖНО ускорить по крайней мере создание мапы
    это работает/будет работать, не знаете?
    p.s. это не про mergejoin
  • https://t.me/clickhouse_ru
    @BloodJazMan #223370 03:51 PM, 20 Jun 2021
    SYSTEM RESTORE REPLICA replica [ON CLUSTER cluster] by myrrc · Pull Request #13652 · 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
    вряд ли, проекции пока что только в зачаточном состоянии, даже доки нету :) но КХ развивается стремительно, могут и добавить. пока что в ближайших планах только поддержка WHERE и SimpleAggregateFunction
  • дожжжждалассссссь!
  • https://t.me/clickhouse_ru
    Это вместо подмены на не replicated и аттачей детачей?
  • https://t.me/clickhouse_ru
    @rasstr0en #223374 06:18 PM, 20 Jun 2021
    На пару неделек бы раньше)
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    Так скрипт был для автоматизации )
  • https://t.me/clickhouse_ru
    @gorbonk #223377 06:55 PM, 20 Jun 2021
    Всем доброго вечера. Обращаюсь к КХ с питона через infi.clickhouse_orm, но периодически ловлю ошибки по типу Connection broken: IncompleteRead(288 bytes read, 224 more expected). На сколько понимаю, это КХ сервер обрывает соединение, но куда дальше копать для поиска причины проблемы даже предположить не могу. Что можно делать в такой ситуации?
  • https://t.me/clickhouse_ru
    Мы руками 100500 партиций вжж, скрипт не нашли, да и спешили)
  • https://t.me/clickhouse_ru
  • 21 June 2021 (144 messages)
  • https://t.me/clickhouse_ru
    @Caside #223383 05:05 AM, 21 Jun 2021
    Добрый день!
    Подскажите как в запросе создать последовательность дат по месяцам от фиксированного месяца до текущей даты?
    Что-то вроде этого примера https://clickhouse.tech/docs/ru/sql-reference/table-functions/numbers/ но только с первым днём месяца в каждой строке
    numbers | Документация ClickHouse

    numbers numbers(N) - возвращает таблицу с единственным столбцом number (UInt64), содержащим натуральные числа от 0 до N-

  • https://t.me/clickhouse_ru
    SELECT toDate('2020-01-01') + INTERVAL toUInt64(number) MONTH FROM numbers(toUInt64(dateDiff('month',toDate('2020-01-01'),now())) + 1);
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #223384 #223385 05:22 AM, 21 Jun 2021
    Спасибо!
  • @vvvjhaq #223386 06:57 AM, 21 Jun 2021
    Привет! Спрошу еще раз)
    В наличии есть парты PARTITION BY formatDateTime(dt, '%Y%m%d%H') с engine=CollapsingMT, которые нужно приаттачить.
    В них есть не схлопнувшиеся строки, подскажите, как правильно, их приаттачить(интересуется последовательность attach, так как при неправильной последовательности происходит нарушение алгоритма их вставки). Вставлены были 1-> -1 -> 1. Следовательно хочу оставлять только последнюю строку.
  • https://t.me/clickhouse_ru
    @unknown_name13 #223387 07:14 AM, 21 Jun 2021
    #вакансия #удаленка #dba #clickhouse
    ищем dba.  clickhouse или с желанием изучить. зарплата от 180 обсуждаемая. Любой город, можно в офисе(мск сити), если хочется. тк рф, дмс, все дела. ищем активных и целеустремленных :-) по вопросам в лс
  • @sparrowganz #223389 07:54 AM, 21 Jun 2021
    Ребят привет клик выдает ошибку DB::Exception: File not found: /var/log/clickhouse-server/clickhouse-server.log.0 может кто знает как пофиксить?
  • https://t.me/clickhouse_ru
    touch /var/log/clickhouse-server/clickhouse-server.log.0
  • я так понял это архивация логов (как в настройках) и странно что при всех правах не может создать
  • https://t.me/clickhouse_ru
    есть мысль
    попробуйте

    SYSTEM STOP MERGES db.table;
    ATTACH PART в любом порядке;
    SYSTEM START MERGES db.table;
  • спасибо, сейчас попробую)
  • https://t.me/clickhouse_ru
    @paveltyavin #223395 08:31 AM, 21 Jun 2021
    как округлить datetime до 8 часов?
  • https://t.me/clickhouse_ru
    в смысле либо 0 либо 08 либо 16 ?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    @paveltyavin #223398 08:36 AM, 21 Jun 2021
    чтобы 2019-11-09T09:03:42 превратилось в 2019-11-09T08:00:00
  • intDiv(a, b) ?
  • https://t.me/clickhouse_ru
    ой, а можешь ответить утверждением, плз, а то так не понятно
  • пару минут, за комп попаду
  • https://t.me/clickhouse_ru
    SELECT toDate(now()) + INTERVAL intDiv(toHour(now()),8) * 8 HOUR;
  • https://t.me/clickhouse_ru
    @paveltyavin #223404 08:51 AM, 21 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    а права то точно есть?
    кто owner у каталога?
  • помогло, но придется по 1ой партиции так делать(ATTACH/DETACH включают мердж)
  • все права есть (owner = clickhouse ) и при chmod -R 777 на дир логов тоже самое. При ручном создании файла клик удаляет его (он пропадает )
  • https://t.me/clickhouse_ru
    мне вот народ в чатеге подсказывает что вообще по идее не должно для MergeTree порядок подключения менять

    разве вы нагрузку какую то делаете
    и у вас на самом деле не в порядке дело а в том что пока вы делаете ATTACH вам прилетают еще данные которые мержатся...
    и тогда да, STOP MERGES и STOP FETCHES и STOP TTL MERGES , STOP MOVES перед attach Должно помогать
  • https://t.me/clickhouse_ru
    ACL может какой нибудь дополнительно настроен?
  • https://t.me/clickhouse_ru
    а можете полный stacktrace скинуть ошибки?
  • @sparrowganz #223411 08:57 AM, 21 Jun 2021
    работает в докере с офф image
  • @sparrowganz #223413 08:59 AM, 21 Jun 2021
    ClickHouse server version 20.11.2.1 (official build)
  • не, нагрузки никакой нет, я же кидал тестовую табличку, сначала вставляю 3 строки, потом детач ПАРТИЦИИ, аттач ПАРТОВ(по 1 шт) в рандомном порядке, и отсюда все сбивается.
  • https://t.me/clickhouse_ru
    он пытается удалить файл, Purge в stacktrace
    и файла типа нет к этому времени...

    какие у вас настройки для <logger><size> и <logger><count>
    прописано в конфигах /var/lib/clickhouse/preprocessed_configs/config.xml ?
  • @sparrowganz #223417 09:07 AM, 21 Jun 2021
    1000м 10
  • https://t.me/clickhouse_ru
    ну вроде все правильно...
    странно ...
    так я не пойму... а на какой запрос у вас python clickhouse_driver такую ошибку выдает?
  • @sparrowganz #223419 09:11 AM, 21 Jun 2021
    помоему на Insert (это ELT с airflow )
  • @sparrowganz #223421 09:13 AM, 21 Jun 2021
    ошибка повторяющаяся и раньше при перезагрузке click какое-то время работало
  • https://t.me/clickhouse_ru
    что-то очень странное, нужен точный запрос
    у вас там случайно не кончается место?
  • @sparrowganz #223423 09:15 AM, 21 Jun 2021
    нет место я первым проверил
  • @sparrowganz #223424 09:16 AM, 21 Jun 2021
    из 1тб 200 used
  • @sparrowganz #223425 09:16 AM, 21 Jun 2021
    хотя да
  • @sparrowganz #223426 09:17 AM, 21 Jun 2021
    @BloodJazMan спасибо большое вот в чем и была ошибка
  • https://t.me/clickhouse_ru
    это ДРУГОЙ каталог =)

    df -h /var/log/clickhouse-server

    у вас там 100% занято =) в корне
  • @sparrowganz #223428 09:18 AM, 21 Jun 2021
    да я сразу не заметил это
  • <Error> Application: DB::Exception: external dictionary 'currencies' not found: While processing cast(dictGetFloat64('currencies', 'rate', tuple(toString(cast(toFixedString('USD', 3) AS currency_tmp_alter4390137639752471181, 'FixedString(3)') AS currency))) AS currency_rate_tmp_alter14854700397755831138, 'Float64') AS currency_rate: default expression and column type are incompatible.

    поля там такие:
    * currency FixedString(3) DEFAULT toFixedString('USD', 3)
    * currency_rate Float64 DEFAULT dictGetFloat64('currencies', 'rate', tuple(toString(currency)))
  • https://t.me/clickhouse_ru
    SELECT * FROM system.dictionaries FORMAT Vertical
  • чтобы запрос сделать, надо чтобы кликхаус встал, а он не встаёт.

    если исключить проблемные таблицы из metadata, а потом им сделать аттач, то всё ок.
  • https://t.me/clickhouse_ru
    а блин, старая проблема зависимость от словарей при выводе типов
    какая версия clickhouse?

    в 21.3 должно было починиться
  • https://altinity.com/blog/tag/altinity-stable/
    следуем вашим советам :) 21.3 ещё не стейбл. как с этим жить, пока он не станет таковым?

    замена xml на запросы поможет?
  • https://t.me/clickhouse_ru
    dictGet ищет словарь, словарь не загружен
    без разницы как он объявляется в XML или в SQL
  • я понял. спасибо!
    пойду изучать ченжлог 21.3.
  • https://t.me/clickhouse_ru
    насчет того что 21.3 в altinity stable пока не вышел... пока конкретных сроков насчет altinty-stable увы сказать не могу
  • https://t.me/clickhouse_ru
    Привет! Напоминаю, что завтра вечером на вебинаре спецы из компаний Glowbyte и Yandex.Cloud рассказывают об опыте построения рекомендательных движков на ClickHouse + Kafka +S3. Приходите!
  • Хорошо, спасибо. Правда, придётся поприседать с бинарным форматом
  • https://t.me/clickhouse_ru
    @evgen1997 #223440 10:26 AM, 21 Jun 2021
    Привет!
    Вопрос - а можно как-то преоброзовать Nullable(String) в словарь/json?
  • https://t.me/clickhouse_ru
    @vorobyev_evgeny #223441 11:12 AM, 21 Jun 2021
    Всем привет!
    SYSTEM RELOAD DICTIONARIES стала выдавать ошибку:

    Received exception from server (version 21.6.5):
    Code: 86. DB::Exception: Received from localhost:9000. DB::Exception: Code: 86, e.displayText() = DB::Exception: Received error from remote server /?connection_string=DSN%3DMSSQL%3BUID%3Dxxxxxxxx%3BPWD%xxxxxxxxxxxxxxxxxxxxxx&max_block_size=8192. HTTP status code: 500 Internal Server Error, body: ÿstd::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:1625: 2400: [FreeTDS][SQL Server]Invalid cursor state , (version 21.6.5.37 (official build)).

    Смотрю в system.dictionaries на каком словаре выдаётся ошибка (поле last_exception).
    Выдает один (иногда два словаря). Делаю перегрузку конкретно этих словарей - всё OK. Кто-нибудь сталкивался с таким?

    стек-трейс из поля last_exception:

    Code: 86, e.displayText() = DB::Exception: Received error from remote server /?connection_string=DSN%3DMSSQL%3BUID%3Dxxxxxxxxxxxxxx%3BPWD%xxxxxxxxxxx&max_block_size=8192. HTTP status code: 500 Internal Server Error, body: � std::exception. Code: 1001, type: nanodbc::database_error, e.what() = ../contrib/nanodbc/nanodbc/nanodbc.cpp:1625: 2400: [FreeTDS][SQL Server]Invalid cursor state , Stack trace (when copying this message, always include the lines below):

    0. ? @ 0x3a8cac2 in /usr/bin/clickhouse-odbc-bridge
    1. ? @ 0x3a8f15d in /usr/bin/clickhouse-odbc-bridge
    2. ? @ 0x3a8e271 in /usr/bin/clickhouse-odbc-bridge
    3. ? @ 0x2b64fa0 in /usr/bin/clickhouse-odbc-bridge
    4. ? @ 0x2b57184 in /usr/bin/clickhouse-odbc-bridge
    5. ? @ 0x2b50ce5 in /usr/bin/clickhouse-odbc-bridge
    6. ? @ 0x3a2c3d0 in /usr/bin/clickhouse-odbc-bridge
    7. ? @ 0x531c2af in /usr/bin/clickhouse-odbc-bridge
    8. ? @ 0x531dd1a in /usr/bin/clickhouse-odbc-bridge
    9. ? @ 0x5eb9db9 in ?
    10. ? @ 0x5eb682a in ?
    11. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    12. clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
    (version 21.6.5.37 (official build)) (version 21.6.5.37 (official build))
  • https://t.me/clickhouse_ru
    стек трейс говорит что у вас в ODBC bridge ошибка,
    есть пакет с debug символами
    clickhouse-common-static-dbg
    можете его поставить?
  • https://t.me/clickhouse_ru
    если немного погуглить
    похоже odbc-bridge не закрывает курсор не профетчив все записи из курсора до конца
    https://stackoverflow.com/questions/26401996/invalid-cursor-state-pdo-odbc-freetds-sql-server

    можно попробовать включить в unixodbc tracing
    https://www.easysoft.com/support/kb/kb00945.html
    и посмотреть как odbc-bridge общается с SQL Server

    и с полным стектрейсом и трейсфалом можно issue вот тут завести
    https://github.com/ClickHouse/ClickHouse/issues/
    Invalid cursor state - pdo_odbc FreeTDS SQL Server

    We're running a completely nonchalant query and are getting the following error: PDOException : SQLSTATE[24000]: Invalid cursor state: 0 [FreeTDS][SQL Server]Invalid cursor state (SQLExecute[0] at /

  • чот 21.3.12.2 с такой же ошибкой падает :(
  • https://t.me/clickhouse_ru
    clickhouse 20.12.5 restart error: external dictionary not found · Issue #21101 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug Reproduce of 12454. When creating a dictionary and a materilized column, after restart we get external dictionary not found Do...

  • ну, вот да. я посмотрел, что https://github.com/ClickHouse/ClickHouse/pull/19805 уже в 21.1 есть. но чот не работает
    Fix starting the server with tables having default expressions containing dictGet() by vitlibar · Pull Request #19805 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Changelog category: Bug Fix Changelog entry: Fix starting the server with tables having default expressio...

  • https://t.me/clickhouse_ru
    @BloodJazMan #223448 11:58 AM, 21 Jun 2021
    я думаю вам надо по моей ссылке комментарий оставить с определением ATTACH TABLE таблицы и стектрейсом
    и протегировать @kitaisreal
  • https://t.me/clickhouse_ru
    @386851661 #223449 11:58 AM, 21 Jun 2021
    Добрый день! Не подскажите почему не работает запрос с like? Мне нужно вывести все записи, которые начинаются с буквы: поле like '[a-z]%' - выдает пустой запрос....
  • https://t.me/clickhouse_ru
    потому что для этого надо использовать match(field, '^[a-z]')
  • https://t.me/clickhouse_ru
    Спасибо, попробую!
  • https://t.me/clickhouse_ru
    @AnKochem #223453 12:14 PM, 21 Jun 2021
    Есть в КХ по аналогии с runningDifference, что-нибудь типа runningSum? Или нужно массивы сворачивать-разворачивать ? )
  • https://t.me/clickhouse_ru
    window functions же завезли
  • @dj_mixer #223455 12:15 PM, 21 Jun 2021
    Есть window function уже
  • https://t.me/clickhouse_ru
    У них вроде и не бинарный есть. По крайней мере для вставки - точно
  • Да, есть не только они (всеразличные JSON, CSV и т.п.), но по скорости самый быстрый --- бинарный. Проблема с тем, что если вставлять в JSON, то придётся долго ждать, пока вставятся данные за 5 лет
  • https://t.me/clickhouse_ru
    @mrAndersen7 #223461 01:53 PM, 21 Jun 2021
    Немного не в тему и даже не в этот чат, но в последнем хроме на арче вот по этой ссылке во вкладке SIGTRAP
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/ttl/

    😂😂
    TTL | ClickHouse Documentation

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

  • @dj_mixer #223463 02:12 PM, 21 Jun 2021
    Вопрос такой. есть ли разница между ручной очисткой shadow и unfreeze?
  • https://t.me/clickhouse_ru
    ну вроде когда делаешь freeze парты из system.parts исчезают
    так что думаю что нет

    clickhouse-backup никакого UNFREEZE не делает, тупо mv хардлинков из shadow в бекап папку делает
  • ну с freeze все ясно.
    смысл команды unfreeze пытаюсь понять.
  • @dj_mixer #223466 02:22 PM, 21 Jun 2021
    а кто нибудь смог женить clickhouse с бекапами EMC Networker + Datadomain
  • а локал инкрементал не работает в clickhouse-backup?
  • @zavalnix #223468 02:30 PM, 21 Jun 2021
    Хочу в небольшом стартапе засетапать, небольшое решение для аналитики с clickhouse.
    Какой самый толковый стартовый темплейт с возможностью масштабирования?
  • https://t.me/clickhouse_ru
    Поясните за template, не особо понятно
  • https://t.me/clickhouse_ru
    Ch только для эвент аналитики, если придеться что-то большое джойнить одумайся
  • Какой docker-compose, kubernetes сетап
  • Вот для ивент аналитики подходит
  • @zavalnix #223473 02:33 PM, 21 Jun 2021
    У нас вебприложение.
  • @zavalnix #223474 02:33 PM, 21 Jun 2021
    Хочу данные слать в CH
  • @zavalnix #223475 02:33 PM, 21 Jun 2021
    чтобы потом кастомные дэборжы строить
  • @zavalnix #223476 02:34 PM, 21 Jun 2021
    Данных будет 2 ТБ за год примерно
  • @zavalnix #223477 02:34 PM, 21 Jun 2021
    Хочется обойтись без большого девопса
  • https://t.me/clickhouse_ru
    я так данные из инфлюкс дб переносил за 5 лет. меньше чем за сутки всё перенеслось. сидеть и разбираться в бинарном протоколе гораздо дольше. померяйте скорость вставки - если за пару дней уложитесь, то к чёрту этот бинарный протокол
  • https://t.me/clickhouse_ru
    Так и не надо на первых порах усложнять инфру слету
  • https://t.me/clickhouse_ru
    @critskiy #223480 02:36 PM, 21 Jun 2021
    Для начала необходимо провести анализ и проверить, является ли CH подходящим для вашей нагрузки
  • https://t.me/clickhouse_ru
    =) а какой в нем смысл?
    inodes экономить?
  • смысл делать локальный, который потом агент бекапера забирает.
    чтобы меньше забирал по сети
  • https://t.me/clickhouse_ru
    @temurlord #223483 02:44 PM, 21 Jun 2021
    Господа, подскажите, почему приме anyIfOrNullMerge в этом случае не NULL получается, а пустая строка (этот столбец во всех строках NULL)
    2da301ca5031 :) SELECT anyIfOrNull(parent_id, isNotNull(parent_id)) AS X FROM indicators_processes_ingest;

    SELECT anyIfOrNull(parent_id, isNotNull(parent_id)) AS X
    FROM indicators_processes_ingest

    Query id: 2001122f-9723-4b0e-96f4-43402d96ad50

    ┌─X────┐
    │ ᴺᵁᴸᴸ │
    └──────┘

    2da301ca5031 :) SELECT anyIfOrNullMerge(X) FROM (SELECT anyIfOrNullState(parent_id, isNotNull(parent_id)) AS X FROM indicators_processes_ingest);

    SELECT anyIfOrNullMerge(X)
    FROM
    (
    SELECT anyIfOrNullState(parent_id, isNotNull(parent_id)) AS X
    FROM indicators_processes_ingest
    )

    Query id: d7e24f86-96cb-4d2c-8a9c-907b7f039699

    ┌─anyIfOrNullMerge(X)─┐
    │ │
    └─────────────────────┘

    1 rows in set. Elapsed: 0.010 sec.

    Это толкьо пример в реально миспользовании создаётся матвью и селект с anyIfOrNullMerge делается именно из него, но с сабзапросом воспроизводится
  • https://t.me/clickhouse_ru
    смотрите =)
    локальный бекап это просто хардлинки
    чтобы предотвратить удаление партов после мержа

    соответственно, когда делается upload он легко может быть сделан через --diff-from и тут как раз будет реальная экономия
    и при download тоже, там парты которые инкрементальные и base backup будет сливаться
  • https://t.me/clickhouse_ru
    @BloodJazMan #223485 02:47 PM, 21 Jun 2021
    indicators_processes_ingest
    у вас тут реально только Null ?
  • https://t.me/clickhouse_ru
    @temurlord #223486 02:47 PM, 21 Jun 2021
    в столбце parent_id — да
  • https://t.me/clickhouse_ru
    @shakhov #223487 02:48 PM, 21 Jun 2021
    Подскажите, пожалуйста, почему в такой элементарной ситуации возникает ошибка "таблица asna.first_sid не существует? (версия 21.3 LTS)

    create view asna.first_sid as with temp as(
    select distinct ClientID cid, Date, VisitID sid
    from asna.visits)
    select cid, min(sid) sid from temp group by cid
  • https://t.me/clickhouse_ru
    2da301ca5031 :) SELECT parent_id from indicators_processes_ingest FORMAT PrettyCompactMonoBlock

    SELECT parent_id
    FROM indicators_processes_ingest
    FORMAT PrettyCompactMonoBlock

    Query id: 4a2096de-f14a-4f24-88fc-06b192864d6b

    ┌─parent_id─┐
    │ ᴺᵁᴸᴸ │
    │ ᴺᵁᴸᴸ │
    └───────────┘
  • про это я в курсе. мой вопрос другой.

    после того как clickhouse-backup все пофризил и перенес их в другую папку, делает ли он что нибудь ещё при режиме local (zip, добавляет мета, имя)?
  • https://t.me/clickhouse_ru
    metadata.json и еще там файлики делает
  • но не зипует, да? т.е. доп место на диске занимать не будет (по крайней мере до удаления оригинальных партов)?
  • https://t.me/clickhouse_ru
    ifNotNull всегда false
    и
    вы используете
    any аггегатную функцию в которой добавляются два модификатора
    + If + OrNull

    if c постоянным false - вернет пустой результат

    OrNull заменит его на Null

    если сюда добавить State
    то есть шанс что в State будет пустой результат получившийся на If

    а OrNull возможно не срабатывает

    и тогда
    any + If + OrNull + Merge просто получит пустой результат, в котором кстати нет условий. и домержит это дело до пустой строки

    второй anyIf кажется в нем отсутствует условие
  • https://t.me/clickhouse_ru
    именно так. zip, tar и прочее это для заливки на remote storage
    если посмотрите на конфиг станет ясно что для локальных бекапов используется только секция clickhouse
    (Ну по крайней мере я не помню в исходниках чтобы видел что это не так)
  • Отлично. Просто не пробовал руками сам. Спасибо!
  • Звучит рационально
  • https://t.me/clickhouse_ru
    А есть ли какой-нибудь способ обойти это поведение?
    Условно я хочу сохранять первый (я понимаю, что any это не совсем первый, но в данном случае меня устраивает) Not Null результат и думал, что аггрегации меня спасут, но пока не осиливаю
  • @7699150 #223498 03:49 PM, 21 Jun 2021
    Всем привет!
    Есть таблица “`AggregatingMergeTree`” с колонками “AggregateFunction(argMax, Nullable(String), Int64)”

    Нужно удалить приватную информацию старше 2х лет.
    Подскажите пожалуйста, можно ли как-то сделать Alter Update для такого типа данных?
  • @7699150 #223499 03:50 PM, 21 Jun 2021
    Пробую выполнить такой запрос и получаю ошибку

    ALTER TABLE table.user_aggregation_shard
    UPDATE name =
    (
    SELECT argMaxState(toNullable('John Doe'), toInt64(now())) AS name
    ) WHERE user_id = 38

    ————
    Unknown function argMaxState: While processing argMaxState(toNullable('John Doe'), toInt64(now())) AS name
  • https://t.me/clickhouse_ru
    =)) вы еще в SELECT ... FROM Забыли добавить
  • так а там фром не нужен
    забиваю статической стрингой имя пользователя
  • вот такое хочу получить
  • https://t.me/clickhouse_ru
    Лучше наверно insert вместо update, но он не гарантирует перезапись
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223113 #223505 04:38 PM, 21 Jun 2021
    Привет! Обновил версию клика до последней (21.6.5.37). Но синтаксис projection почему-то не работает. Что я упускаю?
  • https://t.me/clickhouse_ru
    клиент парсит SQL запросы
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223506 #223507 04:41 PM, 21 Jun 2021
    Т.е. надо через клиент последней версии передавать запросы?
  • https://t.me/clickhouse_ru
    в случае clickhouse-client да

    и select будут пользоваться прожекшинами если включено allow_experimental_projection_optimization
  • https://t.me/clickhouse_ru
    @den_crane #223509 04:43 PM, 21 Jun 2021
    для проверки можно использовать force_optimize_projection
  • https://t.me/clickhouse_ru
    @k1nteg #223510 04:43 PM, 21 Jun 2021
    А если подключение через jdbc?
  • https://t.me/clickhouse_ru
    db grip ?
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #223511 #223512 04:44 PM, 21 Jun 2021
    Да.
  • https://t.me/clickhouse_ru
    db grip на кой-то хер пытается парсить / валидировать SQL запросы, и отстал на 3 года по синтаксису, звоните в jetbrains
  • https://t.me/clickhouse_ru
    @k1nteg #223514 04:46 PM, 21 Jun 2021
    Ахаха)
  • https://t.me/clickhouse_ru
    @evgeny_relap #223515 04:46 PM, 21 Jun 2021
    Коллеги, а транкейт в кх сносит все данныее и индексы к ним?
  • https://t.me/clickhouse_ru
    @evgeny_relap #223516 04:46 PM, 21 Jun 2021
    Добрый вечер )
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Вместе с файлами на дисках?
  • https://t.me/clickhouse_ru
    да, но некоторые файлы будут удалены через 8 минут.
  • https://t.me/clickhouse_ru
    @den_crane #223520 04:49 PM, 21 Jun 2021
    есть небольшой косяк
  • https://t.me/clickhouse_ru
    @Fullherdi #223521 04:49 PM, 21 Jun 2021
    Спасибо, замечал такое, решил лишний раз переспросить
  • https://t.me/clickhouse_ru
    @Fullherdi #223522 04:50 PM, 21 Jun 2021
    Дроп партиций примерно так же работает
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @den_crane #223524 04:53 PM, 21 Jun 2021
    Смешная штука, КХ хранит неактивные парты 8 минут, для защиты от потери данных при внезапном ребуте хардвари.
    Так вот truncate / drop partition удаляют активные парты моментально, а неактивные, которые естественно тоже не нужны, хранятся еще 8 минут. Ну и если будет внезапный рестарт и таблица не Replicated, то естественно КХ приатачит неактивные парты назад. что вообще баг.
  • https://t.me/clickhouse_ru
    @crazyproger #223525 04:59 PM, 21 Jun 2021
    Подскажите пожалуйста, а можно два зеркала replicated таблиц натравить на один путь s3 хранилища? Это будет работать? Подумываем сгружать старые данные в s3 но возник вопрос - можно ли сэкономить на s3 или нужно хранилища x2 так же? Данные там мержиться уже не будут естественно.
  • @SonFire #223527 05:33 PM, 21 Jun 2021
    Подскажите как быть с Read timed out ?
  • https://t.me/clickhouse_ru
    а что с ним?
  • DataGrip выдает ошибку Read timed out. И что, куда дальше копать не понятно
  • https://t.me/clickhouse_ru
    в настройках уставновите нужное вам значение
  • https://t.me/clickhouse_ru
    В конфигах драйвера(или конекшена) нужно поправить параметры связанные с таймаутами
    socket_timeout, datatransfer_timeot и тд.
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #223533 05:41 PM, 21 Jun 2021
    И там ещё прикол, что часть операций (мутации, создания таблиц, ещё что-то) могут в бекграунд уйти и с таумаутом и когда-то закончится)
  • Спасибо, это socket_timeout. Через settings не нашел его
  • https://t.me/clickhouse_ru
  • @infoss_cto #223536 07:04 PM, 21 Jun 2021
    Добрый вечер! Кто-нибудь пробовал запускать КХ на Apple Silicon с 8GB RAM? У меня по любому поводу пишет DB::Exception: Stack size too large и Cannot set alternative signal stack for thread, errno: 12, strerror: Cannot allocate memory.

    Setting max_server_memory_usage was set to 6.40 GiB (8.00 GiB available * 0.80 max_server_memory_usage_to_ram_ratio)
    <Information> Application: Uncompressed cache size was lowered to 4.00 GiB because the system has low amount of memory
    <Information> Application: Mark cache size was lowered to 4.00 GiB because the system has low amount of memory
  • @infoss_cto #223537 07:04 PM, 21 Jun 2021
    Куда копать? Заранее спасибо!
  • @infoss_cto #223538 07:05 PM, 21 Jun 2021
    ClickHouse 21.7.1.1 with revision 54452
  • https://t.me/clickhouse_ru
    сами собирали? или это arm офф. сборка?
  • @infoss_cto #223540 07:30 PM, 21 Jun 2021
    Сам. По инструкции в документации
  • @infoss_cto #223541 07:32 PM, 21 Jun 2021
    Arm64 офф. сборка как я понял под линукс. У меня не запустилась совсем.
  • https://t.me/clickhouse_ru
    тут человек на freebsd тоже не мог запустить КХ. пролестайте чат может и решение найдете.
  • 22 June 2021 (161 messages)
  • https://t.me/clickhouse_ru
    запустить он смог
    у него через какое то время вываливался segfault и было непонятно почему
  • https://t.me/clickhouse_ru
    @Caside #223547 06:31 AM, 22 Jun 2021
    А есть ли возможность создавать вьюхи с использованием CTE?

    Если я пробую сделать что-то вроде
    CREATE VIEW temp_view AS
    (
    WITH source as
    (select * from table)
    SELECT * FROM source
    )

    То я просто получаю ошибку:
    Table schema_name.source doesn't exist (version 21.4.3.21 (official build))

    При этом в обычных запросах CTE в подобных вариантах работают нормально
  • https://t.me/clickhouse_ru
    Это вроде пофиксили в 21.5
  • Fix CTE usage in view definition by amosbird · Pull Request #22657 · 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...

  • skip_unavailable_shards ПОЧТИ норм сработал =)
    clusterAllReplicas работает только если на том хосте где произходит запуск таблица есть, когда нет то падает.
    видимо в локальную он ходит не remote
  • https://t.me/clickhouse_ru
    @emazurova #223559 08:51 AM, 22 Jun 2021
    Привет!
    Пытаюсь создать dictionary на основе таблицы из mysql. Там есть два поля: id и информация. Недавно в mysql id с числа поменяли на binary(16), и теперь получается, что ключ в словарях в CH тоже должен быть строкой, но CH такое не поддерживает. Подскажите, есть ли какие-то решения для таких проблем?
  • https://t.me/clickhouse_ru
    Есть
    CREATE DICTIONARY (
    field1 String,
    field2 String
    ...
    )
    PRIMARY KEY field1, field2
    https://clickhouse.tech/docs/ru/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure/
    Ключ и поля словаря | Документация ClickHouse

    Ключ и поля словаря Секция <structure> описывает ключ словаря и поля, доступные для запросов. Описание в формате XML: <d

  • https://t.me/clickhouse_ru
    Забавность
  • https://t.me/clickhouse_ru
    Оба поля сделать ключами не получится, мне кажется. Потом получится, что надо брать значение по ключу, а ключ и есть значение. То есть у меня будет:
    CREATE DICTIONARY (
    id String,
    info String
    ...
    )
    PRIMARY KEY id, info
    А потом, если использовать dictGetString, то получится, что мне нужно info, чтобы получить info
  • нужен setting force_remote_for_localhost
  • https://t.me/clickhouse_ru
    Да в целом можно создать отдельный remote_servers. с айпи 127.0.0.2
  • https://t.me/clickhouse_ru
    Используйте COMPLEX_KEY_* layout
  • КХ не поймет что это локальный?
  • там как бы вся подсеть локальная просто...
  • https://t.me/clickhouse_ru
    Угу, была бага-фича на эту тему

    https://github.com/ClickHouse/ClickHouse/issues/23504
    Make is_local recognize loopback addresses 127.0.1.1 · Issue #23504 · ClickHouse/ClickHouse

    127.0.1.1 is used in ubuntu / debian by default in /etc/hosts for fqdn. Due to the fact that address don't literally match the address of network interface isLocal fails to detect that addr...

  • https://t.me/clickhouse_ru
    @unamedrus #223570 09:08 AM, 22 Jun 2021
    Точнее там другой адрес 127.0.1.1
  • ну вот, после того как там починят, этот хак поломается
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223572 09:20 AM, 22 Jun 2021
    Всем привет. Я прошу прошения за такой вопрос. А как сменить имя пользователя и пароль в базе данных? Все перелапатил но без результатно.
  • https://t.me/clickhouse_ru
    Как пользователь создавался, с помощью xml?
  • https://t.me/clickhouse_ru
    Создавался при установке базы на комп
  • https://t.me/clickhouse_ru
    Создавался каким образом
  • https://t.me/clickhouse_ru
    При установке базы запросил пароль но не имя пользователя. А имя пользователя теперь пустое. Я новичок в ClickHouse и сильно не разбираюсь
  • https://t.me/clickhouse_ru
    Это пароль для default пользователя
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223578 09:25 AM, 22 Jun 2021
    Да
  • https://t.me/clickhouse_ru
    @unamedrus #223579 09:25 AM, 22 Jun 2021
    смотрите его в
    /etc/clickhouse-server/users.xml
    /etc/clickhouse-server/users.d/*
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Он не даёт создать словарь, если все поля, которые объявлены, указаны в PRIMARY KEY. Получаю ошибку DB::Exception: Dictionary has no attributes defined
    Если добавить ещё одно дополнительное поле, то получаю ошибку, так как этого поля нет в mysql источнике Exception: Unknown column 'test' in 'field list'
  • https://t.me/clickhouse_ru
    Зачем вам такой словарь тогда?
  • https://t.me/clickhouse_ru
    @unamedrus #223583 09:27 AM, 22 Jun 2021
    может вы просто хотите два словаря создать?
  • https://t.me/clickhouse_ru
    @emazurova #223584 09:29 AM, 22 Jun 2021
    Нет, мне нужен словарь, источник которого mysql таблица. Но в ней поменяли id с типа int на binary(16). То есть раньше я по id получала какую-то информацию, а сейчас не могу, так как ключ стал строкой
  • @VladimirKoptev #223585 09:30 AM, 22 Jun 2021
    всем привет.
    может, кто подскажет.
    на 21.1.7.1 иногда в докере ловим Received signal Segmentation fault (11). не в докере - всё ок (или просто везло).
    очень похоже на https://github.com/ClickHouse/ClickHouse/issues/25202, где советуют на 21.3 обновиться. есть в этом смысл? или на 21.3 тоже сегфолты кто-нить ловил?
    clickhouse server start fatal. · Issue #25202 · ClickHouse/ClickHouse

    2021.06.11 18:57:22.349719 [ 25903 ] {} BaseDaemon: Received signal 11 2021.06.11 18:57:22.349894 [ 26078 ] {} BaseDaemon: ######################################## 2021.06.11 18:57:22.349945 [ 2607...

  • https://t.me/clickhouse_ru
    В чем проблема, создать словарь используя только одну колонку как ключ?
  • https://t.me/clickhouse_ru
    В том, что эта колонка больше не int, а CH не даёт создавать словари с ключом по одной колонке не числового типа
  • https://t.me/clickhouse_ru
    Вы можете создать, просто укажите как ключ тупл из одной колонки
  • https://t.me/clickhouse_ru
    @unamedrus #223589 09:32 AM, 22 Jun 2021
    это работает
  • https://t.me/clickhouse_ru
    @unamedrus #223590 09:32 AM, 22 Jun 2021
    tuple(column_x)
  • https://t.me/clickhouse_ru
    Позволяет, вам уже написали что надо использовать complex_key_* лейауты
  • https://t.me/clickhouse_ru
    @emazurova #223592 09:33 AM, 22 Jun 2021
    А, хорошо, спасибо большое! Я, видимо, просто не до конца поняла, что мне объясняли
  • https://t.me/clickhouse_ru
    ЕМНИП тупл надо только в dictGet, при создании словаря можно без него
  • https://t.me/clickhouse_ru
    Ну мб, просто если говорят, что не дает создать, кто знает :)
    Хуже не будет
  • https://t.me/clickhouse_ru
    @ascher #223595 09:40 AM, 22 Jun 2021
    коллеги, доброго дня! подскажите, пожалуйста, есть ли какой перечень показателей, при которых стоит задуматься о переводе zabbix с mysql или postgresql на clickhouse? столько-то сигналов в секунду, столько-то хостов и проч. или это необходимо сугубо при ощутимом падении производительности?
  • https://t.me/clickhouse_ru
    Это я думаю лучше идти в чатик по глабберу
  • @subotic0 #223597 09:43 AM, 22 Jun 2021
    Привет, подскажите в чем может быть проблема, спустя ~5 минут падает контейнер по оом, в логах кх
    {} <Fatal> Application: Child process was terminated by signal 9 (KILL). If it is not done by 'forcestop' command or manually, the possible cause is OOM Killer (see 'dmesg' and look at the '/var/log/kern.log' for the details).

    в kern.log
    Task in /docker/ac246e933d20a7dbef60fd5e7af264b4ff809692adf2d379cc033b53cb483a77 killed as a result of limit of /docker/ac246e933d20a7dbef60fd5e7af264b4ff809692adf2d379cc033b53cb483a77
    Jun 22 12:13:08 db kernel: [362545.294885] memory: usage 1048576kB, limit 1048576kB, failcnt 157
    Jun 22 12:13:08 db kernel: [362545.294887] memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0
    Jun 22 12:13:08 db kernel: [362545.294888] kmem: usage 8236kB, limit 9007199254740988kB, failcnt 0
  • https://t.me/clickhouse_ru
    лимит ставили по памяти, скок вообще памяти доступно?
  • https://t.me/clickhouse_ru
    Спасибо помогло.
  • Начал проверять на данных побольше, странное поведение, не везде помогает(
    некоторые партиции нормально аттачит, там данные в правильном порядке. Некоторые в неправильном.
    Может ли быть такое из-за того, что когда копировали данные партов, файлы внутри не в том порядке записались и от этого сменился их порядок?
  • https://t.me/clickhouse_ru
    нет
  • и тогда еще вопрос, attach включает мержи независимо от того, были они выключены или нет.
    Может ли это мешать, если я делаю сразу несколько аттачей партов. Или перед каждым аттачем надо делать stop merges?
  • https://t.me/clickhouse_ru
    я честно говоря не знаю включает ли аттач мержи если их стопали специально
  • в доке так написали
    https://clickhouse.tech/docs/ru/sql-reference/statements/system/#query_language-system-stop-merges
    SYSTEM | Документация ClickHouse

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

  • @vvvjhaq #223606 10:52 AM, 22 Jun 2021
    или только на attach таблицы, не партиции?
  • https://t.me/clickhouse_ru
    @rostish #223607 11:00 AM, 22 Jun 2021
    Коллеги, всем доброго дня.
    Есть следующая проблема. Реал тайм система, которая на основе входного джейсона генерит набор sql, которые расчитывают показатели. Встал вопрос балансировки и управления ресурсами.

    Как оценить сложность задачи и определить потребление ресурсов кликхауса?

    Что пробуем:
    - Оценить сложность формульно - не получилось. Json довольно сложный, много несвязанных объектов.
    - Собрать датасет с фичами, понять как и какие ресурсы тратятся, сколько времени это занимает и тд. Обучить модель предсказаний. - Какие-то результаты есть, но довольно много времени сбор и формирование датасетов занимает. Есть ощущение, что сложный путь, который не факт что приведет к решению.

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

    Может есть более простые решения, методики?
  • https://t.me/clickhouse_ru
    Вообще cloudflare пытались оценить с помощью машин лернинга планирование расширения кластеров.

    https://blog.cloudflare.com/clickhouse-capacity-estimation-framework/
  • https://t.me/clickhouse_ru
    @unamedrus #223609 11:10 AM, 22 Jun 2021
    Но вы хотите решить еще более сложную задачу, как по мне
  • https://t.me/clickhouse_ru
    @it_haisenberg #223611 11:31 AM, 22 Jun 2021
    Ребят.... я даже на знаю как это... Вообщем есть табличка в кликхаусе у которой есть поле FixedString(3) допустим geo

    Есть табличка в постгресе у которой тоже есть поле geo которое просто text.

    И есть голанг который забирает из кх и кладёт в постгрес...

    И на пустых значениях из КХ в постгре вылетают ошибки вида
    ERROR: invalid byte sequence for encoding "UTF8": 0x00 (SQLSTATE 22021)
    И я вот не пойму как это адекватно обработать и с точки зрения чего вообще ;D

    То есть я могу в goкоде на все FixedString поля в КХ делать на всякий случай
    strings.ReplaceAll(some_field, "\x00", "")
    Но чё-т как-то.. хз, такое себе помоему

    Или лучше в SELECT для КХ навесить на geo поле toStringCutToZero (или есть другой метод преобразования) ?
  • https://t.me/clickhouse_ru
    судя по сообщению об ошибка это не ошибка clickhouse
    у вас там точно по дороге где нибудь ODBC словаря какого то не завалялось
  • https://t.me/clickhouse_ru
    Я не говорю что кх ошибка, ошибка в постгре
  • @dj_mixer #223614 11:37 AM, 22 Jun 2021
    всем доброго времени, как безболезненно заменить макрос <replica> (были ИП хочу написать имена/алиасы хостов).
    при замене предсказуемо все таблицы не аттачатся с
    2021.06.22 11:17:18.982265 [ 2680 ] {} <Error> Application: Coordination::Exception: No node, path: ....

    я почему то думал что в метадате хранятся не макросы а уже подставленные значения. Кто подскажет, почему не так?
  • https://t.me/clickhouse_ru
    тогда надо смотреть в golang скрипт
    если там выбирается из clickhouse
    то есть где то промежуточная структура в golang перед тем как положить в postgres
    в нее надо глядеть для этого поля там точно пустая строка или что-то еще
  • https://t.me/clickhouse_ru
    @l3iml #223620 11:50 AM, 22 Jun 2021
    астанавитесь!
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    Блин, я думал я понятно всё описал...
  • Я как-то решал такую задачу. Попугаев там много.

    от стороны железа
    Размер/скорость дисков, производительность процессора / количество штук, размер/скорость памяти, пропусная спопобность сети.

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

    Короче можно с обеих сторон перевести всё в попугаи и рассчитать примерно (для сферического коня в вакууме) как будет справляться конкретное железо с конкретным юзкейсом.
  • https://t.me/clickhouse_ru
    Даже пустая FixedString в КХ это 3 байта, и я так понимаю на промежуточном моменте при выгрузке они принимают dbl \x00\x00\x00 и при попытке вставить такое значение в постгре, постгре вылетает с ошибкой из за как бы NULLстроки

    У меня скорее вопрос на каком моменте FixedString лучше конвертировать, можно ли из КХ сразу достать String из поля FixedString(3) и тд
  • @mfilimonov #223627 12:02 PM, 22 Jun 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    Можно в скриптах все заменить на значение старого макроса
  • https://t.me/clickhouse_ru
    @75280400 #223630 12:08 PM, 22 Jun 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    ну да, там автодополнение

    toString()
    можно сделать
  • @mfilimonov #223633 12:11 PM, 22 Jun 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #223634 b o t 12:11 PM, 22 Jun 2021
    Total messages: 223633
  • https://t.me/clickhouse_ru
  • а вообще есть идеи зачем держать в сгенерированных metadata макро-placeholders, учитывая что они используются только в аргументах в RMT и намертво женятся на нодах ЗК после создания.

    КМК изменение макросов не должно вести к таким последствиям от слова ну совсем...
  • https://t.me/clickhouse_ru
    В новых версиях кх при создании таблицы разрешает макросы вида database-table, за реплику не уверен
  • https://t.me/clickhouse_ru
    да
  • @subotic0 #223640 12:29 PM, 22 Jun 2021
    Подскажите, зачем\для чего нужен файл docker_related_config.xml? Есть разница закидывать этот файл, или эти же настройки установить в config.xml?
  • https://t.me/clickhouse_ru
    В доках рекомендуют не трогать дефолтные config.xml и users.xml, а все свои кустомные настройки запихивать в файлы в дире conf.d/
  • https://t.me/clickhouse_ru
    а вы его содержимое посмотрите

    по умолчанию стандартный конфиг который идет в .deb пакетом делает listen 127.0.0.1
    что логично для standalone сервера

    для docker нужен 0.0.0.0 или ::
  • https://t.me/clickhouse_ru
    лучше сделайте volume ваших специфичных настроек внутрь /etc/clickhouse-server/conf.d
  • ну так о чём я?
    создать таблицу
    alter table rename
    ??? (словить ошибку на старте )
  • https://t.me/clickhouse_ru
    Ну в новых версиях RENAME корректно отработает :)
  • корректно это как?
    - меняет путь в ЗК?
    - заменяет макрос на старое имя таблицы?
  • https://t.me/clickhouse_ru
    Нет, в момент создания таблицы макросы заменяются на значения макросов (точно для database, table)
  • ok, т.е. некоторые заменяются, некоторые нет ) я к тому что все таки "правильно" заменять все... изменение конфига не должно ронять метадату... проверим в 21.6
  • https://t.me/clickhouse_ru
    за replica я не уверен :)
  • Апну, мб у кого-то будут идеи)
  • https://t.me/clickhouse_ru
    можно сначала сделать OPTIMIZE FINAL а потом аттачить :)

    А вообще достаточно аттачить в порядке возрастания block_min_block_max number
  • а как мне поможет optimize final на данные, которые лежат в detached? Все данные, которые должны свернуться всегда лежат в одной партиции.

    Вот второе предположение сейчас опробую, спасибо
  • https://t.me/clickhouse_ru
    А, те вы хотите приатачить из detached, понял

    Я бы попробовал на кошках сначала, в временной таблице
  • >А вообще достаточно аттачить в порядке возрастания block_min-block_max number
    Извиняюсь, уточню, block_min отнять block_max и в порядке возрастания этого числа?
  • https://t.me/clickhouse_ru
    Нет, если упростить то в порядке возрастания block_min.

    тк в кх не должно быть пересекающихся этих интервалов
  • да я тут уже 2-3 дня тестирую это и на кошках и на собаках
    вроде сначала stop/start merges помогло на маленьой таблице, перешел к тестам на прод данных и не поехало(
    потом перепроверил на маленьком снова и понял, что не работало и там, просто получился правильный порядок аттача.
  • да, все гениальное просто)
    спасибо Вам
  • https://t.me/clickhouse_ru
    @anacriel #223659 01:34 PM, 22 Jun 2021
    Добрый день! Есть вопрос по еще не вышедшему коннектору ClickHouse от Altinity для Tableau https://docs.altinity.com/operationsguide/integrations/clickhouse-and-tableau/tableau-desktop-with-clickhouse/. Проблема следующая: в случае некоторых расчетов расчетов в Tableau и при группировке по некоему полю возникает ошибка:

    Bad Connection: Tableau could not connect to the data source.
    Error Code: B19090E0
    HTTP status code: 501
    Received error:
    Code: 48, e.displayText() = DB::Exception: JOIN ON does not support OR.

    В этом OR поля join’а проверяются на null. Такая проблема уже встречалась:
    https://community.tableau.com/s/question/0D54T00000C6XDNSA3/tableau-still-generate-join-with-tdc-and-sqlsql92relationaljoinoperators-set-to-0
    Там предлагается кастомизировать ODBC драйвер через некие параметры так, чтобы проверки на null не проводилось, но по треду не понятно, сработало ли. Хочу узнать, в коннекторе от Altinity такие ситуации обрабатываются? Спасибо
    Connect Tableau Desktop to ClickHouse

    Connect your Tableau Desktop application to ClickHouse

  • https://t.me/clickhouse_ru
    @fantom0005 #223661 01:55 PM, 22 Jun 2021
    Ребята, всем привет.
    Тут столкнулись с проблемой потребления большого к-ва памяти при join таблиц.
    Есть 2 большие ReplacingMergeTree таблицы с партициями по месяцм. Эти таблицы джойнятся во вьюхе(left join).

    Когда пытаешься селектить данные из вьюхи с date between, кликхаус выбирает все данные в память, джойнит, а потом уже фильтрует данные по дейт ренджу. Все согласно документации:
    При запуске JOIN, отсутствует оптимизация порядка выполнения по отношению к другим стадиям запроса. Соединение (поиск в «правой» таблице) выполняется до фильтрации в WHERE и до агрегации. Чтобы явно задать порядок вычислений, рекомендуется выполнять JOIN подзапроса с подзапросом.

    Но такой подход потребляет очень большое к-во оперативной памяти.

    Вопрос: в будущем планируется ли оптимизация планировщика запросов, чтобы он добалял фильтрацию в таблицы, которые джойнятся?
  • https://t.me/clickhouse_ru
    На сколько это важная и сложная задача для контрибьютеров clickhouse?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #223661 #223665 02:00 PM, 22 Jun 2021
    Если известны условия фильтрации, то можно (и лучше) сразу вместо join table2 делать join (select field1, field2 from table2 where ...).
  • https://t.me/clickhouse_ru
    Спасибо. Но у нас другой кейс, очень нужно сделать вьюху, в которой будут джойниться таблицы, а потом менять условия селекта
  • https://t.me/clickhouse_ru
    это он? https://github.com/Altinity/clickhouse-tableau-connector-odbc
    тогда лучше им тикет на гитхабе завести
    GitHub - Altinity/clickhouse-tableau-connector-odbc: Tableau connector to ClickHouse using ODBC driver

    Tableau connector to ClickHouse using ODBC driver. Contribute to Altinity/clickhouse-tableau-connector-odbc development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #223666 #223668 02:07 PM, 22 Jun 2021
    Если допустимо отставание в актуальности данных, можно ещё вместо фильтрации сделать таблицу типа Set/Join, обновлять её по мере необходимости и работать с ней вместо джойна целой таблицы.
    Мне для обновления статистики раз в сутки такой вариант подошёл и сэкономил очень много времени.
  • https://t.me/clickhouse_ru
    Видимо да. Спасибо
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    у нас около 70тыс таблиц)
  • https://t.me/clickhouse_ru
    а откуда они взялись эти 70 тыщ таблиц?
    это из MySQL один в один перетекли данные?

    зачем так вообще?
  • https://t.me/clickhouse_ru
    Выглядит как хороший вариант, спасибо. Но как такой вариант будет работать, если мы подключим BI tool типа Tableau или Looker? Будет ли вообще работать, т.к. SQL выглядит кастомным
  • https://t.me/clickhouse_ru
    Храним репорты клиентов, много клиентов у каждого много репортов
  • https://t.me/clickhouse_ru
    Ну, это к сожалению уже другой вопрос :)
  • https://t.me/clickhouse_ru
    Сейчас задумываемся делать кастомные трансформации через DBT и визуализировать эти трансформации в BI Tool
  • https://t.me/clickhouse_ru
    нельзя хранить в одной общей таблице с client id в PK?
    и сделать RBAC и row policy чтобы вытаскивать только то что можно...
  • https://t.me/clickhouse_ru
    У каждого отчета отдельная структура и гранулярность данных
  • https://t.me/clickhouse_ru
    Насколько эта структура отлична друг от друга?
  • https://t.me/clickhouse_ru
    Можете попробовать включить эту опцию?
  • https://t.me/clickhouse_ru
    насколько я понимаю условия которые указываются в WHERE у вьюхи накладываются на результаты уже в самом конце, а не пробрасываются внутрь вьюхи. так что даже если сделают какую-то оптимизацию для джойнов, то при построении вьюхи сначала загрузятся все данные, а потом уже в самом конце отфильтруются за один день.
  • https://t.me/clickhouse_ru
    Лучше всего завести issue на github
    Либо прислать

    Tableu version
    ODBC driver version
    ClickHouse table DDL
    Tableau workbook

    На dborovtsov@altinity.com
  • https://t.me/clickhouse_ru
    сильно различаются, в одном репорте может быть 30 колонок, в другом 1000
    Зависит от дата соурса и к-ва динамических метрик в нем настроенных
  • https://t.me/clickhouse_ru
    Я б на вашем месте вначале попробовал бы узнать наличие дублей (не помню, вы говорили какой движок у таблиц или нет), это раз. Динамические метрики, но суть их одна и та же? Вынести в таблицу и переделать схему хранения
  • https://t.me/clickhouse_ru
    Такая же проблема будет, если просто взять SQL вьюхи и дописать where в конце.
    Вьюха - это же просто сохраненный SQL.
    Я это к тому, что бд должна найти оптимальный план запроса, чтобы эффективно достать данные.
  • https://t.me/clickhouse_ru
    У наз ReplacingMergeTree, дублей либо нет, либо их совсем немного.
    Что вы имеете ввиду Вынести в таблицу и переделать схему хранения?
  • https://t.me/clickhouse_ru
    В прямом смысле, рассмотреть с точки зрения бизнес-логики верны ли ваши схемы, и можно ли информацию, там имеющуюся, переделать.
    ReplacingMergeTree? Ну хз, если задан неправильный ORDER BY key, да даже при правильно заданном, юзер может искать пробовать одну и ту же инфу
  • https://t.me/clickhouse_ru
    С точки зрения бизнес логики и здравого смысла у нас правильная схема данных. Все данные в одну таблицу запихать непоулчится.
    И это не решает вопрос с неоптимальным планом queery при join таблиц
  • https://t.me/clickhouse_ru
    Ммм, я б поспорил,да не буду. Я б задался вопросом: а правильно ли выбор пал на Кликхаус в вашем случае? Но менять что-либо поздно. :)
  • https://t.me/clickhouse_ru
    Ну не прям поздно) просто очень дорого)
  • https://t.me/clickhouse_ru
    важная, только делать особо некому
  • https://t.me/clickhouse_ru
    @alexander_trofimov #223693 05:05 PM, 22 Jun 2021
    Подскажите, пожалуйста, как можно такой запрос переписать:

    SELECT *
    FROM ch_table ct
    INNER JOIN mysql_table mt ON mt.cid = ct.cid
    WHERE like(ct.url, mt.pattern);

    ругается: Argument at index 1 for function like must be constant

    в целом, из доки ясно, что надо передавать строку, но может быть есть какой-то workaround?
  • https://t.me/clickhouse_ru
    никак к сожалению, и через match тоже не получится
    там особенность этих функций в том что они там чуть ли на JIT код генерируют чтобы скорость LIKE была пара гигабайт в секунду на ядро...
  • https://t.me/clickhouse_ru
    @md_nguyen #223695 05:13 PM, 22 Jun 2021
    Здравствуйте!

    Подскажите, пожалуйста, в Clickhouse есть возможность конвертировать String в JSON?

    Я что-то не нашёл в документации такую функцию, может плохо искал.

    Спасибо.
  • https://t.me/clickhouse_ru
    @alexander_trofimov #223696 05:13 PM, 22 Jun 2021
    😢спасибо за помощь!
  • https://t.me/clickhouse_ru
    clickhouse в настоящее время не имеет встроенного бинарного типа для JSON

    you can extract some parts of JSON via JSONExtract* functions
    https://clickhouse.tech/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
    https://github.com/ClickHouse/ClickHouse/pull/24148

    https://github.com/ClickHouse/ClickHouse/pull/23932
    Jsonpath by l1tsolaiki · Pull Request #24148 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Спасибо.
  • https://t.me/clickhouse_ru
    @maxmednikov #223702 06:10 PM, 22 Jun 2021
    привет всем
    подскажите пожалуйста, в логах 21.6 вижу что на 9005 порту слушает postgre interface. попытка подключится к нему (попробывать) приводит к SSL ошибке и "authentication method is not support". это work in progress или что то нужно знать об этом? интересует выдача больших log stream таблиц через graphql, возможность работаь через postgre протокол позволила бы очень легко это сделать
  • https://t.me/clickhouse_ru
    @graid2030 #223706 06:41 PM, 22 Jun 2021
    Есть логи такого вида

    | messageId | domain | valid | eventId |
    |-----------|-------------------|-------|---------|
    | 1 | somedomain.com | | 1 |
    | 1 | | | 2 |
    | 2 | anotherdomain.com | | 1 |
    | 2 | | | 2 |
    | 2 | | 1 | 3 |

    Мне зачастую требуется делать выборки к примеру для eventId = 2, при этом получать domain и valid по messageId. C join как и пологается запросы безбожно тормозят.
    Какие есть варианты? Матерлизованные пердставления, еще что-то?
  • https://t.me/clickhouse_ru
    что такое "domain и valid по messageId"?
  • https://t.me/clickhouse_ru
    @graid2030 #223708 06:45 PM, 22 Jun 2021
    SELECT domain, valid, … FROM log LEFT JOIN log USING messageId
  • https://t.me/clickhouse_ru
    @graid2030 #223709 06:46 PM, 22 Jun 2021
    Если посмотреть на табличку выше, там у eventId=2 не заполнены domain и valid, н опо messageId  мы можем их узнать
  • https://t.me/clickhouse_ru
    не понятно, этот запрос без многоточие упадёт, тк не понятно, из какой таблицы брать столбец
    но, кажется, я понял логику:
    1. отфильтровать по eventId, взять messageId
    2. для каждого messageId взять domain и valid, которые не null/'', верно?
  • https://t.me/clickhouse_ru
    Это просто как пример, брать конечно из таблиыи котора приджойнена
  • https://t.me/clickhouse_ru
    @graid2030 #223712 06:54 PM, 22 Jun 2021
    Основной вопрос как не юзать join при этом
  • https://t.me/clickhouse_ru
    @graid2030 #223713 06:56 PM, 22 Jun 2021
    И делать что-тов вроде SELECT domain, count(*) FROM log WHERE eventId = 2 GROUP BY domain
  • https://t.me/clickhouse_ru
    основной вопрос в том, что вы не сказали, что хотите
    то, что я написал выше совпадает с вашими ожиданиями?
  • https://t.me/clickhouse_ru
    @graid2030 #223715 07:07 PM, 22 Jun 2021
    Да, и сейчас это работает через join, но очень медленно
  • https://t.me/clickhouse_ru
    @TigProg #223716 07:17 PM, 22 Jun 2021
    сорри, что без запроса, попробуйте следующее
    1. группировка по messageId
    2. groupArray(domain) as domainArray и аналогично для valid, eventId
    3. фильтр has(eventIdArray, 2) например
    4. извлечь из domainArray и validArray то самое единственное значение
  • https://t.me/clickhouse_ru
    @809096964 #223719 07:40 PM, 22 Jun 2021
    Коллеги, прошу подсказать, я хочу скопировать таблицу с немного другими ключами сортировки и небольшим преобразованием нескольких полей.... Вопросы, я учитываю новые ключи сортировки при создании новой таблицы, а преобразование полей учитываю при копировании (инсерте) - этого достаточно и автоматически проставятся индексы и даные при копировании будут размещаться в новой таблице с учетом новых ключей сортировки или индексы надо прописывать отдель после копирования?
  • https://t.me/clickhouse_ru
    @809096964 #223720 07:41 PM, 22 Jun 2021
    заранее спасибо
  • https://t.me/clickhouse_ru
    @809096964 #223721 07:43 PM, 22 Jun 2021
    где эффективно можно посмотреть какие индексы используются при запросе?
  • set send_logs_level='trace';
    в clickhouse-client
  • @dj_mixer #223723 07:46 PM, 22 Jun 2021
    в начале пишет reading X parts/marks out of Y
  • https://t.me/clickhouse_ru
    @809096964 #223724 07:52 PM, 22 Jun 2021
    С чем связаны вопросы - есть таблица с ключами сортировки order by syslogdate, ..., ..., ..., timestamp, запрос типа select ... from ... where syslogdate < ... and syslogdate >... and timestamp <... and timestamp >... order by eventid desc limit 100 - делает фулскан по всему диапазону syslogdate и timestamp из запроса, а запрос типа select ... from ... where syslogdate < ... and syslogdate >... and timestamp <... and timestamp >... order by syslogdate desc, timestamp desc, eventid desc limit 100 - ищет начиная с последней даты диапазона и если там есть 100 записей, в другие не лезет
  • insert-select будет сортировать данные в новой таблицу по конфигурации новой таблицы
  • https://t.me/clickhouse_ru
    проблема в том, что в первом случае скорость выборки в 2 раза быстрее чем во втором - почему?, и если значение timestamp ближе к вечеру - результат во втором случае получается медленне..., стоит ли вводить поле с градацией по часам, чтобы искпла за последний час... т.к. все запросы с limit
  • нужны ддл и запросы.
    но в целом по первому ключу из ключей сортировки всегда должно отсеиваться...
  • https://t.me/clickhouse_ru
    @809096964 #223728 07:56 PM, 22 Jun 2021
    спасибо за подсказки
  • последний (timestamp) погоды делать не будет
  • думаю просто данные так легли... или eventId тоже в сортировке но сильно раньше чем timestamp
  • https://t.me/clickhouse_ru
    в одной syslogdate может быть до млрд событий, а нужно всегда от силы не больше 100К, делать поле с градацией по часам?
  • https://t.me/clickhouse_ru
    нет, eventid уникальное на 100% и не ставили в сортировку
  • можно
    order by syslogdate, toHour(timestamp), ... все остальное
    попробовать
  • @dj_mixer #223734 08:00 PM, 22 Jun 2021
    тогда при наличии в условии toHour(timestamp) ненужные часы читаться не будут
  • https://t.me/clickhouse_ru
    это в запросах или при создании новой таблицы?
  • https://t.me/clickhouse_ru
    И на этом огромное спасибо, попробую так
  • новой
  • https://t.me/clickhouse_ru
    спсб, буду пробовать
  • 23 June 2021 (130 messages)
  • @1875098078 #223745 02:44 AM, 23 Jun 2021
    https://t.me/MacSoftwareFree/201
    This is a channel that focuses on Mac free cracking software. They are free forever and are updated weekly.
    Mac software crack free

    Fast, lightweight and easy-to-use PDF editor Easily complete PDF editing, reading, annotating, editing text, adding photos, filling in forms, signing contracts, merging PDF documents, and encryption protection on MAC with just a few clicks, an unprecedented experience. The latest free cracked version, and it is free forever!

  • https://t.me/clickhouse_ru
    @Caside #223746 03:08 AM, 23 Jun 2021
    А как правильно кастануть пустуюу колонку нужного типа?
    что-то вроде select cast(null as String) as name?
  • https://t.me/clickhouse_ru
    @Caside #223747 03:10 AM, 23 Jun 2021
    или тут следует использовать cast('' as String) и cast(0 as UInt64)?
  • https://t.me/clickhouse_ru
    какого типа "пустая" колонка сейчас?
    и что вы хотите получить в итоге?
    Nullable или обычный скалярный тип?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #223748 #223749 03:25 AM, 23 Jun 2021
    желательно Nullable. Так значит можно б ыло кастовать null as Nullable(String), например, точно, дошло
  • https://t.me/clickhouse_ru
    так, еще раз что такое "пустая колонка"?
    она есть в таблице или нет?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #223750 #223751 03:48 AM, 23 Jun 2021
    Её нет в одной таблице, но есть в другой, хочу наделать балванок таких, чтобы потом сделать юнион
  • https://t.me/clickhouse_ru
    в той таблице в которой она есть, она имеет тип Nullable?

    тогда лучше без CAST а сразу toNullable('')
    просто CAST еще типы выводит а потом только toXXX вызывает внутри
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #223752 #223753 04:23 AM, 23 Jun 2021
    А если не Nullable? Например, просто select '' может восприняться не как String
  • https://t.me/clickhouse_ru
    если не nullable то просто '' AS column
    в таблице которой нет

    если пустая строка '' у вас значащее значение и вам нужен Null
    тогда
    Null AS column
    в пустой таблице
    и
    toNullable(column) AS column
    в полной
    поздравляю, вы напарываетесь на тормоза в особенности реализаций Nullable в clickhouse

    и еще почитайте про join_use_null
    https://clickhouse.tech/docs/en/operations/settings/settings/#join_use_nulls
    он не просто так выключен по умолчанию
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @75280400 #223755 05:02 AM, 23 Jun 2021
    Добрый день, как в КХ сгенерировать список дат ?
  • Select now()+interval number day from numbers(10);
    Попробуйте
  • https://t.me/clickhouse_ru
    @75280400 #223758 05:06 AM, 23 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    @vyacheslavmalko #223759 05:12 AM, 23 Jun 2021
    Ребят, а подскажите как в кликхаусе отключить query_log ?

    Прописываю /etc/clickhouse-server/config.d/logs.xml
    <?xml version="1.0"?>
    <yandex>
    <query_log>
    <log_queries>0</log_queries>
    </query_log>
    </yandex>

    Перезапускаю кликхайс, смотрю SELECT name, value FROM system.settings WHERE name LIKE '%log_queries%';
    ┌─name──────────────────────────────┬─value───────┐
    │ log_queries │ 1 │
    │ log_queries_min_type │ QUERY_START │
    │ log_queries_min_query_duration_ms │ 0 │
    │ log_queries_cut_to_length │ 100000 │
    └───────────────────────────────────┴─────────────┘

    Что не так?
  • <query_log remove="1" />
  • https://t.me/clickhouse_ru
    спасибо, но не помогло, прописал так, порестартил КХ

    root@e6d66fb4980d:/# cat /etc/clickhouse-server/config.d/logs.xml
    <?xml version="1.0"?>
    <yandex>
    <query_log remove="1" />
    <query_thread_log remove="1" />
    <trace_log remove="1"/>
    </yandex>

    смотрю значение не поменялось

    e6d66fb4980d :) SELECT name, value FROM system.settings WHERE name LIKE '%log_queries%';

    ┌─name──────────────────────────────┬─value───────┐
    │ log_queries │ 1 │
    │ log_queries_min_type │ QUERY_START │
    │ log_queries_min_query_duration_ms │ 0 │
    │ log_queries_cut_to_length │ 100000 │
    └───────────────────────────────────┴─────────────┘

    e6d66fb4980d :) SELECT count() FROM system.query_log;

    SELECT count()
    FROM system.query_log

    Query id: 83410882-01af-4f3b-a6ab-e13ca4d9da12

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

    1 rows in set. Elapsed: 0.004 sec.
  • https://t.me/clickhouse_ru
    ну так это =)) таблица то никуда не денется =)

    она раньше была создана
    DROP TABLE system.query_log
    и добавьте /etc/clickhouse-server/users.d/disable_log_queries.xml

    <yandex><profile><default><log_queries>0</log_queries></default>

    а чем вам log_queries мешает?
    полезная же таблица. потом очень много интересного из нее можно узнать...
  • https://t.me/clickhouse_ru
    а query_thread_log, и query_thread_log так же получается отключаются?
    отключить нужно для оптимизации, при необходимости можно и включить обратно.
  • 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
    дак для этого TTL включите через <engine>
    чтобы данные в таблице за последнюю неделю или день были...
    вот тут пример есть в котором все показано
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-query-log
    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
    @rostish #223770 05:54 AM, 23 Jun 2021
    Все привет.
    Подскажите, а можно ли получать данные об утилизации CPU ноды клика непосредственно из самого клика?
  • https://t.me/clickhouse_ru
    спасибо, посмотрю
  • https://t.me/clickhouse_ru
    можно время потраченное на разные активности посчитать через system.events_log
    дальше поделить это время на кол-во ядер ...
    получить какую то утилизацию...
    описание метрик есть тут
    SELECT * FROM system.events WHERE event ILIKE '%second%'

    или скрейпить периодически system.events
    например через prometheus
    https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-prometheus

    IMHO rusage и т.п. вещи медленно через syscall изнутри приложения снимать
    поэтому утилизацию CPU по процессам проще посчитать снаружи
    какая у вас система мониторинга?
    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
    @rostish #223773 06:24 AM, 23 Jun 2021
    Забикс, мы снимаем с помощью него. Но он усредняет за 5 минут, довольно большая гранулярность.
    У нас поток задач большой идет, которые превращаются в sql query, ищем варианты как оптимизировать нагрузку, чтобы в потолок не улетала утилизация.
    К примеру, видим 100% нагрузку, не берем больше задач из очереди, нагрузка снижается, начинаем набирать.
  • https://t.me/clickhouse_ru
    Похоже, нужно смотреть
    UserTimeMicroseconds =185093080000
    Только я не понял, как эту цифру поделить, чтобы получить утилизацию в процентах. Можете по подробнее?
  • https://t.me/clickhouse_ru
    слушайте. 100% CPU для clickhouse это не страшно, он старается отожрать CPU по максимуму чтобы быстрее результат отдать и с усреднением до 5 минут вплолне нормальная петля обратной связи, до 0.95 например, чтобы была

    IMHO это регулируется обычно все таки степенью паралелелизма (кол-вом воркеров которые шлют запросы)
    и длинной очереди из которой воркеры разгребают
  • https://t.me/clickhouse_ru
    поделите ее на SELECT count() FROM system.asynchronous_metrics WHERE metric LIKE 'CPUFrequencyMHz%'
  • https://t.me/clickhouse_ru
    Да, я понимаю, но там такие 100%, что аж среднее время выполнения эталонной задачи начинает в разы увеличиваться.
    Поток представляется собой сейчас следующее - есть клиенты, для каждого из них статический параметр 20 задач, когда 10-20 клиентов одновременно запускают задачи, начинает все тормозить, именно этот момент и хотим оптимизировать.
    Оценить сложность задачи мы пробуем, но это сложно, мы уже и МЛ тестируем, но структура фич слишком размашистая.
    Итого пробуем создать некий backpressure
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @kuzmin_m #223780 06:54 AM, 23 Jun 2021
    Привет. Подскажите, пожалуйста. Я планирую схему таблички и есть вопрос про массивы.
    Есть табличка с, скажем, 3мя массивами равной длины: ключ, значение1, значение2
    Я хочу получить 3 массива, у которых key like 'foo%bar'.
    Есть функция arrayFilter, но она вернет только первый массив, а я бы хотел получить все.

    Или просто вызвать 3 arrayFilter:
    arrayFilter(key -> key like "foo%bar", key),
    arrayFilter((v, key) -> key like "foo%bar", value1, key),
    arrayFilter((v, key) -> key like "foo%bar", value2, key),

    И я же правильно понял, что нет варианта sumMap с переменным кол-вом массивов, чтобы можно было сделать sumMap(key, value1, value2)

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

    и следите за длинной очереди
  • https://t.me/clickhouse_ru
    а какая у вас версия clickhouse?
  • https://t.me/clickhouse_ru
    Так я для этого и написал, ищу способ мониторинга из приложения, которое задачи переводит из статуса in_queue -> in_progress
    Просто из забикса брать не удобно, там обновление у нас раз в пять минут.

    Видимо, проблема в версии, в деве посмотрел - показывает, в проде нет. Обновимся.

    Прошу прощения за свою тугодумность, не понимаю, вот у меня на ноде 24 ядра, если я поделю 185093080000 / 24 = 7 712 211 666, что это за цифра?
  • https://t.me/clickhouse_ru
    надо не system.events конечный счечик делить
    а из system.events_log ProfileEvents_* инкремент счетчика делить...
  • https://t.me/clickhouse_ru
    @rostish #223786 07:09 AM, 23 Jun 2021
    понял
  • https://t.me/clickhouse_ru
    но я вам уже сказал
    бесполезную метрику включаете
    тем более если у вас clickhouse Нагружен а вы в него еще и из него же утилизацию пытаетесь посчитать

    считайте время выполнения задачи с приложения
    и тупо в приложении sleep вставляйте по трешхолду рандомный...
  • https://t.me/clickhouse_ru
    @BloodJazMan #223788 07:18 AM, 23 Jun 2021
    а в заббикс мониторьте длину очереди и триггер на нее...
  • https://t.me/clickhouse_ru
    where arrayCount(x->x like 'foo%bar', key)>0
  • https://t.me/clickhouse_ru
    если я правильно понял, то тут нужно arrayExists
    и предполагается фильтрация уже на клиенте?
    эти ключи есть почти в каждой строке. И нужно-то массивы отфильтровать, а не строки найти
  • https://t.me/clickhouse_ru
    этот момент я тоже понял, что лучше мерить из вне, не из клика, я его согласовываю с девопсами, но это может затянутся, поэтому буду использовать решение на котором можно алгоритм обкатать, источник данных в готовом сервисе заменить довольно быстро
  • https://t.me/clickhouse_ru
    тогда я не очень понял из первого сообщения что вам нужно, лучше всего показать пример на данных, как данные хранятся и что по вашему мнению должно быть на выходе запроса
  • https://t.me/clickhouse_ru
    строка1
    keys: ['foo_1_bar', 'other', 'foo']
    vals1: [1, 2, 3]
    vals2: [10, 20, 30]

    нужно из этих 3х массивов получить новые 3 массива.
    в массиве keys найти значения like 'foo%bar'
    по индексам ключей получить занчения из массивов vals1, vals2
    Результат:
    keys: ['foo_1_bar']
    vals1: [1]
    vals2: [10]
  • https://t.me/clickhouse_ru
    3 arrayFilter как вы сами написали подходит
  • https://t.me/clickhouse_ru
    @Sablast #223795 07:29 AM, 23 Jun 2021
    или можно 1 arrayFilter достать индекс элемента и по нему обратиться к ключам
  • https://t.me/clickhouse_ru
    там может сметчиться несколько ключей, и я не видел функции вроде selectByIndexes(array, [1, 10, 43])
  • https://t.me/clickhouse_ru
    @Sablast #223797 07:31 AM, 23 Jun 2021
    т.е. в одном массиве может быть несколько ключей like 'foo%bar'?
  • https://t.me/clickhouse_ru
    foo_1_bar, foo_2_bar и т.п.
  • https://t.me/clickhouse_ru
    Вариант должен быть рабочим.
    Но меня несколько смущает то, что массив keys сканируется 3 раза.
    Там будет примерно сотня значений.
    А строк будет несколько тысяч.
    Или это все не критично?
  • https://t.me/clickhouse_ru
    SELECT
    arrayEnumerate(a) AS nums,
    a,
    b,
    arrayFilter((x, y) -> (y LIKE '%d%'), nums, a) AS filtered_a,
    arrayFilter((x, y) -> has(filtered_a, y), b, nums) AS filtered_b
    FROM
    (
    SELECT
    ['aaaa', 'bbbb', 'cdfg', 'd', 'asb', 'd'] AS a,
    ['b1', 'b2', 'b3', 'b4', 'b5', 'b6'] AS b
    )

    Row 1:
    ──────
    nums: [1,2,3,4,5,6]
    a: ['aaaa','bbbb','cdfg','d','asb','d']
    b: ['b1','b2','b3','b4','b5','b6']
    filtered_a: [3,4,6]
    filtered_b: ['b3','b4','b6']
  • https://t.me/clickhouse_ru
    у меня есть вопросы к этому решению, и наверное их не имеет смысла обсуждать, чтобы не отнимать время
    но я понял идею, спасибо за помощь
  • https://t.me/clickhouse_ru
    еще маленькое уточнение
    system.events_log или system.metric_log?
    первой таблицы нигде нет, даже в документации найти не могу
  • https://t.me/clickhouse_ru
    event_log
    metric_log

    SHOW TABLES FROM system;
  • https://t.me/clickhouse_ru
    @ievgenpro #223804 07:51 AM, 23 Jun 2021
    Всем добрый день. Подскажите плз, как понять какие запросы или процессы грузят CPU, clichkouse в докер контейнере
  • https://t.me/clickhouse_ru
    вам в моменте или в истории?
    в моменте смотрите в
    SELECT * FROM system.processes;
    SELECT * FROM system.merges;
    SELECT * FROM system.migrations WHERE is_done=0;
  • https://t.me/clickhouse_ru
    @ievgenpro #223807 08:12 AM, 23 Jun 2021
    в моменте, system.processes; или повылазило или CPU нет там
  • @dnzhirnov #223808 08:16 AM, 23 Jun 2021
    Коллеги, добрый день! Прошу подсказать: есть значение, которое я отражаю боксплотом, а есть норматив, которое хочу отразить линией на графике. Визуализацию делаю в redash. Он позволяет делать разные типы графиков для разных серий. Серия это значение груцппировки, в моем примере - оборудование. Т.е. чтобы добавить линию, мне надо добавить в колонку Оборудование норматив со значением норматива, как это можно сделать?
  • https://t.me/clickhouse_ru
    CPU в system.processes нет
    но есть elapsed
    обычно CPU жрет запрос который дольше всего исполняется сейчас

    ну еще можно system.trace_log включить и flamegraph построить

    https://github.com/Slach/clickhouse-flamegraph/#create-etcclickhouse-serverusersdprofilingxml-config-reloaded-every-1sec-or-via-system-config-reload
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

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

  • @dnzhirnov #223810 08:19 AM, 23 Jun 2021
    Красной линией отметил, как я хочу установить норматив
  • https://t.me/clickhouse_ru
    а редаш вообще разве умеет выводить цель на боксплот?
  • https://t.me/clickhouse_ru
    @501846356 #223812 08:43 AM, 23 Jun 2021
    Подскажите пожалуйста, в какую сторону копать...
    есть (и это я не могу обсуждать, так оно мне дано извне) две колонки - массивы. 1й массив - месяц в году (1...12), второй - сумма в этом месяце.
    Пример:
    [3,6,8,6,10]
    [1200,2753,5000,2000,4240]
    Мне надо выбрать и просуммировать элементы второго массива помесячно, за период. Например за первое полугодие должен получиться массив
    [1200, 4753] (1200 за 3и месяц и 2753 + 2000 за шестой).

    Заранее благодарен!, все утро проведено в поисках (((
  • https://t.me/clickhouse_ru
  • Цель - нет, я хочу попробовать сделать это за счет серии. Поэтому у меня вопрос - как можно в одну колонку соединить значения из разных колонок
  • https://t.me/clickhouse_ru
    привести колонки в стринг и сделать concat?
  • @scooby18 #223818 09:49 AM, 23 Jun 2021
    всем добрый день. Сорри что не потеме, а кто-то отправлял данные из кафки в db2?
  • https://t.me/clickhouse_ru
    Спасибо!!

    Вот что получилось:

    select
    fm_el,
    sum(fa_el) as sm
    from
    (
    select
    filtered_a[num] AS fa_el,
    filtered_m[num] AS fm_el
    from
    (
    select
    arrayFilter((x, y) -> (y >= 1 AND y <= 6), b, a) AS filtered_a,
    arrayFilter((y) -> (y >= 1 AND y <= 6), a) AS filtered_m
    from
    (
    select
    [3,6,8,6,10] AS a,
    [1200,2753,5000,2000,4240] AS b
    )
    ) ARRAY JOIN arrayEnumerate(filtered_a) AS num
    )
    group by fm_el

    Монстр. Может есть более короткое решение?
  • https://t.me/clickhouse_ru
    @alexsubbotin #223821 10:15 AM, 23 Jun 2021
    Всем привет! Ищу человека, который сможет проконсультировать по разворачиванию clickhouse (конечно за деньги).

    Что у нас по данным:

    Сейчас 5-10млн строк в день добавляется и потом по этим данным строятся запросы/отчеты, но будет со временем сильно больше. Уже не хватает тестового инстанса развёрнутого на 12GB RAM с дефолтными настройками (например на group by памяти не хватает)

    Что хочется обсудить:

    – Какой инстанс и какие настройки подойдут под наши задачи?
    – Разворачивать самим или взять в яндекс.облаке или где-то ещё?
    – Как настроить бекапы?
    – Какими мониторингами стоит сразу обложиться?
    – Как обслуживать в дальнейшем?
  • https://t.me/clickhouse_ru
    SELECT arrayFilter((x, y) -> (y <= 6), sumMap(a, b).2, sumMap(a, b).1)
    FROM
    (
    SELECT
    [3, 6, 8, 6, 10] AS a,
    [1200, 2753, 5000, 2000, 4240] AS b
    )
  • https://t.me/clickhouse_ru
    > – Как настроить бекапы?
    https://altinity.com/blog/introduction-to-clickhouse-backups-and-clickhouse-backup

    > – Какими мониторингами стоит сразу обложиться?
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-monitoring

    > – Разворачивать самим или взять в яндекс.облаке или где-то ещё?

    Можно так же посмотреть в сторону нашего облака и пообщатся с @AurimasJ :)
    https://altinity.com/altinity-cloud-test-drive/
    Introduction to ClickHouse Backups and clickhouse-backup

    This article will explore the plumbing involved in backing up ClickHouse and introduce the clickhouse-backup tool for automating the process.

  • @infoss_cto #223824 10:23 AM, 23 Jun 2021
    Нужна помощь с какой-то непонятной магией. Создаю внешний словарь и Postgres, в таблице-источнике есть поле r$code. Если я это поле прописываю в имя атрибута, то все работает. Если я хочу сделать псевдоним и прописываю поле в expression, то словарь создается, но при загрузке словаря ClickHouse добавляет ` вокруг этого поля и запрос к постргесу падает. Если в имени поля нет $, то все работает. Если создавать словарь через XML-файл, то все работает. Ошибка выглядит так: COPY (SELECT "code", (`r$code`) AS "up", (term) AS "name”… (HINT: No operator matches the given name and argument type. You might need to add an explicit type cast.). Вопрос, как избежать добавления `?
  • @infoss_cto #223825 10:24 AM, 23 Jun 2021
    Телеграм распарсил ` как признак кода, простите 🙂
  • https://t.me/clickhouse_ru
    а найти человека который назвал поле r$code и гвоздиком ему на темечке написать "переименуй", никак нельзя? ;)
  • он уволился в 2007 году
  • https://t.me/clickhouse_ru
    @JesterDLA #223828 10:26 AM, 23 Jun 2021
    Ахах
  • https://t.me/clickhouse_ru
    @unamedrus #223829 10:26 AM, 23 Jun 2021
    Самое безболезненное наверное будет создать VIEW на стороне постгреса и там переопределить это поле.
    Ну и написать баг репорт в гитхаб
  • Да, я так и сделал, просто думал, что я неправильно готовлю запрос на создание словаря. Спасибо!
  • https://t.me/clickhouse_ru
    в общем это конечно похоже на баг, но очень специфический...
    по идее конечно должно быть "r$code" вместо одинарных кавычек

    сделайте issue с примерами структуры таблицы и того как словарь создаете
  • https://t.me/clickhouse_ru
    не, просто скорее всего код который кавычки ставит из MySQL или еще откуда то более общего места перекочевал...
  • https://t.me/clickhouse_ru
    @ufaweb #223833 10:49 AM, 23 Jun 2021
    добрый день. подскажите пожалуйста, есть ли какой-то смысл отделять в отдельную колонку дату и делать PARTITION BY toYYYYMM именно по ней, вместого того чтобы хранить только одну колонку с DateTime и делать партиции по ней?
  • https://t.me/clickhouse_ru
    нет смысла
  • https://t.me/clickhouse_ru
    @ufaweb #223835 10:50 AM, 23 Jun 2021
    спасибо
  • External dictionaries from Postgres: alias with $ is wrapped with wrong quotes · Issue #25622 · ClickHouse/ClickHouse

    Describe the bug Postgres table is used as a source for CH external dictionary. The table contains field with $ in the name (r$code). During dictionary creation this field is intended to have an al...

  • @a_sima10 #223837 11:04 AM, 23 Jun 2021
    всем привет, есть два сервера КХ, настроено шардирование(Distributed) таблиц, но по диску уже не помещаются данные, как-то можно старые данные заархивировать или какие еще есть варианты, без докупки большего диска?
  • https://t.me/clickhouse_ru
    мб кодеки на сжатие данных помогут временно
  • https://t.me/clickhouse_ru
    фактически PARTITION BY
    это выражение по которому считается ПРЕФИКС в имени директории для каждого парта, в подпапке /var/lib/clickhouse/data/db/table/

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

    отдельное поле конечно нафиг не нужно, вы ведь в запросах все равно будете использовать WHERE old_field ...
  • https://t.me/clickhouse_ru
    @ufaweb #223840 11:12 AM, 23 Jun 2021
    понятно, спасибо за разъяснение
  • @githubreleases_bot #223841 b o t 11:27 AM, 23 Jun 2021
    ClickHouse/ClickHouse tagged: v21.5.7.9-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.5.7.9-stable
    Release notes:
    v21.5.7.9-stable
    Release v21.5.7.9-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.5.7.9-stable

  • https://t.me/clickhouse_ru
    @a1s_333444 #223842 11:32 AM, 23 Jun 2021
    Всем привет, вопрос про kafka engine.
    В кафку продюсится около 150к сообщений, по размеру они все сильно разные.
    При создании таблицы КХ начинает очень хорошо консумить, начиная с 5кк сообщений, но потом падает до 20к.
    CREATE TABLE IF NOT EXISTS logs.k8s_logs_kafka_queue (
    `hostname` String,
    `pod_namespace` String,
    `stream` String,
    `date` String,
    `container_name` String,
    `pod_name` String,
    `message` String)
    ENGINE = Kafka
    SETTINGS kafka_broker_list = 'kafka.xxx:9092',
    kafka_topic_list = 'k8slogs',
    kafka_group_name = 'clickhouse_k8slogs_consumer',
    kafka_num_consumers = 8,
    kafka_thread_per_consumer = 1,
    kafka_format = 'JSONEachRow';
    Но самое интересное что на хосте метрика сетевки говорит что RX утилизируется ~ 700Mbps

    И без параметра kafka_thread_per_consumer = 1 после хорошего консуминга с кафки стала 0, даже 10к сообщений не консумит

    погрепал тут сообщения по кафке, но чето так и не увидел какой то "серебрянной пули" и в какую сторону копать чтобы это работало.
  • https://t.me/clickhouse_ru
    Ну @BloodJazMan вы конечно правы в данном контексте. Но я всё равно дополню, глаз режет формулировка "больше ничего кроме как префикс", вобщем то замените toYYYYMM на toYYYYMMDD и получите что парты разных дней не мержатся по понятной причине. Ну и действительно ли вы не будете использовать в запросах хотя бы where event_date=today()? Мы вот используем. Вобщем, @ufaweb , желаю дополнить что в вашем контексте всё правильно @BloodJazMan сказал, но будьте внимательны при будующих кейсах, не обязательно будет так же )
  • @githubreleases_bot #223844 b o t 11:37 AM, 23 Jun 2021
    ClickHouse/ClickHouse tagged: v21.3.13.9-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.3.13.9-lts
    Release notes:
    ClickHouse lts release v21.3.13.9-lts
    Release v21.3.13.9-lts · ClickHouse/ClickHouse

    ClickHouse lts release v21.3.13.9-lts

  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #223843 #223845 11:38 AM, 23 Jun 2021
    типичный кейс - что-то сделать с данным которые были записаны за прошедщий день, в запросе where created_at between '01-01-2021 00:00:00' and '01-01-2021 23:59:59', если я правильно понимаю то оптимизатор запросов кликхауса поймет что надо брать только ту партицу которая нужна (в определии таблицы собственно указано партишин бай toyyyymm(created_at)
  • https://t.me/clickhouse_ru
    спасибо что дополнили, про то что мержи parts делаются только внутри partitions я забыл упомянуть
    и что важно чтобы PARTITION BY разбивал ваши данные равномерно
    и что важно чтобы один INSERT не пробовал создавать parts больше чем в 100 partitions за раз
  • https://t.me/clickhouse_ru
    @gorsil #223847 11:42 AM, 23 Jun 2021
    Привет. Подскажите, если в кх создать табличку, где ключ - datetime, а в значениях есть колонка типа string и datetime, если класть строки с разными ключами, но при этом в колонках со "значением" будут одинаковые значения, то кх будет дублировать эти данные на диске или нет?
  • Дублировать будет, но чем больше одинаковых значений подряд, тем лучше будет работать сжатие. Можно сделать тип колонки LowCardinality(String), тогда значения будут закодированы в словари, будет мало места занимать
  • https://t.me/clickhouse_ru
    к сожалению не смогу сказать точно настолько ли кликхаус умен, ибо у меня везде отдельная колонка date и партиционируемся по ней и не могу проверить (((

    можете сказать set send_logs_level = 'trace' и проверить

    вот так будет если да ( таблица с partition_key toYYYYMMDD(date) ):
    SELECT count()
    FROM ****.****
    WHERE toYYYYMMDD(date) = toYYYYMMDD(today())
    <Information> executeQuery: Read 1 rows, 4.01 KiB in 0.016716746 sec., 59 rows/sec., 239.75 KiB/sec.

    вот так если нет (та же таблица)
    SELECT count()
    FROM ****.****
    WHERE toYYYYMMDD(timestamp) = toYYYYMMDD(today())
    <Information> executeQuery: Read 252509822 rows, 963.25 MiB in 4.144599248 sec., 60925027 rows/sec., 232.41 MiB/sec
  • https://t.me/clickhouse_ru
    @mib32 #223851 11:56 AM, 23 Jun 2021
    Челики, никто не знает есть ли такой SQL гуи клиент (для макоси) который позволяет строить кастомные вьюхи и сохранять их. Например определенный селект который я часто смотрю. Но как бы сохранять внутри клиента (и отображать как типа виртуальную сущность) а не создавать реальный VIEW в таблице - этого не надо!! потому что их хер отредактируешь в пг например
  • https://t.me/clickhouse_ru
    metabase
  • https://t.me/clickhouse_ru
    @mib32 ↶ Reply to #223852 #223853 12:02 PM, 23 Jun 2021
    не знал что у них есть мак апп, спасибо
  • @Dalmaneo #223854 12:26 PM, 23 Jun 2021
    Добрый день!
    Можно ли макросом подставлять значения в названия таблиц, а не только в секции engine?
    Если да, то с какой версии?
    И если да, то как? Просто create table name_{macro} не подходит.
  • @SonFire #223856 01:14 PM, 23 Jun 2021
    Подскажите, а как вообще может вылезти такая дата, если в запросе её нету?
  • https://t.me/clickhouse_ru
    в кликхаусе по дефолту в JOIN используется пустое значение а не Null для записей ненашедших совпадений.
  • 1. беру пустое значение
    2. даты такой в таблице вообще нету
  • https://t.me/clickhouse_ru
    1970 это дефолтное значение для даты
  • https://t.me/clickhouse_ru
    @unamedrus #223861 01:18 PM, 23 Jun 2021
    замените FULL JOIN на INNER
  • Но мне FULL JOIN нужен.... Проблема только с одной таблице из десяти
  • https://t.me/clickhouse_ru
    Это не проблема, просто эта строка не нашла себе пару, тк у вас FULL JOIN, 1970 это дефолтное значение для таймстампа
  • https://t.me/clickhouse_ru
    добавьте в конце запроса
    SETTINGS join_use_nulls=1
  • @alex_shabal #223867 02:07 PM, 23 Jun 2021
    Здравствуйте! Имею кликхаус кластер состоящий из 2-х шардов, есть дистрибьютед таблица аггрегирующая данные с обоих. Захожу на один шард, запускаю clickhouse-client и делаю селект из дистрибьютед таблицы. Результат: DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.
    Подскажите, плз, в чем тут мб проблема?
  • Authentication failed, гугл переводчик
  • @alex_shabal #223869 02:10 PM, 23 Jun 2021
    а какого пользователя использует clickhouse-client ?
  • думаю, в remote_servers у вас не указан юзер/пасс
  • не указан, но и без него все работало.. хочу понять почему теперь не работает
  • а что изменилось после того момента, когда это работало?
  • @subotic0 #223873 02:43 PM, 23 Jun 2021
    Привет, можете подсказать, создаю таблицу для получения данных из кафки, консюмер не появлятся, а в логах кх
    Can't get assignment. It can be caused by some issue with consumer group (not enough partitions?). Will keep trying.
    в чем может быть причина?
  • так а почему с дефолтным пользователем 'default' и дефолтным паролем '' не получается сделать селект из дистрибьютед таблицы если для реплик в remote_servers.xml не указан пользователь и пароль? Менялась версия кликхауса с 20.5 на 21.3 - там теперь такое поведение?
  • https://t.me/clickhouse_ru
    @Atervit #223875 03:57 PM, 23 Jun 2021
    Привет!
    Подскажите такой момент, на сколько мне известно clickhouse-server сам следит за изменениями конфигурационных файлов и применяет изменения на лету.
    Я добавляю в users.xml -> <database_atomic_wait_for_drop_and_detach_synchronously>1

    В запросе вижу, что изменения применились:

    SELECT value
    FROM system.settings
    WHERE name LIKE '%synchronously'

    ┌─value─┐
    │ 1 │
    └───────┘

    Но при этом если удалить таблицу с движком ReplicatedMergeTree, то данные из Zookeeper будут подчищены когда пройдет таймаут database_atomic_delay_before_drop_table_sec.
    Получается database_atomic_wait_for_drop_and_detach_synchronously не отработал и при удалении таблицы не был подставлен модификатор SYNC.
    Если рестартануть clickhouse-server, то настройка применится и при удаление таблицы ReplicatedMergeTree будут сразу подчищаться данные из Zookeeper.

    Это баг или фича? :)
    ClickHouse 21.4.3.21
  • лог завален вот такой ошибкой:
    2021.06.23 16:32:00.720411 [ 69 ] {} <Error> bool DB::DNSResolver::updateCacheImpl(UpdateF &&, ElemsT &&, const DB::String &) [UpdateF = bool (DB::DNSResolver::*)(const Poco::Net::IPAddress &), ElemsT = std::__1::unordered_set<Poco::Net::IPAddress, std::__1::hash<Poco::Net::IPAddress>, std::__1::equal_to<Poco::Net::IPAddress>, std::__1::allocator<Poco::Net::IPAddress>> &]: Code: 198, e.displayText() = DB::Exception: Cannot getnameinfo(::ffff:10.210.2.1): Name or service not known, Stack trace (when copying this message, always include the lines below):

    0. ? @ 0x8594874 in /usr/bin/clickhouse
    1. ? @ 0x8596253 in /usr/bin/clickhouse
    2. DB::DNSResolver::updateAddress(Poco::Net::IPAddress const&) @ 0x85989db in /usr/bin/clickhouse
    3. bool DB::DNSResolver::updateCacheImpl<bool (DB::DNSResolver::*)(Poco::Net::IPAddress const&), std::__1::unordered_set<Poco::Net::IPAddress, std::__1::hash<Poco::Net::IPAddress>, std::__1::equal_to<Poco::Net::IPAddress>, std::__1::allocator<Poco::Net::IPAddress> >&>(bool (DB::DNSResolver::*&&)(Poco::Net::IPAddress const&), std::__1::unordered_set<Poco::Net::IPAddress, std::__1::hash<Poco::Net::IPAddress>, std::__1::equal_to<Poco::Net::IPAddress>, std::__1::allocator<Poco::Net::IPAddress> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x8598431 in /usr/bin/clickhouse
    4. DB::DNSResolver::updateCache() @ 0x859746e in /usr/bin/clickhouse
    5. DB::DNSCacheUpdater::run() @ 0xe8908fc in /usr/bin/clickhouse
    6. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0xe86a830 in /usr/bin/clickhouse
    7. DB::BackgroundSchedulePool::threadFunction() @ 0xe86c827 in /usr/bin/clickhouse
    8. ? @ 0xe86d5f2 in /usr/bin/clickhouse
    9. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x852dabf in /usr/bin/clickhouse
    10. ? @ 0x85315e3 in /usr/bin/clickhouse
    11. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    12. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.3.12.2 (official build))
  • @1831179247 #223878 04:38 PM, 23 Jun 2021
    Hi
  • https://t.me/clickhouse_ru
    скорее баг чем фича
  • https://t.me/clickhouse_ru
    @VASergeev #223880 05:38 PM, 23 Jun 2021
    Кто может поделиться опытом наката долгих скриптов?
    Условния наката: 1 сервер кликхауса, накат идет через liquibase. По времени наката пока ограничений нет, т.е. даже долгий накат одного скрипта сейчас возможен.
    В идеале получить синхронный накат, чтобы скрипты отрабатывали последовательно.

    Сейчас сделал отдельный профиль, для наката и там переопределил настройки
    mutations_sync = 2
    lock_acquire_timeout = 600

    Один из примеров, таблица на 2-3кк строк, было создано несколько колонок с таймерами, теперь рещено их объединить в одну. Для этого надо скопировать старые значения с новую колонку.
    ALTER TABLE events
    UPDATE dutaion = event_timer
    WHERE type = 'event_timer';

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

    объем данных прочитанный \ записанный при мутации зависит от WHERE
    мутация это принудительное перечитывание и перезаписывание всех партов в которых есть event_timer

    сколько у вас данных в таблице?
  • https://t.me/clickhouse_ru
    сейчас около 4 млн записей
  • https://t.me/clickhouse_ru
    @VASergeev #223884 06:18 PM, 23 Jun 2021
    при обновлении схемы обычной бд, например постгреса, каждый скрипт выполняется последовательно, тоже самое сделал и для кликхауса, но сейчас уперся в то, что скрипт может выполняться достаточно долго. Пытаюсь понять, как вычислить это "долго", кроме эксперементов (может отслеживать процесс мутации).
  • https://t.me/clickhouse_ru
    @dkhru #223885 08:42 PM, 23 Jun 2021
    Привет, подскажите плз
    при удалении реплицируемых таблиц в кластере до тех пор, пока не отдуплится zookeeper
    нет возможности создать таблицу, есть ли способ заставить запрос на удаление завершаться после очистки данных в zk?
  • @1835218396 #223887 10:27 PM, 23 Jun 2021
    #помогу #продажи #маркетинг
    Хотите увеличить продажи вашего сайта?
    Проект Digital Association это ваш навигатор в сфере маркетинга, мы точно знаем что для бизнеса важны ❗️продажи❗️, а не трафик и заявки.
    Проведем диагностику вашего сайта и конкурентной ситуации в Яндекс.Директ, и это ДАРОМ!.
    В результате вы получите:
    ✅ мы поставим бизнес-цели
    ✅ посмотрим ваших конкурентов в рекламной системе Яндекса и на сколько они активны
    ✅ оценю готов ли ваш сайт к продвижению
    ✅ при предоставлении доступа в рекламный кабинет проведу диагностику рекламных кампаний и аналитических данных Яндекс Метрики.
    ✔️ Чтобы записаться на ДАРМОВУЮ консультацию пишите @sementarget, и мы определим удобное время.
  • https://t.me/clickhouse_ru
    Если версия ch не слишком старая и движки бд Atomic, используйте макросы при создании таблиц.
    Тогда создание новой таблицы не будет требовать удаления метаданных со стороны zookeeper.
    upd: я про макрос uuid конкретно
  • 24 June 2021 (107 messages)
  • https://t.me/clickhouse_ru
    DROP TABLE db.table SYNC;
  • @Mr_A275 #223892 05:50 AM, 24 Jun 2021
    Добрый день, коллеги! Обнаружился сдвиг в данных на час в 2013 году, может кто знает не может ли быть это из-за того, что был сдвиг часового пояса в 2014? Сравниваем с MS SQL там данные просто датавремя без таймзоны.
  • https://t.me/clickhouse_ru
    ну видимо при загрузке данных сконвертиловалось... в актуальную таймзону...

    данные в MSSQL в каком time zone писались?
    в MSSQL случайно unixtimestamp нет ?
  • https://t.me/clickhouse_ru
    @hostadminonline #223894 05:56 AM, 24 Jun 2021
    Добрый день, подскажите плз а есть возможность из одной таблицы перелить данные в другую чисто одной командой ? структура одинаковая, в рамках одного КХ
  • https://t.me/clickhouse_ru
    insert into <destination_table> select * from <source_table>;
  • https://t.me/clickhouse_ru
    о круто, спасибо большое
  • В MS SQL данные типа datetime без таймзоны, такое подозрение, что CH увидел дату когда была другая разница с UTC и сдвинул на час данные
  • https://t.me/clickhouse_ru
    @dkhru ↶ Reply to #223891 #223898 06:10 AM, 24 Jun 2021
    спасибо огромное
  • Разобрались - это все похоже из-за перевода на час времени в России в 2014 году. Дата/время в 2013 смещается на +1 час к текущей таймзоне. Вот запрос:
    SELECT
    timezone(),
    toDateTime('2013-05-01 00:00:00', 'Asia/Vladivostok') - toDateTime('2013-05-01 00:00:00'),
    toDateTime('2015-05-01 00:00:00', 'Asia/Vladivostok') - toDateTime('2015-05-01 00:00:00')
  • https://t.me/clickhouse_ru
    ну да, ну вам надо тогда добавить timezone при импорте
    чтобы то что выдает MSSQL было правильно интерпретируему
  • https://t.me/clickhouse_ru
    @75280400 #223901 07:27 AM, 24 Jun 2021
    А кто нибудь знает как часто обновляется PDF версия документации KX ?
    (а то у меня есть оторванный от интернета комп там удобно читать PDF)
  • https://t.me/clickhouse_ru
    мне кажется это в ci/cd автоматом из master бранча генерится
  • https://t.me/clickhouse_ru
    никто не подскажет по этой теме? 😰
  • https://t.me/clickhouse_ru
    Попробуйте тегнуть Михаила Филимонова, может он Вам подскажет что-то
  • https://t.me/clickhouse_ru
    ClickHouse Kafka Engine FAQ

    Kafka is a popular way to stream data into ClickHouse. ClickHouse has a built-in connector for this purpose -- the Kafka engine. This article collects typical questions that we get in our support cases regarding the Kafka engine usage. We hope that our recommendations will help to avoid common problems.

  • https://t.me/clickhouse_ru
    нет нельзя.
    но можете сначала SELECT * FROM system.macros сделать в приложение
    потом в приложении сконструировать запрос CREATE TABLE ... с нужными значениями макросов

    а какой у вас Use case?
    зачем вам разные имена таблиц в зависимости от макроса?
    и какой у них будет движок?
  • Организация кросс-репликации без заморочек с приложением
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @a1s_333444 #223910 08:03 AM, 24 Jun 2021
    Спасибо, а эти темы актуальны для версии 20.10.Х ?
    Q. What configuration options can be adjusted?
    Q. How can I configure a Kafka engine table for the maximum performance?
  • https://t.me/clickhouse_ru
    непонятно, что такое "кросс репликация"?
    ReplicationMergeTree между датацентрами?

    ну так там нужно чтобы имена таблиц были одинаковые как раз
    и разные имена для макроса replica который надо использовать в параметрах при создании...
  • https://t.me/clickhouse_ru
    @a1s_333444 #223912 08:04 AM, 24 Jun 2021
    Где то видел, что чето тюнили с kafka engine
  • https://t.me/clickhouse_ru
    Второй вопрос нет, это уже было добавлено в конфигурацию по умолчанию с 20.5+
  • Кросс-репликация, она же circular replication, о которой есть статья на сайте Altinity. Нужно, чтобы на каждом сервере были соответствующие database_name и т.д.. Вот макросами можно было бы делать это через простой инструментарий.
  • https://t.me/clickhouse_ru
    Лучше не делать такого
  • https://t.me/clickhouse_ru
    одно не понятно, че так много трафика на КХ хосте с кафки
  • https://t.me/clickhouse_ru
    а какой в этом смысл?
    я понимаю там еще для MySQL master-master через circular replication люди пытаются нагородить
    но для clickhouse это бессмысленно

    как минимум объем данных которые будете хранить будет больше, а производительность меньше...
  • https://t.me/clickhouse_ru
    Может у Вас есть "битые" сообщения с Kafka и пока не пофиксите их может не консьюмить.
    kafka_skip_broken_messages не пробовали задавать?
  • https://t.me/clickhouse_ru
    кажется что в дебаг логах КХ битые сообщения отобразились бы или я не прав?
  • https://t.me/clickhouse_ru
    Если он у Вас включён
  • https://t.me/clickhouse_ru
    @a1s_333444 #223921 08:15 AM, 24 Jun 2021
    Да, конечно, дебаг лог включен
  • Объем данных зависит от количества копий, а количество копий будет одинаковым.
    С другой стороны, при тройной репликации по стандрартной схеме, допустим, на 9 серверах, у нас данные для distributed таблиц будут распределены на три сераера. При кросс-репликации данные можно распределить на 9-ти серверах и реплики хранить на соседних. В этом случае, мы не потеряем в скорости скриптов и при отказе одного сервера недостающий кусок данных возьмется с соседнего.
  • @simpl1g #223923 09:03 AM, 24 Jun 2021
    Может быть есть новости когда и какая версия КХ станет Altinity Stable?
  • @spirid_sv #223924 10:00 AM, 24 Jun 2021
    Всем привет!)
    Вопрос по оптимизации.
    Есть запрос SELECT ta.val, tb.val
    FROM
    ta, tb
    WHERE
    ta.a BETWEEN tb.a and tb.b;
    Таблица tb содержит диапазон UInt32 - a,b и соответствующие значение val. Ищем вхождение ta.a в диапазон и выводим результат.
    Запрос чертовски тормозной... 1500 из ta записей за 5 минут. Размер tb - 3М записей.
    Куда покопать? (словари смотрел - даипазоны не умеет, хотя есть хак. скорость сопоставима)
  • https://t.me/clickhouse_ru
    ну. запрос тормозной потому что сначала ta + tb JOIN делается
    в памяти а потом только фильтрация

    какой объем данных в tb в байтах несжатых?
  • если верить дбиверу 65мб, но это я так понимаю пожатых..
  • https://t.me/clickhouse_ru
    @ruslansvir #223927 10:10 AM, 24 Jun 2021
    Здравствуйте! требуется перекодировать geo_id в название страны.
    в YQL делаю так: Geo::RoundRegionById(CAST (geo_id AS Int32), "country").name as country_0,
    а как сделать это в CH?
  • и как такое порешать? держать отдельную таблицу с хешами или типа того и обновлять ее по уникальным значениям из ta?
  • @vvvjhaq #223929 10:13 AM, 24 Jun 2021
    Всем привет!
    2 сервера, между ними 1 ЗК.
    Нужно на пару минут выключить сервер ЗК. Я так понимаю надо отключить вставки и дождаться конца очереди, выключать ЗК и в обратном порядке?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.tables WHERE name='tb'
  • https://t.me/clickhouse_ru
    ну можно попробовать сделать из второй таблицы словарь
    и вместо JOIN
    через ta, tb

    делать
    SELECT ta.val, dictGet( ...)
    FROM
    ta
    WHERE ta.a BETWEEN dictGet() AND dictGet()
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223932 10:21 AM, 24 Jun 2021
    Привет всем. Помогите пожалуйста. Я сделал DETACH "ALTER TABLE domain DETACH PARTITION tuple(toYYYYMM(toDate('2021-06-23')))" на локальном а на серваке хочу сделать ATTACH "ALTER TABLE domains_db.domain ATTACH PARTITION tuple(toYYYYMM(toDate('2021-06-23')))", а сервер выдает ошибку. SQL Error [226]:
  • https://t.me/clickhouse_ru
    а партицию то физически перенесли?

    там кроме номера ошибки еще бы и текст ошибки полный показать
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223935 10:25 AM, 24 Jun 2021
    SQL Error [226]: ClickHouse exception, code: 226, host: 127.0.0.1, port: 57392; Code: 226, e.displayText() = DB::Exception: Marks file '/var/lib/clickhouse/store/309/309f1b42-699e-45dc-ba03-f4722a4cc2e7/detached/attaching_202106_13196_19583_12/zone.mrk' doesn't exist (version 21.1.7.1 (official build))
  • https://t.me/clickhouse_ru
    какая версия clickhouse локально?
    ну и файл то есть или нет? после того как DETACH PARTITION на локальном сделал?
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223937 10:28 AM, 24 Jun 2021
    в папке нет файл zone.mrk а есть файл zone.mrk2
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223938 10:30 AM, 24 Jun 2021
    версия на локале ClickHouse client version 21.6.5.37
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223939 10:36 AM, 24 Jun 2021
    И партиции перенес
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    mrk2 это mrk но с адаптивной гранулярностью...

    странно что на 21.1 она это распознать не может ее вроде давно ввели...
    на удаленном сервере
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223943 10:37 AM, 24 Jun 2021
    Час назад
  • https://t.me/clickhouse_ru
    А другие парты в этой таблице имеют какие файлы?
    mrk или mrk2
  • https://t.me/clickhouse_ru
    @unamedrus #223945 10:38 AM, 24 Jun 2021
    мб вам нужно миксед гранулярити включить
  • https://t.me/clickhouse_ru
    Во всех папках mrk2
  • https://t.me/clickhouse_ru
    В таблице назначения?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    А покажите все файлы в той партиции
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223950 10:45 AM, 24 Jun 2021
    Там много папок с партициями
  • https://t.me/clickhouse_ru
    Я про которая не может присоединится
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223952 10:46 AM, 24 Jun 2021
    checksums.txt count.txt domain.bin lastupdate.bin minmax_lastupdate.idx primary.idx zone.mrk2
    columns.txt default_compression_codec.txt domain.mrk2 lastupdate.mrk2 partition.dat zone.bin
  • https://t.me/clickhouse_ru
    А овнер у файлов какой?
  • https://t.me/clickhouse_ru
    @Muradnetpeak #223954 10:51 AM, 24 Jun 2021
    Не знаю если честно.
  • https://t.me/clickhouse_ru
    @unamedrus #223955 10:51 AM, 24 Jun 2021
    ls -alh some_path/*
  • апну простой вопросик)
  • https://t.me/clickhouse_ru
    Ну да, все вставки КХ через ЗК координирует..
  • ок, попробуем так сделать
  • @registiy #223960 12:56 PM, 24 Jun 2021
    друзья, подскажите, пожалуйста,
    пробую оставить коммент к таблице по доке https://clickhouse.tech/docs/en/sql-reference/statements/create/table/#comment-table

    CREATE TABLE test.users ON CLUSTER '{cluster}'
    (
    id Int32
    )
    ENGINE=ReplicatedMergeTree()
    COMMENT 'test'
    PARTITION BY tuple()
    ORDER BY tuple();

    получаю
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 101 ('COMMENT') (line 6, col 1): COMMENT 'test'
    PARTITION BY tuple()
    ORDER BY tuple(). Expected one of: PRIMARY KEY, end of query, AS, INTO OUTFILE, OVER, TTL, ORDER BY, SETTINGS, PARTITION BY, SAMPLE BY, FORMAT (version 21.3.12.2 (official build))

    К колонкам без проблем добавляется. Что делаю не так?
  • https://t.me/clickhouse_ru
    используете не ту версию КХ?)
  • @registiy #223962 12:59 PM, 24 Jun 2021
    тьфу вижу что с 21.6, не обратил внимания, спасибо
  • https://t.me/clickhouse_ru
    версия clickhouse старая, эту фичу в 21.6 ввели
    https://github.com/ClickHouse/ClickHouse/commit/99e2f83c690e534d8446474a999d0178ff056a5b
  • @registiy #223964 12:59 PM, 24 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    @in_silence #223970 01:37 PM, 24 Jun 2021
    Добрый день, вопрос по работе ODBC:
    При импорте словаря через ODBC для колонок с типом DateTime64 происходит что-то не понятное.
    А именно: даты при SELECT из этого словаря отображаются корректно, но сравнить такую дату с любым другим DateTime уже не получается
    CREATE DICTIONARY dict_test_64_odbc(
    id Int8,
    d64 DateTime64
    )
    PRIMARY KEY id
    LAYOUT(FLAT)
    SOURCE(ODBC(DB 'some' TABLE 'test_table' CONNECTION_STRING 'DSN=someDSN'))
    LIFETIME( MIN 600 MAX 1200)
    ;
    SELECT
    t.id,
    t.d64,
    toTypeName(t.d64),
    toColumnTypeName(t.d64),
    toDateTime64('2020-01-01 00:00:00', 3) as datetime_param,
    toTypeName(datetime_param)
    -- , less(t.d64, datetime_param)
    FROM dict_test_64_odbc t;
    Запрос выдает результат как на скриншоте, но если раскомментировать сравнение less(t.d64, datetime_param)
    То уже кидает ошибку
    DB::Exception: Wrong column in Decimal comparison (21.6.5.3)
  • https://t.me/clickhouse_ru
    @in_silence #223971 01:38 PM, 24 Jun 2021
    Связано ли это поведение с fallthrought для vDateTime64 здесь https://github.com/ClickHouse/ClickHouse/blob/e9e49a908598f6851abc9fa0c135e22a97adb4ad/programs/odbc-bridge/ODBCBlockInputStream.cpp#L141 ?
    ClickHouse/ClickHouse

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

  • @iamanthonytintul #223976 02:32 PM, 24 Jun 2021
    Ребят, привет! Хотел узнать, как можно оптимизировать запрос, в котором мне нужно найти максимальное значение числового поля в таблице, которая отсортирована не по это этому полю. Просто через функцию MAX(field) это выходит достаточно долго и вот спрашиваю, есть ли тут ещё какие-то варианты?
  • https://t.me/clickhouse_ru
    тип поля правильно выбрать
  • https://t.me/clickhouse_ru
    @75280400 #223978 02:37 PM, 24 Jun 2021
    некоторые типы хорошо сжимаются
  • Тип поля в таблице?
  • https://t.me/clickhouse_ru
    @75280400 #223980 02:37 PM, 24 Jun 2021
    да
  • С этим все хорошо. Тип подходящий
  • https://t.me/clickhouse_ru
    @75280400 #223982 02:39 PM, 24 Jun 2021
    а это поле монотонно растет ? или распределение случайным образом ?
  • Растёт, но иногда пару значений могут в случайном порядке стоять
  • https://t.me/clickhouse_ru
    @75280400 #223984 02:45 PM, 24 Jun 2021
    если известно что максимальное значение в последней партиции можно добавить в условие это поле для ограничения
  • https://t.me/clickhouse_ru
    Можно попробовать навесить minmax skip index, но не уверен
  • @SonFire #223987 02:50 PM, 24 Jun 2021
    Как проверить, что Point лежит в Ring ?
  • https://t.me/clickhouse_ru
    Geographical Coordinates | ClickHouse Documentation

    Functions for Working with Geographical Coordinates greatCircleDistance Calculates the distance between two points on th

  • Спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #223976 #223991 04:51 PM, 24 Jun 2021
    построить MV? C недоагреггированным значением? Projections? Всё это уже попробовали и чем-то не подходит?
  • https://t.me/clickhouse_ru
    А на это нет ни у кого ответа?
  • Вот МВ попробую, скорее всего
  • https://t.me/clickhouse_ru
    как-то можно через explain увидеть будет ли использоваться projection для запроса, т.к. explain select ... не показывает различий для таблицы с и без projection при выборке, в которой данные из projection могут использоваться
  • https://t.me/clickhouse_ru
    set allow_experimental_projection_optimization=1, force_optimize_projection=1
  • https://t.me/clickhouse_ru
    @den_crane #223996 05:28 PM, 24 Jun 2021
    в дебаг в трассе видно
  • https://t.me/clickhouse_ru
    да, спасибо, все отлично видно
  • @bashlykevich #224000 07:43 PM, 24 Jun 2021
    Через python requests кто-то читает X-ClickHouse-Progress во время выполнения длинного запроса? Это можно вообще как-то сделать?
  • @1322439006 #224001 09:03 PM, 24 Jun 2021
    Коллеги, подскажите, пожалуйста.

    Имеем кластер из 3-х баз ClickHouse версии 20.10.3.30 (official build) с несколькими distributed-таблицами.

    Проблема №1

    На одном сервере распределение памяти выглядит так:

    select metric, round(value/1024/1024/1024,2) gbsize from system.metrics m where metric like 'Memory%';

    metric |gbsize |
    ---------------------------------------------------+-------+
    MemoryTracking | 64.86|
    MemoryTrackingInBackgroundProcessingPool |-227.75|
    MemoryTrackingInBackgroundMoveProcessingPool | 0.0|
    MemoryTrackingInBackgroundSchedulePool | 0.0|
    MemoryTrackingInBackgroundBufferFlushSchedulePool | 0.0|
    MemoryTrackingInBackgroundDistributedSchedulePool | 1.25|
    MemoryTrackingInBackgroundMessageBrokerSchedulePool| 0.0|
    MemoryTrackingForMerges | 236.9|

    На двух других картина такая:

    metric |gbsize|
    ---------------------------------------------------+------+
    MemoryTracking |117.58|
    MemoryTrackingInBackgroundProcessingPool | -1.8|
    MemoryTrackingInBackgroundMoveProcessingPool | 0.0|
    MemoryTrackingInBackgroundSchedulePool | 0.0|
    MemoryTrackingInBackgroundBufferFlushSchedulePool | 0.0|
    MemoryTrackingInBackgroundDistributedSchedulePool | 0.77|
    MemoryTrackingInBackgroundMessageBrokerSchedulePool| 0.0|
    MemoryTrackingForMerges | 3.68|

    1. Что за странное значение MemoryTrackingForMerges = 236.9 Гб (столько памяти физически на сервере просто нет!)?

    2. Что означает отрицательное значение в MemoryTrackingInBackgroundProcessingPool = -227.75 Гб?

    3. Как понять, на что ушло потребление MemoryTracking = 117.58 Гб (это фактически предел доступной для ClickHouse памяти)? В system.processes нет ресурсоемких запросов.

    Проблема №2

    После отключения внешнего источника в distributed-таблицы продолжают идти insert'ы (судя по system.query_log и фактическому кол-ву строк в shard-таблицах). Что это за "отложенные insert'ы", как оценить их оставшееся кол-во и можно ли принудительно обнулить такую накопившуюся очередь? Рестарт баз на это никак не влияет.
  • https://t.me/clickhouse_ru
    1. обновляйтесь. например 20.10.7.4 ,
    Какую проблему решаете?
    но MemoryTracking несоврешеннен и может уходить в минус и может врать, можно просто не смотреть на эти числа.

    2. distributed работает по дефолту асинхронно, принимает инсерт кладет себе в .bin файл, потом позже пересылает в шарды
    --insert_distributed_sync arg If setting is enabled, insert query into distributed waits until data will be sent to all nodes in cluster.
    можно мониторить файлы .bin в каталоге таблицы, можно select * from system.distribution_queue
  • @vvvjhaq #224003 09:22 PM, 24 Jun 2021
    Вечер добрый! Подскажите последовательность действий для добавления 2 нод ЗК к одной standalone.
    2 кх между ними 1 зк, хотим добавить еще 2 зк и сделать ансамбль.
  • https://t.me/clickhouse_ru
    вписать в конфиг у старой ноды все 3 ноды, убрать standalone=true
    рестартовать ее -- она не будет отвечать, работать, потому что одна
    стартовать две других, у них должно быть пусто в снепшотах и логах

    а ну и надо в конфигах проставить разные id у всех 3х (до рестарта)
  • Конфиги у всех конфиги одинаковые, за исключением myid?
    И потом можно их вписать в кх?
  • Проблему потребления памяти - непонятно, почему ClickHouse столько потребляет, на какие процессы/задачи?
  • https://t.me/clickhouse_ru
    Да, именно так. И не упустите из внимания что пустыми Denny сказал стартовать две новых, старая конечно должна быть с данными а то новым двум будет не откуда данные стянуть и получите просто пустой ЗК )
    После того как пропишете в кх, дайте селект в system.zookeeper where path='что нибудь' для проверки что кликхаус ЗК увидел. Ещё в версии 19.17 нужен был рестарт кх для перечитывания этой части конфига. Нужен ли до сих пор не знаю )
  • https://t.me/clickhouse_ru
    сколько столько? Сколько RSS/RES в top у КХ процесса?
  • 2. Принудительно обнулить/удалить эти bin-файлы можно?
  • Понял, сейчас не нужен в кх рестарт для этой части
  • https://t.me/clickhouse_ru
    если не жалко инсерты, можно удалить файлы
  • https://t.me/clickhouse_ru
    @Romkart #224012 10:18 PM, 24 Jun 2021
    уже пятница
  • https://t.me/clickhouse_ru
    @foxermen #224015 11:11 PM, 24 Jun 2021
  • https://t.me/clickhouse_ru
    /report
  • 25 June 2021 (104 messages)
  • https://t.me/clickhouse_ru
    нужна комбинация GET параметров
    send_progress_in_http_headers=1&wait_end_of_query=1
    тогда прогресс будет отдаваться в HTTP заголовках
    но при этом будет буфферизироваться тело ответа на сервере
    вам progress нужен на SELECT или на INSERT ?
  • https://t.me/clickhouse_ru
    несколько лет назад у меня была похожая задача на другой БД. Я должен был определить какому оператору принадлежит огромный список телефонов. Была таблица с диапазонами. Все очень сильно тормозило. В итоге я пришел к такому решению.
    Диапазоны выпрямил скриптом
    была одна запись
    212000 - 215000 Мухосрансктелеком
    стало много
    212 Мухосрансктелеком
    213 Мухосрансктелеком
    214 Мухосрансктелеком
    215 Мухосрансктелеком
    И уже с таким списком все работало быстро
    условие переписывается на = и индексы работают
    substring(mytel,1,3) = t.prefix
  • https://t.me/clickhouse_ru
    @kuzmin_m #224021 05:24 AM, 25 Jun 2021
    Привет!
    Если выражение из секции with используется несколько раз в секции select, оно же один раз вычисляется? Или это вроде шаблонизации и выражение независимо вычисляется на каждое использование? Выражение тут это расчет формулы, а не запрос. Спасибо.
  • https://t.me/clickhouse_ru
    нет, пока что вычисляется каждый раз

    https://github.com/ClickHouse/ClickHouse/pull/23367
    некоторые оптимизации готовятся тут
    но непосредственно с WITH они не связаны
    Implement short circuit function evaluation by Avogar · Pull Request #23367 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @kuzmin_m #224023 05:39 AM, 25 Jun 2021
    А есть функция обратная arrayZip? Принимает массив кортежей и возвращает кортеж массивов?
  • Спасибо за идею, оценю кол-во новых записей, может и выгорит.
  • Пробовал, возможно где-то косякнул - скорость сравнимая была. И грузился он очень долго..
  • @spirid_sv #224026 05:43 AM, 25 Jun 2021
    Попробую ещё один заход со словарём. Очень не хочется вытаскивать это в скрипты)
  • https://t.me/clickhouse_ru
    SELECT [('a',5),('b',2),('c',1)] AS a, arrayMap(x -> x.1, a) AS k, arrayMap(x -> x.2, a) v, tuple(k, v) AS unzipped

    как то так...
  • https://t.me/clickhouse_ru
    да, спасибо.
  • Селект
  • https://t.me/clickhouse_ru
    @kuzmin_m #224034 06:16 AM, 25 Jun 2021
    Вы прям классные, единственный чат, что я видел, где отвечают на вопросы.
  • https://t.me/clickhouse_ru
    @k1nteg ↶ Reply to #224034 #224035 06:17 AM, 25 Jun 2021
    Без этого чата, я думаю, клик бы загнулся. XD
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #224020 #224036 06:18 AM, 25 Jun 2021
    По трем цифрам кода (ABC/DEF) сегодня нельзя определить оператора. Таблица Россвязи уходит вглубь до 5-6 знаков. Поэтому простой словарь будет слишком большим. Но range_hashed вполне нормальных размеров получается. У меня так:
    select dictGet('e164_ru','operator',toUInt64(7965),1234567);
    ключ - ABC/DEF код, диапазоны как у россвязи
  • https://t.me/clickhouse_ru
    это был пример приблизительный
  • https://t.me/clickhouse_ru
    сколько строк на выходе получается? много?
    клиент у вас python requests?
    само приложение web или CLI ?
  • Много, гигабайт.
    Python requests и запрос на веб. Это вопрос больше по питоновскрй части, чем по КХ, но вдруг кто делал: хочется тянуть данные или иметь прогресс одновременно
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #224026 #224040 06:26 AM, 25 Jun 2021
    Словарь не требует скриптов. Можно считать, что это такой способ обращения к таблице. Единственое неудобство, что требуется указать логин/пароль. Как это красиво обойти - пока непонятно. Приходится делать спец пользователя и ограничивать его права.
  • https://t.me/clickhouse_ru
    что-то непонятно, вы тащите МНОГО данных из clickhouse и при этом потом еще стараетесь это как то обработать?
    а на clickhouse стороне никак обработать нельзя?
  • @bashlykevich #224042 06:30 AM, 25 Jun 2021
    Нет, обработки нет, я просто хочу показывать пользователю прогресс поиска, rows read/rows to read total. Да и строк на выходе может быть немного (может и не быть вовсе), но понимать пользователю эстимейт выполнения в поиске по большому интервалу было бы приятно
  • https://t.me/clickhouse_ru
    извините. я вас спросил по русски "сколько строк на выходе получается? много?"
    вы ответили несколько гигабайт
    про выход я имел ввиду именно результат
    если результат небольшой, но сам запрос долгий
    то прогресс можно через
    https://t.me/clickhouse_ru/224019
    смотреть
    Slach [altinity] in ClickHouse не тормозит

    нужна комбинация GET параметров send_progress_in_http_headers=1&wait_end_of_query=1 тогда прогресс будет отдаваться в HTTP заголовках но при этом будет буфферизироваться тело ответа на сервере вам progress нужен на SELECT или на INSERT ?

  • https://t.me/clickhouse_ru
    в python requests есть еще streamable
    его вроде как можно доставать, но я не знаю распостраняется ли это на заголовки
  • В контексте этого вопроса количества строк на выходе вообще не важно, причём это? Про заголовки мне понятно, курлом я запрос с keep alive отправляю и вижу, что приходит всё как надо. Аналогичный запрос я формирую и через питоновский requests (с опцией stream), но в том и вопрос, как параллельно получать апдейт состояния в response headers и сами данные (iter_content/iter_lines используется для чтения данных чанками)
  • @bashlykevich #224046 06:39 AM, 25 Jun 2021
    По идее надо использовать async http, но и там подходящего инструментария для получения апдейтов хэдэров в процессе чтения данных не наблюдается.
  • https://t.me/clickhouse_ru
    апдейт состояния не получится получать паралельно с данными
    HTTP Interface такое не позволяет

    и в в stream=True врятли попадут заголовки в requests

    думаю придется вам обычный socket использовать и заголовки из него читать
  • Спасибо, придётся костылить драйвер
  • https://t.me/clickhouse_ru
    @mirka_bit #224049 07:10 AM, 25 Jun 2021
    Из airflow периодически возникают подобные ошибки, если порестартить проходит. Кто нибудь сталкивался?
    они всё-таки есть. снова эта ошибка на тех же тасках
    DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000004190 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 2 unfinished hosts (0 of them are currently active), they are going to execute the query in background. Stack trace:
  • https://t.me/clickhouse_ru
    @shakhov #224050 07:16 AM, 25 Jun 2021
    Всем привет. Может кто сталкивался? Отдельно запрос отрабатывается, но стоит добавить строчку
    create or replace view asna.statuses as
    как начинает выдавать ошибку
    Cannot detect left and right JOIN keys. JOIN ON section is ambiguous

    В чем может быть дело???? я уже мозг сломал.((
    (версия 21.3 LTS)
  • https://t.me/clickhouse_ru
    вы пытаетесь запустить на Database Engine=Ordinal DDL запросы ALTER ... ON CLUSTER... SYNC
    и оно не успевает раскатиться на кластер, потому что видимо кто-то еще паралельно вставляет данные в реплики

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

    не работает выборка из VIEW?
    или создание VIEW?
  • https://t.me/clickhouse_ru
    именно создание
  • https://t.me/clickhouse_ru
    алиасы прописаны везде. имена через точку.
  • https://t.me/clickhouse_ru
    тогда скорее всего баг в парсере, сможете
    сделать минимально воспроизводимый пример
    SHOW CREATE TABLE от всех таблиц
    и запрос на CREATE OR REPLACE VIEW ...
    и сделать issue на github?
  • https://t.me/clickhouse_ru
    это сложновато для меня)))) но если это делается просто в dbeaver, то попробую
  • https://t.me/clickhouse_ru
    Т.е. Это можно исправить перестав записывать в момент альтера?
  • https://t.me/clickhouse_ru
    по идее да, или сконвертировать все БД в Atomic
    но там свои приколы к которым надо привыкать
  • @dnzhirnov #224059 07:25 AM, 25 Jun 2021
    Коллеги, добрый день! Есть колонка в clickhouse с типом Nullable(float32) - по ней не считается сумма, при этом даже если поставить ifnull(x,0) все равно не работает. Проверку на null делал, их нет. В чем может быть причина?
  • https://t.me/clickhouse_ru
    что значит "не считается сумма"?
    sum(xxx) выдает 0 ?
  • @dnzhirnov #224061 07:28 AM, 25 Jun 2021
    запрос выполнял в редаш, сейчас выполнил в табиксе, пишет nan
  • @dnzhirnov #224062 07:30 AM, 25 Jun 2021
    табикс помог, вопрос снимается) Спасибо за наводящий вопрос
  • Обычно вот так, но бывает и больше:
    # cat /proc/39117/status

    Name: clickhouse-serv
    ...
    Pid: 39117
    ...
    VmPeak: 145749736 kB
    VmSize: 145749732 kB
    VmLck: 0 kB
    VmPin: 0 kB
    VmHWM: 124967536 kB
    VmRSS: 120994988 kB
    RssAnon: 120962624 kB
    RssFile: 32364 kB
    RssShmem: 0 kB
    VmData: 145140772 kB
    VmStk: 132 kB
    VmExe: 171220 kB
    VmLib: 0 kB
    VmPTE: 256140 kB
    VmSwap: 3020784 kB
  • Если таки решим удалять bin-файлы, то надо ли параллельно удалять содержимое /broken и /tmp? Или там в любом случае мусор?
  • @pavlov_m #224067 10:43 AM, 25 Jun 2021
    Добрый день. кто-то наблюдает возрастание zookeeper watches на 21.3? По метрикам доходит до 30к. После рестарта сервера значение держится в рамках 200- 400 вотчей. И спустя время снова начинает расти. Проблем с репликацией, мерджами не наблюдаю. Нагрузки не критические. При этом рядом есть кластер с такой же версией и без возрастания этой метрики. znode count так же растет. Грешу на optimize table on cluster final.
  • https://t.me/clickhouse_ru
    ну по идее правильно грешите
    ON CLUSTER ...
    это работа с ZK через ddl_queue
    плюс сами парты когда мержатся порождают в ZK движение...
  • https://t.me/clickhouse_ru
    может лучше свитчнуться на SELECT .. FINAL вместо того чтобы диск гробить?
  • Тут просто виду прямую зависимость между вотчами и запросом оптимизации. Но после ручного выполнения запроса метрика возвращается в прежнее значение. Думаю что может по крону некоторые операции не успевают за 180сек... И при этом появляется эта утечка. Хз
  • Здесь больше выбирают чем пишут. И скорость выборки важнее. Решили что лучше один раз в час оптимизировать нужный парт в котором были правки. Чем всю таблицу выбирать с final
  • https://t.me/clickhouse_ru
    @hydra13 #224073 11:16 AM, 25 Jun 2021
    Всем привет!
    CH гарантирует ли удаления данных из Zookeeper'a?

    У себя в задаче строю materialized view с движком ReplicatedMergeTree.
    Строиться по таблицам в (> 40 млн записей) раз в 2 часа, используя POPULATE.
    Делаю именно перепостроение (удаляю старую вьюшку, создаю новую с POPULATE), т.к. иначе будет задействуется только блок обновлений (в запросе для построения view используются и GROUP BY и INNER JOIN)
    Чтобы не было downtime решил делать через создание представления с постфиксом _tmp и ренеймом после построения с удалением старого представления:
    1) создаем view_tmp
    2) переименновываем view в view_for_remove
    3) переименновываем view_tmp в view
    4) удаляем view_for_remove
    Но в этом случае приходится добавлять в имя реплики timestamp, чтобы гарантировать ее уникальность.

    В связи с этим вопрос - когда буду удалять старые представления раз в 2 часа, не засру ли zookeeper целой кучей реплик?

    P.S.: если видите в моем алгоритме изъян - напишите, буду рад обсудить. Возможно я что-то где-то упускаю
  • @tanirf #224074 11:27 AM, 25 Jun 2021
    Всем привет. Есть вопрос по функции s3. Поддерживает ли она урлы со схемой s3:// ? При попытке INSERT INTO FUNCTION s3('s3://bucket-name/taxonomy_1624620149.csv') получаю ошибку. В issues такую проблему не нашел

    Code: 36, e.displayText() = DB::Exception: Bucket or key name are invalid in S3 URI: s3://bucket-name/taxonomy_1624620149.csv (version 21.6.3.14 (official build))
  • https://t.me/clickhouse_ru
    а если только один парт, тогда ок...
  • https://t.me/clickhouse_ru
    @gorbonk #224078 01:22 PM, 25 Jun 2021
    Всем доброго дня. Подскажите, пожалуйста, как узнать, с какой версии поддерживается EXPLAIN?
  • https://t.me/clickhouse_ru
    @solard #224079 01:39 PM, 25 Jun 2021
    Всем привет народ. Подскажите что подтюнить можно чтобы не вылетал такой эксепшн:

    <#dc9dee01> java.lang.Throwable: Code: 252, e.displayText() = DB::Exception: Too many parts (318). Merges are processing significantly slower than inserts. (version 20.8.18.32 (official build))

    Ответ разрабов почитал на гитхабе по диагонали сообщение:
    https://github.com/ClickHouse/ClickHouse/issues/3174#issuecomment-423435071

    Интересует 5 пункт в его ответе
    DB::Exception: Too many parts (600). Merges are processing significantly slower than inserts · Issue #3174 · ClickHouse/ClickHouse

    ClickHouse client version 18.6.0. Connected to ClickHouse server version 18.6.0 revision 54401. Hello all, I have been working on this issue for almost a week and still see the problem coming back....

  • https://t.me/clickhouse_ru
    рекомендуется делать инсерты не чаще раза в секунду, при этом желательно батчами побольше
  • https://t.me/clickhouse_ru
    @nyoroon #224081 01:46 PM, 25 Jun 2021
    у вас как сейчас с инсертами?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224080 #224082 01:46 PM, 25 Jun 2021
    Вот да, этого золотого правила пытаемся придерживаться но видимо где-то сбоить начали
  • https://t.me/clickhouse_ru
    @nyoroon #224083 01:46 PM, 25 Jun 2021
    либо диски перегружены и кх не успевает мержить
  • https://t.me/clickhouse_ru
    @nyoroon #224084 01:47 PM, 25 Jun 2021
    смотрели на нагрузку?
  • https://t.me/clickhouse_ru
    @solard #224085 01:48 PM, 25 Jun 2021
    Диски живые. По CPU / RAM тоже всё отлично. В какой-то момент началось а вот в какой понять не можем сейчас
  • https://t.me/clickhouse_ru
    @solard #224086 01:49 PM, 25 Jun 2021
    А есть волшебная комманда глянуть кол-во активных партов на диске?
  • https://t.me/clickhouse_ru
    @nyoroon #224087 01:51 PM, 25 Jun 2021
    select count() from system.parts where is_active
  • https://t.me/clickhouse_ru
    @nyoroon #224088 01:51 PM, 25 Jun 2021
    что-то типа того
  • https://t.me/clickhouse_ru
    @solard #224089 01:51 PM, 25 Jun 2021
    У нас сейчас в общем такая история получается
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nyoroon #224091 01:52 PM, 25 Jun 2021
    выглядит как будто прилетает много маленьких инсертов
  • https://t.me/clickhouse_ru
    @solard #224092 02:01 PM, 25 Jun 2021
    Будем разбираться тогда, спасибо. Может как-то подтюнить КХ можно?
  • https://t.me/clickhouse_ru
    RssFile: 32364 kB

    32 GB -- все ОК
  • https://t.me/clickhouse_ru
    там мусор, можно удалять
  • https://t.me/clickhouse_ru
    можно 300 поменять на 900.

    Я ставлю 900, и более агресивное замедление

    <parts_to_delay_insert>150</parts_to_delay_insert>
    <parts_to_throw_insert>900</parts_to_throw_insert>
    <max_delay_to_insert>5</max_delay_to_insert>
    </merge_tree>

    и до кучи останавливаю заливку если 300 партов (заливальщик проверяет и притормаживается тоже)
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224095 #224096 02:31 PM, 25 Jun 2021
    А т.е вы еще на стороне заливальщика проверяете не уперлись ли в лимит и тротлите
  • https://t.me/clickhouse_ru
    @solard #224097 02:32 PM, 25 Jun 2021
    Я правильно понял?
  • https://t.me/clickhouse_ru
    да, я параноик
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224098 #224099 02:32 PM, 25 Jun 2021
    Я думаю иногда это очень полезно. Спасибо будем смотреть
  • https://t.me/clickhouse_ru
    @den_crane #224100 02:32 PM, 25 Jun 2021
    КХ тоже замедляет, вот этим
    <parts_to_delay_insert>150</parts_to_delay_insert>
    <max_delay_to_insert>5</max_delay_to_insert>
  • https://t.me/clickhouse_ru
    @den_crane #224101 02:33 PM, 25 Jun 2021
    Настройки MergeTree таблиц | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @levonet #224102 02:47 PM, 25 Jun 2021
    Привет! Вроде год назад бьіл анонс, что КХ умеет (будет уметь) по TTL вьігружать даньіе на google storage, в том числе и использовать его в качестве хранилища кусков (возможно я что-то не так помню). В документации не нашол ничего, тут по чату поиск тоже ничего не дал. Что-то подобноє реализовано, куда смотреть?
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-integrations/altinity-kb-google-s3-gcs
    https://altinity.com/blog/clickhouse-and-s3-compatible-object-storage
  • А про 120 гб в

    VmRSS: 120994988 kB
    RssAnon: 120962624 kB

    что скажете?
  • https://t.me/clickhouse_ru
    я хз что это за метрики, вам сложно в top посмотеть или ps ?
  • https://t.me/clickhouse_ru
    @den_crane #224107 03:03 PM, 25 Jun 2021
    я сколько RSS в top?
  • https://t.me/clickhouse_ru
    Спасибо, то что нужно.
  • Можно и в top
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    39117 elkadmin 20 0 139.0g 115.6g 12204 S 29.5 92.2 170:05.41 clickhouse-serv
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @kk_dev #224112 03:29 PM, 25 Jun 2021
    Привет, друзья!
    Как запретить default юзеру обращение по HTTP\API ?
    Как для нового юзера разрешить общение только по HTTP\API ?

    Разворачиаю БД через Altinity/clickhouse-operator
    Версия 20.3.7.46

    Можно ли в этом чате получить помощь по этому вопросу ?
    Если это уже где-то описано в доке, то дайте пожалуйста ссылку, офф доку уже покурил https://clickhouse.tech/docs/en/operations/settings/settings-users/ , доку оператора тоже.
    User Settings | ClickHouse Documentation

    User Settings The users section of the user.xml configuration file contains user settings. Information ClickHouse also s

  • https://t.me/clickhouse_ru
    никак. Можно выключить http вообще как порт
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #224113 #224114 03:45 PM, 25 Jun 2021
    Ясно, благодарю за ответ.
  • https://t.me/clickhouse_ru
    а зачем вам запрещать общение по http?

    clickhouse-operator для мониторинга использует 8123 порт

    может просто default пользователю пароль задать?
  • @slnnk #224118 05:56 PM, 25 Jun 2021
    Коллеги, добрый вечер, столкнулся с проблемой после перезагрузки и обновления одного из шардов:
    SELECT count()
    FROM system.replication_queue

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

    SELECT value
    FROM system.metrics
    WHERE metric = 'BackgroundSchedulePoolTask'

    ┌─value─┐
    │ 16 │
    └───────┘
    Кластер состоит из двух шардов без реплик, однако есть таблицы с движком Replicated. Пока увел запись на другой шард.
    Подскажите, в чем причина может быть?
  • https://t.me/clickhouse_ru
    @kk_dev ↶ Reply to #224116 #224119 05:58 PM, 25 Jun 2021
    как вариант... Но задача была чуть другая
  • @slnnk ↶ Reply to #224118 #224120 07:07 PM, 25 Jun 2021
    Решил проблему, не заметил в логе сообщений на каждую таблицу:
    2021.06.25 21:37:07.813047 [ 18062 ] {} <Error> logs.`.inner_id.55389c4b-9213-47b6-9fe2-da1a9eede2f1` (ReplicatedMergeTreeRestartingThread): Couldn't start replication (table will be in readonly mode): Replica /clickhouse/tables/2/logs.activity_1m_7d/replicas/10.0.9.46 appears to be already active (host: golf24, port: 9009, tcp_port: 9000, database: logs, table: .inner_id.55389c4b-9213-47b6-9fe2-da1a9eede2f1, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/2/logs.activity_1m_7d/replicas/10.0.9.46/is_active manually. Code: 224, e.displayText() = DB::Exception: Replica /clickhouse/tables/2/logs.activity_1m_7d/replicas/10.0.9.46 appears to be already active (host: golf24, port: 9009, tcp_port: 9000, database: logs, table: .inner_id.55389c4b-9213-47b6-9fe2-da1a9eede2f1, scheme: http, ). If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/2/logs.activity_1m_7d/replicas/10.0.9.46/is_active manually, Stack trace (when copying this message, always include the lines below):
    Удалил в zk is_active для всех таблиц для проблемного шарда. После рестарта replication_queue рассосалась. Вот только вопрос остался, что послужило возникновению данной проблемы...
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224121 07:30 PM, 25 Jun 2021
    Всем привет. Подскажите пожалуйста молодому бойцу на ClickHose. Как правильно удалить все данные из таблицы. Я пользуюсь Alter Table delete но это команда работает асинхронно и не гарантирует удаление данных в нужное время.
  • https://t.me/clickhouse_ru
    DROP TABLE и создать заново таблицу?
  • https://t.me/clickhouse_ru
    Truncate, как и везде
  • https://t.me/clickhouse_ru
    Этот вариант я знаю. Но хотелось бы узнать более правельный вариант.
  • https://t.me/clickhouse_ru
    Это и есть правильный.
  • https://t.me/clickhouse_ru
    @TigProg #224126 07:41 PM, 25 Jun 2021
    Ребята, удалить все данные из таблицы, не удаляя саму таблицу - это truncate table <table_name>
    https://clickhouse.tech/docs/ru/sql-reference/statements/truncate/amp/
  • https://t.me/clickhouse_ru
    Если вам не трудно пример не скинете?
  • https://t.me/clickhouse_ru
    Я же скинул ссылку на доку и пример в предыдущем соообщении
    Если таблица реплицирована, то
    TRUNCATE TABLE <table_name> ON CLUSTER cluster
  • https://t.me/clickhouse_ru
    Огромное спасибо. Помогло.
  • @mminaev #224131 08:37 PM, 25 Jun 2021
    Всем привет, такой вопрос есть таблица A и есть матвьюха на эту таблицу которая пишет в таблицу B. Если при вставке в таблицу A вылетает ошбика
    Memory limit (total) exceeded: would use 56.62 GiB (attempt to allocate chunk of 4217492 bytes), maximum: 56.62 GiB: while write prefix to view

    Запись в таблицу A произошла или нет?
  • https://t.me/clickhouse_ru
    неизвестно, возможно частично вставилось. Зависит от множества факторов, я могу воспроизвести любой вариант, нет, да, частично
  • А никакой возможности это контролировать нет?
  • https://t.me/clickhouse_ru
    нет, планируется внедрить атомарные вставки, приходите через год.
  • https://t.me/clickhouse_ru
    @ipanteleev1 #224136 09:10 PM, 25 Jun 2021
    Всем привет, подскажите, а INSERT в обычную MergeTree таблицу идет асинхронно?

    условно какая-то такая таблица CREATE TABLE {new_table_in_db} ({cols_sql}) ENGINE = MergeTree() ORDER BY tuple()

    и дальше вставляю в нее данные INSERT INTO {new_table_in_db} VALUES ... ~ 30-60к строк

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

    30-60к строк (не очень толстых) для кх -- пыль, должны быть видны почти мгновенно
  • 26 June 2021 (37 messages)
  • @1818950027 #224140 02:05 AM, 26 Jun 2021
    https://t.me/MacSoftwareFree/201
    This is a channel that focuses on Mac free cracking software. They are free forever and are updated weekly.
    Mac software crack free

    Fast, lightweight and easy-to-use PDF editor Easily complete PDF editing, reading, annotating, editing text, adding photos, filling in forms, signing contracts, merging PDF documents, and encryption protection on MAC with just a few clicks, an unprecedented experience. The latest free cracked version, and it is free forever!

  • https://t.me/clickhouse_ru
    Пользуюсь python clickhouse-driver, там по таймаутат все хорошо вроде (300 секунд)

    То есть я правильно понял что Insert все-таки синхронная операция? И сервер не вернёт мне ответ на клиент, пока вставка не будет завершена (я так понял что не для всех движков таблиц это верно, где-то вставка асинхронная)
  • https://t.me/clickhouse_ru
    Да. И да, некоторые движки/настройки могут аффектать сие поведение.
  • https://t.me/clickhouse_ru
    @brbrbr #224143 07:42 AM, 26 Jun 2021
    Подскажите, пожалуйста, а есть ли какая-нибудь разница в работе табличного TTL для таблиц с партиционированием и без партиционированием?
  • https://t.me/clickhouse_ru
    Разница будет только в случае включения настройки ttl_only_drop_parts, тогда кх сможет дропать парты сразу, а не сканировать и фильтровать, что бесплатно
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #224144 #224145 07:45 AM, 26 Jun 2021
    Но в этом случае TTL по сути будет немного увеличен до того же порядка, что и ключ партиционирования. В смысле если TTL в днях, а ключ партиционирования toYYYYMM, то записи будут жить до конца месяца, верно?
  • https://t.me/clickhouse_ru
    Да, ну если TTL в днях, скорее всего вам и месячные партиции могут быть не нужны
  • https://t.me/clickhouse_ru
    @unamedrus #224147 07:45 AM, 26 Jun 2021
    Недельные-дневные
  • https://t.me/clickhouse_ru
    @brbrbr #224148 07:45 AM, 26 Jun 2021
    Ага, понял, спасибо.
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224150 09:41 AM, 26 Jun 2021
    Всем привет. Помогите правильно мигрировать данные из одной таблицы в другую. Но нада мигрировать те данные которых нет в другой таблице. Данных в таблице назначения около 300 милион а таблице из которого нужно мигрировать 10000 постоянно, потом эти данные удаляются и заполняются новыми. Я написал такой запрос "insert into table1 (col1,col2) select tt.col1, tt.col2 from table_temp tt where tt.col1 not in (select t1.col1 from table1 t1)" но этот запрос работает очень долго. Сложность квадратичная.
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224151 09:41 AM, 26 Jun 2021
    .
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224152 09:42 AM, 26 Jun 2021
    Всем привет. Помогите правильно мигрировать данные из одной таблицы в другую. Но нада мигрировать те данные которых нет в другой таблице. Данных в таблице назначения около 300 милион а таблице из которого нужно мигрировать 10000 постоянно, потом эти данные удаляются и заполняются новыми. Я написал такой запрос "insert into table1 (col1,col2) select tt.col1, tt.col2 from table_temp tt where tt.col1 not in (select t1.col1 from table1 t1)" но этот запрос работает очень долго. Сложность квадратичная.
  • https://t.me/clickhouse_ru
    Почему квадратичная? Просто надо сначала всё прочитать из таблицы table1, потом прочитать из table_temp и пофильтровать
  • https://t.me/clickhouse_ru
    @nyoroon #224154 09:48 AM, 26 Jun 2021
    Не думаю что можно как-то проще сделать
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224155 09:49 AM, 26 Jun 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
    Хотелось бы по точнее узнать как. Я новичок в Clickhouse
  • https://t.me/clickhouse_ru
    ищите в доке команду optimize
  • @SonFire #224162 10:22 AM, 26 Jun 2021
    Подскажите как записывать Point в pd.Dataframe, чтоб передать через clickhouse_driver.Client.insert_dataframe?
  • https://t.me/clickhouse_ru
    Спасибо.
  • https://t.me/clickhouse_ru
    Я протестировал OPTIMIZE. С маленькими данными все нормально работает. но при больших данных, около 300 милионнов строк возникает ошибка.
    SQL Error [159]: ClickHouse exception, code: 159, host: localhost, port: 8123; Read timed out
  • https://t.me/clickhouse_ru
    @75280400 #224167 04:35 PM, 26 Jun 2021
    партиции указываете ?
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224168 04:36 PM, 26 Jun 2021
    в примерах не было я даже не знаю как их указывать
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224169 04:38 PM, 26 Jun 2021
    OPTIMIZE TABLE table1 FINAL DEDUPLICATE BY col1, col2 , col3;
  • https://t.me/clickhouse_ru
    @75280400 #224170 04:43 PM, 26 Jun 2021
    всю таблицу это долго. Очень долго
  • https://t.me/clickhouse_ru
    @75280400 #224171 04:44 PM, 26 Jun 2021
    надо указать конкретные партиции
  • https://t.me/clickhouse_ru
    Это клиент по таймауту отпадает. Но оптимайз идёт в бекграунде, вроде
  • https://t.me/clickhouse_ru
    @Muradnetpeak #224173 04:48 PM, 26 Jun 2021
    Optimize проходит после 3 попыток и в каждый раз бросает ошибку
  • https://t.me/clickhouse_ru
    @75280400 #224175 05:17 PM, 26 Jun 2021
    смотрите настройки timeout
  • https://t.me/clickhouse_ru
    Дайте ему быстрый и честный бан
  • https://t.me/clickhouse_ru
    Это мне что ли?
  • https://t.me/clickhouse_ru
    @vmaxlog #224183 06:35 PM, 26 Jun 2021
    всем привет. что можно с этим сделать ?

    DROP TABLE IF EXISTS job_posts.final_job_posts;
    RENAME TABLE job_posts.final_job_posts_tmp TO job_posts.final_job_posts;

    и получаю
    DB::Exception: WRITE locking attempt on "job_posts.final_job_posts_tmp" has timed out! (120000ms) Possible deadlock avoided. Client should retry..
  • https://t.me/clickhouse_ru
    Possible deadlock avoided. такое я встречал. правда, в другом контексте. лечил рестартом )
  • https://t.me/clickhouse_ru
    Ну в логе ж написано) уже есть мутация, которая не до конца выполнилась, а когда новая мутация пришла на таблицу, то по таймауту старая не завершилась и вот и эксепшн
    select * from system.mutations where table = '...' and is_done = 0
  • 27 June 2021 (16 messages)
  • https://t.me/clickhouse_ru
    @vmaxlog #224193 11:09 AM, 27 Jun 2021
    добрый день.

    CREATE TABLE job_posts.final_job_posts_tmp
    ENGINE = MergeTree()
    ORDER BY id
    SETTINGS index_granularity = 8192 AS
    SELECT * FROM job_posts.job_posts

    далее делаю DROP TABLE IF EXISTS job_posts.final_job_posts;

    удаляются обе job_posts.final_job_posts_tmp и job_posts.final_job_posts;
  • https://t.me/clickhouse_ru
    @vmaxlog #224194 11:09 AM, 27 Jun 2021
    как исправить ?
  • @kreuzerkrieg #224196 11:24 AM, 27 Jun 2021
    а можно как то запретить КХ мерджить парты?
  • https://t.me/clickhouse_ru
    SYSTEM STOP MERGES
  • https://t.me/clickhouse_ru
    start потом сделать не забудьте
    а вам это зачем? у вас что-то случилось?
  • https://t.me/clickhouse_ru
    в новых версиях можно на определенных дисках запретить мержить парты
  • https://t.me/clickhouse_ru
    @lnuynxa #224200 11:45 AM, 27 Jun 2021
    Added `disable_merges` option for volumes in multi-disk configuration by excitoon · Pull Request #13956 · 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...

  • как всегда :)
    что то накапливает память, пытаюсь отследить, мерджи слишком много шума вносят
  • Пасиб, про SYSTEM я и забыл
  • https://t.me/clickhouse_ru
    есть глобальный memory profiling

    <!-- memory profiling for each query, dump stack trace when 1MiB allocation with query_id not empty
    Whenever query memory usage becomes larger than every next step in number of bytes the memory profiler
    will collect the allocating stack trace.
    Zero means disabled memory profiler.
    Values lower than a few megabytes will slow down query processing.
    -->
    <memory_profiler_step>1048576</memory_profiler_step>
    <!-- Small allocations and deallocations are grouped in thread local variable and tracked or profiled only
    when amount (in absolute value) becomes larger than specified value.
    If the value is higher than 'memory_profiler_step' it will be effectively lowered to 'memory_profiler_step'.
    -->
    <max_untracked_memory>1048576</max_untracked_memory>
    <!-- Collect random allocations and deallocations and write them into system.trace_log with 'MemorySample' trace_type.
    The probability is for every alloc/free regardless to the size of the allocation.
    Note that sampling happens only when the amount of untracked memory exceeds 'max_untracked_memory'.
    You may want to set 'max_untracked_memory' to 0 for extra fine grained sampling. -->
    <memory_profiler_sample_probability>0.01</memory_profiler_sample_probability>

    и потом через system.trace_log
    пробуем посмотреть где больше всего памяти аллоицируется

    https://github.com/Slach/clickhouse-flamegraph/

    если probability чуть побольше поставить чем 0.01 можно попробовать поймать

    правда наверное это все таки будет аффектить скорость выполнения запросов
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

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

  • @kreuzerkrieg #224204 01:09 PM, 27 Jun 2021
    👍
  • https://t.me/clickhouse_ru
    @EvilDream #224209 08:52 PM, 27 Jun 2021
    Всех приветствую. Назрел такой вопрос, в процессе работы изменял enum, добавлял новое значение в конец.
    Так вот, переносил данные на другой хост - обнаружил что старые PARTITION ругаются на то, что енум отличается. Есть идеи как с этим бороться?
    У меня идея только деаттачнуть все партиции, изменить к старому виду, аттачнуть старые, после изменить к новому виду и аттачнуть новые партиции.
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    /report
  • https://t.me/clickhouse_ru
    а данных много?

    если нет, то можно приатачить каждый срез (набор партиций) таблицы к своей таблице со своим ddl (например по дату1 в таблицу с enum v1, с даты1 по дату2 в таблицу с enum v2 и т.д.)
    позже insert select в целевую таблицу с enum vN
    таким образом, вы во всех партициях поднимите версию enum до актуальной и при следующем переносе не нужно будет повторять эту рутину

    но я не настоящий пользователь ch, завтра мб что получше посоветуют
    к тому же у вас мб пара петабайт данных
  • https://t.me/clickhouse_ru
    старые парты ругаются на хосте где был альтер? или что? какая версия КХ ?
  • 28 June 2021 (122 messages)
  • @ShDinar #224218 02:38 AM, 28 Jun 2021
    Добрый день!
    В Кликхаузе прописывается где-то тайм зона?
    Почему то в Кликхаузе одно дата-время, тотбражается в Дата Ленз другое.
    Плюс 1 или 2 часа.
    У меня ТЗ МСК+2 - из-за этого тоже нюансы какие то могут быть?
    Спасибо!
  • https://t.me/clickhouse_ru
    SELECT toTypeName(your_datetime_field);

    https://clickhouse.tech/docs/en/sql-reference/data-types/datetime/

    есть поля с TZ есть без TZ
    если поле без TZ то входящее строковое интерпретируется как время в системной TZ установленной на сервере где
    SELECT timeZone()
    покажет какая TZ в clickhouse для полей по умолчанию

    что касается того как DataLens данные показывает, это лучше задать в поддержку Yandex Cloud сразу вопрос =)
    https://console.cloud.yandex.ru/support
    DateTime | ClickHouse Documentation

    Datetime Allows to store an instant in time, that can be expressed as a calendar date and a time of a day. Syntax: DateT

  • Спасибо! Буду пробовать
  • https://t.me/clickhouse_ru
    20.8.9. Нет, старые парты также переносятся на новый хост, и вот на новом хосте при попытке аттача старого парта - происходит такая ошибка
  • https://t.me/clickhouse_ru
    Данных примерно 1-2 тб, (где старые енумы), рассмотрю также ваш вариант, спасибо)
  • https://t.me/clickhouse_ru
    @sergeykilin1 #224225 08:03 AM, 28 Jun 2021
    Добрый день. Подскажите пожалуйста если в ClickHouse стандартные функции опредления GeoIP?
  • https://t.me/clickhouse_ru
    нет, но можно посмотреть в сторону ip_trie словаря
  • https://t.me/clickhouse_ru
    Благодарю
  • https://t.me/clickhouse_ru
    @ARyndin #224228 08:21 AM, 28 Jun 2021
    Всем привет. Подскажите, как правильно запускать мутации для удаления данных в случае ReplicatedMergeTree, нужно запускать ON CLUSTER или удаление тоже отреплицируется?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224228 #224229 08:28 AM, 28 Jun 2021
    Насколько я знаю мутации выполняются на все партиции (кластер) так как они пишут таски в зукипер а на зукипер смотрят все реплики, так что скорее всего нет явной необходимости. Но могу ошибаться
  • https://t.me/clickhouse_ru
    в доке примерно это поведение описано + есть опция mutations_sync
    просто столкнулись с очень странной проблемой — после переезда таблиц на реплицированный движок, мутация + последующая вставка рапортует что всё ок, а данных нет
  • https://t.me/clickhouse_ru
    @ZWastler #224231 08:33 AM, 28 Jun 2021
    Всем привет, подскажите что делать с зависшими партами в replication_queue?
    Code: 234, e.displayText() = DB::Exception: No active replica has part all_1965828_1989252_20297 or covering part (version 21.6.5.37 (official build))
    Все ошибки на одну реплику, Attach/detach, SYSTEM RESTART REPLICAS не помогает. Replication lag растет.
  • https://t.me/clickhouse_ru
    Мутации работают на шард и его реплики, где была запущена мутация (без on cluster)

    У нас раньше были проблемы с on cluster, что-то висло постоянно (если отдельно на каждом шарду запускали, все ок) после обновления , ещё тогда до 20.8, вроде прошла болячка и on cluster норм начал отрабатывать
  • https://t.me/clickhouse_ru
    Не совсем) там у зукипера структура ЗК нод с нумерацией шардов (0..n) и мутация на шард(все реплики) идёт.
  • https://t.me/clickhouse_ru
    @809096964 #224235 10:09 AM, 28 Jun 2021
    Коллеги, всем привет... Не поможете с ошибкой - ранее похожие в чате были, да не такие - Received exception from server (version 21.6.5):
    Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 14.90 GiB (attempt to allocate chunk of 4255066 bytes), maximum: 14.90 GiB: (avg_value_size_hint = 19, avg_chars_size = 13.2, limit = 7412): (while reading column deviceVendor): (while reading from part /var/lib/clickhouse/data/cef_storage/cef_data/20210607_996350_1040287_637/ from mark 29042 with max_rows_to_read = 7412): While executing MergeTreeReverse. - и многие пишут про параметры типа max_bytes_before_external_group_by - где ими управлять (ни в config.xml, ни в users.xml не нахожу таких) - спасибо
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224235 #224236 10:13 AM, 28 Jun 2021
    настройки профайла?
  • https://t.me/clickhouse_ru
    @solard #224237 10:16 AM, 28 Jun 2021
    profile.xml

    <profiles>
    <myprofile>
    <max_bytes_before_external_group_by>19000000000</max_bytes_before_external_group_by>
    </myprofile>
    </profiles>
  • https://t.me/clickhouse_ru
    @solard #224238 10:16 AM, 28 Jun 2021
    19 GB например
  • https://t.me/clickhouse_ru
    @solard #224239 10:16 AM, 28 Jun 2021
    Restrictions on Query Complexity | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    спасибо, а ошибка Received exception from server (version 21.6.5):
    Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 14.90 GiB (attempt to allocate chunk of 4255066 bytes), maximum: 14.90 GiB: (avg_value_size_hint = 19, avg_chars_size = 13.2, limit = 7412): (while reading column deviceVendor): (while reading from part /var/lib/clickhouse/data/cef_storage/cef_data/20210607_996350_1040287_637/ from mark 29042 with max_rows_to_read = 7412): While executing MergeTreeReverse. с чем может быть связана? - возникает при обращении к таблице select (при этом при обращении к ней же через view ошибки нет, но результат получаю через 700 сек)
  • https://t.me/clickhouse_ru
    @ImZonG #224241 10:21 AM, 28 Jun 2021
    Добрый день, подскажите пожалуйста, а в ch нет ли какой возможности выдавать права на таблицы с маской по имени? Что-то вроде:
    grant select on default.rows_stat_*_table
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224240 #224242 10:21 AM, 28 Jun 2021
    Я думаю это банально для выборки не хватило оперативки
  • https://t.me/clickhouse_ru
    @solard #224243 10:24 AM, 28 Jun 2021
    Насколько я понимаю через вьюхи по другому обращение к данным в таблицах происходит
  • https://t.me/clickhouse_ru
    и увеличение max_memory_usage не помогает
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224244 #224245 10:25 AM, 28 Jun 2021
    А вы точно для необходимого юзера меняете параметр?
  • https://t.me/clickhouse_ru
    @chubukov #224246 10:26 AM, 28 Jun 2021
    Привет!
    Пытаюсь скачать данные из кх по http, результат которого не влезает в оперативку машины, где установлен кх.

    Подскажите это возможно сделать?
    Пытаюсь обратиться вот с такими параметрами, но без результата(
    http://{ch_ip}:8123/?enable_http_compression=1&wait_end_of_query=1&buffer_size=21474836480
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224246 #224247 10:29 AM, 28 Jun 2021
    Возможно этот ищью даст понимание картины в вашей ситуации
  • https://t.me/clickhouse_ru
    @solard #224248 10:29 AM, 28 Jun 2021
    How to limit the memory usage but still get the query running? · Issue #8067 · ClickHouse/ClickHouse

    Hello community! first of all, congrats for the great work! I find incredible the pace of releases ClickHouse has, and I think this is possible thanks to the great effort of the community contribut...

  • https://t.me/clickhouse_ru
    Спасибо.

    Сам запрос выполняется, вот такие сетинги использую:
  • https://t.me/clickhouse_ru
    ```join_algorithm = 'auto',
    max_memory_usage=107374182400,
    max_bytes_before_external_group_by=21474836480,
    max_bytes_before_external_sort=21474836480,
    max_execution_time = 3600,
    max_rows_in_join = 0,
    max_bytes_in_join = 10737418240``
  • https://t.me/clickhouse_ru
    @chubukov #224251 10:33 AM, 28 Jun 2021
    кажется что перед отправкой он весь результат все равно пытается засунуть в оперативку (
  • https://t.me/clickhouse_ru
    @solard #224252 10:34 AM, 28 Jun 2021
    Так и есть, в любом случае он будет в оперативке агрегировать выборку
  • https://t.me/clickhouse_ru
    Спасибо, жаль
  • https://t.me/clickhouse_ru
    А как понимать тогда назначения параметров wait_end_of_query=1 и buffer_size= ?
  • https://t.me/clickhouse_ru
    @chubukov #224255 10:43 AM, 28 Jun 2021
    HTTP-интерфейс | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @IgorArdashev #224256 10:47 AM, 28 Jun 2021
    /report
  • https://t.me/clickhouse_ru
    @Gulshan5k #224259 11:05 AM, 28 Jun 2021
    Всем добрый день! Можете пожалуйста посоветовать надежную In-memory субд желательно opensource для осуществления join'ов данных из КХ?
  • trino
  • https://t.me/clickhouse_ru
    Спасибо!! Раньше не слышала оказывается о такой, поизучаем!
  • Это же бывший presto я так понял?
  • да
  • https://t.me/clickhouse_ru
    @ilejn #224265 12:10 PM, 28 Jun 2021
    Добрый день,
    не получается заставить работать пример из документации про TTL столбца https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#mergetree-column-ttl

    Если создать таблицу
    CREATE TABLE example_table
    (
    d DateTime,
    a Int TTL d + INTERVAL 1 MONTH,
    b Int TTL d + INTERVAL 1 MONTH,
    c String
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(d)
    ORDER BY d;
    Потом засунуть в нее
    insert into example_table values ('2018-01-01 10:10:10', 1,2,'10') , ('2028-01-01 10:10:10', 1,2,'10');
    То сколько ни делай OPTIMIZE example_table FINAL, числа в первой строке не превратятся в нули.
    А вот без PARTITION BY toYYYYMM(d) все работает ожидаемым образом.
    Вижу это в master и в 21.3

    Это баг/фича/моя криворукость/что-то еще?
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    мержи идут внури одной партиции...
  • https://t.me/clickhouse_ru
    @ilejn #224267 12:13 PM, 28 Jun 2021
    Это факт. Но что он объясняет?
  • https://t.me/clickhouse_ru
    выглядит так, что у вас просто нечему мержиться
    и TTL не применяется
    одна строка в партиции...
  • https://t.me/clickhouse_ru
    но вообще странно конечно, OPTIMIZE ... FINAL вроде все равно должен парт вычитывать и TTL применять
  • https://t.me/clickhouse_ru
    @BloodJazMan #224270 12:16 PM, 28 Jun 2021
    попробуйте
    SET send_logs_level='trace';
    OPTIMIZE table FINAL;

    сравнить с PARTITION BY и без него
  • select * from system.merge_tree_settings mts where name like 'ttl_only_drop_parts';
    во что выставлено по умолчанию
  • https://t.me/clickhouse_ru
    @ilejn #224272 12:19 PM, 28 Jun 2021
    ┌─name────────────────┬─value─┬─changed─┬─description──────────────────────────────────────────────────────────┬─type─┐
    │ ttl_only_drop_parts │ 0 │ 0 │ Only drop altogether the expired parts and not partially prune them. │ Bool │
    └─────────────────────┴───────┴─────────┴──────────────────────────────────────────────────────────────────────┴──────┘
  • https://t.me/clickhouse_ru
    тут вроде не TABLE TTL а COLUMN TTL ;)
    но да, можно потеребонькать настроечку
  • Ну я попытался, предположил что оно вообще не трогает парт когда флаг выставлен...

    Но у товарища 0. Поэтому мимо
  • https://t.me/clickhouse_ru
    @ilejn #224275 12:24 PM, 28 Jun 2021
    Да, ноль лучше.
    Я попробовал true, но ничего не изменилось.
  • https://t.me/clickhouse_ru
    @ilejn #224276 12:25 PM, 28 Jun 2021
    Что касается совета про trace, то ОК, скоро к этому приду ;)
  • https://t.me/clickhouse_ru
    @ilejn #224277 12:27 PM, 28 Jun 2021
    Можно попросить кого-нибудь это воспроизвести?
    Если я один свидетель неудаления по TTL, это одна история, если это общее поведение, то другая.
  • Это скорее не баг, а неожиданное поведение)
    Тут дело в том, что при удалении столбца целиком ничего не вычисляется, а столбец просто дропается. Но в компактных кусках (по-умолчанию до 10МБ), чтобы это сделать, нужно переписать кусок полностью, что слишком затратно, поэтому ничего не удаляется. На реальных данных компактные куски живут недолго, потому что мержаться в широкие, а на них TTL уже применяется и это поведение почти незаметно. Но на маленьких примерах выглядит так, как будто ничего не работает. Надо исправить, наверное.

    Например, такое работает:
    https://pastebin.com/MZQRZUq7
    CREATE TABLE example_table( `d` DateTime, `a` Int TTL d + toInterval - Pastebin.com

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

  • https://t.me/clickhouse_ru
    @ilejn #224279 12:35 PM, 28 Jun 2021
    Понял, большое спасибо за пояснение.
  • да, а может и не надо исправлять )
  • Да, заменяются только database/table.
    остальные остаются макросами...
  • https://t.me/clickhouse_ru
    dremio?
  • @s_panfilova #224284 03:24 PM, 28 Jun 2021
    У нас кликхаус используется как основная база на критическом пути, где мы храним транзакции, не чисто аналитический солюшн. И вот дело дошло до того, чтобы выдать ее аналитикам с их произвольно написанными квирями и с непонятным профилем нагрузки. У нас два шарда, 8 боксов. Я вот думаю, можно ли как-то изолировать часть боксов чисто для аналитического использования, чтобы если они что-то завалят, то импакт на приложение был минимальный? Или так делать не надо и нужно настраивать программную репликацию в отдельный кластер? Профили для «аналитиков» мы нарисуем отдельные, но все равно страшно их пускать в базу приложения
  • @s_panfilova #224285 03:26 PM, 28 Jun 2021
    Мы попробовали на двух боксах конфиги, в которых эти боксы как бы изолированы. Казалось, что репликация и вообще кластер должен сломаться, но все работает, при этом пользователи остаются в пределах этих боксов
  • https://t.me/clickhouse_ru
    Сделать отдельный инстанс для аналитиков, или машину... Но вообще есиь же RBAC и grant
  • https://t.me/clickhouse_ru
    @critskiy #224287 03:28 PM, 28 Jun 2021
    Вам просто ограничить на табличном или бд уровне, имхо
  • https://t.me/clickhouse_ru
    @critskiy #224288 03:28 PM, 28 Jun 2021
    И только на чтение для аналитиков
  • https://t.me/clickhouse_ru
    тут видимо очень хочется чтобы чтение аналитиков не убило вставки \ чтения для основного pipeline
  • https://t.me/clickhouse_ru
    ограничьте аналитикам max_execution_time
    и max_memory_usage
    для начала
  • https://t.me/clickhouse_ru
    Тогда я б разграничил и разбил, возможно для аналитиков вывел бы в отдельный инстанс, по сути, репликация.
    Чтение аналитиков, - ну тут отчасти проблема в первичном ключе сортировки может быть :)
  • https://t.me/clickhouse_ru
    @critskiy #224292 03:29 PM, 28 Jun 2021
    Но эт все имхо)
  • Да, именно про это вопрос
  • Да, это первое что в голову приходит, но почему-то ещё хочется их убрать куда-то отдельно, при этом не создавая новый кластер
  • https://t.me/clickhouse_ru
    дальше смотрите за нагрузкой со стороны основной pipeline
    будет тормозить стопните нагрйзку аналитики
    и организуйте им отдельный cluster для distributed в remote_servers
    куда будет только их чтение от них прилетать
    и репликация из ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    Репликация replicated работает без кластеров - через зукипер. Я бы в таком случае к каждому шарду подцепил бы по 1 ноде и на них настроил бы Replicated таблицы, но в кластер эти ноды не добавлял бы. Если читаете из Distributed то сделать из этих 2 нод отдельный кластер со своими Distributed и пусть аналитики оттуда кверятся.
  • https://t.me/clickhouse_ru
    а в чем проблема то?
    одни и теже хосты могут входить в разные кластера

    кластера и репликация ортогональны
  • https://t.me/clickhouse_ru
    Да просто сразу реализовать, кмк. :)
  • О как интересно!
  • https://t.me/clickhouse_ru
    =)
    ну, IMHO степень влияния adhoc запросов часто сильно преувеличена
    аналитики их делают не так часто как принято думать =)
  • Фантастика какая-то, я не знала, что так можно, пошла читать, спасибо!
  • https://t.me/clickhouse_ru
    Да, но тут еще зависит и от них самих, i.e. я б задался вопросом, а почему они убивают один раз базу, если вы должным образом их не обучили, ну или же попробовать отказаться от КХ или подумать над хранением данных. Но это уже уровень более бизнесово-сеньорный :)
  • По-разному бывает, бывает что кто какой-то табло репорт рисует, а в это время графики на юае начинают тормозить
  • https://t.me/clickhouse_ru
    @critskiy #224304 03:37 PM, 28 Jun 2021
    Уууу, ну точно подумать над хранением данных, вероятно переделать или хранение транзакций, или аналитиков :)
  • https://t.me/clickhouse_ru
    @aleksandrdenisov #224306 04:00 PM, 28 Jun 2021
    Всем привет.
    У меня есть dt (UTC)|shipment_id|time_zone
    Хочу посчитать распределение количества заказов по часам. Для Москвы работает toHour(shipped_at, 'Europe/Moscow'). Если в tz засунуть аргумент, то ругается. Как быть?
  • https://t.me/clickhouse_ru
    @Elena_ru_bg #224307 04:08 PM, 28 Jun 2021
    Привет!
    Подскажите: как сделать последовательность datetime’oв в заданном интервале.
    что-то вроде timeSlots, только чтобы получить не array, а “столбец” на который потом можно поджойниться
  • SELECT some_date - arrayJoin(range(toUInt16(duration+1))) as date
  • https://t.me/clickhouse_ru
    так и делайте timeslots + arrayJoin
  • https://t.me/clickhouse_ru
    @zholmyrza_t #224310 04:16 PM, 28 Jun 2021
    Приветствую всех!
    Подскажите пожалуйста, на двух нодах из 30, выполнилась внеплановая перезагрузка с такими логами:
    2021.06.25 11:51:00.126556 [ 292156 ] {} <Fatal> BaseDaemon: (version 21.3.7.62 (official build), build id: 935A293066A3B70BC15412A2AC994369BDF672A9) (from thread 79272) Terminate called for uncaught exception:
    Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 394, Stack trace (when copying this message, always include the lines below):

    0. DB::WriteBufferFromOStream::nextImpl() @ 0x8711020 in /usr/bin/clickhouse
    1. DB::WriteBufferFromHTTPServerResponse::nextImpl() @ 0xf8f4aa0 in /usr/bin/clickhouse
    2. DB::WriteBufferFromHTTPServerResponse::finalize() @ 0xf8f5092 in /usr/bin/clickhouse
    3. DB::WriteBufferFromHTTPServerResponse::~WriteBufferFromHTTPServerResponse() @ 0xf8f5726 in /usr/bin/clickhouse
    4. DB::HTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0xf867c96 in /usr/bin/clickhouse
    5. DB::HTTPServerConnection::run() @ 0xf8ed8af in /usr/bin/clickhouse
    6. Poco::Net::TCPServerConnection::start() @ 0x11f983bf in /usr/bin/clickhouse
    7. Poco::Net::TCPServerDispatcher::run() @ 0x11f99dd1 in /usr/bin/clickhouse
    8. Poco::PooledThread::run() @ 0x120d04f9 in /usr/bin/clickhouse
    9. Poco::ThreadImpl::runnableEntry(void*) @ 0x120cc35a in /usr/bin/clickhouse
    10. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    11. clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
    (version 21.3.7.62 (official build))
    2021.06.25 11:51:00.129613 [ 233384 ] {} <Fatal> BaseDaemon: ########################################
    2021.06.25 11:51:00.129697 [ 233384 ] {} <Fatal> BaseDaemon: (version 21.3.7.62 (official build), build id: 935A293066A3B70BC15412A2AC994369BDF672A9) (from thread 79272) (query_id: 69c2b7d9-f866-49ca-99ad-c3b99279300d) Received signal Aborted (6)
    2021.06.25 11:51:00.129738 [ 233384 ] {} <Fatal> BaseDaemon:
    2021.06.25 11:51:00.129769 [ 233384 ] {} <Fatal> BaseDaemon: Stack trace: 0x7f7f6371b387 0x7f7f6371ca78 0x87d3178 0x13ae28c3 0x13ae286c 0x8616ceb 0xf8f588d 0xf867c96 0xf8ed8af 0x11f983bf 0x11f99dd1 0x120d04f9 0x120cc35a 0x7f7f63abaea5 0x7f7f637e38dd
    2021.06.25 11:51:00.129873 [ 233384 ] {} <Fatal> BaseDaemon: 1. gsignal @ 0x36387 in /usr/lib64/libc-2.17.so
    2021.06.25 11:51:00.129918 [ 233384 ] {} <Fatal> BaseDaemon: 2. abort @ 0x37a78 in /usr/lib64/libc-2.17.so
    2021.06.25 11:51:00.129962 [ 233384 ] {} <Fatal> BaseDaemon: 3. ? @ 0x87d3178 in /usr/bin/clickhouse
    2021.06.25 11:51:00.130031 [ 233384 ] {} <Fatal> BaseDaemon: 4. ? @ 0x13ae28c3 in ?
    2021.06.25 11:51:00.130626 [ 233384 ] {} <Fatal> BaseDaemon: 5. std::terminate() @ 0x13ae286c in ?
    2021.06.25 11:51:00.130655 [ 233384 ] {} <Fatal> BaseDaemon: 6. ? @ 0x8616ceb in /usr/bin/clickhouse
    2021.06.25 11:51:00.130683 [ 233384 ] {} <Fatal> BaseDaemon: 7. DB::WriteBufferFromHTTPServerResponse::~WriteBufferFromHTTPServerResponse() @ 0xf8f588d in /usr/bin/clickhouse
    2021.06.25 11:51:00.130707 [ 233384 ] {} <Fatal> BaseDaemon: 8. DB::HTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0xf867c96 in /usr/bin/clickhouse
    2021.06.25 11:51:00.130727 [ 233384 ] {} <Fatal> BaseDaemon: 9. DB::HTTPServerConnection::run() @ 0xf8ed8af in /usr/bin/clickhouse
    2021.06.25 11:51:00.130748 [ 233384 ] {} <Fatal> BaseDaemon: 10. Poco::Net::TCPServerConnection::start() @ 0x11f983bf in /usr/bin/clickhouse
    2021.06.25 11:51:00.130767 [ 233384 ] {} <Fatal> BaseDaemon: 11. Poco::Net::TCPServerDispatcher::run() @ 0x11f99dd1 in /usr/bin/clickhouse
    2021.06.25 11:51:00.130787 [ 233384 ] {} <Fatal> BaseDaemon: 12. Poco::PooledThread::run() @ 0x120d04f9 in /usr/bin/clickhouse
    2021.06.25 11:51:00.130806 [ 233384 ] {} <Fatal> BaseDaemon: 13. Poco::ThreadImpl::runnableEntry(void*) @ 0x120cc35a in /usr/bin/clickhouse
    2021.06.25 11:51:00.130831 [ 233384 ] {} <Fatal> BaseDaemon: 14. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    2021.06.25 11:51:00.130850 [ 233384 ] {} <Fatal> BaseDaemon: 15. clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
  • https://t.me/clickhouse_ru
    @zholmyrza_t #224311 04:16 PM, 28 Jun 2021

    2021.06.25 11:51:00.272516 [ 233384 ] {} <Fatal> BaseDaemon: Checksum of the binary: 6335512ED027A1EA91E511FEF0C66B68, integrity check passed.
    2021.06.25 11:51:21.669021 [ 292154 ] {} <Fatal> Application: Child process was terminated by signal 6.
    кто нибудь сталкивался с подобным?
  • https://t.me/clickhouse_ru
    посмотрите grep -r "69c2b7d9-f866-49ca-99ad-c3b99279300d" /var/log/clickhouse-server/
    или в system.query_log поищите что за запрос был

    еще попробуйте вот это
    https://t.me/clickhouse_ru/215415
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    проблема в 21.4 я правильно понял? попробуйте cat /etc/clickhouse-server/users.d/dis_async.xml <?xml version="1.0" ?> <yandex> <profiles> <default> <async_socket_for_remote>0</async_socket_for_remote> <use_hedged_requests>0</use_hedged_requests> </default> </profiles> </yandex> там баг в ядрах ниже 5...чего-то

  • https://t.me/clickhouse_ru
    нашёл в query log, запрос select ничем непримечательный от других запросов
  • https://t.me/clickhouse_ru
    запрос самостоятельный? или часть distributed запроса? initial_query_id какой?
  • https://t.me/clickhouse_ru
    хотя не, это не distributed тогда бы HTTP в stacktrace не было
  • https://t.me/clickhouse_ru
    в distributed таблицу запрос выполнялся, у нас запросы по http идут
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/215415
    вот из "странного" могу посоветовать включить и посмотреть , но это так, квадратно гнездовым методом...
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    проблема в 21.4 я правильно понял? попробуйте cat /etc/clickhouse-server/users.d/dis_async.xml <?xml version="1.0" ?> <yandex> <profiles> <default> <async_socket_for_remote>0</async_socket_for_remote> <use_hedged_requests>0</use_hedged_requests> </default> </profiles> </yandex> там баг в ядрах ниже 5...чего-то

  • https://t.me/clickhouse_ru
    @ARyndin #224319 04:48 PM, 28 Jun 2021
    Можно ли создавать Replicated таблицы в базах данных разного типа — Ordinary и Atomic в другом инстанце?
    Оно вроде работает, но есть ли последствия?
  • https://t.me/clickhouse_ru
    numbers | Документация ClickHouse

    numbers numbers(N) - возвращает таблицу с единственным столбцом number (UInt64), содержащим натуральные числа от 0 до N-

  • https://t.me/clickhouse_ru
    @Mikhastos #224322 05:58 PM, 28 Jun 2021
    Добрый день! Подскажите, для отказоустойчивости кластера из двух реплик есть необходимость ставить Zookeeper, или Ch сам справится?
  • https://t.me/clickhouse_ru
    Необходимо. Без него не заведётся репликация и ddl запросы с модификатором on cluster
  • https://t.me/clickhouse_ru
    Благодарю!
  • https://t.me/clickhouse_ru
    @MakeReady #224325 06:09 PM, 28 Jun 2021
    Добрый день! Есть ли функция для нахождения максимума среди сумм. Например есть продажи с датой и временем. И нужен максимум среди суточных сумм
  • https://t.me/clickhouse_ru
    вложенным select не то ?
  • https://t.me/clickhouse_ru
    @MakeReady #224327 06:18 PM, 28 Jun 2021
    так то да, можно вложенным, но мало ли, может функция есть
  • https://t.me/clickhouse_ru
    через массивы не получается сделать?
  • https://t.me/clickhouse_ru
    @MakeReady #224330 07:29 PM, 28 Jun 2021
    это как? каждай строка это дата-время, число. Нужен максимум из сумм за сутки
  • https://t.me/clickhouse_ru
    тебе нужна табличка в итоге
    в одной колонке даты, в другой - максимальная сумма в этот день?
  • https://t.me/clickhouse_ru
    @MakeReady #224332 07:48 PM, 28 Jun 2021
    табличка суммы за сутки по которой можно взять максимум за выбранный период.
  • https://t.me/clickhouse_ru
    @orloffv #224333 07:49 PM, 28 Jun 2021
    2020-20-20 10000
    2020-20-21 12000
    2020-20-23 13000
    ...?
  • https://t.me/clickhouse_ru
    @MakeReady #224334 07:49 PM, 28 Jun 2021
    ну то есть понятно как это сделать с подзапросом. Вопрос можно ли без подзапроса
  • https://t.me/clickhouse_ru
    да, и максимум с 20 по 23 - 13000
  • https://t.me/clickhouse_ru
    @MakeReady #224336 07:50 PM, 28 Jun 2021
    но 13 000 получается как сумма 2020-20-23 - 3000 + 2020-20-23 - 5000 + 2020-20-23 = 5000
  • https://t.me/clickhouse_ru
    @MakeReady #224337 07:51 PM, 28 Jun 2021
    суммы продаж за сутки и максимум продаж в сутки за период
  • https://t.me/clickhouse_ru
    @orloffv #224338 07:52 PM, 28 Jun 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
    @unamedrus #224343 08:00 PM, 28 Jun 2021
    WINDOW functions
  • https://t.me/clickhouse_ru
    почти то что нужно)
  • https://t.me/clickhouse_ru
    @MakeReady #224345 08:01 PM, 28 Jun 2021
    спасибо, поковыряю
  • https://t.me/clickhouse_ru
    спасибо! смотрю
  • https://t.me/clickhouse_ru
    @kotpeter #224347 09:12 PM, 28 Jun 2021
    Нашёл такой баг:

    Есть табличка some_data (country, currency, amount_usd)

    Хочу сделать на неё rollup по стране:

    SELECT currency, 'ALL' as country, sum(amount_usd)
    FROM some_data
    GROUP BY currency

    Так вот, данный SELECT возвращает 0 строк, хотя данные в таблице есть. А вот если изменить алиас country в запросе на любой другой, всё работает.

    У нас не самая актуальная версия кх (20 что-то там); подскажите плиз, пофикшено ли в более поздних.
  • попробуйте слово country заковычить
  • @salionov #224349 10:51 PM, 28 Jun 2021
    Доброго времени

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

    сборка 20.8.3 revision 54438
  • https://t.me/clickhouse_ru
    Да даже просто country_ прокатывает)

    Хотелось узнать, известная ли это проблема и есть ли фикс
  • 29 June 2021 (114 messages)
  • https://t.me/clickhouse_ru
    Нет неизвестная
  • https://t.me/clickhouse_ru
    А покажите show create table?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @SuppieRK #224359 07:52 AM, 29 Jun 2021
    Господа, всем дратуте. У вас для новичковских вопросов ФАК заведён или можно постить как есть? :)
  • Вроде бы нет, спрашивайте как есть
  • @simpl1g #224361 07:56 AM, 29 Jun 2021
    тут собран минимальный набор джентельмена)
    https://kb.altinity.com/
  • https://t.me/clickhouse_ru
    @SuppieRK #224362 07:57 AM, 29 Jun 2021
    Юз кейс такой: аналитика по потоку ивентов. Заливаю ивенты через Buffer в MT, поверх налепил MV на AggregatingMT.

    1. Не совсем понимаю зависимость между cardinality и ORDER BY - влияет ли порядок определения ORDER BY на скорость и стоит ли low cardinality ставить в начале списка?
    2. Видел что люди делают PARTITION BY на почасовой основе - насколько это оправдано по сравнению с PARTITION BY toYYYYMMDD (если дано 5К событий в секунду)?
  • https://t.me/clickhouse_ru
    Залезал, пойду пересмотрю ещё разок
  • https://t.me/clickhouse_ru
    @SuppieRK #224364 08:02 AM, 29 Jun 2021
    Вопросы связаны с теоретическим консёрном по перформансу, в обычном контейнере CH выдаёт ~100ms на квери по вью, выполняющуюся раз в 0,5 секунды по 5М записей, что в принципе неплохо - но предела совершенству ведь нет (без PersistentVolume или прочих клеймов и SSD)

    Забыл добавить что имеется TTL на 3 месяца.
  • @jan_darm #224365 08:31 AM, 29 Jun 2021
    Привет всем. Кто-то сталкивался с апдейтами временной таблицы? Хотел провести манипуляцию с данными в два захода, и промежуточные данные апдейтить во временной таблице. Но оказалось

    ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr

    не работает для временной таблицы. Пишет что не может найти такую таблицу. Или я что-то неправильно делаю?
  • https://t.me/clickhouse_ru
    @mirka_bit #224367 08:47 AM, 29 Jun 2021
    а как поменять движок database?
  • https://t.me/clickhouse_ru
    @kapustor #224368 09:02 AM, 29 Jun 2021
    Всем привет!
    Прямо сейчас начинается вебинар Яндекс.Облака "Аналитическая платформа для бизнеса", где наш архитектор рассказывает о платформе данных, основанной на ClickHouse, доступной для использования в нашем облаке: https://www.youtube.com/watch?v=CdmFxw4j_dI
    Аналитическая платформа для бизнеса

    Многие компании давно используют облако для бизнес-аналитики, ведь это удобно: можно отслеживать любые метрики в режиме реального времени, строить графики и быстро делиться ими с коллегами и партнерами. Для старта достаточно простого дашборда, но со временем можно пойти дальше: комбинировать разные источники данных, хранить и обрабатывать миллионы строк в секунду. Этот вебинар о том, как строить собственное хранилище данных на базе платформы Yandex.Cloud. О чем рассказали: - Как организовать сбор и анализ данных в компании, чтобы создать внешнее хранилище данных и объединить информацию из нескольких источников. - Как загружать обновления в потоковом режиме, чтобы строить витрины и управлять жизненным циклом данных и аналитическими отчетами. - Как определить подходящую архитектуру для корпоративной аналитической системы. Кому это полезно: - Архитекторам данных и техническим директорам — чтобы выбирать подходящие инструменты и технические решения; - Дата-инженерам — чтобы лучше понимать, как реализовать…

  • https://t.me/clickhouse_ru
    @SvPupok #224370 09:15 AM, 29 Jun 2021
    коллеги доброго времени суток. Подскажите по возможному решению проблемки: Есть табличка в mergeTree, на 16 млрд строк, и мне необходимо оперативно обновить данные в одном столбце( записать одно и то же значение во все строки). update делать тут не вариант, с точки зрения возможной нагрузки на таблицу. я уже начинаю подумывать просто удалить столбец и создать его заново с новым дефолтным значением, по скорости это всяко быстрее будет
  • https://t.me/clickhouse_ru
    Создать столбец рядом column_1
    Переименовать столбец column в column_old
    Переименовать column_1 в column

    Все это с минимальным простоем… или вообще без него зависит от нагрузки
  • https://t.me/clickhouse_ru
    1. меньшую cardinality в начало списка ORDER BY хорошая идея, но не стоит тащить в primary key все подряд
    2. нет смысла делать часовые партиции, сжатие упадет, для 5k событый в секунду можно и месячные партиции оставить
  • https://t.me/clickhouse_ru
    на сколько я знаю в отличие от классических БД столбцевые быстро могут обновить один столбец. И если есть возможность надо тестировать в тестовой среде. А потом применять в продакшене.
  • https://t.me/clickhouse_ru
    ну если у вас реально одно значение, то так будет проще всего

    будет DEFAULT который для отсуствующих данных будет константно вычисляться при чтении... и константно записываться при записи во время merge ...
  • https://t.me/clickhouse_ru
    Спасибо за советы 🙏
  • @366604348 #224378 10:22 AM, 29 Jun 2021
    Всем привет.
    Кто знает как реализовать запрос WATCH в java? https://clickhouse.tech/docs/ru/sql-reference/statements/watch/
    WATCH | Документация ClickHouse

    Запрос WATCH Важно Это экспериментальная функция. Она может повлечь потерю совместимости в будущих версиях. Чтобы исполь

  • https://t.me/clickhouse_ru
    стандартный JDBC драйвер вроде умеет
    https://github.com/ClickHouse/clickhouse-jdbc/blob/ba57358766a179c67ac776851e253cd921e56067/clickhouse-jdbc/src/test/java/ru/yandex/clickhouse/jdbc/parser/ClickHouseSqlParserTest.java#L373
    clickhouse-jdbc/ClickHouseSqlParserTest.java at ba57358766a179c67ac776851e253cd921e56067 · ClickHouse/clickhouse-jdbc

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

  • @1803285152 #224381 10:57 AM, 29 Jun 2021
    Как сделать, чтоб выдавало 0, так как между 1 и 2 есть 3? Хочу сделать строгую последовательность
    SELECT sequenceMatch('(?1)(?2)')(time, number = 1, number = 2) FROM t
  • https://t.me/clickhouse_ru
  • Точку между событиями сделать или? Не понятно
  • https://t.me/clickhouse_ru
    добавить кондишн
    number NOT IN (1,2)
  • https://t.me/clickhouse_ru
    @nyatmeat #224385 11:18 AM, 29 Jun 2021
    Всем привет. Такой вопрос. Есть ли у клика шифрование базы данных? Имеется ввиду не функции, а именно шифрование файлов бд
  • https://t.me/clickhouse_ru
    Пока можно шифровать отдельные значения

    Но в целом планируется и это тоже сделать
    https://github.com/ClickHouse/ClickHouse/pull/24206
    Data encryption on VFS level by alexelex · Pull Request #24206 · ClickHouse/ClickHouse

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

  • спасибо
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @raw0w #224389 11:21 AM, 29 Jun 2021
    привет! подскажите, пожалуйста
    версия кликхауса 21.2.10.48
    запрос на выдачу грантов вида
    GRANT ON CLUSTER cluster_name SELECT ON main_db.data TO collector_role
    райзит ошибку
    n: For a distributed DDL on circular replicated cluster its table name must be qualified by database name
    гугление не помогло, сам текст ошибки не слишком информативен: имя бд указано
    сама таблица на движке ReplicatedReplacingMergeTree
  • https://t.me/clickhouse_ru
    > For a distributed DDL on circular replicated cluster
    Вы циклическую репликацию используете?
  • https://t.me/clickhouse_ru
    а зачем вам именно кликом шифровать?
    если кто-то получит доступ к серверу, то черт сможет сделать логический дамп
    SELECT * FROM db.table FORMAT Native

    если же хочется бекапы с помощью каких нибудь файловых снапшотов делать
    то и шифровать тогда надо средствами этих снапшотилок....
  • https://t.me/clickhouse_ru
    @raw0w ↶ Reply to #224390 #224392 11:26 AM, 29 Jun 2021
    выходит, что так: две ноды, таблица на обеих, данные реплицируются с одной на другую и наоборот
  • https://t.me/clickhouse_ru
    А шардов у вас сколько?
  • https://t.me/clickhouse_ru
    @raw0w ↶ Reply to #224393 #224394 11:29 AM, 29 Jun 2021
    2, но это не distributed таблица
  • https://t.me/clickhouse_ru
    У вас кстати из за этой ерунды, если селекты могут прилетать в разные ноды, то по очереди в пейдж кеш будет подниматся то одна таблица то другая, что не есть эффективно
  • https://t.me/clickhouse_ru
    @raw0w ↶ Reply to #224395 #224396 11:33 AM, 29 Jun 2021
    спасибо за информацию. не поделитесь ссылкой в доку (или ещё куда), где про это почитать можно?
  • https://t.me/clickhouse_ru
    @unamedrus #224398 11:38 AM, 29 Jun 2021
    Да нигде, только сейчас подумал об этом.
    Мб это как то хитро обрабатывается, но не уверен.
    Надо смотреть как у вас в remote_servers описано это.

    И мб попробовать load_balancing=first_or_random
  • https://t.me/clickhouse_ru
    @innopolis #224400 11:59 AM, 29 Jun 2021
    а как делать sync в MySql Engine?

    MaterializeMySQL не предлагать, старая версия клика
  • https://t.me/clickhouse_ru
    никак.
    mysql engine не хранит данные в себе. а делает запрос в mysql каждый раз
  • https://t.me/clickhouse_ru
    имеется ввиду table ENGINE=MySQL(...)?
    если да, то там нет никакого sync, там запрос с WHERE пробрасывается непосредственно на MySQL а GROUP BY и ORDER BY делаются на стороне clickhouse

    или MaterializedMySQL() ?
    он работает как MySQL slave и данные в него прилетают по replication протоколу
    там тоже никакого sync нет, если репликация сломалась, придется заново все данные перекачивать ( удалять и создавать базу данных)
  • https://t.me/clickhouse_ru
    Спасибо за ответы @BloodJazMan @unamedrus

    а если внешний словарь?

    Какой-то из вариантов делает возможным реплику (с периодическими апдейтами) и чтобы все последующие операции шли только в кх?
  • https://t.me/clickhouse_ru
    внешний словарь с ssd_cache layout

    у вас какой объем таблицы в MySQL?
  • https://t.me/clickhouse_ru
    334 мб
  • https://t.me/clickhouse_ru
    @solard #224406 12:10 PM, 29 Jun 2021
    Народ обьясните глупому можно ли как-то уменьшить аллокацию памяти для селекта?
  • https://t.me/clickhouse_ru
    зарезать max_threads
    уменьшить max_block_size
  • https://t.me/clickhouse_ru
    @unamedrus #224408 12:13 PM, 29 Jun 2021
    Что за селект то?
  • https://t.me/clickhouse_ru
    @seriych #224409 12:21 PM, 29 Jun 2021
    Привет. Это нормальное поведение?

    with cast(null, 'Nullable(Enum8(\'a\' = 1, \'b\' = 0))') as test
    select assumeNotNull(toString(test));
    ┌─assumeNotNull(toString(test))─┐
    │ b │
    └───────────────────────────────┘

    with cast(null, 'Nullable(Enum8(\'a\' = 1))') as test
    select assumeNotNull(toString(test));
    -- Code: 36. DB::Exception: Unexpected value 0 for type Enum8('a' = 1)
    Ожидаю увидеть пустую строку в ответе в обоих случаях.
    Воспроизводится в песочнице КХ на любой версии. У нас 21.3.10.1
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224408 #224410 12:31 PM, 29 Jun 2021
    А что имено узнать хотите? Если в краце то вот такой

    SELECT
    ...
    FROM
    ...
    JOIN
    ...
    WHERE
    ...
    <if>
    </if>
    ORDER BY
  • https://t.me/clickhouse_ru
    Какого размеры таблицы?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224411 #224413 12:34 PM, 29 Jun 2021
    13.01 GiB
  • https://t.me/clickhouse_ru
    @solard #224414 12:34 PM, 29 Jun 2021
    Кластер из 3 шард, в логах вижу ошибки с жирнючими цифрами
  • https://t.me/clickhouse_ru
    @solard #224415 12:34 PM, 29 Jun 2021
    DB::Exception: Memory limit (total) exceeded: would use 64.64 GiB
  • https://t.me/clickhouse_ru
    Я ваши примеры кстати утащу туда, если вы не против :)
  • materialize?
  • https://t.me/clickhouse_ru
    без проблем. Почитаю, спасибо. Там только, когда toTypeName/toColumnTypeName смотрел оно про константы где-то писало, так что может не полностью корректный пример; но на настоящей колонке тоже воспроизводится. Собственно оттуда вопрос и вылез, когда странный ответ запрос выдал.
  • https://t.me/clickhouse_ru
    я в строках, каждую, левую и правую в JOIN
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224419 #224420 12:42 PM, 29 Jun 2021
    Ух, а можно какой-нибудь кверик для наглядности ?)
  • https://t.me/clickhouse_ru
    ну можно словарь засунуть, но это не real time sync
    это периодическая синхронизация
  • https://t.me/clickhouse_ru
    @mirka_bit #224422 12:46 PM, 29 Jun 2021
    а как поменять database engine?
  • https://t.me/clickhouse_ru
    SELECT count() FROM table и добавить ваши условия WHERE
  • @1789158330 #224424 12:46 PM, 29 Jun 2021
    Плюс есть куча движков на словари
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    тоже самое. Если имеется в виду assumeNotNull(toString(materialize(test)))
  • Direct можно заюзать как движок для словаря
  • with cast(null, 'Nullable(Enum8(\'a\' = 1, \'b\' = 0))') as test
    select assumeNotNull(materialize(toString(test)));
  • https://t.me/clickhouse_ru
    он нормально применим скорее для REDIS
    Для MySQL получится шторм из SQL запросов 1 запрос на 1 dictGet...
  • не, тут пустота получается(
    хотя, если вы ее и ожидаете, то норм
  • https://t.me/clickhouse_ru
    @Caside #224431 01:10 PM, 29 Jun 2021
    Оказывается 21.4 мог на уровне dictionary кастовать стринг в Int32 а 21.6 уже нет, и непонятно, это был баг или фича
  • https://t.me/clickhouse_ru
    я ее и ожидаю. Но получаю 'b'.
  • WITH cast(NULL, 'Nullable(Enum8(\'a\' = 1, \'b\' = 0))') AS test
    SELECT assumeNotNull(materialize(toString(test)))

    ┌─assumeNotNull(materialize(toString(test)))─┐
    │ │
    └────────────────────────────────────────────┘

    1 rows in set. Elapsed: 0.001 sec.

    оно же, не?
  • https://t.me/clickhouse_ru
    оно. А версия какая? На 21.3 выдает b. В песочнице (https://play.clickhouse.tech/?file=playground) на 20.8 тоже b, а на 20.3 и 19.14 пустую строку.
  • 21.2.9.41 вроде бы
  • https://t.me/clickhouse_ru
    @seriych #224436 01:36 PM, 29 Jun 2021
    но так на всех версиях ошибка: WITH cast(NULL, 'Nullable(Enum8(\'a\' = 1))') AS test
    SELECT assumeNotNull(materialize(toString(test)));
  • а зачем вообще assumeNotNull?
  • https://t.me/clickhouse_ru
    хм, кстати, да. Конкретно у меня в данном случае enum пустой строкой не бывает, и я лишнюю проверку на пустую строку делаю. Так что да, спасибо за вопрос, лишнее условие уберу и просто на null проверку сделаю. Но если элементом enum бывает пустая строка, то удобнее было бы assumeNotNull(column) = '', а не (column is null or column = '')
  • https://t.me/clickhouse_ru
    Но если элементом enum бывает пустая строка,

    Ну этой пустой строке можно 0 как значение и сделать
  • assumeNotNull вернет "Неспецифицированный результат, зависящий от реализации, если исходное значение — NULL."
    на это стоит обратить внимание
  • https://t.me/clickhouse_ru
    об этом надо думать сильно раньше. А тогда же можно было бы и подумать о том, как не делать nullable вообще. Но что есть. Просто я всегда смело использовал assumeNotNull(), чтобы не заморачиваться, что там в этот раз прислали null или '' (0). А тут нюансы всплыли внезапно.
  • а если словарь из mysql строить так, чтобы ключ словаря в Clickhouse был первичным ключом в таблице mysql? по логике тогда сложность запросов таких будет O(1), не так ли?
  • @draev #224445 02:13 PM, 29 Jun 2021
    Ребята, подскажите пожалуйста, можно ли одному пользователю назначить несколько профайлов (profile) ? Юзер должен иметь readonly в определенную базу, и full access к другой базе. Как это можно организовать ?
  • https://t.me/clickhouse_ru
    посмотрите в сторону RBAC и roles
  • @draev ↶ Reply to #224446 #224447 02:20 PM, 29 Jun 2021
    да, там видел возможность такую. Но пока единственным способом управления доступами для нас является старый добрый users.xml )
  • https://t.me/clickhouse_ru
    У вас старая версия?
  • @draev #224449 02:23 PM, 29 Jun 2021
    да :( обновление планируем
  • @366604348 #224450 03:01 PM, 29 Jun 2021
    Народ как подписаться на обновления LIVE VIEW на java? через clickhouse-client всё работает через джаву нет.
    пробую так:
    pstmt.execute("SET allow_experimental_live_view = 1");
    он мне выдаёт: java.lang.Throwable: Code: 113, e.displayText() = DB::Exception: There is no session or session context has expired (version 21.6.5.37 (official build))

    но данные в БД я добавлять могу.
  • @366604348 #224451 03:08 PM, 29 Jun 2021
    может документация какая нормальная есть? кроме этой? https://clickhouse.tech/docs/ru/sql-reference/statements/watch/
    WATCH | Документация ClickHouse

    Запрос WATCH Важно Это экспериментальная функция. Она может повлечь потерю совместимости в будущих версиях. Чтобы исполь

  • https://t.me/clickhouse_ru
    скорее всего джава просто не умеет в них
  • @366604348 #224453 03:23 PM, 29 Jun 2021
    а что умеет?
  • @semchalex #224455 04:41 PM, 29 Jun 2021
    Всем привет, кто-нибудь забирал данные из кх spark'ом (jdbc)? Какие-то специальные настройки требовались? Ошибка что-то типа
    java.sql.SQLException: org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closing chunk expected
    at ru.yandex.clickhouse.response.ClickHouseResultSet.hasNext(ClickHouseResultSet.java:164)
    at ru.yandex.clickhouse.response.ClickHouseResultSet.next(ClickHouseResultSet.java:200)
    . Если сильно уменьшаю кол-во строк в запросе то всё отрабатывает, а на нужном объеме данных увы ( Может кто-то сталкивался.
  • А как забираете?
  • Ничего если скрином?
  • Там удобно использовать метод с callback функцией https://github.com/ClickHouse/clickhouse-jdbc#send-data-in-binary-formatted-with-custom-user-callback
    Но тогда чтение будет немного другим ClickHouseStatement -> ClickHouseRowBinaryInputStream executeQueryClickhouseRowBinaryStream(String sql) для Java 🤷‍♀️
  • Это close before read last data. см. https://stackoverflow.com/questions/33633549/org-apache-http-connectionclosedexception-premature-end-of-chunk-coded-message
    А вне spark, на чистом public void static main этот запрос прозходит?
    org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closing chunk expected

    I am trying out RestAssured & wrote the following statements - String URL = "http://XXXXXXXX"; Response result = given(). header("Authorization","Basic xxxx"). content...

  • https://t.me/clickhouse_ru
    @hostadminonline #224463 06:48 PM, 29 Jun 2021
    добрый вечер, подскажите плз а как при создании таблицы engine=mergeTree указать сортировку ключа .... мне нужно по DESC отсортировать
  • https://t.me/clickhouse_ru
    так вроде в клике не работает, да и смысла особого нет. клик использует oreder by для упорядочивания (чтобы лучше сжатие работало) + индекс (минимальной и максимальное значение для пачки). для обоих этих пунктов направление не имеет значения
  • https://t.me/clickhouse_ru
    @hostadminonline #224465 06:55 PM, 29 Jun 2021
    просто у меня таблица 1.3 млрд .... выдергиваю примерно 10000 записей с сортировкой по дате в обратном порядке и оно минуты на 3 высаживается ... а выдергиваю всего 3 столбца
  • https://t.me/clickhouse_ru
    @hostadminonline #224466 06:55 PM, 29 Jun 2021
    а когда по ASC то все очень быстро
  • https://t.me/clickhouse_ru
    подобная проблема здесь обсуждалась уже много раз. поиск по "последние записи" выдаст вам кучу релевантных обсуждений. например, одно из них https://t.me/clickhouse_ru/214239
    а может пример - и не сильно релевантен :)
    Lexa M in ClickHouse не тормозит

    Добрый день, у нас есть такая таблица test, ищем 10 последних записей с определённым id1, всего их ~ 55 млн. судя по всему происходит фулскан всех записей с этим id1, и присутствие в ключе сортировки после id1 поля timestamp не влияет. подскажите, пожалуйста, дело в неправильной структуре таблицы или в запросе, и можно ли избежать фулскана? (необходимо выбирать куски данных с определённым id1, отсортированных по timestamp) CREATE TABLE clickhouse.test ( `id1` String, `timestamp` DateTime, `id2` UInt32, ) ENGINE = ReplacingMergeTree PARTITION BY toYYYYMM(timestamp) ORDER BY (id1, timestamp, id2) SETTINGS index_granularity = 8192 SELECT * FROM test WHERE id1 = 'a27d30b4121232323b4c659f2488d' ORDER BY timestamp DESC LIMIT 10 10 rows in set. Elapsed: 11.991 sec. Processed 55.75 million rows EXPLAIN SELECT * FROM test WHERE id1 = 'a27d30b4121232323b4c659f2488d' ORDER BY timestamp DESC LIMIT 10 ┌─explain ───────────────────────────────────────────────────────────────────────────────┐ │ Expression…

  • https://t.me/clickhouse_ru
    @Mike_Er #224468 07:01 PM, 29 Jun 2021
    Добрый вечер, имеем кластер КХ на центос 7, хотим добавить еще 2 сервера на центос 8. Будут ли проблемы?
  • https://t.me/clickhouse_ru
    @hostadminonline #224469 07:01 PM, 29 Jun 2021
    ну у меня дата стоит на первом месте в сортировке, я в смысле того что подобного рода моменты мы изначально заложили
  • https://t.me/clickhouse_ru
    а можно пожалуйста если не затруднит обновить бенчмарк для memsql? тем более, что у него с тех пор появился ColumnStore. (да и memsql теперь называется SingleStore).
    UPDATE: просьба снимается, только сейчас заметил, что columnstore был ещё в версии 3.2 и в тестах он уже есть
  • Я хотел обновить, но обнаружил, что при скачивании они предлагают согласиться с условиями, которые запрещают бенчмарки (так называемая DeWitt clause).
  • https://t.me/clickhouse_ru
    офигеть, но не удивительно. ведь вся поисковая выдача забита только маркетинговым буллщитом, о том что они самые быстрые и всё такое и ни одного реального сравнения, кроме как на https://clickhouse.tech/benchmark/dbms/
    Performance comparison of database management systems

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

  • https://t.me/clickhouse_ru
    у mariadb тоже появился columnstore, но уже есть сравнения и не утишительные :)
    https://www.percona.com/blog/2017/03/17/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/
    Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apache Spark - Percona Database Performance Blog

    Column store database benchmark results, comparing the query performance of MariaDB ColumnStore v. 1.0.7 (based on InfiniDB), Clickhouse and Apache Spark.

  • @milovidov_an #224474 09:42 PM, 29 Jun 2021
    Я бы хотел добавить больше бенчмарков, единственное нужен полный лог всех действий - начиная с того, как скачивали и устанавливали. Чтобы прямо по шагам повторить. По моему опыту, уходит несколько дней, чтобы всё сделать.

    Пример:
    https://github.com/ClickHouse/ClickHouse/blob/master/benchmark/monetdb/instruction.md
    ClickHouse/ClickHouse

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

  • @milovidov_an #224475 09:42 PM, 29 Jun 2021
    Ещё создал таск, чтобы скидывать туда ссылки на любые бенчмарки:
    https://github.com/ClickHouse/ClickHouse/issues/22398

    Где выигрываем, где проигрываем и вообще всё :)
  • @milovidov_an #224476 09:44 PM, 29 Jun 2021
    Ещё бывает полезен "юзабилити-лог". Когда берёшь незнакомую систему, пытаешься с ней работать и записываешь любые грабли и мысли, каждую попытку что-то неправильно сделать. Очень полезно для разработчиков.
  • https://t.me/clickhouse_ru
    ёмаё, столько бенчмарков :)
  • https://t.me/clickhouse_ru
    @mr_izmal #224478 09:49 PM, 29 Jun 2021
    Привет!
    Можно timezone указать для конкретной базы?
    Например, для всех <timezone>Europe/Moscow</timezone>
    А для отдельной базы UTC.
  • Нет. Придётся в типах для каждой таблицы указывать. DateTime('Europe/Moscow')
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    Был более новый бенч против клика кстати

    https://www.percona.com/blog/2020/07/27/clickhouse-and-columnstore-in-the-star-schema-benchmark/
    ClickHouse and ColumnStore in the Star Schema Benchmark - Percona Database Performance Blog

    There were two new releases in the OpenSource Analytical Databases space, which made me want to evaluate how they perform in the Star Schema Benchmark.

  • https://t.me/clickhouse_ru
    спасибо, пора забыть про страхи, что есть что-то настолько же быстрое как кликхаус :)
  • 30 June 2021 (160 messages)
  • https://t.me/clickhouse_ru
    @Caside #224488 05:26 AM, 30 Jun 2021
    Всем привет!
    Версия 21.6 стейбл

    Делаю джойн таблиц через
    select *
    from table1 t1
    left join table2 t2 on t1.t1_id = t2.t2_id

    В одном случае получаю на выходе красивые имена полей
    В похожей ситуации с другими таблицами получаю имена полей с префиксами из алиасов, указанных в запросе.
    В чём разница - непонятно. Имена полей не совпадают совсем. Как избавиться от префиксов в именах полей, если хочешь селектить через * а не выписывать каждую колонку?
  • @1803285152 #224489 05:34 AM, 30 Jun 2021
    Зачем нужен движок Log? Чтоб писать без очереди, а потом переносить на MergeTree?
  • https://t.me/clickhouse_ru
    ну только для DIRECT layout у вас latency на запрос будет нефиговый такой
    захотите выбрать допустим 100 тыс dictGet
    и получите 100 тыс коротких SQL запросов
    которые MySQL даже в несколько десятков коннектов прососет секунд за 5-10 не меньше...
    это REDIS может до миллиона запросов через MGET в секунду делать key\value (multi threading имплементации)

    хотя кстати с MySQL вроде тоже может быть SQL запрос WHERE id IN (...)
    но это не o(1) это o(n) сложность все равно...
    и парсер MySQL запроса на MySQL сервере для o(1) будет 90% времени занимать...

    вот кстати как вариант можно Oracle MySQL MEMCACHE plugin какой нибудь попробовать использовать ;) Но clickhouse не умеет memcache в качестве источника
  • Спасибо большое за пояснение
  • https://t.me/clickhouse_ru
    @justholmes #224497 07:35 AM, 30 Jun 2021
    Всем доброго дня. Вопрос следующий:
    Установила ClickHouse по инструкциям с официального сайта. На скриншоте видно, что пытаюсь запустить clickhouse-client, но выдаёт ошибку, что не может подключиться к серверу. Искала решение в интернете, не помогло. Может, кто сталкивался с этим и нашел решение?

    П.с. запускаю на ubuntu в виртуальной машине.
  • https://t.me/clickhouse_ru
    systemctl status clickhouse-server
    Что показывает?
  • https://t.me/clickhouse_ru
    @sibbarb #224499 07:37 AM, 30 Jun 2021
    Я же правильно понимаю что про джойнах теряется скорость работы ?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ss -nltp | grep click
  • https://t.me/clickhouse_ru
    Да вы все правильно понимаете
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    У меня в команде ошибка, я ее исправила, но тот же результат
  • https://t.me/clickhouse_ru
    но если селектить из подзапроса все же норм будет?
  • @simpl1g #224508 07:47 AM, 30 Jun 2021
    Зависит от того сколько данных вернётся в подзапросе)
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Ну сильно зависит от объёма данных которые получаются в подзапросе
  • https://t.me/clickhouse_ru
    @dzarlax #224512 08:31 AM, 30 Jun 2021
    Привет! Подскажите пожалуйста есть ли какая-то возможность при селекте выводить колонку в несколько строк внутри ячейки средствами ch, чтобы результат был читабельнее?
  • https://t.me/clickhouse_ru
    Проверьте, настройки <listen_host> и <tcp_port> в файле /etc/clickhouse-server/config.xml.
  • https://t.me/clickhouse_ru
    Может вам подйдёт format Vertical?
  • https://t.me/clickhouse_ru
    Эта команда выдала пустой ответ, что значит у вас кликхаус почему-то не использует ни одного порта. Возможно 9000 порт занят другим процессом (например php). Попробуйте выполнить команду: ss -nltp | grep 9000
    Ну и попробуйте на всякий члучай перезапустит кликхаус:
    systemctl restart clickhouse-server
    А потом опять systemctl status clickhouse-server
  • https://t.me/clickhouse_ru
    Ну или выберите тут что-нибудь, что вам больше подходит:
    https://clickhouse.tech/docs/ru/interfaces/formats/
    Форматы входных и выходных данных | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    понял, спасибо - пойду изучать
  • https://t.me/clickhouse_ru
    Permission denied
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224518 #224519 08:47 AM, 30 Jun 2021
    sudo :)
  • https://t.me/clickhouse_ru
    Используйте sudo
  • https://t.me/clickhouse_ru
    My bad
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    А ss -nltp | grep 9000 что говорит?
  • https://t.me/clickhouse_ru
    Ничего не выдает
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224525 08:56 AM, 30 Jun 2021
    интересно
  • https://t.me/clickhouse_ru
    @solard #224526 08:56 AM, 30 Jun 2021
    А clickhouse запущен?
  • https://t.me/clickhouse_ru
    @solard #224527 08:56 AM, 30 Jun 2021
    Извините за вопрос тупой)
  • https://t.me/clickhouse_ru
    Да по идее
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224528 #224529 08:56 AM, 30 Jun 2021
    systemctl status clickhouse-server или как он у вас запущен?
  • https://t.me/clickhouse_ru
    И так и так запускала
  • https://t.me/clickhouse_ru
    @justholmes #224531 08:57 AM, 30 Jun 2021
    Service clickhouse-server start
  • https://t.me/clickhouse_ru
    И это было
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224531 #224533 08:57 AM, 30 Jun 2021
    А можно посмотреть на статус?
  • https://t.me/clickhouse_ru
    Запрашивает пароль и все, ничего не выдает потом
  • https://t.me/clickhouse_ru
    @solard #224535 08:59 AM, 30 Jun 2021
    А по какому мануалу настраивали? Можете скинуть?
  • https://t.me/clickhouse_ru
    А дайте-ка нам выхлоп этих команд:
    sudo netstat -tulpn | grep 9000
    sudo service clickhouse-server status
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Секунду
  • @VladimirKoptev #224539 09:00 AM, 30 Jun 2021
    всем привет.
    подскажите плз, в какой версии .inner.<tbl-name> заменилось на .inner_id.<uuid>? и можно ли вернуть как было? :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ну вот же. Кликхаус не может запуститься.
  • https://t.me/clickhouse_ru
    Установка | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224542 #224543 09:03 AM, 30 Jun 2021
    journalctl -f -u clickhouse-server
  • https://t.me/clickhouse_ru
    Я наверное не тем местом читаю, но что там указывает на "незапуск"? Вроде все enabled
  • https://t.me/clickhouse_ru
    @solard #224545 09:03 AM, 30 Jun 2021
    Можно выхлоп этого глянуть?
  • https://t.me/clickhouse_ru
    С 20.10.
    можно. Использовать базы ordinary
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224544 #224548 09:04 AM, 30 Jun 2021
    А попробуйте просто сделать systemctl start clickhouse-server :)
  • https://t.me/clickhouse_ru
    Попросил пароль и все, ничего на консоль не выдал
  • https://t.me/clickhouse_ru
    @solard #224550 09:06 AM, 30 Jun 2021
    И еще раз посмотрите статус systemctl status clickhouse-server
  • https://t.me/clickhouse_ru
    У вас строка
    Active: activating
    Когда запустится, должно быть так
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Yeap
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224552 #224554 09:07 AM, 30 Jun 2021
    Вот отлично
  • https://t.me/clickhouse_ru
    @solard #224555 09:08 AM, 30 Jun 2021
    Теперь всё работает
  • https://t.me/clickhouse_ru
    @solard #224556 09:08 AM, 30 Jun 2021
    не забудьте сделать systemctl enable clickhouse-server
  • спасибо
  • https://t.me/clickhouse_ru
    Попросил 3 раза пароль, запустила clickhouse-client, опять та же ошибка😅
  • https://t.me/clickhouse_ru
    @justholmes #224559 09:11 AM, 30 Jun 2021
    Хотя в статусе running, зелёный
  • https://t.me/clickhouse_ru
    А вы пароль от sudo учётки вводите или от root? Или вы на сервер кликхауса пароль поставили?
  • https://t.me/clickhouse_ru
    @justholmes #224562 09:14 AM, 30 Jun 2021
    На сервер не ставила
  • https://t.me/clickhouse_ru
    А нет, от root, я учетку не делала
  • так не надо никакого пароля
    clickhouse-client -u default
  • https://t.me/clickhouse_ru
    Ну он сам запросил😅
  • https://t.me/clickhouse_ru
    Та же ошибка
  • https://t.me/clickhouse_ru
    @justholmes #224567 09:15 AM, 30 Jun 2021
    Может ли быть проблема в том, что убунту у меня на виртуальной машине?
  • https://t.me/clickhouse_ru
    @justholmes #224568 09:15 AM, 30 Jun 2021
    У меня винда основная, а убунту на виртуалке
  • посмотрите статус сейчас и время запуска
    сколько сек прошло после старта
  • это не проблема
  • https://t.me/clickhouse_ru
    Лучше выполняйте все операции с systemctl от имени sudo. Будет работать
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224572 09:16 AM, 30 Jun 2021
    То есть
    sudo systemctl enable clickhouse-server
    sudo systemctl start clickhouse-server
  • https://t.me/clickhouse_ru
  • ну он а авторестарте, поэтому не можете и подключиться.
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224575 09:20 AM, 30 Jun 2021
    ну так, попробуем пальцем в небо =)
    сделайте-ка вот что:
    clickhouse-client --host 127.0.0.1
  • https://t.me/clickhouse_ru
    Вроде запущен же
  • https://t.me/clickhouse_ru
  • @simpl1g #224578 09:20 AM, 30 Jun 2021
    он постоянно перезапускается
  • https://t.me/clickhouse_ru
    Та же ошибка)
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224580 09:21 AM, 30 Jun 2021
    А, значит занят порт
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224581 09:21 AM, 30 Jun 2021
    sudo lsof -i :9000 | grep LISTEN
    sudo lsof -i :8123 | grep LISTEN
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224582 09:22 AM, 30 Jun 2021
    Ну или давайте просто почитаем лог ошибок:
    sudo tail -f /var/log/clickhouse-server/clickhouse-server.err.log
  • @madmanidze #224584 09:26 AM, 30 Jun 2021
    Здравствуйте
    А по проблеме загрузки словарей пока нет новостей случаем?
    https://github.com/ClickHouse/ClickHouse/issues/21101#issuecomment-865001859
    clickhouse 20.12.5 restart error: external dictionary not found · Issue #21101 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug Reproduce of 12454. When creating a dictionary and a materilized column, after restart we get external dictionary not found Do...

  • https://t.me/clickhouse_ru
    Та же ошибка
  • https://t.me/clickhouse_ru
    Почему-то не хочет открывать
  • https://t.me/clickhouse_ru
    А что говорит-то? Файла такого нет, или просто ничего не отображается и не выводятся никакие строки?

    Если что, команда tail -f должна открыть файл, вывести из него последние 10 строк и продолжать выводить новые поступающие туда строки до тех пор, пока не нажмёте Ctrl+C. Лучше всего эту команду запускать в соседнем окне терминала, а уже потом пробовать запустить сервер кликхауса. Так у вас появится возможность отследить, какие ошибки возникают при запуске.
  • https://t.me/clickhouse_ru
    Да, я знаю, как команда работает, просто терминал как будто завис и не выдает ничего
  • https://t.me/clickhouse_ru
    @justholmes #224589 09:35 AM, 30 Jun 2021
    Причем отдельный открыла терминал
  • а ls -l /var/log/clickhouse-server/ что показывает?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Показывает два файла, один из которых наш err.log как раз
  • а размер их какой?
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224594 09:38 AM, 30 Jun 2021
    Значит файл просто пустой
  • https://t.me/clickhouse_ru
    @justholmes #224595 09:38 AM, 30 Jun 2021
    По нулям
  • https://t.me/clickhouse_ru
    Да, увидела
  • https://t.me/clickhouse_ru
    @justholmes #224597 09:39 AM, 30 Jun 2021
    Мб тогда кликхаус просто снести и заново поставить?😅
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224598 09:41 AM, 30 Jun 2021
    Ну ок. Давайте пойдём на совсем хитрые эксперименты, чтобы получить информацию об ошибке =)
    Остановите клик
    sudo service clickhouse-server stop
    А затем запустите его непосредственно в терминале
    sudo -u clickhouse /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml
    Там будет куча сообщений, но что-то со статусом <Error> вы наверняка увидите.
  • @simpl1g #224599 09:42 AM, 30 Jun 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
    @justholmes #224605 09:45 AM, 30 Jun 2021
    File access error: no space left on device: /var/lib/clickhouse/preprocessed_configs
  • https://t.me/clickhouse_ru
    Одно из
  • @simpl1g #224607 09:46 AM, 30 Jun 2021
    тадам)
  • https://t.me/clickhouse_ru
    Так что Вы наверное правы
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224609 09:46 AM, 30 Jun 2021
    Ну вот и ответ. У вас нет свободного места
  • https://t.me/clickhouse_ru
    @CherkashinSergey #224610 09:46 AM, 30 Jun 2021
    Что говорит df -h?
  • https://t.me/clickhouse_ru
    @justholmes #224611 09:46 AM, 30 Jun 2021
    Так, наверное я мало выделила место на виртуалке. Тогда мне убунту переустановить?
  • https://t.me/clickhouse_ru
    Тут уж как вам удобнее. Можно просто добавить места. Можно сжечь и заново построить. Сморя что у вас меньше времени займёт =)
  • https://t.me/clickhouse_ru
    Root 100% заполнено, а home всего на 7%
  • https://t.me/clickhouse_ru
    Dev при этом вообще не используется
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #224613 #224615 09:48 AM, 30 Jun 2021
    Я думаю вы немного с разметкой диска накосячили при создании ВМ
  • https://t.me/clickhouse_ru
    @justholmes #224616 09:49 AM, 30 Jun 2021
    Для контекста, я с убунту и виртуалкой только сегодня познакомилась🙃
  • https://t.me/clickhouse_ru
    @solard #224617 09:49 AM, 30 Jun 2021
    В следующий раз отдавайте всю память в /
  • https://t.me/clickhouse_ru
    Хорошо, учту
  • https://t.me/clickhouse_ru
    @justholmes #224619 09:49 AM, 30 Jun 2021
    Всем спасибо за помощь!☺️
  • https://t.me/clickhouse_ru
    @DeadMaferathsPuppy #224623 09:56 AM, 30 Jun 2021
    Здравствуйте
    Может, есть новости по проблеме загрузки словарей? https://github.com/ClickHouse/ClickHouse/issues/21101#issuecomment-865001859
    clickhouse 20.12.5 restart error: external dictionary not found · Issue #21101 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Describe the bug Reproduce of 12454. When creating a dictionary and a materilized column, after restart we get external dictionary not found Do...

  • https://t.me/clickhouse_ru
    @ikkalinkin #224629 12:33 PM, 30 Jun 2021
    А есть ли возможность брать из таблицы по несуществующему столбцу дефолтное значение, например, NULL? У меня есть диапазон таблиц, в некоторых из них определенного столбца нет, хочется селектить этот столбец там, где он есть
  • Если вы об этом, то да
    select 1 as a, Null as b
    union all
    select 1 as a, 2 as b;
  • https://t.me/clickhouse_ru
    @ikkalinkin #224631 12:41 PM, 30 Jun 2021
    Спасибо!
  • Привет, на проекте хотим подключить graphql(hasura) через proxySql к clickhouse. Получаем ошибку:

    Code: 81, e.displayText() = DB::Exception: Database INFORMATION_SCHEMA doesn't exist (version 21.6.5.37 (official build))

    Сталкивался ли кто-то с таким и есть ли какие-то решения кроме собственно создания этой базы?
  • https://t.me/clickhouse_ru
    > Сталкивался ли кто-то с таким и есть ли какие-то решения кроме собственно создания этой базы?

    Скорее всего нет, но нужна не только эта база но и данные в ней, как по стандарту SQL

    https://github.com/ClickHouse/ClickHouse/issues/9770
    Add INFORMATION_SCHEMA database · Issue #9770 · ClickHouse/ClickHouse

    to satisfy (at least some) of SQL92 requirements: http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt We can easily fill those from system: 21.2.4 SCHEMATA view 21.2.7 TABLES view 21.2.8 VIEW...

  • ага, спасибо
  • https://t.me/clickhouse_ru
    @emazurova #224636 01:55 PM, 30 Jun 2021
    Такой вопрос: возможно ли создать словать с полем типа FixedString(16)? При попытке выдаёт DB::Exception: Unknown type FixedString(16)

    Создаю так :
    CREATE DICTIONARY mydict
    (
    `uuid` FixedString(16),
    `first_name` String
    )
    PRIMARY KEY uuid
    SOURCE ...
    LIFETIME ...
    LAYOUT(COMPLEX_KEY_HASHED())
  • https://t.me/clickhouse_ru
    Вы graphql через mysql протокол подключаете
    Clickhouse он только протокол поддерживает
    А не имитирует mysql
  • ключ UInt64 нужен
    или составной tuple()
  • т.е. я не cмогу clickhouse использовать как mysql бд для hasura?
  • https://t.me/clickhouse_ru
    у меня LAYOUT=COMPLEX_KEY_HASHED(), так что ключ tuple() получается
  • так он работает с составными ключами, а у вас просто fixedString
  • https://t.me/clickhouse_ru
    сделала наоборот ради теста и всё равно выдает DB::Exception: Unknown type FixedString(16)

    CREATE DICTIONARY dict.id2uuid_v2
    (
    `id` UInt64,
    `uuid` FixedString(16)
    )
    PRIMARY KEY id
  • извините, запутал
    проверил и правда, посмотрите в доке, поддерживает ли справочник тип FixedString?
  • https://t.me/clickhouse_ru
    Действительно, в типах нет FixedString()
    Спасибо!
  • https://t.me/clickhouse_ru
    @akofi1e #224646 02:33 PM, 30 Jun 2021
    Привет! Подскажите, я правильно понял, что для CH хорошим паттерном является создавать большие ненормализованные таблицы со множеством столбцов?
  • правильно
  • https://t.me/clickhouse_ru
    @akofi1e #224648 02:40 PM, 30 Jun 2021
    Спасибо, а есть какие-то хорошие примеры из реальных проектов структур бд? А будет ли лучше связь один ко многим сделать с помощью полей array/map или лучше сделать отдельную таблицу и join соединять? при условии что связанных объектов будет в среднем 20, например
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #224648 #224649 02:44 PM, 30 Jun 2021
    самый хороший пример в тьюториале - https://clickhouse.tech/docs/en/getting-started/tutorial/ Как я понимаю по следам Яндекс Метрики.
    join надо избегать по мере возможности. Через вложенные таблицы (Nested) и словари (dictGet)
    Tutorial | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @akofi1e #224650 02:46 PM, 30 Jun 2021
    Спасибо
  • https://t.me/clickhouse_ru
    Hasura нет
    Но можете другой graphql использовать https://github.com/bitquery/activecube-graphql
    GitHub - bitquery/activecube-graphql: GraphQL Interface for Activecube Queries

    GraphQL Interface for Activecube Queries. Contribute to bitquery/activecube-graphql development by creating an account on GitHub.

  • понял, спасибо
  • https://t.me/clickhouse_ru
    @aksimemor #224653 03:32 PM, 30 Jun 2021
    Привет!

    Кто-то сталкивался с подобной ошибкой при попытке собрать clickhouse-odbc на apple m1?
    https://gist.github.com/Spar9a/29d68496ddb34ec76b81dc716f423130
    gist:29d68496ddb34ec76b81dc716f423130

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

  • https://t.me/clickhouse_ru
    @paveltyavin #224657 08:07 PM, 30 Jun 2021
    как сделать uniq по окну? Например, что по окну длиной три, табличка превращалась в результат?

    Табличка:
    time, user_id
    1 aaa
    2 aaa
    3 bbb
    4 ccc
    5 ddd
    6 ccc
    7 ddd
    8 aaa

    ->
    1 1
    2 1
    3 2
    4 3
    5 3
    6 2
    7 2
    8 3

    ?
  • https://t.me/clickhouse_ru
    Window functions
  • https://t.me/clickhouse_ru
    а какую именно применить, можешь подсказать?
  • https://t.me/clickhouse_ru
    uniqExact(user_id) OVER (ORDER BY time ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
  • https://t.me/clickhouse_ru
    @paveltyavin #224661 08:12 PM, 30 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    @paveltyavin #224662 08:12 PM, 30 Jun 2021
    А если time повторяется?
  • https://t.me/clickhouse_ru
    @unamedrus #224663 08:14 PM, 30 Jun 2021
    Ну а что вы хотите в таком случае?
  • https://t.me/clickhouse_ru
    @paveltyavin #224664 08:15 PM, 30 Jun 2021
    1 aaa
    1 bbb
    2 bbb
    2 ccc
    3 ddd
    4 ccc
    5 ddd
    6 aaa

    ->

    1 2
    2 3
    3 4
    4 2
    5 2
    6 3
  • https://t.me/clickhouse_ru
    @paveltyavin #224665 08:16 PM, 30 Jun 2021
    То есть просто я хочу уникальных считать в окне
  • https://t.me/clickhouse_ru
    @unamedrus #224666 08:19 PM, 30 Jun 2021
    uniqExactMerge(uniqExactState(user_id)) OVER (ORDER BY time RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING)
  • https://t.me/clickhouse_ru
    @paveltyavin #224667 08:23 PM, 30 Jun 2021
    спасибо
  • https://t.me/clickhouse_ru
    @paveltyavin #224668 08:25 PM, 30 Jun 2021
    только кажется мой кликхаус еще не умеет order by вместе с range
  • https://t.me/clickhouse_ru
    @unamedrus #224669 08:25 PM, 30 Jun 2021
    Ну хорошо, используйте ROWS, в этом случае будет одно и то же
  • https://t.me/clickhouse_ru
    @unamedrus #224670 08:26 PM, 30 Jun 2021
    Вы только должны еще GROUP BY time добавить