• 20 September 2021 (206 messages)
  • https://t.me/clickhouse_ru
    DROP TABLE ... SYNC
    надо делать
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235185 #235187 12:04 PM, 20 Sep 2021
    ENGINE = ReplicatedReplacingMergeTree
  • https://t.me/clickhouse_ru
    @solard #235188 12:04 PM, 20 Sep 2021
    Если мы про это
  • https://t.me/clickhouse_ru
    нет
    мы про
    SELECT engine, name FROM system.databases
  • такое же может быть и без атомик

    создать replicated таблицу, удалить, поменять структуру, попробовать ещё раз создать с тем же путём в зк
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235191 #235192 12:06 PM, 20 Sep 2021
    Вот такая трабла у меня и происходит
  • https://t.me/clickhouse_ru
    да, вы правы, спасибо!
    т.е. по факту похоже что я где-то много пишу с одним и тем-же значением adroom_id
    пойду смотреть
  • просто путь в ЗК поменять самый просто вариант

    /clickhouse/tables/{shard}/{cluster}/test_database_sharded_v2
  • @bmday89 #235195 12:06 PM, 20 Sep 2021
    Добрый день. Впервые сталкиваюсь с CH, как добавить пользователя через SQL? Читаю документацию, выполняю CREATE USER..., получаю:
    CREATE USER john DEFAULT ROLE ALL;

    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 37: USER john DEFAULT ROLE ALL;. Expected one of: DATABASE, TEMPORARY, TABLE, MATERIALIZED, VIEW, LIVE, OR REPLACE, DICTIONARY (version 19.17.5.18 (official build))
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235189 #235196 12:06 PM, 20 Sep 2021
    Секунду, щас гляну
  • https://t.me/clickhouse_ru
    функциональность RBAC через SQL добавлена в 20.5
    https://altinity.com/blog/goodbye-xml-hello-sql-clickhouse-user-management-goes-pro
    вы используете версию ClickHouse которой больше 2х лет
    и она уже не поддерживается
    а документацию смотрите на master ветку ;)
    Goodbye XML, hello SQL! ClickHouse User Management Goes Pro

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

  • Спасибо. А документация для старых версий сохранилась, доступна?
  • https://t.me/clickhouse_ru
    ClickHouse/docs/ru at 19.17 · ClickHouse/ClickHouse

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

  • @bmday89 #235201 12:26 PM, 20 Sep 2021
    Спасибо, что помогаете)
  • https://t.me/clickhouse_ru
    @verstakn #235202 12:38 PM, 20 Sep 2021
    Добрый день, используя clickhouse-client версии 18.16.1 пытаюсь вычитать записи из таблички (взял запрос из документации https://clickhouse.tech/docs/ru/interfaces/formats/#protobuf), но получаю:
    ft-clickhouse :) SELECT * FROM dsp_cnt FORMAT Protobuf SETTINGS format_schema = 'rows:DspCntRow'

    Syntax error: failed at position 30:

    SELECT * FROM dsp_cnt FORMAT Protobuf SETTINGS format_schema = 'rows:DspCntRow'

    Expected identifier
    (ошибка подсвечивается на слове "Protobuf")
    Запрос 1 в 1 как в документации, файлик со схемой на месте. Может какие пакеты к клиенту нужно докачать?
    Форматы входных и выходных данных | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235189 #235203 12:39 PM, 20 Sep 2021
    Нормально
  • https://t.me/clickhouse_ru
    @solard #235204 12:40 PM, 20 Sep 2021
    Ловил ошибку на Atomic
  • https://t.me/clickhouse_ru
    @solard #235205 12:40 PM, 20 Sep 2021
    На Ordinary поехало
  • https://t.me/clickhouse_ru
    @solard #235206 12:40 PM, 20 Sep 2021
    (изначально для него и писались скрипты)
  • https://t.me/clickhouse_ru
    @solard #235207 12:40 PM, 20 Sep 2021
    Кто-то БД переключил в Atomic
  • @Bitcoin_dot_com #235209 12:45 PM, 20 Sep 2021
    может кому будет полезно
    в новой версии кликхаус стал выплевывать ошибку при селекте. MergeTree
    Explicitly specified names of tuple elements cannot start with digit
    после инсерта большого кол-ва записей(на наших данных до 12тыс строк ок, после - проблема, но у нас в строках большие массивы в этом поле field.1)
    проблема оказалась в нейминге поля, такого плана: field.1
    странно, что запрета на создание таких полей не ввели.
  • https://t.me/clickhouse_ru
    в новых версиях clickhouse оно по умолчанию для новых БД

    см. default_database_engine
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #235210 #235211 12:50 PM, 20 Sep 2021
    Понял, спс
  • https://t.me/clickhouse_ru
    @alexeykey #235213 12:57 PM, 20 Sep 2021
    Доброго дня! Кластер на 4 ноды, версия 21.3.3. Решил ради интереса включить DDL и на условно пустой таблице поэкспериментировал с ALTER-ами на модификацию колонок. В итоге вышло странное - в ditributed таблице колонки поменялись, при этом в шардах нет. И в таком состоянии всё залипло с двумя висящими тасками в очереди:

    Row 1:
    ──────
    name: query-0000000002
    value: version: 1
    query: ALTER TABLE distributed.applications ON CLUSTER stat MODIFY COLUMN updated_time Nullable(DateTime)
    hosts: ['clickhouse1:9000','clickhouse3:9000','clickhouse1:9000','clickhouse3:9000','clickhouse2:9000','clickhouse4:9000','clickhouse2:9000','clickhouse4:9000']
    initiator: clickhouse1:9000

    czxid: 4615973267
    mzxid: 4615973267
    ctime: 2021-09-09 16:45:43
    mtime: 2021-09-09 16:45:43
    version: 0
    cversion: 2
    aversion: 0
    ephemeralOwner: 0
    dataLength: 433
    numChildren: 2
    pzxid: 4615973268
    path: /clickhouse/task_queue/ddl
    При этом в самой таске все 4 ноды обозначены как "finished"
    ┌─name─────┬─success_nodes─┐
    │ active │ 0 │
    │ finished │ 4 │
    └──────────┴───────────────┘

    Вопроса два.
    1) чем могло быть вызвано такое поведение?
    2) как правильно очистить очередь ddl? Через zookeeper или в клике есть свой функционал для этого?

    P.S. вменяемого мануала или разобранного кейса на данную тему не нашёл в интернете. Также, немного странно что параметр <task_max_lifetime>86400</task_max_lifetime> не сработал и таски висели и спустя сутки, и спустя неделю.
  • https://t.me/clickhouse_ru
    поясните
    вы делали изменение структуры distributed.applications
    а ожидали что изменится еще что-то кроме нее?
  • https://t.me/clickhouse_ru
    Ну, видимо, наивно ожидал что изменения коснутся и реплицируемых таблиц в шардах. Как вообще правильно поступать в таких случаях?
    До этого была допотопная версия без данного функционала, так что с ним сталкиваюсь впервые.
  • https://t.me/clickhouse_ru
    @Demelor_Shebr #235218 01:06 PM, 20 Sep 2021
    Добрый день! Вопрос наверняка простой, но гугление дало мало результата.

    Есть таблица MergeTree, и пара запросов с count().

    SELECT count() FROM vpp.forecast_results
    WHERE a = 'forecast' AND
    b = '2021-03-28 00:00:00' AND
    c = '2021-03-28 00:15:00' AND
    d = '2021-03-24 01:15:00';

    SELECT a, b, c, d, count() FROM vpp.forecast_results
    WHERE toYYYYMM(b) = '202103'
    GROUP BY a, b, c, d HAVING count() > 1
    ORDER BY a, b, c, d;

    Первый возвращает результат 1, во втором строка, соответствующая конкретным параметрам из первого, отображается с результатом 2.
  • https://t.me/clickhouse_ru
    @Demelor_Shebr #235219 01:07 PM, 20 Sep 2021
    В чём может быть проблема с count() во втором запросе?
  • https://t.me/clickhouse_ru
    @den_crane #235221 01:25 PM, 20 Sep 2021
    https://www.businessinsider.com/clickhouse-creators-raise-50-million-for-new-company-2021-9

    Volpi learned that most of the engineers who built ClickHouse were still working for Milovidov at Yandex. They hatched a plan to purchase the rights to ClickHouse from Yandex and move a chunk of the team to a new headquarters in Amsterdam. Finally, they recruited Aaron Katz, a former Elastic and Salesforce executive to serve as ClickHouse's CEO and ex-Google engineering VP Yury Izrailevsky as ClickHouse's president overseeing product.
    The creators of the popular ClickHouse project just raised $50 million from Index and Benchmark to form a company that will take on Splunk and Druid in the white-hot data space

    ClickHouse was created 10 years ago and is already used by firms like Uber, eBay, and CloudFlare. Now, it's building a business around the product.

  • @emd1tey #235222 01:26 PM, 20 Sep 2021
    а где глянуть как считается доступное место под резервирование?

    statfs("/var/lib/clickhouse/data/", {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=180357886, f_bfree=5419732, f_bavail=3580636, f_files=45875200, f_ffree=45445507, f_fsid={val=[950835380, 537088416]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
    clock_gettime(CLOCK_REALTIME, {tv_sec=1632134247, tv_nsec=537240006}) = 0
    getpid() = 1166
    lseek(42, 0, SEEK_CUR) = 1320789
    write(42, "2021.09.20 10:37:27.537407 [ 1293 ] {} <Debug> DiskLocal: Reserving 53.06 MiB on disk `default`, having unreserved 3.16 GiB.\n", 125) = 125
  • https://t.me/clickhouse_ru
    ClickHouse теперь перестанет быть open-source и станет платным :)?
  • https://t.me/clickhouse_ru
    хз, тот который есть наверное нет, но тот облачный продукт кто знает

    https://clickhouse.com/blog/en/2021/clickhouse-inc/
  • https://t.me/clickhouse_ru
    Очень интересно. Ну что ж, будем следить!
  • @vladislavadv #235226 01:37 PM, 20 Sep 2021
    Всем привет.
    Есть задача наложить фильтры из mysql на данные из clickhouse.
    Имеем таблицу mysql с 5 колонками. Каждая колонка содержит какое-то значение, либо null - т.е. любое
    Пример данных
    col1, col2, col3, col4, col5
    11, null, null, null, null -- т.е. главное что бы col=11
    null, 11, 11, null ,null -- т.е. col2=11 and col3=11
    Так же в кликхаусе данные, с такими же 5 колонками.
    Нужен какой-то запрос, который позволит наложить данные mysql на данные кликхаус.
    По идее, эта задача решается запросом:
    SELECT *
    FROM CH.table ch
    LEFT JOIN MYSQL.table m
    ON
    (ch.col1=m.col1 or m.col1 is NULL)
    AND
    (ch.col2=m.col2 or m.col2 is NULL)
    AND
    (ch.col3=m.col2 or m.col3 is NULL)
    AND
    (ch.col4=m.col2 or m.col4 is NULL)
    AND
    (ch.col5=m.col2 or m.col5 is NULL)
    Но кликхаус версии 21.4.5.46 говорит
    [2021-09-20 15:56:15] Code: 48, e.displayText() = DB::Exception: JOIN ON does not support OR. Unexpected '(m.col1 = col1) OR (m.col1 IN (NULL))': While processing (m.col1 = col1) OR (m.col1 IN (NULL)) (version 21.4.5.46 (official build))

    Пробовали словарем, но получается очень страшная конструкция с перемножением всех вариантов(порядка ).

    Подскажите, плиз, никто ли не сталкивался с такой проблемой и как ее средствами КХ можно решить?
  • https://t.me/clickhouse_ru
    =) ну как правильно...

    добавляете в Underlying *MergeTree потом добавляете в Distributed
    транзакций нет

    Distributed данные сам по себе не хранит (ну временные есть данные, если вставляете в Distributed)
    так что менять имеет смысл в *MergeTree
  • https://t.me/clickhouse_ru
    Сам спросил - сам ответил. Данные были импортированы из MySQL через движок таблицы. В процессе импорта некоректно обработался переход на летнее время для европейского региона CET/CEST. Из-за этого произошло наложение временных диапазонов в итоговой таблице. Единичный запрос не возвращал несколько строк на одни временные координаты, потому что GUI клиент делал прозрачную трансформацию часового пояса для дат запроса и выборка шла не по тому диапазону, где была проблема.
  • https://t.me/clickhouse_ru
    спасибо, подошло!
  • https://t.me/clickhouse_ru
    @svisvisvi #235231 02:12 PM, 20 Sep 2021
    Всем привет. Подскажите, пожалуйста, есть ли какой нибудь еще вариант получения списка привелегий выданных для роли, кроме как show grants for %role% ?
  • https://t.me/clickhouse_ru
    следите за обновлениями

    https://github.com/ClickHouse/ClickHouse/pull/21320

    ну вообще у вас вроде обычный dictGet запрос должен работать
    SELECT * ,
    dictGetOrDefault('mysql_dict_by_col1','col1',tuple(ch.col1),NULL) AS filter1,
    dictGetOrDefault('mysql_dict_by_col2','col2',tuple(ch.col2),NULL) AS filter2
    FROM CH.table ch
    WHERE (filter1 IS NOT NULL)
    OR
    (filter2 IS NOT NULL)

    но выглядит как то странно ... почему у вас left join ?
    он фактически ничего не выберет
    "OR" operator in "ON" section for join by ilejn · Pull Request #21320 · 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...

  • Смотрите, в mysql может быть такие данные

    col1, col2
    111, null
    222, 333

    В в клихаусе допустим

    col1, col2
    111, 222 —- подходит под 111, null
    222, 111 — не подходит, ни под 111, null, ни под 222, 333
  • Как это соотносится с Altinity? Я думал, что Altinity - это уже и есть коммерческий форк 🙂
  • https://t.me/clickhouse_ru
    никак не относится, это просто конкурент Альтинити.

    У Альтинити нет коммерческих форков, все что делает Альтинити в кодовой базе КХ публично доступно бинарно и в сорцах.

    У Альтинити закрытый код только по управлению облачного КХ. Там обычный КХ (любой на ваш выбор) в КХ Операторе.
    Оператор тоже открыт полностью
  • @softbot_xxl #235236 02:24 PM, 20 Sep 2021
    Понятно, спасибо.
  • https://t.me/clickhouse_ru
    ну, можно в /var/lib/clickhouse/access/*.sql файлы посмотреть еще, но такое себе...

    а что вас в show grants не устраивает?
  • https://t.me/clickhouse_ru
    Интересует возможная альтернатива) Задача показать на интрефейсе текущий уровень доступа роли, в целом формат понятен, но про альтернативу решил спросить.

    Спасибо!
  • https://t.me/clickhouse_ru
    распарсить SHOW GRANTS
    самый прямой путь
  • https://t.me/clickhouse_ru
    чет только платный доступ =(
  • https://t.me/clickhouse_ru
    в firefox два раза нажать reader mode
  • https://t.me/clickhouse_ru
    ещё в Telegram можно нажать INSTANT VIEW под превью
  • https://t.me/clickhouse_ru
    Рекомендую http://archive.is , для всего работает обычно
    Link

    create a copy of a webpage that will always be up

  • https://t.me/clickhouse_ru
    @hatedabamboo #235245 03:10 PM, 20 Sep 2021
    Привет. Подскажите, пожалуйста, есть ли возможность при создании словаря через sql-запрос указать авторизацию через ldap?
    SOURCE(CLICKHOUSE(
    host 'example01-01-1'
    port 9000
    user '<user>'
    password '<ldap-server>'
    db 'default'
    table 'ids'
    where 'id=10'
    secure 1
    ));
    Типа такого?
  • https://t.me/clickhouse_ru
    @ufaweb #235247 03:23 PM, 20 Sep 2021
    тенденцию писать на пхп негативной не находите?)
  • https://t.me/clickhouse_ru
    @ufaweb #235248 03:23 PM, 20 Sep 2021
    простите
  • https://t.me/clickhouse_ru
    @blinkovivan #235251 03:37 PM, 20 Sep 2021
    Introducing ClickHouse, Inc.
    https://clickhouse.com/blog/en/2021/clickhouse-inc/
  • https://t.me/clickhouse_ru
    None
  • https://t.me/clickhouse_ru
    @270358043 #235253 03:38 PM, 20 Sep 2021
    host clickhouse.com
    Host clickhouse.com not found: 3(NXDOMAIN)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @270358043 #235255 03:38 PM, 20 Sep 2021
    хорошо вам
  • https://t.me/clickhouse_ru
    @time_2_work #235256 03:39 PM, 20 Sep 2021
    У меня тоже не имеется пока :(
  • https://t.me/clickhouse_ru
    @270358043 #235257 03:39 PM, 20 Sep 2021
    cloudflare еще не заклаудил везде
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    смешно, но да, тоже самое с adguard. видимо click не нравится :)
  • https://t.me/clickhouse_ru
    🚀
  • https://t.me/clickhouse_ru
    arrayDifference(groupArray(toUInt32(event_time))) - так получите время между соседними событиями
  • @dj_mixer #235262 03:42 PM, 20 Sep 2021
    Теперь все фичи будут в энтерпрайз версии? 😂
  • https://t.me/clickhouse_ru
    @wingrime #235263 03:43 PM, 20 Sep 2021
    А Леша в Яндексе тоже работать будет?
  • https://t.me/clickhouse_ru
    Наконец-то)
  • @vmpol ↶ Reply to #235262 #235265 03:46 PM, 20 Sep 2021
    А когда-то было по другому?
  • https://t.me/clickhouse_ru
    они нам ответили, что уже убрали нас, но надо обновить список правил
  • https://t.me/clickhouse_ru
    можно быыло просто ребрендинг сделать slickhouse =)
  • ну до этого не было как таковой энтерпрайз версии и все фичи шли всем
  • @vmpol ↶ Reply to #235268 #235269 03:53 PM, 20 Sep 2021
    Ну так я про то же. Как только появляются деньги на горизонте - стратегия меняется.
  • https://t.me/clickhouse_ru
    @wingrime #235270 04:04 PM, 20 Sep 2021
    инетерсно что будет clickhouse+
  • @beebeeep #235271 04:06 PM, 20 Sep 2021
    В платном кликхаусе можно будет инсертить без батчинга!
  • https://t.me/clickhouse_ru
    Asynchronous INSERTs mode · Issue #18282 · ClickHouse/ClickHouse

    Use case Thousands of clients concurrently sending data to clickhouse-server for insertion. Every client sending a small batch of data but the total traffic can be large. This scenario is popular f...

  • https://t.me/clickhouse_ru
    @ufaweb ↶ Reply to #235271 #235273 04:11 PM, 20 Sep 2021
    и зукипер будет не нужен
  • https://t.me/clickhouse_ru
    @ufaweb #235274 04:11 PM, 20 Sep 2021
    (эт шутка если что, Леша на каком-то стриме говорил что будет своя реализация зукипера внутри)
  • https://t.me/clickhouse_ru
    Уже есть
  • @beebeeep #235276 04:12 PM, 20 Sep 2021
    Она ж уже вроде есть, только не очень внутри
  • https://t.me/clickhouse_ru
    @ufaweb #235277 04:12 PM, 20 Sep 2021
    круто че
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @brbrbr #235279 04:17 PM, 20 Sep 2021
    Кстати о зукипере.
    У нас снова начались проблемы с ЗК (было такое с полгода назад - прошло само) - на одной из двух схожих систем время от времени начинают массово сыпаться ошибки ZooKeeper session has been expired при запросах к ReplicatedMT таблицам. Девопсы грешат на накренившуюся базу ЗК, хотят переустановить ЗК с нуля.
    Есть какая-нибудь инструкция по минимизации урона кластеру КХ при переустановке ЗК?
  • https://t.me/clickhouse_ru
    Что подразумевается под переустановкой с нуля?
  • https://t.me/clickhouse_ru
    @unamedrus #235281 04:18 PM, 20 Sep 2021
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-zookeeper/altinity-kb-zookeeper-cluster-migration/

    Если переезд на другие машинки, то можно это посмотреть
  • https://t.me/clickhouse_ru
    @unamedrus #235282 04:18 PM, 20 Sep 2021
    Какой размер базы зк
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235280 #235283 04:20 PM, 20 Sep 2021
    Пересоздать виртуалку и заново поставить на неё ЗК.
  • https://t.me/clickhouse_ru
    Ок, ну смотрите этот гайд
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235282 #235285 04:20 PM, 20 Sep 2021
    Я могу посмотреть это из КХ? У меня нет доступа к серверу ЗК.
  • https://t.me/clickhouse_ru
    Нет, нельзя
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235282 #235287 04:24 PM, 20 Sep 2021
    840мб
  • https://t.me/clickhouse_ru
    Маленькая
  • https://t.me/clickhouse_ru
    Смотрите в логи зк ищите что то вроде, zxid rollover
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235289 #235291 04:26 PM, 20 Sep 2021
    Спасибо, поищем!
  • https://t.me/clickhouse_ru
    @unamedrus #235292 04:27 PM, 20 Sep 2021
    Да и вообще перевыборы лидера и что было до этого в зк
  • https://t.me/clickhouse_ru
    Появилась такая же проблема пару лет назад, периодически отваливался ЗК, особенно в ЧНН. Где-то выше писали что проблема может быть связана со сбросом кеша на диск (у нас массив HDD) . Установили sysctl примерно на
    vm.dirty_background_bytes = 52428800
    vm.dirty_bytes = 1073741824
    и проблема ушла. Конечно она проявлятся, но очень редко, раз в несколько месяцев может отвалиться, при большой пачке тяжелых запросов.
    Характерной чертой до тюнинга было в то время, как отваливался ЗК в dmesg на севере с кликом
    [ 2587.885779] perf: interrupt took too long (2509 > 2500), lowering kernel.perf_event_max_sample_rate to 79000
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235292 #235294 04:30 PM, 20 Sep 2021
    Это искали, но ничего не нашли.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235293 #235295 04:30 PM, 20 Sep 2021
    Спасибо! Попробуем.
  • https://t.me/clickhouse_ru
    @ITMobile #235296 04:31 PM, 20 Sep 2021
    Особенно заметно в системах с большим кол-вом ОЗУ, размер кеша по дефолту почти весь кеш находится в ОЗУ, 80% макс вроде, и когда 200-300гб одним разом пытаются записаться на диски, система может даже колом вставать и на консоль не реагировать в отдельных случаях.
    То есть отваливается не ЗК а отваливается клик, он не отвечает на пинг от ЗК, и ЗК рвет коннект, судя по логам того же ЗК.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235293 #235297 04:42 PM, 20 Sep 2021
    А это вы диски ЗК или КХ тюнили?
  • https://t.me/clickhouse_ru
    КХ
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235298 #235299 04:42 PM, 20 Sep 2021
    Понял, спасибо.
  • https://t.me/clickhouse_ru
    Интересно, что реализовано что-то схожее с kittenhouse в режиме реверс-прокси (https://github.com/VKCOM/kittenhouse/blob/master/core/clickhouse/reverse.go), но на C++ дифф совершенно огромный по сравнению с Go, хотя и производительность вероятно чуть выше, и больше гибкости.
    kittenhouse/reverse.go at master · VKCOM/kittenhouse

    Contribute to VKCOM/kittenhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Тут скорее важно, что поддерживаться будет лучше чем киттенхаус
  • https://t.me/clickhouse_ru
    Кстати я точно знаю, что внутри VK киттенхаус дальше развивается, но как-то бывшие коллеги забывают его выкладывать в опенсорс :). Впрочем, я только за то, чтобы группировка мелких инсертов была на стороне самого ClickHouse, особенно если это решение действительно будет позволять делать так, чтобы ошибки парсинга с конкретного хоста не влияли на все остальные.
  • https://t.me/clickhouse_ru
    Интересно сколько разница по производительности в граммах конечно и стоит ли оно того
  • https://t.me/clickhouse_ru
    kittenhouse в режиме reverse proxy (тот файл, что я прислал и есть по сути все его исходники) несколько сотен тысяч строк в секунду может вставлять. Больше я не проверял, это уже было несколько гигабит в секунду :).
  • https://t.me/clickhouse_ru
    @yourock88 #235306 05:54 PM, 20 Sep 2021
    В PR, представленном выше, заявлена скорость в 2 млн строк в секунду, но там утверждается, что делается один memcpy, поэтому оно наверняка в несколько раз эффективнее kittenhouse только по этой причине.
  • Уже. Но пробовать страшно
  • @fish_boned #235308 05:58 PM, 20 Sep 2021
    Изменение типа столбца MODIFY COLUMN [IF EXISTS] name [type]

    Подскажите, если у столбца уже используется тип [type], и не смотря на это мы выполняем запрос MODIFY COLUMN [IF EXISTS] name [type] ([type] - тот же), то реально ClickHouse будет выполнять какие-либо действия? Нужно ли (и если нужно, то как правильно?) перед выполнением такого запроса самому проверять, не пытаешься ли изменить тип столбца на тот же самый?
  • https://t.me/clickhouse_ru
    если тип такой-же то на диске делать ничего не будет.
    А зачем это надо? любой alter меняет метаданные и это плохо

    alter add column if not exists для колонки которая существует -- тоже лучше не делать
  • https://t.me/clickhouse_ru
    Добрый день, возник ряд вопросов в связи с этой новостью.
    1. Каков юридический адрес компании?
    2. Компания будет заниматься только enterprise решениями или же она будет owner’ом и основного кода?

    Нам просто очень важно в некоторых случаях не «российское» происхождение софта.
  • https://t.me/clickhouse_ru
    а у КХ было российское происхождение? де юре? де факто было не российское
  • https://t.me/clickhouse_ru
    @alexsurok #235312 06:11 PM, 20 Sep 2021
    Так везде висел шильдик Яндекса а в глазах руководства и заказчиков это = Россия
  • https://t.me/clickhouse_ru
    @alexsurok #235313 06:11 PM, 20 Sep 2021
    В общем обособленная компания зарегистрированная лучше всего в Штатах это прям бальзам на душу)
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #235311 #235314 06:12 PM, 20 Sep 2021
    Реестр российского ПО пополнился СУБД ClickHouse и «Яндекс.Трекером»

    Компания «Яндекс» сообщила о включении в реестр отечественного программного обеспечения сервиса для организации работы команды «Яндекс.Трекер» и системы управления базами данных ClickHouse. Теперь эти продукты будут иметь приоритет при выборе софта для государственных организаций.

  • https://t.me/clickhouse_ru
    да, в Delaware
  • https://t.me/clickhouse_ru
    Найс 😊А владелец кода кто теперь?
  • https://t.me/clickhouse_ru
    @alexsurok #235317 06:15 PM, 20 Sep 2021
    Тоже Clickhouse inc?
  • https://t.me/clickhouse_ru
    Copyrights переданы, да
  • https://t.me/clickhouse_ru
    Change copyright by tigrankhudaverdyan · Pull Request #29198 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    👍🏻👍🏻👍🏻
  • Ок, спасибо, учту. Зачем это надо - возник вопрос, можно ли сделать миграцию на новую версию и увеличить размер типа: скажем, вместо Int8 использовать Int32 в одном столбце. При этом, миграцию неполноценную - чтобы не хранить в доп. таблице версию последней примененной миграции, а просто сделать запрос многократно применяемым, что-то вроде:
    CREATE DATABASE IF NOT EXISTS test_database
    CREATE TABLE IF NOT EXISTS test_database.baseline_table (a Int8, b Int8) ENGINE = MergeTree() ORDER BY (a)
    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
  • https://t.me/clickhouse_ru
    ничего не понял.

    b Int8
    ...
    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
    в этом случае будет перезаписаны файлы столбца на диске

    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
    ALTER TABLE test_database.baseline_table MODIFY COLUMN b Int32
    так лучше не делать
  • Да, всё верно. Что произойдет при повторном выполнении этой миграции?
  • https://t.me/clickhouse_ru
    @den_crane #235324 06:25 PM, 20 Sep 2021
    будут конкретные проблемы
  • @fish_boned #235325 06:26 PM, 20 Sep 2021
    Да, ок, спасибо
  • https://t.me/clickhouse_ru
    @den_crane #235326 06:26 PM, 20 Sep 2021
    Большое кол-во альтеров ведет к "Metadata on replica is not up to date with common metadata in Zookeeper"
  • https://t.me/clickhouse_ru
    @den_crane #235327 06:27 PM, 20 Sep 2021
    Надо делать как можно меньше альтеров (все старатся запихать в один) и никогда не делать подряд несколько не дождавшись завершения на всех репликах
  • https://t.me/clickhouse_ru
    @den_crane #235328 06:28 PM, 20 Sep 2021
    Особенно если используется on cluster
  • https://t.me/clickhouse_ru
    @ilejn #235329 06:45 PM, 20 Sep 2021
    А в чем природа проблемы Metadata on replica is not up to date ... ?
    Есть что почитать про это (тикеты, etc) ?
  • https://t.me/clickhouse_ru
    если послать два alter на разные реплики одновременно будет столкновение.
  • https://t.me/clickhouse_ru
    @den_crane #235331 06:56 PM, 20 Sep 2021
    Clickhouse cannot alter columns throws DB::Exception: Metadata on replica is not up to date with common metadata in Zookeeper

    I have a replicated merge tree table on two nodes I have two columns as client_port and server_port Int16, I want to change it to UInt16. There is currently alot of data in this table (somewhere ar...

  • https://t.me/clickhouse_ru
    @den_crane #235332 06:57 PM, 20 Sep 2021
    On running these queries one by one,
    Alter table events_db.events_local_tables ON cluster click_cluster modify COLUMN client_port UInt16
    Alter table events_db.events_local_tables ON cluster click_cluster modify COLUMN server_port UInt16
  • @Nvarchar495 #235334 10:20 PM, 20 Sep 2021
    Добрый вечер! Вопрос есть: сейчас на кх реально хранилище построить? Всякие дата волт. Join умеет, update умеет, витрины умеет

    Etl на dagster
  • а дата вольт на колоночной базе это не извращение?
  • @ViacheslavNefedov #235336 10:31 PM, 20 Sep 2021
    я про производительность джойнов
  • https://t.me/clickhouse_ru
    в том смысле что вы думаете про "Join умеет, update умеет" -- не умеет. Нельзя вот просто там взять и сджойнить 20 таблиц в одном запросе. И update одной строчки длящийся часов 12 вас тоже удивит, при этом еще апдейт распакует пару ТБ, запакует и запишет на диск.
  • 21 September 2021 (161 messages)
  • @Nikolay_samsonov #235339 05:36 AM, 21 Sep 2021
    Привет. Подскажите.
    Если я переопределяю конфиг параметры в config.d, users.d нужен ли рестарт clickhouse? или через некоторое время новые значения подхватятся и рестарт не нужен?
    Если правильно понимаю не все параметры можно переопределить в config.d, users.d? Нет ли где-то такого списка?
  • @Mr_A275 #235340 05:42 AM, 21 Sep 2021
    Всем доброго дня! Вопрос про то как CH работает с DateTime и временными зонами: у нас есть данные за 2014 год и CH их сдвигает на 1 час, так как в то время наша таймзона отличалась на 1час от того что сейчас. Кто-нибудь сталкивался с такой проблемой? Как боролись? Если возможность как-то чтобы в поле DateTime не учитывалась таймзона? Подскажите как этого добится?
  • Спасибо, а есть планы по оптимизации? Или кх двигается в другом направлении?
  • https://t.me/clickhouse_ru
    @ibragimovramil #235346 06:20 AM, 21 Sep 2021
    Всем привет.
    1. Подскажите пожалуйста, как должен выглядеть запрос который выведет результат с условием LIKE %подстрокапоиска% пробежавший по всем строкам таблицы. Существую ли вообще такие варрианты
    2. Умеет ли Clickhouse парсить json если в таблице есть поле с наполнением текста формата JSON и в дальнейшем выполнять понотекстовый поиск по нему
    В общем есть у меня elk с прикрученным на него logtrail но в нём есть один большой минус это объёмы, кто работал в нём может сразу скажете можно аналог реализовать на clickhouse или стоит забыть про него )
  • https://t.me/clickhouse_ru
    1. match() - поиск по regexp. select top 10 * from table where match(args,'подстрокапоиска')
  • https://t.me/clickhouse_ru
    Ну еще на IPO осталось выйти)
  • https://t.me/clickhouse_ru
    Была попытка строить обратные индексы и делать адаптер под кибану, но не полетело. Гуглить kibouse
  • https://t.me/clickhouse_ru
    2. Я бы наверное преобразовал JSON в массив если это возможно и функциями высшего порядка парсил массивы
  • @SonFire #235353 07:04 AM, 21 Sep 2021
    Кто-нибудь выгружал напрямую данные из bigquery в clickhouse? Может есть готовые решение
  • https://t.me/clickhouse_ru
    1. regex functions
    2. вам с этим не к КХ
  • https://t.me/clickhouse_ru
    @ilejn #235355 07:46 AM, 21 Sep 2021
    У Альтинити есть про обработку логов https://altinity.com/presentations/a-practical-introduction-to-handling-log-data-in-clickhouse . Рекомендуемый подход - сначала все в JSON как есть, потом по мере необходимости перекладывать в отдельные колонки.
    Webinar Slides. A Practical Introduction to Handling Log Data in ClickHouse

    By Robert Hodges and Altinity Engineering TeamSlides for the Webinar, presented on Dec 17, 2019 Webinar recording is available hereLog messages are one of the most important types of application data. ClickHouse is very good at storing log data; many SaaS applications use it under the covers. In this webinar we will show examples of different application logs and how to design tables to store them. Options include using typed columns, strings, JSON, or key-value pair arrays. We'll also discuss how materialized columns to improve filter speed, as well as techniques to tune index granularity for wide rows. This is the first in a series of webinars on log management. Future webinars will cover tools to load data as well as techniques to retrieve log information efficiently.

  • https://t.me/clickhouse_ru
    вариантов пара
    стриминга в realtime нет

    1) через экспорт bigquery -> google cloud storage https://cloud.google.com/bigquery/docs/exporting-data -> загрузка через table functions s3 или s3cluster через INSERT INTO ... SELECT ... WHERE условия для дельты https://clickhouse.com/docs/en/sql-reference/table-functions/s3/
    можно даже в MergeTree не ч грузить =) но медленно

    2) точно также зная дельту (по времени например или по uint64 snowflake id какому нибудь) ODBC / JDBC через https://cloud.google.com/bigquery/docs/reference/odbc-jdbc-drivers и через https://clickhouse.com/docs/en/sql-reference/table-functions/odbc/
    и https://clickhouse.com/docs/en/sql-reference/table-functions/jdbc/
  • спасибо
  • https://t.me/clickhouse_ru
    благодарю но я не понял как по всем строкам, тут в качестве args имя строки верно?
    пример
    у меня экспортируется таблица с тремя колонками
    id, name, simpleValue
    Требуется найти все строки где в колонках есть совпадения с "%temp%" (в SQL это бы выглядело типа (Where name like '%temp%' or simpleValue like '%temp%' и т.д)
  • https://t.me/clickhouse_ru
    @111093495 #235362 08:35 AM, 21 Sep 2021
    Всем привет! Подскажите пожалуйста, можно ли откатить версию с 21.8 на 21.7 и если да то как правильно?
  • @270827469 #235366 08:42 AM, 21 Sep 2021
    Подскажите плиз.
    С какой версии возможно реализовано создание функций в Клике?
    У меня version 21.3.9.83 (official build))
    При попытке создать функцию:
    CREATE FUNCTION test_function AS (a, b) -> a * b;
    выскакивает ошибка:
    Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 8 ('FUNCTION'): FUNCTION test_function AS (a, b) -> a * b. Expected one of: VIEW, LIVE, DATABASE, USER, PROFILE, TEMPORARY, TABLE, ROW POLICY, POLICY, DICTIONARY, QUOTA, OR REPLACE, ROLE, SETTINGS PROFILE, MATERIALIZED
  • https://t.me/clickhouse_ru
    SELECT id FROM table WHERE match(name, 'temp') OR match(simpleValue,'temp')
  • https://t.me/clickhouse_ru
    это в master
    и в 21.10 testing только заехало, свежий и толком не анонсированный функционал
  • Спасибо🙏
  • https://t.me/clickhouse_ru
    select id,name from table where match(name,'temp') or match(simpleValue,'temp')
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #235371 09:28 AM, 21 Sep 2021
    Всем привет, подскажите пожалуйста, есть какие-то подводные камни при шардировании с ключем шардирования rand() ?
  • https://t.me/clickhouse_ru
    @nikitenkoolga #235372 09:58 AM, 21 Sep 2021
    Добрый день, подскажите как можно с другого клика выгрузить данные. Грузили native формате через clickhouse-client по дням в таблицу Mergetree тоже по дням партиционированную. Загрузка иногда обрывается с падение клика по oom в произвольные моменты времени. Лимиты по пользователю стоят. Может быть падения связаны с какими-нибудь оптимизационными процессами в клике и использования памяти, которая не считается в лимитах? типа того Engines in the MergeTree family are designed for inserting a very large amount of data into a table. The data is quickly written to the table part by part, then rules are applied for merging the parts in the background. И как это можно обойти или донастроить?
  • Зачем таскать данные через клиента, если можно передать их с сервера на сервер. Пробовали такой вариант?
  • https://t.me/clickhouse_ru
    может я не догоняю, но у нас там тунелирование через другой сервер и все через ssh.
  • https://t.me/clickhouse_ru
    у нас сейчас однонодная конфигурация, раньше был кластер и подключали другой клик как доп кластер и с него успешно таскали данные
  • https://t.me/clickhouse_ru
    @ibragimovramil #235378 10:12 AM, 21 Sep 2021
    спасибо разобрался )
  • https://t.me/clickhouse_ru
    @VBelyshev #235379 10:24 AM, 21 Sep 2021
    Всем привет. Подскажите Clickhouse-keeper так же должно быть 2n+1 экземпляров?
  • https://t.me/clickhouse_ru
    @biblio68 #235380 10:27 AM, 21 Sep 2021
    Привет
    Подскажите что означает эта ошибка ?
    Exception: Block structure mismatch in function connect between ExpressionTransform and SinkToOutputStream stream: different columns:
  • https://t.me/clickhouse_ru
    Коллеги, никто не знает камней? :)
  • https://t.me/clickhouse_ru
    Например, дубликаты будут лететь на разные сервера и не схлопываться даже через select final
  • зависит от ваших запросов, если простенькие агрегации то всё будет хорошо работать. Когда понадобятся join / in вдруг окажется что надо использовать global и всё начнёт тормозить. select final / optimize deduplicate не будут нормально работать

    из плюсов это то что место на диск равномерно заполняется
  • @766671835 #235384 10:45 AM, 21 Sep 2021
    Добрый день! пытаюсь делать бэкап КХ по доке https://github.com/AlexAkulov/clickhouse-backup , но бэкапятся только метадаты таблиц. Данные не бэкапятся. Не подсакжете в чем может быть проблема? КХ версии 21.7.7.47 в докере.
    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
    INSERT INTO ... SELECT .. FROM remote()
    пробовали?
  • https://t.me/clickhouse_ru
    какой движок у таблиц?
    бекап делается только для *MergeTree таблиц
  • движки у таблиц *MergeTree
  • https://t.me/clickhouse_ru
    LOG_LEVEL=debug clickhouse-backup create backup_name
    показывает что ALTER TABLE ... FREEZE WITH name
    запускается?
  • да, показывает
  • https://t.me/clickhouse_ru
    clickhouse-backup тоже в докере?
    в соседнем контейнере или внутри контейнера с clickhouse-backup?

    /var/lib/clickhouse
    в volume вынесена?
  • clickhouse-backup - бинарь на сервере не в контейнере, /var/lib/clickhouse вынесена у контейнера clichouse-server
  • https://t.me/clickhouse_ru
    так, в volume в /var/lib/clickhouse/backup/backup_name/shadow папка есть?
  • https://t.me/clickhouse_ru
    /etc/clickhouse-backup/config.yaml на хосте есть?
    как выглядит?
  • папки shadow нету, есть только папка metadata и файл metadata.json
  • general:
    remote_storage: s3
    max_file_size: 1099511627776
    disable_progress_bar: false
    backups_to_keep_local: 0
    backups_to_keep_remote: 0
    log_level: info
    allow_empty_backups: false
    clickhouse:
    username: guest
    password: "guest"
    host: 192.168.100.8
    port: 9000
    disk_mapping: {}
    skip_tables:
    - system.*
    timeout: 5m
    freeze_by_part: false
    secure: false
    skip_verify: false
    sync_replicated_tables: true
    skip_sync_replica_timeouts: true
    log_sql_queries: false
  • @vvvjhaq #235397 11:24 AM, 21 Sep 2021
    Добрый день. Подскажите как смотрите latency КХ-ЗК? И на ЗК на диск.
    Какие цифры стоит ожидать?
  • https://t.me/clickhouse_ru
    Ура. Появляется надежда, что появится нормальный человечий коннектор от вендора для табло, а не вот это гавно как сейчас
  • https://t.me/clickhouse_ru
    clickhouse-backup --version ?
    очень странно, можете через pastebin расшарить LOG_LEVEL=debug clickhouse-backup create backup?
  • https://t.me/clickhouse_ru
    Ошибка возникает при смене dicGet на dictGetFloat64.
  • https://t.me/clickhouse_ru
    @lesikv #235401 11:36 AM, 21 Sep 2021
    Привет!
    Подскажите пожалуйста, как решить проблему.
    Мы добавили недефолтного юзера, выдали ему необходимые гранты, но у нас перестала работать операция dictGet так как нужны гранты на system.dictionaries видимо.

    Подскажите пжл как обойти эту проблему?
  • я понял в чем причина: clickhouse-backup и clickhose-server должны смотреть на одну и ту же папку /var/lib/clickhouse
    у меня у clickhouse-server /var/lib/clickhouse/ примаучена к /data/clickhiouse/database хоста

    поэтому возникает такой вопрос:
    1. можно ли папку для clickhouse-backup поменять(сделать не /var/lib/clickhouse)?
    2. получается мы не сможем делать бэкапы удаленно с другого хоста?
  • https://t.me/clickhouse_ru
    1. можно, но это должно быть точно такое же блочное устройство, не стоит так делать
    2. можно запустить clickhouse-backup server с включенной опцией API_CREATE_INTEGRATION_TABLES=1 и триггернуть через вызов INSERT INTO system.backup_actions
  • https://t.me/clickhouse_ru
    почему считаете что именно system.dictionaries нужен?
    там есть отдельные права на dictGet
    https://clickhouse.com/docs/en/sql-reference/statements/grant/#grant-dictget
  • здорово! спасибо большое! очень помогло
  • https://t.me/clickhouse_ru
    но сам clickhouse-backup server должен иметь возможность конектиться к clickhouse и при этом иметь доступ к диску /var/lib/clickhouse внутри clickhouse
  • https://t.me/clickhouse_ru
    @lesikv ↶ Reply to #235404 #235407 11:59 AM, 21 Sep 2021
    Спасибо огромное!
  • https://t.me/clickhouse_ru
    Попытаю счастья ещё.
  • буду пробывать, еще раз спасибо
  • https://t.me/clickhouse_ru
    авторизация через ldap настраивается на clickhouse-server который example01
    https://clickhouse.com/docs/en/operations/external-authenticators/ldap/
    она все равно парольная
  • https://t.me/clickhouse_ru
    @hatedabamboo #235411 12:02 PM, 21 Sep 2021
    То есть в любом случае при создании словарей нужно явно указывать пароль? Даже задать с хешем никак не выйдет?
    password_sha256_hex или password_double_sha1_hex.
  • https://t.me/clickhouse_ru
    ну есть более глобальная задача по менеджменту секретов
    https://github.com/ClickHouse/ClickHouse/issues/22471
    Explicit secret management in ClickHouse · Issue #22471 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @hatedabamboo #235413 12:08 PM, 21 Sep 2021
    Видимо нет. Тред интересный. Спасибо за ответ.
  • https://t.me/clickhouse_ru
    @498912844 #235414 12:08 PM, 21 Sep 2021
    подскажите бывает так что CH не подтягивает конфиги
    у меня не подтягивает макросы
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @498912844 #235416 12:10 PM, 21 Sep 2021
    <?xml version="1.0"?>
    <yandex>
    <clickhouse_remote_servers>
    <local>
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host></host>
    <port>9000</port>
    </replica>
    <replica>
    <host></host>
    <port>9000</port>
    </replica>
    </shard>
    </local>
    </clickhouse_remote_servers>

    <zookeeper-servers>
    <node index="1">
    <host></host>
    <port>2181</port>
    </node>
    </zookeeper-servers>

    <macros>
    <cluster>local</cluster>
    <replica>IP</replica>
    <shard>01</shard>
    </macros>
    </yandex>
  • https://t.me/clickhouse_ru
    @serjsivkov #235417 12:11 PM, 21 Sep 2021
    Здравствуйте. Работаю с CH не так давно, поэтому не пинайте)
    Есть такой вопрос - есть таблица с PARTITION BY (toQuarter(created_at), toYYYYMM(created_at)). Нужно поменять на PARTITION BY (toQuarter(collected_on), toYYYYMM(collected_on)).
    Как это лучше сделать? Создавать новую таблицу с переносом данных?
  • https://t.me/clickhouse_ru
    Это единственный вариант
  • https://t.me/clickhouse_ru
    clickhouse-server перезапускали?
  • https://t.me/clickhouse_ru
    канечно
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    вроде пару месяцев назад мы релизили новую версию конектора и она сильно лучше?
  • https://t.me/clickhouse_ru
    а в какой папке у вас XML с макросами? в /etc/clickouse-server/users.d или config.d ?
    для надежности можно в /etc/clickhouse-server/conf.d класить

    смотрите в /var/lib/clickhouse/preprocessed_configs/config.xml
    на результат того что получилось после объединения
  • https://t.me/clickhouse_ru
    А зачем у вас там toQuarter и toYYYYMM на одно и то же поле? Кажется что хватило бы второго
  • https://t.me/clickhouse_ru
    =) вы вот это пробовали?
    https://github.com/Altinity/clickhouse-tableau-connector-odbc
    если не работает issue заводили?
    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
    Пока не обновляли. Можно где-то changelog посмотреть про этот коннектор?
  • https://t.me/clickhouse_ru
    макросы не видит
    ch1.8616a0fdc182dc727996fa1e99aed405 :) select * from system.macros

    SELECT *
    FROM system.macros

    Query id: b45cc0b9-1196-421e-a6c6-63f2afbcddf7

    Ok.

    0 rows in set. Elapsed: 0.003 sec.
  • https://t.me/clickhouse_ru
    Server config files

    How to manage server config files in Clickhouse

  • https://t.me/clickhouse_ru
    вы не ответили на мой вопрос, я понимаю что макросы не видит
    но не видит потому что либо не туда положили конфиг
    либо конфиг не правильный
    либо нужен рестарт после обновления настроек и на лету они не подтягиваются (типа tcp_port например)
  • https://t.me/clickhouse_ru
    нету changelog. Там сильно улучшено.
  • https://t.me/clickhouse_ru
    Отлично. Тогда оьязательно попробуем!
  • https://t.me/clickhouse_ru
    @ivymike_b #235432 12:17 PM, 21 Sep 2021
    Спасибо
  • https://t.me/clickhouse_ru
    старый способ был через generic odbc connector табло который поверх ODBC драйвера и ничего про его особенности не знает...

    новый способ специализированный коннектор поверх odbc драйвера который уже много чего умеет и знает

    будем признательны за feedback
  • https://t.me/clickhouse_ru
    Последнее обновление 28 июля. Мы 27го пробовали и че-то там не полетело)
  • https://t.me/clickhouse_ru
    согласен, спасибо!
  • https://t.me/clickhouse_ru
    odbc драйвер тот же с оф. репы КХ и компилировать по той же инструкции?
  • @l_dar #235437 12:26 PM, 21 Sep 2021
    Подскажите пожалуйста.
    При репликации растет replication_queue
    выполняется по 24
    Как можно отрегулировать баланс?
  • https://t.me/clickhouse_ru
    баланс? Чта?
  • @l_dar #235439 12:33 PM, 21 Sep 2021
    чтобы успевало выполняться, не рос replication_queue
  • https://t.me/clickhouse_ru
    в replication_queue написано в общем-то все что нужно для понимания.

    в replication_queue все задания и те которые выполняются и те которые нет.

    покажите

    SELECT
    database,
    table,
    type,
    any(last_exception),
    any(postpone_reason),
    min(create_time),
    max(last_attempt_time),
    max(last_postpone_time),
    max(num_postponed) AS max_postponed,
    max(num_tries) AS max_tries,
    min(num_tries) AS min_tries,
    countIf(last_exception != '') AS count_err,
    countIf(num_postponed > 0) AS count_postponed,
    countIf(is_currently_executing) AS count_executing,
    count() AS count_all
    FROM system.replication_queue
    GROUP BY
    database,
    table,
    type
    ORDER BY count_all DESC
  • https://t.me/clickhouse_ru
    у меня же пароля к тому клику, у меня ключ лежит на моем сервере клика и оттуда я клиентом данные перетаскиваю. Но ладно сейчас попробую в соседнюю табличку
  • https://t.me/clickhouse_ru
    сколько памяти у сервера?
    и сколько полей в таблице
  • @l_dar #235444 12:41 PM, 21 Sep 2021
    Получается GET_PART не успевает
  • https://t.me/clickhouse_ru
    что в 3м и 4м полях?
  • https://t.me/clickhouse_ru
    какая версия КХ ?
  • https://t.me/clickhouse_ru
    надо смотреть почему не успевают 8 ниток фетчить, возможно надо увеличить background_fetches_pool_size
    либо сеть узкая, надо смотреть на загрузку сети
    либо не успевает другой КХ отдать, потому что у него диск загружен уже на 100%
  • @l_dar ↶ Reply to #235449 #235450 12:46 PM, 21 Sep 2021
    Да, мы ограничили сеть, так как io диска забивался
  • @l_dar #235451 12:46 PM, 21 Sep 2021
    Кстати, можно ли таблицы на разные диски разнести?
  • @l_dar ↶ Reply to #235449 #235452 12:47 PM, 21 Sep 2021
    Спасибо!
  • да, можно
  • @l_dar ↶ Reply to #235453 #235454 12:48 PM, 21 Sep 2021
    Задайте пожалуйста направление
  • storage_policy
  • https://t.me/clickhouse_ru
    т.е. вы задушили сеть и спрашиваете почему репликация не успевает? srsly?
  • Up
    Denny, не могли бы подсказать?
  • https://t.me/clickhouse_ru
    я не понял вопрос,
    ping сделать c сервера КХ на сервер ZK
    ping сделать между всеми ZK

    латенси в ZK echo stat|nc localhost 2181
    Latency min/avg/max: 0/0/14844
  • https://t.me/clickhouse_ru
    124 поля , у сервера всего 138Gi, на пользователя, который грузит 60G, в клике серверная память 128G настроена, запросы были мелкие и потом писали много партишек , а потом их оптимизировали, вычитала выше про эти настройки в обсуждении --min_insert_block_size_rows=5000000000 --min_insert_block_size_bytes=10000000000000 --max_insert_block_size=100000000 - теперь 2,8G на загрузку одного дня примерно по 8 минут на 17-20 млн и грузим мы без файликов, одной командой через |
  • https://t.me/clickhouse_ru
    Я не понял что такое 'теперь 2.8'
  • https://t.me/clickhouse_ru
    На native эти параметры не влияют. Вам надо уменьшить max block size у клиента который делает select
  • ok, ping между КХ и ЗК в каких числах будет адекватным?
  • https://t.me/clickhouse_ru
    потребляет на запрос на вставку memory_usage
  • https://t.me/clickhouse_ru
    влияют, вы сами выше писали. Они накапливают по количеству и партиции нормально нарезают. И загрузка идет - но в районе месяца- ну то есть месяц выгрузили , клик падает с oom
  • https://t.me/clickhouse_ru
    вот тут про парты
  • https://t.me/clickhouse_ru
    да драйвер последний возьмите
    https://github.com/ClickHouse/clickhouse-odbc/
    и коннектор
    https://github.com/Altinity/clickhouse-tableau-connector-odbc
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    Меньше 50ms если частые инсерты то 15ms
  • https://t.me/clickhouse_ru
    Там решали обратную задачу.
  • https://t.me/clickhouse_ru
    Меняйте параметры у клиента который делает селекты
  • https://t.me/clickhouse_ru
    @den_crane #235472 01:06 PM, 21 Sep 2021
    Вам нужно чтобы native блоки были меньше в строках между клиентами в пайпе
  • https://t.me/clickhouse_ru
    Какой клик падает? Покажите как оом выглядит трейс из dmesg
  • https://t.me/clickhouse_ru
    @nikitenkoolga #235475 01:11 PM, 21 Sep 2021
    @den_crane а в чем подстава, почему не сразу отлетает клик? почему только через условно месяц загрузки , что он нам оптимизирует? или на какие ограничения я напарываюсь? будет меньше блок - просто меньше приходить будут и легче вставляться. Мы просто и спарком грузили - он помедленнее и такое ощущуние, что при накоплении критичной массы , тоже типа около месяца данных - тоже упал. Я хочу понять
  • https://t.me/clickhouse_ru
    в который пишут - приемник
  • https://t.me/clickhouse_ru
    Вы странное описываете. Падает после загрузки? Типа мержи кушают столько памяти что кх убивает oom killer?
  • спасибо)
  • https://t.me/clickhouse_ru
    вот, да, это странно, и это по наблюдениям так. Логи сейчас посмотрю, но вчера там ничего интересного не было после падения.
  • https://t.me/clickhouse_ru
    Я про dmesg. Вы что называете oom?
  • https://t.me/clickhouse_ru
    у нас виртуалка и она падает по памяти. туда доступа у меня нет. Вчера вместе смотрели, там мониторинг потребления памяти - все работало. потом стресс тестирование сделали и упала виртуалка. Но из-за нагрузки в клике, возможно
  • https://t.me/clickhouse_ru
    какая версия КХ

    мониторьте память КХ, после загрузки https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/

    for i in `seq 1 6000`; do clickhouse-client --empty_result_for_aggregation_by_empty_set=0 -q "select (select 'Merges: \
    '||formatReadableSize(sum(memory_usage)) from system.merges), (select \
    'Processes: '||formatReadableSize(sum(memory_usage)) from system.processes)";\
    sleep 3; done
  • https://t.me/clickhouse_ru
    обожаю читать треды от вопроса и до ответа. набираюсь опыта на чужих шишках. но вот тут ответ был прям вообще непредсказуем :)
  • https://t.me/clickhouse_ru
    хорошо, включила это скрипт.
    21.8.4.51
  • https://t.me/clickhouse_ru
    таблицу завела. Дождаться час ХХХ и посмотреть что там было?
  • https://t.me/clickhouse_ru
    я ничего не понял, что за таблица?

    я предлагал запустить bash скрипт который показывает сколько памяти потребляют мержи и процессы, (если у вас есть мониторинг то вы просто можете посмотреть там), потом запустить ваш процесс копирования и мониторить что выдается в столбике merges
  • https://t.me/clickhouse_ru
    @last_hope_hero #235490 02:19 PM, 21 Sep 2021
    всем привет, такой вопрос
    CREATE TABLE [IF NOT EXISTS] [db.]table_name AS [db2.]name2 [ENGINE = engine]
    гарантированно воссоздаёт не только структуру но и данные таблицы name2 в table_name ?
  • https://t.me/clickhouse_ru
    только структуру
  • https://t.me/clickhouse_ru
    как ни странно данные почему-то также переносятся
  • https://t.me/clickhouse_ru
    @last_hope_hero #235493 02:20 PM, 21 Sep 2021
    это баг ?
  • https://t.me/clickhouse_ru
    покажите полностью запрос, и реальный engine
  • https://t.me/clickhouse_ru
    это возможно для некоторых движков, но это будет view , а не таблица
  • https://t.me/clickhouse_ru
    @last_hope_hero #235496 02:21 PM, 21 Sep 2021
    CREATE TABLE IF NOT EXISTS name2 AS name ENGINE = MergeTree ORDER BY (created_at) PARTITION BY toYYYYMM(created_at)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #235496 #235497 02:22 PM, 21 Sep 2021
    А у вас там не ReplicatedMergeTree, случаем?
  • https://t.me/clickhouse_ru
    нет, просто MergeTree
  • https://t.me/clickhouse_ru
    @last_hope_hero #235499 02:23 PM, 21 Sep 2021
    я и хочу понять, если баг то лучше не буду думать что переносится с гарантией
  • https://t.me/clickhouse_ru
    это в какой версии КХ ? не может такого быть
  • https://t.me/clickhouse_ru
    а если

    CREATE TABLE name2 AS name ENGINE = MergeTree ORDER BY (created_at) PARTITION BY toYYYYMM(created_at)

    может у вас уже есть name2 и она просто не создается?
  • https://t.me/clickhouse_ru
    @last_hope_hero #235502 02:26 PM, 21 Sep 2021
    нет, в том и дело что именно добавилось PARTITION, в этом вся суть этого дела
  • https://t.me/clickhouse_ru
    @last_hope_hero #235503 02:26 PM, 21 Sep 2021
    ну ладно, вообщем я понял что это не надёжно
  • https://t.me/clickhouse_ru
    @last_hope_hero #235504 02:26 PM, 21 Sep 2021
    спс
  • https://t.me/clickhouse_ru
    это просто невозможно. Ошибка у вас.
  • https://t.me/clickhouse_ru
    @last_hope_hero #235506 02:27 PM, 21 Sep 2021
    окей
  • https://t.me/clickhouse_ru
    AS name
    тупо подставляет структуру таблицы (поля и типы)
  • https://t.me/clickhouse_ru
    ну да, результаты bash скрипта вставляю в табличку и смотрю. Пока норм. Интересно, что там будет около падения
  • https://t.me/clickhouse_ru
    да, там вообще не предусмотрены подзапросы были. Поэтому там такое рандомное поведение.
  • https://t.me/clickhouse_ru
    select * from system.mutations where not is_done
  • https://t.me/clickhouse_ru
    те которые с ошибкой надо убить kill mutations
    те которые не завершены надо смотреть почему.

    вообще сколько у вас там mutations not is_done ?
  • https://t.me/clickhouse_ru
    много причин, может они выполняются, но очень медленно
    может они не выполняются потому что в пуле нету свободных ниток
    возможно они блокированы мержем или другой мутацией
    еще 28 вариантов, устал печатать

    покажите select create_time, parts_to_do, latest_failed_part, latest_fail_time, latest_fail_reason from system.mutations where not is_done format Vertical
  • https://t.me/clickhouse_ru
    таблица движок Replicated**** ?
  • https://t.me/clickhouse_ru
    толстенькая это 150 TB, у меня мутация на 150 ГБ за 30 сек идет
  • https://t.me/clickhouse_ru
    select * from system.merges format Vertical limit 3
  • https://t.me/clickhouse_ru
    elapsed: 379.449122824
    progress: 0
    total_size_bytes_compressed: 646973152
    is_mutation: 1
    у вас идут мутации, но очень медленно
  • https://t.me/clickhouse_ru
    я думаю у вас просто суперслабое железо и слишком много мутаций, которые вы должны быть запустить как одну, а запустили как 1000 разных.
  • https://t.me/clickhouse_ru
    @den_crane #235536 08:21 PM, 21 Sep 2021
    сколько строк в select * from system.merges ?
  • https://t.me/clickhouse_ru
    Да странно. Надо лог кх читать
  • 22 September 2021 (128 messages)
  • https://t.me/clickhouse_ru
    @Rorschach70 #235543 06:14 AM, 22 Sep 2021
    Всем, привет. Может глупый вопрос, но хотелось бы узнать. Поля которые кладутся в order by при создании таблицы являются уникальными для каждой строки или нет?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    А как сделать определенный список полей уникальным для таблицы с движком mergetree?
  • https://t.me/clickhouse_ru
    Вам нужно делать GROUP BY
  • https://t.me/clickhouse_ru
    @decembrin #235547 06:18 AM, 22 Sep 2021
    Или использовать ReplacingMergeTree / CollapsingMergeTree / VersionedCollapsingMergeTree или другой, все зависит от задачи
  • https://t.me/clickhouse_ru
    Или primary key?
  • https://t.me/clickhouse_ru
    Ну да, согласен
  • https://t.me/clickhouse_ru
    Для CH primary key вообще роли не играет, так как у него нет autoincrement
  • https://t.me/clickhouse_ru
    А, понял
  • @KevinMort #235552 06:38 AM, 22 Sep 2021
    Всем привет! Какие есть минусы при преобразовании типов, например из string в float, это трудоемкий процесс?
  • https://t.me/clickhouse_ru
    @akalend #235554 06:48 AM, 22 Sep 2021
    Всем привет и хорошего дня,
    Кто работал с go-clickhouse такой вот вопрос:
    нет коннекта на пред-продакшен,

    вот строка запроса:
    tcp://10.0.0.100:9000?username=default&password=123$n#aa,bb&database=mydb&debug=false

    пытался делать urlencode - эффект тот же.
    родной клиент кликхауса коннектится с таким пользователем и паролем нормально.

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

    больше инфо тут https://qna.habr.com/q/1050628
    бьюсь уже третий день.
    Почему не коннектится go-clickhouse?

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

  • https://t.me/clickhouse_ru
    @rjs45 #235555 07:08 AM, 22 Sep 2021
    Привет.
    Переехали на новый кластер кафки и появились такие сообщения от клики.

    2021.09.22 06:54:23.286877 [ 15690 ] {} <Error> StorageKafka (KAFKATABLE): [rdk:ERROR] [thrd:app]: CH_HOST-streams-KAFKATABLE#consumer-695: GroupCoordinator: 10.14.0.29:19092: ApiVersionRequest failed: Local: Timed out: probably due to broker version < 0.10 (see api.version.request configuration) (after 10008ms in state APIVERSION_QUERY, 1 identical error(s) suppressed)

    подскажите, в какую чторону смотреть?
  • https://t.me/clickhouse_ru
    @datamanager #235556 07:12 AM, 22 Sep 2021
    Коллеги, добрый день! Помогите понять, как реализовано частичное удаление данных из таблицы. Delete нету же. Есть truncate, но это все и сразу.
  • Есть разные движки таблиц для этого. Ну и Delete есть. Про его нюансы можете почитать тред выше(сообщений 20-30 вверх отлистайте)
  • https://t.me/clickhouse_ru
    @datamanager #235558 07:20 AM, 22 Sep 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    Даже больше, РК не обязан быть уникальным в СН
  • https://t.me/clickhouse_ru
    по партициям можно дропать
  • https://t.me/clickhouse_ru
    Через alter table … delete where … только для таблиц с движком *mergetree, но это дорого, лучше через collapsedmergetree
  • https://t.me/clickhouse_ru
    Точно
  • @srdtolstyh #235565 07:46 AM, 22 Sep 2021
    Всем, привет. Пытаемся поженить кликхаус и кликсенсе. Тестовый стенд кликхауса (ram94g, 12cpu), заливаем инкремент через odbs. 57 млн записей за 15 минут кликсенсе забрал себе. Видится, что это достаточно медленно, подскажите кто-то сталкивался с оптимизацией загрузки в биай системы, как заставить кликхаус отдавать данные быстрее?
  • Увеличить пропускную способность сети... Читать параллельно (правда не знаю насколько это подходит для bi). Сделать предобработку (если грузятся результаты джойнов и т.п.).
  • https://t.me/clickhouse_ru
    @121548504 #235567 07:52 AM, 22 Sep 2021
    Коллеги , добрый день

    есть табличка
    create table T
    (
    filed_1 int64,
    field_2 date
    )
    partition by toYYYYMMDD(field_2)

    запрос 1
    select
    filed_1,
    field_2
    from T where field_2='2021-09-22'

    Processed 49 million rows ,99.2 MB

    запрос 2
    select
    filed_1
    from T where field_2='2021-09-22'

    Processed 49 million rows , 496.2 MB

    Вопрос такой - почему во втором случае вычитывается больший объем данных?
  • https://t.me/clickhouse_ru
    @ilior #235568 07:56 AM, 22 Sep 2021
    Всем привет! В документации указано, что использование nullable для колонки уменьшает производительность. А кто-нибудь сравнивал, насколько? Есть цель в некоторых строках отмечать часть данных как отсутствующие, теоретически можем это сделать и через nullable, и через отдельные столбцы-флаги, какой вариант по быстродействию лучше будет?
  • https://t.me/clickhouse_ru
    может во втором случае перекидывание в prewhere не делается. Можно попробовать вместо where написать prewhere. Или в родном клиенте перед запросом выполнить set send_logs_level='trace' и посмотреть, что оно делает в каждом случае.
  • https://t.me/clickhouse_ru
    @seriych #235572 08:56 AM, 22 Sep 2021
    Как в КХ можно обнулить несколько наименее значимых бит в числе с плавающей запятой?
  • https://t.me/clickhouse_ru
    @AlexTheDolphin #235573 09:13 AM, 22 Sep 2021
    Коллеги, я правильно понимаю, что truncate - фоновый процесс, который выполняется на пуле фоновых процессов, размер которого - background_pool_size?
  • @srdtolstyh #235574 09:28 AM, 22 Sep 2021
    Подскажите, если просто поставить кликхаус он будет есть память и cpu, сколько есть на сервере или нужно, что-то настраивать?
  • https://t.me/clickhouse_ru
    Конечно, будет. Но если ничего не делать в нём, то он не будет к примеру кэшить в оперативку
  • https://t.me/clickhouse_ru
    функция round позволить округлить значение
  • https://t.me/clickhouse_ru
    мне биты в двоичном представлении округлить надо.
    сделал так, но может можно проще/быстрее:
    reinterpretAsFloat64(
    unhex(repeat('0', CUT_BYTES) || substring(hex(VALUE), CUT_BYTES - 16))
    )
  • https://t.me/clickhouse_ru
    сама TRUNCATE query синхронная
    но если у вас database engine = Atomic
    то данные не удаляются из /var/lib/clickhoiuse/store а удаляются только симлинки из /var/lib/clickhouse/data

    и есть два пути
    правильный
    TRUNCATE db.table SYNC
    не правильный
    https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#database_atomic_delay_before_drop_table_sec
    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
    Bit | ClickHouse Documentation

    Bit Functions Bit functions work for any pair of types from UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64, Fl

  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    может быть. Но не особо понятно, как именно применять. Что-то такое выдает явно не то, что я ожидаю: reinterpretAsFloat64(bitAnd(reinterpretAsUInt64(VALUE), reinterpretAsUInt64(unhex('FFFFFF0000000000'))))
  • @vvvjhaq #235584 10:42 AM, 22 Sep 2021
    Могут ли в КХ параллельные инсерты в разные таблицы на разные диски друг друга аффектить?
  • https://t.me/clickhouse_ru
    есть разница если ты будешь одновременно записывать на диск один файл или два?
  • вероятно, есть
  • https://t.me/clickhouse_ru
    @vl4deee11 #235587 10:59 AM, 22 Sep 2021
    Всем доброго дня, существует ли возможность делать оптимайзы на таблицы merge tree асинхронно (как мутации например) ?
  • https://t.me/clickhouse_ru
    Может ещё с порядком байтов что-то, можно потестить конвертацию известных значений в hex и обратно
  • https://t.me/clickhouse_ru
    ну вообще конечно там сложно

    (reinterpretAsUInt64(VALUE)
    почему то меняет бинарное представление... обрезая байты
  • https://t.me/clickhouse_ru
    а, оно обратный порядок делает, только по два байта подряд. В общем, ладно, мне для тестов моего способа хватило, было интересно, насколько сильнее сжатие будет, если присылать данные в округленном в двоичном формате виде.
    PS. Ожидаемо хорошо сжимает
    PPS. Изи тогда. Надо просто маску в обратном порядке написать: reinterpretAsFloat64(bitAnd(reinterpretAsUInt64(VALUE), reinterpretAsUInt64(unhex('0000000000FFFFFF'))))
  • https://t.me/clickhouse_ru
    Это проблема odbc. Кх тут вообще ни при чем. Кх отдает 57млн за 1 сек. если в сеть пролазит.
  • https://t.me/clickhouse_ru
    @ashalonkin #235595 12:21 PM, 22 Sep 2021
    Всем привет!
    Помогите пожалуйста разобраться, почему не отрабатывает sumMerge?

    CREATE TABLE IF NOT EXISTS test_null
    (Week String, Sku String, Store String, Instock_Avl Decimal(10,3), InsertDate DateTime DEFAULT now ())
    ENGINE = Null;

    CREATE TABLE IF NOT EXISTS test_amt
    (Week String, Sku String, Store String,
    Instock_Avl AggregateFunction(argMax, Decimal (10,3), DateTime),
    FinalInsertDate SimpleAggregateFunction(max, DateTime))
    ENGINE = AggregatingMergeTree
    ORDER BY (Sku, Store, Week);

    CREATE MATERIALIZED VIEW if not exists mv_test TO test_amt AS
    SELECT Sku, Store, Week,
    argMaxState(Instock_Avl, InsertDate) as Instock_Avl,
    max(InsertDate) as FinalInsertDate
    FROM test_null
    group by Sku, Store, Week;

    -- после вставки в test_null

    select sumMerge(Instock_Avl) as Instock_Avl from mv_test;

    SQL Error [42]: ClickHouse exception, code: 42, host: rc1a-mdf7bm5f6lw91pqm.mdb.yandexcloud.net, port: 8443; Code: 42, e.displayText() = DB::Exception: Aggregate function sum requires single argument (version 21.8.5.7 (official build))

    В таком виде работает:
    select sum(Instock_Avl) as Instock_Avl from (select finalizeAggregation(Instock_Avl) as Instock_Avl from mv_test);
  • @plompus #235596 12:25 PM, 22 Sep 2021
    Всем привет!

    А есть ли аналог функции UNION, который точно так же объединяет подзапросы, НО встречая одинаковые индексы, суммирует по какому-то полю?
  • https://t.me/clickhouse_ru
    в каком-то смысле трудоемкий, вычисление avg с преобразованием string во float будет в 10-20 раз медленее, чем просто float
  • Получается лучше модифицировать столбец. Спасибо большое!
  • https://t.me/clickhouse_ru
    так argMaxMerge сначала, потом sum, нельзя домержить argMax функцией sum

    и да только select sum from select ...
  • https://t.me/clickhouse_ru
    Спасибо) А чем тогда отличается от finalizeAggregation(Instock_Avl) с последующей агрегацией? Какой подход предпочтительнее
  • https://t.me/clickhouse_ru
    тем что finalizeAggregation(Instock_Avl) неправильный результат выдаст. Это не агрегирующая функция.

    если у вас есть 2 строки, (y,5) и (x,6), argMaxМerge выдаст 6 и в sum попадет (x) , finalizeAggregation выдаст и 5 и 6, и будет sum(x+y)
  • https://t.me/clickhouse_ru
    Спасибо большое !
  • https://t.me/clickhouse_ru
    Union distinct rtfm)
  • @defaultdefault #235604 01:27 PM, 22 Sep 2021
    Всем привет! Вникаю в документацию кликхауза, и хотелось бы прояснить некоторые вопросы терминологии, мб кто-то подскажет. Есть следующие термины: partition, data part, granule и data block. Поправьте, если где-то ошибаюсь. Partition - это то что регулируется PARTTION BY, каждая партиция - отдельный раздел (или файл?) на диске, ускоряет запросы (правд ли?). Data part - это то, куда данные попадают при вставке, внутри куска они отсортированы по ORDER BY, затем куски в фоне мерджатся в куски побольше. Granule - это логическое разделение data part’а, по факту засечки индекса по PRIMARY KEY, который в свою очередь чаще всего является ORDER BY’ем, при чтении мы бежим по засечкам, и вычитываем нужные нам гранулы. А вот что такое data block?
  • https://t.me/clickhouse_ru
    @marshinov #235605 01:43 PM, 22 Sep 2021
    Вопрос про CollapsingMergeTree (https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/collapsingmergetree/). В доках предалагается использовать конструкции вида

    SELECT
    UserID,
    sum(PageViews * Sign) AS PageViews,
    sum(Duration * Sign) AS Duration
    FROM UAct
    GROUP BY UserID
    HAVING sum(Sign) > 0

    и не использовать final. А как поступить, если есть строки? Тоже группировать и склеивать их через разделитель в SELECT? Или для сценария, когда есть строки этот engine не очень подходит?
    CollapsingMergeTree | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    > Partition - это то что регулируется PARTTION BY
    да
    >,каждая партиция - отдельный раздел (или файл?) на диске

    каждая партиция отдельный логический раздел на диске
    физически это префикс в названии каталогов в /var/lib/clickhouse/data/db/table/{partition_name}_{min_block}_{max_block}_{how_much_merges_applied}`

    > ускоряет запросы (правд ли?)
    правда, но слишком мелкие partition запросы наоборот замедляют. базовая рекомендация делайте PARTITION BY toYYYYMM(datetime_column)
    не ошибетесь

    > Granule - это логическое разделение data part’а, по факту засечки индекса по PRIMARY KEY, который в свою очередь чаще всего является ORDER BY’ем, при чтении мы бежим по засечкам, и вычитываем нужные нам гранулы.

    почти все верно, только гранула логическая величина когда берется каждая X запись из набора и значения primary key идут в mrk файл, один парт один .mrk файл внутри него
    в парте может быть много записей, соответсвенно размер .mrk файла растет тем больше чем больше записей в парте (но незначительно)

    есть еще data skip indexes - и там гранула и гранулярность означает сколько гранул из primary key будет покрывать одна структура из data skip index

    при чтении мы бежим по засечкам. вычитываем из mrk смещение внутри .bin
    и читаем из .bin ДАТА БЛОКИ, расжимаем их
    и внутри расжатого блока берем второе смещение из .mrk чтобы понять где начинается исходная запись
    и дальше отправляем это в вышестоящий конвейер на фильтрацию \ агрегацию \ сортировку

    > Data part - это то, куда данные попадают при вставке, внутри куска они отсортированы по ORDER BY, затем куски в фоне мерджатся в куски побольше

    да, все правильно понимаете, после merge двух партов увеличивается цифра в how_much_merges_applied в результирующем парте
    см. формат именования еще раз
    /var/lib/clickhouse/data/db/table/{partition_name}_{min_block}_{max_block}_{how_much_merges_applied}`
  • https://t.me/clickhouse_ru
    partition -- это логическое понятие. Это объединение партов. Оно вообще чисто логическое.
    мы просто говорим что парты 202101_1_1000_99 и 202101_2034_4560_99 принадлежат одной партиции.
    парты -- это как раз папки, они образуются при инсертах И мержах

    да Granule -- это на что указывают засечки

    datablock -- это понятие native протокола, это не про хранение, это "результат запроса", это кол-во строк в блоке выдачи, т.е.
    там идут 30 строк колонка 1, 30 строк колонка 2, 30 строк колонка 3, 65536 строк колонка 1, 65536 строк колонка 2, 65536 строк колонка 3,
  • https://t.me/clickhouse_ru
    а что вы имеете ввиду под "строками"?
    что вам с ними надо сделать? "последнее значение" получить?
    можно WINDOW функции попробовать
  • https://t.me/clickhouse_ru
    извините опять гранулы с гранулярностью попутал
  • https://t.me/clickhouse_ru
    agrMax(строка, Sign) ?
  • https://t.me/clickhouse_ru
    @rjs45 #235611 02:01 PM, 22 Sep 2021
    Коллеги,
    Если мне нужно для консюмеров кафки в KafkaEngine таблицах поменять значение partition.assignment.strategy - это делается через секцию <kafka> в конфиге клики?
  • https://t.me/clickhouse_ru
    по этим параметрами ничего интересного не оказалось, но потом мы нашли метрику
    select * from system.asynchronous_metric_log
    where metric = 'OSMemoryCached'
    order by event_time desc;
    и там как раз видно что она забивается конкретно перед падением.
    Как этим можно управлять ?
    лимиты по памяти пользователей не отщелкивают
    use_uncompressed_cache 0
    merge_tree_max_rows_to_use_cache 1048576
    merge_tree_max_bytes_to_use_cache 2013265920
    тут написано, что кеш для больших запросов не должен использоваться
    DROP MARK CACHE
    Это же тоже не на постоянку
  • > datablock -- это понятие native протокола, это не про хранение, это "результат запроса", это кол-во строк в блоке выдачи

    Так всё же, это как вы говорите «результат запроса», или как описал @BloodJazMan выше, это всё-таки что-то про хранение. Очень какой-то расплывчатый термин, в доке он используется как минимум в трёх разделах, и по контексту как будто всё разное означает. Например, я так понимаю, в skip index’ах под «блоком» подразумевается опять же логическая группировка гранул, то есть первичный индекс отсекаеает гранулы, а скип индекс отсекает «блоки» гранул?
  • https://t.me/clickhouse_ru
    osmemorycached это кеширование дискового чтения, page cache управляет ядро, вы этим не управляете, это просто значит что clickhouse что-то активно вычитывал перед падением...
  • https://t.me/clickhouse_ru
    use_uncompressed_cache действительно не нужен для больших SELECT
  • https://t.me/clickhouse_ru
    да, последнее значение
  • https://t.me/clickhouse_ru
    да, мы там грузим данные и периодически падает. Шутим, что быстро поднятое не считается упавшим, но это не серьезно. Пытаюсь докопаться как этого избежать, но лучше, как этим управлять
  • https://t.me/clickhouse_ru
    что значит "грузим данные"?
    insert делаете и select большие одновременно?

    "падает clickhouse"
    это что значит?

    OOM? как вы это определяете?
  • https://t.me/clickhouse_ru
    clickhouse-client в Native формате с одного на другой переносим. Падает виртуалка, если быть точнее, но при использовании клика. В кусочке лога было видно, и специально нагружали и в мониторинге потребление виртуалкой памяти возросло до критических размеров. У виртуалки 138G ОП, для клика в параметрах 128G серверной памяти. Лимиты на запросы действую. На эту нашу загрузку, видимо, нет.
  • https://t.me/clickhouse_ru
    @BloodJazMan #235621 03:22 PM, 22 Sep 2021
    виртуалка какая? VMWare?
  • https://t.me/clickhouse_ru
    @nikitenkoolga #235622 03:22 PM, 22 Sep 2021
    Это сильно влияет?
  • https://t.me/clickhouse_ru
    @nikitenkoolga #235623 03:22 PM, 22 Sep 2021
    не знаю, но могу уточнить
  • https://t.me/clickhouse_ru
    @nblagodarnyy #235624 03:23 PM, 22 Sep 2021
    Все привет. Подскажите, пожалуйста, адекватный способ на весу преобразовать timestamp in milliseconds (по сути Int32 - 1632221751453) в DateTime64. FROM_UNIXTIME и CAST не умеют в миллисекунды, а toDateTime64 принимает или строку или DateTime, который уже потерял точность, или now64().
  • https://t.me/clickhouse_ru
    уточняйте

    дело в том что clickhouse-client -h host1 -q "SELECT * FROM table FORMAT Native" | clickhouse-client -h host2 -q "INSERT INTO table FORMAT Native"
    не должен жрать 128 метров оперативы
    на host2

    и сам clickhiouse-client должен жрать только буфера на чтение и вставку пропорционально кол-ву колонок
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    да, мне тоже странно
    у нас Proxmox VE
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    clickhouse-server точно разные?

    order by/group by нету в SELECT ?

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

    Пока не могу в интернете найти ответ
  • https://t.me/clickhouse_ru
    там 21.7.4.18 --> 21.8.4.51,
    order by/group by нету, есть выборка по дате и id
    select *
  • https://t.me/clickhouse_ru
    а могут вам графики расшарить по потреблению процессами памяти какие нибудь сторонние?

    OSmemorycached это не обязательно clickhouse-server там что-то резко начитал в память
    это цифирка из OS
  • LXC: Segmentation fault, sporadically · Issue #21594 · ClickHouse/ClickHouse

    Sometimes, once in 2-3 hours, Clickhouse restarts with segmentation fault. Database has almost no load, approx. 1000 inserts per minute. Does it reproduce on recent release? Yes How to reproduce I ...

  • https://t.me/clickhouse_ru
    @nikitenkoolga скажите вашим админам, чтобы юзали свежую версию проксмокса, докера и ядра или хотя бы запускали в режиме KVM вместо LXC.
  • https://t.me/clickhouse_ru
    @konstantin_ptr #235638 04:42 PM, 22 Sep 2021
    Кто нибудь стримит данные из bq?
  • @DovgalyukA #235640 04:43 PM, 22 Sep 2021
    Здесь было описание тривиальной ошибки, с некорректными полями*
  • @softbot_xxl #235641 04:44 PM, 22 Sep 2021
    Может у вас разные схемы на тесте и на проде?
  • Снимаю вопрос, спасибо. Где-то авторазворот ансиблом не тот тип поля выставил.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    тогда нужен как минимум текст ошибки в проксмоксе, чтобы дело сдвинулось с мёртвой точки
  • https://t.me/clickhouse_ru
    @nikitenkoolga #235645 05:01 PM, 22 Sep 2021
    ладно, достану
  • https://t.me/clickhouse_ru
    @finio #235646 05:26 PM, 22 Sep 2021
    здравствуйте, для одной из таблиц стала появляться ошибка DB::Exception: Incomplete granules are not allowed while blocks are granules size. Mark number 278 (rows 8192), rows written in last mark 0, rows to write in last mark from block 1 (from row 8192), total marks currently 279
    это лечится только установкой can_use_adaptive_granularity=0?
    уже пробовал перелить таблицу и через INSERT SELECT и через дамп в файл и рестор - не помогает
  • https://t.me/clickhouse_ru
    интересно, а какая гранулярность у вас задана?
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #235647 #235648 05:38 PM, 22 Sep 2021
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Clir in ClickHouse не тормозит

    очередь с такими ошибками last_exception: Code: 49, e.displayText() = DB::Exception: Incomplete granules are not allowed while blocks are granules size. Mark number 3 (rows 8192), rows written in last mark 0, rows to write in last mark from block 1 (from row 8192), total marks currently 4 (version 21.2.6.1 (official build)) postpone_reason: Not executing log entry queue-0000071148 of type MERGE_PARTS for part 632801e1b685803d8904b35e30441476_1143_1525_261 because source parts size (4.29 MiB) is greater than the current maximum (1.00 MiB).

  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #235649 #235650 05:43 PM, 22 Sep 2021
    да, но у нас то довольно свежий сервер - 21.3.5.42
  • @Shalomchick #235652 06:32 PM, 22 Sep 2021
    https://www.cnews.ru/news/top/2021-09-21_yandeks_zaregistriroval оффтоп но все же, про бесплатный клик можно позабыть? Т.е. сперва такая бесплатная модель ю, чтобы набрать клиентов, а потом выкатить коммерческую версию и сказать: "Ребят, мы выкатили коммерческую версию, заплатите 10000 бакинских! " и будут вам обновления и техподдержка?
    «Яндекс» решил сделать свою открытую СУБД коммерческой, потратив на проект $50 млн

    «Яндекс» запустил проект, финансирование которого составляет почти $50 млн. В основу коммерческих разработок новой...

  • https://t.me/clickhouse_ru
    Уже писали что будут поддерживать :) Вы чутка опоздали, холивар был позавчера
  • https://t.me/clickhouse_ru
    Какой то странный ресурс вы читаете🧐
  • Эхх, опоздал. А где пруфы, Билли?
  • https://t.me/clickhouse_ru
  • @Shalomchick #235657 06:36 PM, 22 Sep 2021
    Пусть тогда Алексей Миловидов @milovidov_an внесёт ясность какой-нибудь статьей, на Хабре или где например.
  • https://t.me/clickhouse_ru
    Только мы не Яндекс и не ClickHouse Inc, а Altinity :) .
    ClickHouse Software And Services — Altinity

    Deploy and operate ClickHouse, a lightning fast, open source SQL data warehouse for real-time analytics, time series, and log analysis.

  • https://t.me/clickhouse_ru
    Это да. Но учитывая ваш опыт мне лично все равно что коммитить будет не Алексей.
  • https://t.me/clickhouse_ru
    @dmitriynvkv #235660 06:45 PM, 22 Sep 2021
    Уверен вы сделаете четко 😎
  • https://t.me/clickhouse_ru
    @unamedrus #235661 06:45 PM, 22 Sep 2021
    Я просто решил уточнить, вдруг неправильно поняли.
  • @214612813 #235662 06:52 PM, 22 Sep 2021
    Ясность конечно не помешает, но мы не вправе её требовать. Найболее вероятной выглядит модель open source + плюшки и облако за деньги. Собственно CEO Aaron Katz из Elastic, зарабатывающий такой моделью, и пришёл.
  • @1803285152 #235663 07:12 PM, 22 Sep 2021
    Есть json типа:
    user_id: 1
    country: "RU"

    Как лучше его хранить в CH?
    1. Распарсить его на две колонки user_id и country, и повещать индексы на них
    2. Хранить как строку
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235663 #235664 07:24 PM, 22 Sep 2021
    если ключей действительно два как в примере, то распарсить, положить в колонки и не искать себе приключений.
    Но если ключей сотня, со сложной иерархией/структурой, и вы сами не знаете зачем они вам нужны, то можно положить в строку и парсить по требованию. Или материализовать в столбец, когда захочется быстрого доступа и агрегаций по какому-то из полей.
    Можно посмотреть например тут - https://altinity.com/webinarspage/2019/12/17/a-practical-introduction-to-handling-log-data-in-clickhouse
    (и надо добавить, что индексов тут скорее нет, чем есть)
  • Индексов в json? Просто потом нужно будет группировать по user_id
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235663 #235666 07:35 PM, 22 Sep 2021
    индексов в КХ. Тут нет индексов, тут есть сортировка данных при хранении. Группировка сама по себе не требует индекса если вы хотите прочитать всю таблицу.
    Но вы не ответили на вопрос - насколько велик и непредсказуем ваш json.
  • Тот что скинул это максимум. Есть ещё большой json у которого меняются поля - он будет как строка записан
  • Ну все равно если данные будет отсортированны по user_id их легче брать будет. Так же?
  • https://t.me/clickhouse_ru
  • Спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235663 #235671 07:38 PM, 22 Sep 2021
    тогда делайте парсинг перед инсертом и кладите в две колонки. И разбирайтесь с order by. Дело же не в том чтобы "легче брать", а в том чтобы "меньше читать".
  • https://t.me/clickhouse_ru
    @unamedrus #235672 07:39 PM, 22 Sep 2021
    https://kb.altinity.com/altinity-kb-schema-design/altinity-kb-jsonasstring-and-mat.-view-as-json-parser/

    Можно прямо в кх парсить, например с помощью DEFAULT
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235672 #235673 07:44 PM, 22 Sep 2021
    а как ошибки обрабатывать при таком парсинге? Что будет, если в 1 строчке из 10к будет json неправильного формата?
  • https://t.me/clickhouse_ru
    никак, пустота будет
  • @1803285152 #235675 07:47 PM, 22 Sep 2021
    Лучше пред обработку данных сделаю
  • @ignatov2k #235677 08:16 PM, 22 Sep 2021
    Здравствуйте, подскажите пожалуйста, поддерживает ли clickhouse-copier копирование materialized view ?
  • Статья на C-news странная, я подробно не читал, но заголовок некорректный.

    Вот тут оригинальная статья: https://clickhouse.com/blog/en/2021/clickhouse-inc/ Там написано, что собираемся делать. Для ClickHouse open-source комьюнити - самый важный драйвер развития, отказываться от этого не собираемся.
    Introducing ClickHouse, Inc.

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

  • Спасибо! Будем надеется что будущее у open-source CllickHouse будет таким же долгим, как у коммерческой.
  • @dj_mixer #235680 09:12 PM, 22 Sep 2021
    мораль, надо не забыть запилить пару важных ФРов пока бабло не победило =)))
  • https://t.me/clickhouse_ru
    посмотрите из ОС сколько памяти использует КХ (RES/RSS)
  • https://t.me/clickhouse_ru
    да да да
  • https://t.me/clickhouse_ru
    версия КХ ?
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #235683 #235684 10:30 PM, 22 Sep 2021
    21.3.5.42
  • https://t.me/clickhouse_ru
    так обновляйтесь до 21.3.17.2, между ними разница полгода
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #235685 #235686 10:31 PM, 22 Sep 2021
    спасибо
  • 23 September 2021 (149 messages)
  • @sedoygosha #235688 06:24 AM, 23 Sep 2021
    Привет всем, подскажите пожалуйста есть ли у AggregatingMergeTree столбец ver как у ReplacingMergeTree?
    Необходим функционал ReplacingMergeTree (ver) и AggregatingMergeTree ( AggregateFunction.).
  • https://t.me/clickhouse_ru
    @feduch #235689 06:30 AM, 23 Sep 2021
    Доброе утро!

    Подскажите, если использовать CH для хранения временных рядов, можно ли будет догружать исторические данные (произвольное количество дней, лет назад) к существующим данным?
  • https://t.me/clickhouse_ru
    без проблем
  • https://t.me/clickhouse_ru
    @feduch ↶ Reply to #235691 #235692 06:41 AM, 23 Sep 2021
    👍👍 спасибо!
  • https://t.me/clickhouse_ru
    нет, делайте каскад таблиц
    первая ReplacingMergeTree
    вторая AggregatingMergeTree
    и перекладывайте в ручную по какому нибудь snowflake id UInt64 полю
  • Ок. Спасибо. Попробую
  • @vvvjhaq #235695 06:50 AM, 23 Sep 2021
    Добрый день. Подскажите, есть ли возможность сделать MV в AggMT таблицу при инсертах в source таблицу без потери консистентности? Или тормозить вставки, собирать агрегат и запускать вставки?
  • https://t.me/clickhouse_ru
    она итак консистентность там будет

    аггрегат в AggregatingMergeTree не финализирован, там только State необходимый для финальной аггрегации

    доку еще раз перечитайте, пожалуйста
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree/#example-of-an-aggregated-materialized-view
    AggregatingMergeTree | ClickHouse Documentation

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

  • как оно будет консистентным, если MV-триггер на инсерт. Пример, создана MV, далее я беру и заполняю таблицу, которая находится в TO без фильтров на то, что уже попало в TO. Разве суммы/количества не задвоятся?
  • https://t.me/clickhouse_ru
    @121548504 #235698 07:13 AM, 23 Sep 2021
    Коллеги , добрый день.
    Подскажите есть ли вариант приаттачить партици broken_* из detach ?
  • если они broken - то скорее нет (либо к таблице не подходят либо CRC битый). хотя можно посмотреть почему они broken...
  • https://t.me/clickhouse_ru
    а зачем так делать?

    заполняйте только таблицу которая в FROM
    для MV написана...

    а destination таблицу которая в TO
    пусть заполняет триггер MV
  • https://t.me/clickhouse_ru
    Пользователь запустил запрос который должен был прочитать и вернуть хренолион строк. Запрос упал по памяти а все партиции которые он успел прочитать упали в брокен
  • мне надо исторические данные же сохранить, MV начнет писать только новые, а мне старые тоже нужно пересобрать в агрегат.
  • https://t.me/clickhouse_ru
    исторические данные у вас сейчас в каком движке? MergeTree? или уже в AggregatingMergeTree?
  • они в source таблице, MergeTree.
  • в общем в любом случае, если нужна историчность, на ходу это безопасно не сделать, только останавливать заливку в source
  • https://t.me/clickhouse_ru
    у вас должно быть поле по которому четко можно определить "вот новые данные"
    назовем его import_counter
    в лучшем случае монотонно восрастающий snowflake id UInt64
    в худшем случае datetime64(6) как DEFAULT now() который означает время импорта в source таблицу

    дальше делаете так
    создаете AggregatingMergeTree - aggregateed_table

    SELECT max(import_counter) FROM source_table
    сохраняем

    импортируем source таблицу по частям если большая
    INSERT INTO aggregated_table SELECT .. FROM source_table WHERE import_counter BETWEEN ... AND ... GROUP BY ...
    создаем новую таблицу с той же структурой что текущая
    CREATE new_source_table LIKE source_table

    создаем MaterializedView
    CREATE MATERIALZIED VIEW mv TO aggregated_table
    SELECT ... State(x) FROM new_source_table
    GROUP BY ...
    переключаем вставку на new_source_table

    довставляем дельту
    INSERT INTO aggregated_table SELECT .. FROM source_table WHERE import_counter > max_counter_from_previous_step GROUP BY ...
  • Да, спасибо, по такому алгоритму уже и делали, просто и вопрос заключался в том, чтобы не переключать вставку совсем.
    Такое в текущей реализации, к сожалению, не получится. Будем останавливать.
  • @1349292690 #235710 07:57 AM, 23 Sep 2021
    Добрый день.
    Подскажите, что может вызывать такое резкое уменьшение места на дисках? Данные пишутся равномерно в реплицируемые таблицы, шардирование по дате. Сегодня ночью за пол часа съело больше 15% диска.
  • https://t.me/clickhouse_ru
    смотрите
    system.parts_log
  • https://t.me/clickhouse_ru
    проверьте что мержинг идет...

    "шардирование по дате" значит что новые данные вставляются в какой то один шард?
    или под датой имеется ввиду "дата+время" и просто одна секунда вставляется в один шард?

    вставляете в distributed?
  • К сожалению, part_log не включен был, поэтому логов нет.

    Импортеры подключаются к нодам через BalancedClickhouseDataSource, пишем все в таблицу с движком Null, которая есть на каждом сервере. Вставка через мат вьюхи в ReplicatedMergeTree, на шард по 3 реплики. Дистрибуция самой крупной таблицы по cityHash64(request_id), т.е. считай рандом, таблицы с почасовой разбивкой - cityHash64(toDate(received_at_hour)), подневной - cityHash64(received_at_date).

    Все это работает уже не один год, только в последнее время начали замечать такие всплески. То вырастает на 15-20 процентов, через несколько дней так же может упасть.
  • https://t.me/clickhouse_ru
    ну у вас там не успевает видимо смержится

    размер партов какой по кол-ву строк?
    system.parts
    смотрите
    смотрите сколько system.parts active=0
  • на одной машине таких 1421 и растет, 13 партишенов 2021-09-23, строк от 210769 до 855877, остальные партишены 202109 до 333963 строк
  • https://t.me/clickhouse_ru
    в смысле у вас на машине active=0 растет 1421 партиция в одной таблице или вообще?
  • в смысле 1421 неактивная партиция
    на других машинах примерно столько же

    UPD: остановил импортеры, количество неактивных партиций начало падать до 923
  • https://t.me/clickhouse_ru
    @Hero_of_Comix #235722 10:19 AM, 23 Sep 2021
    Всем привет!
    может кто-то подскажет, пожалуйста, как в clickhouse-copier, в несколько воркеров копировать?
    увеличение в воркеров в таске эффекта не дало, или надо параллельно запускать несколько копиров?
  • https://t.me/clickhouse_ru
    ну merge проходит парты удаляются, они не сразу удаляются
  • пока не удаляются, количество неактивных вернулось до прежнего уровня, место на диске так и не освободилось. Сейчас практически не пишем в кластер, почему может не проходить удаление партиций?
  • https://t.me/clickhouse_ru
    @BloodJazMan #235726 10:48 AM, 23 Sep 2021
    system.merges смотрите и system.mutations
    мутации у вас используются?
  • в merges почему-то мерджится партиция 202107 у которой total_size_bytes_compressed = 88 GB.

    в мутациях ничего, кроме пары зависших 10 дней назад MATERIALIZE TTL

    UPDATE: в таблице system.merges пусто теперь, но в system.parts where active = 0 у этой таблицы размер как раз эти 88 Гигабайт
  • https://t.me/clickhouse_ru
    @XasturX #235729 11:50 AM, 23 Sep 2021
    Добрый день, простите за нубский вопрос, но кто какой библиотекой заливает данные из пандас датафрейма в clickhouse?
  • https://t.me/clickhouse_ru
    @308618636 #235730 11:50 AM, 23 Sep 2021
    Добрый день. У меня стандартная вроде задача , подскажите, пожалуйста, оптимальное решение.. есть словарь, который обновляется из вью постгреса. Но в постгресе данные всегда на текущий момент, если значение больше не актуально, его не будет. А мне нужна историчность- потому что логи, для которых этот словарь, анализируются за некоторый период в прошлом. Как сделать словарь, в котором значения с теми же ключами обновлялись, а если ключа в источнике больше нет, то сохранялись бы старые значения?
  • https://t.me/clickhouse_ru
    если использовать AggregateFunctions Max и ArgMax то получается тоже самое что и Replacing
  • https://t.me/clickhouse_ru
    можно настроить КХ и создать MV таким образом чтобы при повторных вставках (ретраях инсертов) все довставлялось в MV (по умолчанию это выключено и я уже устал объяснять почему)
  • https://t.me/clickhouse_ru
    переименовать (убрать broken) и сделать attach part
    хотелось бы увидеть логи КХ
  • https://t.me/clickhouse_ru
    конечно сделать, без остановки можно, миллион способов
  • https://t.me/clickhouse_ru
    да. так и починил. задетачил партицию целиком. переименовал битый фрагмент и приаттачил партицию обратно
  • https://t.me/clickhouse_ru
    зачем детачил? просто alter table attach partition или еще проще alter table attach part 'part_id'
  • https://t.me/clickhouse_ru
    проверьте что мерж не идет сейчас очень длинный select elapsed from system.merges
  • https://t.me/clickhouse_ru
    месяц назад попытка приаттачить битый фрагмент вызвала краш сервиса. Поэтому опасался
  • https://t.me/clickhouse_ru
    @Leossb ↶ Reply to #235729 #235739 12:11 PM, 23 Sep 2021
    Pandahouse
  • https://t.me/clickhouse_ru
    чудеса какие-то вы рассказываете, такое надо сообщать разработчикам
  • https://t.me/clickhouse_ru
    версия старая 19.5 уверен что получил бы рекомендацию обновиться
  • https://t.me/clickhouse_ru
    а это да, никто на такое старье время не будет тратить, все скорее всего пофикшено уже
  • https://t.me/clickhouse_ru
    кол-во воркеров в таске дает эффект если партиций много, они партиции параллельно копируют

    несколько копиров запускать нельзя
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    если сделать partial update словарь, то не будет удалять строки, до полной перезагрузки словаря (system reload dictionary)
    https://kb.altinity.com/altinity-kb-dictionaries/partial-updates/

    а по хорошему надо делать ETL и копировать данные в таблицу в КХ и словарь направлять на эту таблицу
  • https://t.me/clickhouse_ru
    ну то есть у вас постоянно подмерживается парт за 202107 которому 88гб
    там у вас прилетают какие то данные за июль потихоньку пара строк?
  • С регулярным полным обнулением таблицы или при настройке словаря появилась возможность group by указывать?
  • https://t.me/clickhouse_ru
    зачем group by ?
  • https://t.me/clickhouse_ru
    почему бы июлю не смержится сейчас? Просто в пуле появились ресурсы например
  • Если словарь натравливать на таблицу в кх, то она же булет иметь дубликаты при докидывании обновлений.
  • https://t.me/clickhouse_ru
    @Makasinov #235751 12:38 PM, 23 Sep 2021
    👋 Хай, подскажите как можно узнать причину, по которой alter delete не удаляет данные уже продолжительное время?
    alter table agg.events_hour_local delete WHERE (day = '2021-09-22' and cid = 2525 and os = '')
    В system.mutations мутация есть, но в system.merges where is_mutation = 1 пусто. Логи также пустуют. Ни ошибок, ни подсказок
    UPD: версия 21.6.6.51
  • https://t.me/clickhouse_ru
    и откуда дубликаты?
  • https://t.me/clickhouse_ru
    В system.mutations много полей и в них много интересного написано, обычно ответ на ваш вопрос тоже
  • Кажись понял. Отбираются записи старше сохраненной даты, обновляются в словаре по ключу. В таблице по ключу дубликаты, но словарь последние значения хранит.
  • https://t.me/clickhouse_ru
    @399999446 #235756 12:45 PM, 23 Sep 2021
    всем привет
    select
    TerminalId
    ,ifNull((TransactionAmountSum + TransactionAmountSumDomMc),toDecimal32(0,8)) as col1
    ,TransactionQtyDomMc0_20 + TransactionQtyIntMc as col2
    ,toTypeName(col1) as col1_type
    ,toTypeName(col2) as col2_type
    ,case when col2 = 0 then 0 else col1/col2 end as res

    from _ecom_transaction_predictors
    where TerminalId = 'E0104631'

    Ошибка
    DB::Exception: Division by zero:

    Данные:
    TerminalId col1 col2 col1_type col2_type
    E0104631 0.00000000 0 Decimal(38, 8) UInt64

    Почему case не срабатывает?
  • https://t.me/clickhouse_ru
    1 в таблице (она ведь будет маленькая) можно сделать replacingMergeT и всегда делать optimize после заливки
    2 можно сделать вообще таблицу RockDB и там не будет дубликатов
    3 и да в словарях можно писать теперь произвольный SQL запрос
  • https://t.me/clickhouse_ru
    SELECT *
    FROM system.mutations
    WHERE is_done = 0

    Query id: 20500c01-c47c-478f-b758-d9bb9306c993

    Row 1:
    ──────
    database: agg
    table: events_hour_local
    mutation_id: 0000000012
    command: DELETE WHERE (day = '2021-09-22') AND (cid = 2525) AND (os_type = '')
    create_time: 2021-09-23 12:32:16
    block_numbers.partition_id: ['20200713','20200720', ... сократил для удобства чтения ... ,'20210920']
    block_numbers.number: [1732,2053, ... сократил для удобства чтения ... ,13644]
    parts_to_do_names: ['20210920_0_13367_6']
    parts_to_do: 1
    is_done: 0
    latest_failed_part:
    latest_fail_time: 1970-01-01 00:00:00
    latest_fail_reason:
    Резервирует место чтоли? Фейла нет, причины также. Будто залип на чем то. Кластер из двух реплик, на другой реплике также пусто. Имхо в зк тоже не может быть проблемы. Я вижу пока путь рестарта обоих нод авось поможет (иногда прокатывало)
  • @fs_fs_fs_fs #235759 12:47 PM, 23 Sep 2021
    Всем привет. Надо заимпортить CSV в котором встречаются строки типа "TEXT_"TEXT"", хотелось бы чтобы в базу попало TEXT_"TEXT". Если использовать --format_csv_allow_double_quotes=0 то в базу попадает "TEXT_"TEXT""
    Ответ где то на поверхности, но не могу сообразить.
  • https://t.me/clickhouse_ru
    размер парта 88гб
    inactive part еще живет какое то время ...
    у людей размер на диске скачет людям страшно
    https://t.me/clickhouse_ru/235710
    Vladimir S in ClickHouse не тормозит

    Добрый день. Подскажите, что может вызывать такое резкое уменьшение места на дисках? Данные пишутся равномерно в реплицируемые таблицы, шардирование по дате. Сегодня ночью за пол часа съело больше 15% диска.

  • https://t.me/clickhouse_ru
    так это мерж идет очень долго, я тут не вижу ничего странного на графике, плюс там возможно TTL который не стартует потому что места нет
  • https://t.me/clickhouse_ru
    parts_to_do_names: ['20210920_0_13367_6']

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

    я не знаю что такое эрфлоу
    Denny Crane [Starship Captain at Altinity (NB,Canada)] in ClickHouse не тормозит

    1 в таблице (она ведь будет маленькая) можно сделать replacingMergeT и всегда делать optimize после заливки 2 можно сделать вообще таблицу RockDB и там не будет дубликатов 3 и да в словарях можно писать теперь произвольный SQL запрос

  • https://t.me/clickhouse_ru
    etl фреймворк
  • https://t.me/clickhouse_ru
    спасибо
  • приходить свежих данных за июль не должно быть, это точно.
    этот партишн уже смерджился, в system.merges пусто, иногда простакивает за текущий месяц мердж. в мутациях тоже пусто, в system.parts active = 0 размер суммарный не привышает гига, но место по-прежнему не вернулось после скачка. Это было бы не так страшно, если бы мы не приближались уже к 95%, когда поды просто начнут умирать от нехватки места.
  • https://t.me/clickhouse_ru
    вы уже включили system.parts_log?

    анализ system.parts по тому какие данные больше всего на диске жрут нашли?
  • https://t.me/clickhouse_ru
    Докинул rwrwrw, которых не было. Парта к слову тоже нет, но аттач&детач ни таблицы, ни партиции не помогли. Попробую рестартануть
  • https://t.me/clickhouse_ru
    еще можно глянуть на колонки name и modification_time в system.parts. Если в конце name "_0" - это еще ни с чем не слитые данные. modification_time понятно, можно посмотреть, с какими партами что-то делалось самое последнее
  • https://t.me/clickhouse_ru
    Спасибо, посмотрю rockdb
  • https://t.me/clickhouse_ru
    >Парта к слову тоже нет
    а подробнее? Есть другой 20210920_0_13367_.... ?
  • https://t.me/clickhouse_ru
    вы TTL используете?
  • https://t.me/clickhouse_ru
    посмотрите detached папки

    и сравните занятый размер du -sh / system.parts active / system.parts active +system.parts inactive
  • https://t.me/clickhouse_ru
    Ноу, только 20210920_0_3038_5 ближайший похожий. Для чистоты удалил мутацию, рестартанул кх, проставил в папке с данными chmod 777 */* и прогнал снова - застрял. Зато на логах реплики заметил много одинаковых строк:
    : Checking part 20210920_13777_13808_2_13807
    : DB::Exception: No active replica has part 20210920_13777_13808_2_13807 or covering part
    : Checking if anyone has a part 20210920_13777_13808_2_13807 or covering part.
    : Found parts with the same min block and with the same max block as the missing part 20210920_13777_13808_2_13807. Hoping that it will eventually appear as a result of a merge.
  • https://t.me/clickhouse_ru
    застрял снова на 20210920_0_13367_6 ?
  • https://t.me/clickhouse_ru
    Да, ровно тот же парт
  • https://t.me/clickhouse_ru
    и в system.parts его нет

    надо смотреть на реплике
    надо смотреть в ZK
  • https://t.me/clickhouse_ru
    что то конкретное искать, или просто наличие аномалий, логов и прочего?
  • https://t.me/clickhouse_ru
    да парт этот в списке партов в ZK.

    видимо проще всего detach/attach всей партиции, но реплика перекачает
  • пока нет возможности рестартануть кластер.

    Denny Crane [Starship Captain at Altinity (NB,Canada)], [23.09.21 16:32]
    [In reply to Vladimir S]
    посмотрите detached папки
    и сравните занятый размер du -sh / system.parts active / system.parts active +system.parts inactive

    в system.parts таблице общий размер партиций 2.17 TiB, а на самом диске
    Filesystem Size Used Avail Use% Mounted on
    overlay 3.8T 2.9T 337G 90% /

    Denny Crane [Starship Captain at Altinity (NB,Canada)], [23.09.21 16:30]
    [In reply to Vladimir S]
    вы TTL используете?

    да, на отдельной колонке в самой большой таблице, так же недавно добавились таблицы с TTL в несколько дней, но там пока мало данных
  • @vvvjhaq #235782 01:51 PM, 23 Sep 2021
    На таблицу навешено 2 МВ. Хотим ускорить инсерты в МВ. МВ пишет в отдельную AggMT таблицу, там нет даты, партиционирование по intDiv(id, 50000000), всего 6 партиций. Бывают вставки в несколько партиций сразу, это скорее всего медленно. Всего в AggMT 60млн строк, таблица размером 72ГБ. Стоит попробовать переделать на 1 партицию, может это помочь улучшить перформанс на вставке МВ?
  • https://t.me/clickhouse_ru
    @whsv26 #235783 01:51 PM, 23 Sep 2021
    Всем привет. Можно ли как-то поменять тип у столбца с типом AggregateFunction?

    Например
    AggregateFunction(argMax, UInt64, DateTime64) на
    AggregateFunction(argMax, Decimal(19, 4), DateTime64)
  • https://t.me/clickhouse_ru
    Ну т.е. на 200 гиг не совпадает?
  • https://t.me/clickhouse_ru
    А если включить параллельный процессинг МВ меняется что-нибудь?
  • https://t.me/clickhouse_ru
    ЭмХм. Зачем?
  • на таблицу и чтобы писал в 1 партицию?
  • https://t.me/clickhouse_ru
    Нет. Параметр пользовательский parallel view processing
  • https://t.me/clickhouse_ru
    @whsv26 ↶ Reply to #235786 #235790 01:59 PM, 23 Sep 2021
    Тип данных нужно поменять с UInt64 на Decimal в основной таблице. Но на эту таблицу ещё смотрит материальная вьюшка, которая перекладывает промежуточный результат агрегации в таблицу, в которой тип столбцов AggregateFunction. Поэтому нужно ещё и там поменять тип
  • спс, выключен
    попробую включить, он сразу же подтянется из профиля пользователя?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    Тогда видимо все сложно. Ещё одно поле добавить в aggr,MT , сделать там default из старого поля через конвертации, и потом помержить и переименовать поля
  • https://t.me/clickhouse_ru
    @whsv26 ↶ Reply to #235793 #235794 02:07 PM, 23 Sep 2021
    спасибо
  • @EdigarevEA #235797 02:34 PM, 23 Sep 2021
    Привет. ENGINE RabbitMQ считается стабильным в 21.9.2.17?

    Для вычитки раббита использую таблицу ENGINE = RabbitMQ
    SETTINGS rabbitmq_host_port = '192.168.0.10:5672', rabbitmq_exchange_type = 'direct', rabbitmq_exchange_name = 'import_events', rabbitmq_routing_key_list = 'import_events', rabbitmq_format = 'JSONAsString', rabbitmq_flush_interval_ms = 5000, rabbitmq_num_consumers = 1;
    далее полученные строчки парсю как json в MATERIALIZED VIEW. Вроде тут всё логично.

    Консьмер периодически отпадывает и не перезапускается
    <Error> StorageRabbitMQ (rabbitmq_queue): Library error report: connection prematurely closed by client
    <Fatal> BaseDaemon: (version 21.9.2.17 (official build), build id: E4F05ABB2100332308613C22030A03F5A4621821) (from thread 14016) (no query) Received signal Segmentation fault (11)
    <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Address not mapped to object.

    А в логах по нескольку раз в секунду сообщения
    <Error> void DB::StorageRabbitMQ::streamingToViewsFunc(): Code: 49. DB::Exception: Pos in empty own buffer. (LOGICAL_ERROR), Stack trace (when copying this message, always include the lines below)

    Стабильно писать данные у меня пока не получилось.
  • https://t.me/clickhouse_ru
    @1516245565 #235798 02:38 PM, 23 Sep 2021
    Привет, как убедиться, что все ddl , которые были на первом ноде с ON CLUSTER выполнены, попали на все остальные ноды и сохранились на диске? Какой то flush или что то подобное есть? Чтобы не ждать пока оно само, а зафорсить?
  • https://t.me/clickhouse_ru
    @mark_adamenko #235799 02:59 PM, 23 Sep 2021
    Коллеги, приветствую! Стоит задача записывать и работать с очень большим (сотни гигабайт raw) тесно переплетенных данных - multiarrays of multiarrays, структуры массивов заранее неизвестны и ничем не ограничены. В качестве примера можно использовать такую абстракцию - - 1. таблица: колонки - условия (например языки), строки переменные при этих условиях (термин, и его переводы), в следующей таблице уже эти термины могут стать заглавиями колонок или ключевиками для строк. И так до бесконечности. Хочется во первых сами переменные (также как и название строк и столбцов хранить где-то во внешнем словаре на каком-нибудь rocksdb, а в мультидименшен массивах оперировать idшниками как в ClickHouse. Сейчас присматриваюсь к https://tiledb.com , но пока его победить не удается, может не докопал, конечно еще, например, для каждого массива приходится указывать схему, типы данных, атрибуты, размерность заранее, а у нас массивов много и они будут появляться непредсказуемо, ну и функциональности внешних словарей не хватает, не только в данных, но и в схемах. Как я вижу идеальный вариант - tiledb еще одно хранилище для ClickHouse и еще и с внешними словарями и еще не только для данных, но и для схем. Если я правильно понимаю, потенциально это дало бы огромный скачок в развитии (очень сильный рост производительности, снижение накладных расходов, а самое главное упростилась бы работа с данными сильно) Возможно ли организовать подобное на Clickhouse и если да то как? Если нет, может знаете, как проблему можно эффективно решить?
    TileDB - Data management made universal

    Manage any data as multi-dimensional arrays and access with any tool at global scale, all serverless.

  • https://t.me/clickhouse_ru
    а это не ложится на какойнить Dgraph ?
  • https://t.me/clickhouse_ru
    @mark_adamenko #235801 03:03 PM, 23 Sep 2021
    Можно до определенного предела, но верхнего предела не предполагается. Плюс - в TileDB это по идее гораздо эффективнее и по месту и по производительности.
  • https://t.me/clickhouse_ru
    @mark_adamenko #235802 03:06 PM, 23 Sep 2021
    В Dgraph именно вносить не пробовали, но Stardog, например, загнулся.
  • https://t.me/clickhouse_ru
    @mark_adamenko #235803 03:09 PM, 23 Sep 2021
    И у dgraph есть какие-то ограничения, не помню точно какие, на комьюнити версию... Неприемлемо тоже...
  • https://t.me/clickhouse_ru
    @melkayalenka #235804 03:11 PM, 23 Sep 2021
    Здравствуйте, подскажите, пожалуйста, принцип работы команды OPTIMIZE - насколько я поняла из доки она выполняет принудительное слияние данных для более эффективного их хранения. Означает ли это, что данные будут занимать меньше места после ее выполнения? не блокируются ли таблицы во время ее выполнения?
  • Таблицы не блокируются, данные какое-то время могут занимать даже больше места, чем занимали 🙂насколько помню те парты, что были помержены, удаляются не сразу после мержа. После мержа и удаления померженных партов, данные будут занимать, по крайней мере, не больше места чем занимали. Степень уменьшения объёма данных зависит от самих данных, ключа сортировки и кодеков применяемых для сжатия.
  • https://t.me/clickhouse_ru
    спасибо! а настройкой кодеков можно прямо существенно изменить объемы данных? у меня просто проблема с местом на сервере, и я пытаюсь понять можно ли как-то оптимизировать средствами кликхауса или только увеличением сервера
  • https://t.me/clickhouse_ru
    Да, Dgraph пощупаю сейчас еще раз - с тех пор, как в последний раз интересовался (год назад, наверное) многое изменилось-появилось... Возможно...
  • https://t.me/clickhouse_ru
    просто OPTIMIZE
    пытается стриггерить background merge

    OPTIMIZE .. FINAL
    полностью перебирает таблицу
    не используйте его если не понимаете что делаете, убьете дисковую производительность
  • https://t.me/clickhouse_ru
    если dgraph не подйдет еще есть вот такая графовая БД
    https://github.com/vesoft-inc/nebula
    GitHub - vesoft-inc/nebula: A distributed, fast open-source graph database featuring horizontal scalability and high availability

    A distributed, fast open-source graph database featuring horizontal scalability and high availability - GitHub - vesoft-inc/nebula: A distributed, fast open-source graph database featuring horizo...

  • https://t.me/clickhouse_ru
    Не нашел в зк этого парта. Решил детач/атач сделать партиции, в итоге на одной ноде данные удвоились, на другой стало меньше и мутация на половину завершилась) Проблема была в том что детач оказался дольше 300 секунд и он тоже залип, поэтому могли быть осложнения. В общем решил снова рестартануть кликхаусы, полностью переналить агрегаты из сырой таблицы и на этом закончить. Теперь правда в логах маячит потерянный парт, которого, конечно же нет)
  • Вот тут можно почитать про кодеки и подобрать подходящий в зависимости от данных и сортировки https://clickhouse.com/docs/en/sql-reference/statements/create/table/#codecs
    TABLE | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    Благодарю, буду смотреть...
  • https://t.me/clickhouse_ru
    спасибо!
  • А строится ли skip index при optimize, если запустить его после добавления индекса?
  • https://t.me/clickhouse_ru
    @Caside #235817 04:11 PM, 23 Sep 2021
    Падают запросы по оценке времени выполнения. Пример:
    Estimated query execution time (2267171.9933172856 seconds) is too long.
    Явно это некорректная оценка. Но отказываться от этой проверки тоже не можем, чтобы не допустить намертво завысшего запроса, который будет действительно выполняться несколько часов.

    Можно ли отключить эту проверку и включить проверку по реальному времени выполнения запроса? Чтобы запрос сбрасывался по достижению заранее заданного лимита времени? Как называется эта настройка?
    Версия 21.7.5.29.
  • https://t.me/clickhouse_ru
    @sasha_yr #235818 04:29 PM, 23 Sep 2021
    Здравствуйте. Подскажите пожалуйста. Для движка "ENGINE = Kafka()" есть возможность указать url для реестра схем Confluent через format_avro_schema_registry_url. Существует ли возможность задать пользователя и пароль для подключения к реестру (basic auth)?
  • https://t.me/clickhouse_ru
    detach/attach надо делать на одной реплике, затем удалить все в detached на всех других репликах
    system restart replica таблица
  • https://t.me/clickhouse_ru
    да, но есть materialize index -- намного более легкая команда
  • https://t.me/clickhouse_ru
    да , отключается timeout_before_checking_execution_speed=0
  • https://t.me/clickhouse_ru
    🙏 спасибо, 100% в этом было дело. Я правильно понимаю, что когда посылаю ddl на альтер, то выбор партов которые нужно мутировать идут с зукипера? Т.е. сейчас в логах No active replica has part 20210920_13777_13808_2_13807, то нужно удалить этот парт из зк?
  • О, спасибо за наводку, а на проде materialize запустить можно, сильно бьёт по перформансу?
  • https://t.me/clickhouse_ru
    как бы да, но в современных версиях это решено, там создается пустой парт для потеряных партов
  • https://t.me/clickhouse_ru
    можно, не сильно
  • https://t.me/clickhouse_ru
    [zk (CONNECTED) 28] ls /clickhouse/cluster_1/tables/2/agg/events_hour_local/block_numbers/20210920_13777_13808_2_13807
    я даже нашёл его по эту пути. Безопасно будет его deleteall сделать?
  • https://t.me/clickhouse_ru
    @abdulgalimov #235827 05:51 PM, 23 Sep 2021
    Господа подскажите как правильно создать индекс. Есть такая таблица:
    CREATE TABLE IF NOT EXISTS Params
    (
    param0 Int32,
    param1 Int32,
    param2 Int32,
    createdDate DateTime
    ) ENGINE = MergeTree() PARTITION BY toYear(createdDate)
    ORDER BY (createdDate)

    Планируется в поиске использовать обязательно одно поле param0, остальные опциональные.
    Т.е. в зпросе в where может быть любая комбинация параметров paramX и createdDate.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235827 #235829 06:05 PM, 23 Sep 2021
    Что такое "поиск"? Сколько записей вы хотите выбрать из таблицы? Сколько всего в таблице?
    Я бы начал с хороших дисков и варианта ниже. И посмотрел бы насколько оно удовлетворяет по скорости:
    CREATE TABLE IF NOT EXISTS Params
    (
    param0 Int32,
    param1 Int32,
    param2 Int32,
    createdDate DateTime
    ) ENGINE = MergeTree() PARTITION BY toYYYYMM(createdDate)
    ORDER BY (param0,param1,param2,createdDate)
    где порядок paramX зависит от кардинальности (меньший вперед)
    индексов в общеупотребительном понимании (типа pg) тут нет.
  • https://t.me/clickhouse_ru
    Ответил сам себе - безопасно. Сделал потом нормальный атач/детач, всё решилось, спасибо за помощь
  • https://t.me/clickhouse_ru
    1) Поиск это select ... where ....
    2) Записи в таблице это действия юзера в приложении. Планируется что в сутки будет по 3000-5000 новых записей.
    3) Хочу строить график, показывающий сколько и каких действий было в приложении за определенный промежуток времени.

    Спасибо за пример, буду пробовать.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235831 #235832 06:14 PM, 23 Sep 2021
    5000 в сутки - это очень мало. нормальное число для КХ от миллиона. У людей тут бывает по сотне и более миллионов. Так что правильного порядка order by вам скорее всего хватит. И стандартного партиционирования по месяцам.
  • https://t.me/clickhouse_ru
    👍 спасибо
  • Понял, спасибо!
  • https://t.me/clickhouse_ru
    ну по идее файлы для skip index создаются в момент создания нового парта, так что должен перестраиваться
    но есть же отдельно
    ALTER TABLE ... MATERIALIZE INDEX IN PARTITION
    https://clickhouse.com/docs/en/sql-reference/statements/alter/index/
    INDEX | ClickHouse Documentation

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

  • А вот если, в теории, кусок уже один, то optimize не поможет, нужен получается ещё и final?
  • https://t.me/clickhouse_ru
    типа того.
    optimize вызывает незапланированный мерж, т.е. если у вас 10 кусков, то optimize помержит что-то, например 2 куска из 10, и в итоге будет 9 кусков, 1 новый, 8 старых.
    Final смержит все 10 старых кусков в один новый, точнее попытается , сделает то что сможет в зависимости от места в пуле.
  • Ну и выходит что просто optimize не построит индекс для тех кусков, которые он решил не трогать
  • https://t.me/clickhouse_ru
    выходит что optimize final тоже
  • Понятно, спасибо! А-то как-то дока сбивает с толку своим «If you specify FINAL, optimization is performed even when all the data is already in one part», но выходит что ничего не гарантируется
  • https://t.me/clickhouse_ru
    вам же сказали что проще через ALTER TABLE...
    там даже MATERIALIZE INDEX IN PART по идее должно рабоать а не только PARTITION
  • Я просто для понимания
  • https://t.me/clickhouse_ru
    ну там в доке 10005000 вещей не написаны или устарели.
    если бы у меня было 5 минут я бы поправил, но их у меня нет.

    появился например параметр который заставляет FINAL не мержить если парт один и его левел >0
    или например FINAL мержит не обращая внимания на макс. рамер парта, это тоже не написано, а обычный мерж обращает
  • По поводу 10005000 немного чувствуется, так бы я в этот чатик не забрёл) Попробую в ближайшее время помочь PR’ами в доку
  • https://t.me/clickhouse_ru
    @nike_ilin #235846 07:54 PM, 23 Sep 2021
    Подскажите, пожалуйста, как-то можно через http client вместе с ответом получить время выполнения запроса? Может как-то можно заставить отдавать какой-нибудь кастомный хедер?
  • @635404397 #235847 08:07 PM, 23 Sep 2021
    system.parts показывает неправильный размер данных?
    подскажите, пожалуйста, что я делаю не так
    выполняю запрос чтобы посмотреть занимаемое таблицей место
    SELECT
    table,
    formatReadableSize(sum(bytes)) AS size,
    formatReadableSize(sum(bytes_on_disk)) AS size_disk,
    formatReadableSize(sum(data_compressed_bytes)) AS data_compressed_bytes,
    formatReadableSize(sum(data_uncompressed_bytes)) AS data_uncompressed_bytes,
    min(min_date) AS min_date,
    max(max_date) AS max_date,
    count(*)
    FROM system.parts
    WHERE active AND (table = 'ts_data_double_5')
    GROUP BY table
    size_disk = 2.52 TiB

    смотрю df -h или du -h /mnt (все диски подмонтированы в /mnt)
    говорит
    1.4TB

    я неправильно написал запрос или?
  • @635404397 #235848 08:07 PM, 23 Sep 2021
    сервер один
  • @635404397 #235849 08:13 PM, 23 Sep 2021
    ebs диски, фс ext4
  • https://t.me/clickhouse_ru
    а база данных одна?) Может в другой есть таблица с тем же именем
  • @635404397 #235851 08:19 PM, 23 Sep 2021
    вопрос снят. прошу прощения за беспокойство. половину данных запихнуло в s3 диск, хотя в конфиге прописано
    <disks>
    <disk1>
    <path>/mnt/disk1/</path>
    </disk1>
    <disk2>
    <path>/mnt/disk2/</path>
    </disk2>
    <disk3>
    <path>/mnt/disk3/</path>
    </disk3>
    <disk4>
    <path>/mnt/disk4/</path>
    </disk4>
    <s3>
    <type>s3</type>
    ...
    </s3>
    </disks>
    <policies>
    <ebs>
    <volumes>
    <default>
    <disk>disk1</disk>
    <disk>disk2</disk>
    <disk>disk3</disk>
    <disk>disk4</disk>
    </default>
    <s3>
    <disk>s3</disk>
    </s3>
    </volumes>
    </ebs>
    </policies>
    я ожидал, что по умолчанию он будет сохранять в volumes#default, а на s3 я смогу переносить вручную
    как правило написать конфиг чтобы по умолчанию все улетало в нормальные диски, а в s3 либо по TTL либо вручную?
  • https://t.me/clickhouse_ru
    из-за <move_factor> ? место кончилось и передвинулось?

    move_factor — доля доступного свободного места на томе, если места становится меньше, то данные начнут перемещение на следующий том, если он есть (по умолчанию 0.1).

    в логе кажется написано почему двигаем
  • 24 September 2021 (168 messages)
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #235821 #235853 12:15 AM, 24 Sep 2021
    А как включить проверку по реальному времени выполнения запроса? Чтобы дольше заданного параметром времени запросы не выполнялись?
  • https://t.me/clickhouse_ru
    не понял вопроса, max_execution_time ?
  • https://t.me/clickhouse_ru
    @Caside ↶ Reply to #235854 #235855 12:19 AM, 24 Sep 2021
    Да, наверное оно, спасибо
  • https://t.me/clickhouse_ru
    ну или вам надо просто задать timeout_before_checking_execution_speed= побольше, тогда экстраполяция будет точнее оценивать
  • https://t.me/clickhouse_ru
    @litecombo #235858 03:36 AM, 24 Sep 2021
    2021.09.24 03:35:25.731274 [ 347 ] {} <Error> auto DB::IBackgroundJobExecutor::execute(DB::JobAndPool)::(anonymous class)::operator()() const: Code: 236. DB::Exception: Cancelled mutating parts. (ABORTED), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x936713a in /usr/bin/clickhouse
    1. DB::MergeTreeDataMergerMutator::checkOperationIsNotCanceled(DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo> const&) const @ 0x114dd29d in /usr/bin/clickhouse
    2. DB::MergeTreeDataMergerMutator::writeWithProjections(std::__1::shared_ptr<DB::IMergeTreeDataPart>, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeProjection const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeProjection const> > > const&, std::__1::shared_ptr<DB::IBlockInputStream>, DB::IMergedBlockOutputStream&, long, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, std::__1::shared_ptr<DB::Context const>, DB::IMergeTreeDataPart::MinMaxIndex*) @ 0x114e685e in /usr/bin/clickhouse
    3. DB::MergeTreeDataMergerMutator::mutateAllPartColumns(std::__1::shared_ptr<DB::IMergeTreeDataPart>, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeIndex const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeIndex const> > > const&, std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeProjection const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeProjection const> > > const&, std::__1::shared_ptr<DB::IBlockInputStream>, long, std::__1::shared_ptr<DB::ICompressionCodec> const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, bool, bool, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, std::__1::shared_ptr<DB::Context const>) @ 0x114df340 in /usr/bin/clickhouse
    4. DB::MergeTreeDataMergerMutator::mutatePartToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::MutationCommands const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, long, std::__1::shared_ptr<DB::Context const>, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&) @ 0x114da6db in /usr/bin/clickhouse
    5. DB::StorageMergeTree::mutateSelectedPart(std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::StorageMergeTree::MergeMutateSelectedEntry&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&) @ 0x116a6342 in /usr/bin/clickhouse
    6. ? @ 0x116b42f8 in /usr/bin/clickhouse
    7. ? @ 0x113dea37 in /usr/bin/clickhouse
    8. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x93aae78 in /usr/bin/clickhouse
    9. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x93aca1f in /usr/bin/clickhouse
    10. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x93a815f in /usr/bin/clickhouse
    11. ? @ 0x93aba43 in /usr/bin/clickhouse
    12. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    13. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.9.3.30 (official build))
  • https://t.me/clickhouse_ru
    @litecombo #235859 03:37 AM, 24 Sep 2021
    Беда хелп плиз
  • https://t.me/clickhouse_ru
    @litecombo #235860 03:37 AM, 24 Sep 2021
    Не стартует. Удалил очень много данных алтером
  • https://t.me/clickhouse_ru
    а где кусок лога про не стартует?
    replicated таблица ?
  • https://t.me/clickhouse_ru
    @litecombo #235862 04:01 AM, 24 Sep 2021
    Удалил взлетело. Проще переналить чем разбираться
  • https://t.me/clickhouse_ru
    @S_Dimitry #235863 04:50 AM, 24 Sep 2021
    Коллеги, назрел такой вопрос. Можно ли примаунтить кастомный PVC к одному поду КХ в операторе? Смысл этого- хочу бэкапить раз в неделю фризом недельной партиции на определенной ноде КХ.
  • @vladget #235864 05:13 AM, 24 Sep 2021
    Доброе утро!

    Поделитесь опытом миграции с синглноды на шардированный кластер, кто делал?

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

    План примерно такой:
    - создать реплицированный, шардированный кластер
    - пересоздать все таблицы в базах с движком в префиксе Replicated
    - создать дистрибьютед таблицы
    - залить данные
  • https://t.me/clickhouse_ru
    PR в EN и RU версию остро приветсвуются в яндексе есть ребята которые только докой занимаются, но там я так понимаю у них кроме этой доки вагон и маленькая тележка всего...
  • https://t.me/clickhouse_ru
    перезаливка данных обязательна если вам надо чтобы кластер начал работать "равномерно", потому что вы single-node довели до больше 80% disk usage

    у вас сколько данных сейчас?
    если сотни гигабайт, то можно и перезалить через INSERT INTO distributed_table SELECT * FROM old_merge_tree_table
  • До 10ти терабайт, какая альтернатива?
  • https://t.me/clickhouse_ru
    у вас одна нода на 10 терабайт?
  • https://t.me/clickhouse_ru
    ну...
    какой движок базы сейчас Atomic или Ordinary? и какая версия clickhouse?
  • Пока около 8ми. Версия свежая. 21.xx, сейчас не скажу.
  • https://t.me/clickhouse_ru
    реплицируемый - шардируемый кластер
    вы хотите вместо одного сервера на 8 терабайт
    4 сервера, по 2 в репликации и на каждом по 4 терабайта данных?
    чтобы так сказать суммарный capacity оставить на уровне 16-20 терабайт?
  • Мы хотим, горизонтальное масштабирование, увеличения объема, прирост производительности в вычислениях и при этом симлес миграцию, вот что мы хотим :)
  • https://t.me/clickhouse_ru
    все хотят
  • Это не реально? На самом деле программа минимум на сегодня - увеличить объём.
  • @vladget #235876 05:58 AM, 24 Sep 2021
    Есть какие то способы вливать данные в шардированный кластер не инсертами?
  • https://t.me/clickhouse_ru
    вы мне точно на вопрос то не ответили

    сколько серверов то в итоге?
    4 или 2?
  • Два без реплик для старта, потом добавлять по мере необходимости.
  • https://t.me/clickhouse_ru
    @BloodJazMan #235879 06:21 AM, 24 Sep 2021
    ну ок.
    без простоя для клиентов не получится
    но "полной перезаливки" можно избежать

    - ставим отдельно ZK или clickhouse-keeper - на отдельный сервер, или хотя бы чтобы на отдельный SSD диск снапшоты сливало

    - ставим второй clickhouse

    - создаем на обоих серверах пустые ReplicatedMergeTree таблицы + Distributed таблицы которые смотрят в эти новые таблицы , прописываем на обоих серверах <remote_servers>, Replicated нужно когда будете "реплики для отказоустойчивости подключать"

    - правильно выбираем ключ шардирования для distributed чтобы грамотно наливать новые данные более менее равномерно и чтобы при этом данные были локальные относительно друг друга. то есть данные одного UserID например были на одном сервере например

    - переключаем вставку на disttributed или сразу лучше в ReplicatedMergeTree с выбором сервера на клиенте лейте (будет быстрее)

    - для старых данных, берем system.partitions WHERE table='old_table'
    и делаем для каждого второго partition ALTER TABLE db.old_table MOVE PARTITION TO TABLE db.new_replicated_table

    получаем на одном сервере данные разбитые на две таблицы

    - теперь надо оставшиеся данные из MergeTree
    перелить на новый сервер уже в ReplicatedMergeTree
    это делаем паралельно запуская несколько запросов вида
    INSERT INTO db.new_replicated_table SELECT * FROM remote() WHERE условие по дате

    как то так

    данные немного неравномерно будут

    надеюсь у вас сеть между серверами хотя бы 10 гигабит?
  • Спасибо. Выглядет как план, но если я понял вас правильно, то половину данных все равно прийдется перелить.
    Как сделать "перебалансировку" шардов, когда появиться необходимость подключить третий шард в кластер?
  • @vladget #235881 06:49 AM, 24 Sep 2021
    Клиенты в основном внутренние сервисы, а данные может аккумулировать в rabbit во время простоя.
    Это не так критично.
  • @Dr5ty #235884 08:01 AM, 24 Sep 2021
    ДОбрый день. Подскажите как установить/куда подложить ODBC Driver Clickhouse на Дебиан для корректной работы. В доке не нашел этого
  • https://t.me/clickhouse_ru
    Первые строки комментариев в этих файлах:
    https://github.com/ClickHouse/clickhouse-odbc/blob/master/packaging/odbc.ini.sample
    https://github.com/ClickHouse/clickhouse-odbc/blob/master/packaging/odbcinst.ini.sample
    clickhouse-odbc/odbc.ini.sample at master · ClickHouse/clickhouse-odbc

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

  • @Dr5ty ↶ Reply to #235887 #235888 08:09 AM, 24 Sep 2021
    Понял, спасибо
  • @Crawles #235889 08:52 AM, 24 Sep 2021
    Ребят, а подскажете, может кто помнит. Когда-то давно видел видел видео от Алексея по поводу того, как хранить статистику вроде бы по айпишникам в памяти, а то я найти не могу.
  • @Crawles #235890 08:54 AM, 24 Sep 2021
    Это было просто про структуры данных, безотносительно кликхауса. И да, извиняюсь за оффтоп.
  • https://t.me/clickhouse_ru
    да, 50% данных придется слить на второй сервер
    и размытие будет скорее всего не очень равномерным
    старые данные не забудьте удалить после INSERT ... SELECT .. FROM remote()

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

    я лично вообще предпочитаю на s3 файлы положить =)

    насчет ре-шардинга, планы есть, сроков нет и рук
    подписываемся наблюдаем
    https://github.com/ClickHouse/ClickHouse/issues/13574
    Self-balancing architecture: Moving parts between shards · Issue #13574 · ClickHouse/ClickHouse

    Issue: So far ClickHouse as a data store shifts the responsibility of the balancing to an operator to provide inbound data flow in a balanced manner - that is to say, once data is written to any of...

  • https://t.me/clickhouse_ru
    а зачем вам из Debian ходить в clickhouse по ODBC?
    у вас Tableau Server? или еще какая то тула которая под Linux и ей надо ODBC источник?
  • https://t.me/clickhouse_ru
    @S_Dimitry #235894 09:07 AM, 24 Sep 2021
    Коллеги, а есть готовые кейсы по бэкапированию БД по партициям в кубере?
  • https://t.me/clickhouse_ru
    нет
    такого нет
  • https://t.me/clickhouse_ru
    спасибо, тогда будем думать\пилить что-то сами
  • https://t.me/clickhouse_ru
    clickhouse-backup такое не умеет

    может быть через http://k8up.io как нибудь можно извратиться делать инкрементальный бекап, но нет гарантий восстановления
  • https://t.me/clickhouse_ru
    получится что нибудь годное, дайте знать
  • https://t.me/clickhouse_ru
    https://velero.io/ - почти тоже самое, судя по about
  • https://t.me/clickhouse_ru
    @mrpavelk #235900 09:16 AM, 24 Sep 2021
    всем привет, подскажите почему такой запрос

    select toDecimal32(100.0 * t1.fieldA / nullIf(t1.fieldB, 0), 2)

    выдает ошибку

    SQL Error [407]: ClickHouse exception, code: 407, host: 127.0.0.1, port: 36011; Code: 407, e.displayText() = DB::Exception: Decimal convert overflow. Cannot convert infinity or NaN to decimal: while executing 'FUNCTION toDecimal32(divide(multiply(100., fieldA), nullIf(fieldB, 0)) :: 29, 2 :: 41) -> toDecimal32(divide(multiply(100., fieldA), nullIf(fieldB, 0)), 2) Nullable(Decimal(9, 2)) : 39' (version 21.8.4.51 (official build))

    если не выбирать по этому полю, то fieldA и fieldB исключительно нули в выборке

    это какой-то глюк КХ?
  • https://t.me/clickhouse_ru
    это деление на ноль и infinity в качестве результата

    nullIf 0 возвращает для null
    в t1.fieldB
  • nullif != ifnull
    https://clickhouse.com/docs/ru/sql-reference/functions/functions-for-nulls/#nullif
    Функции для работы с Nullable-аргументами | Документация ClickHouse

    Функции для работы с Nullable-аргументами isNull Проверяет является ли аргумент NULL. isNull(x) Синоним: ISNULL. Аргумен

  • https://t.me/clickhouse_ru
    @frolovigoru #235906 09:38 AM, 24 Sep 2021
    Коллеги, добрый день
    Пытался найти в чате, нашел много похожего, но мне это не помогло. Если что сорри за дублирование

    Пишу файл в Distributed таблицу, под которой лежат ReplicatedMergeTree

    getStatement()
    .write()
    .sql(
    "insert into table select '123' as id, * from input('value String')"
    )
    .format(ClickHouseFormat.CSV)
    .data(inputStream)

    в логах клика вижу ошибку Too many partitions for single INSERT block (more than 100)

    как работает в данном случае data? и есть ли какой-то способ тут задать размер батча? или нужно самому делать инсерт через preparedStatement и addbatch?
  • https://t.me/clickhouse_ru
    Неа, nullif null же возвращает в случае 0
  • тут data не причём, вы пытаетесь вставить данные в которых уникальных значений вашего ключа партиционирования больше чем 100, так делать крайне не рекомендуется. Старайтесть вставлять данные так, чтобы они ложились в 1 партицию
  • https://t.me/clickhouse_ru
    но у меня таблица как раз по id партицирована. и для этого файла одна партиция получается
  • получается что так, а покажите какой SQL генерится на выходе?
  • @Dr5ty ↶ Reply to #235893 #235911 10:20 AM, 24 Sep 2021
    Да, у нас Tableau Server на дебиане
  • @dj_mixer #235912 10:23 AM, 24 Sep 2021
    @den_crane yest idei?
    https://t.me/clickhouse_ru/231988
    【D】【J】 in ClickHouse не тормозит

    добрый день. можно ли как нибудь КХ заставить части UNION-ALL обрабатывать последовательно (непараллельно)? по одному подзапросы нормально влезают в память, но когда происходит UNION ALL там начинается спиллы из-за max_bytes_before_external_group_by в самих подзапросах. структура запроса (если поможет) https://controlc.com/ccc0b543

  • https://t.me/clickhouse_ru
    in query: INSERT INTO db.table_local (id, value) VALUES)
  • https://t.me/clickhouse_ru
    @386851661 #235914 10:48 AM, 24 Sep 2021
    Всем добрый день! Может не много не по теме, т к. это не кликхаус...но может кто нибудь может объяснить почему не работает запрос?
  • https://t.me/clickhouse_ru
  • это похоже как distributed отправляет на шард внутри самого КХ, но вы отправляете в distributed, вот этот запрос интересен
  • https://t.me/clickhouse_ru
    ну вот то что я выше кидал, он один в один
    только названия отвязанные от сути

    getStatement()
    .write()
    .sql(
    "insert into tableName select '123' as id, * from input('value String')"
    )
    .format(ClickHouseFormat.CSV)
    .data(inputStream)
  • вы уверены, что там можно два значение в IN подставлять?
  • https://t.me/clickhouse_ru
    @386851661 #235921 11:07 AM, 24 Sep 2021
    Теоретически можно
  • значит если у вас в table_local стоит PARTITION BY id, такой ошибки не должно быть
  • ну проверьте на тестовом наборе без подзапроса, подставьте туда реальные значения.
  • https://t.me/clickhouse_ru
    PARTITION BY segment_id ORDER BY segment_id

    а он точно должен весь этот stream отправлять одним батчем?
  • сделайте все одной строкой и перепроверьте, скорее всего интерфейс глючит
  • Попробуйте оба поля преобразовать в строку и сконкатенировать и IN делать по одному полю, это менее эффективно, но должно работать
  • запрос правильный, не надо так...
  • был бы правильный, небыло бы ошибки ))
  • даже если 1000 батчей, ошибка если и будет, то не такая

    для ясности segment_id == id из примера?)
  • https://t.me/clickhouse_ru
    да)

    раньше думал что эта ошибка из-за большого количества вставок
  • Если слишком часто вставлять может быть что-то типа
    DB::Exception: Too many parts (600). Merges are processing significantly slower than inserts
  • https://t.me/clickhouse_ru
    а где, кстати, проходит эта граница "слишком часто"? при потоке 5-10к записей в минуту вставлять каждые 10 секунд ок?
  • https://t.me/clickhouse_ru
    ну таблица точно партицирована по этому полю.

    запрос вида
    select partition from system.parts выдает значения этих полей
  • https://t.me/clickhouse_ru
    @ikkalinkin #235934 11:42 AM, 24 Sep 2021
    Привет! Подскажите, а если на кликхаус сервере есть две database с таблицами, можно ли джоинить между собой таблицы из разных database?
  • можно
  • https://t.me/clickhouse_ru
    круто, а для этого просто джоин без каких-либо ухищрений писать?
  • @ViacheslavNefedov #235937 11:43 AM, 24 Sep 2021
    да, только имя базы добавлять перед именем таблицы
  • https://t.me/clickhouse_ru
    @ikkalinkin #235938 11:43 AM, 24 Sep 2021
    спасибо большое!
  • https://t.me/clickhouse_ru
    странно, но если вставлять вот так

    .table("db.tableName")
    .format(ClickHouseFormat.CSV)
    .data(file.getInputStream())

    то ошибок нет, и данные вставляются полностью
  • @githubreleases_bot #235940 b o t 11:57 AM, 24 Sep 2021
    ClickHouse/ClickHouse description changed: v21.9.4.35-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.9.4.35-stable
    Release notes:
    ClickHouse stable release v21.9.4.35-stable
    Release v21.9.4.35-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.9.4.35-stable

  • а что у вас в файле? только 1 колонка value?
  • https://t.me/clickhouse_ru
    Ну вообще да

    А сейчас я для теста добавил колонку с id и загрузил таким способом
  • а в старом варианте пробовали вставлять 10-20 записей в файле? нормально всё пишется?
  • https://t.me/clickhouse_ru
    Если мало записей то все ок, на каком объеме начинается эта хрень пока не понял
  • https://t.me/clickhouse_ru
    Но тестирую на файле 20мб, около 1млн строк
  • @BBRSOFF #235946 12:19 PM, 24 Sep 2021
    Ребят, а есть какой нибудь туториал, как правильно построить вставку через kafka с нуля с настройкой самой kafka? Как мы сможем убедиться, что данные, запрошенные из кафки нигде не потерялись? Как правильно выбрать количество разделов в теме Кафки? Сориентируйте пожалуйста
  • https://t.me/clickhouse_ru
    @lockkie #235947 12:24 PM, 24 Sep 2021
    Привет. Есть небольшой кластер. Кончается место, хочу добавить шард. Каким путем дальше идти для выравнивания данных между шардами?
  • https://t.me/clickhouse_ru
    а, извините , не выспался
    это не получает в итоге NaN на который тоже ругается? =(
  • https://t.me/clickhouse_ru
    путем боли и страдания
    решардинга в clickhouse нет

    https://github.com/ClickHouse/ClickHouse/issues/13574
    Self-balancing architecture: Moving parts between shards · Issue #13574 · ClickHouse/ClickHouse

    Issue: So far ClickHouse as a data store shifts the responsibility of the balancing to an operator to provide inbound data flow in a balanced manner - that is to say, once data is written to any of...

  • @Ueasley #235952 12:41 PM, 24 Sep 2021
    Добрый день.

    Как поведет себя OPTIMIZE TABLE table DEDUPLICATE BY field, если в field — пусто? Схлопнет все такие записи до одной?
  • @Ueasley #235953 12:42 PM, 24 Sep 2021
    Под пусто я имею в виду пустую строку, и ожидаю, в общем-то, что он по ней и продедуплицирует.
  • https://t.me/clickhouse_ru
    ну у вас дедупликация означает что из двух и более с трок с одинаковым значение DEDUPLICATE BY колонки
    будет выбрана одна
    если у вас Null
    то из всех строк в которых колонка Null будет выбрана какая нибудь первая строка в data part
  • https://t.me/clickhouse_ru
    @maxim_zmushko #235955 12:45 PM, 24 Sep 2021
    Добрый день, в запросе есть фильтрация по nested полю - hasAny(nested.fieldName, ('fieldName1', 'fieldName2', ...)). Поле LowCardinality(String).
    Наименований фильтров может быть десятки. Есть ли способы заменить эту конструкцию с целью повысить быстродействие? Пробовал ARRAY JOIN - стало хуже.
  • https://t.me/clickhouse_ru
    @498912844 #235956 12:46 PM, 24 Sep 2021
    из за чего могут данные не реплироваться
  • https://t.me/clickhouse_ru
    @498912844 #235957 12:47 PM, 24 Sep 2021
    хотя все таблицы создались на обоих репликах
  • https://t.me/clickhouse_ru
    А можно хотя бы направить в правильную сторону, как все делают? Переставать лить данные на старые шарды? Руками выравнивать данные?
  • https://t.me/clickhouse_ru
    да
    либо новые данные только на новый шард
    но сильно зависит от локальности данных

    либо новые данные равномерно на шарды
    и потихоньку растакивать через DETACH PART
    копировать руками на новый хост
    и там делать ATTACH PART в пустую таблицу и делать INSERT INTO основная таблица SELECT * FROM временная
    и дропать временную таблицу
  • https://t.me/clickhouse_ru
    Понял, спасибо
  • https://t.me/clickhouse_ru
    nested реализована как отдельная колонка
    можно попробовать применить data skip indexes типа bloom применить
    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#available-types-of-indices

    и вместо hasAny применить IN

    но тут сильно зависит от того насколько данные размазаны, если равномерно во всех партах искомые значения встречаются, то не поможет
    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
    system.macros
    разные на обоих хостах?

    в логах что при вставке появляется?
  • https://t.me/clickhouse_ru
    на обоих
  • https://t.me/clickhouse_ru
    @498912844 #235964 01:09 PM, 24 Sep 2021
    а как логи посмотреть
  • https://t.me/clickhouse_ru
    tail -f /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    Спасибо, попробуем
  • https://t.me/clickhouse_ru
    2021.09.24 13:13:30.063477 [ 12849 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Found part 20210809_0_4_1 on 64.225.98.180 t
    hat covers the missing part 20210809_4_4_0
    2021.09.24 13:13:30.063512 [ 12836 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking part 20210809_3_3_0
    2021.09.24 13:13:30.063956 [ 12836 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking if anyone has a part 20210809_3_3_0
    or covering part.
    2021.09.24 13:13:30.064742 [ 12836 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Found part 20210809_0_4_1 on 64.225.98.180 t
    hat covers the missing part 20210809_3_3_0
    2021.09.24 13:13:30.064777 [ 12858 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking part 20210809_2_2_0
    2021.09.24 13:13:30.065199 [ 12858 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking if anyone has a part 20210809_2_2_0
    or covering part.
    2021.09.24 13:13:30.065986 [ 12858 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Found part 20210809_0_4_1 on 64.225.98.180 t
    hat covers the missing part 20210809_2_2_0
    2021.09.24 13:13:30.066033 [ 12806 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking part 20210809_1_1_0
    2021.09.24 13:13:30.066486 [ 12806 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking if anyone has a part 20210809_1_1_0
    or covering part.
    2021.09.24 13:13:30.067204 [ 12806 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Found part 20210809_0_4_1 on 64.225.98.180 t
    hat covers the missing part 20210809_1_1_0
    2021.09.24 13:13:30.067242 [ 12749 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking part 20210809_0_0_0
    2021.09.24 13:13:30.067735 [ 12749 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Checking if anyone has a part 20210809_0_0_0
    or covering part.
    2021.09.24 13:13:30.068671 [ 12749 ] {} <Warning> default.ch_replicated_local (R
    eplicatedMergeTreePartCheckThread): Found part 20210809_0_4_1 on 64.225.98.180 t
    hat covers the missing part 20210809_0_0_0
  • https://t.me/clickhouse_ru
    @498912844 #235968 01:14 PM, 24 Sep 2021
    чет такое
  • https://t.me/clickhouse_ru
    там логи ссыпались пипец... пришлось последние 30
  • https://t.me/clickhouse_ru
    _1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >
    const&, std::__1::optional<DB::CurrentlySubmergingEmergingTagger>*, bool, std::_
    _1::shared_ptr<DB::IDisk>) @ 0x113e7ff3 in /usr/bin/clickhouse
    12. ? @ 0x11289fe5 in /usr/bin/clickhouse
    13. DB::StorageReplicatedMergeTree::fetchPart(std::__1::basic_string<char, std::
    __1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr
    <DB::StorageInMemoryMetadata const> const&, std::__1::basic_string<char, std::__
    1::char_traits<char>, std::__1::allocator<char> > const&, bool, unsigned long, s
    td::__1::shared_ptr<zkutil::ZooKeeper>) @ 0x111ebe71 in /usr/bin/clickhouse
    14. DB::StorageReplicatedMergeTree::executeFetch(DB::ReplicatedMergeTreeLogEntry
    &) @ 0x111e3f03 in /usr/bin/clickhouse
    15. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEn
    try&) @ 0x111c1f0f in /usr/bin/clickhouse
    16. ? @ 0x1128709f in /usr/bin/clickhouse
    17. DB::ReplicatedMergeTreeQueue::processEntry(std::__1::function<std::__1::shar
    ed_ptr<zkutil::ZooKeeper> ()>, std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEn
    try>&, std::__1::function<bool (std::__1::shared_ptr<DB::ReplicatedMergeTreeLogE
    ntry>&)>) @ 0x11639ecc in /usr/bin/clickhouse
    18. DB::StorageReplicatedMergeTree::processQueueEntry(std::__1::shared_ptr<DB::R
    eplicatedMergeTreeQueue::SelectedEntry>) @ 0x1120eebd in /usr/bin/clickhouse
    19. ? @ 0x113dea37 in /usr/bin/clickhouse
    20. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<Threa
    dFromGlobalPool, void*>) @ 0x93aae78 in /usr/bin/clickhouse
    21. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlo
    balPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optiona
    l<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool
    >::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsig
    ned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x93aca1f in /usr/bin/
    clickhouse
    22. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1:
    :thread, void*>) @ 0x93a815f in /usr/bin/clickhouse
    23. ? @ 0x93aba43 in /usr/bin/clickhouse
    24. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    25. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.9.3.30 (official build))
  • https://t.me/clickhouse_ru
    @498912844 #235971 01:16 PM, 24 Sep 2021
    вот еще какая то тема
  • https://t.me/clickhouse_ru
    какими пачками вставляете?
    выглядит так что вставляете слишком часто
    оно успевает смержиться на реплике
    потом вторая реплика запрашивает парты с соседней
    и ей говорят а вот тут уже результат мержа есть, тащи новое

    данные реплицируются

    еще есть какие то ошибки?
  • https://t.me/clickhouse_ru
    @498912844 #235973 01:22 PM, 24 Sep 2021
    по одной строке сразу друг за другом
  • https://t.me/clickhouse_ru
    давайте =) учитесь копипастить не только stack tace c 12 строчки
    но и то что там выше с причиной ошибки
  • https://t.me/clickhouse_ru
    извините, вам не нужен clickhouse ;)
    не надо так делать
    https://clickhouse.com/docs/ru/sql-reference/statements/insert-into/#zamechaniia-o-proizvoditelnosti
    INSERT INTO | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    вставляйте пачками
  • https://t.me/clickhouse_ru
    да я в курсе) там просто тестовое задание... в
  • https://t.me/clickhouse_ru
    @498912844 #235978 01:25 PM, 24 Sep 2021
    в ломы файл csv создавать😂
  • https://t.me/clickhouse_ru
    @498912844 #235979 01:25 PM, 24 Sep 2021
    я руками крч просто в клиенте вставлял
  • https://t.me/clickhouse_ru
    @498912844 #235980 01:25 PM, 24 Sep 2021
    хотя один раз прокановало
  • https://t.me/clickhouse_ru
    @BloodJazMan #235981 01:30 PM, 24 Sep 2021
    в общем смотрите в логи, читайте внимательно там все написано
  • @lmgoncharov #235982 01:35 PM, 24 Sep 2021
    Можно ли при создании словаря из монги "размножить" столбец на два (с дублирующимися данными)?
  • https://t.me/clickhouse_ru
    @solser2 #235984 01:39 PM, 24 Sep 2021
    Добрый день
    подскажите, пожалуйста, в чем ошибка в запросе, ругается на BY

    Syntax error: failed at position 51:

    OPTIMIZE TABLE general_stat_dev FINAL DEDUPLICATE BY event_date, event_type, source_transaction_uid;
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235984 #235985 01:58 PM, 24 Sep 2021
    скобки? там же by expression
  • https://t.me/clickhouse_ru
    сделал как в примере
    https://clickhouse.com/docs/ru/sql-reference/statements/optimize/
    OPTIMIZE TABLE table DEDUPLICATE BY colX,colY,colZ;
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #235986 #235987 02:05 PM, 24 Sep 2021
    engine = MergeThree ?
  • https://t.me/clickhouse_ru
    @solser2 #235988 02:05 PM, 24 Sep 2021
    да
  • https://t.me/clickhouse_ru
    @moskvinandrey #235990 02:29 PM, 24 Sep 2021
    Подскажите аналитику, как подключиться к clickhouse из AirFlow?
    Вроде как вот ссылка: https://github.com/whisklabs/airflow-clickhouse-plugin. Но после проделывания этого упражения в Conn Type во вкладке connections не появляется заветное слово clickhouse
    GitHub - whisklabs/airflow-clickhouse-plugin: Airflow ClickHouse Plugin based on clickhouse-driver

    Airflow ClickHouse Plugin based on clickhouse-driver - GitHub - whisklabs/airflow-clickhouse-plugin: Airflow ClickHouse Plugin based on clickhouse-driver

  • новый conn type и не появится, можете указать любой, например - http
  • https://t.me/clickhouse_ru
    у вас и в запросе BY разнесён на две строки?
  • @1059970001 #235996 03:02 PM, 24 Sep 2021
    Подскажите, плиз общие чаты по KeyValue базам данных если есть?
  • https://t.me/clickhouse_ru
    нет, в одну строку
  • https://t.me/clickhouse_ru
    ну тогда скиньте ошибку полностью
  • https://t.me/clickhouse_ru
    Syntax error: failed at position 51:

    OPTIMIZE TABLE general_stat_dev FINAL DEDUPLICATE BY event_date, event_type, source_transaction_uid;

    Expected one of: INTO OUTFILE, FORMAT
  • https://t.me/clickhouse_ru
    сильно старая версия кликхауса?
  • https://t.me/clickhouse_ru
    20.10.3 revision 54441
  • @2048555628 #236002 03:19 PM, 24 Sep 2021
    🇩 🇪 🇰 🇴 🇧 🇷 🇦 🇿 MARKET PLACE

    ПРИВЕТСТВУЮ ТЕБЯ МОЙ ДРУГ, ТЫ ПОПАЛ НА САМЫЙ БОЛЬШОЙ МАРКЕТ ПЛЕЙС В ТЕЛЕГРАМ. "DEKOBRAZ MP" ОБЪЕДИНЯЕТ БОЛЕЕ 10000 КАНАЛОВ ПО ПРОДАЖЕ, АРЕНДЕ, РАБОТЕ И ПРЕДОСТАВЛЕНИИ РАЗНОГО РОДА УСЛУГ. МОЖЕШЬ СТАТЬ КАК ПРОДАВЦОМ, ТАК И ПОКУПАТЕЛЕМ. Админ @volkowdmitriy

  • @2048555628 #236003 03:20 PM, 24 Sep 2021
    🇩 🇪 🇰 🇴 🇧 🇷 🇦 🇿 MARKET PLACE

    ПРИВЕТСТВУЮ ТЕБЯ МОЙ ДРУГ, ТЫ ПОПАЛ НА САМЫЙ БОЛЬШОЙ МАРКЕТ ПЛЕЙС В ТЕЛЕГРАМ. "DEKOBRAZ MP" ОБЪЕДИНЯЕТ БОЛЕЕ 10000 КАНАЛОВ ПО ПРОДАЖЕ, АРЕНДЕ, РАБОТЕ И ПРЕДОСТАВЛЕНИИ РАЗНОГО РОДА УСЛУГ. МОЖЕШЬ СТАТЬ КАК ПРОДАВЦОМ, ТАК И ПОКУПАТЕЛЕМ. Админ @volkowdmitriy

  • @vvvjhaq #236004 03:21 PM, 24 Sep 2021
    /report
  • https://t.me/clickhouse_ru
    сильно. на 20.4.5.36 точно не работает, а на последней - ок
  • @vvvjhaq #236006 03:23 PM, 24 Sep 2021
    Ткните в описание параметризированых view, либо тут примеры из чата. В пятницу вечером уже не вдупляю(
  • https://t.me/clickhouse_ru
    понял. спасибо
  • @softbot_xxl #236008 03:30 PM, 24 Sep 2021
    Есть ли какие-нибудь практические проблемы с высоким фактором репликации? Допустим 10. Данных мало, но нужно держать много запросов.
  • https://t.me/clickhouse_ru
  • премного благодарен)
  • https://t.me/clickhouse_ru
    @ivan_blohin #236012 04:38 PM, 24 Sep 2021
    Коллеги, всем добрый вечер. Мне нужно для каждой строки выполнить подзапрос, который вернет кол-во строк по определенным условиям. Запрос выполняется, но числа неверные и везде одинаковые.
    Что я делаю не так? Достаточно ли понятно я объяснил проблему?
    select *,
    (select count(*)
    from human_region_coverage sq
    where sq.pos_start >= pos_start
    and sq.pos_end <= pos_end
    and sq.dp = 0
    and workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f'
    ) sq
    from human_region_coverage
    where workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f';
  • https://t.me/clickhouse_ru
    попробуйте добавить алиас для второй таблицы и использовать этот алиас в подзапросе вместо просто имени колонки
  • https://t.me/clickhouse_ru
    Таблица здесь одна и та же. Попробовал добавить алиас для основного from. Ошибка: Outer query column
  • https://t.me/clickhouse_ru
    ну собственно вот вам и ответ,судя по всему ваше условие в подзапросе использует колонку из другой таблицы и соответсвенно условие всегда срабатывает одинаково. попробуйте ASOF JOIN
  • https://t.me/clickhouse_ru
    А чем это отличается от group by?
  • https://t.me/clickhouse_ru
    Не совсем понял, про что вы. Мне нужно для каждой строки выполнить подзапрос, у которого в условии фигурирует значение из самой строки.
    В SQL не силен, но надеюсь достаточно точно сформулировал то, что нужно
  • https://t.me/clickhouse_ru
    а не проще вывести в отдельный столбец ваш подзапрос и его применить его к строке ?
  • https://t.me/clickhouse_ru
    Почему ты не пропишешь select workflowid,count(*) from … where … group by workflow
  • https://t.me/clickhouse_ru
    мне нужна колонка, которая будет содержать кол-во строк из подзапроса. Причем тут group by я не очень понимаю
  • https://t.me/clickhouse_ru
    я вроде так и пытаюсь, нет?
  • https://t.me/clickhouse_ru
    @StadnikD #236023 04:53 PM, 24 Sep 2021
    select t1.*,sq.*
    from human_region_coverage t1
    JOIN (select count(*)
    from human_region_coverage sq
    where sq.pos_start >= pos_start
    and sq.pos_end <= pos_end
    and sq.dp = 0
    and workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f'
    ) sq on sq."""" = t1."""
    where workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f';
  • https://t.me/clickhouse_ru
    судя по всему вам лучше сделать 2 отдельных запроса и забить
  • https://t.me/clickhouse_ru
    4500 не буду переводить т.к это не мне надо
  • https://t.me/clickhouse_ru
    ну и правильно :) лучше сэкономить
  • https://t.me/clickhouse_ru
    Как ты необычно cros join сделал )
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236012 #236028 06:16 PM, 24 Sep 2021
    обычный подзапрос нельзя параметризировать переменными из текущей строки. Оно так не работает в классическом SQL. Тут нет "функций" как в процедурных языках, готовых залезть грязными руками куда угодно. При вычислении выражений select вам доступны значения только текущей строки. Это больше похоже на функциональные языки программирования.
    Чтобы в рамках формирования строки выдачи посмотреть на соседей (да хоть бы и на всех - от верха до низа) используется относительная новация в SQL - оконные функции. Там специальным синтаксисом можно сделать необходимые выборки-группировки, чтобы посчитать все что вам нужно, и использовать при вычислении значений в текущей строке.
  • https://t.me/clickhouse_ru
    Спасибо!
  • @a8t3r #236031 07:18 PM, 24 Sep 2021
    Ребят, можно ли для MaterializedPostgreSQL указать схему целевой базы, а не только public?
  • https://t.me/clickhouse_ru
    @daniel_byta #236033 10:22 PM, 24 Sep 2021
    Доброго времени суток всем пользователям кликхауса! Я счастлив, что нашел этот канал, потому что уже не знаю, что гуглить для решения своей задачи) Я не очень опытен с кх (пара-тройка месяцев), поэтому плохо ориентируюсь в доке, поэтому буду рад любым советам!

    Моя задача:
    Существует таблица (raw), в которой есть ежедневные данные товаров
    Необходимо создать таблицу, в которой будут аггрегированные данные то товарам за последние 30 дней materialized view
    Идея в том, чтобы при вставке строки в raw материализованное представление обновлялось в соответствии с новыми данными
    аггрегация состоит из anyLast, countIf, sum

    не получается это сделать, так как в интернете очень мало информации об этом и в документации для materialized view вообще нет юзкейсов

    как вообще организовать хранение аггрегированных данных по исходникам только за последний час/день/неделю/месяц/год итд?
  • https://t.me/clickhouse_ru
    anyLast не детерменированная функция, ИМХО лучше какой-нибудь argMax c timestamp
  • https://t.me/clickhouse_ru
    @nyoroon #236037 10:37 PM, 24 Sep 2021
    для очистки старых данных можно TTL использовать
  • https://t.me/clickhouse_ru
    рекомендую ещё ознакомиться с этим материалом
    https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    а в materialized view можно разве ttl использовать?
  • https://t.me/clickhouse_ru
    мат вью это просто триггер на инсерт, который запускает запрос на данных и инсертит в другую табличку
  • https://t.me/clickhouse_ru
    @daniel_byta #236041 10:43 PM, 24 Sep 2021
    мне нужно имеено сделать аггрегацию
    в исходной таблице 3b записей товаров по дням, а в аггрегированной табличке нужно сгруппитовать 8m товаров со статой за последний месяц
  • https://t.me/clickhouse_ru
    посмотри доклад
  • https://t.me/clickhouse_ru
    @daniel_byta #236043 10:43 PM, 24 Sep 2021
    хорошо, спасибо)
  • https://t.me/clickhouse_ru
    также можно почитать https://kb.altinity.com/
    там правда вроде нет инфы для твоего кейса, но куча примеров для других разных типовых кейсов
  • https://t.me/clickhouse_ru
    @daniel_byta #236045 11:38 PM, 24 Sep 2021
    окей
    mv - это триггер на insert для перегона данных из одной таблицы в другую в своем исходном состоянии или частично аггрегированные

    мне вообще не представляется возможным с помощью триггера на вставку с аггрегацией count() и sum() за период, так как count() увеличивает счетчик строк, а sum() увеличивает значение. Если ttl строки сработает и строка удалится, то count() не уменьшится на 1, а sum() не пересчитается, как я понимаю

    тогда уж проще по крону удалять mv, таблицу и создавать заново + заполнять через populate, но тут даже без документации понятно, что идея не очень хорошая 😐
  • 25 September 2021 (61 messages)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #236045 #236046 12:10 AM, 25 Sep 2021
    Можно сделать агрегацию по дням, навесить TTL на дни, а в запросе просто агрегировать нужное количество дней.
    Проблема будет только с uniq (если нужен) - тут, наверное, придётся массив уникальных значений хранить на каждый день.
  • https://t.me/clickhouse_ru
    @Leossb #236047 01:52 AM, 25 Sep 2021
    Можно сделать мат вью с состояниями по дням и на неё уже обычные вьюхи с нужной агрегацией по нужным периодам или live вью и обновлять каждый день
  • https://t.me/clickhouse_ru
    @Leossb #236048 01:55 AM, 25 Sep 2021
    Вместо countIf sumStateIf(1,a==b)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236033 #236049 06:02 AM, 25 Sep 2021
    Вы наверное делаете MV не просто так, а чтобы ускорить какой-то запрос? Сколько времени у вас идет запрос по raw data? С какими order by / partition by ? На каких дисках? Правильно ли работает prewhere ? Может можно обойтись и без сложностей с MV?
    Однако если у вас приходит миллиард записей за 30 дней, и нужно делать аггрегаты по 100 колонкам, то конечно без MV не обойтись. В этом случае в MV стоит положить аггрегированные записи по дням. Получится 30 строк. И вот по этим строкам вы и сделаете финальную аггрегацию в своем запросе - это будет быстро.
    Можно аггрегировать за 30 дней, можно за год по месяцам - как угодно. Никаких TTL тут не нужно. anyLast & sum & countIf проблем не создатут при таком подходе.
  • https://t.me/clickhouse_ru
    вставляю пачкой нифига.... также на первой реплике
  • https://t.me/clickhouse_ru
    @498912844 #236052 06:12 AM, 25 Sep 2021
    только
  • https://t.me/clickhouse_ru
    log со второй реплики
  • https://t.me/clickhouse_ru
    @498912844 #236054 06:59 AM, 25 Sep 2021
    2021.09.25 06:20:46.524772 [ 10058 ] {} <Error> DNSResolver: Cannot resolve host (ch1.8616a0fdc182dc727996fa1e99aed405), error 0: ch1.8616a0fdc182dc727996fa1e99aed405.
    2021.09.25 06:20:46.525103 [ 10058 ] {} <Error> default.ch_replicated_local (4a673db1-ec5e-4058-8a67-3db1ec5ed058): auto DB::StorageReplicatedMergeTree::processQueueEntry(ReplicatedMergeTreeQueue::SelectedEntryPtr)::(anonymous class)::operator()(DB::StorageReplicatedMergeTree::LogEntryPtr &) const: Code: 198. DB::Exception: Not found address of host: ch1.8616a0fdc182dc727996fa1e99aed405. (DNS_ERROR), Stack trace (when copying this message, always include the lines below):
    как это лечить
  • Похоже что реплика не может достучаться просто до другой
  • https://t.me/clickhouse_ru
    Добрый день, спасибо за содержательный ответ
    в raw таблице уже хранятся данные по дням (6-12млн уникальных товаров каждый день) -> 200-300 млн строк на запрос (~5-6c)
    например,
    артикул, категория, дата (yyyy-mm-dd), цена, продано, выручка, остаток
    PARTITION BY toMonday(date), ORDER BY (date, category, article)

    задача состоит в том, чтобы получить список артикулов по фильтрам от до:
    цена,
    объем продаж за месяц (сегодня - 30 дней),
    объем выручки за месяц (сегодня - 30 дней),
    количество дней, когда товар был в продаже за месяц (сегодня - 30 дней),
    упущенная выручка за месяц (сегодня - 30 дней)

    то есть выходит что:
    исходные данные находятся в предаггрегатном состоянии
    период анализа плавающий (смещение на день)

    в идеальном случае необходимо довести 200-300млн строк за 30 дней к 8-12 млн строкам, где артикул и статистика за последние 30 дней, чтобы по ним сделать быструю выборку

    — next step is filtering result by range conditions
    WITH
    date_sub(DAY, 30, today()) AS dateMonthAgo,
    date_diff(MONTH, dateMonthAgo, today()) AS period,
    count(remain > 0) AS daysInStock,
    sum(sold * salePromoPrice) AS periodRevenue
    SELECT
    -- get aggregated filter values
    article,
    sum(sold) AS periodSold,
    periodRevenue,
    argMax(feedbackCount, date) AS reviewsCount,
    argMax(salePromoPrice, date) AS finalPrice,
    daysInStock,
    periodRevenue / daysInStock * period AS periodLostProfit
    FROM prod.big_article_stats
    WHERE date >= dateMonthAgo
    GROUP BY article
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236056 #236058 09:20 AM, 25 Sep 2021
    сходу меняем :
    - PARTITION BY toMonday(date), ORDER BY (date, category, article) на
    - PARTITION BY toYYYYMM(date), ORDER BY (category, article, date) или ORDER BY (article, category, date)
    почему так - устали объяснять, ищите в истории канала.
    после этого смотрим на скорость - должно полегчать на секунду-другую. Пробуем optimize_aggregation_in_order - может будет лучше, а может и нет.
    Если мало, то делаем в MV аггрегаты за 1 день (group by day, article) , и уже по ним гоняем финальный group by article
  • https://t.me/clickhouse_ru
    хорошо, а движок mv какой использовать?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236059 #236060 09:37 AM, 25 Sep 2021
    aggregating - вы же хотите, чтобы все последовательные вставки собрались в дневные аггрегаты
  • https://t.me/clickhouse_ru
    @daniel_byta #236061 09:38 AM, 25 Sep 2021
    Понял.
    Спасибо большое!
  • https://t.me/clickhouse_ru
    @i_merzlyakov #236062 10:16 AM, 25 Sep 2021
    Всем привет! Подскажите, пожалуйста, как решить такую проблему:

    КХ падал, судя по всему во время мерджа, по нехватке памяти. Ограничили max_server_memory_usage. После этого реплика поднялась, но стали сыпаться подобные ошибки по поводу множества партов:

    Code: 84. DB::Exception: Directory /var/lib/clickhouse/disks/s3_cold_volume/store/505/505524e0-3157-441b-9055-24e03157041b/tmp_merge_202109_56469_57597_16/ already exists. (DIRECTORY_ALREADY_EXISTS)

    Не придумал ничего лучше, чем попробовать вручную удалить директроию. После этого в логах видно, что КХ создал директорию заново и начал туда писать. Через какое-то время всё заканчивается такими логами и возвращается к ошибке DIRECTORY_ALREADY_EXISTS:

    2021.09.25 09:52:19.992802 [ 249 ] {} <Debug> DiskS3: Write to file by path: /var/lib/clickhouse/disks/s3_cold_volume/store/505/505524e0-3157-441b-9055-24e03157041b/tmp_merge_202109_56469_57597_16/primary.idx. S3 path: clickhouse-production/erkzvppcvzswilizzifmvkwrhhdpmebz
    2021.09.25 09:52:19.992852 [ 249 ] {} <Debug> WriteBufferFromS3: Making single part upload. Bucket: chstorage-ch-prod-n1, Key: clickhouse-production/erkzvppcvzswilizzifmvkwrhhdpmebz, Size: 0
    2021.09.25 09:52:19.992865 [ 249 ] {} <Debug> WriteBufferFromS3: Skipping single part upload. Buffer is empty.
    2021.09.25 09:52:20.012740 [ 249 ] {} <Error> std::optional<bool> DB::IMergeTreeDataPart::keepSharedDataInDecoupledStorage() const: There is a problem with deleting part 202109_56469_57597_16 from filesystem: Code: 73. DB::Exception: Failed to read metadata file. (UNKNOWN_FORMAT), Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Exception const&, int) @ 0x9367035 in /usr/bin/clickhouse
    1. DB::IDiskRemote::Metadata::Metadata(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) @ 0x1065fbb3 in /usr/bin/clickhouse
    2. DB::IDiskRemote::getUniqueId(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const @ 0x10666407 in /usr/bin/clickhouse
    3. DB::DiskDecorator::getUniqueId(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const @ 0x10679211 in /usr/bin/clickhouse
    4. DB::DiskRestartProxy::getUniqueId(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const @ 0x1067cd97 in /usr/bin/clickhouse
    5. DB::IMergeTreeDataPart::getUniqueId() const @ 0x1142c69b in /usr/bin/clickhouse
    6. DB::StorageReplicatedMergeTree::unlockSharedData(DB::IMergeTreeDataPart const&) const @ 0x1126fd02 in /usr/bin/clickhouse
    7. DB::IMergeTreeDataPart::keepSharedDataInDecoupledStorage() const @ 0x114106ad in /usr/bin/clickhouse
    8. DB::IMergeTreeDataPart::remove() const @ 0x11411cd9 in /usr/bin/clickhouse
    9. DB::IMergeTreeDataPart::removeIfNeeded() @ 0x1140f6e0 in /usr/bin/clickhouse
    10. DB::MergeTreeDataPartWide::~MergeTreeDataPartWide() @ 0x11518b93 in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    @i_merzlyakov #236063 10:16 AM, 25 Sep 2021
    11. DB::MergeTreeDataMergerMutator::mergePartsToTemporaryPart(DB::FutureMergedMutatedPart const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::BackgroundProcessListEntry<DB::MergeListElement, DB::MergeInfo>&, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, long, std::__1::shared_ptr<DB::Context const>, std::__1::unique_ptr<DB::IReservation, std::__1::default_delete<DB::IReservation> > const&, bool, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, DB::MergeTreeData::MergingParams const&, DB::IMergeTreeDataPart const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x114d6490 in /usr/bin/clickhouse
    12. DB::StorageReplicatedMergeTree::tryExecuteMerge(DB::ReplicatedMergeTreeLogEntry const&) @ 0x111d14b9 in /usr/bin/clickhouse
    13. DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&) @ 0x111c0c2d in /usr/bin/clickhouse
    14. ? @ 0x112857ff in /usr/bin/clickhouse
    15. DB::ReplicatedMergeTreeQueue::processEntry(std::__1::function<std::__1::shared_ptr<zkutil::ZooKeeper> ()>, std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::__1::function<bool (std::__1::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>) @ 0x1163766c in /usr/bin/clickhouse
    16. DB::StorageReplicatedMergeTree::processQueueEntry(std::__1::shared_ptr<DB::ReplicatedMergeTreeQueue::SelectedEntry>) @ 0x1120d61d in /usr/bin/clickhouse
    17. ? @ 0x113dd177 in /usr/bin/clickhouse
    18. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x93aabb8 in /usr/bin/clickhouse
    19. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x93ac75f in /usr/bin/clickhouse
    20. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x93a7e9f in /usr/bin/clickhouse
    21. ? @ 0x93ab783 in /usr/bin/clickhouse
    22. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    23. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.9.2.17 (official build))
  • https://t.me/clickhouse_ru
    @i_merzlyakov #236064 10:24 AM, 25 Sep 2021
    > КХ падал, судя по всему во время мерджа, по нехватке памяти.

    Перефразирую. Контейнер с КХ убивался по превышению лимита по памяти
  • https://t.me/clickhouse_ru
    @gigimon4ik #236067 12:01 PM, 25 Sep 2021
    Здравствуйте, подскажите пожалуйста. Пишу в clickhouse из clickhouse-go небольшое количество данных (раз в минуту, примерно 200-300 записей). Но когда начинается запись, он потребляет 100% cpu. В документации не нашел информации о том, как узнать чем он нагружен. Куда можно покопать?
  • https://t.me/clickhouse_ru
    @gigimon4ik #236068 12:10 PM, 25 Sep 2021
    в логах вот такое:
    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8f9a2ba in /usr/bin/clickhouse
    1. DB::TCPHandler::receiveHello() @ 0x10fe01ff in /usr/bin/clickhouse
    2. DB::TCPHandler::runImpl() @ 0x10fd9278 in /usr/bin/clickhouse
    3. DB::TCPHandler::run() @ 0x10fecb99 in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x13b63c6f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x13b656fa in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x13c98579 in /usr/bin/clickhouse
    7. Poco::ThreadImpl::runnableEntry(void*) @ 0x13c9480a in /usr/bin/clickhouse
    8. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    9. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.8.5.7 (official build))
    2021.09.25 09:37:14.338502 [ 211 ] {} <Error> ServerErrorHandler: Code: 101, e.displayText() = DB::NetException: Unexpected packet from client, Stack trace (when copying this message, always include the lines below):

    0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0x8f9a2ba in /usr/bin/clickhouse
    1. DB::TCPHandler::receiveHello() @ 0x10fe01ff in /usr/bin/clickhouse
    2. DB::TCPHandler::runImpl() @ 0x10fd9278 in /usr/bin/clickhouse
    3. DB::TCPHandler::run() @ 0x10fecb99 in /usr/bin/clickhouse
    4. Poco::Net::TCPServerConnection::start() @ 0x13b63c6f in /usr/bin/clickhouse
    5. Poco::Net::TCPServerDispatcher::run() @ 0x13b656fa in /usr/bin/clickhouse
    6. Poco::PooledThread::run() @ 0x13c98579 in /usr/bin/clickhouse
    7. Poco::ThreadImpl::runnableEntry(void*) @ 0x13c9480a in /usr/bin/clickhouse
    8. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    9. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.8.5.7 (official build))
  • @a8t3r #236069 12:33 PM, 25 Sep 2021
    https://github.com/ClickHouse/clickhouse-go/issues/322
    попробуй писать через буффер, не уверен правда что поможет
  • https://t.me/clickhouse_ru
    @gigimon4ik #236070 12:42 PM, 25 Sep 2021
    да я пишу в него килобайты
  • https://t.me/clickhouse_ru
    @gigimon4ik #236071 12:42 PM, 25 Sep 2021
    и редко, а он сразу грузит на 100%
  • https://t.me/clickhouse_ru
    @abdulgalimov #236072 12:45 PM, 25 Sep 2021
    Господа, подскажите сколько всего таблиц можно создать в КХ ?
  • https://t.me/clickhouse_ru
    Я подозреваю, что если и есть лимиты - очень много)
  • https://t.me/clickhouse_ru
    А почему у вас такой вопрос возник кстати?
  • https://t.me/clickhouse_ru
    Я знал что кто нибудь это спросит)) Но у меня такая ситуация, я делаю конструктор telegram ботов. Другие пользователи делают себе ботов на моем конструкторе. Хочу дать им возможность писать свою стату в таблицу КХ. Возникла мысль сделать сделать для каждого подключенного к конструктору бота, свою таблицу. Чтобы можно было быстро чистить(удалять) стату одного конкретного бота.
  • https://t.me/clickhouse_ru
    Как вариант - запустить в докере кх и в инфинит лупе создавать таблицы. Но я думаю, что, скорее всего, можно упереться в хардварную часть, чем в лимиты (если они есть) КХ
  • https://t.me/clickhouse_ru
    "инфинит луп" - это что?
  • https://t.me/clickhouse_ru
    бесконечный цикл наверн
  • Почему бы не писать всё в одну, и делать выборки по ботам?
  • https://t.me/clickhouse_ru
    Так он чистить хочет
  • https://t.me/clickhouse_ru
    чтобы когда удаляется один бот, можно было убрать его мусор
  • https://t.me/clickhouse_ru
    @gigimon4ik #236082 12:54 PM, 25 Sep 2021
    а у кликхауса есть мониторинг какой-то? как узнать почему он жрет цпу?
  • https://t.me/clickhouse_ru
    Вроде нет лимитов, но можете чекнуть конфиг на предмет такого...
  • https://t.me/clickhouse_ru
    Как вариант - глянуть system.queries. но там, вроде, только потребляемый рам есть
  • А зачем её удалять в принципе? Кажется в масштабах вообще всех данных, этот «мусор» - ерунда
  • @defaultdefault #236086 12:57 PM, 25 Sep 2021
    Стата же на то и стата, что она чаще всего не удалятся, а просто ротируется
  • https://t.me/clickhouse_ru
    я уже вижу как через месяц после релиза фичи бегут юзеры и кричат: "как мне почистить стату, я все делал не правильно, хочу все начать с начала... памагите, спасите..." ))
  • https://t.me/clickhouse_ru
    ну кстати можно просто новые данные записывать с новым id, и сделать таблицу связей для всех id
  • https://t.me/clickhouse_ru
    это надо будет просить юзера переделать свой механизм записи статы, чтобы они там какой нибудь action_id поменяли чтобы по новой все пошло. Но я думаю они будут не довольны этим, и будут просить дать возможность почистить.
  • https://t.me/clickhouse_ru
    причем тут они, вы сделайте кнопку и на своей стороне меняйте, сделайте id_user, и к нему цепляйте id_stat
  • https://t.me/clickhouse_ru
    @dmitriynvkv #236091 01:03 PM, 25 Sep 2021
    Может я кнчн не пониямаю логику приложения. Но кажется можно так поправить. Но вообще для таких задач с over много таблиц я бы не стал брать КХ. Может лучше посгрес.
  • @defaultdefault #236092 01:07 PM, 25 Sep 2021
    Схема с бесконтрольным созданием таблиц и в случае с постгресом выглядит сомнительно, стоит подумать в сторону хранения всего в одной
  • https://t.me/clickhouse_ru
    @abdulgalimov #236093 01:14 PM, 25 Sep 2021
    всем спасибо, сделаю хранение в одной таблице.
  • https://t.me/clickhouse_ru
    👍🏻👍🏻👍🏻👍🏻👍🏻
  • https://t.me/clickhouse_ru
    @leloush #236095 01:49 PM, 25 Sep 2021
    А какая проблема возникнет, если хранить во множестве таблиц?
  • https://t.me/clickhouse_ru
    @FiammaTheGreat #236098 06:02 PM, 25 Sep 2021
    Привет! Сюда с дебильными вопросами о функционале можно?

    Есть ли какой-то способ гонять поиск по всем полям в таблице не костыляя адок? Сейчас сделал суперкостыльно — мне не нравится — но не могу впилить, могу ли я что-то удобное использовать для этого всего
  • https://t.me/clickhouse_ru
    Если будет очень очень много таблиц кажется что будет очень очень много мержей запускаться и насиловать жесткие диски.
  • https://t.me/clickhouse_ru
    Ты про билдеры запросов?
    https://github.com/the-tinderbox/ClickhouseBuilder
    Вот такой можно заюзать
    GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen.

    Fluent queries builder for Clickhouse. Also has integration with Laravel / Lumen. - GitHub - the-tinderbox/ClickhouseBuilder: Fluent queries builder for Clickhouse. Also has integration with Larave...

  • https://t.me/clickhouse_ru
    @nyatmeat #236101 08:31 PM, 25 Sep 2021
    а, вопрос не про то
  • https://t.me/clickhouse_ru
    @FiammaTheGreat #236102 08:31 PM, 25 Sep 2021
    А я им пользуюсь, да. Я скорее про то, что я хочу по всем колонкам — SELECT * прогнать одну и ту же проверку через WHERE
  • https://t.me/clickhouse_ru
    @FiammaTheGreat #236103 08:31 PM, 25 Sep 2021
    Сейчас у меня адская костыль — список полей статикой в классе, который с логами работает — и собирается суперстремный запрос
  • https://t.me/clickhouse_ru
    У меня лично больше вопросов к тому, что Вы не экранируете эту строку :)
  • https://t.me/clickhouse_ru
    @FiammaTheGreat #236105 08:37 PM, 25 Sep 2021
    На локалочке для себя строю, в паблик не уходит
  • https://t.me/clickhouse_ru
    WITH [* APPLY x -> (x ILIKE '%a')] AS x
    SELECT *
    FROM
    (
    SELECT
    'aaa' AS a,
    'bbb' AS b,
    'ccc' AS c
    )
    WHERE arrayExists(x -> x=1, x)

    Query id: 797cba40-53c3-4343-8b6c-5e1df2d716e9

    ┌─a───┬─b───┬─c───┐
    │ aaa │ bbb │ ccc │
    └─────┴─────┴─────┘

    1 rows in set. Elapsed: 0.007 sec.

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

    Такое можно, но оно сомнительно
    Column transformes support lambda for APPLY(x->argMax(x,number)) · Issue #27877 · ClickHouse/ClickHouse

    Use case APPLY could be useful for making queries cleaner, but it doesn't support functions with multiple arguments. And this feature request should make it possible to do. Describe the sol...

  • https://t.me/clickhouse_ru
    @FiammaTheGreat #236107 08:45 PM, 25 Sep 2021
    Ну тяжеть не пугает — это на суперредкий случай, когда не знаю где и что ищу. За пример/идею спасибо, попробую
  • https://t.me/clickhouse_ru
    @unamedrus #236108 08:45 PM, 25 Sep 2021
    Вместо * может быть COLUMNS с перечислением колонок
  • https://t.me/clickhouse_ru
    @IlyaSkriblovsky #236109 08:57 PM, 25 Sep 2021
    А правда, что словари из MongoDB не поддерживают подключение к репликасету, только к standalone?
  • https://t.me/clickhouse_ru
    Да
    https://github.com/ClickHouse/ClickHouse/issues/4190
    Feature request: Add support for MongoDB clusters as external dictionaries · Issue #4190 · ClickHouse/ClickHouse

    Recently I stumbled upon a problem external dictionary (linked to MongoDB) was empty. There was nothing releted to the problem in clickhouse log, but in MongoDB log I found this: 2019-01-29T12:09:2...

  • https://t.me/clickhouse_ru
    печаль :(
    спасибо
  • https://t.me/clickhouse_ru
    @daniel_byta #236114 10:48 PM, 25 Sep 2021
    еще один дебильный вопрос
    как вывести вот эту информацию после запроса?
    1 rows in set. Elapsed: 0.007 sec. + rows/s + mb/s|gb/s
  • 26 September 2021 (41 messages)
  • https://t.me/clickhouse_ru
    А почему бы и не сделать в одной таблице? Просто жестко партиционируйте по пользователю и можно будет чистку делать удалением партиций
  • @Crawles #236117 06:44 AM, 26 Sep 2021
    а подскажите, должны ли работать MV, созданные как селекты из других MV? Пытаюсь доаггрегировать почасовые данные еще и по суткам, т.е. структура такая: table raw -> mv hourly -> mv daily, и в daily данные не попадают
  • https://t.me/clickhouse_ru
    Попробуйте навесить mv на .inner. таблице.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236115 #236119 06:48 AM, 26 Sep 2021
    нет, это плохая идея. парты (так-же как и таблицы) - это подкаталоги. 10 000 подкаталогов убивают любую файловую систему, плюс сложность работы с таким количеством партов в самом КХ. Вобщем-то и 1000 подкаталогов обычно работает так себе. Так что не нужно делать много таблиц и партиционировать по пользователю.
  • Спасибо, помогло.
  • https://t.me/clickhouse_ru
    Найдите презентацию denny crane по materialized view
  • https://t.me/clickhouse_ru
    @pirozhkov_v #236123 08:20 AM, 26 Sep 2021
    Привет, всем! В КХ новичок, не пинайте сильно. Из кафки есть два источника данных A и B. A соотносится с B по ключу, как один ко многим. Как слить эти два источника в одну денормализованную таблицу в КХ?
  • Нашел вот тут - https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf - но у меня таких таблиц '.inner.{mv-name}' нет. Есть только '.inner_id.{uuid}'. Видимо буду их отдельно создавать.
  • https://t.me/clickhouse_ru
    Не нужно,

    У вас atomic движок бд

    kb.altinity.com почитайте про движки баз данных
  • https://t.me/clickhouse_ru
    @unamedrus #236126 09:57 AM, 26 Sep 2021
    Вообще сразу говорим, что лучше создавать мв используя синтаксис TO
  • https://t.me/clickhouse_ru
    Вставьте в две разные таблицы
    Потом insert into … select … from … join

    Еще есть materilize.io
    Или benthos
    Которые на своей стороне джойнят
  • https://t.me/clickhouse_ru
    Это тоже самое но для database engine atomic
  • https://t.me/clickhouse_ru
    @498912844 #236130 11:42 AM, 26 Sep 2021
    Received exception from server (version 21.9.4):
    Code: 57. DB::Exception: Received from localhost:9000. DB::Exception: Mapping for table with UUID=8d88bf9d-977f-4708-8d88-bf9d977f4708 already exists. It happened due to UUID collision, most likely because some not random UUIDs were manually specified in CREATE queries.. (TABLE_ALREADY_EXISTS)
  • https://t.me/clickhouse_ru
    @498912844 #236131 11:42 AM, 26 Sep 2021
    никто не сталкивался при восстановлении
  • https://t.me/clickhouse_ru
    @498912844 #236132 11:45 AM, 26 Sep 2021
    эта база пустая
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236123 #236134 11:47 AM, 26 Sep 2021
    тут сразу просится какой-то внешний ETL, плюс очень хочется чтобы один из потоков гарантированно опережал другой. Однако задачка сама по себе интересная, можно попробовать сделать что-то средствами КХ.

    Отношение 1-ко-многим в КХ обычно решается через Nested/Arrays - мы вкладываем колонку в ячейку. Например так:

    create table wide (
    key UInt64,
    a String,
    b Array(String)
    ) engine =

    Теперь настраиваем пару MV, которые получают данные из своего канала кафки, но пишут в единую таблицу вида AggregatingMT, заполняя неизвестные пока поля значением NULL:
    при получении потока A добавляем строки с заполненными полями key & a
    при получении потока B добавляем строки с заполненными полями key & b (+делаем group by / groupArray)

    CREATE MATERIALIZED VIEW consumerB to wide
    as
    select key,NULL,groupArrayState(b)
    from streamB
    group by key

    В табличке хранятся не значения, а стейты и она будет выглядеть так:
    create table wide (
    key UInt64,
    a AggregateFunction(any,String),
    b AggregateFunction(groupArray,Array(String))
    ) engine = AggregatingMergeTree() order by key

    В процессе мерджей данные из разных пачек будут потихоньку сливаться в одну запись по единому ключу.
    Тем не менее, гарантировать что процесс мерджей приведет к 1 записи нельзя, поэтому финальная выборка потребует окончательной сборки данных через group by key с точно такими-же аггрегациями:
    select key, anyMerge(a), groupArrayMerge(b) from wide group by key

    (написано как идея, SQL не проверял, считаем псевдокодом)
  • https://t.me/clickhouse_ru
    @pirozhkov_v #236135 11:59 AM, 26 Sep 2021
    Спасибо огромное! Буду пробовать
  • Ага, спасибо, разобрался. Создал вьюшки через TO
  • https://t.me/clickhouse_ru
    @sibbarb #236139 04:29 PM, 26 Sep 2021
    Всем привет, вопрос по materialized view , шо это за зверь?
    Допустим у есть запрос, который работает около 2 минут
    Но мне нужно данные тянуть в BI системки, я же правильно понимаю, что мне проще создать MV
    и в BI сисетмы тянуть его? Но тогда вопрос, как задать ему время обновлений?
    Где то кроме доки можно об этом почитать?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @nbsbbs #236141 05:04 PM, 26 Sep 2021
    Приветствую!
    У меня есть примерно такая схема выдачи результатов:
    1. сначала мы вытаскиваем несколько айди сущностей из нашей базы (скажем, их 1000)
    2. потом при помощи запроса типа select id, ctr from table where id in (список из п.1) достаем их ctr и сортируем по нему
    Мне бы хотелось, чтобы сущности, ctr которых пока не рассчитывался, тоже попадали в результат селекта.
    Можно как-нибудь это сделать, не создавая временную таблицу?
  • самый простой вариант через left join к айдишникам приджойнить ctr, вопрос только в производительности, насколько много там у вас данных
  • @Azat_Sharip #236143 05:39 PM, 26 Sep 2021
    Коллеги, добрый вечер!
    Столкнулся со следующей проблемой, может кто знает и сможет помочь:
    Попытка обновить вьюху привела к тому, что кликхаус выдал ошибку таймаута JDBC-драйвера . После чего таймауты были увеличены, но теперь другую ошибку выдает:

    Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000001192 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 21.1.2.15 (official build))
  • https://t.me/clickhouse_ru
    ALTER TABLE .. ON CLUSTER ?
    или
    ALTER MATERIALIZED VIEW ... ON CLUSTER?

    конвертирование типов было? что именно во вьюшке пытались поменять?
  • Так:
    CREATE OR REPLACE VIEW view_name ON CLUSTER 'cluster_name' AS

    В целом запрос немного изменился: убрал некоторые поля и поменял источник в FROM
  • https://t.me/clickhouse_ru
    а, обычная VIEW не materialized?

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

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

    у вас из этой VIEW выборки идут постоянно?
  • Имеете в виду постоянно ли обращение идёт к ней? Не то чтобы, дашборд обращается в качестве витрины данных.

    Сама эта вьюха обращается к юниону из четырех матвьюх
  • https://t.me/clickhouse_ru
    @nbsbbs ↶ Reply to #236142 #236148 06:06 PM, 26 Sep 2021
    Самое большое - несколько тысяч айди, обычно меньше
  • https://t.me/clickhouse_ru
    SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl/query-0000001192/` FORMAT Vertical

    тут что говорит?
  • https://t.me/clickhouse_ru
    @dbalashov #236150 06:12 PM, 26 Sep 2021
    чота не могу понять как проверить состояние clickhouse keeper
  • https://t.me/clickhouse_ru
    @dbalashov #236151 06:12 PM, 26 Sep 2021
    служебных таблиц чота тоже не вижу от keeper
  • https://t.me/clickhouse_ru
    system.zookeeper ? не?
    я просто его еще тоже не трогал еще
  • https://t.me/clickhouse_ru
    @dbalashov #236153 06:16 PM, 26 Sep 2021
    не zookeeper, а clickhouse keeper
  • https://t.me/clickhouse_ru
    @dbalashov #236154 06:16 PM, 26 Sep 2021
    и он не создает служебную таблицу zookeeper
  • https://t.me/clickhouse_ru
    погоди, clickhouse-keeper это пока что просто заменитель zookeeper на nuraft

    серверу все равно секция <zookeeper> в конфиге clickhouse-server вроде нужна? или нет?
  • https://t.me/clickhouse_ru
    @BloodJazMan #236156 06:18 PM, 26 Sep 2021
    =( блин полностью преза вылетела из головы, на последнем митапе в альтинити была преза от clickhouse.inc
  • https://t.me/clickhouse_ru
    @dbalashov #236157 06:18 PM, 26 Sep 2021
    ну без него запустился и в логи пишет: https://i.tk-chel.ru/denisio/202109/26_231840.png
  • https://t.me/clickhouse_ru
    @den_crane #236158 06:56 PM, 26 Sep 2021
    да серверу нужна секция zookeeper.
    да таблица system.zookeeper будет с кипером
  • https://t.me/clickhouse_ru
    @dbalashov #236159 07:10 PM, 26 Sep 2021
    А
  • @zincumgears #236160 07:16 PM, 26 Sep 2021
    Joined.
  • 27 September 2021 (120 messages)
  • https://t.me/clickhouse_ru
    Еще раз приветствую. На всякий случай попробую апнуть вопрос.
  • https://t.me/clickhouse_ru
    @metelitsaa #236165 07:00 AM, 27 Sep 2021
    Всем привет!
    Пытаюсь создать словарь с типом хранения complex_key_ssd_cache использующий в качестве источника локальную таблицу MergeTree.
    Запросы с одним ключом отрабатывают нормально:
    select dictHas('test_dict', 'test_key');
    Но запросы со словарем и таблицей падают с ошибкой недоступности источника:
    select count()
    from test_schema.test_table
    where dictHas('test_dict', key_string);
    Проблема была решена увеличением query_wait_timeout_milliseconds. Теперь падает с ошибкой AST is too big. Maximum: 500000:. Увеличение параметров max_ast_elements и max_expanded_ast_elements на уровне запроса и на уровне сессии проблему не решило - падает с той же ошибкой. При этом в таблице system.dictionary отображается что словарь аллоцировал память, но в директории хранения словаря по параметру path пусто и размер папки 4кб. В логах запроса send_logs_level = 'trace' и journalctl ничего критичного. В чем может быть проблема? При этом с complex_key_hashed все работает отлично, быстро обновляется и запросы отрабатывают без проблем.
  • https://t.me/clickhouse_ru
    @121548504 #236166 07:02 AM, 27 Sep 2021
    Коллеги, добрый день. Подскажите можно ли собрать кластер клика из узлов одинаковой версии но на разных осях (CentOS и Ubuntu)?
  • https://t.me/clickhouse_ru
    Можно, но могут быть некоторые особенности
  • https://t.me/clickhouse_ru
    реплика на таких узлах соберется?
  • https://t.me/clickhouse_ru
    Да в целом должна, но может быть несколько разная производительность
  • https://t.me/clickhouse_ru
    @unamedrus #236170 07:08 AM, 27 Sep 2021
    И ядро должно быть свежее
  • https://t.me/clickhouse_ru
    @121548504 #236171 07:12 AM, 27 Sep 2021
    Понятно. Мне это надо чтобы без остановки на убунту переехать.
  • https://t.me/clickhouse_ru
    @avramenkoBogdan #236172 07:19 AM, 27 Sep 2021
    В ClickHouse появилась опция спрятать код в функцию. 2 вопроса:

    1) Как увидеть список созданных текущих функций?
    2) Очень желательно: как настроить их просмотр в DBeaver? А то есть только папка под "процедуры", которая пустая...
  • @Azat_Sharip #236173 07:26 AM, 27 Sep 2021
    @den_crane Добрый день! Вы не сталкивались с такой проблемой?
    https://t.me/clickhouse_ru/236143
    ازت in ClickHouse не тормозит

    Коллеги, добрый вечер! Столкнулся со следующей проблемой, может кто знает и сможет помочь: Попытка обновить вьюху привела к тому, что кликхаус выдал ошибку таймаута JDBC-драйвера . После чего таймауты были увеличены, но теперь другую ошибку выдает: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000001192 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background (version 21.1.2.15 (official build))

  • https://t.me/clickhouse_ru
    @Caside #236175 07:54 AM, 27 Sep 2021
    Через DBT пытаемся сделать инкрементальную матерелизацию.
    DBT пытается сначала удалить некоторые строки а потом заинсёртить другие и всё в одном прогоне.
    Ловим ошибку:
    Multi-statements are not allowed

    Есть ли какой-то способ провести 2 разные операции пордяд?
  • UDF появились в версии 21.10 и наверное ещё не продакшн ready. Не думаю что ваша версия КХ поддерживает их
  • https://t.me/clickhouse_ru
    Как раз себе на днях 21.10 установил в докер, так что поддерживает)
  • А вы отважны) я бы попробовал в system.functions поискать, сам пока не ставил)
  • @KevinMort #236179 08:06 AM, 27 Sep 2021
    Всем привет! Подскажите пожалуйста функцию в clickhouse, которая выводит текущее время, видимо я слепой, не могу найти её в документации
  • https://t.me/clickhouse_ru
    Так давно ждали возможность спрятать хотя бы частично монструозный SQL-синтаксис в функции, что только завидев уже начали учить)

    Но судя по всему, бобер помимо нежелания показывать список функций, еще и не любит показывать массив в массиве на DateTime64(

    Видимо придется ждать-с
  • https://t.me/clickhouse_ru
    now(),now64()
  • Спасибо!
  • https://t.me/clickhouse_ru
    @ur_neko #236183 08:48 AM, 27 Sep 2021
    Добрый день. Подскажите, какие есть опции по бекапам? Из хотелок - с кластера на несколько нод выгружать данные в гугловский сторадж. Хочется также уметь делать это, например, из куба, чтобы не держать сервер под это / не грузить ноды КХ.

    Пока ничего кроме clickhouse-backup не нашёл, вроде не совсем то, что хочется. Насколько я понял, он работает иначе, он не выгружает сами данные. Отсюда три вопроса:
    1. Он адекватно работает с кластером, в котором несколько шардов?
    2. Его нужно ставить на каждую ноду КХ и отдельно на каждой прогонять бекапы?
    3. Какие альтернативы?
  • https://t.me/clickhouse_ru
    1. Ему без разницы кластер там или нет
    2. Да, бекапы можно делать одной реплики шарда
    3. Freeze partition и загрузка его куда-нибудь руками, insert into s3() select ...
  • https://t.me/clickhouse_ru
    а подскажите пожалуйста, эта ошибка вообще насколько критична? просто я понял что у меня она сыпется чуть ли не через каждый запрос, в логах КХ. При этом данные вставляются иногда нормально, а иногда нет
  • https://t.me/clickhouse_ru
    @last_hope_hero #236188 09:21 AM, 27 Sep 2021
    добрый день, подскажите плиз, почему если использовать clickhouse-client через баш и выполнять команды через --query="" то например при переливе данных INSERT INTO t SELECT * FROM t2 возникают ошибки наподобие "Too many partitions for single INSERT block". при этом если выполнять те же команды непосредственно из clickhouse-client подключаясь с того же хоста и тд, всё переливается отлично без каких-либо ошибок ? как можно запускать это из баша, поскольку не всегда это удобно запускать руками.
  • https://t.me/clickhouse_ru
    Этот? :)
    Мега-доклад, простым языком Алексей рассказал про HyperLogLog и Counting Bloom Filter, например.
    https://youtu.be/sJe35GLxzls
    Как перестать бояться и начать разрабатывать специализированные структуры данных – Алексей Миловидов

    Алексей Миловидов (Yandex) «Как перестать бояться и начать разрабатывать специализированные структуры данных» Конференция X5 Retail Hero https://retailhero.ai/conference Презентации - https://drive.google.com/drive/folders/1zf8rSVU9bHXTkPDAms5bkV9qDdxVpbdN?usp=sharing

  • Да, спасибо, оно
  • https://t.me/clickhouse_ru
    @umbertolopes #236191 09:31 AM, 27 Sep 2021
    Подскажите, пожалуйста, а не планируются ли митапы по ClickHouse в Москве (России) этой осенью? В прошлом году раз в квартал проводили, в этом последний раз был в марте ещё.
  • @l_dar #236193 10:22 AM, 27 Sep 2021
    Привет!
    Подскажите пожалуйста, перевожу таблицу на репликацию Rep...MergeTree, копирую данные в папку detach и почему когда подключаю PARTы вот таким способом
    ALTER TABLE visits ATTACH PART
    То для некоторых парт данные отличаются . Проверяю простым
    SELECT count()
    разное количество выходит
  • https://t.me/clickhouse_ru
    @111093495 #236194 10:30 AM, 27 Sep 2021
    Привет! подскажите пожалуйста как лучше перекинуть схему с не репликейтед таблицами на другой сервер?

    Схаема с типом Atomic, так-то хотел просто через rsync нужные папочки перекинуть, а тут с атомик, как-то все смешано (((
  • https://t.me/clickhouse_ru
    clickhouse-copier смотрели?
  • https://t.me/clickhouse_ru
    @critskiy #236196 10:36 AM, 27 Sep 2021
    Вы можете или через него, или ручками тупо только схемы через системные утилиты
  • https://t.me/clickhouse_ru
    @critskiy #236197 10:37 AM, 27 Sep 2021
    Или через system.tables вроде, емнип
  • https://t.me/clickhouse_ru
    нет, спасибо посмотрю
  • https://t.me/clickhouse_ru
    Или через show create название таблицы
  • https://t.me/clickhouse_ru
    @critskiy #236200 10:37 AM, 27 Sep 2021
    Вариантов много :)
  • https://t.me/clickhouse_ru
    @111093495 #236201 10:38 AM, 27 Sep 2021
    я и хотел ручками, с Ordinal было бы всё просто, а с Atomic чота не дагоняю как там понять что к чему относиться
  • @softbot_xxl #236202 11:17 AM, 27 Sep 2021
    Есть ли у КХ кэш запросов? Делаю бенчмарк, хочу его отключить если можно.
  • https://t.me/clickhouse_ru
    по-умолчанию нет
  • Какой настройкой это контролируется?
  • https://t.me/clickhouse_ru
    use_uncompressed_cache, но это не совсем про кеш результатов
  • https://t.me/clickhouse_ru
    есть замечательная программа clickhouse-benchmark
  • https://t.me/clickhouse_ru
    SYSTEM | ClickHouse Documentation

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

  • У меня это включено, т.к. будет включено на продакшн системе.
  • https://t.me/clickhouse_ru
    можно делать SYSTEM DROP UNCOMPRESSED CACHE перед запросом
  • Он показывает неправильный результат по QPS, если нода начинает тротлить соединения (стоит к примеру max_concurrent_queries). Начинал с нее, но когда начал заоблачный qps показыватать (соединение не может быть установлено), пришлось перестать.
  • @softbot_xxl #236211 11:22 AM, 27 Sep 2021
    Спасибо за информацию!
  • @softbot_xxl #236212 11:24 AM, 27 Sep 2021
    Но по факту именно кэша запросов в КХ нету, т.е. Query Plan не живет дольше запроса?
  • @softbot_xxl #236213 11:24 AM, 27 Sep 2021
    Потому что uncompressed cache - это по сути, то, что я хочу тестить, чтобы он выгрузил в память побольше.
  • https://t.me/clickhouse_ru
    @ilejn #236214 11:40 AM, 27 Sep 2021
    Добрый день,

    различия в эскейпах - это баг или фича?

    :) create table t42("a \\ " UInt32) engine = MergeTree() order by "a \\ ";

    :) select name from system.columns where table = 't42';

    ┌─name─┐
    │ a \ │

    :) select sorting_key, primary_key from system.tables where name = 't42';
    ┌─sorting_key─┬─primary_key─┐
    │ a \\ │ a \\ │

    Неожиданно, что одна и та же колонка в разных системых таблицах именуется по-разному.
  • https://t.me/clickhouse_ru
    @279007328 #236220 12:13 PM, 27 Sep 2021
    Привет всем. Подскажите пожалуйста, а шардинг работает только с Mergettree или с любым движком ?
  • https://t.me/clickhouse_ru
    @GoDevelopment #236221 12:42 PM, 27 Sep 2021
    Joined.
  • https://t.me/clickhouse_ru
    @GoDevelopment #236222 12:44 PM, 27 Sep 2021
    Всем привет)) Сегодня ознакамливаюсь СУБД ClickHouse, до этого был знаком лишь с MySQL, Postgresql и различные NoSQL, я так полагая парадигмы мышления тут другая и механизм работы имеет разнцые концепции.
    В каких ситуациях профитно использовать ClickHouse?
  • Обзор | Документация ClickHouse

    Что такое ClickHouse ClickHouse - столбцовая система управления базами данных (СУБД) для онлайн обработки аналитических

  • https://t.me/clickhouse_ru
    Когда данных много и надо делать аналитику. При этом учитывая, что в кликхаусе нельзя обновить данные как в обычной реляционной бд
  • https://t.me/clickhouse_ru
    Обзор | Документация ClickHouse

    Что такое ClickHouse ClickHouse - столбцовая система управления базами данных (СУБД) для онлайн обработки аналитических

  • https://t.me/clickhouse_ru
    WTF ? она занимается рассчетами и выплевывет результат?
  • у нас бывает что пока не сделаешь detach distiributed таблицы она будует в логах постоянно сыпать, лучше разобраться)
  • https://t.me/clickhouse_ru
    @DonAlexey #236230 01:47 PM, 27 Sep 2021
    Всём привет, можно ли публиковать вакансии? Я не hr, ищу коллегу в команду
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236230 #236231 02:09 PM, 27 Sep 2021
    тут даже hr'ы пишут - чего стесняться? Главное чтобы clickhouse был в первых позициях вакансии, а не 3-м после остальных баз и языков.
  • https://t.me/clickhouse_ru
    @bvt123 #236232 02:14 PM, 27 Sep 2021
    Вместо dictGet можно делать обычный join с таблицей равной имени словаря. Как я понимаю это сделано для удобства работы с разными BI, которые умеют только стандартный SQL. Это работает и это здорово.
    Но как передать второй аргумент в словарях с хранением range_hashed?
    Получаю Wrong argument count for function dictHas when dictionary has key type range: While executing JoiningTransform. (NUMBER_OF_ARGUMENTS_DOESNT_MATCH) - что логично.
    по какому имени можно сделать условие в join для дополнительного аргумента?
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #236227 #236233 02:27 PM, 27 Sep 2021
    Ответ скорее всего утвердительный, волноваться стоит.
    Но вы не указали источник данных для словаря и его layout. Например, cуществует cache.
  • @mef13 #236234 02:28 PM, 27 Sep 2021
    всем привет.
    скажите, есть ли вариант сделать join на большой таблице, с очень малым количеством озу?
    время выполнения не принципиально, хоть неделю
    при
    SET join_algorithm = 'partial_merge'
    select * from c.main inner join c.d on c.main.m = c.d.a
    выдаёт
    Code: 241. DB::Exception: Received from . DB::Exception: Memory limit (total) exceeded: would use 2.79 GiB (attempt to allocate chunk of 4325664 bytes), maximum: 2.79 GiB: (avg_value_size_hint = 43, avg_chars_size = 42, limit = 16384): (while reading column address): (while reading from part /chdb/store/4f8
    /4f88080f-c32b-4ced-8f88-080fc32beced/all_320499_332314_44/ from mark 576 with max_rows_to_read = 16384): While executing MergeTreeThread. (MEMORY_LIMIT_EXCEEDED)
  • https://t.me/clickhouse_ru
    Select и вперёд)
  • ну за неделю можно поднять постгрес и на нем спокойно сделать джойн)
  • сколько у вас всего памяти на сервере?
  • @mef13 ↶ Reply to #236237 #236238 02:34 PM, 27 Sep 2021
    ну вообще могу залить на сервер с 96 гб и там прогнать, но т.к. это надо делать примерно раз в несколько месяцев, а хранить на том сервере не вариант, то подумал вдруг можно это сделать на этих мощностях, но медленней
  • @mef13 ↶ Reply to #236236 #236239 02:35 PM, 27 Sep 2021
    так может тогда вообще с кликхауса на него перейти)
  • отличная идея!
  • так сколько памяти у вас на текущей конфигурации?
  • @mef13 ↶ Reply to #236241 #236242 02:37 PM, 27 Sep 2021
    4-6 гб
  • а какие размеры таблиц?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236234 #236244 02:39 PM, 27 Sep 2021
    set join_algorithm=partial_merge

    select * from system.settings where name like '%join%';
  • @mef13 ↶ Reply to #236243 #236245 02:40 PM, 27 Sep 2021
    1169182464 строк
    на винте примерно 40гб занимает
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236234 #236246 02:40 PM, 27 Sep 2021
    set join_algorithm=partial_merge
    select * from system.settings where name like '%join%';
  • @mef13 ↶ Reply to #236246 #236247 02:41 PM, 27 Sep 2021
    set join_algorithm='partial_merge'
  • @mef13 ↶ Reply to #236246 #236248 02:43 PM, 27 Sep 2021
    ┌─name───────────────────────────────────────┬─value─────────┬─changed─┬─min──┬─max──┬─readonly─┬─type───────────┐
    │ max_joined_block_size_rows │ 65505 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ join_use_nulls │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ join_default_strictness │ ALL │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ JoinStrictness │
    │ any_join_distinct_right_table_keys │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ joined_subquery_requires_alias │ 1 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ prefer_global_in_and_join │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ max_rows_in_join │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ max_bytes_in_join │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ join_overflow_mode │ throw │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ OverflowMode │
    │ join_any_take_last_row │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ join_algorithm │ partial_merge │ 1 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ JoinAlgorithm │
    │ partial_merge_join_optimizations │ 1 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ default_max_bytes_in_join │ 1000000000 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ partial_merge_join_left_table_buffer_bytes │ 32000000 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ partial_merge_join_rows_in_right_blocks │ 65536 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ join_on_disk_max_files_to_merge │ 64 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ enable_unaligned_array_join │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    │ multiple_joins_rewriter_version │ 0 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ UInt64 │
    │ cross_to_inner_join_rewrite │ 1 │ 0 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └────────────────────────────────────────────┴───────────────┴─────────┴──────┴──────┴──────────┴────────────────┘
  • https://t.me/clickhouse_ru
    @ilejn #236249 02:43 PM, 27 Sep 2021
    Сообщение об ошибке вызывает идею попробовать уменьшить max_rows_to_read.
  • https://t.me/clickhouse_ru
    @bvt123 #236250 02:48 PM, 27 Sep 2021
    ещё max_threads=1
    и конечно maximum: 2.79 GiB выглядит как издевательство для джойна на миллиард строк.
  • @mef13 ↶ Reply to #236249 #236251 02:50 PM, 27 Sep 2021
    Limit for rows (controlled by 'max_rows_to_read' setting) exceeded, max rows: 100.00 thou
    sand, current rows: 387.41 million. (TOO_MANY_ROWS)
  • @mef13 ↶ Reply to #236250 #236252 02:50 PM, 27 Sep 2021
    понимаю, жизнь такая(
  • @mef13 #236253 02:51 PM, 27 Sep 2021
    мб вместо джойна что-либо другое использовать? нужен поиск полных совпадений в двух таблицах
  • https://t.me/clickhouse_ru
    @bvt123 #236254 02:54 PM, 27 Sep 2021
    можно битмапы - но там наоборот жрут память чтобы ускорится. Вам как раз надо настроить merge join, чтобы делать все на диске.
    Мне кажутся перспективными сеттинги:
    partial_merge_join_left_table_buffer_bytes │ 32000000
    partial_merge_join_rows_in_right_blocks │ 65536
    пробуйте. потом расскажете нам можно ли на 3-х гигах решить такую задачку
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236253 #236256 03:01 PM, 27 Sep 2021
    опасные слова. Вы в джойне все колонки разом сравниваете? Так себе идея для колоночной базы данных.
    Можно попробовать в два приема сделать - сначала найти совпадения по первичному ключу - их будет уже не ярд, а сильно меньше, и только потом разбираться с остальными колонками.
  • https://t.me/clickhouse_ru
    @frolovigoru #236257 03:08 PM, 27 Sep 2021
    Коллеги, всем привет)

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

    Пишу файл в Distributed таблицу, под которой лежат ReplicatedMergeTree
    Пишу с использованием официального clickhouse-jdbc
    Пробовал много вариаций кода, но в конечном итоге драйвер отправляет примерно один и тот же HTTP запрос в кликхауз

    Проблема в том, что при вставке данных (~1млн строк, 2 колонки, около 20 мб) иногда вставляется полное число строк, а иногда нет. причем числа ошибочных вставок очень похожи)

    нормальная вставка - 1188006
    битая вставка - 792047,791708,792494
    в логах клика вижу ошибку, но как при успешной вставке, так и нет, поэтому не могу утверждать важно это или нет. на всякий случай, 1 файл - 1 ключ партицирования таблицы, т.е партиция должна быть одна
    Too many partitions for single INSERT block (more than 100)

    В чем может крыться причина обрыва? может ли это быть из-за того что в момент записи кто-то другой пытается читать из этой таблицы или партиции?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236257 #236258 03:25 PM, 27 Sep 2021
    > Too many partitions for single INSERT block (more than 100)
    покажите свой partition by. Он точно по месяцам? Почему нет?
  • https://t.me/clickhouse_ru
    PARTITION BY segment_id

    вот такой, поле segment_id я задаю каждый раз при записи файла

    в файле одна колонка это значение, а вторая - ключ партицирования, в каждом новом файле он один на все строки
  • а эта ошибка только во время инстерта? как я писал она может сама постоянно в логи писать, даже без инсертов, если до этого не так 1 раз вставили
  • https://t.me/clickhouse_ru
    @ilejn #236261 03:34 PM, 27 Sep 2021
    Посмотрите в сторону min_insert_block_size_rows
  • https://t.me/clickhouse_ru
    да такое ощущение что только во время, она же там sql выдает. в котором видно мою таблицу. правда не понятно на какую именно партицию он ругается
  • https://t.me/clickhouse_ru
    а вы предлагаете его уменьшить? или наоборот?

    у меня по умолчанию стоит, 1048576
  • https://t.me/clickhouse_ru
    @ilejn #236264 03:41 PM, 27 Sep 2021
    Если у вас есть условия для объединения вставок, то предлагаю выключить (сделать равным нулю или единице). Потому что если объединяется больше сотни insert'ов, можно упереться в ограничение.
    Если таких условий нет, предлагаю думать дальше.
  • https://t.me/clickhouse_ru
    @ilejn #236265 03:41 PM, 27 Sep 2021
    Хотя ... если вы вставляете больше миллиона, можно думать дальше ;)
  • https://t.me/clickhouse_ru
    ну тут не всегда больше миллиона. иногда это маленькие партиции

    просто на больших файлах стали замечать что время от времени данные пропадают где-то
  • https://t.me/clickhouse_ru
    @ilejn #236267 03:46 PM, 27 Sep 2021
    Полностью одинаковые файлы исключены?
  • https://t.me/clickhouse_ru
    да, как минимум segment_id будет разным. ну и вероятность одинаковых значений во второй колонке крайне мала
  • @mef13 ↶ Reply to #236256 #236269 04:03 PM, 27 Sep 2021
    нет, я сравниваю одну колонку с одной колонкой разных таблиц
  • @mef13 ↶ Reply to #236254 #236270 04:11 PM, 27 Sep 2021
    DB::Exception: Memory limit (total) exceeded: would use 2.80 GiB (attempt to allocate chunk of 4981824 b
    ytes), maximum: 2.79 GiB: While executing FillingRightJoinSide. (MEMORY_LIMIT_EXCEEDED)
  • @milovidov_an #236271 04:21 PM, 27 Sep 2021
    Что-то там наговорил: https://www.youtube.com/watch?v=PqxYBYn2R9w
    Алексей Миловидов (ClickHouse) - первое интервью после $50mln-сделки на Russia Open Source MeetUp

    В рамках инициативы Russia Open Source 22 сентября 2021 года состоялся митап на тему монетизации решений с открытым кодом. Алексей Миловидов — основатель ClickHouse - системы управления базами данных с открытым кодом, созданной для решения конкретных задач Яндекса и перешедшей в самостоятельный продукт с мировыми клиентами. Рассказал о том, как рождаются OSS-стартапы в рамках корпорации и могут ли они самостоятельно зарабатывать на Open Source, а главное — как? Первое интервью после $50 mln-сделки в компанию ClickHouse Митап прошел в формате живой встречи с дополнительной online-трансляцией. Детали на сайте https://russiaos.ru/meetup/ #RussiaOpenSource #Open Source #OSS #АлексейМиловидов #ClickHouse #Яндекс #РФРИТ #открытыйкод

  • @a8t3r #236275 05:22 PM, 27 Sep 2021
    Привет! Можно ли такое реализовать на кликхаусе?
    Нужно подсчитать сумму уникальных записей в таблице с дубликатами.
    Причем уникальность определяется по другой колонке.
    что-то вроде sumIf(column1, distinct column2)
  • https://t.me/clickhouse_ru
    может быть что-то такое, но не уверен

    SELECT column2, sum(any(column1)) FROM table GROUP BY column2
  • @a8t3r #236277 05:26 PM, 27 Sep 2021
    прелесть постгресовской реализации, что она не требует group by по колонке
  • что-то не понял как без group by, в вашем примере принятый ответ его использует
  • https://t.me/clickhouse_ru
    select col1, arraySum(groupArrayDistinct(col2)) from table group by col1
  • @a8t3r ↶ Reply to #236275 #236280 06:23 PM, 27 Sep 2021
    посмотрите второй ответ в stackoverflow треде, через кастомный агрегат. там же есть пример SQLFiddle
    он принимает колонку, по которой группировать на вход, что избавляет от потребности указывать ее в group by
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #236253 #236281 07:18 PM, 27 Sep 2021
    попробуйте через group by
    select a from (select a from t1 union all select a from t2) group by a having count() = 2
    если и тут памяти не хватит, попробуйте set max_memory_usage_beefore_external_group_by = 1gb
  • https://t.me/clickhouse_ru
    @DonAlexey #236282 07:31 PM, 27 Sep 2021
    #вакансия #Clickhouse #dba #удалёнка

    Вакансия: DBA ClickHouse (должность звучик как Старший консультант)
    Компания: X5 Group (X5 retail group, X5 Технологии)
    Локация: удалёнка, но если хотите можно ездить в офис 3 штуки на выбор в Москве
    Зарплата: 120000 - 200000 на руки

    Я руководитель команды NoSQL СУБД (тимлид).
    Наш отдел занимается всеми промышленными централизованными СУБД.

    Что делать?
    - Администрировать СУБД ClickHouse как single так и в cluster в качестве 3 линии поддержки
    - Автоматизировать задачи по СУБД средствами Ansible для себя и коллег со 2 линнии поддержки
    - Развивать мониторинг СУБД на базе Zabbix
    - Решение инцидентов, запросов пользователей в части БД как 3 линия поддержки
    - Подготовка, настройка, обновление СУБД

    Идеальный кандидат имеет:
    - Знание СУБД ClickHouse в части DBA
    - Backup/recovery/DRP для СУБД ClickHouse;
    - Уверенные знания SQL
    - Знания Shell, bash, python, ansible (скриптовые языки для автоматизации)
    - Знания Linux, на уровне администратора, необходимые для поддержки СУБД ClickHouse
    - Навыки работы с Git

    Любые вопросы по вакансии в ЛС @DonAlexey

    Более подробно про компания и сама вакансия
    https://hh.ru/vacancy/47093185
  • @vvvjhaq #236284 07:34 PM, 27 Sep 2021
    #вакансия #удаленка
    Вакансия: DBA ClickHouse
    Компания: РА Selecty
    Город: Москва
    Формат работы: remote
    Занятость: full time
    Компенсация: 150000 - 200000 net., без учета премий

    Всем привет! Мы находится в поисках Старшего Администратора СУБД ClickHouse в одну из крупнейших ритейл компаний РФ.

    🔸Задачи:
    - Администрирование СУБД ClickHouse (single instance, Cluster);
    - Автоматизация задач по сопровождению СУБД по средствам Ansible;
    - Мониторинг СУБД на базе Zabbix;
    - Решение инцидентов, запросов пользователей в части БД как 3 линия поддержки;
    🔸Пожелания к кандидату:
    - Знание СУБД ClickHouse в части DBA;
    - Навыки проведения Backup/Recovery для СУБД ClickHouse;
    - Уверенные знания SQL;
    - Знания Shell, python, ansible - как преимущество;
    - Знания Linux, на уровне администратора, необходимые для поддержки СУБД ClickHouse;
    - Навыки работы с Git - будут плюсом.
    🔸Условия:
    - Гибридный график работы (офис/дом);
    - ДМС со стоматологией;
    - Оформление по ТК РФ.

    🔸Если заинтересует, я здесь 24/7 @papabooo
    или на почту andrey.boyko@selecty.ru
  • https://t.me/clickhouse_ru
    Старший + X5 retail = 120тыс? что то не сходится
  • точно ищете старшего?
  • https://t.me/clickhouse_ru
    От120 до запросов, может нужен няш-маш стесняш из региона
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236275 #236290 07:46 PM, 27 Sep 2021
    если тут уже начались городушки с group by, то в КХ точно надо задействовать limit 1 by:
    select sum(c1) from (select c1 from table limit 1 by c2)
  • https://t.me/clickhouse_ru
    > (темлид).

    кто?
  • Кликхаус такой простой, что справится даже джун)
  • https://t.me/clickhouse_ru
    @DonAlexey #236293 08:41 PM, 27 Sep 2021
    Коллеги, я написал от, политика конторы не позволяет вовсе публиковать никакие суммы
  • https://t.me/clickhouse_ru
    @DonAlexey #236294 08:42 PM, 27 Sep 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
    @DonAlexey #236299 08:47 PM, 27 Sep 2021
    Пишите, кто заинтересуется, вакансия ниже моего поста та же
  • https://t.me/clickhouse_ru
    Вы точно сделали низкую вилку для senior DBRE кликхауса
  • https://t.me/clickhouse_ru
    @critskiy #236301 10:43 PM, 27 Sep 2021
    С учетом, что если вы предполагаете вакансией дежурство, то не 200к максимальная граница вилки должна быть)
  • 28 September 2021 (261 messages)
  • https://t.me/clickhouse_ru
    Спасибо за обратную связь, можете подсказать какой должна быть правильная вилка?
  • https://t.me/clickhouse_ru
    @Grey_Cat_UA #236305 07:21 AM, 28 Sep 2021
    Всем привет , подскажите плз, можете кто знает как ускорить мерж партиций при мутациях в таблицах с использованием ReplicatedMergeTree???
    На данный момент сервер 64cpu/128ram уже дней 10 мержит 200 строк изменений в таблице на 200 млн строк.
  • https://t.me/clickhouse_ru
    Ну давайте так. Вы должны были как тимлид обсудить с вышестоящими над вами сколько они могут и будут выделять на позицию, открытую в вашей команде.
    Сейчас вы тут немного налажали, откровенно говоря, показывая, что тимлид из вас никудышный, если хотите быть лучше, идите в такие чатики как "Современная разработка ПО" или можете задавать вопросы в teamlead bootcamp или боль тимлида.
    И за сим оффтоп прекращаю.
  • @softbot_xxl #236307 07:45 AM, 28 Sep 2021
    В больших компаниях тимлида не подпустят к цифрам по зп даже близко. Скорее всего сумма взята с потолка.
  • https://t.me/clickhouse_ru
    Спасибо на этом. Я как тимлид смог повысить эту ставку до этой вилки что написано, более вышестоящие не готовы выделять к сожалению.
  • https://t.me/clickhouse_ru
    Ну, могу с большей вероятностью сказать, что да. :)
    Несмотря на то, что столько выделило начальство
  • https://t.me/clickhouse_ru
    Все верно, изначально её взяли с некоторого потолка, потом её скорректировали на ту что написана.
  • https://t.me/clickhouse_ru
    @DonAlexey #236311 07:52 AM, 28 Sep 2021
    А так конечно очень конструктивно ходить вокруг да около не называя конкретных чисел, никто не сказал "нормальную вилку"
  • https://t.me/clickhouse_ru
    таких зарплат которые вы пишите на рынке попросту нет, начинается всё с 400к
  • https://t.me/clickhouse_ru
    А почему кто-то должен говорить нормальную? Как бы вы должны ее были определить, учитывая, кто вам нужен и какая в среднем вилка или по статистике, а уж HR должен был подправить с учетом рыночной оценки.
  • https://t.me/clickhouse_ru
    а что таког ов этомм чатике? деды тип сидят
  • https://t.me/clickhouse_ru
    Вы вначале б послушали и материалы почитали бы прежде чем такое говорить)
  • https://t.me/clickhouse_ru
    В крупных конторах часто HR не знают рынков особенно по редким технологиям, я же не просто так сам пошел по чатам искать. Найти никого не могут, а работать как говориться надо
  • 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
    @critskiy #236321 07:59 AM, 28 Sep 2021
    Там есть книги, статьи, записи послушать стоит потому, что они погружают людей намного глубже чем менеджерская конференция тип ТимлидКонфа, потому что затрагивают темы и объясняют, что в современном состоянии менеджмента может быть не так :)
  • https://t.me/clickhouse_ru
    @rvkggwp #236322 08:12 AM, 28 Sep 2021
    Добрый день, может кто-то пояснить момент с partition и order by. Например у меня таблица с partition by toYYYYMMDD(t1) order by (a1, a2). Если я напишу запрос where t1 > 'x' and a1 = z and a2 = y. То логика работы будет какая? Сначала отработает по партиции, найдет нужный кусок данных, а потом по этому куску данных по order by найдет нужные мне данные?
  • Спасибо, подписался, наблюдаю.

    Еще пару вопросов в рамках этой темы миграции на шардированный кластер:
    - Как правильно делать миграции ALTER/DROP, очень редко CREATE на шардированном кластере из кода?
    - Нельзя ли перелить данные не через инсерты? Например переливкой партиций? Я сейчас проверяю на тестовом кластере, и все это очень медленно.
  • https://t.me/clickhouse_ru
    > Как правильно делать миграции ALTER/DROP, очень редко CREATE на шардированном кластере из кода?

    ALTER TABLE ... ON CLUSTER
    на одной из нод запускайте
    и тулу для мигрирования

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/schema-migration-tools/golang-migrate/
  • https://t.me/clickhouse_ru
    > - Нельзя ли перелить данные не через инсерты? Например переливкой партиций? Я сейчас проверяю на тестовом кластере, и все это очень медленно.

    медленно это сколько в кол-ве строк в секунду?
  • Около 6к, но там давольно слабое железо...
  • https://t.me/clickhouse_ru
    6k это очень мало

    а что там происходит? как именно вы данные то вставляете?

    INSERT INTO ... SELECT
    должен быть достаточно быстрым
  • https://t.me/clickhouse_ru
    @solard #236328 08:53 AM, 28 Sep 2021
    Переганяли недавно 14 миллионов на тачке 2 ядра 2 гига
  • https://t.me/clickhouse_ru
    @solard #236329 08:53 AM, 28 Sep 2021
    За 3 секунды или около-того
  • https://t.me/clickhouse_ru
    @solard #236330 08:53 AM, 28 Sep 2021
    Тупой селект инсерт
  • https://t.me/clickhouse_ru
    @solard #236331 08:53 AM, 28 Sep 2021
    Не вижу проблемы
  • Конкретно сюда наливаю просто из tsv, но да, я перечитал, это чутка другой кейс...
  • https://t.me/clickhouse_ru
    @Hardstep83 #236333 09:17 AM, 28 Sep 2021
    Добрый день. В доке не нашел, хотелось бы поподробнее понять механизм работы оптимизатора КХ. Например если я сделал представление и в запросе к нему передаю дополнительные условия для фильтрации - то оптимизатор перемещает эти условия внутрь подзапроса из которого состоит представление? Бенчмарк показывает примерно одинаковый результат, но хотелось бы теорию понять.Судя по тому что пишет EXPLAIN все таки выполняется подзапрос полностью, а потом применяются к результату фильтры. В основном работал до этого с PG, и в доках очень подробно описаны такие моменты. Кто может подсказать?
  • @lmgoncharov #236334 09:18 AM, 28 Sep 2021
    Добрый день.
    Как получить в селекте структуру типа [{key1:field1, key2:field2}, ...]?
    SELECT groupArray(map('id', _id, 'name', name))
    FROM categories
    получаю
    There is no supertype for types UInt64, String because some of them are String/FixedString and some of them are not: While processing map('id', _id, 'name', name). (NO_COMMON_TYPE)
  • https://t.me/clickhouse_ru
    Приведите к String аргументы, пишет же
  • @lmgoncharov #236336 09:24 AM, 28 Sep 2021
    А почему я не могу использовать интовое значение?
  • Так у вас ошибка не про Int
  • В таком случае я не очень понимаю, в чем. Поясните, пожалуйста
  • @lmgoncharov #236339 09:29 AM, 28 Sep 2021
    В том, что я в качестве значений мапу подсовываю разные типы данных?
  • https://t.me/clickhouse_ru
    because some of them are String/FixedString and some of them are not - полагаю дело в том что часть значений в map это строка, а часть нет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236334 #236341 09:30 AM, 28 Sep 2021
    похоже что у вас _id Uint64, а name String - такое в один мап не влезает. Тут вам не JS, тут всё жестко типизировано, как в C++
  • Вопрос как раз в том, ошибка у меня в построении запроса, или все-таки это фундаментальное ограничение ch
  • @lmgoncharov #236343 09:31 AM, 28 Sep 2021
    Всем спасибо за ответы, буду кастовать к строке
  • https://t.me/clickhouse_ru
    фундаментальное похоже - Map(key, value)
    Тип данных Map(key, value) хранит пары ключ:значение.

    Параметры

    key — ключ. String, Integer, LowCardinality или FixedString.
    value — значение. String, Integer, Array, LowCardinality или FixedString.
  • одинаковые типы в значении должны быть, или все инты или все стринги
  • @lmgoncharov #236346 09:33 AM, 28 Sep 2021
    Спасибо. Это было не слишком интуитивно, потому что я предполагал, что мапу можно предписать структуру из нескольких ключей, за каждым из которых закрепится его тип данных
  • https://t.me/clickhouse_ru
    @hostadminonline #236347 09:46 AM, 28 Sep 2021
    добрый день
    подскажите плз
    вот есть argMax .... отличная функция 🙂
    у меня в базе есть 2 строки с одиаковым временем до секунды .... разница на самом деле в микросекундах .... когда я сортирую у меня последним выдается нужная мне строка ... но argMax выдает первую строку .... что можо с этим сделать ?
  • https://t.me/clickhouse_ru
    Вы эти микросекунды в базе то храните?
  • https://t.me/clickhouse_ru
    @unamedrus #236349 09:46 AM, 28 Sep 2021
    В колонке
  • https://t.me/clickhouse_ru
    DateTime вроде как не умеет
  • https://t.me/clickhouse_ru
    @hostadminonline #236351 09:47 AM, 28 Sep 2021
    по крайенй мере я не видел таких возможностей
  • https://t.me/clickhouse_ru
    Ну так используйте datetime64
  • https://t.me/clickhouse_ru
    хмммм
  • https://t.me/clickhouse_ru
    А если перевести датувремя в число? И применить функцию к числовому полю
  • https://t.me/clickhouse_ru
    числовое то поле тоже будет одинаковое
  • https://t.me/clickhouse_ru
    @hostadminonline #236356 09:48 AM, 28 Sep 2021
    просто я думал вдруг можно еще этой функции сказать как-то что можно использовать натуральную сортировку как в монге
  • https://t.me/clickhouse_ru
    @madreyg #236357 09:54 AM, 28 Sep 2021
    всем привет. Подскажите, ATTACH / DETACH - синхронные операции или асинхронные? Пытаемся реализовать такое поведение: DETACH mv - OPTIMIZE partitions - ATTACH mv . Ошибки не падают, но не приаттачивается mv.
  • https://t.me/clickhouse_ru
    а куда "сюда"?

    INSERT INTO ... FORMAT TSV

    тоже должен работать не 6 тыс строк в секунду а как минимум 100 000 строк в секунду
    сколько у вас колонок?
    в какую таблицу наливаете?
    как меряете скорость вставки?
  • https://t.me/clickhouse_ru
    что значит "не приаттачивается mv"?
    при вставке новых данных в таблицу перестают данные в MV появляться?
  • @KevinMort #236361 10:10 AM, 28 Sep 2021
    Всем привет! Кто-нибудь перетягивал данные в clickhouse через kafka, как эффективно это работает в связке?
  • https://t.me/clickhouse_ru
    эта вью просто не появляется
  • https://t.me/clickhouse_ru
    да, отлично работает
  • Cюда - себе на тестовый кластер - играюсь с шардированием/репликацией подливая данные за месяц с одного из прода.
    Заливаю вот так:

    zcat db_table_data.tsv.gz | clickhouse-client -d db --query='insert into db.table format TabSeparated'

    Колонок около 100:

    # clickhouse-client -q "describe db.table" | wc -l
    94

    Наливаю прямо в distrubuted, оно разливается по трем шардам, ключ шардирования halfMD5(user_id)
    Скорость считал очень просто - переодически запуская count(*).
  • https://t.me/clickhouse_ru
    как VIEW создавался?

    с использованием TO db.table
    или без?

    ATTACH TABLE делаете ? или ATTACH MATERIALIZED VIEW?
  • https://t.me/clickhouse_ru
    вью создавался с to db.table и аттачим как ATTACH TABLE
  • https://t.me/clickhouse_ru
    @flashws #236367 10:20 AM, 28 Sep 2021
    Всем привет! Можно ли при импорт данных из файла CSV или TabSeparated указать для части полей значения по умолчанию? (У MySQL LOAD DATA например есть возможность задать через SET column = 'value')?
  • Я не работал с кафкой, есть ли возможность настраивать источники, мне например нужно забирать данные из разных источников, например:
    google sheets
    mysql
    postgresql
    s3

    И т.д...
    всего порядка 50 - 60 источников
  • https://t.me/clickhouse_ru
    Вы же хотите из kafka забирать данные в clickhouse. А уже как вы из этих источников будете лить в кафку - это другой отдельный вопрос.
  • Понял, просто думал, мало ли там есть подобный функционал, но видимо это другое)
  • @85954625 #236372 10:37 AM, 28 Sep 2021
    Добрый день. Используем replacingMergeTree для апдейтов. В итоге нужно чтобы оставалась только одна последняя запись. В фоне merge пропускает очень много данных. Помогает только optimize table final. Подскажите, пожалуйста, можно ли эту проблему другим путем решить, нежели переодически запускать optimize table?
  • https://t.me/clickhouse_ru
    @Nebrus #236373 10:39 AM, 28 Sep 2021
    Всем привет! #вакансия

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

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

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

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

    Наши условия - стандартное описание плюшек Сбера:
    • Совершенно новый, современный IT-офис вблизи Москва-Сити;
    • Интересные, сложные, амбициозные задачи;
    • Создание продуктов для аудитории в несколько десятков миллионов человек;
    • Возможность профильного обучения (обучение и сертификация за счет компании);
    • Гибкий график начала рабочего дня;
    • Стабильная, конкурентная «белая» заработная плата (оклад + премии);
    • Льготные условия по кредитам Сбербанка;
    • ДМС, страхование от несчастных случаев, социальные гарантии, корпоративные мероприятия;
    • Тренажерный зал.

    Если вы заинтересовались, пишите в личку @Nebrus или на почту kaligina.a@sberbank.ru
  • аrgMax, final, limit 1 by
  • https://t.me/clickhouse_ru
    100 колонок, тут сильно зависит от структуры конечно...
    но должно быть не так медленно как вы говорите

    zcat | pv -n | clickhouse-client
    что показывает?
  • https://t.me/clickhouse_ru
    то есть вот прямо
    ATTACH TABLE db.mv TO db.table AS SELECT ???

    что-то не верится... что у вас такое работает
  • https://t.me/clickhouse_ru
    @katyfrolova #236378 10:49 AM, 28 Sep 2021
    без AS SELECT - он используется при ATTACH MATERIALIZED VIEW
  • благодарю
  • https://t.me/clickhouse_ru
    @katyfrolova #236380 10:51 AM, 28 Sep 2021
    создание вью

    CREATE MATERIALISED VIEW db.mv TO db.table AS SELECT … FROM db.another_table:

    аттач

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

    ATTACH MATERIALIZED VIEW
    вроде из консоли не работает

    так что вам надо
    CREATE MATERIALIZED VIEW
    просто делать

    но вообще все равно непонятно
    зачем делать DETACH mv ?

    OPTIMIZE не вставляет данные в MV underlying таблицу
  • https://t.me/clickhouse_ru
    Вопрос состоял в том, синхронны ли операции DETACH и ATTACH и не мешает ли их выполнению (задержка, блокировка) опреация OPTIMIZE
  • https://t.me/clickhouse_ru
    ок, если optimize никак не влияет на работу вью над таблицей и вставку данных, тогда большое спасибо за ответ, наверное это то, что мы искали)
  • https://t.me/clickhouse_ru
    @FessAectan #236385 11:09 AM, 28 Sep 2021
    Всем ку!
    Коллеги, кто-нибудь использует в продакшене кубовый оператор для clickhouse https://github.com/Altinity/clickhouse-operator?

    Можете что-то сказать за/против?
    GitHub - Altinity/clickhouse-operator: The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - GitHub - Altinity/clickhouse-operator: The ClickHouse Operator creates, configures and manages Cl...

  • https://t.me/clickhouse_ru
    Мы используем в нашем облаке, наши клиенты и не клиенты тоже используют
  • https://t.me/clickhouse_ru
    Принято, спасибо.
    Подскажите, планируете ли сделать helm-чарт?
  • https://t.me/clickhouse_ru
    Про хелм, если и будем то не в ближайшей перспективе думаю.
  • https://t.me/clickhouse_ru
    Кто-то поможет?
  • https://t.me/clickhouse_ru
    проект открытый,
    есть в community вот такой chart
    https://github.com/PostHog/charts-clickhouse/

    но мы его не используем
    GitHub - PostHog/charts-clickhouse: Helm chart for deploying PostHog with ClickHouse on your K8s infrastructure

    Helm chart for deploying PostHog with ClickHouse on your K8s infrastructure - GitHub - PostHog/charts-clickhouse: Helm chart for deploying PostHog with ClickHouse on your K8s infrastructure

  • https://t.me/clickhouse_ru
    ну, простой ответ
    весовых оптимизаторов в clickhouse нет

    есть некоторые AST оптимизации
    в частности push down where в каких то случаях
    но не много

    поэтому в 90% случаев проще считать "как запрос написали так его и будут исполнять"
    EXPLAIN SYNTAX
    посмотрите
  • здесь часто пишут с проблемой что условия не прокидываются внутрь и запросы с view работают медленее
  • https://t.me/clickhouse_ru
    спасибо, ознакомлюсь
  • https://t.me/clickhouse_ru
    Спасибо большое)
  • https://t.me/clickhouse_ru
    И вам спасибо)
  • @792294332 #236397 12:01 PM, 28 Sep 2021
    Подскажите
    insert into metrics values (toDateTime(now()),('route_Dacha_Work'),(toUInt64('70000'))
    получаю DB::Exception: Cannot parse expression of type UInt64 here: (toUInt64('70000'))
  • https://t.me/clickhouse_ru
    а сколько полей у вас в metrics? 3 или одно?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236368 #236399 12:20 PM, 28 Sep 2021
    источник настроить не проблема - insert into table select * from url/mysql/pg/s3
    другое дело, что 50 таблиц - уже кучка и вам скорее всего нужно реализовывать полноценный ETL процесс (или ELT) Кафка не совсем подходящий инструмент для этой цели (она может быть только частью). Можете посмотреть в сторону airflow или DBT
  • На данный момент использую airbyte, но он ещё сильно молодой, много нужного нет, приходится дописывать.
    Просто стало интересно насчет кафки узнать, также читал про её интеграцию с camel
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236400 #236401 12:28 PM, 28 Sep 2021
    если он вас устраивает по входам и трансформациям, то направляйте его выход в кафку, а из нее вычитывайте прямо в КХ - https://clickhouse.com/docs/en/engines/table-engines/integrations/kafka/
    Kafka | ClickHouse Documentation

    Kafka This engine works with Apache Kafka. Kafka lets you: Publish or subscribe to data flows. Organize fault-tolerant s

  • А в кафке есть система веб-хуков? Например я лью туда данные, и по завершению джоба, мне нужен ответ, что и куда перешло
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236402 #236403 12:32 PM, 28 Sep 2021
    тут группа не про кафку. в интернете есть миллион статей про нее. самое время найти что-то на каком-нибудь медиуме и прочитать.
  • Хорошо, спасибо за ответы!
  • https://t.me/clickhouse_ru
    pro.kafka

    Чат для добросовестных господ и дам, посвящённый Apache Kafka. Без флуда, оскорблений, оффтопа и токсичного поведения. Спам? Зови @gamussa или @dmitvitalii Канал по Kafka: @AwesomeKafka_ru Вакансии с Kafka: @kafka_jobs Соседи: @jvmchat, @proKong_ru

  • Спасибо!
  • 3
  • https://t.me/clickhouse_ru
    тогда у вас какая то чепуха написана в запросе и слишком много скобочек, вы tuple как то умудряетесь вставлять
    insert into metrics values ( toDateTime(now() ,'route_Dacha_Work', toUInt64('70000') )
    вот так должно сработать
  • Спасибо прокали
    Скобочки брал из примера
    echo 'INSERT INTO t VALUES (1),(2),(3)' | curl 'http://localhost:8123/' --data-binary @-
  • https://t.me/clickhouse_ru
    @ptylopsis #236411 01:01 PM, 28 Sep 2021
    Добрый день, сталкивался ли кто нибудь с подобной проблемой при восстановлении бекапа утилитой clickhouse-backup?
    Хотел при помощи неё мигрировать clickhouse с одной машины на другую, сделал бекап утилитой, перекинул на новую машину, запускаю восстановление:

    clickhouse-backup restore '2021-09-23T08-52-29' --table=a.*
    Create table `a`.`ab`
    Prepare data for restoring `a`.`ab`
    ALTER TABLE `a`.`ab` ATTACH PART '1629099846_440_440_0'
    can't attach partitions for table 'a.ab' with code: 233, message: Detached part "1629099846_440_440_0" not found

    При этом данные в /var/lib/clickhouse/data/a/ab/detached присутствуют.
  • https://t.me/clickhouse_ru
    в примере вставляется три строки а не одна
  • https://t.me/clickhouse_ru
    system.disks на новом сервере и на старом сервере совпадают?
  • Спасибо, не обратил внимание на CREATE
  • https://t.me/clickhouse_ru
    а как именно бекапы перекидывали?

    через rsync папки /var/lib/clickhouse/backups ? или как то по другому?
  • https://t.me/clickhouse_ru
    @DimaVav #236417 01:15 PM, 28 Sep 2021
    Подскажите, пожалуйста, почему получаю результат формата String при выполнении функции countIf?
    Шаги:
    1. Иду в консоль и выполняю команду с запросом к нашему кликхаусу:
    "clickhouse-client --host (наш хост) --port 9440 --user stat --database stat --password (пароль от нашего кликхауса) --queries-file tmp.txt --secure"
    В файле tmp.txt лежит следующий текст с кверёй:
    "SELECT
    countIf(event_name=='impression') as impressions,
    CAST(countIf(event_name=='impression') AS Int32) AS impressions2
    FROM
    events
    WHERE
    toDate(receive_timestamp, 'Europe/Moscow') = toDate(now('Europe/Moscow')) - 1
    format JSONEachRow
    ;"
    Получаю результат:
    {"impressions":"1123","impressions2":1123}
    Видно, что impressions - строка, хотя она посчитана по функции countIf. Почему так?
  • https://t.me/clickhouse_ru
    потому что так JSON сериализует
    https://clickhouse.com/docs/en/operations/settings/settings/#session_settings-output_format_json_quote_64bit_integers
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @BloodJazMan #236423 01:19 PM, 28 Sep 2021
    лучше не меняйте это поведение, если у вас на приемнике нет библиотеки которая нормально умеет в int64
  • https://t.me/clickhouse_ru
    Да, через rsync backups директории. По поводу конфигураций, на старом и новом сервере они идентичны вплоть до дисков, как для самого clickhouse, так и утилиты. Сервера-близнецы, за исключением имени хоста и айпи
  • https://t.me/clickhouse_ru
    О, спасибо! А можешь подсказать, как это в итоге залить на YT со строгой схемой? Задача именно в этом.
    Нужно в квере написать формат TabSeparated + при создании таблицы написать " --attributes '{schema = [{name = ...; type = int32}]}'" + при заливке таблицы: "--format "<columns=[...]>schemaful_dsv"
    Или ещё что-то нужно? Просто таким способом не получилось залить, получаю ошибку, что получен тип строка, хотя ожидается int32.
  • https://t.me/clickhouse_ru
    @GorbunovIgor #236426 01:23 PM, 28 Sep 2021
    Joined.
  • https://t.me/clickhouse_ru
    И на YT нужно, чтобы был правильный тип (int32), а не строка
  • https://t.me/clickhouse_ru
    Или это уже не к вам?
  • https://t.me/clickhouse_ru
    понятия не имею 😉
  • https://t.me/clickhouse_ru
    если дисков несколько то надо со всех дисков папку backups тащить
  • https://t.me/clickhouse_ru
    Окей, спасибо
  • @BBRSOFF #236432 02:01 PM, 28 Sep 2021
    Всех приветствую! Подскажите, после обновления КХ с 18.6 до 21.8, обнаружил что в запросе select * from distributed_table final where ... табличка с ReplicatedReplacingMergeTree отдаёт две одинаковые строки. 2 шарда по 2 реплики. Строки по одной в каждом шарде. Появились какие то настройки дедупликации между шардами или что то пошло не так?
  • @BBRSOFF #236433 02:18 PM, 28 Sep 2021
    Так, продолжаю рассуждать сам с собой: А как одинаковые строки могли попасть на разные шарды? Не может ли быть у них разный результат выражения шардирования
  • думаю это ваша главная проблема, ключ не rand() у вас в Distributed?
  • @BBRSOFF #236435 02:20 PM, 28 Sep 2021
    нет, cityHash64 от некоторых столбцов
  • @BBRSOFF #236436 02:23 PM, 28 Sep 2021
    Действительно, cityHash64 у них одинаковый
  • магия) вставка только через Distributed? вручную на шарды не пишете?
  • только через Distributed
  • https://t.me/clickhouse_ru
    как обновлялись? Вставка этих строк в момент апгрейда / ребута была?

    на самом деле ведь Distributed это не гарантирует, конфиг бы увидеть -- remote_servers.
    В зависимости от конфига, например весов, рассчитывается в какой шард вставлять
  • Обновлялись apt-get install,нагрузку не снимали. Дупликат появился через 2 недели после апдейта. Веса 1:1
  • https://t.me/clickhouse_ru
    ОК.
    Т.е. вы хотите сказать, что 21.8 Distributed таблица вставила не в тот шард?
    При этом в этот момент remote_servers никак не менялся.
    Баг тогда
  • @BBRSOFF #236442 02:35 PM, 28 Sep 2021
    Окей, спасибо, буду наблюдать
  • https://t.me/clickhouse_ru
    @1516245565 #236443 03:17 PM, 28 Sep 2021
    Привет! Есть ли какая то информация о том, почему разные malware и tracker блокеры помечают clickhouse.com как подозрительный и блокируют доступ к нему? Проверено на нескольких подобных блокерах, использующих доступные базы с «плохими» доменами.
  • https://t.me/clickhouse_ru
    @1516245565 #236444 03:18 PM, 28 Sep 2021
    Если известно о такой проблеме - ведётся ли работа по разблокировке. Очень неудобно когда постоянно блочит этот домен.
  • https://t.me/clickhouse_ru
    @dbalashov #236445 03:20 PM, 28 Sep 2021
    вот прямо щас вставляется по 10-30К записей в секунду в Clickhouse в табличку с типом MergeTree, эфпячу select * from system.merges но там всё время пусто, так и должно быть?
  • https://t.me/clickhouse_ru
    посмотри system.merge_log
  • https://t.me/clickhouse_ru
    @dbalashov #236447 03:24 PM, 28 Sep 2021
    ээ нет такой!
  • https://t.me/clickhouse_ru
    @nyoroon #236448 03:25 PM, 28 Sep 2021
    я вруша, system.part_log
  • https://t.me/clickhouse_ru
    @dbalashov #236449 03:25 PM, 28 Sep 2021
    версия 21.9.4.35
  • https://t.me/clickhouse_ru
    @dbalashov #236450 03:26 PM, 28 Sep 2021
    и такой тоже нет :(
  • https://t.me/clickhouse_ru
    @dbalashov #236451 03:26 PM, 28 Sep 2021
    есть system.parts но там явно все парты вообще. Я уже вроде все системные пересмотрел
  • https://t.me/clickhouse_ru
    @romul87 #236452 03:26 PM, 28 Sep 2021
    Всем, привет!
    Появилась необходимость уменьшить TTL у тяжелой таблицы, заодно хотелось посмотреть как отработает удаление старых данных. Вчера сделал alter table on cluster name MODIFY TTL. Самое собой запрос сказал, что превышен timeout. Проверил zk в ddl задачка висит, TTL в таблицах поменялась, мутация появилась. Прошел день смотрю мутация все висит, мерджей дополнительных не вижу, в zk задача так же висит, а место не освободилось, старые данные так же спокойно живут. Так как чистить нужно было срочно, кильнул мутацию(попытался), в итоге перезапустил кластер и тогда только смогу убить данную мутацию, удалил drop данные и оставил не пару дней для проверки TTL. Как теперь запустить принудительно TTL, через optimiz final ? Как можно было сделать alter ttl, чтобы не пришлось плясать с бубном?
  • https://t.me/clickhouse_ru
    Server Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @dbalashov #236454 03:28 PM, 28 Sep 2021
    блин щас не могу :( у меня процесс тут идёт долгоиграющий
  • https://t.me/clickhouse_ru
    можешь тогда посмотреть в системном логе
  • https://t.me/clickhouse_ru
    в uBlock Origin вроде уже убрали

    домен старый с 1999 года, там чего только на нем наверное не было

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

    select database, table, partition, count() cnt from system.parts
    where active
    group by database, table, partition
    order by cnt desc
    limit 10
  • https://t.me/clickhouse_ru
    там была рекламная сеть 10 лет назад
  • https://t.me/clickhouse_ru
    set materialize_ttl_after_modify=0;
    ALTER TABLE table modify TTL ttl_date

    -- then if you need MATERIALIZE TTL
    ALTER table ... MATERIALIZE TTL in partition ...
    ALTER table ... MATERIALIZE TTL in partition ...
  • @milovidov_an #236460 03:47 PM, 28 Sep 2021
    Мы планируем провести офлайн митап. Будем рады вам не только как гостям, но и как спикерам мероприятия!
    Call for papers ClickHouse meet up открыт!
  • None
  • @milovidov_an #236462 03:48 PM, 28 Sep 2021
    Митап в Москве.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Блин я уже запустил optimize 😩 На сколько это плохо? А что значит MATERIALIZE TTL ?
  • @milovidov_an #236465 03:49 PM, 28 Sep 2021
    Пока регистрации ещё нет, выбираем дату и темы.
  • https://t.me/clickhouse_ru
    >лин я уже запустил optimize 😩 На сколько это плохо?
    ну по всякому бывает, если таблица 2 петабайта, то вас уволят я думаю, ну или закопают.

    >А что значит MATERIALIZE TTL
    ну это в доку.
  • https://t.me/clickhouse_ru
    блин, заметил что я слишком крупные парты сделал :(
  • https://t.me/clickhouse_ru
    @den_crane #236468 03:52 PM, 28 Sep 2021
    >Митап в Москве.
    беда, кончилось онлайн счастье, больше пандемий, мне понравилось
  • https://t.me/clickhouse_ru
    С соблюдением ковидных ограничений и трансляцией
  • https://t.me/clickhouse_ru
    Какой кончилось, чот рано победу отмечать %)
  • https://t.me/clickhouse_ru
    ну говорят же, "Митап в Москве."
    а год назад был в интернете, а не в М
  • https://t.me/clickhouse_ru
    12 Tб :). Вот теперь понять сколько это будет работать по времени и нельзя ли это как то остановить
  • https://t.me/clickhouse_ru
    и как запустили? optimize table T final ?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    соболезную вам и вашей семье.
  • https://t.me/clickhouse_ru
    @den_crane #236476 03:58 PM, 28 Sep 2021
    таблица Replicated ?
  • https://t.me/clickhouse_ru
    @romul87 #236477 03:58 PM, 28 Sep 2021
    да
  • https://t.me/clickhouse_ru
    Это пугает :(
  • https://t.me/clickhouse_ru
    select table, elapsed*(1/progress)-elapsed estimate,elapsed, progress, is_mutation,formatReadableSize(total_size_bytes_compressed) size, formatReadableSize(memory_usage) mem
    from system.merges order by progress desc
  • https://t.me/clickhouse_ru
    @decembrin #236480 04:00 PM, 28 Sep 2021
    Доброго времени суток. Очень странная ситуация, не знаю как ее понимать. Выполняю запрос локально CH в докере, и на сервере. Данные 1 в 1, но на выходе получаю что на сервере половина данных задваивает значение, на локалке такого нет, считает ровно
  • https://t.me/clickhouse_ru
    2 реплики на сервере?

    покажите select * from system.clusters where cluster not like 'test%'
  • https://t.me/clickhouse_ru
    Да наверн будут или записи, или гибрид :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ОК. Я пошутил. Выступать я точно не собирался, хотя наверное надо бы про uniq + MV + проекции рассказать, а то запарился одно и тоже объяснять.
  • https://t.me/clickhouse_ru
    А в kb.altinity не писал?
  • https://t.me/clickhouse_ru
    сделал
    Вижу 9 записей.
    для примера
    name1 estimate 1501 elapsed 11601 progress 0.8512345687 is_mutation 0
  • https://t.me/clickhouse_ru
    я просил вывод, а не пример, сколько самый большой estimate ?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    хз тогда
  • https://t.me/clickhouse_ru
    Выставление max_parallel_replicas в 1 может изменить что-то?
  • https://t.me/clickhouse_ru
    вывод не могу скинуть :(. самый большой 16500
  • https://t.me/clickhouse_ru
    так у вас 1 сервер, я при чем тут это
  • https://t.me/clickhouse_ru
    Может запрос показать? Может я что-то не вижу
  • https://t.me/clickhouse_ru
    т.е. 5 часов, ну терпимо видимо, наверное повезло и свободного места не хватило все 12TB final помержить
  • https://t.me/clickhouse_ru
    То есть еще приблизительно пять часов будет мерджить? И данная операция вообще не обратима ?
  • https://t.me/clickhouse_ru
    >То есть еще приблизительно пять часов будет мерджить
    скорее всего, если я правильно поделил 16500/3600

    >И данная операция вообще не обратима ?
    неофициально обратима, но вам нельзя, сломаете нахрен себе таблицу, ждите
  • @mef13 ↶ Reply to #236281 #236500 04:23 PM, 28 Sep 2021
    после установки max_bytes_before_external_group_by = 1 000 000 000. запрос дошёл до 99%, потом лег с
    Progress: 1.35 billion rows, 46.48 GB (1.25 million rows/s., 43.04 MB/s.) █████████████████████████████████████████████████████████████████████████████████ 99%
    0 rows in set. Elapsed: 1160.696 sec. Processed 1.35 billion rows, 46.48 GB (1.16 million rows/s., 40.05 MB/s.)

    Received exception from server (version 21.9.3):
    Code: 241. DB::Exception: . DB::Exception: Memory limit (total) exceeded: would use 4.86 GiB (attempt to allocate chunk of 400050176
    bytes), maximum: 4.66 GiB. (MEMORY_LIMIT_EXCEEDED)
  • https://t.me/clickhouse_ru
    @Luck1ess #236501 04:24 PM, 28 Sep 2021
    Всем привет, а как так может получиться, что я имею два столбца c1, c2, делаю select c1, uniq(c2) as count_1, count(*) as count_2 group by c1 и получаю разницу в каунтах, при том, что c1, c2 уникальные пары, проверяется спарком перед вставкой
  • https://t.me/clickhouse_ru
    Возможно, вам нужен uniqExact
  • https://t.me/clickhouse_ru
    Его очень больно использовать(
  • https://t.me/clickhouse_ru
    Другой вопрос, в документации везде указано об оптимизации запросов на группировки, однако при запросе к таблице в 60гб при том что c1 колонка сортировки используется 20гб памяти с обычным uniq, как это можно еще пооптимизировать?
  • https://t.me/clickhouse_ru
    Ну так а uniq не гарантирует точного числа.
  • https://t.me/clickhouse_ru
    ну, если я правильно понимаю count(*) тоже не гаранитирует, хочется понять в чем разница при группировке
  • https://t.me/clickhouse_ru
    тк по памяти разница в 40 раз
  • Хорошему материалу, как ваша презентация по MV, мы все будем очень рады.
  • https://t.me/clickhouse_ru
    Думаю, count гарантирует
    Разница между uniq и uniqExact в том, что второй натуральным образом тащит полный сет всевозможных значений.
    Тогда как uniq может считать хэши , например
  • https://t.me/clickhouse_ru
    uniq | Документация ClickHouse

    uniq Приближённо вычисляет количество различных значений аргумента. uniq(x[, ...]) Аргументы Функция принимает переменно

  • https://t.me/clickhouse_ru
    Спасибо за помощь!
  • https://t.me/clickhouse_ru
    я к тому, что count(*) использует гораздо меньше памяти, поэтому вряд ли тащит все
  • https://t.me/clickhouse_ru
    каунту не нужно держать в памяти все строки чтобы их посчитать, ему достаточно делать инкремент в потоке. унику - требуется
  • https://t.me/clickhouse_ru
    понял, спасибо!
  • https://t.me/clickhouse_ru
    @zeeflu #236517 05:24 PM, 28 Sep 2021
    Привет! Подскажите, пожалуйста, как можно результат селекта положить в переменную? Нужно что-то вроде
    $a = (SELECT ... FROM ...);
    SELECT ... FROM $a;
  • https://t.me/clickhouse_ru
    в общем случае так нельзя
  • https://t.me/clickhouse_ru
    With x as (Select) select * from x
  • https://t.me/clickhouse_ru
    WITH (SELECT * FROM numbers(10)) AS nmbrs SELECT * FROM nmbrs

    Code: 60, e.displayText() = DB::Exception: Table datasets.nmbrs doesn't exist (version 21.8.6.15 (official build))
  • https://t.me/clickhouse_ru
    @nyoroon #236521 05:31 PM, 28 Sep 2021
    а, так ок:
    WITH nmbrs AS (SELECT * FROM numbers(10)) SELECT * FROM nmbrs
  • https://t.me/clickhouse_ru
    @nyoroon #236522 05:31 PM, 28 Sep 2021
    🤔
  • https://t.me/clickhouse_ru
    Наоборот

    WITH nmbrs as (SELECT * FROM numbers(10)) SELECT * FROM nmbrs
  • https://t.me/clickhouse_ru
    Разные виды кте, первый возвращает скаляр, второй возвращает таблицц
  • https://t.me/clickhouse_ru
    это какой-то новый синтаксис?
  • https://t.me/clickhouse_ru
    Ну с 20.10-11 доступен
  • а оно результат вычисляет 1 раз или будет перечитывать если в несколькиз местах вызвать?
  • https://t.me/clickhouse_ru
    @zeeflu ↶ Reply to #236527 #236528 05:37 PM, 28 Sep 2021
    если 1 раз, то это прям то, что нужно
  • https://t.me/clickhouse_ru
    @unamedrus #236529 05:39 PM, 28 Sep 2021
    Если возвращает скаляр, то один раз, если возвращает таблицу то каждый раз пересчитывает
  • https://t.me/clickhouse_ru
    @zeeflu #236530 05:46 PM, 28 Sep 2021
    окей, спасибо
  • https://t.me/clickhouse_ru
    @unamedrus #236531 05:47 PM, 28 Sep 2021
    Для одного раза, можно попытаться упихнуть результат в скаляр из массива таплов.

    Но это сработает только для небольших сетов
  • https://t.me/clickhouse_ru
    @ValarMorghuliis #236532 06:28 PM, 28 Sep 2021
    Привет всем, а кто-нибудь использует оператор k8s от альтинити в проде? https://github.com/Altinity/clickhouse-operator
    GitHub - Altinity/clickhouse-operator: The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes

    The ClickHouse Operator creates, configures and manages ClickHouse clusters running on Kubernetes - GitHub - Altinity/clickhouse-operator: The ClickHouse Operator creates, configures and manages Cl...

  • https://t.me/clickhouse_ru
    тысячи инсталляций по миру.

    И Альтинити клиенты используют и Alitinity Cloud весь на нем
  • https://t.me/clickhouse_ru
    @ikkalinkin #236534 07:00 PM, 28 Sep 2021
    Привет, подскажите, есть таблица с колонками: дата, идентификатор пользователя. Как ее положить в КХ так, чтобы оптимизировать запросы на подсчет числа уников по дням? Я попробовал сделать таблицу с партицией по дням, ключом (дата, идентификатор), потом надстроил распределенную таблицу с датой в ключе шардирования, вот код: https://pastebin.com/TRX9qjrN

    Заполнил случайными 20млн строками, при запросе https://pastebin.com/5R0iQpZS отрабатывает за 0.569 сек, а на отдельном хосте за 0.034 сек. Почему такая разница? Есть ощущение, что КХ не использует знание того, что можно параллельно все рассчитать и делает какую-то лишнюю работу. Если вместо uniqExact посчитать max, то на распределенной таблице отработает за 0.033 сек, на отдельном хосте за 0.014, тут похоже на то, что все оптимально

    Во время запросов не чистил кеш, как правильно это делать? Может ли он тут повлиять на скорость в случае max?
    DROP TABLE IF EXISTS fake_dayuse ON CLUSTER '{cluster}';CREATE TABLE fake_dayu - 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
    Я совсем не эксперт, но поч у вас нету ORDER BY?
  • https://t.me/clickhouse_ru
    @ikkalinkin #236536 07:07 PM, 28 Sep 2021
    вроде бы если primary key указать, то order by не обязательно
  • https://t.me/clickhouse_ru
    @ikkalinkin #236537 07:08 PM, 28 Sep 2021
    ну только в случае, если order by по ключу, у которого primary key является префиксом, то можно
  • https://t.me/clickhouse_ru
    Да, используем
  • https://t.me/clickhouse_ru
    если c2 - строки или другие жирные типы, может помочь uniq(cityHash64(c2)) или settings max_block_size=1024
  • https://t.me/clickhouse_ru
    нет, инты
  • https://t.me/clickhouse_ru
    uniqExact тянет весь Стейт уников на один хост. Возможно, такая "задержка" из за передачи по сети
  • https://t.me/clickhouse_ru
    спасибо! А нет идей как оптимизировать? чтобы не стейт тянулся, а конечный результат уже
  • https://t.me/clickhouse_ru
    Шардировать по колонке из юник стейта
  • https://t.me/clickhouse_ru
    То есть, в данном случае по device_id? А не по групбайному fielddate
  • https://t.me/clickhouse_ru
    Точно uniqExact нужен?
  • https://t.me/clickhouse_ru
    @ikkalinkin #236546 08:45 PM, 28 Sep 2021
    Да нет, но при uniq похожий тайминг вроде бы
  • 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 #236551 08:51 PM, 28 Sep 2021
    optimize_distributed_group_by_sharding_key

    И тд

    Если оно не умеет конкретно в юник, можно попробовать это обойти используя табличную функцию view
  • https://t.me/clickhouse_ru
    @ikkalinkin #236552 08:54 PM, 28 Sep 2021
    Спасибо, а можно подробнее про обход через view?
  • @simpl1g #236553 09:11 PM, 28 Sep 2021
    ещё смотрите
    --distributed_group_by_no_merge If 1, Do not merge aggregation states from different servers for distributed query processing - in case it is for certain that there are different keys on different shards. If 2 - same as 1 but also apply ORDER BY and LIMIT stages
  • https://t.me/clickhouse_ru
    @ikkalinkin #236554 09:12 PM, 28 Sep 2021
    ага, спасибо! тоже нашел, вот здесь: https://github.com/ClickHouse/ClickHouse/issues/17732, в итоге теперь вместо 0.569 за 0.038 считается!
    group by with high network traffic · Issue #17732 · ClickHouse/ClickHouse

    select brand_id, sum(engagement_new), count(1) from( select doc_id, brand_id, any(engagement_cnt) as engagement_new from metrics.dws_3_view group by doc_id, brand_id ) tmp group by brand_id table e...

  • https://t.me/clickhouse_ru
    не, там как раз самый большой пик с начала пандемии
    >Starship Captain
    с повышением, лол
  • @vvvjhaq #236556 10:14 PM, 28 Sep 2021
    Добрый вечер!
    Проблема следующая: иногда приходит очень много инсертов и в очереди репликации копятся примерно такие записи:
    Not executing log entry queue-0000071148 of type MERGE_PARTS for part 632801e1b685803d8904b35e30441476_1143_1525_261 because source parts size (4.29 MiB) is greater than the current maximum (1.00 MiB).
    Таких записей набивается пару тысяч на несколько десятков таблиц

    Одновременно с этим уходит оперативная память.
    system restart replica не помогает.
    system.merges содержит только query_threas_log.
    Дальше появляется too many parts
    Останавливаем запись, очередь тоже не уходит.
    Помогала только перезагрузка.
    По истории чата увидел max_bytes_to_merge_at_min_space_in_pool
    Если поднимем max_bytes_to_merge_at_min_space_in_pool это будет помогать мерджить?
    Дискового пространства свободно много.
  • https://t.me/clickhouse_ru
    я думаю проблема вообще не в этом.

    select version();

    SELECT
    name,
    value
    FROM system.settings
    WHERE name IN ('background_fetches_pool_size', 'background_schedule_pool_size', 'background_pool_size');
  • https://t.me/clickhouse_ru
    @den_crane #236558 10:45 PM, 28 Sep 2021
    background_fetches_pool_size = 8
    background_schedule_pool_size=128
    background_pool_size=16
  • 21.2.9.41

    background_pool_size,16
    background_fetches_pool_size,8
    background_schedule_pool_size,16
  • https://t.me/clickhouse_ru
    увеличивайте background_schedule_pool_size до 128 или 256
  • https://t.me/clickhouse_ru
    @den_crane #236561 10:46 PM, 28 Sep 2021
    у вас шедулер мержей не может назначить мержи потому что там странный алгоритм
  • https://t.me/clickhouse_ru
    @den_crane #236562 10:46 PM, 28 Sep 2021
    поэтому сейчас по дефолту = 128
  • на этой версии?
  • https://t.me/clickhouse_ru
    @den_crane #236564 10:47 PM, 28 Sep 2021
    недавно в одном сетапе коллеги ставили клиенту 1024, правда потом уменьшили
  • https://t.me/clickhouse_ru
    на всех версиях выше 20.12 или как то так
  • а есть где описание, что не так работает, или это данность?
    можете описать или ткните ссылкой, где почитать бы
  • https://t.me/clickhouse_ru
    нигде

    https://github.com/ClickHouse/ClickHouse/pull/25072/files
    Increase background schedule pool default size by alesapin · Pull Request #25072 · 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...

  • ок, подниму, завтра на нагрузке посмотрим как будет справляться.
    а смысла увеличивать max_bytes_to_merge_at_min_space_in_pool нет?
  • https://t.me/clickhouse_ru
    смысла нет, у вас место на диске есть свободное?
  • да, много
  • https://t.me/clickhouse_ru
    не надо трогать тогда max_bytes_to_merge_at_min_space_in_pool
  • ок, спс
    background_schedule_pool_size поднял до 128
  • https://t.me/clickhouse_ru
    рестарт нужен
  • а она уже changed
    или все равно нужно?
  • да, и еще, это сделать на всех репликах? У нас 4 реплики, в одну пишем.
  • https://t.me/clickhouse_ru
    рестарт нужен обязательно.
    128 надо на всех репликах
  • благодарю
  • не рестартовал еще
    постоянно сейчас в логи сыпется
    Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 32, e.displayText() = I/O error: Broken pipe, Stack trace

    Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 206, Stack trace

    Есть какие-то причины для этого?
  • https://t.me/clickhouse_ru
    скорее всего это просто клиент отваливает не дождавшись результата селекта или инсерта
  • 29 September 2021 (243 messages)
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/ru/operations/settings/settings/#enable-optimize-predicate-expression, Нашел что прокидываются. Да и план в итоге показал что прокидывает оптимизатор условия в подзапрос.
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @siaopin #236584 06:24 AM, 29 Sep 2021
    Коллеги, доброе утро! после обновления КХ, похоже побился secondary index:

    ClickHouse exception, message: std::exception. Code: 1001, type: std::__1::__fs::filesystem::filesystem_error, e.what() = filesystem error: in file_size: No such file or directory [/var/lib/clickhouse/store/76e/76eb3696-9266-40e8-9e44-c44721b15a08/20050316_0_0_0/skp_idx_ev_code_idx.mrk

    Не подскажите, что с этим делать?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236584 #236586 06:47 AM, 29 Sep 2021
    первое что просится (самое очевидное) - удалить и создать заново. Вас что-то останавливает в этом пути?
  • https://t.me/clickhouse_ru
    Индекс не удаляется
  • https://t.me/clickhouse_ru
    @siaopin #236588 06:58 AM, 29 Sep 2021
    Пробовал
  • https://t.me/clickhouse_ru
    @svisvisvi #236589 07:05 AM, 29 Sep 2021
    Всем привет, подскажите плс. Если не указывать ON cluster ...cluster в данном случае запрос будет применим автоматически ко всем кластерам?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236589 #236591 07:10 AM, 29 Sep 2021
    нет. запрос будет отработан только на этом сервере. Если указать какой-то кластер, то этот же запрос отправится на все узлы данного кластера и выполнится там тоже. Это просто такой прокси.
  • https://t.me/clickhouse_ru
    @cocainefornina #236592 07:10 AM, 29 Sep 2021
    подскажите, как такое сделать в запросе кликхауса - groupby('following_id').agg({'text': ', '.join}).reset_index()
  • https://t.me/clickhouse_ru
    @cocainefornina #236593 07:11 AM, 29 Sep 2021
    following_id и text - поля в БД
  • https://t.me/clickhouse_ru
    @hostadminonline #236594 07:17 AM, 29 Sep 2021
    всем привет
    подскажите плз, делалось много инсертов пачками, на кадый инсерт получили ответ 200 .... данных не в одной реплике нету .... куда смотреть ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236592 #236595 07:28 AM, 29 Sep 2021
    select arrayStringConcat(groupArray(text),',') from table group by following_id;
  • @konstantin_mitjurin #236596 07:49 AM, 29 Sep 2021
    всем привет, наткнулись на странное поведение при выборке данных из таблицы
  • @konstantin_mitjurin #236597 07:50 AM, 29 Sep 2021
    есть 2 поля, одно типа Date, второе uint8 в который пишеться час события
  • @konstantin_mitjurin #236598 07:50 AM, 29 Sep 2021
    WHERE (date >= '2021-09-19' and hour >= 17) AND ( date <= '2021-09-26' and hour <= 16)
  • @konstantin_mitjurin #236599 07:51 AM, 29 Sep 2021
    возвращает 0 записей
  • @konstantin_mitjurin #236600 07:51 AM, 29 Sep 2021
    а по факту они там есть
  • https://t.me/clickhouse_ru
    Если что тут помог OPTIMIZE <table> FINAL
  • hour >= 17 and hour <=16 какое число подходит?
  • @konstantin_mitjurin #236604 07:53 AM, 29 Sep 2021
    там условия заключены в отдельные скобки
  • @aopetrov86 #236605 07:53 AM, 29 Sep 2021
    Скобки ни чего не значат
  • @catebread #236606 07:53 AM, 29 Sep 2021
    блин, даже я не допёр, что в этом подвох)
  • @konstantin_mitjurin #236607 07:53 AM, 29 Sep 2021
    в смысле?
  • так там же and
  • @konstantin_mitjurin #236609 07:54 AM, 29 Sep 2021
    ну, то-есть строка в которой дата 2021-09-24, 10 должна попасть под оба условия
  • @catebread #236610 07:55 AM, 29 Sep 2021
    у вас получается условие hour меньше 16 и больше 17
    под такое условие ничего не подойдет
  • @konstantin_mitjurin #236611 07:55 AM, 29 Sep 2021
    но час используется совместно с датой
  • https://t.me/clickhouse_ru
    WHERE (date = '2021-09-19' and hour >= 17)
    or (date > '2021-09-19' and date < '2021-09-26')
    or ( date = '2021-09-26' and hour <= 16)

    по идее нужно так
  • https://t.me/clickhouse_ru
    @bvt123 #236613 07:56 AM, 29 Sep 2021
    WHERE date between '2021-09-19' and '2021-09-26' and not hour between 16 and 17
  • ну тогда он срежет всё кроме с 4 до 5 в остальные дни,
    а тут похоже немного по-другому подразумевается
  • вроде похоже на правду :)
  • @konstantin_mitjurin #236616 07:59 AM, 29 Sep 2021
    странная логика
  • Она не попадает под первое т.к. час меньше 17
  • @konstantin_mitjurin #236618 08:00 AM, 29 Sep 2021
    запустил в консоли запрос и понял почему пустота
  • @konstantin_mitjurin #236619 08:00 AM, 29 Sep 2021
    ((date >= '2021-09-19') AND (hour >= 17)) AND ((date <= '2021-09-26') AND (hour <= 16))
  • @konstantin_mitjurin #236620 08:00 AM, 29 Sep 2021
    он выделяет час в отдельные скобки
  • @simpl1g #236621 08:00 AM, 29 Sep 2021
    Скобки ничего не значат с And
  • @catebread #236622 08:00 AM, 29 Sep 2021
    да тут когда AND хоть ставь скобки - хоть нет
  • @konstantin_mitjurin #236623 08:00 AM, 29 Sep 2021
    бред бредовый...
  • @catebread #236624 08:01 AM, 29 Sep 2021
    это же булева алгебра (если я правильно умничаю)
  • @aopetrov86 #236625 08:01 AM, 29 Sep 2021
    Отрицание
  • @konstantin_mitjurin #236626 08:01 AM, 29 Sep 2021
    то-есть комбинированые условия не прокатывают
  • о_О
    обычный sql...
  • @aopetrov86 #236628 08:01 AM, 29 Sep 2021
    Сколько стадий принятия основных постулатов алгебры кто знает?
  • @catebread #236629 08:01 AM, 29 Sep 2021
    аххахах
  • https://t.me/clickhouse_ru
    дело не в скобках, дело в том, что выражение where применяется к строке целиком. если в выражении есть только and, то скобки можно полностью опускать.
  • депрессия ещё будет точно
  • спасибо
  • https://t.me/clickhouse_ru
    @brbrbr #236633 08:22 AM, 29 Sep 2021
    Есть кластер из двух серверов, на котором была развёрнута ReplicatedMT таблица. Удаляю её с помощью delete table on cluster - на одном сервере удаляется, а на втором получаю ошибку Table was not dropped because ZooKeeper session has expired. (version 20.8.3.18 (official build)).
    Пробую удалить её обычным delete table на втором сервере - та же ошибка.
    Пробовал пересоздавать и заново удалять - ничего не помогает.

    Соответственно, вопросы:
    1. Как её удалить со второго сервера?
    2. С чем может быть связана ошибка и как её вылечить?
  • https://t.me/clickhouse_ru
    @mib32 #236635 08:56 AM, 29 Sep 2021
    Появляются ошибки net read timeout при выполнении запросов (из руби)... редко и случайно. почему так может быть
  • https://t.me/clickhouse_ru
    @724279396 #236636 09:13 AM, 29 Sep 2021
    Ребят, кто знает, как создать новую таблицу на основе запроса? чтобы структура полностью осталась той же, только поставить фильтр на дату

    по типу
    CREATE TABLE AS (
    SELECT * FROM t1 where date>'2021-06-06')
  • https://t.me/clickhouse_ru
    Это разные операции же
    1. Создание таблицы (например create table t like t2...)
    2. Переливание данных
  • в клиенте таймаут меньше чем выполняется ваш запрос
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236636 #236640 09:21 AM, 29 Sep 2021
    а вместе это называется materialized view populate
  • Таблица | Документация ClickHouse

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

  • а если просто данные перелить надо в другую таблицу, зачем view?
  • https://t.me/clickhouse_ru
    Как тогда сделать 1 пункт с like?
  • https://t.me/clickhouse_ru
    Понял через AS :
    create table1 as table2
  • https://t.me/clickhouse_ru
    ага, не like, я ошибся
  • https://t.me/clickhouse_ru
    @RecycleSup #236646 09:45 AM, 29 Sep 2021
    Коллеги, достался проект от старых разработчиков. Столкнулись с проблемой, что отвалился шард КХ
  • https://t.me/clickhouse_ru
    @RecycleSup #236647 09:45 AM, 29 Sep 2021
    SELECT *
    FROM system.clusters

    ┌─cluster─────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name──┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
    │ new_cluster │ 1 │ 1 │ 1 │ 10.2.81.69 │ 10.2.81.69 │ 9000 │ 1 │ default │ │ 0 │ 0 │
    │ new_cluster │ 2 │ 1 │ 1 │ 10.2.81.76 │ 10.2.81.76 │ 9000 │ 0 │ default │ │ 0 │ 0 │
    │ new_cluster │ 3 │ 1 │ 1 │ 10.2.81.77 │ 10.2.81.77 │ 9000 │ 0 │ default │ │ 0 │ 0 │
    │ new_cluster │ 4 │ 1 │ 1 │ 10.2.81.81 │ 10.2.81.81 │ 9000 │ 0 │ default │ │ 0 │ 0 │
    │ new_cluster │ 5 │ 1 │ 1 │ 10.2.81.87 │ 10.2.81.87 │ 9000 │ 0 │ default │ │ 0 │ 0 │
    │ new_cluster │ 6 │ 1 │ 1 │ 10.2.81.88 │ 10.2.81.88 │ 9000 │ 0 │ default │ │ 0 │ 0 │
    │ new_cluster │ 7 │ 1 │ 1 │ 10.2.81.89 │ 10.2.81.89 │ 9000 │ 0 │ default │ │ 0 │ 0 │
  • https://t.me/clickhouse_ru
    @RecycleSup #236648 09:46 AM, 29 Sep 2021
    подключаюсь к нему через clickhouse-client --host 10.2.81.89, на SELECT 1 не приходит ответ
  • @742006884 #236649 09:46 AM, 29 Sep 2021
    Привет, я получил такую ошибку, нечего не помагало
    The local set of parts of table comment_by_user_and_post doesn't look like th
    e set of parts in ZooKeeper: 542.00 rows of 542.00 total rows in filesystem are suspicious. There are 300 unexpected parts with 542 rows

    После того как я удалил данные реплики из Zookeeper все заработало, но данние в Zookeeper не поивилис
  • https://t.me/clickhouse_ru
    В какую сторону копать что бы перезагрузить шард/понять что с ним случилось?
  • @LetsGoFast #236653 09:53 AM, 29 Sep 2021
    Привет, друзья!
    А как вытащить колонки второго select чтобы в итоговом результате были и они? В итоге нужно получить данные по id, date, name, value

    SELECT
    id, date
    FROM some
    WHERE id IN(
    SELECT
    id, name, value
    FROM test
    )
  • использовать JOIN вместо IN
  • Но нужно сделать выборку по таблице some взяв найденные id из запроса по таблице test
  • INNER JOIN именно так и работает
  • @LetsGoFast #236657 10:00 AM, 29 Sep 2021
    👍🤣
  • https://t.me/clickhouse_ru
    @orx4n #236658 10:03 AM, 29 Sep 2021
    Здравствуйте коллеги !
    Возникла проблема при переходе с 20 в 21-ую версию.
    Clickhouse у меня деплоен внутри кубернетса(kubernetes cluster) с 4 нодами. Есть соответственно 4 шардов clickhouse а .
    У всех почти то же самое количество данных в базе данных. Но только один из шардов использует очень много диска и много памяти. не могу найти проблему.

    Clickhouse version: 21.7.11.3
  • https://t.me/clickhouse_ru
    @cocainefornina #236662 10:21 AM, 29 Sep 2021
    как определить ключ сортировки в кх?
  • show create table <название таблицы>, там будет ваш order by
  • https://t.me/clickhouse_ru
    спасибо!)
  • https://t.me/clickhouse_ru
    большое спасибо!
  • https://t.me/clickhouse_ru
    Optimize пробежался, но старые данные не почистил. Вашими командами прошел по партициям данные удалились, а вот сами партии не удалились и я вижу их в таблице parts. Причем по ним active 1. Так и должно быть ? Как теперь понять что TTL работает? Если у меня стоит неделя, то я вижу отработку TTL только через неделю по удалению данных которые прилетели после alter table TTL ?
  • Если сделать так, то кх ругается что ожидает в этом месте другие команды, включая IN.
    Может как-то по-другому?

    SELECT id, dt FROM values('id int8, dt int8', (1,1),(1,2),(1,3))
    WHERE id JOIN( SELECT id, nm
    FROM values('id int8, nm int8', (1,1),(1,2),(1,3))
    ))
  • 😐 может как-то по другому)

    https://clickhouse.com/docs/en/sql-reference/statements/select/join/
    JOIN | ClickHouse Documentation

    JOIN Clause Join produces a new table by combining columns from one or multiple tables by using values common to each. I

  • Я оттуда сюда и пришел😔Позорная дока для крупнейшего поисковика Рунета, в которой многие статьи оценены на кол или троечку, с отсутствием нормальных примеров.
  • https://t.me/clickhouse_ru
    Отличная дока, все что нужно есть. Даже много я б сказал.
  • https://t.me/clickhouse_ru
    @altlinux #236674 11:11 AM, 29 Sep 2021
    да, согласен - документация супер. Но какие-то вещи приходится выковыривать из issue github ;)
  • https://t.me/clickhouse_ru
    @dmitriynvkv #236675 11:12 AM, 29 Sep 2021
    Это добавляет пикатности, так что все хорошо.
  • https://t.me/clickhouse_ru
    @altlinux #236676 11:12 AM, 29 Sep 2021
    безусловно.
  • вроде как примеры есть

    SELECT id, dt, nm FROM values('id Int8, dt Int8', (1,1),(1,2),(1,3)) ANY INNER JOIN (SELECT id, nm FROM values('id Int8, nm Int8', (1,1),(1,2),(1,3))) USING id
  • @simpl1g #236678 11:14 AM, 29 Sep 2021
    всегда можно открыть пул реквест с изменениями)
  • Наверно вам не жаль времени на выковыривание банальных примеров по сайтам и чатам.

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

    А так да, спасибо царь что хоть что-то есть.
  • https://t.me/clickhouse_ru
    Дока, видимо, описывает механизмы и особенности КХ, а не основы языка SQL.

    Вы пишете
    SELECT ... WHERE id JOIN .....

    Очевидно не зная этих основ. Так с них и стоит начать.
  • @fdeh75 #236682 11:27 AM, 29 Sep 2021
    Всем привет!
    Подскажите, пожалуйста, лучшую практику для следующего случая использования:

    В таблице хранятся транзакции эфира, и есть задача получить одну транзакцию по хешу. На данный момент подрисовываю каждой транзакции дополнительный инкрементируемый Id по которому ведется сортировка и храню в сторонней таблице хеш транзакции и этот индекс с сортировкой по хешу. Запрос на транзакцию по хешу в итоге сводится к 2м запросам - получение Id по хешу и получение транзакции по id. Есть мысли вынести таблицу хеш -> id в другую базу, скорее key value, чтобы не грузить CH постоянной сортировкой.
  • https://t.me/clickhouse_ru
    @sibbarb #236683 11:30 AM, 29 Sep 2021
    Обнаружил, что у нас в БД есть дубли
    можно ли как-то без оконок взять последнее значение ?
  • У кх может быть любой собственный измененный синтаксис sql, и именно в доке должны быть банальные примеры. Например такой как мы сейчас обсуждаем.

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

    Хотя он молодец, хоть что-то дельное подсказал.
  • https://t.me/clickhouse_ru
    Писатели доки есть, и они пишут.

    Можете посмотреть по пр в гитхабе
  • https://t.me/clickhouse_ru
    @unamedrus #236686 11:34 AM, 29 Sep 2021
    И да это опен сорс, мы будем рады, если вы поможете нам сделать доку лучше.
  • https://t.me/clickhouse_ru
    он вам посоветовал заменить in на join. что вы это восприняли буквально - и есть следствие малого опыта в SQL
  • Ну тогда видимо плохо пишут, раз пользователи на кол и тройки оценивают.
  • https://t.me/clickhouse_ru
    зашел по ссылке: вижу описание синтаксиса, вижу "Example" для каждого раздела страницы
  • https://t.me/clickhouse_ru
    Оценки без комментариев или issue на гитхабе бессмысленны и бесполезны.
  • https://t.me/clickhouse_ru
    @unamedrus #236691 11:35 AM, 29 Sep 2021
    Я бы не стал на них обращать внимание
  • Не обращать внимание на пользователей, это так по-российски😭
  • https://t.me/clickhouse_ru
    @unamedrus #236693 11:37 AM, 29 Sep 2021
    И для практических примеров, есть наша кб кстати

    https://kb.altinity.com/
  • https://t.me/clickhouse_ru
    Вопрос не про пользователей, вопрос про то, к чему конкретно есть претензия, иначе это просто неконструктивно.
  • Не нашел ни одной страницы с оценкой ниже четырех?
  • https://t.me/clickhouse_ru
    Сорри я не готов с вами спорить) мне все нравится
  • zcat | pv -l | clickhouse-client
    прыгает от 3к до 8к
  • Вопрос как раз в том на кого ориентироваться, оценивая доку.
    Тех кто ее пишет или тех кто читает. Очевидно что пользователи часто не довольны.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236682 #236700 11:41 AM, 29 Sep 2021
    Лучшая практика - это использовать хеш в качестве первого ключа в order by, без порождения синтетических ключей и связанных с этим сложностей.
  • https://t.me/clickhouse_ru
    > Очевидно

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

    И только?

    А есть запросы вида, дай мне транзакции за этот промежуток времени или за этот блок?
  • Низкие оценки и есть следствие этих проблем. Писатели явно много чего не дописали, раз приходится искать информацию по другим сайтам.
  • https://t.me/clickhouse_ru
    Писатели работают и пишут доку.
    Вы всегда можете им помочь в их нелегком деле, это open source и бесплатный продукт.
  • Хеш - это же маскимальная кардиналость, использовать его первым ключом сортировки кажется же не очень хорошей идеей, нет?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #236684 #236706 11:45 AM, 29 Sep 2021
    Очень странный наезд на доку КХ, учитывая динамику развития самого КХ. Ну и причина в вашем случае очевидно не в доке.

    "Другой пользователь" посоветовал вам использовать другой механизм, а не заменить одно слово на другое. А если у вас имеется пробел в знаниях синтаксиса SELECT, то дока КХ и тут поможет - в разделе, посвящённом выражению SELECT, указано как пользоваться JOIN-ом.

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

    Но вас конечно тоже устраивает, что пользователи докой часто не довольны.
  • https://t.me/clickhouse_ru
    @unamedrus #236710 11:49 AM, 29 Sep 2021
    Для случая с эфиром я бы сделал так

    INDEX idx timestamp TYPE minmax GRANULARITY 10
    ORDER BY (block_id, transaction_hash)

    И либо сделал бы второй bloomfilter индекс на transaction_hash либо проекцию с SELECT block_id, transaction_hash ORDER BY transaction_hash и использовал бы ее как вторичный индекс
  • INSERT INTO SELECT еще хуже
    Progress: 282.17 thousand rows, 8.25 GB (2.07 thousand rows/s., 60.55 MB/s.)
  • 2021.09.29 14:51:35.185612 [ 23529 ] {} <Debug> db.test_sharded (MergerMutator): Merge sorted 59199 rows, containing 94 columns (94 merged, 0 gathered) in 27.390028777 sec., 2161.333983325738 rows/sec., 57.59 MiB/sec.
    2021.09.29 14:51:35.211291 [ 23529 ] {} <Debug> MemoryTracker: Peak memory usage: 326.33 MiB.

    Я так понимаю тут сам мердж тормозит.
  • https://t.me/clickhouse_ru
    а тестовая машина это какие диски?
    какой у вас размер записи распакованный примерно получается?
    просто 60Mb/s это прямо маловато
    даже если 100 колонок...
  • https://t.me/clickhouse_ru
    какой у вас ORDER BY? сколько у вас там колонок?
  • insert into select settings optimize_on_insert = 0 пробовали?
  • Ну это виртуалка, но на хостмашине типа SSD Data center edition в RAID10.
  • две, она из них date
  • У меня в 20.8.9 такого нет
  • И кстати, если попробовать код другого пользователя, что на ваш взгляд достаточно знает о sql, и ему помогает дока, то его код тоже не даёт того результата, что запрошено изначально.
    Колонка из нижней таблицы теряется.
    Ну где эффект от его более правилых знаний и доки?
    Так и у меня до вопроса здесь получалось!
  • Что у вас теряется?)
  • https://t.me/clickhouse_ru
    ну, остается только включить trace_log и воспрользоваться https://github.com/Slach/clickhouse-flamegraph
    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

  • https://t.me/clickhouse_ru
    @gorbonk #236722 12:16 PM, 29 Sep 2021
    Всем привет! Никак не могу понять, в чем может быть проблема? https://dpaste.org/ARLZ
  • @fdeh75 ↶ Reply to #236700 #236723 12:17 PM, 29 Sep 2021
    После каждого инсерта бд будет пересортировывать в фоне всю таблицу. Вынес в отдельную таблицу чтобы сортировалась небольшая таблица. Тут уместен вопрос: насколько дешевле отсортировать вот такую таблицу:
    create table transactionHashIndex
    (
    tx_hash FixedString(32),
    tx_id UInt64
    ) engine MergeTree()
    order by (tx_hash);

    чем вот такую
    CREATE TABLE transaction_model_test
    (
    id UInt64,
    tx_hash FixedString(32),
    value UInt256,
    nonce UInt64,
    blockHash FixedString(32),
    blockNumber UInt64,
    transactionIndex UInt64,
    from Nullable(FixedString(20)),
    to Nullable(FixedString(20)),
    time DateTime,
    gasPrice UInt256,
    gas UInt64,
    input String,
    networkId UInt16,
    INDEX tx_hash_index (tx_hash) TYPE set(0) GRANULARITY 1000,
    INDEX to_address_index (tx_hash) TYPE set(0) GRANULARITY 1000,
    INDEX from_address_index (tx_hash) TYPE set(0) GRANULARITY 1000
    ) engine MergeTree()
    ORDER BY (tx_hash )
  • https://t.me/clickhouse_ru
    @ilejn #236724 12:17 PM, 29 Sep 2021
    Добрый день, корректно ли описание
    "For INSERT queries in the replicated table, specifies that deduplication of insertings blocks should be performed" параметра insert_deduplicate?
    Разве он актуален только для replicated tables?
  • https://t.me/clickhouse_ru
    Вроде нет проблемы.
    Вас include смущают? Если вы их не создавали. то КХ их и не найдет
  • https://t.me/clickhouse_ru
    на логе проблем нет
    смотрите в /var/log/clickhouse-server/clickhouse-server.err.log
  • https://t.me/clickhouse_ru
    да
    это проверка контрольной суммы блока на соответсвие с теми XXX последними блоками что есть ZK

    для deduplicate на уровне строк есть optimize_on_insert для Collapsing и Relacing
  • @fdeh75 ↶ Reply to #236710 #236728 12:19 PM, 29 Sep 2021
    про bloomfilter не знал, пойду гуглить
  • @fdeh75 ↶ Reply to #236707 #236729 12:21 PM, 29 Sep 2021
    Планируется аналитика по блокам адресам и etc. Поэтому сортировать основную таблицу по хешам считаю утяжелением других запросов.
  • https://t.me/clickhouse_ru
    Ну тогда, смотрите в сторону моего +- варианта
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #236727 #236731 12:23 PM, 29 Sep 2021
    Ок. Просто с точки зрения житейской логики не понятно, как защита от дублей при вставке связана с репликацией..
  • https://t.me/clickhouse_ru
    ну, вроде я объяснил как

    "защита от дублей" в данном случае это защита от "повторных вставок одних и тех же данных целиком"
    я думаю все дало в неправильном названии
    и слово deduplicate можно было бы расширить, но назвали как назвали
  • https://t.me/clickhouse_ru
    @ilejn #236734 12:28 PM, 29 Sep 2021
    Ну я только могу повтоить свое недоумение.
    Мне странно, что защита от повторных вставок одних и тех же данных целиком в реплицированную таблицу есть, а защиты от повторных вставок одних и тех же данных целиком в нереплицированную таблицу нет.
  • https://t.me/clickhouse_ru
    @ilejn #236735 12:29 PM, 29 Sep 2021
    Но я по крайней мере теперь знаю, что это так.
    Спасибо.
  • https://t.me/clickhouse_ru
    @hombit #236736 12:30 PM, 29 Sep 2021
    Добрый день. Такая ситуация: есть две таблицы с очень похожими данными, одинаковыми колонками, primary key и кодеками (одна как бы более новая версия второй). В одной лежит в два раза больше строк чем в другой, но места она занимает втрое больше, причем некоторые колонки больше на порядок. Подскажите, в чем может быть дело и как поправить сжатие.
  • https://t.me/clickhouse_ru
    Потому что цели другие. Вот из доки:
    Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. Запрос INSERT идемпотентный.
  • https://t.me/clickhouse_ru
    ORDER BY таблиц одинаковый или разный?
  • https://t.me/clickhouse_ru
    @hombit #236739 12:31 PM, 29 Sep 2021
    Одинаковый
  • https://t.me/clickhouse_ru
    Non replicated merge tree deduplication by alesapin · Pull Request #22514 · 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
    значит он дает разное размытие значений по колонкам которые отличаются по размеру...

    и получается более рандомизированные данные по блокам...

    у вас там точно какие нибудь compression codec не применены ?
  • https://t.me/clickhouse_ru
    @hombit #236742 12:33 PM, 29 Sep 2021
    Применены, но одинаковые в обеих таблицах
  • https://t.me/clickhouse_ru
    @NDSpasov #236743 12:33 PM, 29 Sep 2021
    Joined.
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236741 #236744 12:35 PM, 29 Sep 2021
    Там, вроде, они выбраны разумно. Например для колонки, значения которой повторяются десятки-сотни раз и которая идет вторым аргументам в ORDER BY, используется DELTA, LZ4
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #236740 #236745 12:35 PM, 29 Sep 2021
    👍
  • https://t.me/clickhouse_ru
    @hombit #236746 12:35 PM, 29 Sep 2021
    Этих повторов должно было стать (в среднем) только больше, но размер почему-то стал больше на порядок
  • https://t.me/clickhouse_ru
    @NDSpasov #236747 12:39 PM, 29 Sep 2021
    Всем привет!

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

    TTL d + INTERVAL 1 DAY TO DISK 'hdfs', обязательно ли к данной таблицы применять кастомную политику, а то с дефолтной у меня это не работает, выдает ошибку о том что диск hdfs не найден
  • https://t.me/clickhouse_ru
    @Art_undead #236748 12:39 PM, 29 Sep 2021
    Joined.
  • https://t.me/clickhouse_ru
    @gorbonk #236749 12:45 PM, 29 Sep 2021
    А можно как-то переименовать вьюху без доступа клиенту?
    Или на сколько опасно удалить mutation_xxx.txt файл из директории в таблицы?
  • Вторая колонка, впрочем в вашем варианте вы потеряли ее название, скопировав его дважды и видимо поэтому это не заметили.

    https://i.imgur.com/KVXGvXK.png
  • https://t.me/clickhouse_ru
    лучше KILL MUTATION сделайте
  • https://t.me/clickhouse_ru
    Для этого доступ в клиент нужен, на сколько понимаю, а с этим как раз и проблема
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/interfaces/http/

    send_timeout=3600&receive_timeout=3600 в URL Добавьте
    HTTP Interface | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    если у вас есть доступ к каталогу /var/lib/clickhouse
    то у вас есть клиент

    clickhouse-client отлично работает на сервере и это просто симлинк
  • https://t.me/clickhouse_ru
    Проблема в том, что у меня сервер в контейнере, который по стечению обстоятельств падает при запуске, а падает из-за таблицы, которой нужно откатить измение, чтобы контейнер заработал
  • https://t.me/clickhouse_ru
    @gorbonk #236756 12:54 PM, 29 Sep 2021
    Т.е. доступа к /var/lib/clickhouse у меня нет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #236723 #236757 12:55 PM, 29 Sep 2021
    маленькую конечно дешевле. если вам несложно генерировать снаружи монотонно растущий ключ (нет кластера), то трюк получается интересный. можно маленькую таблицу тогда сделать на embbededRockDB и апдейтить - там как раз быстрый key/value. Но безкластерный.
  • @fdeh75 ↶ Reply to #236757 #236758 01:03 PM, 29 Sep 2021
    Спасибо за уточнение.
  • @fdeh75 #236759 01:04 PM, 29 Sep 2021
    Всем спасибо!
    Проиндексировал c помощью bloom_filter, теперь не тормозит)
    Куда донатить то?
  • https://t.me/clickhouse_ru
    > После каждого инсерта бд будет пересортировывать в фоне всю таблицу. Вынес в отдельную таблицу чтобы сортировалась небольшая таблица. Тут уместен вопрос: насколько дешевле отсортировать вот такую таблицу:

    Это не правда, не стоит париться на этот счет

    Там будет сортировка слиянием отсортированных списков, почти бесплатно
  • @fdeh75 ↶ Reply to #236760 #236761 01:09 PM, 29 Sep 2021
    Кстати, еще один вопрос появился в этой теме. Сортировка перезаписывает файл или просто меняет порядок смещений "строчек" в файлах колонок (надеюсь понятно описал)?
  • https://t.me/clickhouse_ru
    Все мержи создают новые парты и файлы
  • https://t.me/clickhouse_ru
    @orx4n #236764 01:16 PM, 29 Sep 2021
    Здравствуйте коллеги !
    Возникла проблема при переходе с 20 в 21-ую версию.
    Clickhouse у меня деплоен внутри кубернетса(kubernetes cluster) с 4 нодами. Есть соответственно 4 шардов clickhouse а .
    У всех почти то же самое количество данных в базе данных. Но только один из шардов использует очень много диска и много памяти. не могу найти проблему.

    Clickhouse version: 21.7.11.3
  • https://t.me/clickhouse_ru
    в кх парты иммутабельные, так что файлы с данными никогда не меняются и не перезаписываются, только создаются новые
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236741 #236766 01:22 PM, 29 Sep 2021
    А может помочь полное копирование таблицы через INSERT INTO copy SELECT * FROM table?
  • https://t.me/clickhouse_ru
    @kartris #236767 01:26 PM, 29 Sep 2021
    Всем привет. Подскажите, как быть с DDL при использовании MaterializedPostgreSQL?
    Я в доке нашел строчку "DDL is not replicated, but can be handled (described below)", но ничего подобного я не нашел ни в русской, ни в английской версии.

    https://clickhouse.com/docs/en/engines/database-engines/materialized-postgresql/
    MaterializedPostgreSQL | ClickHouse Documentation

    [experimental] MaterializedPostgreSQL Creates ClickHouse database with an initial data dump of PostgreSQL database table

  • Немного неочевидно как ее юзать. Я указал --output-dir/-date-to/dsn, оно мне нагеренило sql файлов с запросами, и никаких svg
  • https://t.me/clickhouse_ru
    контейнер в кубере? или просто docker ?

    вы мутацию с alter table точно не путаете?

    есть логи контейнера?
    или в /var/lib/docker
    поищите clickhouse-server.err.log
    на хосте
  • https://t.me/clickhouse_ru
    не очень понятно на что при этом надеетесь ?
    данные теже, кодеки теже, на выходе должен получиться точно такой же результат
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236770 #236771 01:43 PM, 29 Sep 2021
    Спасибо!
  • https://t.me/clickhouse_ru
    @sibbarb #236775 02:13 PM, 29 Sep 2021
    Всем привет, подскажите пожалуйста, итмеется у меня такой массив, сделал его через grouparray
    мне нужно оставить только те строчки, где в массиве встречатеся определенное число, подскажите функцию пжлста
  • https://t.me/clickhouse_ru
    has
  • Отправил вам SVG в личку.. Или прислать сюда?
  • @bashlykevich #236778 02:32 PM, 29 Sep 2021
    Можно как-то уговорить КХ принимать IPv6-адреса без разделителей? А то он в нулл его конвертит
    2a02d2478100332a39e88be2bd0a5418
  • https://t.me/clickhouse_ru
    SELECT CAST(unhex('2a02d2478100332a39e88be2bd0a5418'), 'IPv6')

    ─CAST(unhex('2a02d2478100332a39e88be2bd0a5418'), 'IPv6')─┐
    │ 2a02:d247:8100:332a:39e8:8be2:bd0a:5418 │
    └─────────────────────────────────────────────────────────┘
  • спасибо, топ!
  • https://t.me/clickhouse_ru
    Проблему удалось решить исправлением кода таблицы в файлах клика. Спасибо за помощь
    Теперь разбираюсь, почему так произошло. Буду очень благодарен за помощь в поиске ответа на вопрос Как могла произойти ситуация, что при создании таблицы через клиент ошибок не было и таблица функционировала, но после перезагрузки докер контейнера, на котором был сервер, сервер начал перманентно падать из-за ошибки в объявлении таблицы(ошибка связана с недопустимостью использования DateTime64 в качестве версии для ReplacingMT, версия кх 20.4)
  • @vmpol #236782 03:02 PM, 29 Sep 2021
    подскажите, а как транспозировать табличку (примерно как вот тут в ответе https://stackoverflow.com/a/61782641) но разбив array of tuples на колонки?
    Pivot or equivalent in clickhouse

    I'm new to clickhouse or for that matter in any columnar db. I need to pivot the table like we do in sql-server, postgres or any other row based db. I'm looking for a generic solution however solu...

  • https://t.me/clickhouse_ru
  • @vmpol ↶ Reply to #236783 #236784 03:27 PM, 29 Sep 2021
    спасибо. а можно как-то магически map поитерироать чтобы ключи не писать? в постгресе я функцию писал для такого в свое время.
  • https://t.me/clickhouse_ru
    Не понял вопроса, вы хотите во время запроса определить ширину таблицы?
  • @vmpol ↶ Reply to #236785 #236786 03:28 PM, 29 Sep 2021
    Да
  • https://t.me/clickhouse_ru
    Так нельзя, только в два запроса: определить список всех ключей и сам запрос собственно
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236770 #236789 03:45 PM, 29 Sep 2021
    Я немного порылся в файлах, разжал из с помощью clickhouse-compressor и смотрю хексдампом. В старой таблице (она была создана с год назад, соответственно на другой версии КХ) полно нулей (как и ожидалось, потому что у меня много значений идет подряд), а в новой их вообще нет. Есть идеи, что могло произойти?
  • @softbot_xxl #236790 03:47 PM, 29 Sep 2021
    Ключ сортировки не меняли?
  • @softbot_xxl #236791 03:48 PM, 29 Sep 2021
    (уже спрашивали :p )
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236790 #236792 03:49 PM, 29 Sep 2021
    Нет, как раз смотрю колонку, в которой повторяются значения и которая в ключе сортировки. То есть там должны одинаковые значения подряд лежать и кодек DELTA должен давать сплошные нули
  • @softbot_xxl #236793 03:51 PM, 29 Sep 2021
    Ну если эта колонка не первая в ключе сортировки, то может увеличилась кардинальность предшествующих ключей?
  • https://t.me/clickhouse_ru
    @hombit #236794 03:52 PM, 29 Sep 2021
    Она вторая, но у меня так устроены данные, что все строки с одинаковыми значениями второй колонки должны иметь одинаковое значение первой колонки в ключе сортировки
  • @softbot_xxl #236795 03:57 PM, 29 Sep 2021
    Ну я бы еще посмотрел show create table <new table>, чтобы просто убедиться, что кодек стоит.
  • https://t.me/clickhouse_ru
    @matwey_kornilov #236796 03:58 PM, 29 Sep 2021
    А в первой колонке нули то есть?
  • @softbot_xxl #236797 03:58 PM, 29 Sep 2021
    Может еще проверил бы кол-во партиций в старой и новой таблице.
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236795 #236798 04:05 PM, 29 Sep 2021
    Сделал, конечно =)
  • https://t.me/clickhouse_ru
    какая ошибка при загрузке?

    какая версия clickhouse-server?
  • @softbot_xxl #236800 04:06 PM, 29 Sep 2021
    И кстати, если значения одинаковые, то может вам нужен DoubleDelta?
  • https://t.me/clickhouse_ru
    DD не нужна в 90% случаях, она медленная

    https://kb.altinity.com/altinity-kb-schema-design/codecs/codecs-speed/
  • https://t.me/clickhouse_ru
    Ошибка https://dpaste.org/L89F
    Версия 20.4.9.110
  • https://t.me/clickhouse_ru
    DateTime64 совсем недавно разрешили использовать для VER

    21.6, 2021-06-05
    Enable DateTime64 to be a version column in ReplacingMergeTree. #23992 (kevin wan).
  • https://t.me/clickhouse_ru
    Проблема а том, что до перезагрузки сервера ошибки не было, а таблица фунционировала
  • https://t.me/clickhouse_ru
    вы сделали даунгрейд КХ. Вы создали таблицу в более новой версии, это 1000000% гарантии, я готов сделать ставку на $10000
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236800 #236806 04:17 PM, 29 Sep 2021
    Думаю достаточно просто Delta для одинаковых значений
  • https://t.me/clickhouse_ru
    Как можно это проверить? Где можно найти логи, фиксирующие апгрейд/даунгрейд?
  • https://t.me/clickhouse_ru
    КХ в логах пишет свою версию постоянно, открываете лог до перезагрузки и смотрите
  • https://t.me/clickhouse_ru
    если подмешать в дельту больше нехарктерных данных то компресиия резко ухудшится.

    например храним данные id, time, value CODEC Delta order by time
    пока id один, value будет хорошо сжиматься потому что Delta работает
    если id несколько то они начнут чередоваться, потому что order by time а не id, time
  • https://t.me/clickhouse_ru
    @den_crane #236810 04:28 PM, 29 Sep 2021
    я например такое неоднократно наблюдал, есть 10 партов, общим размером 1GB, делаем optimize, получаем итоговый парт 2GB
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236809 #236812 04:36 PM, 29 Sep 2021
    У меня данные устроены так, что при order by time, value (пользуясь вашим примером) должно быть много подряд одинаковых value, потому что все одинаковые value имеют одинаковый time
  • https://t.me/clickhouse_ru
    OK а у вас CODEC на всех колонках? Может у вас дефолтная компресия была ZSTD (config.xml) ?
  • https://t.me/clickhouse_ru
    @hombit #236814 04:39 PM, 29 Sep 2021
    Кодек руками ставил, я проверил по SHOW CREATE TABLE
  • @softbot_xxl #236815 04:39 PM, 29 Sep 2021
    select count(distinct value), count(distinct value,time) from table, если мне память не изменяет
  • https://t.me/clickhouse_ru
    я видимо пропустил часть дискусии, и потерял нить
  • https://t.me/clickhouse_ru
    а рестарт КХ или сервера был?
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #236816 #236818 04:43 PM, 29 Sep 2021
    Я попробую подготовить минимальный какой-то пример, заодно может найду у себя ошибку =)
  • https://t.me/clickhouse_ru
    так это не имеет отношения к SQL , тоже самое будет и на бумажке и в любом языке программирования
    можно использовать tuple (date, hour) >=('2021-09-19' , 17) AND (date, hour) <=('2021-09-26', 16)
    или написать по нормальному огромную портянку с кучей OR
  • https://t.me/clickhouse_ru
    Да, был
  • https://t.me/clickhouse_ru
    что из или 1 или 2?
    в общем побились видимо файлы на диске или не были записаны
    и есть check table , который кажется исправляет это
  • https://t.me/clickhouse_ru
    ну да, я и писал, что optimize table final всё это дело поправил
  • https://t.me/clickhouse_ru
    Проблема в том что Optimize table final это такая штука которую невозможно использовать на проде.
  • https://t.me/clickhouse_ru
    @siaopin #236825 04:58 PM, 29 Sep 2021
    ну для небольших таблиц почему нет?
  • https://t.me/clickhouse_ru
    ну я правильно понимаю
    вы запустили
    ALTER TABLE ... MODIFY COLUMN registration_time DateTime64(5, 'Europe/Moscow') ?

    а потом что сделали? контейнер ребутнули? запрос завершился при этом или нет?
  • https://t.me/clickhouse_ru
    Да, только ALTER TABLE ... был успешно(!) выполнен n дней назад. Независимо от этого сегодня был рестартован контейнер с сервером
  • https://t.me/clickhouse_ru
    @gorbonk #236828 05:09 PM, 29 Sep 2021
    Проверяю версию Denny про даунгрейд при рестарте, но пока однозначных фактов из того, что есть, установить не могу
  • https://t.me/clickhouse_ru
    а в system.query_log этот запрос видно?
  • https://t.me/clickhouse_ru
    в query_log вообще несколько записей полугодичной давности. Видимо, логирование отключено(не ругайте, не я не делал, я лишь разбираюсь)
    Но то, что запрос был выполнен косвенно подтверждает файл мутации, на сколько понимаю
  • https://t.me/clickhouse_ru
    Номер карты скинуть или почтовым переводом отправите?)
    Стабильно воспроизводится, если создать ReplacingMT таблицу с версией на поле DateTime, а после сменить тип поля на DateTime64 - ошибки нет, но, если перезагрузить сервер, подняться уже не может
  • https://t.me/clickhouse_ru
    ну таких условий в задаче не было. Можно еще и руками файл подправить.
    а что можно поменять тип DateTime на DateTime64 и там данные нормальные, это странно ?
  • https://t.me/clickhouse_ru
    Про номер карты, конечно, шутка, но каких условий не было?
    Да, с данными все в порядке
  • https://t.me/clickhouse_ru
    я в общем представлял себе что был create table ...
    И такой create table с datetime64 в качестве ver можно сделать совсем недавно, у DateTime64 не было кода который разрешает такой create table, сам replacing работал случайно правильно для DateTime64.
  • https://t.me/clickhouse_ru
    В любом случае, спасибо вам и BloodJazMan за помощь
    Поимание ситуации многократно облегчило мне жизнь
  • https://t.me/clickhouse_ru
    @den_crane #236838 06:46 PM, 29 Sep 2021
    что интересно там проверка и не дает сделать альер

    create table TR(A Int64, S Int64) Engine=ReplacingMergeTree(S) order by A;

    alter table TR modify column S String;
    DB::Exception: Cannot alter version column S to type String because version column must be of an integer type or of type Date or DateTime. (ALTER_OF_COLUMN_IS_FORBIDDEN)

    alter table TR modify column S UUID;
    DB::Exception: Cannot alter version column S to type UUID because version column must be of an integer type or of type Date or DateTime. (ALTER_OF_COLUMN_IS_FORBIDDEN)

    alter table TR modify column S IPv6;
    DB::Exception: Cannot alter version column S to type IPv6 because version column must be of an integer type or of type Date or DateTime. (ALTER_OF_COLUMN_IS_FORBIDDEN)

    alter table TR modify column S IPv4;
    Exception: Received from localhost:9000. DB::Exception: Cannot alter version column S from type Int64 to type IPv4 because new type will change sort order of version column. The only possible conversion is expansion of the number of bytes of the current type.. (ALTER_OF_COLUMN_IS_FORBIDDEN)

    alter table TR modify column S Decimal64(3);
    DB::Exception: Cannot alter version column S to type Decimal(18, 3) because version column must be of an integer type or of type Date or DateTime. (ALTER_OF_COLUMN_IS_FORBIDDEN)

    alter table TR modify column S Float64;
    DB::Exception: Cannot alter version column S from type Int64 to type Float64 because new type will change sort order of version column. The only possible conversion is expansion of the number of bytes of the current type.. (ALTER_OF_COLUMN_IS_FORBIDDEN)
  • Большое спасибо!
  • @Missoun #236840 07:38 PM, 29 Sep 2021
    Всем привет!
    Кто-нибудь ставил clickhouse драйвера на macos? Как вы путь указывали в odbc.ini, чтобы начать видеть драйвера?
  • https://t.me/clickhouse_ru
    @mikhailnovikov #236843 07:55 PM, 29 Sep 2021
    друзья, помогите джуну разобраться с ReplacingMergeTree.

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

    CREATE TABLE db1.test_replacing
    (
    publisher String,
    unique_id String
    )
    ENGINE = ReplacingMergeTree()
    ORDER BY (unique_id)

    INSERT INTO db1.test_replacing VALUES
    ('old_publisher', 'id1')

    INSERT INTO db1.test_replacing VALUES
    ('new_publisher', 'id1')

    SELECT * FROM db1.test_replacing FINAL

    # результат:
    # new_publisher id1

    Однако в случае группировки реплейс не работает:

    SELECT count(*), publisher
    FROM db1.test_replacing
    GROUP BY publisher

    # результат:
    # 1 old_publisher
    # 1 new_publisher

    Как заставить его заработать?
  • Все работает. Вы сравниваете результат с final и без final
  • @ViacheslavNefedov #236845 07:58 PM, 29 Sep 2021
    В вашем случае мердж не прошел и результат отчичается
  • https://t.me/clickhouse_ru
    @mikhailnovikov #236846 08:00 PM, 29 Sep 2021
    а почему он не прошел, я ведь соблюдал (соблюл? соблюдил?) условия: вставил с таким же индексом
  • @dj_mixer #236847 08:06 PM, 29 Sep 2021
    доброго времени суток...
    SETTINGS clause не работает для CTAS синтаксиса, никто не знает как запросом workaroundнуть? или может починили?
  • а не, все хорошо ) уже починили =) https://github.com/ClickHouse/ClickHouse/issues/28810
    Query setting `max_memory_usage` doesn't work for `CREATE TABLE ... as SELECT ...` · Issue #28810 · ClickHouse/ClickHouse

    ClickHouse v.21.7.7.47 setting max_memory_usage doesnt work for 'create table .. as' queries for example: this query works create table test_table engine MergeTree order by a as sel...

  • кликхауз никому не обещал мёрджить сразу :) . Сливает записи потом. И не всегда
  • @ViacheslavNefedov #236850 08:17 PM, 29 Sep 2021
    можно использовать final. Можно самому выбирать limit 1 by key. Можно делать optimize final. Если использовать без этого, то результат не гарантирован
  • https://t.me/clickhouse_ru
    Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться.

    https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/replacingmergetree/
    ReplacingMergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    не limit 1 by key, маленькая поправка, а сделать order by (значение) desc еще, тем самым выводить последнюю запись.


    Но, одно из вариантов, чтобы ручками не делать постоянно OPTIMIZE TABLE ..., написать скрипт и добавить в крон.
    Так или иначе, дубликаты в ReplacingMergeTree все равно остаются, об этом предупреждается в доке.
  • 30 September 2021 (167 messages)
  • https://t.me/clickhouse_ru
    @ibragimovramil #236855 02:08 AM, 30 Sep 2021
    Всем привет.

    залил 4 миллирарда записей, вот такой запрос не может отработать, что не так?
    select toStartOfDay(DateTime) as dt, count (*) as t from testDB.Logs

    group by dt
    order by dt
  • https://t.me/clickhouse_ru
    @ibragimovramil #236857 03:30 AM, 30 Sep 2021
    есть у кого опыт использования Clickhouse с Grafana + cLoki? не могу разобраться чего для cLoki не хватает
  • https://t.me/clickhouse_ru
    что значит не может? скорее всего просто читает колонку DateTime с диска, диски медленные?
  • https://t.me/clickhouse_ru
    отваливается по таймауту
  • https://t.me/clickhouse_ru
    @den_crane #236862 03:52 AM, 30 Sep 2021
    вот на раиде из hdd

    SELECT
    toStartOfDay(access_time) AS d,
    count()
    FROM fact_event
    WHERE day >= (today() - 7)
    GROUP BY d
    ORDER BY d ASC

    ┌───────────────────d─┬────count()─┐
    │ 2021-09-23 00:00:00 │ 2351725045 │
    │ 2021-09-24 00:00:00 │ 2460509005 │
    │ 2021-09-25 00:00:00 │ 2553989369 │
    │ 2021-09-26 00:00:00 │ 2822430255 │
    │ 2021-09-27 00:00:00 │ 2522411804 │
    │ 2021-09-28 00:00:00 │ 2440207831 │
    │ 2021-09-29 00:00:00 │ 2250999393 │
    └─────────────────────┴────────────┘

    7 rows in set. Elapsed: 16.597 sec. Processed 37.23 billion rows
  • https://t.me/clickhouse_ru
    ну увеливайте таймаут
  • https://t.me/clickhouse_ru
    @phpcode83 #236864 03:52 AM, 30 Sep 2021
    Доброе утро.
    Подскажите пожалуйста имеет ли кликхаус подключение persistent connect?
    проблема в том что при частых соединениях начинаются траблы с запросами. они долго отрабатывают до 5 сек.
  • https://t.me/clickhouse_ru
    >persistent connect
    смотря что вы под этим подразумеваете.

    >проблема в том что при частых соединениях начинаются траблы с запросами. они долго отрабатывают до 5 сек
    какой API, http/tcp?

    у меня есть одно приложение, оно уже 5 лет непрерывно по http долбит КХ 100 запросов в минуту, и никих траблов.
  • https://t.me/clickhouse_ru
    справился
    13.97 sec.| 5,351,250,000 rows.| 20 GB
  • https://t.me/clickhouse_ru
    Соединяюсь через phpClickHouse
    через внешний IP
    в коде вижу что соединение через new Http()

    может гдето на сервере есть ограничение. не подскажете?
  • https://t.me/clickhouse_ru
    если иметь готовую колонку с днем и не делать 4 млрд раз toStartOfDay(DateTime) , то быстрее раз в 5 будет
  • https://t.me/clickhouse_ru
    проблема скорее всего не там где вы думаете.
    КХ использует весь CPU для выполнения запроса, поэтому если один запрос выполняется за 1 сек, то два запроса одновременных за 2 сек, а 10 запросов за 10 сек.
  • https://t.me/clickhouse_ru
    @phpcode83 #236870 04:06 AM, 30 Sep 2021
    вот некоторая статистика по кликхаусу
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @phpcode83 #236872 04:07 AM, 30 Sep 2021
    вот там где нет пиков сервер работает идеально а там где появляются пики сразу же появляются задержки
  • https://t.me/clickhouse_ru
    в том то и дело что запросы без нагрузки выполняются достаточно быстро порядка 0,05 сек
    но вот в пиковые моменты непонятно как подпрыгивает до 5-10 сек
  • https://t.me/clickhouse_ru
    @phpcode83 #236874 04:08 AM, 30 Sep 2021
    при увеличении нагрузки плавным образом то и задержка должна расти плавно но не так же скачкообразно как будто не хватает каких то ресурсов. вот только каких не понятно.
  • https://t.me/clickhouse_ru
    Там где нет пиков. Пиков чего? Что нарисовано на графиках? Где график cpu? Сколько у вас cpu? У вас может мержи или мутации выжирают все cpu.
  • https://t.me/clickhouse_ru
    @phpcode83 #236876 04:13 AM, 30 Sep 2021
    вот по CPU
  • https://t.me/clickhouse_ru
    @phpcode83 #236877 04:14 AM, 30 Sep 2021
    на сервере 36 ядер
  • https://t.me/clickhouse_ru
    И кто импользует cpu? Кх? Запросы в кх? Мержи? Инсерты?
  • https://t.me/clickhouse_ru
    @phpcode83 #236879 04:17 AM, 30 Sep 2021
    а как это выяснить?
  • https://t.me/clickhouse_ru
    @phpcode83 #236880 04:18 AM, 30 Sep 2021
    одно скажу что через htop все CPU использует КХ,
    это сервер только для КХ
  • https://t.me/clickhouse_ru
    top ? system.processes system.merges
  • https://t.me/clickhouse_ru
    @phpcode83 #236882 04:20 AM, 30 Sep 2021
    не совсем понял что это
  • https://t.me/clickhouse_ru
    @phpcode83 #236883 04:20 AM, 30 Sep 2021
    комманду надо выполнить в консоли?
  • https://t.me/clickhouse_ru
    Таблицы
  • https://t.me/clickhouse_ru
    @phpcode83 #236885 04:22 AM, 30 Sep 2021
    все равно не понял.
  • https://t.me/clickhouse_ru
    @phpcode83 #236886 04:23 AM, 30 Sep 2021
    таблица system.processes
  • https://t.me/clickhouse_ru
    @a4104c504 #236887 04:24 AM, 30 Sep 2021
    select * from system.processes
  • https://t.me/clickhouse_ru
    @phpcode83 #236888 04:26 AM, 30 Sep 2021
    понял. там много всего...
    это чтото типа processlist как у mysql только более детально.
  • https://t.me/clickhouse_ru
    @phpcode83 #236889 04:29 AM, 30 Sep 2021
    SELECT * FROM system.merges
    пустой
    select * from system.processes
    по разному. 1 - 4 строки
  • https://t.me/clickhouse_ru
    @700793887 #236890 04:31 AM, 30 Sep 2021
    Направьте пожалуйста в правильном направлении, нужно анализировать данные с очень большой таблицы более 2 млр записей, а запросы одиночные, как лучше запрашивать в таких случаях?
  • https://t.me/clickhouse_ru
    @phpcode83 #236891 04:32 AM, 30 Sep 2021
    особой нагрузки то я не вижу в виде запросов. но однозначно пиковые значения CPU выше LA 32 явно сказываются не очень хорошо
  • https://t.me/clickhouse_ru
    system.merges пустой. там ни разу ничего не появилось
    а вот system.processes ведет себя как то странно
    переодически опрашиваю
    показывает 1-3 запроса. собственно сам селект system.processes и 1-2 запроса на выборку данных.
    и в некоторый момент начинает показывать только один запрос селект system.processes и через секунду сразу 100-200 запросов на вставку выборку данных. Такое впечатление что гдето возник затор и тут его прорвало...
    В этот же момент подскакивает CPU
  • https://t.me/clickhouse_ru
    @phpcode83 #236893 04:45 AM, 30 Sep 2021
    ну и естественно elapsed достигает у каждого запроса до секунду
  • https://t.me/clickhouse_ru
    @phpcode83 #236894 04:45 AM, 30 Sep 2021
    их же там штук 200 может быть
  • https://t.me/clickhouse_ru
    @atsygane #236896 04:56 AM, 30 Sep 2021
    Привет! А не появилось ли адекватного output плагина на telegraf? Чтобы можно было метрики кидать из телеграфа в ch? Кто как решает такую задачу?
  • https://t.me/clickhouse_ru
    Через carbon-clickhouse
  • https://t.me/clickhouse_ru
    @phpcode83 #236898 05:28 AM, 30 Sep 2021
    Решил проблему Всем спасибо )
  • https://t.me/clickhouse_ru
    @phpcode83 #236899 05:32 AM, 30 Sep 2021
    Еще есть такой вопрос по выборке данных.
    не знаю существует ли вообще такое.
    Допустим в БД хранится пара данных сайт и просмотры. Сайтов может быть много. просмотры просто число разбитые по некоторым характеристикам
    допустим есть данные для двух сайтов по трем параметрам
    сайт просмотр параметр
    1 5 1
    1 8 2
    1 12 3
    2 1 1
    2 7 2
    2 13 3

    можно ли как то сделать выборку чтобы была во первых группировка а во вторых чередование. или наоборот чередование и группировка
    нужно получить чтобы сайты чередовались но и с одновременной сортировкой по просмотрам
    результат должен быть таким
    2 13 3
    1 12 3
    2 7 2
    1 8 2
    2 1 1
    1 5 1

    т.е. главное чтобы было чередование 1 2 1 2 1 2 а дальше уже сортировка по возможности.
  • @702794170 #236902 05:42 AM, 30 Sep 2021
    Привет.
    Почему-то у меня перестала работать команда из документации для скачивания бинарника:
    curl -O 'https://builds.clickhouse.tech/master/amd64/clickhouse' && chmod a+x clickhouse

    Хотя скачивание по ссылке через браузер работает...
  • https://t.me/clickhouse_ru
    curl -LO 'https://builds.clickhouse.tech/master/amd64/clickhouse'
  • https://t.me/clickhouse_ru
    @suxxorz #236909 08:02 AM, 30 Sep 2021
    Все привет, такая проблемка. Получается авторизироваться в КХ, но запросы из одного КХ в другие не выполняются, ошибка авторизации:

    Code: 516. DB::Exception: Received from clickhouse-server:9000. DB::Exception: Received from clickhouse-02:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED)

    при этом если убрать пароль с пользователя default все работает
  • https://t.me/clickhouse_ru
    @ikkalinkin #236912 08:14 AM, 30 Sep 2021
    Привет! А как можно в КХ преобразовать вложенные json в списки по уровню вложенности? Например, json вида {a:{b:c, f:g}, d:e} преобразовать в массивы [a, a, d], [b, f, e], [c, g, “”]
  • https://t.me/clickhouse_ru
    @Gulshan5k #236913 08:25 AM, 30 Sep 2021
    Добрый день, всем! Может кто ни будь уже придумал как реализовать в CH вот такой джойн.

    selеct id, range,event_dt from tabA a
    Left join
    select id, start_range,end_range, eff_dt,exp_dt from tabB b
    on a.id=b.id and b.start_range <= a.range and
    b.end_range > a.range and
    b.eff_dt <= a.event_dt and
    b.exp_dt > a.event_dt;
  • https://t.me/clickhouse_ru
    @GoDevelopment #236914 08:29 AM, 30 Sep 2021
    Добрый день как экспортировать дамп из контейнера на хост машину?, clickhouse крутиться с данными в контейнере
    я предпологаю clickhouse-client --query "SELECT * from table" --format FormatName > result.dump нужно прокинуть типо docker exec container_name -c "clickhouse-client --query "SELECT * from table" --format FormatName > result.dump" вывод результата будет внутри контейнера?
  • https://t.me/clickhouse_ru
    @GoDevelopment #236915 08:29 AM, 30 Sep 2021
    А мне по факту нужно на хост получить дамп
  • https://t.me/clickhouse_ru
    docker cp

    docker cp: The `docker cp` utility copies the contents of `SRC_PATH` to the `DEST_PATH`. You can copy from the container's file system to the local machine or the reverse, from...

  • @cheetahfm #236918 08:34 AM, 30 Sep 2021
    Привет. Хочу найти аналог unnest в Postgres.

    select unnest(array ['a', 'b', 'c']),
    unnest(array [1, 2, 3]);

    +------+------+
    |unnest|unnest|
    +------+------+
    |a |1 |
    |b |2 |
    |c |3 |
    +------+------+

    Пробовал arrayJoin, но результат не такой получается:

    select arrayJoin(['a', 'b', 'c']),
    arrayJoin([1, 2, 3]);

    +--------------------------+--------------------+
    |arrayJoin(['a', 'b', 'c'])|arrayJoin([1, 2, 3])|
    +--------------------------+--------------------+
    |a |1 |
    |a |2 |
    |a |3 |
    |b |1 |
    |b |2 |
    |b |3 |
    |c |1 |
    |c |2 |
    |c |3 |
    +--------------------------+--------------------+
    Можно ли как-то сделать из двух массивов два столбца без декартового произведения?
  • select * from (select ['a', 'b', 'c'] x, [1, 2, 3] y) array join x, y
  • Большое спасибо!
  • https://t.me/clickhouse_ru
    Или arrayEnumerate
  • https://t.me/clickhouse_ru
    В случаи копирования, а мне нужен запрос в контейнер и его результат stdout на хост
  • https://t.me/clickhouse_ru
    1) Выполняйте запрос с хоста
    2) приделайтк к контейнеру volume или шару, которые живут на хосте
  • https://t.me/clickhouse_ru
    + Понял,use волюме
  • https://t.me/clickhouse_ru
    Расшарить папку на хосте и писать туда из контейнера
  • https://t.me/clickhouse_ru
    Значит в природе докера существует два способа получить результат host<->container
    1. cp
    2. mount
  • https://t.me/clickhouse_ru
    @hoha_ftf #236927 09:10 AM, 30 Sep 2021
    ну mount хоть где работает
  • а что вы не можете подключиться через clickhouse-client напрямую к КХ? зачем оборачивать в docker exec? Такая команда должна положить вам локально файлик test.csv
    docker run --net=host --rm -it yandex/clickhouse-client -h 0.0.0.0 --user user --query “select date, count() c from table group by date format CSV” > test.csv
  • https://t.me/clickhouse_ru
    Можно, но хотелось узнать все возможность данного способа, собираю ключи решения
  • https://t.me/clickhouse_ru
    @GoDevelopment #236930 09:23 AM, 30 Sep 2021
    +
  • https://t.me/clickhouse_ru
    Может кому пригодится, то вот так можно до 3 уровней, ну а дальше по аналогии до скольки захотите: https://pastebin.com/RpSgyHgW
    SELECT json, arrayMap(x -> x.1, lvl3) AS key1, arrayMap(x -> x.2, - 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
    @ikkalinkin #236932 10:00 AM, 30 Sep 2021
    А как можно из JSON извлечь значение в строком представлении? то есть, из {‘a’: 1}, {‘a’: ‘1’} достать ‘1’ по ключу ‘a’
  • https://t.me/clickhouse_ru
    @ikkalinkin #236933 10:01 AM, 30 Sep 2021
    Если использовать JSONExtractString, то инты не достает, если использовать JSONExtract(json, 'a', toString(JSONType(json, ‘a’))), то не работает с массивами, требует указать тип элементов массива
  • может JSONExtractRaw?
  • https://t.me/clickhouse_ru
    @ikkalinkin #236935 10:24 AM, 30 Sep 2021
    он тогда стремные значения выводит: [
    "\u0002�^",
    "[]"
    ]
  • https://t.me/clickhouse_ru
    @ikkalinkin #236936 10:24 AM, 30 Sep 2021
    видимо, какая-то обработка все же нужна
  • https://t.me/clickhouse_ru
    @ikkalinkin #236937 10:25 AM, 30 Sep 2021
    я пока такого франкенштейна собрал) if(toString(JSONType(json, 'a')) = 'Array', toString(JSONExtractArrayRaw(json, 'a')), toString(JSONExtract(json, 'a',if(toString(JSONType(json, 'a')) = 'Array', 'String', toString(JSONType(json, 'a'))))))
  • а исходные данные покажите
  • https://t.me/clickhouse_ru
    @ikkalinkin #236940 10:27 AM, 30 Sep 2021
    {
    \"available_puids\" = [];
    \"client_timestamp_ms\" = 1631221237209;
    }
  • https://t.me/clickhouse_ru
    @ikkalinkin #236941 10:28 AM, 30 Sep 2021
    Ну вообще это Yson, но там функции полностью аналогичные
  • что-то я туплю и не могу связать ваш изначальный вопрос и то-что вы скинули сейчас)
  • https://t.me/clickhouse_ru
    @ikkalinkin #236943 10:39 AM, 30 Sep 2021
    да, наверное тут два разных) если по поводу изначального, то такая проблема: SELECT
    '{"a": "1"}' AS json,
    JSONExtractRaw(json, 'a') вернет \"1\", а SELECT
    '{"a": 1}' AS json,
    JSONExtractRaw(json, 'a') вернет просто 1
  • https://t.me/clickhouse_ru
    @ibragimovramil #236944 11:07 AM, 30 Sep 2021
    SELECT * FROM test.Logs
    PREWHERE TransactionNumber = 163195654
    ORDER BY DateTime

    52.97 sec.| 7,248,270,000 rows.| 54 GB

    Что не так делаю, почему так медленно? ELK с теми же данными моментально отрабатывает
  • https://t.me/clickhouse_ru
    Ну вы сортируете А потом выбираете 1 значение в разряженом индексе. И зачем pre where
  • https://t.me/clickhouse_ru
    с where тоже самое
  • https://t.me/clickhouse_ru
    Pre where работает автономно, его оч редко нужно руками прописывать.
  • https://t.me/clickhouse_ru
    Ну и вопрос скорее про сортировку. Скиньте ddl вашей твблицы
  • https://t.me/clickhouse_ru
    @ibragimovramil #236949 11:10 AM, 30 Sep 2021
    52.72 sec.| 7,262,020,000 rows.| 54 GB
    вот с Where
  • https://t.me/clickhouse_ru
    это как?
  • https://t.me/clickhouse_ru
    Это в целом неважно
  • https://t.me/clickhouse_ru
    Create table.. .
  • https://t.me/clickhouse_ru
    И order by уберите
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Без order by сколько?
  • https://t.me/clickhouse_ru
    Да и * это тоже не очень хорошо, вы тяните все столбцы через io
  • https://t.me/clickhouse_ru
    @dmitriynvkv #236957 11:13 AM, 30 Sep 2021
    Выберите конкретный столбец
  • https://t.me/clickhouse_ru
    @ibragimovramil #236958 11:13 AM, 30 Sep 2021
    без сортировки
    47.33 sec.| 7,280,380,000 rows.| 54 GB
  • https://t.me/clickhouse_ru
    @ibragimovramil #236959 11:15 AM, 30 Sep 2021
    47.17 sec.| 7,287,890,000 rows.| 54 GB
    только 1 колнку взял
  • https://t.me/clickhouse_ru
    @ibragimovramil #236960 11:16 AM, 30 Sep 2021
    может что-то с базой нужно сделать аля реиндексация....
  • https://t.me/clickhouse_ru
    Смотрите, у вас первое *, это значит вы тяните все столбцы в память, нужно выбирать только те столбцы котоыре нужны, это позволит сукорить запрос, далее, у вас нет индекса на колонке, то ест ьу вас впринцыпе фулскан идет. Order by тут попросту не нужен.
  • https://t.me/clickhouse_ru
    И да и нет, вы для каких целей решили взять КХ? Как key value?
  • https://t.me/clickhouse_ru
    @dmitriynvkv #236963 11:17 AM, 30 Sep 2021
    Кажется что у вас сценарий использования неверный.
  • https://t.me/clickhouse_ru
    @ibragimovramil #236964 11:17 AM, 30 Sep 2021
    как замену эластика
  • https://t.me/clickhouse_ru
    @ibragimovramil #236965 11:18 AM, 30 Sep 2021
    эластик для мониторинга логов использую но он жрёт памяти столько что мама не горюй
  • https://t.me/clickhouse_ru
    @ibragimovramil #236966 11:18 AM, 30 Sep 2021
    кх в 20 раз меньше
  • https://t.me/clickhouse_ru
    Это нормально
  • https://t.me/clickhouse_ru
    @critskiy #236968 11:18 AM, 30 Sep 2021
    Для ластика
  • https://t.me/clickhouse_ru
    Я не знаком с ним просто. Какой у вас сценарий использования?
  • https://t.me/clickhouse_ru
    @dmitriynvkv #236970 11:19 AM, 30 Sep 2021
    КХ может сожрать всю память точно также, зависит от запроса.
  • https://t.me/clickhouse_ru
    сценарий ввёл в поле поиска значение он вывел все совпадения по всем полям (полнотекстовый поиск по сути)
  • https://t.me/clickhouse_ru
    Я не понимаю ваших претензий, будучи работая с эластиком, потому что сами разработчики указывали, что ластику требуется как минимум 32 GiB емнип, ну и еще про JVM не стоит забывать.
    В КХ нет полнотекста
  • https://t.me/clickhouse_ru
    @ibragimovramil #236973 11:20 AM, 30 Sep 2021
    я не про оперативку говорю)
  • https://t.me/clickhouse_ru
    @critskiy #236974 11:20 AM, 30 Sep 2021
    И у вас очень спутаны сценарии использования
  • https://t.me/clickhouse_ru
    @ibragimovramil #236975 11:20 AM, 30 Sep 2021
    про место на хардах
  • https://t.me/clickhouse_ru
    @critskiy #236976 11:20 AM, 30 Sep 2021
    Ииии?
  • https://t.me/clickhouse_ru
    @ibragimovramil #236977 11:21 AM, 30 Sep 2021
    клик скушал 54 гига, в свою очередь эластик сожрал тербайт
  • https://t.me/clickhouse_ru
    Кажется вы ошиблись БД. Вам что то другое нужно, то что КХ умеет сжимать не значит что он даст ту скорость которая вам нужна.
  • https://t.me/clickhouse_ru
    ИИИИИИ? Простите, конечно, но вы полнотекстовый движок сравниваете с OLAP базой, вы понимаете эт?:)
  • https://t.me/clickhouse_ru
    @critskiy #236980 11:22 AM, 30 Sep 2021
    Эластик не база)
  • https://t.me/clickhouse_ru
    Возьмите более дешевые диски тогда. Сделайте холодное и горячее хранение
  • https://t.me/clickhouse_ru
    не понимаю, я пытаюсь КХ разобрать подходит или не подходит под мои требования, пока только тестирую
  • https://t.me/clickhouse_ru
    Конечно вряд ли. У вас какие кейсы поиска, просто приведенный примере совсем неправильный
  • https://t.me/clickhouse_ru
    @Roman_Bug #236984 11:23 AM, 30 Sep 2021
    ClickHouse and Elasticsearch FAQs

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

  • https://t.me/clickhouse_ru
    ну прежде чем брать нужно найти может более эффективное решение
  • https://t.me/clickhouse_ru
    @critskiy #236986 11:23 AM, 30 Sep 2021
    Если уж говорить грубо, то возможно, вам хватит только grep)))))
  • https://t.me/clickhouse_ru
    Из того что вы сказали, почти точно не подходит. КХ это про аналитические нагрузки.
  • https://t.me/clickhouse_ru
    Положите ластик на btrfs и по крону жмите старые шарды в zstd будет полтерабайта. //дурные советы
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    аналитика мне тоже нужна поэтому всё до кучи смотрю
  • https://t.me/clickhouse_ru
    ну отпишитесь потом если найдете решение
  • https://t.me/clickhouse_ru
    @bvt123 #236993 11:27 AM, 30 Sep 2021
    нормальный faq от алтинити. бьет ластик по всем параметрам. Кроме полнотекста. Который тоже нетрудно изобразить через обратный индекс в каком-нибудь MV или прожекшене
  • https://t.me/clickhouse_ru
    @bvt123 #236995 11:29 AM, 30 Sep 2021
    база размером в 54Gb не выглядит как что-то страшное для текстового поиска. должно работать. Но не в лоб
  • https://t.me/clickhouse_ru
    Про обратный индекс - есть еще вопрос интеграции в имеющуюся инфру (т.е. адаптер к Кибане), была попытка его сделать тут:
    https://github.com/ITECOMMPAY/kibouse
    GitHub - ITECOMMPAY/kibouse: Clickhouse adapter for Kibana

    Clickhouse adapter for Kibana. Contribute to ITECOMMPAY/kibouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @399999446 #236998 11:49 AM, 30 Sep 2021
    всем привет
    У меня есть json, в котором есть массив interactive_elements
    Массив нужно разложить на строки,делаю вот так и это работает

    replace(arrayJoin(JSONExtractArrayRaw(raw_json,'interactive_elements')),'"','') as interactive_elements

    Но если массив interactive_elements пустой, то тогда остальные поля с json ничего не возвращают
    првоерка в кейсе на разер массива не помогает

    ,case
    when length(JSONExtractArrayRaw(raw_json,'interactive_elements')) = 0 then ''
    when length(JSONExtractArrayRaw(raw_json,'interactive_elements')) > 0 then replace(arrayJoin(JSONExtractArrayRaw(raw_json,'interactive_elements')),'"','')
    end as interactive_elements
  • @Missoun #236999 12:00 PM, 30 Sep 2021
    Всем привет!
    Кто-нибудь ставил clickhouse драйвера на macos? Как вы путь указывали в odbc.ini, чтобы начать видеть драйвера?

    Я недавно спрашивал, но все-таки рискну последний раз вопрос закинуть, вдруг знающий человек найдется - очень бы выручило
  • https://t.me/clickhouse_ru
    @last_hope_hero #237000 12:19 PM, 30 Sep 2021
    привет, можете человеческим языком объяснить как работает таблица с движком буфер ? если я дам туда insert с 500 млн записей, она будет делать 500 insert по 1 млн в указанную таблицу, если я укажу это в настройках ? или нет ?
  • будет
  • @ViacheslavNefedov #237002 12:24 PM, 30 Sep 2021
    в указанное количество потоков как я помню
  • @AprendizEterno #237003 01:49 PM, 30 Sep 2021
    Всем привет
    Есть у меня запрос

    SELECT *
    FROM table
    WHERE itemid = 154421277 AND date > '2019-01-03' AND date < '2025-07-14'
    ORDER BY date WITH FILL FROM toDate('2021-07-01') TO toDate('2021-07-10')

    Возвращает

    |------|----|------------|-----|---------|-------------|
    |154421277|2019-07-03|0.0|430.0|430.0|430.0|
    ...
    куча строк
    ...
    |154421277|2021-07-01|16.92307692307692|650.0|587.46|540.0|
    |0|2021-07-02|0.0|0.0|0.0|0.0|
    |154421277|2021-07-03|16.92307692307692|650.0|591.34|540.0|
    |0|2021-07-04|0.0|0.0|0.0|0.0|
    |154421277|2021-07-05|16.92307692307692|650.0|594.25|540.0|
    |154421277|2021-07-06|16.92307692307692|650.0|596.59|540.0|
    |154421277|2021-07-07|16.92307692307692|650.0|598.83|540.0|
    |154421277|2021-07-08|16.92307692307692|650.0|600.0|540.0|
    |0|2021-07-09|0.0|0.0|0.0|0.0|

    Но если выбросить фильтр по датам и оставить

    SELECT *
    FROM table
    WHERE itemid = 154421277
    ORDER BY date WITH FILL FROM toDate('2021-07-01') TO toDate('2021-07-10')

    то получаю скромное

    |------|----|------------|-----|---------|-------------|
    |0|2021-07-09|0.0|0.0|0.0|0.0|

    Может кто подсказать, почему оно так происходит? Кажется, что фильтр не должен влиять на WITH FILL?
  • @923476123 #237005 02:29 PM, 30 Sep 2021
    https://github.com/AlexAkulov/clickhouse-backup

    привет, пользовался кто бекапером? интересно решали ли проблему бекапа на диск отличный от того где запущен кх
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

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

  • https://t.me/clickhouse_ru
    @rasstr0en #237007 02:31 PM, 30 Sep 2021
    подскажите по настройкам плиз - max_server_memory_usage нет в system.settings, версия 21.4.6.55, наверное там дефолт, но как бы это увидеть
  • https://t.me/clickhouse_ru
    @rasstr0en #237010 02:34 PM, 30 Sep 2021
    <Information> Application: Setting max_server_memory_usage was set to 226.20 GiB (251.33 GiB available * 0.90 max_server_memory_usage_to_ram_ratio)
  • https://t.me/clickhouse_ru
    @rasstr0en #237011 02:34 PM, 30 Sep 2021
    нашел в логах
  • https://clickhouse.com/docs/ru/sql-reference/statements/select/order-by/

    Посмотрите здесь пример с WITH FILL. Не видя Ваш датасет - склоняюсь к этому варианту
    ORDER BY | Документация ClickHouse

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

  • По этой странице я как раз и писал запрос

    Проблема в том, что я не получаю пустые строки. И заполненные тоде не получаю без фильтра по дате. При этом фильтр ничего не делает, т.к. границы сильно больше, чем есть в данных
  • https://t.me/clickhouse_ru
    @mrpavelk #237015 02:45 PM, 30 Sep 2021
    Всем привет. Не могу понять почему эта штука select quantileExact(0.5)(x.t) from (SELECT arrayJoin([4,6]) t) x возвращает 6, ведь в мануале и русским и английским по белому написано что при уровне 0.5 будет медиана, а медиана из чётного числа элементов будет равна полусумме двух центральных
  • https://t.me/clickhouse_ru
    @mrpavelk #237016 02:45 PM, 30 Sep 2021
    Можно баг заводить ?
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #237015 #237017 02:56 PM, 30 Sep 2021
    Это определение медианы работает только для чисел
  • https://t.me/clickhouse_ru
    @hombit #237018 02:57 PM, 30 Sep 2021
    Я не уверен, что именно оно используется в КХ
  • https://t.me/clickhouse_ru
    @hombit #237019 02:59 PM, 30 Sep 2021
    У квантилей для чисел куча определений, вот в R начитали 9 штук
    https://en.wikipedia.org/wiki/Quantile
    Quantile

    cutpoint dividing a set of observations into equal sized groups

  • https://t.me/clickhouse_ru
    @mrpavelk #237020 03:04 PM, 30 Sep 2021
    Но в Кх есть quantileExact и quantileExactHigh, и получается что quantileExact полный алиас для quantileExactHigh? Но такого не указано
  • https://t.me/clickhouse_ru
    @hombit ↶ Reply to #237020 #237021 03:06 PM, 30 Sep 2021
    О, а это интересный вопрос! Я проглядел когда low и high появились
  • https://t.me/clickhouse_ru
    Ещё и quantileDeterministic появился, пока на него заменил, чтоб на больших выборках автотесты не сигналили :)
  • https://t.me/clickhouse_ru
    @hombit #237024 03:13 PM, 30 Sep 2021
    Он давно появился, но только в этом году был пофиксин баг, который его правда сделал deterministic
    https://github.com/ClickHouse/ClickHouse/issues/20480
    quantileDeterministic and friends are not deterministic · Issue #20480 · ClickHouse/ClickHouse

    Describe the bug I've found that quantileDeterministic and relevant functions are not deterministic On 21.2.3 release: SELECT medianDeterministic(oid, oid) FROM ztf.dr4_meta ┌─medianDetermi...

  • Кажется можно в /var/lib/clickhouse/shadow например замаунтить диск
  • https://t.me/clickhouse_ru
    @shagen_A #237032 05:55 PM, 30 Sep 2021
    друзья хочу сделать колонку с массивом (array), кот будет содержать уникальные значения по ключу.

    по логике:
    all_unique_values(column) over(partition by key_column)

    Кто-нибудь подскажет в какую сторону посмотреть?
  • https://t.me/clickhouse_ru
    @shagen_A #237033 05:58 PM, 30 Sep 2021
    даже уникальные - не суть, значения по ключу в общем.
  • https://t.me/clickhouse_ru
    Непонятно, в чем вопрос

    Колонку где?

    В таблице
    В запросе

    groupUniqArray?
  • https://t.me/clickhouse_ru
    @ImZonG #237035 06:01 PM, 30 Sep 2021
    День добрый, сегодня столкнулись с проблемой, свзянной с истекшим CA у letsencrypt (https://habr.com/ru/post/580092/) и движком URL (функцией url тоже). Не подскажете, куда посмотреть, как обновить список CA?

    используем движок URL, запросы вида select * from url('https://site/results.csv', 'CSVWithNames', 'id String')
    начали выдавать ошибку
    Received exception from server (version 21.6.5):
    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED.

    на хосте же с базой если попробовать curl'ом выполнить запрос, то tls работает без проблем
    30 сентября: Let's Encrypt и конец срока действия IdenTrust DST Root CA X3

    30 сентября 2021 14:01:15 GMT оканчивается срок действия корневого сертификата IdenTrust DST Root CA X3.Это событие достойно вашего внимания по той причине, что после наступления этого момента ряд...

  • https://t.me/clickhouse_ru
    в запросе) потом через describe (запрос) уже обычно разбираюсь как создать таблицу
  • https://t.me/clickhouse_ru
    groupUniqArray(column) over(partition by key_column)
  • https://t.me/clickhouse_ru
    огромное спасибо! все работает как хотел
  • https://t.me/clickhouse_ru
    Какая ос?
  • https://t.me/clickhouse_ru
    @ImZonG ↶ Reply to #237039 #237040 06:09 PM, 30 Sep 2021
    ch развернут в докере, образ: yandex/clickhouse-server:21.9.2.17
    uname -a
    Linux 5.11.0-1017-aws #18~20.04.1-Ubuntu SMP Fri Aug 27 11:21:54 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • https://t.me/clickhouse_ru
    https://habr.com/ru/post/580092/

    В Debian/Ubuntu:

    В файле /etc/ca-certificates.conf нужно найти строчку:
    mozilla/DST_Root_CA_X3.crt
    и поставить в начало сроки символ "!":
    !mozilla/DST_Root_CA_X3.crt
    Далее, необходимо выполнить команду:
    sudo update-ca-certificates

    Помогает для не докера, но нужно рестартнуть кх после
    30 сентября: Let's Encrypt и конец срока действия IdenTrust DST Root CA X3

    30 сентября 2021 14:01:15 GMT оканчивается срок действия корневого сертификата IdenTrust DST Root CA X3.Это событие достойно вашего внимания по той причине, что после наступления этого момента ряд...

  • https://t.me/clickhouse_ru
    @unamedrus #237042 06:18 PM, 30 Sep 2021
    В докере, как быстрый фикс, можно выключить проверку сертификатов думаю
  • https://t.me/clickhouse_ru
    LetsEncrypt Root Certificate (DST_Root_CA_X3) expiration issue. · Issue #29584 · ClickHouse/ClickHouse

    Describe what's wrong URL table function / engine and etc refuse to work after September 30, 2021 with certificates signed with lets encrypt. Does it reproduce on recent release? Yes. How t...

  • https://t.me/clickhouse_ru
    @ImZonG ↶ Reply to #237044 #237045 07:42 PM, 30 Sep 2021
    Спасибо, пока как хотфикс отключил валидацию сертов
    Работает
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    версия кх? это чинили уже
  • 21.8 вроде
  • https://t.me/clickhouse_ru
    создайте bug report и приложите create table
  • ок
    Завтра постараюсь воспроизвести на небольшой таблице
  • https://t.me/clickhouse_ru
    это неправильный вопрос.

    clickhouse-backup моментально делает снепшот базы на диск где КХ потому что это снепшот на хардлинках!, и умеет заливать потом куда вам надо, куда настрили

    Ну или тупо tar / rsync можете сделать куда вам надо
  • @923476123 #237053 11:51 PM, 30 Sep 2021
    следить придется за диском что бы он всегда был x2