• 01 January 2023 (17 messages)
  • https://t.me/clickhouse_ru
    @madiken_habr #305969 12:07 AM, 01 Jan 2023
    С новым годом!
  • https://t.me/clickhouse_ru
    @Valenvaryon #305970 12:48 PM, 01 Jan 2023
    Привет
    Новогодний вопрос, делаю insert FORMAT TabSeparated, блок для вставки данных начинается со слова settings, из-за чего CH походу начинает это интерпретировать как некую команду и начинает ругаться:

    Expected one of: SET query, compound identifier, list of elements, identifier. (SYNTAX_ERROR) (version 22.3.15.33 (official build))
  • https://t.me/clickhouse_ru
    @Valenvaryon #305971 12:48 PM, 01 Jan 2023
    это баг или фича?
  • https://t.me/clickhouse_ru
    @ilejn #305972 05:21 PM, 01 Jan 2023
    Если я правильно понял, что вы используете синтаксис без ключевого слова values, то, возможно, есть смысл вставить перевод строки перед данными.
    Если не поможет, приведите пример запроса. Если длинный, то через pastebin.com (сюда ссылку).
  • https://t.me/clickhouse_ru
    @Valenvaryon #305973 06:04 PM, 01 Jan 2023
    после каникул попробую сделать пример повторяющийся
  • https://t.me/clickhouse_ru
    @Valenvaryon #305974 06:05 PM, 01 Jan 2023
    так-то все это делается питонячьим скриптом через post-запрос
  • https://t.me/clickhouse_ru
    @Valenvaryon #305975 06:05 PM, 01 Jan 2023
    сам запрос в урле, данные в теле запроса
  • https://t.me/clickhouse_ru
    @Valenvaryon #305976 06:05 PM, 01 Jan 2023
    insert into some_table (field1, field2) FORMAT TabSeparated
  • https://t.me/clickhouse_ru
    @Valenvaryon #305977 06:06 PM, 01 Jan 2023
    а в значении что-то вроде
    settings.xml \t some string \n
  • https://t.me/clickhouse_ru
    @Valenvaryon #305978 06:06 PM, 01 Jan 2023
    и куча других строк
    если строку с settings убрать вниз - то все отрабатывает
  • https://t.me/clickhouse_ru
    уверены что HTTP запрос верный,
    через curl пробовали тоже самое сделать?

    https://clickhouse.com/docs/en/interfaces/http/
    вот тут много примеров
    HTTP Interface | ClickHouse Docs

    The HTTP interface lets you use ClickHouse on any platform from any programming language in a form of REST API. The HTTP interface is more limited than the native interface, but it has better language support.

  • https://t.me/clickhouse_ru
    конечно верный, не один терабайт данных так уже налили
  • https://t.me/clickhouse_ru
    @Valenvaryon #305981 07:08 PM, 01 Jan 2023
    вдобавок тупо строку, начинающуюся с settings просто ниже перенес - и запрос заработал нормально
  • https://t.me/clickhouse_ru
    @Valenvaryon #305982 07:09 PM, 01 Jan 2023
    если что, тело запроса gzip-нутое
  • https://t.me/clickhouse_ru
    что-то не воспроизводится
    clickhouse-client -q "CREATE TABLE test_post_settings (s String, v UInt64) ENGINE=MergeTree() ORDER BY v;"
    root@f31bdea2832b:/# printf "settings\t1" | curl --data-binary @- "http://127.0.0.1:8123?query=INSERT+INTO+test_post_settings+FORMAT+TabSeparated"
    root@f31bdea2832b:/# printf "settings.xml \t1" | curl --data-binary @- "http://127.0.0.1:8123?query=INSERT+INTO+test_post_settings+FORMAT+TabSeparated"

    gzip правда не пробовал...
  • https://t.me/clickhouse_ru
    @Valenvaryon #305984 07:21 PM, 01 Jan 2023
    интересно, попробую повторить попозже
  • https://t.me/clickhouse_ru
    @miseryiam #305985 09:28 PM, 01 Jan 2023
    Добрый вечер, есть 4 таблицы идентичных по структуре, надо во все выполнить одинкаковый запрос запрос и вывести результат, как это можно реализовать? Пыталась гуглить всякие loop процедуры и т.п., но ничего подобного не нашла
    Запрос по типу SELECT count(*) as $ FROM table_$. $ - в данном случае номер таблицы. Название всех таблиц содержит tablename_number
  • 02 January 2023 (33 messages)
  • https://t.me/clickhouse_ru
    Merge table engine
    merge table function
  • https://t.me/clickhouse_ru
    @yatoba ↶ Reply to #305985 #305987 01:19 AM, 02 Jan 2023
    вроде про union речь
  • https://t.me/clickhouse_ru
    Merge Table Engine | ClickHouse Docs

    The Merge engine (not to be confused with MergeTree) does not store data itself, but allows reading from any number of other tables simultaneously.

  • @nullptr_alike #305989 09:17 AM, 02 Jan 2023
    Добрый день! Гуглил гуглил. Но так и не понял можно ли в кликхаус из коробки лить данные прометеуса и потом их также анализировать в графане? Или может кто подскажет есть ли лучшее решение для персистентного хранения метрик с ттл?
  • https://t.me/clickhouse_ru
    @konnectrl #305990 09:38 AM, 02 Jan 2023
    GitHub - VKCOM/statshouse: StatsHouse is a highly-available, scalable, multi-tenant monitoring system
    https://github.com/VKCOM/statshouse
    GitHub - VKCOM/statshouse: StatsHouse is a highly-available, scalable, multi-tenant monitoring system

    StatsHouse is a highly-available, scalable, multi-tenant monitoring system - GitHub - VKCOM/statshouse: StatsHouse is a highly-available, scalable, multi-tenant monitoring system

  • https://t.me/clickhouse_ru
    @konnectrl #305991 09:38 AM, 02 Jan 2023
    Посмотрите на этот проект
  • Спасибо, посмотрю. Правда у меня сразу возник вопрос как в эту систему налить данные с помощью vector.dev
  • посмотрите еще https://victoriametrics.com/ . не clickhouse
    VictoriaMetrics: Simple & Reliable Monitoring for Everyone

    Incredibly fast time series database and easy-to-use high performance monitoring solutions simple and reliable for everyone. VictoriaMetrics Database Solutions.Incredibly fast time series database and easy-to-use high performance monitoring solutions simple and reliable for everyone. VictoriaMetrics Database Solutions.

  • У меня проект небольшой. Не хочу плодить сущности в каждой из которых надо неплохо разбираться
  • qryn: the polyglot monitoring and observability stack

    Lqryn is the polyglot monitoring and observability stack for ClickHouse (formerly known as cLoki). qryn can ingest and analyze logs, metrics and traces from any agent supporting Loki/LogQL, Prometheus/PromQL, OTLP/Tempo, Elastic, InfluxDB and many more!

  • https://t.me/clickhouse_ru
    @denissa182 #305997 12:46 PM, 02 Jan 2023
    Добрый день! Может тут кто подскажет. Использую clickhouse-operator версии 0.20.1
    Пробую при помощи него создать ClickHouseInstallation из данного примера

    По итогу развертывает новый экземпляр клика, но при запуске падает с ошибкой:

    2023.01.02 12:45:58.331012 [ 1 ] {} <Error> Application: DB::Exception: Either 'password' or 'password_sha256_hex' or 'password_double_sha1_hex' or 'no_password' or 'ldap' or 'kerberos' or 'ssl_certificates' must be specified for user clickhouse_operator.: while parsing user 'clickhouse_operator' in users configuration file: while loading configuration file '/etc/clickhouse-server/users.xml'
    2023.01.02 12:45:58.331025 [ 1 ] {} <Information> Application: shutting down
    2023.01.02 12:45:58.331030 [ 1 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem
    2023.01.02 12:45:58.331219 [ 47 ] {} <Information> BaseDaemon: Stop SignalListener thread
    Stream closed EOF for clickhouse/chi-settings-03-cls1-0-0-0 (clickhouse)

    Бага в операторе?
    clickhouse-operator/05-settings-03-2-user2.yaml at master · Altinity/clickhouse-operator

    The Altinity Operator for ClickHouse creates, configures and manages ClickHouse clusters running on Kubernetes - clickhouse-operator/05-settings-03-2-user2.yaml at master · Altinity/clickhouse-oper...

  • https://t.me/clickhouse_ru
    Текст ошибки вы читали?
  • https://t.me/clickhouse_ru
    @denissa182 #305999 12:54 PM, 02 Jan 2023
    Читал. Я последний раз клик использовал года 4 назад. Сейчас возникла потребность быстро развернуть инсталяцию клика на потестить и тут такое
  • https://t.me/clickhouse_ru
    @denissa182 #306000 12:55 PM, 02 Jan 2023
    Не совсем понимаю как интерпретировать ошибку
  • https://t.me/clickhouse_ru
    @denissa182 #306001 12:56 PM, 02 Jan 2023
    Кажется дошло
  • https://t.me/clickhouse_ru
    @denissa182 #306002 01:00 PM, 02 Jan 2023
    Прошу прощение за беспокойство. Пофиксил кажется
  • https://t.me/clickhouse_ru
    @s_nikolajus #306003 02:04 PM, 02 Jan 2023
    Привет специалистам! Воможно ли при проблемах с лидером Зукипера (рестартовал какое-то время и был недоступен ЗК кластер), что инсерты могут быть дуплицированы? Мы заметили что при рестарте Зукипера, появились одинаковые записи в таблице в то же самое время. Таблицы ушли в Read-only на какое то время.
  • https://t.me/clickhouse_ru
    @ikeniborn #306004 03:00 PM, 02 Jan 2023
    Добрейшего нового!!!
    При выполнении запроса падает с ошибкой
    12:20:10 :HTTPDriver for http://:8123 returned response code 500)
    12:20:10 Code: 373. DB::Exception: Session is locked by a concurrent client. (SESSION_IS_LOCKED) (version 22.12.1.1752 (official build))
    Что то гугл пока молчит. Есть Мысли? Гдето может параметр какой подкрутить. Заранее спасибо
  • https://t.me/clickhouse_ru
    GitHub - metrico/qryn: qryn is a polyglot, high-performance observability framework for ClickHouse (formerly cLoki). Ingest and analyze logs, metrics and traces from any agent supporting Loki, Prometheus, OTLP, Tempo, Elastic, InfluxDB and more!

    qryn is a polyglot, high-performance observability framework for ClickHouse (formerly cLoki). Ingest and analyze logs, metrics and traces from any agent supporting Loki, Prometheus, OTLP, Tempo, El...

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

    ошибка означает что у вас несколько паралельных запросов с одинаковым session_id параметром

    https://clickhouse.com/docs/en/interfaces/http
    HTTP Interface | ClickHouse Docs

    The HTTP interface lets you use ClickHouse on any platform from any programming language in a form of REST API. The HTTP interface is more limited than the native interface, but it has better language support.

  • https://t.me/clickhouse_ru
    хотя не, шаблон правильный, странно что у вас ошибка возникла
  • @and2sky #306011 05:08 PM, 02 Jan 2023
    Подскажите работа neighbor() связана с partition - если select идет по нескольким - сложилось впечатление что только в рамках partition выбираются соседи только?
  • https://t.me/clickhouse_ru
    Нет, по блокам связаный
  • а что значит блоки в данном случае?
    если я одним select достаю данные из разных partition
  • https://t.me/clickhouse_ru
    max_block_size настройка вам нужна
  • https://t.me/clickhouse_ru
    Ну давайте, логически подумаем, как читать параллельно ? Блоками ? Какие блоки могут быть в Clickhouse ? Какого они могут быть размера ? Разве только партиции ?
  • https://t.me/clickhouse_ru
    @konnectrl #306016 05:21 PM, 02 Jan 2023
    Чтобы найти соседа, есть оконные функции
  • @and2sky #306018 05:23 PM, 02 Jan 2023
    спасибо за помощь
  • https://t.me/clickhouse_ru
    Это dbt 1.3.1 в 4 потока. Драйвер dbt-clickhouse 1.3.1. Там данных много несколько миллиардов с вложенными запросами. Обработка пишет в null далее это все захватывается матвью в стейджинг. Как отрабатывает переливается в таргет схему. Вот если данных много и запрос выполняется больше 10-15 минут то возникает эта ошибка. Дбт выдает в консоле ошибку. Но в бд в процессах все еще запрос выполняетсЯ.
  • https://t.me/clickhouse_ru
    Создайте issue об ошибки на github'e драйвера
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/dbt-clickhouse/

    вот тут создайте issue
    приведите минимальный пример dbt скрипта на котором восроизводится
    GitHub - ClickHouse/dbt-clickhouse: The Clickhouse plugin for dbt (data build tool)

    The Clickhouse plugin for dbt (data build tool). Contribute to ClickHouse/dbt-clickhouse development by creating an account on GitHub.

  • 03 January 2023 (13 messages)
  • https://t.me/clickhouse_ru
    @sergeidanilovi4 #306025 02:03 PM, 03 Jan 2023
    Всем привет и с Новым годом!
    Подскажите, пожалуйста, в чём может быть дело: при выполнении любого запроса (даже select 1;) кликхаус виснет. Крутится ↙️ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.). Выходить приходится через Ctrl+C. Вот лог ошибки. Перезагрузка сервера помогает, но только где-то на пять запросов. потом всё снова виснет.
    2023.01.03 16:36:27.071945 [ 2413 ] {e4350ab5-2768-4451-bbdc-dfab63bf1490} <Erro - Pastebin.com

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

  • https://t.me/clickhouse_ru
    @ilejn #306026 03:18 PM, 03 Jan 2023
    Выглядит странно. Какой клиент вы используете? Если родной, то соответствует ли версия клиента версии сервера? Нет ли каких-то сетевых хитростей в вашем окружении?
    Если использовать clickhouse-client прямо на том же хосте, что и сервер, все будет так же?
  • https://t.me/clickhouse_ru
    Клиент и сервер версии 22.12.1. Всё стоит на ноутбуке. Сетевых хитростей нет, но у меня есть база данных, в которой были таблицы MaterializedPostgreSQL. Они брали данные с другого сервера, на котором стоял постгрес. Теперь тот сервер с постгресом не работает. Похоже, что ошибка происходит из-за того, что MaterializedPostgreSQL стучится к тому серверу и не получает ответа. Поскольку всё это было в экспериментальных целях, сейчас можно удалить эти базы. Однако после выполнения DROP DATABASE, эти базы появляются снова. Можно ли их полностью удалить?
  • https://t.me/clickhouse_ru
    сами по себе они не могут появляться

    у вас там docker?
    оно там случайно не создается через /docker-entrypoint-initdb.d/ ?
  • https://t.me/clickhouse_ru
    Нет, не докер. Просто поверх дебиана стоит. Уточню: базы не появляются снова, а выдают ошибку при удалении:
    LAPTOP-KKAUEF7C.localdomain :) drop database postgres_db1;

    DROP DATABASE postgres_db1

    Query id: aeed5580-821f-4301-933e-8bc77e7ae078

    0 rows in set. Elapsed: 0.031 sec.

    Received exception from server (version 22.12.1):
    Code: 1001. DB::Exception: Received from localhost:9000. DB::Exception: pqxx::broken_connection: connection to server at "81.163.22.203", port 5432 failed: Connection refused
    Is the server running on that host and accepting TCP/IP connections?
    . (STD_EXCEPTION)
  • https://t.me/clickhouse_ru
    а это...
    https://github.com/ClickHouse/ClickHouse/issues/41922
    can't DROP DATABASE with ENGINE=MaterializedPostgreSQL after successfully create · Issue #41922 · ClickHouse/ClickHouse

    Describe what's wrong following queries SET allow_experimental_database_materialized_postgresql=1; CREATE DATABASE db1_postgres ENGINE = MaterializedPostgreSQL('postgres-host.domain...

  • https://t.me/clickhouse_ru
    @BloodJazMan #306032 03:44 PM, 03 Jan 2023
    вообще все эти Materialized
    experimental

    соответсвенно на продакшен не годятся...
  • https://t.me/clickhouse_ru
    Да, это оно. Тогда мне поставить 22.3 и из неё удалить?
  • https://t.me/clickhouse_ru
    может не получиться даунгрейд сделать...
    там всякие Ordinary \ Atomic могут мешать...

    но попробуйте...
  • https://t.me/clickhouse_ru
    Даунгрейдил до 22.3, получилось удалить эти базы. Похоже, всё работает, спасибо!
  • @1017884201 #306036 04:35 PM, 03 Jan 2023
    Привет, подскажите, https://hub.docker.com/r/clickhouse/clickhouse-server/#:~:text=How%20to%20extend%20this%20image эти скрипты сработают для образа или контейнера?
  • https://t.me/clickhouse_ru
    /docker-entrypoint-initdb.d
    это для контейнера

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

    и через volume в контейней в /docker-entrypoint-initdb.d/ монтируете
    при старте исполняется
  • Благодарю
  • 04 January 2023 (25 messages)
  • https://t.me/clickhouse_ru
    @zduissekov #306042 04:25 AM, 04 Jan 2023
    всем доброго времени дня
    можете подсказать пож-та
    это нормально, что потребление ОЗУ стабильно растет, за 2 недели поднялся с 20 до 67% (после того как отключил swap) и продолжает расти?
  • Доброе утро, у вас случаем никакие таблицы не джоинятся?
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/

    от версии зависит

    это может быть и memleak
  • https://t.me/clickhouse_ru
    а можно график с количеством запросов и процессор, ( по возможности IO)
  • https://t.me/clickhouse_ru
    ну и смотрите что по времени у вас 22 dec случилось что память резко отдали...
  • https://t.me/clickhouse_ru
    это мог быть и рестарт
  • https://t.me/clickhouse_ru
    swap отключили
  • https://t.me/clickhouse_ru
    гхм, извините в как вы RAM Usage считаете?

    это RSS или какой то другой параметр типа VIRT?
  • https://t.me/clickhouse_ru
    @zduissekov #306050 05:04 AM, 04 Jan 2023
    ((node_memory_MemTotal_bytes{instance="$node",job="$job"} - node_memory_MemFree_bytes{instance="$node",job="$job"}) / (node_memory_MemTotal_bytes{instance="$node",job="$job"} )) * 100
    формула для ram
  • https://t.me/clickhouse_ru
    @zduissekov #306051 05:04 AM, 04 Jan 2023
    из прометея node_exporter
  • https://t.me/clickhouse_ru
    то есть swap Отключили с рестартом clickhouse ? так?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @rjs45 #306054 09:35 AM, 04 Jan 2023
    Всем привет.
    Можно ли как-то при помощи select from mysql(...) вытащить из мускуля поле datetime со значением меньше 1970 года?
    В КХ есть DateTime64, с диапазоном 1900 - 2229 гг. но при использовании select from mysql(...) КХ datetime поля вытаскивает сначала в DateTime.
    Есть ли способ указать дефолтный тип для каста datetime полей из мускуля в клику (в стрингу нам тоже подошло бы)?

    Сделать вьюху на стороне мускуля возможности нет.
    select from jdbc пробовали - не подходит по другим причинам
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306054 #306055 09:51 AM, 04 Jan 2023
    settings:
    mysql_datatypes_support_level decimal,datetime64 1 Which MySQL types should be converted to corresponding ClickHouse types (rather than being represented as String). Can be empty or any combination of 'decimal', 'datetime64', 'date2Date32' or 'date2String'. When empty MySQL's DECIMAL and DATETIME/TIMESTAMP with non-zero precision are seen as String on ClickHouse's side.

    у меня этот сеттинг изменен, чтобы время атоматически конвертировалось из datetime64. Но можно такую колонку прислать как строку, и уже на стороне КХ разобрать как вам надо.
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #306055 #306056 10:06 AM, 04 Jan 2023
    Мы из этого юзаем date2string, чтобы даты раньше 1970го была возможность затянуть. Попробуем комбинировать с datetime64
  • https://t.me/clickhouse_ru
    @elicron #306057 02:11 PM, 04 Jan 2023
    всем привет. подскажите пожалуйста, не могу понять что за ошибка. использую питоновский модуль clickhouse_connect, client.command'ом дергаю с csv файла queries... текст ошибки:
    Code: 62. DB::Exception: Syntax error (Multi-statements are not allowed): failed at position 76 (end of query): ;
  • мб запрос показали бы?
  • https://t.me/clickhouse_ru
    @elicron #306059 02:12 PM, 04 Jan 2023
    а там их мноого
  • https://t.me/clickhouse_ru
    @elicron #306060 02:12 PM, 04 Jan 2023
    и я не могу понять на котором все валится
  • ну в логах можно найти запрос, который падает с ошибкой
  • наверное объединяете каким-то образом запросы и разделяете их, и скорее всего это не поддерживается
  • https://t.me/clickhouse_ru
    @elicron #306063 02:15 PM, 04 Jan 2023
    ммм... понятно.. попробую найти. спасибо
  • https://t.me/clickhouse_ru
    @den09 #306064 02:17 PM, 04 Jan 2023
    в query_log можно смотреть, скорее вот с таким типом (ExceptionWhileProcessing) и уже вычленять от того где вы там что дергаете
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    Кажется, он говорит, что нельзя много запросов в одном отправлять
  • 05 January 2023 (91 messages)
  • https://t.me/clickhouse_ru
    @sguryan #306070 05:53 AM, 05 Jan 2023
    Привет, подскажите, пожалуйста, где можно почитать про оптимизацию запросов на кликхаус, какие-то особенности, которые именно относятся к этому движку
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/optimize

    попробуйте разобраться в чем разница между sorting key и primary key
    и как работают data skip indexes

    станет сильно понятнее куда копать...
  • https://t.me/clickhouse_ru
    @a1imkul0v707 #306072 06:46 AM, 05 Jan 2023
    Всем привет, как изменить тип данных из стринг на интежер?
  • alter table db.table modify column column_str UInt32;

    как пример
  • https://t.me/clickhouse_ru
    а как можно сохранить 00 в начале стринга
  • https://t.me/clickhouse_ru
    @a1imkul0v707 #306075 06:51 AM, 05 Jan 2023
    например 0011555851
    когда на инт переводишь эти нули исчезают
    это можно решить?
  • ну нет
    число 100 есть, а числа 00100 нет насколько мне известно
    посмотрите типизацию
    https://clickhouse.com/docs/en/sql-reference/data-types/int-uint/#int-ranges
  • https://t.me/clickhouse_ru
    =) в десятичной системе нет в двоичной 00100 бывает =)
  • https://t.me/clickhouse_ru
    SQL Error [48] [07000]: Code: 48. DB::Exception: Alter of type 'MODIFY_COLUMN' is not supported by storage Log. (NOT_IMPLEMENTED) (version 22.11.1.1360 (official build))
    , server ClickHouseNode(addr=http:192.168.122.22:8123, db=default)@-1884179265
  • https://t.me/clickhouse_ru
    ну, чтобы тебе понять всю глубину твоего вопроса

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

    сколько байт уходит на хранение 0011555851 как строки и сколько байт для 11555851 как числа...
  • https://t.me/clickhouse_ru
    как решить?
  • https://t.me/clickhouse_ru
    можешь в chat.openai.com
    спросить что значит эта ошибка...
  • https://t.me/clickhouse_ru
    ну, прочитать что написано в ошибке понять что это значит...
    дальше решение само придет
  • https://t.me/clickhouse_ru
    ты не искал
    и не хочешь думать, это плохо

    у тебя таблица типа engine=Log
    она не может менять структуру и типы полей

    https://clickhouse.com/docs/en/engines/table-engines/log-family/
    почитай тут
    Log Engine Family | ClickHouse Docs

    These engines were developed for scenarios when you need to quickly write many small tables (up to about 1 million rows) and read them later as a whole.

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bvt123 #306086 08:10 AM, 05 Jan 2023
    По какой причине узел кластера переходит в статус Inactive в system.distributed_ddl_queue и как его вернуть в Active без рестарта? Не нашел команд для манипуляций с distributed_ddl_queue
    Возможно были проблемы с ZK, но это не точно. Сейчас ZK работает нормально, команды расползаются по кластеру, только нода инициатор сидит в inactive и не исполняет.
  • Telegraf умеет складывать в клик, vector умеет складывать в клик
  • Вектор да, я даже так сделал, но я хотел чтобы потом можно было воспользоваться готовыми шаблонами для графаны. Мне подсказали qryn вроде хороший комбайн. Только пока завести не получилось
  • https://t.me/clickhouse_ru
    потому что это readonly таблица нет там никаких манипуляций, это просто прокси таблица к ZK в котором по определенному пути distributed_ddl лежит

    смотрите на проблемном узле
    SELECT event_time, ProfileEvent_ZooKeeperHardwareExceptions FROM system.metric_log WHERE ProfileEvent_ZooKeeperHardwareExceptions > 0 AND event_date = today()

    active = 0
    обычно значит что не успело в течении 180 секунд ваш distributed ddl исплониться
  • https://t.me/clickhouse_ru
    а что конкретно в qryn у вас не заводится?
  • У меня была схема , но я не проверял как оно работает на деле. Сейчас поищу связку софта.
  • Вообще данные послать не могу на ендпоинты. Ни логи ни метрики
  • https://t.me/clickhouse_ru
    ошибку какую то выдает ? какую?

    qryn со своей стороны какую то ошибку выдает?
  • Там говорит парсер не подходит. Я прямо с docker_logs в loki
  • Можете прислать как у вас работает если у вас вектор и с docker_logs вы сорс берете
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306089 #306096 08:29 AM, 05 Jan 2023
    Спасибо. Заметим, что chatgpt на такой вопрос по делу ответить не может
  • https://t.me/clickhouse_ru
    у меня никак не работает, я надеялся из вас ваши ошибки вытянуть чтобы понять в чем у вас косяк...

    советую с ошибками тогда идти в issue на github в qryn

    там Лоренцо нормально саппортит это все...
  • Да я скорее нуб и просто опозорюсь ) попробую сам разобраться сначала
  • https://t.me/clickhouse_ru
    @simonproud #306099 08:32 AM, 05 Jan 2023
    Ребят, короче такая история. Сижу туплю как сделать из
    quantity | date
    1 | 2022-01-01
    3 | 2022-01-03

    вот это:
    quantity | date
    1 | 2022-01-01
    1 | 2022-01-02
    3 | 2022-01-03

    подскажет кто?
  • https://t.me/clickhouse_ru
    SYSTEM RESTART REPLICAS
    на проблемном узле помогает?

    еще желательно grep DDLWorker /var/log/clickhouse-server/clickhouse-server.log глянуть на проблемном узле
  • ORDER BY Clause | ClickHouse Docs

    The ORDER BY clause contains a list of expressions, which can each be attributed with DESC (descending) or ASC (ascending) modifier which determine the sorting direction. If the direction is not specified, ASC is assumed, so it’s usually omitted. The sorting direction applies to a single expression, not to the entire list. Example: ORDER BY Visits DESC, SearchPhrase.

  • https://t.me/clickhouse_ru
    @simonproud #306102 08:35 AM, 05 Jan 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    клиентское приложение какое?

    или вам в отчеты?

    ORDER BY WITH FILL
    внутрь subquery

    плюс WINDOW FUNCTIONS

    ну и LAG попробовать if(field=0,LAG (...) OVER , field)
  • services:
    type: docker_logs
    docker_host: /var/run/docker.sock
    include_images:
    - sm_bot
    - sm_cmds
    - sm_director
    loki:
    type: loki
    inputs:
    - services
    labels:
    forwarder: vector
    endpoint: http://qryn:3100/loki/api/v1/push
    encoding:
    codec: json

    qryn | {"level":30,"time":1672907807529,"pid":19,"hostname":"c959eb2fcdbb","name":"qryn","reqId":"req-3","req":{"method":"POST","url":"/loki/api/v1/push/loki/api/v1/push","hostname":"qryn:3100","remoteAddress":"192.168.64.5","remotePort":37844},"msg":"incoming request"}
    qryn | {"level":50,"time":1672907807530,"pid":19,"hostname":"c959eb2fcdbb","name":"qryn","reqId":"req-3","err":"undefined parser\nError: undefined parser\n at Parser.fn (/app/parsers.js:265:15)\n at ContentTypeParser.run (/app/node_modules/fastify/lib/contentTypeParser.js:175:27)\n at handleRequest (/app/node_modules/fastify/lib/handleRequest.js:41:33)\n at runPreParsing (/app/node_modules/fastify/lib/route.js:528:5)\n at next (/app/node_modules/fastify/lib/hooks.js:168:7)\n at /app/node_modules/@fastify/cors/index.js:130:12\n at resolveOriginOption (/app/node_modules/@fastify/cors/index.js:88:129)\n at onRequest (/app/node_modules/@fastify/cors/index.js:90:3)\n at Object.onRequestCors (/app/node_modules/@fastify/cors/index.js:32:7)\n at hookIterator (/app/node_modules/fastify/lib/hooks.js:246:10)","msg":"undefined parser"}
  • https://t.me/clickhouse_ru
    похоже на ошибку в qryn
    либо на ошибку в конфигурации qryn

    думаю вам расковырять надо строку со стекттрейсом

    и покажите как вы qryn то подинмаете?
    его тут нет нигде
  • qryn:
    container_name: qryn
    image: qxip/qryn:latest
    ports:
    - 3100:3100
    environment:
    - CLICKHOUSE_SERVER=ch
    - CLICKHOUSE_AUTH=username:usersecret
    - CLICKHOUSE_DB=qryn
    - DEBUG=true
    depends_on:
    clickhouse:
    condition: service_healthy
  • В qryn все по дефолту
  • У меня и на метриках такая же фигня. На ендпоинт прометеуса в qryn пишу
  • https://t.me/clickhouse_ru
    вот ваш стектрейс
    undefined parser
    Error: undefined parser
    at Parser.fn (/app/parsers.js:265:15)
    at ContentTypeParser.run (/app/node_modules/fastify/lib/contentTypeParser.js:175:27)
    at handleRequest (/app/node_modules/fastify/lib/handleRequest.js:41:33)
    at runPreParsing (/app/node_modules/fastify/lib/route.js:528:5)
    at next (/app/node_modules/fastify/lib/hooks.js:168:7)
    at /app/node_modules/@fastify/cors/index.js:130:12
    at resolveOriginOption (/app/node_modules/@fastify/cors/index.js:88:129)
    at onRequest (/app/node_modules/@fastify/cors/index.js:90:3)
    at Object.onRequestCors (/app/node_modules/@fastify/cors/index.js:32:7)
    at hookIterator (/app/node_modules/fastify/lib/hooks.js:246:10)

    судя по всему что-то не то с заголовком Content-Type

    надо трафик снять через tcpdump и посмотреть что идет на endpoint в этом заголовке
  • @readonly8 #306111 09:41 AM, 05 Jan 2023
    Добрый день, коллеги! Есть ли какое-нибудь обучение по CH в Казахстане, а именно в Алматы? Либо онлайн, проверенные. Буду благодарен за информацию!
  • https://t.me/clickhouse_ru
    Онлайн на английском (но если группа большая может быть и на русском что-то можно было бы устроить)
    https://altinity.com/clickhouse-training/

    Ну и
    https://clickhouse.com/learn/
    ClickHouse Training Built For Your Use Case — Altinity

    Learn about ClickHouse architecture, optimize SQL queries, design high-performance analytic apps with Altinity Developer Training. Lab exercises included!

  • https://t.me/clickhouse_ru
    @simonproud #306113 09:56 AM, 05 Jan 2023
    ребят, подскажет кто по INTERPOLATE? не работает , ругается на синтаксис
  • https://t.me/clickhouse_ru
    @120048309 #306114 09:58 AM, 05 Jan 2023
    Всем привет, столкнулся с проблемой создания словаря из базы монги с авторизацией.

    Есть предположение что авторизация в монге осуществляется через базу 'admin', а данные для словаря лежат в другой базе и в конфиге указывается откуда брать данные для словря
  • https://t.me/clickhouse_ru
    @120048309 #306115 09:59 AM, 05 Jan 2023
    Может есть другой интерфейс авторизации в монгу?
  • https://t.me/clickhouse_ru
    @simonproud #306116 10:05 AM, 05 Jan 2023
    select user_api_key_id,date_in_period, quantity from table order by user_api_key_id WITH FILL, date_in_period WITH FILL INTERPOLATE выдает ошибку синтаксиса
  • https://t.me/clickhouse_ru
    @simonproud #306117 10:05 AM, 05 Jan 2023
    может кто подсказать?
  • host_metrics:
    type: host_metrics
    collectors:
    - cgroups
    scrape_interval_secs: 15

    metrics:
    type: prometheus_remote_write
    inputs:
    - host_metrics
    endpoint: http://qryn:3100/api/v1/prom/remote/write
    default_namespace: service

    qryn | {"level":50,"time":1672913134587,"pid":19,"hostname":"a80da3112272","name":"qryn","reqId":"req-4","err":"Unsupported Content-Encoding: snappy\nFastifyCompressError: Unsupported Content-Encoding: snappy\n at Object.preParsing (/app/node_modules/@fastify/compress/index.js:315:24)\n at next (/app/node_modules/fastify/lib/route.js:552:16)\n at preParsingHookRunner (/app/node_modules/fastify/lib/route.js:575:3)\n at runPreParsing (/app/node_modules/fastify/lib/route.js:526:5)\n at next (/app/node_modules/fastify/lib/hooks.js:168:7)\n at Object.onRequest (/app/node_modules/@fastify/compress/index.js:205:5)\n at hookIterator (/app/node_modules/fastify/lib/hooks.js:246:10)\n at next (/app/node_modules/fastify/lib/hooks.js:174:16)\n at /app/node_modules/@fastify/cors/index.js:130:12\n at resolveOriginOption (/app/node_modules/@fastify/cors/index.js:88:129)","msg":"Unsupported Content-Encoding: snappy"}
  • https://t.me/clickhouse_ru
    ну тут более понятно

    Unsupported Content-Encoding: snappy

    это способ сжатия который

    попробуйте на gzip переключиться со стороны той штуки которая в remote/write пишет
  • В общем по дефолту что-то не работает ничего из того что я пробовал. В метриках ему не нравится snappy хотя он нигде не включен и непонятно как его отключить
  • Да я бы отключил, только в векторе нет такой настройки
  • https://t.me/clickhouse_ru
    метрики кто пишет?
  • Опять же вектором. С докера собираю. В консоль если вывести все красиво. А передать в qryn не получается
  • https://t.me/clickhouse_ru
    https://vector.dev/docs/reference/configuration/sinks/loki/#configuration

    compression = "gzip"
    поставьте попробуйте
    Loki sink

    Deliver log event data to the Loki aggregation system

  • vector | 2023-01-05T10:13:38.631858Z ERROR vector::cli: Configuration error. error=unknown field compression, expected one of endpoint, default_namespace, buckets, quantiles, batch, request, tenant_id, tls, auth, aws, acknowledgements for key sinks.metrics
  • Это же локи. А на снаппи жалуется в метриках. А там компрессии нет поля такого
  • Вектром в прометеус работает из коробки
  • https://t.me/clickhouse_ru
    ну судя по https://github.com/metrico/qryn/blob/master/docker/docker-compose.yml
    они с opentelemetry коллектором в основном тестируют

    я думаю вам надо ваш docker-compose и стек ошибки показать в github qryn
    qryn/docker-compose.yml at master · metrico/qryn

    qryn is a polyglot, high-performance observability framework for ClickHouse (formerly cLoki). Ingest and analyze logs, metrics and traces from any agent supporting Loki, Prometheus, OTLP, Tempo, El...

  • https://t.me/clickhouse_ru
    а заодно в github vector сделать issue На тему того что комперсиию в prometheus_remote_write было бы не плохо настраиваемой сделать
  • У вектора нет sink opentelemetry так что и тут потестить не получится
  • https://t.me/clickhouse_ru
    Когда vector в qryn слал через since: Loki, тоже проблема была
  • Не решили?
  • https://t.me/clickhouse_ru
    @denissa182 #306133 10:46 AM, 05 Jan 2023
    Сжатие убрал и все завелось
  • https://t.me/clickhouse_ru
    @denissa182 #306134 10:46 AM, 05 Jan 2023
    Но я так чисто потестировать ковырял. В целом работает или нет.
  • @5299838755 #306136 12:03 PM, 05 Jan 2023
    Подскажите плз, опасно ли апнуться с версии 22.10.2 на 22.11 или 22.12 - много ли неожиданностей нас может ждать? Хочется апнуться из за бага с lowerUTF в 22.10.2
  • https://t.me/clickhouse_ru
    Дак обновитесь до 22.10.4.23 и потестите
  • https://t.me/clickhouse_ru
  • @akamuza #306139 01:23 PM, 05 Jan 2023
    Сталкивался ли кто-то типом hstore от постгреса? Делаем импорт из источника постгрес базы и есть поле типа hstore. Сейчас оно импортируется как String, например,
    "А"=>"2400", "PAN"=>"XXXXXXXXXXX67XX", "RRN"=>"066842979174"
    Можно ли это привести, например, в json?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306139 #306140 01:26 PM, 05 Jan 2023
    regex вам поможет. Ищите в доке функции extractAllGroupsHorizontal/Vertical Там есть хороший пример как такие данные свернуть в удобную структуру.
  • Спасибо
  • @satanch #306145 05:33 PM, 05 Jan 2023
    добрый вечер!

    может кто-то знает, под докером кликхаус крашится после сообщения:

    Saved preprocessed configuration to '/var/lib/clickhouse/preprocessed_configs/users.xml'.
  • @satanch #306146 05:33 PM, 05 Jan 2023
    ничего больше не выдает, просто погибает
  • @satanch #306147 05:34 PM, 05 Jan 2023
    EXITED (70)
  • А логи смотрели, логи контейнера, логи кх
  • так вот в нем и последнее сообщение это
  • @satanch #306150 05:38 PM, 05 Jan 2023
    нашел в чем дело
    следовал инструкции https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
  • @satanch #306151 05:39 PM, 05 Jan 2023
    как только прокидываю /config.d/query_log_ttl.xml стартовать кх перестает
  • А что внутри?
  • @satanch #306154 05:39 PM, 05 Jan 2023
    <?xml version="1.0"?>
    <yandex>
    <query_log>
    <database>system</database>
    <table>query_log</table>
    <engine>ENGINE = MergeTree PARTITION BY (event_date)
    ORDER BY (event_time)
    TTL event_date + INTERVAL 7 DAY DELETE
    </engine>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </query_log>
    </yandex>
  • @satanch #306155 05:45 PM, 05 Jan 2023
    может ему не понравилось что еще не было системной таблицы
  • а разве нет логов у контейнера?
  • есть и в нем нет ошибки
  • @satanch #306158 05:47 PM, 05 Jan 2023
    просто выход с кодом 70
  • @satanch #306159 05:51 PM, 05 Jan 2023
    ладно, это позже можно разобрать, пока не в проде

    вопрос еще такой, есть таблица с движком RabbitMQ, есть ли какой то лог системный?
  • @satanch #306160 05:51 PM, 05 Jan 2023
    посмотреть что происходит, нет ли проблем
  • @satanch #306161 05:52 PM, 05 Jan 2023
    описаны virtual columns, это все?
  • @satanch #306162 05:52 PM, 05 Jan 2023
    никакого дебаг логгинга типа законнектился, что то пришло, не удалось распарсить JSON. брокен месседж
  • примаунтить volumes логов для отладки мб, чтобы хоть увидеть что там пишет
  • да видимо
  • https://t.me/clickhouse_ru
    @miseryiam #306166 08:22 PM, 05 Jan 2023
    Доброй ночи, подскажите возможно ли в кликхаусе использовать такую конструкцию?
    SELECT case column_value_1 when column_value_1 LIKE ('%неизвестность%') then 'известность' else column_value_1 end ...?

    При попытке использовать ругается так: First argument and elements of array of second argument of function transform must have compatible types: both numeric or both strings.: while executing 'FUNCTION caseWithExpression, кастуй в стринг/не кастуй, всё время вылазит
  • Тип в значения после then и после else должен совпадать, покажите тип колонки column_value_1 (например describe table)
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #306166 #306168 08:33 PM, 05 Jan 2023
    if(col like ‘pattern’, ‘str ’, toString(col)) ?
  • 06 January 2023 (36 messages)
  • https://t.me/clickhouse_ru
    @rjs45 #306171 07:27 AM, 06 Jan 2023
    Доброго дня.
    Подскажите, а откуда КХ пытается прочитать типы при загрузке из CSV?
    У меня есть валидный csv файл, в котором количество колонок-хедеров соответствует количеству колонок в строках с данными. Но получаю вот такое

    SELECT *
    FROM file('/var/lib/clickhouse/user_files/test.csv', 'CSVWithNames')
    LIMIT 2

    Received exception from server (version 22.8.6):
    Code: 117. DB::Exception: Received from localhost:9000. DB::Exception: The number of column names 96 differs with the number of types 93: Cannot extract table structure from CSVWithNames format file. You can specify the structure manually. (INCORRECT_DATA)
  • https://t.me/clickhouse_ru
    Ниоткуда, поэтому и предлагает указать руками
  • https://t.me/clickhouse_ru
    @200975316 #306173 08:20 AM, 06 Jan 2023
    Коллеги, не нашел в настройках выгрузки csv из S3 указание кодировки. У меня в файле win1251, и кириллица поплыла, можно ли где то указать кодировку
  • https://t.me/clickhouse_ru
    @joerex40 #306174 09:08 AM, 06 Jan 2023
    Всем привет!

    Подскажите, пожалуйста, почему может не работать SET DEFAULT ROLE ALL TO user; ?
    Я создал новую бд, выдал все права на нее роли и сделал роль DEFAULT для пользователя, но права у пользователя так и не появились.
  • https://t.me/clickhouse_ru
    В итоге заработало после того, как мы сделали ALTER другим ролям. Появилась гипотеза, что существует кеш ролей и он не всегда понимает, что пришло время обновиться.
  • https://t.me/clickhouse_ru
    @lenfant_terrible #306176 10:37 AM, 06 Jan 2023
    Подскажите, у меня есть таблица вида id, timestamp, val и id повторяются c разными timestamp. Мне нужно выбирать самую новую запись для каждого id. Нужно использовать MV? Записи в таблицу только добавляются и потом никак не меняются. Записи могут добавляться очень быстро.
  • argMax
  • https://t.me/clickhouse_ru
    + GROUP BY?
  • ну вы дополнительной инфы не дали, select argMax(id, timestamp) from table
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #306173 #306180 11:39 AM, 06 Jan 2023
    В каком смысле "поплыла"? Вы загружаете данные в ClickHouse или выгружаете из него?

    Если вы загрузили данные в cp1251, то они так и хранятся и так и достаются.
    Способа их перекодировать в utf8 прямо в ClickHouse нет (ну либо я о нем не знаю) , проще подготовить данные в нужной кодировке.
  • https://t.me/clickhouse_ru
    @200975316 #306181 11:49 AM, 06 Jan 2023
    да, csv в 1251 и функция S3 в базу кидает кириллицу в некорректной кодировке
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306180 #306182 12:10 PM, 06 Jan 2023
    а давайте спросим у chatGPT - https://pastila.nl/?01c55537/3949274e41cf86f5d81f8b04afd3ade2
    Ну как обычно - главным образом фантазии первокурсника на экзамене. Однако
    SELECT convertCharset('text in windows-1251 encoding', 'Windows-1251', 'UTF-8'); вроде как рабочий вариант
  • https://t.me/clickhouse_ru
    @ArturPap #306184 01:02 PM, 06 Jan 2023
    Приветствую! Всех с наступившим НГ!
    Помогите, пожалуйста, со следующим кейсом
    Есть клик-кластер: 2 шарда (по две реплики) + отдельно кластер keeper'a (3 ВМки)
    Версии везде 22.1.3.7
    Одна из keeper-нод приказала долго жить.
    Keeper ВМ'ка будет пересоздана с чистого листа, но теперь вопрос, что лучше/безопасней, добавить новую keeper-нод'у с новым ID, убрав старую из конфигурации, или забустрапить существующую под старым id/hostname?

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

    там еще есть такой момент что конфигурация списка хостов хранится внутри storage у keeper
    и есть ключ force-recovery
    чтобы стартовать

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

    говорю же - конфиг не перечитывается с состоянием нод
    и при старте список нод из storage приоритетнее чем данные из конфига
    якобы это так NuRaft работает
    но в упор не понимаю каким образом NuRaft как протокол должен влиять на то что приритетнее при построении кластера. конфиг или база =(
  • https://t.me/clickhouse_ru
    @BloodJazMan #306189 01:40 PM, 06 Jan 2023
    > Времени на полноценную проверку у меня нет
    это зря

    clickhouse team конечно объявляют что keeper production ready
    но как именно они его эксплуатируют и что делать в каждом конкретном кейсе пока не ясно
  • https://t.me/clickhouse_ru
    Добавление новых нод/миграцию я тестировал, был переезд на новый набор keeper-серверов в два этапа - сначала расширение с 3-х до 6-ти, затем уменьшение с 6-ти до 3-х. Все по нодно. Успешно.
  • https://t.me/clickhouse_ru
    то есть просто конфиг меняли в XML и перегружали keeper?
  • https://t.me/clickhouse_ru
    да, но, опять таки, за один раз одна нода выводилась/вводилась, с лагом между операциями
  • https://t.me/clickhouse_ru
    @ikeniborn #306195 06:00 PM, 06 Jan 2023
    Начал получить такие ошибки при сборке витрин через дбт
    Cannot open file /var/lib/clickhouse/store/53b/53bd3071-eb96-4c67-9a17-ae1912cb57f9/tmp_insert_all_60_60_0/price_change_from_price_ago_30d_percent.bin, errno: 24, strerror: Too many open files. (CANNOT_OPEN_FILE) (version 22.12.1.1752 (official build))
    Как победить. Клик поднять в кубике на обраpе altinity
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #306195 #306197 06:16 PM, 06 Jan 2023
    Это не по юлимитам ошибка?
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #306195 #306199 06:19 PM, 06 Jan 2023
    Ну и вы как собирали? У вас физически файлы в сторе есть? Выносили стор на pvc?
  • @evgeniy_souz #306200 06:40 PM, 06 Jan 2023
    Всем привет. Может кто сталкивался с такой проблемой: на одной из таблиц уменьшилии TTL примерно на год,записи и партиции удалились, файлы на тачке с ch в папке конкретно этой таблицы удалились, по запросу size из system.parts используемая память тоже уменьшилась на ~1Тб. но физически занимаемое место не уменьшилось никак, а даже через примерно час приросла на ~1тб…
  • https://t.me/clickhouse_ru
    Вы там бекапы не имеете?
    или FREEZE TABLE
  • https://t.me/clickhouse_ru
    Я и спрашиваю, куда копать. Я не собирал образ. это вопрос к девопсу. Как я понимаю надо править юлимиты
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #306202 #306203 07:28 PM, 06 Jan 2023
    Ну я бы посмотрел физическое наличие в поде этого диска, его содержимое. Потом на всякий случай увеличил бы юлимиты до адекватного значения, по дефолту это часто опускается
  • https://t.me/clickhouse_ru
    Спасибо! Я временно уменьшил количество потоков ДБТ с 4 до 3. вроде пока проблема ушла. У меня еще есть необходимосить держать таблицу с дневными партициями по ключу сортировки с большой гранулярностью. В итоге при работе с массивамми много файлов вычитывается.
  • Нет…
  • https://t.me/clickhouse_ru
    Ну тогда сравнивайте что находится в system.parts и на диске
  • Что именно сравнивать? Не совсем понял
  • https://t.me/clickhouse_ru
    bytes_on_disk из system.parts

    и контент /var/lib/clickhouse/store/...
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306207 #306209 07:51 PM, 06 Jan 2023
    парты на диске с партами в system.parts. В system.parts есть колонка "path", а все реальные парты вашей таблицы очень просто найти через find . -name some_column_from_table_in_Q.bin Дальше делаете подходящий join и находите свои потеряшки.
    Clickhouse активно работает с хардлинками, возможно где-то какой-то парт захардлинкался лишний раз.
  • https://t.me/clickhouse_ru
    у вас что в качестве kubernetes?
    cloud или baremetal?

    короче вам надо как то ulimit выставить

    или fs.file-max

    как это сделать сильно зависит от вашей инсталяции kubernetes
  • https://t.me/clickhouse_ru
    Спасибо. пошел в девопсу)
  • 07 January 2023 (16 messages)
  • https://t.me/clickhouse_ru
    @lenfant_terrible #306215 05:55 AM, 07 Jan 2023
    Как дедуплицировать таблицу? У меня MergeTree с PRIMARY KEY (id) и при этом ряды с одинаковыми id присутствуют.
  • https://t.me/clickhouse_ru
    потому что PRIMARY KEY
    это не UNIQUE как в других базах

    читайте про ReplacingMergeTree в доке
    попробуйте разобраться как работает
  • https://t.me/clickhouse_ru
    @amx_design1 #306218 07:48 AM, 07 Jan 2023
    🔥Инфографика для маркетплейсов🔥

    Привет, в поиске крутого дизайнера?
    Меня зовут Даниил - я дизайнер инфорграфики.

    Сделаю так, чтобы ваши карточки продавали!

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

    Цены ниже рынка🔥
  • https://t.me/clickhouse_ru
    @seriych #306221 05:15 PM, 07 Jan 2023
    Привет. Попробовал тут поставить КХ новомодным curl https://clickhouse.com/ | sh и получил внезапно version() 22.13.1.1476. Предполагал, что будет последняя релизная с гитхаба (сейчас там v22.12.2.25). Это так и задумано? Откуда вообще берется эта версия?
  • https://t.me/clickhouse_ru
    Дак вы уберите | sh, и посмотрите с какой ссылке скачивается
  • парты из system.parts по проблемной таблице совпадают с тем что есть на диске в /var/lib/clickhouse/data/default…
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306224 #306225 07:33 PM, 07 Jan 2023
    у вас база ordinary от старой версии? Нынче парты живут прежде всего в data/store
    Там у вас точно нет подозрительных партов уровнем выше в /var/lib/clickhouse/ ?
  • вот только счас нашел что есть файлы в папке /var/lib/clickhouse/shadow/71/data/default/ именно по этой таблице , и в том числе файлы которые удаленные по ттл
  • @evgeniy_souz #306227 07:35 PM, 07 Jan 2023
    что это за директория и отчего они там появились?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306226 #306228 07:38 PM, 07 Jan 2023
    а ведь вас сразу спросили про ALTER TABLE… FREEZE Но вы не сознались
    https://altinity.com/blog/introduction-to-clickhouse-backups-and-clickhouse-backup
    Introduction to ClickHouse Backups and clickhouse-backup

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

  • https://t.me/clickhouse_ru
    Support multiple dbt threads (session id per thread) · Issue #127 · ClickHouse/dbt-clickhouse

    When I run dbt Concurrency: 4 threads I get :HTTPDriver for http://...*:8123 returned response code 500) 16:09:35 Code: 373. DB::Exception: Session is locked by a concurrent client. (SESSION_IS_LOC...

  • https://t.me/clickhouse_ru
    В общем пока просто они не тестировали, добавили в бэклог.
  • да извиняюсь, но я не помню чтоб кто то делал freeze этой таблицы у нас…
  • и как вообще можно это увидеть кроме как в shadow посмотреть
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306232 #306233 08:13 PM, 07 Jan 2023
    Никак. В этом замысел. Freeze просто делает хардлинки. Почти мгновенно появляются "копии" партов, не занимающие место. После этого Clickhouse к ним уже не имеет никакого отношения, у него есть свои "копии", которые он мерджит и удаляет по мере необходимости. Предполагается что судьба файлов в shadow в ваших руках - забекапили и удалили. Ну или не удалили.
  • и то есть получается что кто то все таки сделал freeze на таблицу? или как то ещё по другому это могло произойти? и как их лучше удалить ? сделать unfreeze?
  • 08 January 2023 (36 messages)
  • https://t.me/clickhouse_ru
    @imt16r029 #306235 12:25 AM, 08 Jan 2023
    Всем привет
    Вопрос по таблице github_events на https://play.clickhouse.com/ - насколько долго она будет поддерживаться в актуальном состоянии? И кто ее поддерживает?
  • https://t.me/clickhouse_ru
    @imt16r029 #306236 12:25 AM, 08 Jan 2023
    И в BigQuery по github есть также таблицы:
    bigquery-public-data.github_repos.commits
    bigquery-public-data.github_repos.contents
    bigquery-public-data.github_repos.files
    bigquery-public-data.github_repos.languages
    bigquery-public-data.github_repos.licenses

    Планируется ли добавление таких же в клик?

    В BigQuery вообще непонятен принцип обновления и нет некоторых репозиториев
  • https://t.me/clickhouse_ru
    @texnix #306241 06:10 AM, 08 Jan 2023
    Вопрос. как перенести всех пользователей клика в новый клик? С их паролями?
  • Перетащить из старого конфига в новый, видимо
  • https://t.me/clickhouse_ru
    @texnix ↶ Reply to #306242 #306243 07:03 AM, 08 Jan 2023
    из файла хмл юзерс в такой же файл, и пароли сохранятся?
  • @segaRock #306244 07:03 AM, 08 Jan 2023
    Угу
  • Привет. Я поддерживаю play.clickhouse.com.
    Вот сайт: https://ghe.clickhouse.tech/
  • @milovidov_an #306246 07:06 AM, 08 Jan 2023
    Он никак не связан с Bigquery, наличие похожих таблиц не обеспечивается.
  • Либо если задавали пользователей в config.xml то соответствующий блок с пользователями такой же указать в новом конфиге
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306234 #306248 07:35 AM, 08 Jan 2023
    если вы уже дошли до ковыряний в fs, то ничто вам не мешает сделать rm -rf
    Unfreeze сделает то-же самое, но с непривычным синтаксисом, в котором все равно надо указать имя каталога
  • https://t.me/clickhouse_ru
    @texnix ↶ Reply to #306247 #306249 07:51 AM, 08 Jan 2023
    пользователей создавали через create user
  • https://t.me/clickhouse_ru
    @texnix #306250 07:51 AM, 08 Jan 2023
    потому в users.xml ничего нет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306249 #306252 08:10 AM, 08 Jan 2023
    там-же вам не только пользователи нужны, но и все про них - весь RBAC. Воспользуйтесь clickhouse-backup и сделайте restore -rbac на другом сервере.
  • https://t.me/clickhouse_ru
    точная схема
    clickhouse-backup create_remote --rbac --schema
    clickhouse-backup restore_remote --rbac --schema

    но сервер надо рестартануть, иначе rbac из бекапа применить нельзя к сожалению...
  • @kashchenkop #306255 10:32 AM, 08 Jan 2023
    Joined.
  • @5816798669 #306256 11:09 AM, 08 Jan 2023
    Joined.
  • https://t.me/clickhouse_ru
    @Spora_Iz_Mha #306257 11:42 AM, 08 Jan 2023
    Joined.
  • зашел сейчас сделать rm -rf как вы сказали, но clickhouse уже сам в 4 часа ночи удалил лишние парты из shadow… и у меня вопрос: это ожидаемое поведение? по какому принципу он это делает?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306258 #306259 11:45 AM, 08 Jan 2023
    предполагаю что по тому-же самому по которому какой-то неведомый демон делает freeze. Вы точно уверены, что там где-то в недрах различных кронов-планировщиков не затесался запуск clickhouse-backup или чего-то подобного?
  • будем искать, огромное спасибо за помощь!
  • https://t.me/clickhouse_ru
    ни по какому принципу он это не делает. это ручками тольок делаетя ALTER TABLE ... UNFREEZE ...
    или физически как сказали выше clickhouse-backup еще может удалить...
  • Добрый день! Подскажите удалось ли Вам найти проблему ? сейчас имею похожее поведение у таблицы есть парт у которого delete_ttl_info_min и delete_ttl_info_max равны 2023-01-05 00:00:00 , но ch не удаляет ни парты ни данные…
  • @EuginK #306263 01:47 PM, 08 Jan 2023
    Joined.
  • https://t.me/clickhouse_ru
    @Nick_jv #306264 05:34 PM, 08 Jan 2023
    Добрый вечер! Кто сталкивался с таким кейсом: кластер(к8с) Clickhouse 1 реплика 1 шард жили и все было хорошо, но пришло время расширяться. Поставили зукипер, увеличили через конфиги до 3 реплик и шардов. Все обновили, кажется без проблем. Подключаемся через бобра, а старых схем/таблиц нет. Захожу в под(volume старые) данные на месте, а запросы к ним не идут(для новых все пусто) . Кто сталкивался с этим или знает где почитать?
  • https://t.me/clickhouse_ru
    @ilejn #306265 06:10 PM, 08 Jan 2023
    По вашему вопросу кажется, что начать нужно с понимания, что вообще такое кластер в ClickHouse. Посмотрите здесь https://altinity.com/webinarspage/2019/7/31/introduction-to-the-mysteries-of-clickhouse-replication , например.
    Webinar: Introduction to the Mysteries of ClickHouse Replication

    Built-in replication is a powerful ClickHouse feature that helps scale data warehouse performance as well as ensure high availability. This webinar will introduce how replication works internally, explain configuration of clusters with replicas, and show you how to set up and manage ZooKeeper, which is necessary for replication to function. We'll finish off by showing useful replication tricks, such as utilizing replication to migrate data between hosts.

  • https://t.me/clickhouse_ru
    логи контейнера clickhouse-operator смотрите в deployment clickhouse-operator

    таблицы с каким движком были? MergeTree раз без zookeeper
    значит они не отреплицировались а просто схема пустая скорее всего создалась... или даже не создалась, смотря какая версия operator

    сначала надо было ZK добавить и сконвертировать MergeTree в ReplicatedMergeTree
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-converting-mergetree-to-replicated/

    а потом уже конфиг менять
  • https://t.me/clickhouse_ru
    Спасибо. Да, mergeTree были. Обязательно для всех на ReplicatedMergeTree переходить(просто сразу для всех не требуется переходить, а что-то само со временем перельется)?
  • https://t.me/clickhouse_ru
    ну если хотите репликацию то да
    если собираетесь просто самостоятельно данные по репликам вставлять, раскидывать то не обязательно конвертировать

    поверх этих табли надо еще CREATE TABLE ... ON CLUSTER '{cluster}' ENGINE=Distributed(...)
    сделать
    если хотите SELECT делать со всех серверов...
  • https://t.me/clickhouse_ru
    @Nick_jv #306269 07:05 PM, 08 Jan 2023
    Спасибо 👍
  • https://t.me/clickhouse_ru
    @Nick_jv #306270 07:20 PM, 08 Jan 2023
    @BloodJazMan Получается если вернуться сейчас к схеме 1 шард 1 реплика и если таблица с MergeTree то проблем не будет, т. к. в системных таблицах клик об этом не хранит записи, а ЗК просто почистить(в моем случае проще переустановить), после чего подключить ЗК и конвертировать таблицы. Правильно понял? Спасибо
  • https://t.me/clickhouse_ru
    @BloodJazMan #306271 07:22 PM, 08 Jan 2023
    да можно так сделать

    удалите ZK
    поменяйте spec.configuration.clusters.layout
    удалите лишние PVC которые могут остаться если у вас policy: Retain в volumeClaimTemplates
  • https://t.me/clickhouse_ru
    да, pvc с retain, спасибо
  • https://t.me/clickhouse_ru
    @Nick_jv #306273 07:34 PM, 08 Jan 2023
    По опыту, на сколько это частый кейс переезд с 1-1 на другую конфигурацию?
  • https://t.me/clickhouse_ru
    и итоге должен остаться один стейтфулсет -0-0-0
    к которому уже подключаете ZK
    через chi.spec.configuration.clusters[].zookeeper

    и конвертите таблицы в ReplicatedMergeTree

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

    и не забудьте правильно {shard} в zk path для replicated воткнуть
  • https://t.me/clickhouse_ru
    Сколько тонкостей)
  • https://t.me/clickhouse_ru
    частый =)
    ну как бы надо как то масштабироваться... масштабируются...

    просто у клика replicated и distributed это ортогональные штуки которые контроллируются в полуручном режиме

    оператор конечно помогает это немного упростить
    но надо понимать как оно работает и что происходит при изменении yaml манифестов
  • 09 January 2023 (162 messages)
  • https://t.me/clickhouse_ru
    @fenogentov #306280 03:21 AM, 09 Jan 2023
    Есть какие нибудь курсы по клику?
    Чувствую что теперь в конторе я назначен 'виноватым' за клик, а я нихрена не понимаю.
  • https://t.me/clickhouse_ru
    @200975316 #306281 03:30 AM, 09 Jan 2023
    где-то попадалась новость, что Яндекс Практикум обещали скоро запустить курс по CH
  • https://t.me/clickhouse_ru
    Поддерживаю вопрос, с такой же формулировкой
  • https://t.me/clickhouse_ru
    @Yarpen #306283 03:57 AM, 09 Jan 2023
    Альтинити в свое время проводили курс
  • https://t.me/clickhouse_ru
    Открываете Ютуб и пишите Clickhouse доклады, и можно смотреть вечно :) А главное узнать можно многое
  • https://t.me/clickhouse_ru
    Да и сейчас он есть, но мы работает только с заграничными юр лицами.
  • https://t.me/clickhouse_ru
    Это не курс, а доклады. А это всё-таки разное
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Ну тут как бы открываешь документацию, понимаешь что такое MergeTree, после того как понял задаёшь вопрос в чатике ORDER BY и PRIMARY KEY одно и тоже ? Тут тебе отвечают, что это разное... Потом узнаешь что такое MV, приходишь сюда, и тебе кидают ссылку на видос про MV https://www.youtube.com/watch?v=ckChUkC3Pns&t=9353s . Вот и курс готов :)
  • https://t.me/clickhouse_ru
    @fenogentov #306289 04:03 AM, 09 Jan 2023
    Прекрасно.
    Но когда это курс, а не видосик то будет не 'узнаешь', а тебе разъясняют.
  • https://t.me/clickhouse_ru
    @fenogentov #306290 04:04 AM, 09 Jan 2023
    И это видео мне кидали, и у меня 'щелкнуло' что это.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @fenogentov #306292 04:05 AM, 09 Jan 2023
    *башка пухнет. Клик с тарантулов грохнулись на мою голову.
  • https://t.me/clickhouse_ru
    думать вообще больно угу....
  • https://t.me/clickhouse_ru
    @fenogentov #306294 04:11 AM, 09 Jan 2023
    Не, думать я люблю. Но в одном месте не знаешь это одно. А тут сразу два. И ещё надо понять как это в го прикрутить.
  • https://t.me/clickhouse_ru
    @Discordance_Axis #306295 04:12 AM, 09 Jan 2023
    а куда ты торопишься то? или ты о себе заявил как об эксперте который досконально знает обе системы?
  • https://t.me/clickhouse_ru
    @Hardstep83 #306296 04:23 AM, 09 Jan 2023
    Всем добрый день. Подскажите как выяснить какие процессы отъедают память и по сколько.
    Словари, лайввью, primary key from parts уже отпрофилировал, мержи и мутации просмотрел, Кэши почистил, но все равно непонятно куда утекает порядка 40-45 Гб оперативки. Какие еще способы есть чтобы понять какие процессы самого КХ потребляют память и в каких количествах.. Логи почти все отключены, а основной лог запросов переделан в mergeTree. Запросов на чтение и запись почти нет (у основных пользователей еще утро-ночь) КХ 22.8.4.7 lts
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306296 #306297 04:51 AM, 09 Jan 2023
    Тут уже были и все попообовали - https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/ ? Там постепенно добавляется
  • https://t.me/clickhouse_ru
    на самый крайний случай (подтормаживает если гранулярность сильно низкая) можно включить memory profiler перегрузить сервер
    и посмотреть растет память или нет...
    и построить flamegraph через 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
    @Nick_jv #306299 07:32 AM, 09 Jan 2023
    Доброе утро! Подскажите, пожалуйста, один clickhouse-operator может управлять разными инстансами КХ(в разных namespace)?
  • https://t.me/clickhouse_ru
    Все попробовал. ~30 Гб занято словарями, мержами, запросами. но суммарно занято 60Гб в оперативке. Вопрос: сам КХ на свой процесс 30Гб потребляет что ли? Как то много...
  • https://t.me/clickhouse_ru
    @392734528 #306301 07:36 AM, 09 Jan 2023
    Всех с прошедшими )
    Сталкнулись с проблемой следующего характера.
    Поднимается клик - отрабатывают миграции где первым параметром стоит SET FLATTEN_NESTED = 0
    Далее проводятся работы (загрузка данных) и все ложится нормально по структуре.
    Далее если перезапустить клик - nested структуры разваливаются (становятся плоскими).
    Ну логично что косяк где то в запуске сервера. Видимонужно кудато прописать
    SET FLATTEN_NESTED до запуска?
  • https://t.me/clickhouse_ru
    да, может
    https://github.com/Altinity/clickhouse-operator/issues/1064#issuecomment-1360930379
    Install to specific namespace but monitor all ns · Issue #1064 · Altinity/clickhouse-operator

    Hello! Can't install operator to kube-system. We use kube-system ns only for infra(k8s specific) apps. Is it possible to install operator to custom namespace (for ex clickhouse-operator), b...

  • https://t.me/clickhouse_ru
    как считаете потребляемую память?
    у вас 60gb RSS?

    или может у вас 30gb buffers?
  • https://t.me/clickhouse_ru
    в профиль дефолтный
    в /etc/clickhouse-server/users.d/flattern_nested.xml

    <clickhouse>
    <profiles><default><flatten_nested>0</flatten_nested></default></profiles>
    </clickhouse>
  • @Demosfen666 #306305 07:57 AM, 09 Jan 2023
    Доброе утро. Всех с прошедшими НГ и рождеством!
    Подскажите, пожалуйста, может кто сталкивался с подобной проблемой. При смене мастера ZK все реплики во всех шардах сваливаются в RO пока мастер ZK не вернется на старую ноду. Может что-то в настройках надо поменять или версию CH обновить?
  • https://t.me/clickhouse_ru
    А его руками прописать надо? Или в /etc/clickhouse-server/config.xml прописать можно?
  • https://t.me/clickhouse_ru
    я же написал в какой файл надо XML положить?

    если не хочется с users.d возиться тогда в users.xml а не в config.xml прописывайте
  • https://t.me/clickhouse_ru
    понял! спасибо!
    я просто не в курсе как он понмает что и как из users.d надо забирать )
  • @DenisGee #306309 08:10 AM, 09 Jan 2023
    Всем доброй рабочей недели)
    Столкнулся с проблемой что запросы по ключу сортировки не распараллеливаются при поиске значения по этому ключу, может кто подскажет куда смотреть?
    Вот содавал ишью на гите, там подробней https://github.com/ClickHouse/ClickHouse/issues/44487
    Distributed query is not parallelizing when order key in where · Issue #44487 · ClickHouse/ClickHouse

    Why is a query not parallelized when searching by the order key of a distributed table? For example: I have distributed table (test.distributed_table referencing test.local_table order by z) CREATE...

  • https://t.me/clickhouse_ru
    это by design архитектура

    но в новых версиях clickhouse 22.11+
    есть
    insert_keeper_max_retries=10 (пока не документировано)

    и при кратковременная потеря кворума в ZK должно работать
  • https://t.me/clickhouse_ru
    а вы посмотрите в /var/lib/clickhouse/preprocessed_configs/

    там два файла
    почитайте их
    там написано их каких файлов они собраны...
  • Понял. Спасибо!
  • Только в нашем случае кворум то есть, просто по какой-то причине мастер перепрыгнул на другой узел кластера ZK и все встало :(
  • https://t.me/clickhouse_ru
    что-то непонятно вы как то фактор распаралеливания считаете...

    время initial_query_start_time и query_start_time вообще может отличаться а может и не отличаться...
    оно там с точностью о секунды

    есть конечно

    query_start_time_microseconds
    и
    initial_query_start_time_microseconds
    но в issue вы про них ничего не сказали...

    вам надо
    в
    SELECT hostName(), type, event_time, initial_query_id, query_id FROM clusterAllReplias('{cluster}',system.query_log) WHERE event_date=today() AND (query_id='....' OR initial_query_id='...')

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

    там session expired скорее всего случился... в момент перевыбора мастера...
    а потом должно восстановиться... а не встать на мертво

    смотрите логи zookeeper там обычно ясно почему перевыборы мастера случились
  • ушло в RO и пока не перезапустили нового мастера, чтобы вернуться к старому так все и висело в RO минут 15.
  • https://t.me/clickhouse_ru
    ну смотрите в логи zookeeper
  • ок. спасибо! попробуем воспроизвести и глянуть логи.
  • https://t.me/clickhouse_ru
    сколько zookeeper нод в zk кластере?

    как они прописаны в настройках clickhouse?

    если переходит в RO

    смотрите
    SELECT * FROM system.zookeeper WHERE path='/' FORMAT Vertical
    с той ноды где RO

    чтобы проверить что clickhouse может из ZK читать...

    ну и SYSTEM RESTART REPLICAS
    еще может помочь

    НО, повторюсь, если есть КВОРУМ в ZK и все настроено корректно. то клик сам из RO выходит
  • 5 нод в ZK.
    прописаны так:
    <zookeeper>
    <node>
    <host>10.10.7.220</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.10.8.210</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.10.8.104</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.10.8.209</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.10.8.213</host>
    <port>2181</port>
    </node>
    </zookeeper>
    Спасибо за советы! Попробуем наши версии с нашими настройками в тестовой среде погонять.
  • Ну на самом деле, в ишью, я просто смотрю время выполнения скрипта, по ключу сортировки это время примерно *2, если искать значение не по ключу сортировки, а фулсканом по другому полю, то все хорошо.
    А query_start_time я смотрю на шарде, потому что ожидаю что разница initial_query_time и query_start_time как раз и будет тем самым временем отработки другого шарда
  • https://t.me/clickhouse_ru
    @MakeReady #306322 08:49 AM, 09 Jan 2023
    Добрый день!
    Вставляю данных из JSON. В таблице поле типа Дата, а в файле приходит Дата и Время, как сделать чтобы нормально парсилась дата?
  • https://t.me/clickhouse_ru
    @Sablast #306323 08:53 AM, 09 Jan 2023
    ну либо поменять в таблице поле на DateTime, либо sed'ом парсить и заменять в json на лету
  • Собсвенно так оно и есть, если смотреть по примеру в ишью, то query_start_time > initial_query_time, а если фильтровать не по полю сортировки, то query_start_time = initial_query_time
  • SELECT toDateOrZero(JSONExtract('{"date_time":"2022-05-13T11:37:25"}', 'date_time', 'String'))
  • https://t.me/clickhouse_ru
    Получается, если не устанавливать оператор в ns kube-system и устанавливать каждый в свой ns, он будет отвечать кждый за свой индлстанс? А как из этих кейсов лучше для оператора? Или он хорошо себя чувствует в каждом кейсе?
  • https://t.me/clickhouse_ru
    не, у меня
    INSERT INTO {table} FORMAT JSONEachRow
  • https://t.me/clickhouse_ru
    @MakeReady #306328 09:11 AM, 09 Jan 2023
    то есть тут если только каким-то ключем вроде date_time_input_format
  • https://t.me/clickhouse_ru
    @timofei_melnikov #306329 09:21 AM, 09 Jan 2023
    Подскажите, когда мы делаем сэмплирование для таблиц, например SAMPLE BY cityHash64(id), мы жертвуем только памятью? И каким количеством памяти? Можно ли спокойно вешать SAMPLE BY на все таблицы где есть редкая потребность в таких запросах?
  • @5021046940 #306331 09:31 AM, 09 Jan 2023
    добрый день, подскажите какой engine лушче подходит чтобы собрать кластер на один шард три реплики с автоматической репликацией таблиц между репликами? основной приоритет не потерять инфу и иметь ее консистентной между репликами

    пока для меня выглядит лучше всего ReplicatedMergeTree отсюда
    https://clickhouse.com/docs/en/guides/sre/keeper/clickhouse-keeper-uuid/
  • Абсолютно то что нужно, посмотрите заранее на счет обновлений и удалений строк.
  • https://t.me/clickhouse_ru
    @cascabelnn #306333 09:35 AM, 09 Jan 2023
    Добрый день!
    Проблема с парсингом Decimal из json с массивом.
    Но если парсить сначала в String, а потом переводить в Decimal, то работает
    Это не баг?

    ClickHouse-QA :) with ('[{"index":517,"amount":5.000000}]') as json
    SELECT
    JSONExtract(data, 'index', 'UInt32') as index,
    JSONExtract(data, 'amount', 'Decimal64(9)') as amount
    FROM (
    SELECT arrayJoin(JSONExtractArrayRaw(json)) as data);

    WITH '[{"index":517,"amount":5.000000}]' AS json
    SELECT
    JSONExtract(data, 'index', 'UInt32') AS index,
    JSONExtract(data, 'amount', 'Decimal64(9)') AS amount
    FROM
    (
    SELECT arrayJoin(JSONExtractArrayRaw(json)) AS data
    )

    Query id: 3e3120ba-58ce-4173-bbd0-4e24885d2d6c

    ┌─index─┬─amount─┐
    │ 517 │ 0 │
    └───────┴────────┘

    1 row in set. Elapsed: 0.002 sec.

    ClickHouse-QA :) with ('[{"index":517,"amount":5.000000}]') as json
    SELECT JSONExtract(data, 'index', 'UInt32') as index,
    toDecimal64(JSONExtract(data, 'amount', 'String'), 9) as amount
    FROM (
    SELECT arrayJoin(JSONExtractArrayRaw(json)) as data);

    WITH '[{"index":517,"amount":5.000000}]' AS json
    SELECT
    JSONExtract(data, 'index', 'UInt32') AS index,
    toDecimal64(JSONExtract(data, 'amount', 'String'), 9) AS amount
    FROM
    (
    SELECT arrayJoin(JSONExtractArrayRaw(json)) AS data
    )

    Query id: fbcf55a9-97c2-4b41-bf42-ded745a2bcfb

    ┌─index─┬─amount─┐
    │ 517 │ 5 │
    └───────┴────────┘

    1 row in set. Elapsed: 0.002 sec.
  • JSONExtract Это вроде бы зависит от c++ double с плавающей запятой, float должен вроде бы сразу распарсить
  • https://t.me/clickhouse_ru
    У вас проблемы во версии, вы её не указали при отправке сообщения, на последней версии всё хорошо https://fiddle.clickhouse.com/47e012f2-8a0c-4188-9dc4-f6a6957674a5
  • https://t.me/clickhouse_ru
    Спасибо!
    Да, в последней версии и правда все ок.
    У меня версия:
    22.10.2
  • https://t.me/clickhouse_ru
    каждый за свой namespace

    но есть проблема, CRD общий с одной версией, так что несколько версий разные операторов. могут со временем не ужиться вместе, хотя мы стараемся чтобы была совместимость...
  • @ivanio11 #306339 11:04 AM, 09 Jan 2023
    Всем привет , подскажите плиз , это норма что такой запрос не исполняется ? каунт по 22кк чисел
    Понятно что я в запросе не каунт считаю , а немного для другого его юзаю
  • https://t.me/clickhouse_ru
    @rheinx #306340 11:05 AM, 09 Jan 2023
    Ребят привет.
    А есть ли варианты чтобы CH при использовании движка POSTGRESQL брал логины/пароли из ENV?
  • https://t.me/clickhouse_ru
    @stufently #306341 11:07 AM, 09 Jan 2023
    Ребят а подскажите как одним запросом убить все запросы в кх на текущий момент ?
  • https://t.me/clickhouse_ru
    Может это лучше подойдёт ? https://clickhouse.com/docs/en/operations/named-collections/
    Storing details for connecting to external sources in configuration files | ClickHouse Docs

    Details for connecting to external sources (dictionaries, tables, table functions) can be saved

  • https://t.me/clickhouse_ru
    KILL QUERY WHERE 1=1
  • https://t.me/clickhouse_ru
    респект
  • https://t.me/clickhouse_ru
    Но они не убиваются в 99% случаев
  • https://t.me/clickhouse_ru
    норма, numbers это таблица генератор, откуда КХ знать что дальше не будет чисел указанных в WHERE? поэтому запрос будет работать до конца
  • так вон же , там where number between ...
  • https://t.me/clickhouse_ru
    и? в этой таблице не хранятся данные
  • https://t.me/clickhouse_ru
    да что то не убиваются
  • @ivanio11 #306352 11:13 AM, 09 Jan 2023
    ааа хм
  • а как сделать чтоб он сканил именно как я ему сказал
  • https://t.me/clickhouse_ru
    если хотите более менее понятного выполнения добавьте в неё лимит
  • https://t.me/clickhouse_ru
    Ну это уже функционал КХ такой, что не на каждом этапе выполнения запроса, запрос можно убить ...
  • Блин , все равно долго (((.
    Есть какой то способ сгенерить 22кк чисел быстрый)
  • https://t.me/clickhouse_ru
    select * from numbers(10,20)
  • лучший)
  • https://t.me/clickhouse_ru
    @konnectrl #306359 11:15 AM, 09 Jan 2023
    А merchant_id много ?
  • https://t.me/clickhouse_ru
    @Sablast #306360 11:15 AM, 09 Jan 2023
    укажите начало и конец интервала
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #306342 #306361 11:15 AM, 09 Jan 2023
    О, похоже и правда подойдет. Но вот как туда динамически класть креды из secrets пока не пойму. (у меня CH в k8s через clickhouse-operator)
  • https://t.me/clickhouse_ru
    Динамически вроде не получится. Только при запуске
  • https://t.me/clickhouse_ru
    @konnectrl #306363 11:15 AM, 09 Jan 2023
    Но я не помню
  • я существо только с read only (( эх
  • https://t.me/clickhouse_ru
    @konnectrl #306365 11:17 AM, 09 Jan 2023
    А как вы вообще хотите использовать ? такой запрос
  • https://t.me/clickhouse_ru
    @Nick_jv #306366 11:17 AM, 09 Jan 2023
    Интересную ситуацию наблюдаю с clickhouse-operator. Сейчас уменьшил число реплик и следил за логами в операторе:
    ...обновление конфигов
    ...запустились функции на го
    и потом поехало для всех реплик
    I0109 11:03:47.406459 1 schemer.go:206] HostDropReplica():Drop replica: chi-service-service-2-0 at 2-0
    E0109 11:03:47.483009 1 connection.go:200] Exec():FAILED Exec(http://chi-service-service-2-0.default.svc.cluster.local:8123/) dial tcp: lookup chi-service-service-2-0.default.svc.cluster.local on ...: no such host for SQL: SYSTEM DROP REPLICA 'chi-service-service-2-0'

    Получается, что первым пропала реплика, а потом полетел запрос. Хм... Может я опять что-то не понимаю(
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #306362 #306367 11:17 AM, 09 Jan 2023
    кажется нашел. В конфиге поддерживается конструкция:

    from_env="VARIABLE_NAME"
  • @alexeysumin94 #306368 11:19 AM, 09 Jan 2023
    Всем привет!
    Подскажите, плиз, как сейчас обстоят дела с инструментами управления миграциями? Слежу за flyway, но потерял надежду на мердж в мастер. Есть ли какие-то альтернативы?
    Ключевые требования:
    1 Инструмент помнит свое состояние и может сам определить, катить патч версии N на БД X или нет.  Т.е. накат ограничивается командой вроде flyway migrate
    2 В инстурменте есть аналог repeatable скриптов, как в flyway. Т.е. он следит за хэшами файлов и в случае изменения накатывает скрипты из этих файлов на БД повторно. Т.о. получится хранить все CREATE OR REPLACE объекты в своих файликах.
  • https://t.me/clickhouse_ru
    bytebase смотрели ?
  • https://t.me/clickhouse_ru
    только KILL QUERY WHERE 1 SYNC

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

    GROUP BY и ORDER BY операции например не отменить через KILL QUERY ;(
  • Кролик недоинсерчивает часть ивентов , я это связываю с тем что клик падает из за перенагрузки.
    Благо у нас есть инкремент на event_id.
    У меня есть min event id и max event id , между ними разница условно 22кк , а каунт строчек где то 21.99kk.
    Алгоритм такой , гененерю 22кк event id , приджойниваю к ним event id которые есть , соответсвенно нахожу номера ивентов которые нет .
    докидываю ручками из сыряка
  • https://t.me/clickhouse_ru
    Это не вам вопрос был :(
  • @ivanio11 #306373 11:25 AM, 09 Jan 2023
    извини
  • Да, быстро глянул, показалось что это карьерный самосвал, когда мне нужна дачная тачка)
  • https://t.me/clickhouse_ru
    Ну получается, что да
  • https://t.me/clickhouse_ru
    https://github.com/golang-migrate/migrate

    ну тогда вот это, карьерная тачка угу...
    GitHub - golang-migrate/migrate: Database migrations. CLI and Golang library.

    Database migrations. CLI and Golang library. Contribute to golang-migrate/migrate development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    liquibase
  • https://t.me/clickhouse_ru
    @MichaelMaestro #306378 11:47 AM, 09 Jan 2023
    Всем привет, столкнулся с подобным впервые...
    Внешний словарь не подгружает данные, и выдаёт ошибку

    error querying the database: code: 130, message: Array does not start with '[' character: while converting source column external_id to destination column actual_markets: while executing 'FUNCTION _CAST(external_id :: 7, Array(String) :: 17) -> _CAST(external_id, Array(String)) Array(String) : 16'

    DDL словаря:

    CREATE DICTIONARY <DATABASE>.<DICTIONARY>
    (

    `parsed_at` DATE,

    `reg` String,

    `category` String,

    `market_type` String,

    `actual_markets` Array(String),

    `title` String,

    `weight` Float32,

    `external_id` String,

    `price` Float64,

    `rank` UInt64
    )
    PRIMARY KEY parsed_at,
    reg,
    category,
    market_type,
    external_id,
    title,
    weight
    SOURCE(CLICKHOUSE(HOST 'clickhouse' PORT 9000 USER 'default' PASSWORD '[HIDDEN]' DB 'DATABASE' QUERY `SELECT\n formatDateTime(parsed_at,
    '%Y-%m-01') AS parsed_at,
    \n substring(oktmo,
    1,
    2) AS reg,
    \n toString(category_id) AS category,
    \n market_type,
    \n groupUniqArray(market_ext_id) as actual_markets,
    \n title,
    \n weight,
    \n external_id,
    \n round(avg(price_for_kg),
    2) AS price,
    \n ROW_NUMBER() OVER (\n PARTITION BY parsed_at,
    \n reg,
    \n category,
    \n market_type\n ORDER BY\n parsed_at,
    \n reg,
    \n category,
    \n market_type,
    \n price\n ) rank\nFROM\n <DATABASE>.<TABLE> AS f\nWHERE\n reg != ''\n AND price_for_kg > 0\n AND deleted_at IS NULL\n AND category_id IS NOT NULL\n AND parsed_at between '2021-05-01' and '2021-12-31'\nGROUP BY\n parsed_at,
    \n reg,
    \n category,
    \n market_type,
    \n external_id,
    \n title,
    \n weight\nORDER BY\n parsed_at ASC,
    \n reg ASC,
    \n category ASC,
    \n market_type ASC,
    \n price ASC\n`))
    LIFETIME(MIN 0 MAX 10000)
    LAYOUT(COMPLEX_KEY_HASHED());

    Кто с таким сталкивался и в чём может быть проблема?

    ClickHouse server version 22.12.1.1752 (official build).
  • https://t.me/clickhouse_ru
    @MichaelMaestro #306379 11:48 AM, 09 Jan 2023
    Простите за "Качественную" типографию запроса в конструкции SOURCE, копировал из бобра
  • https://t.me/clickhouse_ru
    market_ext_id
    какого типа Nullable ?
  • https://t.me/clickhouse_ru
    В исходной таблице, да.
  • https://t.me/clickhouse_ru
    @afazulzyanov #306383 11:54 AM, 09 Jan 2023
    всем привет!

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

    https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/custom-partitioning-key/
    https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/custom-partitioning-key/

    Partitioning does not speed up queries (in contrast to the ORDER BY expression).

    Это позволяет оптимизировать работу с данными, так как при обработке запросов будет использоваться только необходимое подмножество из всевозможных данных.
    Custom Partitioning Key | ClickHouse Docs

    In most cases you do not need a partition key, and in most other cases you do not need a partition key more granular than by months. Partitioning does not speed up queries (in contrast to the ORDER BY expression).

  • https://t.me/clickhouse_ru
    ну видимо на выходе тоже Null появляется
    в данных

    https://fiddle.clickhouse.com/6ed2b762-7f4f-4173-a955-9313a0790463

    coalesce в помощь...
  • https://t.me/clickhouse_ru
    русская мене точная

    правильно выбранные PARTITION BY запросы все таки ускоряет ... за счет того что производится PARTITION prunning

    просто всякие деятели прочитав про ускорение, начинают горордить PARTITION BY date
    на ровном месте и получают замедление

    вот и добавили warning
    просто неправильный PARTITION BY это вторая по популярности ошибка при создании таблиц в CH

    https://kb.altinity.com/engines/mergetree-table-engine-family/pick-keys/
    How to pick an ORDER BY / PRIMARY KEY / PARTITION BY for the MergeTree-family table

    How to pick an ORDER BY / PRIMARY KEY / PARTITION BY for the MergeTree table.

  • https://t.me/clickhouse_ru
    Спасибо!
  • @5272136899 #306387 12:21 PM, 09 Jan 2023
    Добрый день. Clickhouse 22.12.

    Делаю инсерты с async_insert=1 и wait_for_async_insert=1. Стандартный таймаут ожидания 120с , при этом в system.processes отмечаются инсерты, которые уже должны быть давно закончены с ошибкой по таймауту, а не висеть 5-6 минут.

    Это нормальное поведение ?
  • https://t.me/clickhouse_ru
    @Krisantis #306388 12:36 PM, 09 Jan 2023
    Здравствуйте, а подскажите почему так
    select 0/0 = 0/0,
    NaN = NaN,
    nullIf(0/0, NaN)
  • https://t.me/clickhouse_ru
    в русской версии некоторых статей даже нет
  • https://t.me/clickhouse_ru
    посмотрите в таблице
    SELECT * FROM system.asynchronous_inserts WHERE has(entries.query_id,'query_id_from_system_processes') FORMAT Vertical

    а у вас там elapsed какой в system.processes?

    а в settings в этих inserts в system.processes точно async_insert стоит?
  • https://t.me/clickhouse_ru
    тогда почему NuN = NuN истинна?
  • https://t.me/clickhouse_ru
    тьфу

    изивните

    NaN Это не Null

    вы nullIf Делаете же...
  • https://t.me/clickhouse_ru
    ну nullIf просто возвращает null при равенстве двух аргументов.
    Вот у меня первый аргумент 0/0, и второй NaN чистый
    и при сравнении через эту функцию, равенства не происходит, а если просто отлельно сравнить два NuN, то всё ок
  • https://t.me/clickhouse_ru
    в общем, немного понятно, но лично для меня всё равно выглядит крайне странно это
  • https://t.me/clickhouse_ru
    ощущение, что Nan чистый, более "нановее", чем 0/0
    и поэтому не равны они)
  • https://t.me/clickhouse_ru
    https://fiddle.clickhouse.com/7c590e79-6598-41ca-875b-aa820e2e1f31

    Да =( блин... там было какое то конкретное обоснование, забыл. в голову ничего не лезет, извините еще раз

    попробуйте
    isNaN( )
    вместо equal
  • https://t.me/clickhouse_ru
    ну да, я тоже к этому пришёл
  • https://t.me/clickhouse_ru
    @lenfant_terrible #306399 12:49 PM, 09 Jan 2023
    А хорошо ли использовать clickhouse для логов?
  • https://t.me/clickhouse_ru
    @d1sin ↶ Reply to #306399 #306400 12:50 PM, 09 Jan 2023
    Вполне
  • https://t.me/clickhouse_ru
    А как лучше партиционировать?
  • https://t.me/clickhouse_ru
    без фанатизма лучше партиционировать

    https://kb.altinity.com/engines/mergetree-table-engine-family/pick-keys/
    How to pick an ORDER BY / PRIMARY KEY / PARTITION BY for the MergeTree-family table

    How to pick an ORDER BY / PRIMARY KEY / PARTITION BY for the MergeTree table.

  • @Demosfen666 #306403 01:09 PM, 09 Jan 2023
    Подскажите, пожалуйста, каковы шансы что этот фикс будет бэкпортнут в LTS? https://github.com/ClickHouse/ClickHouse/issues/43319
    Он вроде как в мастер смерджен и все. Или только ждать новой версии?
    Decimal and Nested type checks are broken for capnp format · Issue #43319 · ClickHouse/ClickHouse

    I use kafka engine and capnp schema to insert data to my clickhouse servers. After upgrade from the clickhouse 21.8.15.7 to 22.3.12.19 my capnp deserlialization was broken with the following errors...

  • https://t.me/clickhouse_ru
    формат не популярный.
    у вас что сломалось? Decimal или Nested?

    для Nested там же вроде как настройка про flatten_nested
    https://github.com/ClickHouse/ClickHouse/issues/43319#issuecomment-1318861386

    в общем скорее следующего релиза ждать 23.1
    Decimal and Nested type checks are broken for capnp format · Issue #43319 · ClickHouse/ClickHouse

    I use kafka engine and capnp schema to insert data to my clickhouse servers. After upgrade from the clickhouse 21.8.15.7 to 22.3.12.19 my capnp deserlialization was broken with the following errors...

  • спасибо за ответ!
    печально. нужен функционал от 22.3 минимум, а апдейтнуться не можем, т.к. все ломается при обновлении. разработчики говорят, что нужны и Decimal и Nested, и оба сломались в новой версии.
  • https://t.me/clickhouse_ru
    ну ждите 23.1
  • ок. спасибо!
  • https://t.me/clickhouse_ru
    Сам исходный запрос отрабатывается, нормально и никаких Null значений там нет.
  • https://t.me/clickhouse_ru
    Чем ещё может быть обусловлена такая ошибка
  • Спасибо
  • https://t.me/clickhouse_ru
    тем что на выходе не получается массива а получается непонятно что
    error querying the database: code: 130, message: Array does not start with '[' character: while converting source column external_id to destination column actual_markets: while executing 'FUNCTION _CAST(external_id :: 7, Array(String) :: 17) -> _CAST(external_id, Array(String)) Array(String) : 16'

    конкретно результат хочется в виде [...]
    а получается что-то другое...

    посмотрите на данные в запросе SELECT

    что там? везде массив как положено?
  • https://t.me/clickhouse_ru
    @MichaelMaestro #306412 01:59 PM, 09 Jan 2023
    Тут ещё самое странное что ошибка гласит что-то вроде ...в ходе конвертации исходного столбца external_id в конечный actual_market... Но я не конвертирую это поле в actual_market, я конвертирую market_ext_id..
  • https://t.me/clickhouse_ru
    @MichaelMaestro #306413 02:00 PM, 09 Jan 2023
    Этот словарь работал себе работал а потом хоба и перестал(
  • https://t.me/clickhouse_ru
    @hombit #306414 02:03 PM, 09 Jan 2023
    Смотрите, наконец кто-то попробовал переписать h3 чтоб работало побыстрее. Клик использует эту библиотеку для географии

    https://grim7reaper.github.io/blog/2023/01/09/the-hydronium-project/
  • да, в settings = {"AsynInsert":"1" .... , }, а в elapsed доходит до 400 секунд
  • https://t.me/clickhouse_ru
    ну тогда пишите issue на github
  • Наврал , я Вам вывод дал select * from system.processes.
    И там в settings : {"AsyncInsert":1",...}

    При это в выводе Вашего запроса - ничего нет. вообще.

    Загружаю курлом, параметры передаю таким образом &async_insert=1
  • https://t.me/clickhouse_ru
    @ax_golubev #306418 02:33 PM, 09 Jan 2023
    (
  • https://t.me/clickhouse_ru
    да действительно странное...
    попробуйте
    создать отдельную таблицу не словарь

    и сделать в нее INSERT .. SELECT ваш селект из словаря...
  • https://t.me/clickhouse_ru
    @DikovAleksey #306422 04:20 PM, 09 Jan 2023
    Добрый день
    Есть у кого-нибудь опыт использования движка:
    VersionedCollapsingMergeTree?

    На сколько он эффективен на таблице 10-15 млрд строк (это почищенный объем RMT движком из 24 млрд строк, но все еще встречаются дубли)?
  • https://t.me/clickhouse_ru
    если вы не используете SELECT ... FINAL
    то от дублей вы ни в Replacing ни в Collapsing не избавитесь

    вы понимаете вообще как оно работает?
  • https://t.me/clickhouse_ru
    FINAL в доке оч не рекомендуют на больших объемах. Скорее группировка, разве не так?
    Да, теоретически понимаю. Оч отталкивает момент, что у тебя все строки, прежде чем выпялятся движком, сначала доп.задубливаются. И не очень бы хотелось увидеть х2 объема таблицы, например. Но на сколько реален такой сценарий? или все таки движок пошустрее?
  • https://t.me/clickhouse_ru
    строки не дублируются нарошно... строки вычищаются в соответсвии с логикой которые дает движок, для одинаковых значений набора полей из ORDER BY ...

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

    Вы мне кажется про RMT рассказываете, с ним неплохо знаком
  • https://t.me/clickhouse_ru
    ну так это вы делаете а не движок сам
    и да. по сравнению с Replacing у вас вырастает размер данных

    смотрите там механизм простой в Collapsing

    -1 для DELETE
    1 для INSERT

    для UPDATE
    -1 старые значение
    +1 новые значения

    разница с VersioningCollapsing и обычным Collapsing в том
    что если есть одинаковый набор значений ORDER BY колонок
    то колонка Version дополнительно помогает разобраться в каком порядке строки отсортировать перед схлопыванием...
  • https://t.me/clickhouse_ru
    Я понимаю, что вы хотите мне помочь. Спасибо!)
    Но доку я читал, теоретически все понятно.
    Написал, чтобы услышать - есть ли здесь участники, которые на практике применяли этот движок на больших объемах и с какими нюансами столкнулись? Остались ли на нем?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306428 #306429 05:01 PM, 09 Jan 2023
    Сам движок работает как описано выше. Нюансы начинаются при его реальном использовании в запросах-отчетах, но вы про них ничего не говорите. Само по себе число строк ни о чем не говорит. Может они лежат мертвым грузом, а запрос у вас всего за пару месяцев на 3% от всех данных.
    Зависит от того где вы будете брать старые данные для -1. Зависит от skip индексов и прунинга партиций. От количества колонок в запросе.

    У нас работает на 3.5 ярда строк, order by id. Старые данные для -1 берутся из самой таблицы ELT процессом. Skip индекс есть, но мы с ним осторожны. Выборка преимущественно через group by (без final), потому как все отчеты требуют суммирования.
  • https://t.me/clickhouse_ru
    Добрый! Пока не решил. На днях займусь снова....
  • @nullptr_alike #306433 07:20 PM, 09 Jan 2023
    Добрый день! Пишу самодельные логи в базу, в которой есть поле json. При выполнении запросов к базе через стандартный клиент, который идет с докер-образом получаю что в поле json как-будто содержатся все поля в каждой строке, но те, которые не были заданы просто пустые. Хотя в базу я передаю разные схемы данных в json. Почему так и как исправить?
  • https://t.me/clickhouse_ru
    Ну так и есть
  • https://t.me/clickhouse_ru
    @konnectrl #306435 07:23 PM, 09 Jan 2023
    Чтобы исправить, нужно использовать другую БД
  • А как глазами это анализировать? Нечитабельно. Можно скрыть пустые?
  • @nullptr_alike #306437 07:24 PM, 09 Jan 2023
    Не хочу зоопарк бд
    Хочу писать логи в кх и метрики. Потом может понадобится анализ
  • https://t.me/clickhouse_ru
    @konnectrl #306438 07:25 PM, 09 Jan 2023
    Я не знаю как вам ответить на ваш запрос
  • https://t.me/clickhouse_ru
    @konnectrl #306439 07:25 PM, 09 Jan 2023
    Ну так уберите через WHERE пустые значения
  • https://t.me/clickhouse_ru
    @konnectrl #306440 07:26 PM, 09 Jan 2023
    которые вам не нужны
  • У меня сам json никогда не пустой. Но схемы данных в каждой строчке разные и разных местах пусто получается
  • https://t.me/clickhouse_ru
    @konnectrl #306442 07:27 PM, 09 Jan 2023
    Вы используете формат данных JSON
  • @nullptr_alike #306443 07:27 PM, 09 Jan 2023
    Он в колонки получается превращается в кх?
  • https://t.me/clickhouse_ru
    @konnectrl #306444 07:27 PM, 09 Jan 2023
    Вы можете обратиться через where к значению в JSON'e
  • https://t.me/clickhouse_ru
    @konnectrl #306445 07:27 PM, 09 Jan 2023
    Да
  • @nullptr_alike #306446 07:28 PM, 09 Jan 2023
    Просто в тарантуле и постгре не так. Я думал можно поведение кх настроить как там
  • @nullptr_alike #306447 07:28 PM, 09 Jan 2023
    При выводе на экран. Как там хранится мне ьез разницы. Главное чтобы быстро и сжатие норм
  • Есть ли какая-то функция которая если ее применить к значению json при селекте выкинет все ключи со значениями null?
  • @nullptr_alike #306449 07:34 PM, 09 Jan 2023
    И допустим конвертнет в стринг. Чтобы формат вывода был одинаковым
  • @nullptr_alike #306450 07:34 PM, 09 Jan 2023
    В графане чтобы смотреть можно было
  • https://t.me/clickhouse_ru
    @konnectrl #306451 07:34 PM, 09 Jan 2023
    Не знаю, попробуйте найти что-нибудь в Issue на github'e
  • 10 January 2023 (86 messages)
  • https://t.me/clickhouse_ru
    60 Гб RSS, посмотрел через ps
  • https://t.me/clickhouse_ru
    30 гигов на словари, требуют +30 гигов при загрузке новой версии словаря, потому что грузится в новую память а потом меняется
    но старая память должна отдаваться системе
    у вас RSS константный получается?

    вы его кроме как через ps мониторите как то?
    графики есть?
  • https://t.me/clickhouse_ru
    Графики может и есть, но и без них, в цикле если запускать ps, видно что память не возвращается после загрузки словарей, а они раз в час обновляются
  • https://t.me/clickhouse_ru
    если сервер рестартануть, после старта словари грузятся и сколько RSS показывает тогда?
  • https://t.me/clickhouse_ru
    Во время загрузки сервера примерно 30 гб становится занято всего, потом со временем поднимается до 60. Вот момент потери этих 30 не получается выявить.
  • https://t.me/clickhouse_ru
    SELECT formatReadableTimeDelta(loading_duration), formatReadableSize(bytes_allocated), name FROM system.dictionaries
    что показывает?

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

    SELECT arrayMap(x -> formatReadableSize(x), quantiles(0.5,0.9)(value)) FROM system.asynchronous_metric_log WHERE name='MemoryResident' AND event_date=today()
  • https://t.me/clickhouse_ru
    @BloodJazMan #306462 03:47 AM, 10 Jan 2023
    поправил запрос
  • https://t.me/clickhouse_ru
    Отключены эти логи, увы не смогу посмотреть пока.
  • https://t.me/clickhouse_ru
    в общем сначала убедитесь в профиле нагрузки по памяти нормально на отрезке 10+ часов
    графики RSS найдите где нибудь... и дальше уже имеет смысл разговаривать

    пока не очень понятно что может стрелять
    тем более вы говорите что попробовали все отсюда
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-who-ate-my-memory/

    но конкретных цифр пока нет
  • https://t.me/clickhouse_ru
    там в clickhouse какой нибудь Engine=Kafka есть?

    SELECT database, table, engine FROM system.tables WHERE database!='system' AND engine NOT ILIKE 'memory%' AND engine NOT ILIKE '%MergeTree';
  • https://t.me/clickhouse_ru
    @utkinmaximand #306467 07:31 AM, 10 Jan 2023
    Добрый день коллеги, подскажите что будет быстрее работать по функциям поиска, фильтрации, поиска уникальных значений как key,так и value - может кто то тестил или есть знающие люди поэтому поводу, работа с map(String, String) или array(tuple(String,String))
  • https://t.me/clickhouse_ru
    один фиг
    и то и другое подтормаживать будет потому что и там и там под капотом массивы...
    и если у вас там не дай бог тыщи элементов то это больновато будет
  • @Yuskovich #306469 08:09 AM, 10 Jan 2023
    Всем привет!
    Получаем такую ошибку:
    Error: HttpCode:500 ; ;Code: 999. Coordination::Exception: Connection loss, path: /clickhouse/task_queue/ddl/query-0000007558: While executing DDLQueryStatus. (KEEPER_EXCEPTION) (version 22.3.15.33 (official build))
    Подскажите, как её оттраблешутить или пофиксить.
    Запускаем в докере официальный имэдж, если это имеет значение.
  • https://t.me/clickhouse_ru
    Благодарю!
  • https://t.me/clickhouse_ru
    zookeeper установлен? запущен?

    SELECT * FROM system.zookeeper WHERE path='/'
    что показывает?
  • zookeeper, тот который вместе с сервером идёт:
    <keeper_server>
    <tcp_port>2181</tcp_port>
    <server_id>1</server_id>
    <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
    <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

    <coordination_settings>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <session_timeout_ms>30000</session_timeout_ms>
    <raft_logs_level>trace</raft_logs_level>
    </coordination_settings>

    <raft_configuration>
    <server>
    <id>1</id>
    <hostname>10.0.0.101</hostname>
    <port>9444</port>
    </server>
    <server>
    <id>2</id>
    <hostname>10.0.0.102</hostname>
    <port>9444</port>
    </server>
    <server>
    <id>3</id>
    <hostname>10.0.0.103</hostname>
    <port>9444</port>
    </server>
    </raft_configuration>
    </keeper_server>

    </clickhouse>

    вывод сейчас пришлю...
  • @Oleg_tg1 #306475 08:33 AM, 10 Jan 2023
    Здравствуйте, подскажите, пожалуйста,
    можно ли как-то глобально выключить регистрозависимость при поиске в таблице?
  • https://t.me/clickhouse_ru
    @rostish #306476 08:52 AM, 10 Jan 2023
    Всем привет.
    Ковыряю питон либу clickhouse-driver и не могу понять умеет она работать с http и портом 8123 или только 9000 и 9440?
    Судя по параметрам, не умеет, там только флаги на секьюр и не секьюр, а порт какой не передаешь всегда пытается в TCP
  • https://t.me/clickhouse_ru
    Да она работает по протоколу Clickhouse и всегда будет долбиться в TCP
  • https://t.me/clickhouse_ru
    А через http только sql_alchemy, заточенная под клик?
  • https://t.me/clickhouse_ru
    Вроде вот этот работает на http https://github.com/ClickHouse/clickhouse-connect
    GitHub - ClickHouse/clickhouse-connect: Python driver/sqlalchemy/superset connectors

    Python driver/sqlalchemy/superset connectors. Contribute to ClickHouse/clickhouse-connect development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    ну ... должно работать, cickhouse-keeper у вас заведен как embedded внутри clickhouse-server? или как standalone процесс?
  • Как embedded
  • https://t.me/clickhouse_ru
    а как прописана секция <zookeeper>
    в настройках?
  • https://t.me/clickhouse_ru
    SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl/query-0000007558' FORMAT Vertical
    что нибудь показывает?
  • https://t.me/clickhouse_ru
    не лучший вариант
    если что-то в embedded упадет, то и сам clickhouse-server свалится... я бы разнес... но сути ошибки это не меняет

    потерялся коннект между clickhouse-server и clickhouse-keeper во время исполнения ON CLUSTER запроса...
  • Вот так:
    <zookeeper>
    <node>
    <host>10.0.0.101</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.0.0.102</host>
    <port>2181</port>
    </node>
    <node>
    <host>10.0.0.103</host>
    <port>2181</port>
    </node>
    </zookeeper>
  • https://t.me/clickhouse_ru
    можно попробовать ограничить только одной нодой

    <zookeeper>
    <node>
    <host>127.0.0.1</host>
    <port>2181</port>
    </node>
    </zookeeper>

    чтобы по сети не пробовало ломиться а всегда конектилось к самому себе...
  • 0 rows, но со времени этой ошибки, мы уже кластер заново подняли с пустой базой)
  • Спасибо! Попробуем
  • https://t.me/clickhouse_ru
    Добрый день, спасибо за советы, разобрался. Проблема была в секции PRIMARY KEY, а именно в порядке следования ключей, видать нововведение...
  • https://t.me/clickhouse_ru
    что-то странное, у вас complex key hashed
    значит словарь строится по полям которые в ORDER BY

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

    я бы на вашем месте привел старый и новый SQL
    и сделал issue на github
  • нашли сегодняшний ответ Алексея https://coder.social/ClickHouse/ClickHouse/issues/33935
    ClickHouse,ClickHouse

    ClickHouse,ClickHouse | A setting to allow case insensitive column, table and database names.

  • https://t.me/clickhouse_ru
    @brbrbr #306494 10:51 AM, 10 Jan 2023
    Жил-был кластер 2 шарда по 2 ноды, основные пользователи - скрипты-писатели и скрипты-читатели (последние на каждый запрос открывают новое TCP соединение). Аналитик вручную запустил запрос на чтение огромного количества данных, понял что не дождётся его завершения и скомандовал kill query. Однако, вместо отмены запроса нода перестала отвечать, а мониторинг нарисовал такие вот красивые графики (рост числа подключений и их падение чётко совпадают с началом и завершением запроса kill query).

    Можете подсказать, почему КХ мог так отреагировать на отмену запроса?
  • https://t.me/clickhouse_ru
  • Вопрос хороший, тоже интересно было бы послушать комментарии
  • https://t.me/clickhouse_ru
    если KILL QUERY был вызван без SYNC
    то он ничего не килял, а только флаг выставил который потом запрос select мог прочитать а мог и не прочитать

    версия ClickHouse какая?

    Files to insert это похоже на график из Distributed таблиц, типа данные в distributed попадают, а в underlying таблицу уже нет
    посмотрите логи в /var/log/clickhouse-server/clickhouse-server.log там могут быть ошибки на INSERT которые идут из distributed в целевую таблицу

    какой у вас database engine?

    SELECT name, engine FROM system.databases WHERE name NOT IN ('system','INFORMATION_SCHEMA','information_schema')
    что показывает?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #306498 #306500 11:58 AM, 10 Jan 2023
    KILL QUERY без SYNC
    Версия КХ 21.11.11.1

    Files to Insert - да, это из Distributed, привёл график из-за того, что эти вставки вроде тоже учитываются в коннекшенах. Пока было это подвисание запросы падали с Broken pipe и Too many simultaneous queries и Cannot schedule task.

    Движок базы - Atomic.
  • https://t.me/clickhouse_ru
    atomic по идее лоичтися

    были какие то фиксы в 22.12 связанные с тем что KILL QUERY приводил к большим Load average

    попробуйте до 22.8 или 22.12 обновиться
  • https://t.me/clickhouse_ru
    @brbrbr #306502 12:09 PM, 10 Jan 2023
    Спасибо, надо будет глянуть фиксы. Вдруг чего ручками подкрутить удастся.

    22.12 - это совсем экстрим для прода (прошлый раз пробовали осенью на полугодовалую 22.3 обновляться и всё равно через несколько дней пришлось откатываться из-за сломанных кафка-движков), а вот на 22.8 можно будет попробовать. Вы какую из LTS-ок прошлогодних рекомендуете сейчас использовать?
  • https://t.me/clickhouse_ru
    @siviae #306504 01:08 PM, 10 Jan 2023
    Добрый день. Посоветуйте, пожалуйста: создал таблицу с данными, в которой один столбец это сырой JSON, а остальные - MATERIALIZED - столбцы с JSONExtract-выражениями поверх этого json.

    Что хочу - чтобы в запросах SELECT * FROM материализованные колонки отображались первыми в списке. Сначала они у меня совсем не отображались, но я нагуглил параметр asterisk_include_materialized_columns - теперь они отображаются, но после исходного не-материализованного столбца. Есть ли возможность, чтобы столбцы возвращались в порядке объявления, либо, мб, есть возможность вообще спрятать столбец из select * - запроса?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306504 #306505 01:15 PM, 10 Jan 2023
    select * except (column) from ...
    Откройте статью про select - там много интересного.
    Но на вашем месте я бы попробовал новый тип JSON. Он пока экспериментальный, но у нас работает стабильно.
  • https://t.me/clickhouse_ru
    @siviae ↶ Reply to #306505 #306506 01:17 PM, 10 Jan 2023
    спасибо! JSON попробовали, но с ним сейчас неудобно работать из BI-тулов (Apache Superset, в частности).
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306506 #306507 01:19 PM, 10 Jan 2023
    можно алиасы ставить внутрь тупла. Все удобнее, чем пачки jsonextract писать. И места при хранении меньше занимает.
  • https://t.me/clickhouse_ru
    @siviae ↶ Reply to #306507 #306508 01:22 PM, 10 Jan 2023
    а почему меньше места занимает? я вроде читал, там просто все уникальные пути в JSON отдельными столбцами хранятся и всё.

    а с materialized можно LowCardinality(String) использовать, кажется, оно должно существенно место экономить и перф запросов улучшать.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306508 #306509 01:26 PM, 10 Jan 2023
    я не знаю что вы вкладываете в понятие "один столбец это сырой JSON", но если предположить что это обычный String, а не ephemeral, то вы помимо распарсенных данных, храните еще и строку с разнородными. А она сжимается плохо.
  • https://t.me/clickhouse_ru
    @siviae ↶ Reply to #306509 #306510 01:28 PM, 10 Jan 2023
    а, вы про это. да, тут согласен.
  • @7699150 #306511 01:57 PM, 10 Jan 2023
    Всем привет!
    А подскажите пожалуйста кто как у себя делает переливку данных из MySQL в ClickHouse? Есть ли какие-то более правильные подходы и Best practices в этом процессе?
  • https://t.me/clickhouse_ru
    @skaradub #306513 02:04 PM, 10 Jan 2023
    Привет! а есть какой-то правильный способ по определению порядка и количества полей сортировки? то есть, если будет поле А - 1000 значений и поле Б - 1м значений, я отсортирую табличку по А получу 30к гранул, а если по А и Б - 60к гранул. Как это связать с операциям IO, чтобы они не были бутылочным горлышком от слишком большого количества гранул? и будет ли фильтр по А работать одинаково с т.з. скорости в первом и втором случае без Б?
    Если кинете видео или лекцией или статьей про поиск золотой середины - будут премного благодарен.
  • https://t.me/clickhouse_ru
    @konnectrl #306514 02:49 PM, 10 Jan 2023
    Вы всегда получите одинаковое количество гранул
  • https://t.me/clickhouse_ru
    кол-во гранул зависит только от числа строк (index_granularity=8192)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306511 #306517 03:04 PM, 10 Jan 2023
    Зависит что вы называете переливкой. Если у вас есть в mysql одна хорошенькая табличка с подходящими индексами, и данные туда только добавляются, но никогда не меняются, то все очень просто - mysql() table function, делайте select всего что там есть нового и insert в КХ таблицу.
    Но если у вас в MySQL кто-то спроектировал чертову связку из 100 таблиц по 110-й нормальной форме, данные в которых меняются на глубину до года и более, то да - проблемы будут, и с этим придется делать что-то более сложное.
    Готовы ли вы сворачивать нормализованные связки таблиц в одну широкую на стороне mysql? Как часто вам надо переливать данные?
    Сможете ли (захотите ли?) вытащить из mysql поток транзакций через binlog? Если говорить про правильные современные подходы, то это где-то тут. Почитайте про CDC.
  • https://t.me/clickhouse_ru
    @unamedrus #306518 03:08 PM, 10 Jan 2023
    https://github.com/Altinity/clickhouse-sink-connector
    Как пример CDC подхода
    GitHub - Altinity/clickhouse-sink-connector: Altinity Sink Connector for ClickHouse

    Altinity Sink Connector for ClickHouse. Contribute to Altinity/clickhouse-sink-connector development by creating an account on GitHub.

  • Сейчас мы пользуемся insert from select и делаем это по крону.
    Пробовал MaterializedMySQL, даже жили некоторе время с ним, но там много багов и реплики постоянно падают.
    Поэтоу решил спросить, может кто-то уже использует какое-то решения
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306513 #306520 03:08 PM, 10 Jan 2023
    Правильного нет. Есть оптимальный для задачи. Путей для творчества тут масса. Можно начать читать например отсюда - https://kb.altinity.com/engines/mergetree-table-engine-family/pick-keys/ Но в каждом конкретном случае десятки факторов могут поменять этот порядок для достижения каких-то иных оптимизаций.
  • https://t.me/clickhouse_ru
    так. супер, спасибо! один вопрос отпал с гранулами, а сортировка влияет вообще на хранение чего-то? и вопрос с избыточной сортировкой остается - она существует?
  • https://t.me/clickhouse_ru
    и вопрос с избыточной сортировкой остается - она существует?

    Существует, но обычно это больше 5-10 колонок в ORDER BY
  • Спасибо!
    А работает ли этот тул с кластерным КХ?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306519 #306524 03:12 PM, 10 Jan 2023
    мы прошли аналогичный путь. Решение от Алтинити прекрасно, но требует жесткой схемы, schema registry и девопсов имеющих время на все эти красоты. Опять же оно только таблички копирует (т.е. делает все что MatMySQL, но лучше), а хотелось бы большего - собирать из этих исходных широкие таблицы джойнами. В результате пришлось написать свой CDC на чисто clickhouse-sql.
  • https://t.me/clickhouse_ru
    Должен,

    Разве что ключ шардирования должен "включать" колонки из ORDER BY
  • Спасибо
  • а вы эту штуку вместо Kafka-engine + MatView тоже используете?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306527 #306528 03:17 PM, 10 Jan 2023
    не вместо, а вместе. Данные через Maxwell's Daemon уползают в кафку, оттуда через Engine=Kafka+MV в clickhouse, там объединяются в AggMT (где это возможно), складываются в RockDB для join=direct, или же кладутся в самодельную очередь на основе MergeTree с офсетами как у кафки. И вот поверх этой очереди уже и идет сборка широких таблиц.
  • https://t.me/clickhouse_ru
    а если поле с высокой кардинальностью - не будет влиять на эффективность? (3 млн уников на 40ярдов строк)
  • все колонки в индексе после высокардиналоного уже не имеют особого смысла
  • https://t.me/clickhouse_ru
    Добрый день
    Можете, пожалуйста, пояснить, что за kafka connect consumer, что-то я ничего определённого не нахожу?
    Нашёл это сообщение в попытке найти решение проблемы огромного количества дублей из kafka. Оказывается в некоторые дни в декабре бывало по ~10k дублей. Используем версию 21.8.8.29 .
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    GitHub - ClickHouse/clickhouse-kafka-connect: ClickHouse Kafka Connector

    ClickHouse Kafka Connector. Contribute to ClickHouse/clickhouse-kafka-connect development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @vendelev #306537 06:05 PM, 10 Jan 2023
    Добрый вечер, может кто-то подсказать, почему разное поведение почти одинаковых запросов? (запрос сделан специально для показа проблемного места с IN)
    1. Работающий запрос: https://fiddle.clickhouse.com/86324e31-4c51-455c-9eda-47ccae8dc4f2
    2. НЕ работающий: https://fiddle.clickhouse.com/a92903fa-863b-40f5-b910-207c3e32b578

    Опытным путем установил, что не работающий запрос выполняется, если таблицы в WITH и в основном запросе находятся на разных серверах. Если на одном сервере - не работает
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306537 #306538 06:20 PM, 10 Jan 2023
    Если интерес спортивный, то мне тоже интересно (но не так сильно).
    Если же интерес практический, то так делать не нужно - оператор IN ожидает набора строк, а не массив. Если у вас массив - используйте has() - но это медленее. Для IN нужен итератор по строкам. Который вы и сделали из массива через arrayJoin в "работающем запросе".
  • https://t.me/clickhouse_ru
    А зачем он нужен ?
  • https://t.me/clickhouse_ru
    exactly-once гарантии
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306541 #306542 06:24 PM, 10 Jan 2023
    Уже можно использовать в продакшн?
  • https://t.me/clickhouse_ru
    это случай из жизни :))
    решение проблемы мы с ребятами нашли, только не смогли понять почему разное поведение.
    И если IN ожидает набор строк, то почему вот это решение работает?: https://fiddle.clickhouse.com/6a145b9c-da34-4efb-beb6-109233e8e0d0
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306543 #306544 06:26 PM, 10 Jan 2023
    возможно потому что (select 4) - это одна строка. У меня таких примеров тоже хватает. Но с новыми версиями становится лучше. Страданий в этом месте почти нет.
  • https://t.me/clickhouse_ru
    это же скаляр, как он может быть строкой?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306545 #306546 06:27 PM, 10 Jan 2023
    В КХ нет скаляров. Любой скаляр - это набор строк размером 1.
  • https://t.me/clickhouse_ru
    @vendelev #306547 06:30 PM, 10 Jan 2023
    интересная мысль, надо с ней переспать.
    спасибо
  • https://t.me/clickhouse_ru
    Не пробовал, учитывая что оно в бете наверное можно но осторожно
  • https://t.me/clickhouse_ru
    Тем не менее, "псевдоскаляры" имеют поведение отличное от табличных алисов

    WITH x AS (SELECT 1) и WITH (SELECT 1) as y

    Имеют разное поведение, и y например будет закеширован для многократных обращений
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306548 #306550 06:37 PM, 10 Jan 2023
    Так в том-то и проблема, что на тестовой среде ничего интересного не поймаешь, а в продовую кафку ставить неведомо какой плагин никто не даст.
  • 11 January 2023 (158 messages)
  • @Abrak98 #306555 05:52 AM, 11 Jan 2023
    Всем привет. Подскажите, как можно вытащить последовательности из массивов следующим образом:
  • А по какому принципу вы их хотите получить? например 2, 3 набор отличается от остальных(то что сразу бросается в глаза)
  • https://t.me/clickhouse_ru
    arraySort(arrayDistinct([1,1,2,3,1]))
  • https://t.me/clickhouse_ru
    Скорей всего, алгоритм такой.
    Берём 1 ...
    Дальше ищем справа от него число больше на 1, берём его.
    Дальше снова ищем справа от него число больше на 1, берём его и т.д.
    Какое то тестовое задание на Clickhous'e
  • для 2-3 набора не подходит
  • https://t.me/clickhouse_ru
    Тогда вторая строка не подходит :(
  • https://t.me/clickhouse_ru
    @Alexey_037 #306561 05:58 AM, 11 Jan 2023
    да, не подходит. Но какое ТЗ, такое ХЗ )))
  • https://t.me/clickhouse_ru
    @konnectrl #306562 05:58 AM, 11 Jan 2023
    Это можно решить, но мне лень :)
  • а главное зачем)
  • https://t.me/clickhouse_ru
    @konnectrl #306564 05:59 AM, 11 Jan 2023
    Чтобы за кого то пройти тестовое задание на Clickhouse :)
  • эххх, может быть лучше было спросить про ключи сортировки, гранулярность, индексы…
  • https://t.me/clickhouse_ru
    @konnectrl #306566 06:00 AM, 11 Jan 2023
    😂
  • https://t.me/clickhouse_ru
    Так это разные запросы наверное
  • https://t.me/clickhouse_ru
    Тогда вот так. Ну и последние значения уберите
  • Важно наличие идущих следом (необязательно подряд) событий с шагом 1 (по возрастанию, начиная с 1). Если 2 таких шага (например 1, 2) разделяются несколькими другими шагами (например 1, 4, 3, 2), то значения между ними пропускаются и остаётся только (1, 2). Если бы после (1, 4, 3, 2) шла "3", то вывод был бы (1, 2, 3)
  • Спасибо, Константин
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306555 #306572 06:40 AM, 11 Jan 2023
    Раз уж вы тут, то набили бы данные на fiddle вместо картинок. Чтобы проявить уважение к желающим решить эту задачку, чтобы им не приходилось это делать за вас.
    Я бы попробовал развернуть массивы в строки через arrayJoin, и там работал через window function - так обычно нагляднее и привычнее для многих. Там просто можно обратиться с предыдущей строке.
    Если же вам нужно смотреть на предыдущее значение в массиве, то нужно иметь два массива - основной и укороченный через arrayPopFront, и пользоваться функцией arrayMap.
    Попробуйте сделать подход с этими советами и выложить на fiddle. Дальше вам тут все помогут.
  • https://t.me/clickhouse_ru
    Проблема оказалось в другом. Похоже не эту, либо она же - https://github.com/ClickHouse/ClickHouse/issues/22923
    Дело в том, что после вставки данных в CH с Engine=Kafka, срабатывает мат. представление MV_1, которое должно перекладывать данные в следующую таблицу. И вот в MV_1 у нас содержится секция WITH. Ошибка исчезает после пересоздания представления (без изменения) и через какое-то время возвращается вновь. Что можете посоветовать?
    WITH statement can be missed in distributed query processing · Issue #22923 · ClickHouse/ClickHouse

    How to reproduce Which ClickHouse server version to use latest master/arcadia Non-default settings, if any SET prefer_localhost_replica=0 (Without it a local stream is created instead of a remote o...

  • @agrishakov #306574 07:07 AM, 11 Jan 2023
    Добрый день! Имеется база данных в CH являющаяся репликой базы PostgreSQL через MaterializedPostgreSQL. Данные в PSQL добавляются через upsert. Есть задача - создать витрины данных (materialized) в CH для последующей визуализации (применить GROUP BY, JOINы к исходным). Правильно я понимаю, что в данном случае нужно использовать
    CREATE MATERIALIZED VIEW table_name ENGINE = MergeTree AS SELECT ... и обновлять данные через DROP / CREATE (из-за upsert) или есть более оптимальное решение?
  • https://t.me/clickhouse_ru
    @Alexeysaff #306576 07:14 AM, 11 Jan 2023
    Добрый день, столкнулся с проблемой из-за чего не получается нормально делать JOINs. Есть таблица

    created_at: timestamp
    data: JSON

    вот такой запрос отрабаотывается нормально
    SELECT
    created_at,
    data.app.start_time AS start_time,
    FROM data__my_table

    а вот такой уже нет
    SELECT
    my.created_at,
    my.data.app.start_time AS start_time,
    FROM data__my_table AS my

    Code: 47. DB::Exception: Received from localhost:9000. DB::Exception: There's no column 'my.data.app.start_time' in table 'my': While processing my.data.app.start_time AS start_time. (UNKNOWN_IDENTIFIER)

    но при этом запрос вида
    SELECT
    my.created_at,
    my.data AS my_data,
    FROM data__my_table AS my

    тоже работает
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306574 #306577 07:17 AM, 11 Jan 2023
    Прежде всего лучше забыть про такой способ создания MV, и всегда использовать синтаксис с To и самостоятельно созданной таблицей хранения.
    Если вы хотите отказаться от полного пересоздания, то надо научиться делать инкрементальные обновления.
    MaterializedPostgreSQL вставляет не только строки с данными, но и строки коррекции с _sign=-1 Используя этот стобцец вы можете построить агрегацию, которая будет вычитать старые значения, и прибавлять новые. Например обычный сумматор выглядит не как sum(value), а sum(_sign*value). Про count() можно забыть и использовать sum(_sign), и так далее. Не всегда просто подобрать агрегационную функцию, но в большинстве случаев это реализуемо. Задавайте вопрос по конкретным столбцам и агрегационным функциям.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306576 #306578 07:20 AM, 11 Jan 2023
    Вот в том числе поэтому она пока и не объявлена в продакшн. Живите с этим. Например так:
    SELECT
    my.created_at,
    my.app.start_time AS start_time,
    FROM (select *,data.app.start_time as start_time from data__my_table) AS my
  • https://t.me/clickhouse_ru
    @Alexeysaff #306579 07:21 AM, 11 Jan 2023
    тааак, а если start_time был только пример и ключей в JSON у нас гораздо больше?
  • https://t.me/clickhouse_ru
    @Alexeysaff #306580 07:21 AM, 11 Jan 2023
    но спасибо в любом случае
  • https://t.me/clickhouse_ru
    а какие-то есть ограничения на числа? например только целые или только целые положительные?
  • https://t.me/clickhouse_ru
    @Alexeysaff #306582 07:39 AM, 11 Jan 2023
    но кстати не работает.
  • Будут только целые положительные числа.
    https://fiddle.clickhouse.com/29a28640-1bfd-4a2f-a2bb-d9500a2f8c04
  • https://t.me/clickhouse_ru
    @emakarov #306585 07:46 AM, 11 Jan 2023
    ну в целом вам надо еще уточнить вы хотите всегда "первую" последовательность (от первого числа) находить или какую? там ведь и одинаковые могут быть, и разной длины
  • Всегда начиная с 1-го шага
  • [2, 3, 1, 4, 2, 3] -> [1, 2, 3]
  • https://t.me/clickhouse_ru
    так тогда начиная с 1-го шага - это неправильный результат
    с первого шага должно быть
    [2,3,1,4,2,3] -> [2,3,4] ?
  • Наверное, я неясно выразился. Под 1-м шагом я имею ввиду элемент равный 1. Должно быть именно так: [2, 3, 1, 4, 2, 3] -> [1, 2, 3].
  • https://t.me/clickhouse_ru
    @emakarov #306590 08:30 AM, 11 Jan 2023
    а если нет единицы?
  • https://t.me/clickhouse_ru
    @111093495 #306591 08:33 AM, 11 Jan 2023
    Всем привет, подскажите плиз какой пропертей можно подтюнить таймаут в запросе чтобы функция remote(...) не рвалась через 300с:

    Code: 209. DB::NetException: Timeout exceeded while reading from socket ***, receive timeout 300000 ms): While executing Remote. (SOCKET_TIMEOUT) (version 22.12.1.1752 (official build))
  • https://t.me/clickhouse_ru
    Это у вас клиент отпал
  • https://t.me/clickhouse_ru
    @konnectrl #306593 08:34 AM, 11 Jan 2023
    А не remote
  • У всех начальных массивов есть хотя бы одна 1
  • https://t.me/clickhouse_ru
    да вроде нет, это запускаю через дбт, и там таймаут выставлен больше, + он же явно пишет причину "While executing Remote" , но ешё раз проверю..
  • @Mamyan99 #306597 08:44 AM, 11 Jan 2023
    у меня есть такая проблема Code: 243. DB::Exception: Cannot reserve 1.00 MiB, not enough space. (NOT_ENOUGH_SPACE). Можете подсказать с чем это может быть связано? не осталось место на базе или есть объём данных который вставляю большой?
  • https://t.me/clickhouse_ru
    Проверьте свободное место вашего хранилища
  • https://t.me/clickhouse_ru
    Диск заполнен полностью
  • https://t.me/clickhouse_ru
    @alex_spiridonov #306600 08:45 AM, 11 Jan 2023
    подскажите, пожалуйста, есть смысл обновляться с версии 22.8.5.29?

    видел тут предостережения о кривости каких-то версий, вышедших в последнее время. Как сейчас?
  • как можно проверить это?
  • https://t.me/clickhouse_ru
    эээээ, ну это как бы или через df или du, гугл в помощь
  • https://t.me/clickhouse_ru
    Зайти на сервер
  • https://t.me/clickhouse_ru
    @konnectrl #306604 08:54 AM, 11 Jan 2023
    и посмотреть
  • https://t.me/clickhouse_ru
    @ikeniborn #306605 08:58 AM, 11 Jan 2023
    ВСем добра! Начали натыкаться на ошибку по количества максимально открытых файлов при расчете витрин. Не думаю что в нашем случае это должно быть блоком при работе с КХ. Вопрос, кроме как расширять лимит, может есть лучшие беспрактисы, чтобы нивелировать даанную проблему?
  • https://t.me/clickhouse_ru
    Ошибка too many parts ?
  • https://t.me/clickhouse_ru
    @konnectrl #306607 09:03 AM, 11 Jan 2023
    или too many open files ?
  • https://t.me/clickhouse_ru
    @konnectrl #306608 09:04 AM, 11 Jan 2023
    На все эти вопросы есть ответы в этом чате, поищите
  • https://t.me/clickhouse_ru
    вот это
  • https://t.me/clickhouse_ru
    @konnectrl #306610 09:08 AM, 11 Jan 2023
    Вот первый в поиске по чату
  • https://t.me/clickhouse_ru
    1
  • https://t.me/clickhouse_ru
    @konnectrl #306613 09:09 AM, 11 Jan 2023
    Посмотрите ответы на его сообщенеи
  • @baltazardemon #306614 09:15 AM, 11 Jan 2023
    Добрый день, подскажите пожалуйста умеет ли Click отправлять логи system.query_log и system.session_log в syslog ?
  • @baltazardemon #306615 09:17 AM, 11 Jan 2023
    Integrating Vector with ClickHouse | ClickHouse Docs

    How to tail a log file into ClickHouse using Vector

  • https://t.me/clickhouse_ru
    @cascabelnn #306616 09:27 AM, 11 Jan 2023
    Добрый день!
    А есть ограничение на длину json для JSONExtractArrayRaw?
    Похоже не может распарсить длинный массив
  • @1611514212 #306617 10:26 AM, 11 Jan 2023
    Всем добрый день! Нашла хороший курс ClickHouse здесь: https://education.biconsult.ru/courses/22/
  • @s4851 ↶ Reply to #306617 #306618 10:28 AM, 11 Jan 2023
    А это разве курс не для проджектов?
    Те не выглядят как будто там Хардскилы дают по ch
  • @Ghostnsk #306619 10:28 AM, 11 Jan 2023
    такая себе попытка
  • @oleynikpp #306620 10:31 AM, 11 Jan 2023
    Коллеги а почему в место курса вы не читаете документацию? Она очень подробная и есть на русском
  • @tsvvladimir #306621 10:34 AM, 11 Jan 2023
    Потому что документация иногда и особенно на русском такая, что потом и в сорцы залезть приходится)
  • @oleynikpp #306622 10:39 AM, 11 Jan 2023
    А мне понравилось. Основная мощь Кх для меня это встроенные Энжины. А их поведение описано подробно в доке. А найти специалиста который залез в исходники а потом рассказал как там все работает - это сложная задача
  • https://t.me/clickhouse_ru
    @Konstantin_litvin #306623 10:48 AM, 11 Jan 2023
    Привет, нужно использовать в КХ данные из postgres, но чтобы данные в materialized view в КХ обновлялись с учётом новых данных в postgres. По идее хорошо подходит MaterializedPostgreSQL и репликация postgres в КХ, но смущает, что этот функционал указан как экспериментальный. На сколько этот функционал готов к продакшену и есть ли какие то моменты, при которых не стоит его использовать?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306623 #306624 11:02 AM, 11 Jan 2023
    Самое правильное в таком случае, это прочитать все ишью - https://github.com/ClickHouse/ClickHouse/search?q=MaterializedPostgreSQL&type=issues
    Если все еще не страшно, то можно использовать.
  • https://t.me/clickhouse_ru
    Хорошее предложение, не подумал об этом, спасибо!
  • https://t.me/clickhouse_ru
    @cascabelnn #306627 11:25 AM, 11 Jan 2023
    Вопрос про JSONExtractArrayRaw.
    Нужно распарсить из json массив, в котором есть поля с большими значениями, например формата UInt128
    Но видимо при парсинге по умолчанию используется формат UInt64, потому что числа больше 18446744073709551615 не парсятся:

    WITH '[{"a":99999999999999999999}]' AS json
    SELECT JSONExtractArrayRaw(json) AS data

    https://fiddle.clickhouse.com/e37b0857-250b-4362-8713-c5cb7cbd9aa4
  • https://t.me/clickhouse_ru
    @Alexeysaff #306628 11:40 AM, 11 Jan 2023
    а есть ли какой-то roadmap или понимание, когда object JSON будет готов к продакшну?
  • https://t.me/clickhouse_ru
    @VaskaKasatka #306629 11:43 AM, 11 Jan 2023
    Всем привет!
    Создал словарь и при попытке извлечь из него данные получаю ошибку:
    SQL Error [241] [07000]: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 69.09 GiB (attempt to allocate chunk of 134217760 bytes), maximum: 69.04 GiB
    Причем как бы я не расширял параметры

    max_server_memory_usage
    max_server_memory_usage_to_ram_ratio

    Ошибка возникает вновь и вновь. Не подскажите, какие еще есть способы решения проблемы? Спасибо!
  • @5021046940 #306630 11:44 AM, 11 Jan 2023
    подскажите по ReplicatedMergeTree + Distributed. пишу сразу в 3 ноды кластера и получаю дубликаты записей. помогает OPTIMIZE TABLE FINAL DEDUPLICATE, но вопрос мой это ожидаемое поведение? и как избегать дубликатов при записи сразу в несколько нод?
  • max_memory_usage смотрели?
  • И вы уверены, что у вас есть память на такой словарь?
  • https://t.me/clickhouse_ru
    Да, тоже правил параметр
    RAM на хосте 125гб, хост весь под клик, словарь строится по таблице, которая весит 24гб, не смотря на то, что количество строк 624к для меня все равно странно, что не получается обработать данные по словарю
  • и как? что было, менялось число недостаточной памяти?
  • https://t.me/clickhouse_ru
    Да, к примеру сейчас выделил еще больше памяти (75гб) и судя по ошибке ему нужно 81гб, хотя до этого указывалось 69, а еще ранее 61 и т.д
    Т.е с увеличением памяти клику нужно еще больше, чтобы обработать словарь

    Я понимаю, что, если такая ошибка всплывает при построении запроса, то в большинстве случаев нужно переписать сам запрос или пересмотреть структуру хранения, уже сталкивался с таким
    Но в случае со словарем не совсем понятно как решить проблему
  • так словарь покажите, он у вас полностью поднимается в память)
    вам так памяти ни на что не хватит если полностью 24гб таблицу развернуть в память
  • https://t.me/clickhouse_ru
    DDL вы имеете ввиду?
  • если вы указываете способ размещений в памяти - хранить в оперативной памяти(там несколько возможностей), то ваша таблица будет весить не 24ГБ пожатых на диске, а много больше
  • https://t.me/clickhouse_ru
    Понял, спасибо
    При создании я указывал
    LIFETIME(MIN 0 MAX 1000)
    LAYOUT(HASHED())
  • https://t.me/clickhouse_ru
    Спасибо за наводку!
    Нашел необходимый вариант пересоздания словаря и все взлетело)
  • @rtitov #306642 12:55 PM, 11 Jan 2023
    Всем привет!

    Код выбрасывает ошибку, с чем это может быть связано? Это баг?

    CREATE TABLE test (sourceAddress Nullable(String)) ENGINE=Memory;

    INSERT INTO test VALUES ('192.168.0.1');
    INSERT INTO test VALUES ('192.168.1.1');
    INSERT INTO test VALUES ('169.254.1.356');
    INSERT INTO test VALUES (NULL);

    SELECT sourceAddress FROM test
    WHERE isNotNull(sourceAddress) AND isIPv4String(sourceAddress) AND isIPAddressInRange(sourceAddress, '192.168.0.0/24')

    Соответственно ошибка
    DB::Exception: The arguments of function isIPAddressInRange must be String: While processing isNotNull(sourceAddress) AND isIPv4String(sourceAddress) AND isIPAddressInRange(sourceAddress, '192.168.0.0/24').
  • https://t.me/clickhouse_ru
    @Vitaly_Ivanov #306643 12:56 PM, 11 Jan 2023
    Коллеги подскажите почему может зависать запрос DROP TABLE IF EXISTS для таблицы ENGINE = Kafka
  • написано же, что жолжно быть типом данных String, а у вас Nullable(String)
  • assumeNotNull(sourceAddress)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306642 #306647 01:00 PM, 11 Jan 2023
    Зачем вам вобще Null нужен? Если в наборе значений есть какое-то неиспользуемое (а тут оно точно найдется), то лучше не использовать Nullable
  • @rtitov ↶ Reply to #306646 #306648 01:00 PM, 11 Jan 2023
    не помогло
  • @rtitov ↶ Reply to #306647 #306649 01:01 PM, 11 Jan 2023
    так была создана таблица, с этим ничего поделать не можем
  • помогло, у вас ip невалидный в 3-й строке
  • @rtitov ↶ Reply to #306650 #306651 01:02 PM, 11 Jan 2023
    даже, если все ip валидные, то не помогает
  • https://fiddle.clickhouse.com/7ee2537e-e2a7-4397-b2f2-1f7d238d132e

    В КХ все условия выполняются, пишите подзапрос
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306649 #306653 01:04 PM, 11 Jan 2023
    Все работает с нормальными адресами - https://fiddle.clickhouse.com/d08b8977-dfed-4adf-bb3d-c219f32b218d
    Но в чем сложность убрать этот Nullabel? Создаете новую колонку, наполняете, переименовываете на место старой.
  • @rtitov ↶ Reply to #306652 #306654 01:09 PM, 11 Jan 2023
    https://fiddle.clickhouse.com/04951d63-9020-403a-b227-f7e5cde19547
    тогда почему такой запрос падает с ошибкой
  • @rtitov #306655 01:09 PM, 11 Jan 2023
    ощущение, что включена какая-то настройка оптимизации
  • @rtitov ↶ Reply to #306653 #306656 01:09 PM, 11 Jan 2023
    да проблема в том, что там могут быть и не валидные адреса
  • @rtitov ↶ Reply to #306654 #306657 01:10 PM, 11 Jan 2023
    по сути, данный запрос должен отобрать только валидные адреса и с ними уже проводить дальнейшие действия
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306656 #306658 01:11 PM, 11 Jan 2023
    IPv4StringToNumOrNull(s)
    Same as IPv4StringToNum, but if the IPv4 address has an invalid format, it returns null.
  • @rtitov ↶ Reply to #306658 #306659 01:13 PM, 11 Jan 2023
    функции нет в версии 21.6.5.37
  • @rtitov ↶ Reply to #306654 #306660 01:14 PM, 11 Jan 2023
    я не понимаю, почему этот запрос падает с ошибкой
    ведь в подзапросе мы выбрали только те ip, которые являются ipv4
  • видимо баг такой с оптимизацией, на 21.9 уже проходит
  • @rtitov ↶ Reply to #306661 #306662 01:25 PM, 11 Jan 2023
    https://fiddle.clickhouse.com/a7ea03cb-d67e-43ca-940c-d727e8291040
    на свежих версиях проходит и с assumeNotNull
  • https://t.me/clickhouse_ru
    @PutinVovan #306663 01:34 PM, 11 Jan 2023
    Здравствуйте, у меня в таблице хранятся гео координаты (lat, lon) , как из таблицы получить все координаты лежащие в радиусе 1 км от заданной точки.? Честно с математикой у меня не очень, смотрю в доке на функции для работы с гео и ничего не понимаю.
  • https://t.me/clickhouse_ru
    @iddqdeika #306664 01:39 PM, 11 Jan 2023
    коллеги! Kafka + Clickhouse
    доставка ивентов до clickhouse нужна.
    connect ограничен по типам данных при работе через jdbc, неудобна
    движок таблицы кафка - увеличивает нагрузку на сам кластер клики сверх надобности

    остается кастомный код...
    но если у меня такая потребность - вдруг была еще у кого? встречали ли ещё какие готовые решения?)
    я б лучше к опенсорс контрибьютил, чем своё с нуля
  • https://t.me/clickhouse_ru
    Можно сделать гео хэши
  • https://t.me/clickhouse_ru
    @konnectrl #306666 01:49 PM, 11 Jan 2023
    Тогда это будут квадраты
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • @5021046940 #306669 01:55 PM, 11 Jan 2023
    подскажите можно ли реализовать шардинг с частичной репликацией\балансировкой? то есть если у меня Х нод то каждая запись точно хранится на любых двух.
  • @subotic0 #306670 01:56 PM, 11 Jan 2023
    Всем привет, пытаюсь забрать данные в кх из оракловой базы по odbc. Спустя 30 минут запрос падает, можете подсказать какую настройку нужно подкрутить?
  • https://github.com/Altinity/clickhouse-sink-connector
    https://github.com/housepower/clickhouse_sinker
    https://github.com/eBay/block-aggregator
    Но по поводу их работы - ничего сказать не могу. Мы писали свой перекладыватель, но столкнулись с проблемой что там появлялись дубли. Мы взяли идею из block-aggreagtor и применили у себя
    GitHub - Altinity/clickhouse-sink-connector: Altinity Sink Connector for ClickHouse

    Altinity Sink Connector for ClickHouse. Contribute to Altinity/clickhouse-sink-connector development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Привет!
    А можешь файлом приложить скрипт создания таблиц (с указанием на каких нодах запускался)? Попробую подсказать.
  • https://t.me/clickhouse_ru
    Если я правильно понял вопрос, то да, можно.
    Например, имея кластер из 6 нод и выполняя дробление данных на 3 шарда, каждая из записей будет храниться на 2 из 6 нод
  • Спасибо. Это уже оказался не наш вариант. Надо экономить место как оказалось 😁
  • https://t.me/clickhouse_ru
    Планируете хранить каждую запись 1 раз?
  • https://zhuanlan.zhihu.com/p/461792873?utm_id=0
    Надо топология как тут. Но видимо масштабировать потом и добавлять новые ноды это приключение
    How to setup ClickHouse distributed cluster with 3 shards and 2 replicas on 3 server nodes

    Official Site: ClickHouse - fast open-source OLAP DBMSClickHouse is an open-source, high-performance columnar OLAP database management system for real-time analytics using SQL. It supports distribut…

  • На двух нодах. При любом размере кластера.
  • https://t.me/clickhouse_ru
    @mshakhov_citydrive #306680 03:27 PM, 11 Jan 2023
    Если ориентироваться на пример, который по ссылке, то я не вижу препятствий для ReplicatedMergeTree + Distributed.
  • @5021046940 #306681 03:30 PM, 11 Jan 2023
    Препятствия что без описаных там workarounds сам по себе ch не дает добавлять дважды одну ноду в кластер
  • А так буду тестировать...
  • https://t.me/clickhouse_ru
    @justswan #306683 03:33 PM, 11 Jan 2023
    Коллеги, нуждаюсь в совете
    У меня есть таблица с тайм-сериес данными, например логами

    Я их группирую с toStartOfInterval() и count()

    Хочу найти такое время в котором нет значения — дырки в последовательном списке.
    Придумал что можно сгенерировать список дат с numbers() по диапазону, от них взять такие же toStartOfInterval(), но дальше нужно как-то сджойнить два результата и в этом месте я уже теряюсь

    Наверняка это не уникальная задача, вдруг вы сталкивались, подскажите пожалуйста
  • https://t.me/clickhouse_ru
    Поделитесь как решили?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306683 #306685 03:49 PM, 11 Jan 2023
    дырки в списке - это задача gaps and islands. Гуглите. Вот первое что мне попалось. На stackoverflow есть несколько примеров специфичных для clickhouse. Ну и тут в чате этот вопрос поднимался уже раз 10 с прекрасными ответами.
  • https://t.me/clickhouse_ru
    Первая мысль взять предыдущий интервал и отнять от текущего, разница должна быть 1 юнит, там где 2 и более юнитов = пропуск. Взять предыдущий интервал можно через оконные функции или asof join
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    мм, тоже интересно, нужно попробовать завернуть все это в оконную функцию, плохо понял пока как, но буду искать, спасибо!
  • https://t.me/clickhouse_ru
    Поменял тип словаря на direct, более чем устраивает
  • https://t.me/clickhouse_ru
    А по времени отрабатывает как, тоже нормально?
  • https://t.me/clickhouse_ru
    Да, быстро
    Это и был главный критерий)
  • https://t.me/clickhouse_ru
    neighbor есть оконка
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @Romkart #306694 03:59 PM, 11 Jan 2023
    @BloodJazMan по оператору k8s: восстановление Replicated таблиц решили пока подзабить? issue 969
  • Документация у Clickhouse такова, что иной раз думаешь: лучше бы не было.
  • https://t.me/clickhouse_ru
    А зачем вам искать есть ли данные или нет ? Вы можете использовать ORDER BY FILL и заполнять пропуски, а потом уже отфильтровать
  • https://t.me/clickhouse_ru
    @justswan #306697 04:03 PM, 11 Jan 2023
    Для того чтоб алертить, данные должны быть всегда последовательны
  • https://t.me/clickhouse_ru
    пойду гуглить что это
  • https://t.me/clickhouse_ru
  • @n1ght_f0x #306701 04:16 PM, 11 Jan 2023
    Всем привет, а можно как-то отследить/ускорить процесс truncate?
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    @rpuropu #306703 04:28 PM, 11 Jan 2023
    Кто-нибудь сталкивался с подобным поведением клика? Не можем понять куда память забирается. В это время на нём крутятся очень маленькие запросы, дело не может быть в них. И резко память очищается.. куда можно посмотреть? Какие процессы могут память скущивать? Это не запросы, мониторим уже их несколько недель..
  • https://t.me/clickhouse_ru
    @rpuropu #306704 04:29 PM, 11 Jan 2023
    девопсы говорят, что сам клик вроде как думает, что память забирается под запросы.. но мы не можем выявить процессы(
  • https://t.me/clickhouse_ru
    @rpuropu #306705 04:32 PM, 11 Jan 2023
    по всем приметам что-то выполняется, и завершается.. но никаких запросов подходящих не видим.. что это может быть..
  • https://t.me/clickhouse_ru
    а что у вас в system.merges?
  • https://t.me/clickhouse_ru
    там что-то конкретное посмотреть?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    memory_usage
  • https://t.me/clickhouse_ru
    не-а.. я сам не спец, просто наши девопсы похоже в чаты не хожи) я сам пошел..
  • https://t.me/clickhouse_ru
    @rpuropu #306711 04:40 PM, 11 Jan 2023
    нашел в логах чата, они уже смотрели в system.merges
  • https://t.me/clickhouse_ru
    @konnectrl #306712 04:47 PM, 11 Jan 2023
    Нету в чатике по Clickhouse, ну тогда страшно за ваш Clickhouse
  • @emili_isaev #306714 06:36 PM, 11 Jan 2023
    Всем привет!
    Возникает ошибка, причину которой не понимаю
    Ошибка при таком запросе с groupArray:
    select visitID, groupArray(click_link) as click_link_arr
    from srch_clr
    where action = 'click_link'
    group by visitID

    Если сделать просто select * from srch_clr, то запрос отрабатывает
    Не понятно почему не найден столбец clientID в блоке, когда он там есть
  • https://t.me/clickhouse_ru
    А вы ошибку по чату искали ? Или хотя бы гулили ?
  • @alexeysumin94 #306718 06:44 PM, 11 Jan 2023
    Всем привет!
    Подскажите, плжалуйста, возможно ли в конструкции ALTER USER foo ADD HOST IP каким-то образом указать массив IP адресов, вместо того, чтобы для добавления каждого IP делать отдельный ALTER USER?
    Есть N юзеров и X IP в белом списке, хочется вызвать N альтеров, вместо N*X.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306714 #306719 06:49 PM, 11 Jan 2023
    иногда такая ошибка возникает при неправильном составлении списка колонок при group by. посмотрите внимательно - не затесалась ли там колонка без агрегации? Особенно учитывая что у вас window function + group by. В старых версиях с этим было не так хорошо. Попробуйте сделать еще один уровень вложенности подзапросов, чтобы разделить group by & WF
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306718 #306720 06:59 PM, 11 Jan 2023
    Можно. add host ip '192.168.1.1', ip '192.168.1.2'
    В документации на алтер указано - [,...]
  • проморгал, спасибо! 🙏
  • Сделал промежуточную CTE, не помогло.
    Далее сгруппировал еще по колонке clientID, которую он говорил, что нет ошибка что нет DateTime. Сгруппировал в итоге по visitID_, clientID_, DateTime и запрос отработал, но это конечно не то что нужно. В группировке нужно только visitID_

    А версия 21.12.4.1 старовата на данный момент?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306722 #306723 07:24 PM, 11 Jan 2023
    Вы бы дали пример в виде текста на pastila.nl На этих картинках ничерта не видно
  • Спасибо, пока проблема вроде решилась. А была она в подзапросе в where. Без него работает. В итоге вынес подзапрос в отдельный CTE и заменил на join
  • 12 January 2023 (235 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #306727 12:26 AM, 12 Jan 2023
    Скажите, а кликхаус научился делать multiple join или проблема ещё актуальна?
  • https://t.me/clickhouse_ru
    SELECT *
    FROM
    (SELECT 1 AS `column`) AS `T`
    JOIN
    (SELECT 1 AS `column`) AS `T2` ON(`T2`.`column` = `T`.`column`)
    LEFT JOIN
    (SELECT 2 AS `column`) AS `T3` ON(`T3`.`column` = `T`.`column`)
  • https://t.me/clickhouse_ru
    @a1imkul0v707 #306733 06:16 AM, 12 Jan 2023
    Всем привет,как решить? DB::Exception: default: Not enough privileges. To execute this query it's necessary to have grant SHOW USERS ON *.*. (ACCESS_DENIED) (version 22.6.7.7 (official build))
  • дать права на show users)
  • @tigrycat #306735 06:42 AM, 12 Jan 2023
    привет!
    а кто-нибудь наступал на грабли с использованием odbc коннектора к postgres?
    в докер-образе на основе ubuntu все работает, а под alpine проверка через isql нормально проходит, а когда делаю select из кликхауса - "Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: No message received. (POCO_EXCEPTION)", в стектрейсе примерно тожсамое.
  • https://t.me/clickhouse_ru
    А чем не устраивает коннектор в Clickhouse ?
  • в смысле? я из кликхауса цепляюсь в постгрю... мне в кликхаус не надо по одбс
  • https://t.me/clickhouse_ru
    Ну а почему просто не использовать табличную функцию postgresql() ?
  • хм, прикольно
    пойду покурю мануал
    спсб
  • https://t.me/clickhouse_ru
    @ZoMeR_LBF #306741 07:33 AM, 12 Jan 2023
    Добрый день.
    Возник вопрос о правельном приготовлении шардов.
    Есть кластер, достаточно большой, который планируем расширять за счет добавления новых шардов.
    Данные поступают из Кафки.

    Не возникнет ли в будующем серьезных проблем если distributed таблицы будут использоваться только для запросов SELECT а INSERT от кафки будет заливать новый каждый новых шард до определенного уровня?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306741 #306742 07:38 AM, 12 Jan 2023
    Не вполне понятна ваша мысль про "будет заливать новый каждый новых шард до определенного уровня".
    В общем случае правильно SELECT через Distributed, а INSERT вы сами распределяете по шардам.
  • https://t.me/clickhouse_ru
    Условно сейчас кластер это 4 реплики по 100ТБ
    Вот и хочется при достижении условных 98% по месту добавлять новый шард в 100Тб
  • https://t.me/clickhouse_ru
    вместо бесконечного расширения места
  • https://t.me/clickhouse_ru
    Автоматического решардирования в кх нет, будет тяжковато
  • https://t.me/clickhouse_ru
    @nyoroon #306746 07:42 AM, 12 Jan 2023
    Т.е. вы добавите новый шард, а в старых место автомагически не освободится
  • https://t.me/clickhouse_ru
    При вашем флоу нужно будет при каждом добавление шарда, делать полные перелив данных, и на это ещё надо будет место х2
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306744 #306748 07:47 AM, 12 Jan 2023
    Если запросы будут обращаться к данным одного месяца-года, то будут работать диски только одного шарда. Это будет медленнее, по сравнению с вариантом, когда вы размажете данные по всем шардам и в рамках одного запроса отработают диски всех шардов. Если это несущественно, скажем вы делаете систему для храненения данных "на всякий случай" с маленькой интенсивностью запросов, то почему бы и нет.
  • https://t.me/clickhouse_ru
    Вот да именно такой кейс, запросов почти нет.
  • https://t.me/clickhouse_ru
    @ZoMeR_LBF #306750 07:48 AM, 12 Jan 2023
    Спасибо за ответы.
  • https://t.me/clickhouse_ru
    @protomorphine #306752 08:26 AM, 12 Jan 2023
    Всем привет!
    Не совсем понял по документации про опцию POPULATE при создании материализованного представления.

    Выдержка из документации:
    Если указано POPULATE, то при создании представления в него будут добавлены данные, уже содержащиеся в исходной таблице, как если бы был сделан запрос CREATE TABLE ... AS SELECT ... . Если POPULATE не указано, представление будет содержать только данные, добавленные в таблицу после создания представления. Использовать POPULATE не рекомендуется, так как в представление не попадут данные, добавляемые в таблицу во время создания представления.

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

    Использовать POPULATE не рекомендуется, так как в представление не попадут данные, добавляемые в таблицу во время создания представления.

    Что это значит?
  • https://t.me/clickhouse_ru
    @Sablast #306756 08:30 AM, 12 Jan 2023
    это значит что если в момент выполнения POPULATE буду происходить вставки в источник, то они не доедут в МВ
  • https://t.me/clickhouse_ru
    @Sablast #306757 08:31 AM, 12 Jan 2023
    просто забудьте о POPULATE и сделайте всё руками
  • https://t.me/clickhouse_ru
    @protomorphine #306758 08:31 AM, 12 Jan 2023
    это было как раз второе предположение)
    спасибо)
  • https://t.me/clickhouse_ru
    @Mifody #306759 08:33 AM, 12 Jan 2023
    всем доброго
    кто нить настраивал связь с postgresql по доке https://clickhouse.com/docs/ru/engines/database-engines/materialized-postgresql/ ?
    настроили, начал раздуваться каталог pg_wal плоть до того, что сожрало все место (каталог весил более 300 Гб при суммарном весе баз постгреса ~100 Гб)
    каталог раздувался при изменении таблицы в базе, для которой не была настроена связь...
    можете пнуть в верном направлении?
  • @sergeich_tech #306762 08:41 AM, 12 Jan 2023
    Ребята, кто сталкивался с подобной проблемой ?

    Есть 2 идентичных кластера КХ, если две идентичные кафки
    В одном кластере - все прекрасно
    Во втором кластере - КХ не читает из кафки (при этом топики данными заполняются, и сама кафка работает отлично)

    Куда можно копнуть ?
  • https://t.me/clickhouse_ru
    Issues · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    Я бы посмотрел эррор логи кх
  • https://t.me/clickhouse_ru
    @Mifody #306765 08:50 AM, 12 Jan 2023
    Угу, спасибо за первый пинок, пошел думать
  • https://t.me/clickhouse_ru
    @5386841483 #306767 09:16 AM, 12 Jan 2023
    Добрый день. Вопрос по мониторингу через Прометей: надо ли устанавливать на сервер с clickhouse cluckhouse_exporter или достаточно раскомментировать параметры prometheus в конфиге и перезапустить clickhouse server?
  • @chsqrd #306768 09:35 AM, 12 Jan 2023
    Всем привет! А как можно узнать, в какой версии появилась та или иная функция? Например, age и date_diff?
  • https://t.me/clickhouse_ru
    найти коммит в котором добавили функцию и посмотреть в какие теги он включён
  • @Ruslan_Sharafutdinov #306771 09:42 AM, 12 Jan 2023
    привет, подскажите, мув партиций это мнгновенная операция на метаданных или ресурсоемкая с копированием?

    https://clickhouse.com/docs/ru/sql-reference/statements/alter/partition/#alter_move_to_table-partition
  • Это для тех, кто дружит с гитом. Для остальных чтение ченджлогов.
  • @chsqrd ↶ Reply to #306772 #306773 09:45 AM, 12 Jan 2023
    спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306771 #306775 09:53 AM, 12 Jan 2023
    Фраза в доке "Для таблиц должна быть задана одинаковая политика хранения (диск, на котором хранится партиция, должен быть доступен для обеих таблиц)." намекает что копировать никто ничего не собирается.
    КХ, когда порождает новый парт, обычно делает hardlink'и для всех файлов в парте. Так что эта операция не совсем атомарная, и не совсем на метаданных, однако достаточно быстрая.
  • понял, спасибо
  • @chsqrd #306777 09:58 AM, 12 Jan 2023
    Подскажите ещё пожалуйста, у нас логи экспортируются в Клик. Есть поле типа Nullable(Date), но в нём некоторые значения представлены как \N. Это что-то у нас кастомное ошибочное в экспорте, или это штатно-стандартное представление нуллов или что-то в этом роде для поля такого типа в Кликхаузе?
  • https://t.me/clickhouse_ru
    @politsin #306780 10:24 AM, 12 Jan 2023
    clickhouse-server.log слишком большой. Даже в сжатом состоянии 100+Mb

    что с этим лучше сделать?
  • @5298579064 #306781 10:34 AM, 12 Jan 2023
    добрый день. помогите, пожалуйста, советом:) select ('v1','v2')::Tuple(a String, b String) c, tupleElement(c, 'a') c_a, c.1 c_1, c.a; - tupleElement(c, 'a') работает, обращение c.a - нет. смогу обойтись без tupleElement? спасибо!
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #306780 #306782 10:39 AM, 12 Jan 2023
    Можно периодически его чистить или понизить уровень логгируемых событий.
  • https://t.me/clickhouse_ru
    Спасибо
    стояло trace, что видимо слишком дофига
    поставил error
  • https://t.me/clickhouse_ru
    @DarshilxD #306784 10:41 AM, 12 Jan 2023
    Привет ребята ,
    при резервном копировании моих таблиц с помощью clickhouse-backup я вижу такие журналы, как ALTER TABLE FREEZE...
    повлияет ли это на что-нибудь, если я использую этот инструмент для резервного копирования на производстве?
    я имею в виду, как это работает, замораживает ли таблицу до тех пор, пока не будет запущено резервное копирование конкретной таблицы?
  • https://t.me/clickhouse_ru
    @DarshilxD #306785 10:42 AM, 12 Jan 2023
    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
    100 мегабайт слишком много?)
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #306780 #306787 10:42 AM, 12 Jan 2023
    Во проблемы у людей у меня по 100 гигов был вот тогда я паниковал
  • https://t.me/clickhouse_ru
    @solard #306788 10:43 AM, 12 Jan 2023
    Повысьте уровень логирования или отключите вообще)
  • https://t.me/clickhouse_ru
    @politsin #306789 10:43 AM, 12 Jan 2023
    я повысил (или понизил, незнаю как это правильнее назвать) до error)
  • https://t.me/clickhouse_ru
    @politsin #306790 10:43 AM, 12 Jan 2023
    для меня каждые 100M важны)
  • https://t.me/clickhouse_ru
    @politsin #306791 10:44 AM, 12 Jan 2023
    там по 100M набирается почти 2 гига
  • https://t.me/clickhouse_ru
    @politsin #306792 10:44 AM, 12 Jan 2023
    набиралось) надеюсь дальше будет лучше
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306784 #306793 10:52 AM, 12 Jan 2023
    Оно делает хардлинки в shadow, не трогая ничего в основной таблице. Но если их там забыть, то потом будете искать пропавшее место диске, как тут спрашивали пару дней назад.
    В доке вроде все достаточно точно описано про freeze - https://clickhouse.com/docs/en/sql-reference/statements/alter/partition/#freeze-partition Вы это читали?
  • https://t.me/clickhouse_ru
    @politsin #306796 11:15 AM, 12 Jan 2023
    У меня похоже не рабтают настройки flush_interval_milliseconds которые должны быть выставлены по умолчанию.

    Эту часть файла config.xml я не трогал.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @politsin #306798 11:16 AM, 12 Jan 2023
    С какой стороны подходить к вопросу?
  • https://t.me/clickhouse_ru
    @politsin #306799 11:17 AM, 12 Jan 2023
    <?xml version="1.0"?>
    <clickhouse>
    <trace_log>
    <database>system</database>
    <table>trace_log</table>
    ***
    </trace_log>
  • https://t.me/clickhouse_ru
    @politsin #306800 11:17 AM, 12 Jan 2023
    Конфигурация лежит сразу на первом уровне настройки сервера
  • https://t.me/clickhouse_ru
    @269917803 #306801 11:18 AM, 12 Jan 2023
    Привет!
    Почему в таблице созданной вот так не происходит слияния строк даже после optimize final?
    Это может быть связано с тем, что Processed is null?
    https://pastila.nl/?0e974800/cd1b5168dfe178686a3aae9d7f302c5d
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    я только что прочитал эту статью, так что единственная проблема здесь связана с дисковым хранилищем, если я правильно понимаю, есть ли возможность установить для него время ожидания, чтобы теневой файл был удален через некоторое время?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306803 #306804 11:34 AM, 12 Jan 2023
    Вы сами (точнее программа backup) удаляет файлы из shadow. Clickhouse не будет их удалять ни по каким настройкам. Только явный запуск unfreeze с указанием раздела, или аналогичный rm -rf
  • https://t.me/clickhouse_ru
    хорошо спасибо за помощь
  • https://t.me/clickhouse_ru
    Разобрался, оказывается для распределённых нужно делать так:
    optimize table table_1 on cluster my_cluster final;
  • https://t.me/clickhouse_ru
    @sharp_0000ff #306809 12:24 PM, 12 Jan 2023
    Всем привет, подскажите пожалуйста, в документации по clickhouse настройке пользователей, ролей и прочего, пишут, что использовать предпочтительно grants, такой вопрос, как через grants задать ip который может слушать сервер, чтобы отправлять с этого ip данные
    Что-то нигде найти не могу, есть настройки в user.xml <ip></ip>, но как сделать через grants нигде не написано
  • alter user add host
    емнип
  • @s4851 ↶ Reply to #306809 #306812 12:34 PM, 12 Jan 2023
    ALTER USER user_name HOST IP '192.168.1.0/24'
  • https://t.me/clickhouse_ru
    @ademidov #306813 12:43 PM, 12 Jan 2023
    привет, а для того чтобы попробовать async_insert что-то дополнительно включать надо ?

    > INSERT INTO test_insert SETTINGS async_insert=1 VALUES(1);

    Syntax error: failed at position 25:

    INSERT INTO test_insert SETTINGS async_insert=1 VALUES(1);

    Expected one of: token, OpeningRoundBracket, Dot, FORMAT, WITH, SELECT, VALUES
  • https://t.me/clickhouse_ru
    @ademidov #306814 12:43 PM, 12 Jan 2023
    SELECT version()

    22.1.3.7
  • https://t.me/clickhouse_ru
    @ademidov #306815 12:44 PM, 12 Jan 2023
    Asynchronous Inserts (async_insert) | ClickHouse Docs

    Inserting data into ClickHouse in large batches is a best practice. It saves compute cycles and disk I/O, and therefore it saves money. If your usecase allows you to batch your inserts external to ClickHouse, then that is one option. If you would like ClickHouse to create the batches, then you can use the asynchronous INSERT mode described here.

  • https://t.me/clickhouse_ru
    @ademidov #306816 12:44 PM, 12 Jan 2023
    кажется он вообще SETTINGS не понимает в DML
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    Насколько понимаю вот этого должно хватить:

    https://clickhouse.com/docs/ru/operations/server-configuration-parameters/settings#server_configuration_parameters-prometheus
  • https://t.me/clickhouse_ru
    @ksevostyanov #306819 12:55 PM, 12 Jan 2023
    здравствуйте, скажите пожалуйста, для "ip_trie" не планируется в ближайшее время PRIMARY KEY по нескольким ключам(как у LAYOUT(COMPLEX_KEY_HASHED()))?
  • https://t.me/clickhouse_ru
    @politsin #306820 01:28 PM, 12 Jan 2023
    у меня почти 10G логов на 30Mb данных.
    Похоже то что в стандартном конфиге у меня не работает автоочистка, хотя везде установлен flush_interval_milliseconds (по умолчанию).

    Вопрос по решению из статьи
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306820 #306821 01:32 PM, 12 Jan 2023
    yandex - исторически. можно не обращать внимания и считать что тут написано clickhouse.
    В статье все правильно написано, так и делайте.
    в config.xml ничего класть не надо и менять его тоже не стоит - затрут при переустановке. Все что вы хотите поменять кладите в файлики с произвольным именем в каталог config.d, ровно как показано на вашей картинке
  • https://t.me/clickhouse_ru
    flush не про очистку, а про запись в таблицу из памяти
  • А кх как то на лету видит изменения в конфигах или рестарт только?
  • https://t.me/clickhouse_ru
    @VaskaKasatka #306824 02:16 PM, 12 Jan 2023
    Всем привет!
    Подскажите, пожалуйста, мне нужно создать составной словарь, в котором одна из колонок будет являться и частью ключа, и атрибутом. Возможно ли такое?
    Мануал прошерстил вдоль и поперек, но не смог найти конкретный ответ (хотя склоняюсь, что невозможно)
  • https://t.me/clickhouse_ru
    @runiverse_hiker #306825 02:17 PM, 12 Jan 2023
    Добрый день. Подскажите пожалуйста - есть ли возможность в функции EXPLAIN кх провести анализ сколько времени уходит на какую часть запроса?
  • https://t.me/clickhouse_ru
    @den09 ↶ Reply to #306820 #306826 02:19 PM, 12 Jan 2023
    На удаление вам надо TTL описать
  • https://t.me/clickhouse_ru
    Это было то что нужно, большое спасибо!
  • https://t.me/clickhouse_ru
    @MakeReady #306828 02:30 PM, 12 Jan 2023
    Добрый день!
    При создании представления есть ли разница установить настройку join_use_nulls или делать для полей cast(field,’Nullable(Int32)’)
    ?
  • https://t.me/clickhouse_ru
    видит, но многие настройки могут быть применены только при старте.

    т.е. вы меняете порт 9000 в конфиге на 9999, кх это видит и меняет внутри у себя в переменной что порт= 9999, но используется эта переменная только при старте КХ

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-server-config-files/#settings--restart
    Server config files

    How to manage server config files in Clickhouse

  • Спасибо
  • https://t.me/clickhouse_ru
    если у меня в основном конфиге написано <clickhouse> то мне в доп-конфиге тоже стоит яндекс на кликхаус переименовать, или будет работать хоть как?
  • https://t.me/clickhouse_ru
    почти нет.
    join_use_nulls иногда работает не так как хотелось бы https://github.com/ClickHouse/ClickHouse/issues?q=is%3Aissue+is%3Aopen+join_use_nulls
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    можно мешать их как угодно, это типа синонимы
  • https://t.me/clickhouse_ru
    @politsin #306836 02:50 PM, 12 Jan 2023
    спасибо
  • https://t.me/clickhouse_ru
    хаха 🙂 нет, это мегазадача. Все процессы происходят одновременно в стриминге, т.е. главный вопрос надо решить: что такое время? секунды CPU?
  • https://t.me/clickhouse_ru
    хм, EMНИП у ip_trie ключ это IP адрес сети. Какой смысл там делать какой-то другой ключ?
  • https://t.me/clickhouse_ru
    @ksevostyanov #306839 03:07 PM, 12 Jan 2023
    склейку нужно сделать как по дипазону 192.x.x.x/24(IP) так и по еще одному Int полю справочника
  • https://t.me/clickhouse_ru
    @politsin #306840 03:12 PM, 12 Jan 2023
    Я дропнул большие таблицы логов.
    Но место на диске не освободилось.
    Как я могу оптимизировать используемое место на диске?
  • https://t.me/clickhouse_ru
    8 минут прошло ?
  • https://t.me/clickhouse_ru
    ну в каталоге /shadow оно или в /backup
  • https://t.me/clickhouse_ru
    вот теперь прошло, пасиб. почистилось
  • https://t.me/clickhouse_ru
    @timofei_melnikov #306844 03:19 PM, 12 Jan 2023
    Почему в партицированной таблице с движком ReplicatedReplacingMergeTree команда OPTIMIZE TABLE table ON CLUSTER '{cluster}' FINAL может не схлопывать дубликаты по ключу? Даже мутация не появляется. Запрос select * from table final возвращает коректные данные и если убрать партиции с таблицы все тоже работает как надо. Версия 22.3.12.21.altinitystable
  • https://t.me/clickhouse_ru
    @VaskaKasatka #306845 03:27 PM, 12 Jan 2023
    Можно ли как-то использовать dictGetString() не для атрибута, а для ключа в словаре? Или для одной из колонок в составном ключе словаря?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306844 #306846 03:27 PM, 12 Jan 2023
    У вас optimize_skip_merged_partitions случайно не включено?
    Я тоже сталкивался с подобным. На 22.10
    Поборолся оптимизацией по одной партиции. Список партиций в которых больше 1-го парта построить не трудно.
  • https://t.me/clickhouse_ru
    например места свободного нет для мержа.

    --optimize_throw_if_noop arg If setting is enabled and OPTIMIZE query didn't actually assign a merge then an explanatory exception is thrown
  • https://t.me/clickhouse_ru
    нельзя. идея в том что вы уже передаете ключ, поэтому знаете его, правда это так для некоторых словарей типа rangehashed
  • https://t.me/clickhouse_ru
    там кстати все забавно, не попадут данные инсерта который в момент запуска create mat.view

    типа

    T0: insert1 start |
    T1: insert1 end |
    T2: insert2 start |
    T3: | create matView start -- it misses insert2
    T4: | create matView end / matView populate started
    T5: insert2 end |
    T6: insert3 start |
    T7: insert3 end |
    T8: | matView populate end

    т.е. 2 стадии: 1 matvew создается моментально и начинает долгий populate
    будут потеряны инсерты которые начались но не закончились в краткий момент стадии 1.

    пока идет долгий популейт инсерты будут перехвачены триггером. То что было создано инсертами до create matview будет перехвачено populate

    У populate много проблем, например из-за on cluster populate выполнится на всех репликах и тупо умножит все данные.
  • https://t.me/clickhouse_ru
    @buttno #306851 04:29 PM, 12 Jan 2023
    Доброго, а может кто подсказать, чем https://hub.docker.com/r/altinity/clickhouse-server отличается от оригинального кроме бейз образа?
  • https://t.me/clickhouse_ru
    там altinity билд. Он отличается от оригинального. Алексей Миловидов считает что Альтинити билды убогие и их использовать нельзя (мое мнение иное)
  • https://t.me/clickhouse_ru
    @konnectrl #306853 04:30 PM, 12 Jan 2023
    @den_crane Тебя в чате банили ?
  • https://t.me/clickhouse_ru
    @buttno ↶ Reply to #306852 #306854 04:33 PM, 12 Jan 2023
    Принял спасибо
  • https://t.me/clickhouse_ru
    нет. Меня банил телеграм, за что банил телеграм неизвестно, я подозреваю за ссылки на pastila.nl. Потому что поудалялось куча моих сообщений со ссылками.
    причем бан странный, в некоторых чатах писать было можно, контактам писать нельзя даже если я с ними общался раньше, но я не в их адресной книге
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #306852 #306856 04:33 PM, 12 Jan 2023
    А почему они по мнению Миловидова убогие?
    И в чём их отличие? Я полагал, что они отличаются лишь наличием дополнительных полезных\критичных по вашему мнению коммитов в своём составе.
  • https://t.me/clickhouse_ru
    @buttno #306857 04:36 PM, 12 Jan 2023
    Прошу прощения я забыл уже про этот спор, но все получается как раньше друг на друга катят
  • https://t.me/clickhouse_ru
    @buttno #306858 04:36 PM, 12 Jan 2023
    А шашечки у альтинити
  • https://t.me/clickhouse_ru
    КХ очень тяжело собрать правильно и протестировать сброку тоже. Любые альтернативные билды могут падать там где работает оригинальный
  • https://t.me/clickhouse_ru
    Леша полагает, что они неправильно собраны. Но собираются они почти так же, но главное — все те же тесты прогоняются, плюс еще куча тестов от Альтинити. Так что они не убогие, а наоборот
  • https://t.me/clickhouse_ru
    @konnectrl #306862 04:49 PM, 12 Jan 2023
    Каждый продавец хвалит свою телегу :)
  • https://t.me/clickhouse_ru
    @floxard #306863 04:49 PM, 12 Jan 2023
    Зачем вообще собирать КХ, если он уже собран и есть оф репа? Что такого есть в альтинити билдах чего нет на packages.clickhouse.com?
  • 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
    @floxard #306868 04:56 PM, 12 Jan 2023
    Не припомню когда на опенсорс, тем более на линуксе, нужен был бы диск. Не все олды начинали с окон.
  • https://t.me/clickhouse_ru
    @marspais #306869 04:57 PM, 12 Jan 2023
    Всем привет) как в клике объединить два запроса в одну транзакцию?
  • https://t.me/clickhouse_ru
    Да это шутка про игры. Что раньше игры часто не работали без диска, чтобы новые игроки покупали новые диски. И пиратки работали без диска
  • https://t.me/clickhouse_ru
    а как же диски с ubuntu ?
  • https://t.me/clickhouse_ru
    В клике нет транзакций
  • https://t.me/clickhouse_ru
    Именно транзакции ? Ну легче ответить, что их нет
  • https://t.me/clickhouse_ru
    @marspais #306874 04:58 PM, 12 Jan 2023
    А обойти это как то можно?
  • https://t.me/clickhouse_ru
    А что нужно?
  • https://t.me/clickhouse_ru
    @konnectrl #306876 04:58 PM, 12 Jan 2023
    А что вам именно нужно сделать ?
  • https://t.me/clickhouse_ru
    @marspais #306877 04:58 PM, 12 Jan 2023
    Просто задача удалить данные и потом вставить, не хотелось бы их где то посередине потерять)
  • @Dmitryd11 #306878 04:59 PM, 12 Jan 2023
    Это про видимость наверное
  • Это про видимость данных скорее всего?
  • https://t.me/clickhouse_ru
    ну тут нужно перестроить мышление немножко по-кликхаусовски, задача решается одним инсертом)
  • @Dmitryd11 #306881 05:00 PM, 12 Jan 2023
    В транзакции ты их меняешь, а пока она идёт - остальные со старыми работают?
  • https://t.me/clickhouse_ru
    Так уже интересно) можно намекнуть
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
  • @7699150 #306886 05:01 PM, 12 Jan 2023
    Всем привет!
    Есть CSV файл, в колонках которого есть строки такого типа:
    "column1", "Картина "Три Медведя"", "column3"
    То есть могут быть строки с двойными кавычками внутри
    КХ при попытке их считать падает с ошибкой.
    Подскажите пожалуйста, есть ли способ все же считать такие данные не редаектируя CSV файл?
  • https://t.me/clickhouse_ru
    Удалять дорого, потому что колонки хранятся отдельно, и вместо точечного удаления придется переписывать большой кусок.
    Есть движки как привели пример выше, позволяющие фоном реплейсить, аггрегировать, схлопывать строки. При этом в запросе всё равно придется доаггрегировать потому что конечный результат не гарантируется.
  • https://t.me/clickhouse_ru
    CustomSeparated
  • Кажись так сделать нельзя а кликхаусе.
  • @yatimur #306890 05:04 PM, 12 Jan 2023
    Всем привет, помогите разобраться пожалуйста.

    У меня есть ес2 инстанс с кликхаусом, на нем я настроил s3 bucket в качестве диска по гайду с оф сайта.

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

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

    Я еще узнал, что по пути /var/lib/clickhouse/disks/s3_disk/диск хранятся мета данные диска, попробовал просто скопировать их на новый инстанс, но тоже не завелось.

    Подскажите, как правильно восстанавливать данные с такого бакета?
  • https://t.me/clickhouse_ru
    а что должно быть в итоге ? просто можно выключить двойные кавычки --format_csv_allow_double_quotes arg If it is set to true, allow strings in double quotes.
  • https://t.me/clickhouse_ru
    У меня такая ситуация, что есть большая таблица, по ней строится словарь с двумя колонками:

    id
    adr

    С типом flat как бы я не выставлял max_array_size он всегда выдавал ошибку
    identifier should be less than (значение max_array_size)
    С типом hashed Ошибка всегда такого рода:
    DB::Exception: Memory limit (total) exceeded: would use 74.71 GiB
    Причем как бы не увеличивал до практически потолочных значений, всегда выходит ошибка "would use n GIB"
    Cache не подходит, т.к извлечение данных из словаря >2 минут

    Данный словарь в целом работает только с типом direct, при котором в рамках запроса он отрабатывает долго, т.к ключ словаря id, а атрибут искомый adr. Если adr указать в составной ключ, то данные отдаются почти мгновенно, но тогда их не получится использовать в рамках запроса через dictGet()

    Переписывал вместо словаря в запрос, выполняется быстрее чем сейчас, но гораздо медленнее, чем когда таблица словаря весила в 3 раза меньше и словарь был с типом hashed, поэтому хочется попробовать как-то остаться в рамках словаря)

    Можете ли что-нибудь посоветовать?
  • https://t.me/clickhouse_ru
    никак.

    в каталоге data/ в файлах хранятся ссылки на s3
  • делаю SELECT FROM S3 с форматом CSVWithNames
    автоматическа Schema Inference падает с ошибкой
    если схему задаю руками – ругается на строки, в которых есть двойные кавычки в тексте
    в идеале – считать строку как она есть
  • https://t.me/clickhouse_ru
    у вас случайно PREALLOCATE не включен?
  • format_csv_allow_double_quotes – не помогло
  • https://t.me/clickhouse_ru
    есть словарь cached
  • https://t.me/clickhouse_ru
    в смысле? все равно ошибка?
  • да
  • https://t.me/clickhouse_ru
    Вижу что там через sign поле обновляются данные
  • а создание этих ссылок на новом хосте не поможет ни чем?
  • судя по документации – этот параметр true по дефолту
  • https://t.me/clickhouse_ru
    Для hashed типа?
    Не выставлял его, значит по умолчанию false
  • https://t.me/clickhouse_ru
    Да. Вы выставляете данные, они там так и лежат с sign=-1 или sign=1, пока не случится фоновая операция (мерж), при которой две строки одинакового ПК с sign=-1 и sign=1 взаимоуничтожатся.
  • https://t.me/clickhouse_ru
    cat test.csv |clickhouse-client --format_csv_allow_double_quotes=0 -q 'insert into csv format CSV'

    select * from csv;
    ┌─A─────────┬─B───────────────────────┬─C─────────┐
    │ "column1" │ "Картина "Три Медведя"" │ "column3" │
    └───────────┴─────────────────────────┴───────────┘
  • и еще уточняющий вопрос.

    я правильно понял, что если удалить инстанс с кликхаусом который использовал бакет N в качестве диска, то файлы в этом бакете я не смогу никак использовать кликхаусом с другого инстанса?
  • https://t.me/clickhouse_ru
    да. PREALLOCATE просто на этапе построения словаря может неадекватно память выделять в определённых условиях. а вы данные дедублицируете перед тем как словарь строить? ну в смысле у вас id уникальный приходит в словарь?
  • https://t.me/clickhouse_ru
    вы их не можете создать, их надо взять со старого хоста
  • А чё кликхаус умеет с дисками в S3 через fuse работать ? Может только в yandex cloud у них там драйвер специфичный, много что из posix умеет в aws может не завестись
  • https://t.me/clickhouse_ru
    и да и нет, вы неправильные вопросы задаете. Вы не рассказываете что за задача, вам картину повесить надо, а вы рассказыаете что перфоратор у вас не той марки.
  • https://t.me/clickhouse_ru
    Да, id уникальный
    Исходная таблица для словаря на 24гб, с кол-вом строк 640к
    Меня несколько удивляет, что не хватает выделенных 75гб RAM, если тип hashed использовать
    Есть ли смысл прямо указать preallocate 1?
  • https://t.me/clickhouse_ru
    фусе для s3 не умеет хардлинки
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306892 #306913 05:15 PM, 12 Jan 2023
    А сколько данных в вашей большой таблице (uncompressed)? Шанс то есть ее в ваш RAM затолкать? Если есть, то учтите что hashed жрет памяти больше других. Попробуйте sparce_hashed или hashed_array - может они влезут.
    Если нет, то попробуйте кропотливо настроить параметры cache - все лучше чем direct будет. Хоть какое-то количество хитов вам обеспечит.
  • https://t.me/clickhouse_ru
    нет. preallocate ускоряет построение
  • https://t.me/clickhouse_ru
    layout = cached
  • окей, сорян, под конец дня поплыл и тяжело формулируются мысли)

    есть ес2 инстанс, на нем кликхаус, в качестве диска используется s3 бакет.

    задача - в случае смерти инстанса, иметь возможность восстановить данные из БД.
  • https://t.me/clickhouse_ru
    Пробовал по-разному писать layout(cache()) — всегда долго извлекает данные из словаря
  • https://t.me/clickhouse_ru
    Понял
  • https://t.me/clickhouse_ru
    Пробовал — не влазит ни один из указанных вами типов
  • https://t.me/clickhouse_ru
    регулярные снепшоты ebs , восстанавливаете снепшот
  • https://t.me/clickhouse_ru
    а addr у вас сколько уникальных на словарь? в процентах
  • https://t.me/clickhouse_ru
    размер сколько указывали и сколько вообще строк , процент горячих строк?
  • точно, забыл про снепшоты, спасибо.

    я же правильно понял, что на ebs хранится только мета инфа о БД?
  • https://t.me/clickhouse_ru
    да (если все данные на s3)
  • вы правы, я не правильно сначала понял
    выключил двойные кавычки и заработало
    Спасибо
  • https://t.me/clickhouse_ru
    100% )
    627,5к уникальных строк
  • https://t.me/clickhouse_ru
    жаль
  • https://clickhouse.com/docs/en/operations/backup/ а system в соседний банкет копировать и восстанавливать сначала его а потом бакет
    Backup and Restore | ClickHouse Docs

    - Backup to a local disk

  • https://t.me/clickhouse_ru
    LAYOUT(CACHE(SIZE_IN_CELLS 700000)) указывал так изначально когда тестил
  • https://t.me/clickhouse_ru
    Без шансов?)
  • я читал это, но я так понял, что в этих кейсах нужно сначала подготовить бэкап, чтоб было что восстанавливать
  • https://t.me/clickhouse_ru
    ну я хотел предложить построить два словаря)
    id -> addr_id (hash)
    addr_id -> addr
  • https://t.me/clickhouse_ru
    700000 это кстати не про строки, но это не важно.

    что по второму и 3му вопросам?
  • Ну как бы да.
  • теперь падает когда в строке есть запятая 🗿🗿🗿
    не знаете, можно ли и это как-то обойти?)
  • И снепшоить просто так диски базы без скидывания Кеша на них так себе затея скорее всего данные будут побиты.
  • можно подробнее про скидывание кэша? где почитать?
  • наверное легче заменить в глобально удалить кавычки
  • https://t.me/clickhouse_ru
    >Данный словарь в целом работает только с типом direct, при котором в рамках запроса он отрабатывает долго, т.к ключ словаря id,
    >а атрибут искомый adr. Если adr указать в составной ключ, то данные отдаются почти мгновенно, но тогда их не получится использовать в рамках запроса через dictGet()

    вот это тоже непонятно, почему? У вас таблица order by (adr ) ?
  • https://t.me/clickhouse_ru
    нет. Это будет аналогично ребуту (откату на 30 секунд назад). Как будто бекап сделали не во время T, а во время (T-30) сек,
    ядро имеет параметр dirty_pages_centisecs чего-то там и оно 30сек.
  • Да в кликхаусе нету жёсткого PIRT , только чекпоинты. Такие штуки нужны где транзакции и куча данных в памяти может болтаться и pitr нужно
  • https://t.me/clickhouse_ru
    Да, order by adr

    По вашим вопросам тяжело ответить, если под горячими строками, вы имеете ввиду частые записи при выборке из словаря, то процентов 50 от общего кол-ва точно будет
    Размер вы имеете ввиду размер кэша в кол-ве ячеек?
    Указывал первично CACHE(SIZE_IN_CELLS 700000) и после этого значения выше на порядок
  • https://t.me/clickhouse_ru
    да нету никаких чекпоинтов, не надо бредить
  • А гарантий какие-то есть, что после ребута там структуры данных не покараптит оно ?
  • Ну и хорошо, а почему клик пытаются как acid rdbms использовать ?
  • @Dmitryd11 #306946 05:33 PM, 12 Jan 2023
    Вон уже 2 человека спрашивают про транспорт таблспейс и про видимость данных в транзакциях.
  • https://t.me/clickhouse_ru
    Насчет order by (adr) в исходной таблице, вы, наверное, к тому, что если там указан order by adr, то и из словаря по adr должно быстро обсчитывать?
    Но условно при составном ключе в словаре select * from dict работало быстрее, нежели при ключе с id
    Это я про тип direct и complex_key_direct
  • https://t.me/clickhouse_ru
    т.е. проблемы с cache и с direct из-за orderby у таблицы.
  • https://t.me/clickhouse_ru
    Хм, не очень понимаю
    С чем связана проблема?
  • https://t.me/clickhouse_ru
    с тем что поиск по id очень медленный
  • https://t.me/clickhouse_ru
    сделайте копию таблицы с order by id
    и проверьте direct снова на ней
  • https://t.me/clickhouse_ru
    Да, действительно логично же..)
    Пойду пробовать править исходную
  • https://t.me/clickhouse_ru
    Да, спасибо, об этом и подумал
  • https://t.me/clickhouse_ru
    ну вот если послать в неожиданный ребут линукс и кх , что будет?
  • https://t.me/clickhouse_ru
    ну я вот тоже считаю что транзакции необходимы, и возможны, они уже готовы на 90% два года назад были, теперь на 95% готовы, ими занимается один человек один день в году, низкоприоритетная задача.

    это кстати не имеет отношения к ACID, ACID и транзакции перпендикулярны.
  • Думаю ничего хорошего не будет.
  • https://t.me/clickhouse_ru
    да все время в хецнере ребутаются железки, никто не умер.
    У КХ подстелено соломки.
  • https://t.me/clickhouse_ru
    @den_crane #306959 05:53 PM, 12 Jan 2023
    в общем-то если понимать как КХ создает парты при инсертах и мержах, все становится очевидно
  • https://t.me/clickhouse_ru
    @den_crane #306960 05:55 PM, 12 Jan 2023
    можно потерять несколько последних инсертов, но это != покараптить данные
  • https://t.me/clickhouse_ru
    @den_crane #306961 05:56 PM, 12 Jan 2023
    вертика тоже например может потерять несколько минут последних, если эл-во во всем шкафу рубануть
  • https://t.me/clickhouse_ru
    @den_crane #306962 05:56 PM, 12 Jan 2023
    при загрузке скажет last good epoch 2020-01-01. procceed?
  • https://t.me/clickhouse_ru
    @den_crane #306963 06:01 PM, 12 Jan 2023
    кстати вспомнил, у меня последние n раз КХ не стартовал после хардресета из-за engine=Log таблиц, но это смешной баг минуты на 4, который не чинят уже два года
  • А когда S3 диски использовать ? Есть смысл?
  • https://t.me/clickhouse_ru
    ИМХО никогда.
    s3 диски дороже в 10 раз чем HDD диски в хецнере.
  • @Dmitryd11 #306966 06:12 PM, 12 Jan 2023
    Я видел только 1 кейс когда за S3 стораджом какое-то кросс дц хранилище объектное и 1 url у всех.
  • https://t.me/clickhouse_ru
    ну clickhouse cloud весь на s3, там все данные в s3
  • https://t.me/clickhouse_ru
    @justswan #306968 06:15 PM, 12 Jan 2023
    А как это вообще работает?
    все время нужно ходить за данными на s3 и оттуда в память? все операции в памяти, а если запрос большой, то оно как-то окном читает считает читает считает?
  • https://t.me/clickhouse_ru
    есть кеш, на диске. Если второй раз пойти за кусочком колонки, то этот кусочек либо возьмется из дискового кеша ноды, либо скачается с s3
  • https://t.me/clickhouse_ru
    @den_crane #306970 06:17 PM, 12 Jan 2023
    с s3 можно забирать нужный кусок объекта, не надо весь объект тянуть
  • https://t.me/clickhouse_ru
    @justswan #306971 06:18 PM, 12 Jan 2023
    Партицию? там много файлов получается?
  • https://t.me/clickhouse_ru
    @justswan #306972 06:18 PM, 12 Jan 2023
    как на диске? та же структура?
  • https://t.me/clickhouse_ru
    @den_crane #306973 06:18 PM, 12 Jan 2023
    вообще в s3 все что вам кажется файлами в сотни гигабайт это объекты по 5 мб.
  • https://t.me/clickhouse_ru
    да не так object storage работает
  • https://t.me/clickhouse_ru
    @den_crane #306975 06:20 PM, 12 Jan 2023
    вам кажется что вы положили в s3 файл, но это внутри это куча объектов, и вы можете кусок от файла попросить.
    и каталогов в бакете нет. Это все плоская таблица где-то внутри s3 с поиском по префиксу, и слеши там чистая условность
  • https://t.me/clickhouse_ru
    получается что есть где-то индекс партицй с указанием смещения, анализируется запрос и берутся нужные куски?
  • https://t.me/clickhouse_ru
    @justswan #306977 06:22 PM, 12 Jan 2023
    ок, нужно попробовать, спасибо

    В доке есть приме когда диск+s3 для старых данных, очень интересно
  • https://t.me/clickhouse_ru
    нет, не так.

    вот есть файлик mycolumn455.bin
    он лежит на диске, КХ может прочитать кусок файла, гранулы, смещения гранул лежат в файле mycolumn455.mrk.

    теперь кладем файл mycolumn455.bin в s3, имя у s3файла в бакете будет рандомное r56767fdgd_3453676ddfg
    в файлик mycolumn455.bin положим полный путь в s3файлу (вообще полный).
    дальше через s3 api можно точно также попросить кусок (нужные гранулы) от r56767fdgd_3453676ddfg
    это все довольно быстро работает, летенси конечно чуть больше чем у hdd (раз в 10) на коротких запроса , но дисковый кеш это митигейтит.
  • https://t.me/clickhouse_ru
    @justswan #306979 06:28 PM, 12 Jan 2023
    понял, красиво как
  • https://t.me/clickhouse_ru
    @den_crane #306980 06:28 PM, 12 Jan 2023
    имя рандомное и все файлы всех партиций лежат вперемешку внутри одного каталога, потому что так проще из-за отсутвия хардлинков в s3.
  • https://t.me/clickhouse_ru
    @den_crane #306981 06:29 PM, 12 Jan 2023
    фактически при мутациях и мержах можно в новый парт в файлик положить ссылку на старый s3файл
  • https://t.me/clickhouse_ru
    @den_crane #306982 06:38 PM, 12 Jan 2023
    в общем остается маленький кусок, положить все метаданные в зукипер и локальный диск станет не нужен. Насколько я понимаю это уже делается в приватном репозитории, и возможно нам этого не дадут https://github.com/ClickHouse/ClickHouse/issues/32513#issuecomment-1368241078
  • Спасибо за описание 👍
  • @AlessandrD #306985 10:07 PM, 12 Jan 2023
    Насколько эффективно ClickHouse сжимает строки с повторяющимся текстом? Блоки повторения от 5 до 700 символов
  • https://t.me/clickhouse_ru
    zstd хорошо сжимает.

    вы можете сделать так

    mycol String Codec(ZSTD(1)) или mycol String Codec(ZSTD(3))

    1 быстро , 3 выше уровень компресии, макс уровень 22, но там будет очень медленно.
  • 13 January 2023 (116 messages)
  • https://t.me/clickhouse_ru
    @Alexeysaff #306988 02:12 AM, 13 Jan 2023
    Подскажите, как мне быть с примером из документации

    INSERT INTO json_as_string (json) FORMAT JSONAsString {"foo":{"bar":{"x":"y"},"baz":1}},{},{"any json stucture":1}

    но что, если в таблице у меня есть еще поле ID uint и date ?
  • https://t.me/clickhouse_ru
    @Alexeysaff #306989 02:12 AM, 13 Jan 2023
    как в таком случае быть с FORMAT JSONAsString ?
  • https://t.me/clickhouse_ru
    @Alexeysaff #306992 05:32 AM, 13 Jan 2023
    SELECT
    opp.created_at,
    JSONExtractUInt(JSONExtractString(opp.data, 'app'), 'start_time') AS opp.start_time,
    opp.application_instance_name AS app,
    opp.application_hostname AS host
    FROM TABLE1 as opp
    LEFT JOIN
    (
    SELECT
    SUM(JSONExtractUInt(data, 'total_volume_remaining')) AS cqty,
    JSONExtractUInt(data, 'order_id') AS oid,
    JSONExtractUInt(JSONExtractString(data, 'app'), 'start_time') AS start_time
    FROM TABLE2
    ) AS cancel ON (opp.oid = cancel.oid) AND (opp.start_time = cancel.start_time)

    и получаю
    Code: 47. DB::Exception: Received from localhost:9000. DB::Exception: There's no column 'opp.start_time' in table 'opp': While processing opp.start_time AS --opp.start_time. (UNKNOWN_IDENTIFIER)
  • https://t.me/clickhouse_ru
    @Alexeysaff #306993 05:32 AM, 13 Jan 2023
    что не нравится CH?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #306992 #306995 05:59 AM, 13 Jan 2023
    а что это за синтаксис такой интересный - "AS opp.start_time" ?
    Нужно или "as start_time" или "as ``opp.start_time`` ".
    Судя по остальному коду, вам скорее всего нужен первый вариант.
  • https://t.me/clickhouse_ru
    @Alexeysaff #306996 05:59 AM, 13 Jan 2023
    as start_time
  • https://t.me/clickhouse_ru
    @Alexeysaff #306997 05:59 AM, 13 Jan 2023
    typo
  • https://t.me/clickhouse_ru
    @Alexeysaff #306998 05:59 AM, 13 Jan 2023
    sorry
  • https://t.me/clickhouse_ru
    @Alexeysaff #306999 06:00 AM, 13 Jan 2023
    всё равно не работает
  • https://t.me/clickhouse_ru
    @Alexeysaff #307000 06:01 AM, 13 Jan 2023
    вы мне помогали с object JSON, перешёл на JSONAs stirng и всё равно JOINs не могу делать
  • https://t.me/clickhouse_ru
    @bvt123 #307001 06:01 AM, 13 Jan 2023
    покажите точный селект. Иначе гадать где там надо читать, а где нет - так себе затея
  • https://t.me/clickhouse_ru
    @Alexeysaff #307002 06:08 AM, 13 Jan 2023
    SELECT
    created_at,
    JSONExtractUInt(JSONExtractString(data, 'app'), 'start_time') AS start_time,
    application_instance_name AS app,
    application_hostname AS host
    FROM data__lt_sparrow_opportunity as opp
    LEFT JOIN (
    SELECT
    SUM(JSONExtractUInt(data, 'total_volume_remaining')) as cqty,
    MAX(JSONExtractUInt(data, 'time_stamp')) as rp_ts,
    JSONExtractUInt(data, 'order_id') as oid,
    max(created_at) as cancel_created_at,
    JSONExtractUInt(JSONExtractString(data, 'app'), 'start_time') as start_time
    FROM data__lt_sparrow_order_response_cancel_confirm GROUP BY oid, start_time ) AS cancel
    ON opp.oid = cancel.oid AND opp.start_time = cancel.start_time
  • https://t.me/clickhouse_ru
    @Alexeysaff #307003 06:10 AM, 13 Jan 2023
    запрос на самом деле намного больше, но вот базовая, урезанная часть, которая по идее должна же работать ( и работает в PG.
  • https://t.me/clickhouse_ru
    @bvt123 #307004 06:15 AM, 13 Jan 2023
    тогда у меня тоже вопрос - где в таблице data__lt_sparrow_opportunity колонка start_time ?
  • https://t.me/clickhouse_ru
    @bvt123 #307005 06:18 AM, 13 Jan 2023
    вобще вот этот синтаксис вида select c1... from table as t1 join ( ) t2 on ... в сложных случаях мне никогда не нравился. делайте select ... from () as t1 join () as t2 on ... как и написано в документации на join. Оно и ошибок меньше и скорее всего быстрее будет.
  • https://t.me/clickhouse_ru
    @Alexeysaff #307006 06:21 AM, 13 Jan 2023
    колонка start_time внутри JSON
  • https://t.me/clickhouse_ru
    @Alexeysaff #307007 06:22 AM, 13 Jan 2023
    │ CREATE TABLE lightlog.data__lt_sparrow_opportunity
    (
    created_at UInt64,
    application_name String,
    application_hostname String,
    application_instance_name String,
    application_start_time UInt64,
    data String CODEC(ZSTD(3))
    )
    ENGINE = MergeTree
    ORDER BY created_at
    TTL toDateTime(fromUnixTimestamp64Nano(created_at)) + toIntervalHour(48)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307006 #307008 06:23 AM, 13 Jan 2023
    я не вижу тут колонки start_time. никак. хоть убейте. Виджу строки и UInt64. Это все
  • https://t.me/clickhouse_ru
    @Alexeysaff #307009 06:23 AM, 13 Jan 2023
    JSONExtractUInt(JSONExtractString(data, 'app'), 'start_time') AS start_time
  • https://t.me/clickhouse_ru
    @Alexeysaff #307010 06:23 AM, 13 Jan 2023
    там лежит JSON в виде строки
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307009 #307011 06:24 AM, 13 Jan 2023
    это не колонка. Это переменная. Вы ее вычисляете. Ее нет в таблице. Давайте остановимся и вы подумаете
  • https://t.me/clickhouse_ru
    @Alexeysaff #307012 06:25 AM, 13 Jan 2023
    ок, согласен, колонки такой нет, но когда я делаю
    JSONExtractUInt(JSONExtractString(data, 'app'), 'start_time') AS start_time,
  • https://t.me/clickhouse_ru
    @Alexeysaff #307013 06:25 AM, 13 Jan 2023
    разве нельзя потом к этой "переменной" обратиться как opp.start_time
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307013 #307014 06:26 AM, 13 Jan 2023
    нельзя. делайте подзапрос. я это уже сказал
  • https://t.me/clickhouse_ru
    @Alexeysaff #307015 06:26 AM, 13 Jan 2023
    я понимаю, что CH особенный, но вроде бы это как бы основа SQL
  • https://t.me/clickhouse_ru
    @Alexeysaff #307016 06:26 AM, 13 Jan 2023
    сейчас буду разбираться, спасибо за подсказку
  • @ShulcevVA #307017 06:33 AM, 13 Jan 2023
    Прикрутил CH к AD. Роли мапятся к доменному пользователю сразу, а реальные права прилетают в течение часа. То есть добавляю пользователя в доменную группу безопасности, захожу клиентом(dbeaver, clickhouse-client), вижу что роль появилась, но права от этой роли подтягиваются в течение часа по факту. В доках ничего внятного не нашел. Кто-то с подобным сталкивался?
  • https://t.me/clickhouse_ru
    @antaranyan_v #307018 06:33 AM, 13 Jan 2023
    Добрый день!
    Вопрос про интеграцию ClickHouse с LDAP. Можно ли делать bind до ldap-сервера и поиск там под одной специальной учеткой ("admin" на стороне ldap, логин и пароль которого указан в конфигах кх, например), для любого авторизующегося в кх пользователя? Т.е. например user1 пытается войти в КХ как "user1, password1", и далее в ldap заходит admin и ищет запись о таком юзере с таким паролем.
    Сейчас пока удается настроить у себя только чтобы bind делался с данными самого юзера

    Вот здесь, кажется, аналогичный вопрос https://github.com/ClickHouse/ClickHouse/issues/26220
    LDAP: use special account to perform search in the directory · Issue #26220 · ClickHouse/ClickHouse

    Problem Currently Clickhouse offers the following scenario of LDAP login: Directly bind with the user's login and password. While bound find the user's groups. I have 2 problems wit...

  • https://t.me/clickhouse_ru
    @politsin #307019 06:40 AM, 13 Jan 2023
    У меня 3 таблицы в кликхаусе
    Их создавал просто копированием схемы из MySQL
    1) дата хранится в visit_last_action_time в формате 2023-01-13 06:10:49
    2) дата хранится server_time в формате 2023-01-13 06:09:13
    3) нет даты

    Нубский вопрос по запросу показывающему размер таблиц:
    SELECT table,
    formatReadableSize(sum(bytes)) as size,
    min(min_date) as min_date,
    max(max_date) as max_date
    FROM system.parts
    WHERE active
    GROUP BY table

    Сейчас этот запрос логично не показывает ни начальную ни конечную дату в моих 3х таблицах.
    Как мне добавить поле с датой чтобы они были в общем формате и отображались в этом запросе. Я так понимаю должна быть какая-то "дата по умолчанию" у записи чтобы на ней отрабатывали min и max
  • https://t.me/clickhouse_ru
    @politsin #307020 06:41 AM, 13 Jan 2023
    картинка к вопросу выше
  • вот тут есть ответ, что это за дата https://clickhouse.com/docs/en/operations/system-tables/parts
    parts | ClickHouse Docs

    system_tables-parts}

  • https://t.me/clickhouse_ru
    спасибо
  • А зачем надо реализовывать поиск под специальной учеткой?
  • https://t.me/clickhouse_ru
    правильно я понимаю что мне с моими данными так просто это не сделать (и скорее всего мне это не нужно) и это можно только с таблицами system?
  • https://t.me/clickhouse_ru
    Такое ограничение на стороне LDAP-сервера
  • min_date (Date) – The minimum value of the date key in the data part.
    max_date (Date) – The maximum value of the date key in the data part.

    Это относится не только к таблицам system
  • https://t.me/clickhouse_ru
    ну если сейчас у меня везде 1970 года, значит реагировать не на что. И моя дата в случайном столбце для такой задачи не подходит
  • у вас дата стоит в ключе? в партицировании?
  • https://t.me/clickhouse_ru
    нет, прост создал поля с типом DateTime
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    @francesco_tortik #307036 08:04 AM, 13 Jan 2023
    Всем привет! Подскажите пожалуйста, наблюдаем высокую назрузку СPU с завидным постоянством. Почитал в интернетах, написано, что это нормально https://kb.altinity.com/altinity-kb-setup-and-maintenance/high-cpu-usage/ и в целом сделано, чтобы запросы были быстрее. Но хочется быть уверенным, что на нашей стороне нет косяков, связанных с неоптимальными запросами.
    В связи с этим - на что в первую очередь обратить внимание при рефакторинге скриптов? Что больше всего жрет СPU?
  • https://t.me/clickhouse_ru
    @francesco_tortik #307037 08:14 AM, 13 Jan 2023
    + непонятно, есть ли где посмотреть загрузку по СPU? Есть системная таблица system.query_log , но там только потреблемая память
  • @1063161973 #307040 08:43 AM, 13 Jan 2023
    Добрый день. Где теперь размещаются установочные deb-пакеты ClickHouse ? Получаю ошибку при обновлении версии:
  • https://t.me/clickhouse_ru
    @sharp_0000ff #307042 09:02 AM, 13 Jan 2023
    Всем привет, подскажите, я создал нового пользователя, могу зайти через clickhouse-client, когда задаю ему логин, пароль
    после ALTER USER name HOST IP 'что-то' больше не могу зайти, только получается зайти с этого айпишника на базу, как сделать доступ и с локального сервера и с этого айпи?
  • https://t.me/clickhouse_ru
    @abstractbreazy #307043 09:29 AM, 13 Jan 2023
    Всем доброго здравия,
    Хотел попросить совета по следующей проблеме:
    Каким образом стоит подходить к задаче по реализации в Клике пагинации по-страничной?
    Слышал о том, что можно пагинировать по CSV,
    Или даже можно использовать отдельную таблицу.

    Хотелось бы услышать ваше мнение, какие существуют распространенные практики.
  • https://t.me/clickhouse_ru
    Ну грубо говоря никак, лучше не делать, а так ищите по чатику 10000 раз были вопросы и 1001 ответ, что это всё плохо
  • https://t.me/clickhouse_ru
    @abstractbreazy #307045 09:31 AM, 13 Jan 2023
    🤔
  • https://t.me/clickhouse_ru
    Так и делаю, пока не нашел какого-то общего мнения
  • https://t.me/clickhouse_ru
    @kizimenko #307047 09:35 AM, 13 Jan 2023
    В чем может быть проблема? По тем же кредам через python подключаюсь без проблем, подключение по HTTPS на этом порту висит, есть ощущение что флаг secure только TCP
  • https://t.me/clickhouse_ru
    @Ludmila_Lumi #307048 09:36 AM, 13 Jan 2023
    #vacancy #job #opensourceteam hi al, new year new beginings? Looking for developer to join our OpenSource team to work on Clickhouse. Support clickhouse from outside and be a true opensource ambassador (remote in USA & Europe or relocation Finland/Germany)
    https://aiven.io/careers/job?gh_jid=4061730101
    Careers - Jobs | Aiven

    See the list of our open positions and build your unique success story.

  • https://t.me/clickhouse_ru
    консольный клиент не использует http интерфейс, ему нужен порт нативного (по дефолту 9000)
  • https://t.me/clickhouse_ru
    понял, думал какой то флаг потерял для переключения на https
  • https://t.me/clickhouse_ru
    @ilya7k #307052 10:15 AM, 13 Jan 2023
    Привет. Когда я добавляю предопределенный http интерфейс у меня перестает работать обычный.
    <http_handlers>
    <rule>
    <url>/custom_metrics</url>
    <methods>POST,GET</methods>
    <handler>
    <type>predefined_query_handler</type>
    <query>SELECT 'Metric_count_events', count() FROM db.events FORMAT TabSeparated</query>
    <content_type>text/plain; charset=utf-8</content_type>
    </handler>
    </rule>
    </http_handlers>

    #: curl 'http://localhost:8123/ping'
    There is no handle /ping

    ClickHouse client version 22.3.15.33 (official build).

    Прочитал еще раз документацию. Добавление <defaults/> решило проблему
  • @alvanbel #307053 10:15 AM, 13 Jan 2023
    Привет всем
    Хотел спросить, нормальная ли практика для клика джойнить таблицы со вложенными запросам? Мне казалось, что лучше побольше полей сделать чтоб вытаскивать разом.
    Ну и второй вопрос, есть ли какой то гайд по клику или обучение может, помимо документации?
  • https://t.me/clickhouse_ru
    @puxag #307055 10:18 AM, 13 Jan 2023
    Всем привет, пытаюсь поставить CH на FreeBSD 13.1 используя эти инструкции: https://clickhouse.com/docs/en/install/#self-managed-install
    Installing ClickHouse | ClickHouse Docs

    You have three options for getting up and running with ClickHouse:

  • https://t.me/clickhouse_ru
    @puxag #307056 10:18 AM, 13 Jan 2023
  • https://t.me/clickhouse_ru
    @puxag #307057 10:18 AM, 13 Jan 2023
    sudo ./clickhouse install
  • https://t.me/clickhouse_ru
    @puxag #307058 10:19 AM, 13 Jan 2023
    Получаю следующее:
  • https://t.me/clickhouse_ru
    @puxag #307059 10:19 AM, 13 Jan 2023
    libc++abi: terminating due to uncaught exception of type DB::Exception: Undeclared cache policy name:
    Abort trap
  • https://t.me/clickhouse_ru
    @vtyuta #307060 10:20 AM, 13 Jan 2023
    Добрый день! На одном из хостов был сбой хранилища. При старте сервера получаю ошибку "Suspiciously many (893) broken parts to remove". Реплику запустил используя max_suspicious_broken_parts. Таблицы ReplicatedMergeTree. Версия Clickhouse 21.9.6.24.
    Вопрос, как корректно/достоверно проверить согласованность данных на проблемной реплике и есть возможность средствами Clickhouse до синхронизировать данные на проблемную реплику с оставшихся рабочих.
  • https://t.me/clickhouse_ru
    @cmbcksrl #307061 10:20 AM, 13 Jan 2023
    всем привет
    в таблице system.part_log постоянно вижу такого рода строки
    event_type = NewPart
    part_name = 202301_2696947_2696947_0
    partition = 202301
    path_on_disk = /opt/clickhouse-hdd/hdd/data/my_database/my_table/tmp_insert_202301_2696947_2696947_0/
    error = 389
    правильно ли я понимаю, что это логи дедупликации партов?

    таблица если что реплицированная
  • https://t.me/clickhouse_ru
    @puxag #307062 10:20 AM, 13 Jan 2023
    install неважно, просто sudo ./clickhouse с той же ошибкой
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307053 #307063 10:36 AM, 13 Jan 2023
    Как раз самая нормальная практика - это джойнить два подзапроса предварительно отфильтровав только нужное, а не целые таблицы. И не надо брать все столбцы, а только те, которые вам реально нужны. И чем меньше столбцов сможете взять - тем лучше. Чем меньше данных вы читаете - тем быстрее работает запрос. Меньше столбцов, меньше строк. Вся оптимизация запросов прежде всего про это.
    Если вы уже прочитали всю документацию (лучше на английском - там полнее), со всеми её разделами, то еще можно посоветовать kb.altinity.com - огромное количество полезных советов. Так-же можете на основном сайте алтинити почитать блог. И блог на clickhouse.com И куча видео на youtube. И презентации по выходящим версиям. Информации более чем - было бы желание читать.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307060 #307064 10:38 AM, 13 Jan 2023
    КХ это сам делает. Сравнивает парты на разных нодах (используя ZK для синхронизации) и выкачивает недостающее. Скорее всего вам ничего дополнительно делать не надо.
  • https://t.me/clickhouse_ru
    @vtyuta ↶ Reply to #307064 #307065 10:41 AM, 13 Jan 2023
    Спасибо! Проверим дополнительно в коде корректность данных на реплике. Подскажете, правильно я понимаю, что запрос SYNC REPLICA https://clickhouse.com/docs/ru/sql-reference/statements/system/#query_language-system-sync-replica, как раз принудительно запускает такую синхронизацию?
  • https://t.me/clickhouse_ru
    @amdubovoy #307067 11:10 AM, 13 Jan 2023
    Привет! Вижу много тулзин для миграций, какая из существующих на текущий момент предпочтительна? Спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307065 #307068 11:51 AM, 13 Jan 2023
    Как я понимаю смысл этой команды в ожидании, а не в запуске. Например вы хотите быть уверенны что синхронизация завершилась, и только потом делать что то иное.
  • https://t.me/clickhouse_ru
    @269917803 #307071 12:08 PM, 13 Jan 2023
    Добрый день
    Подскажите, пожалуйста. Я правильно понимаю, что для синхронной вставки данных в распределённую таблицу можно указать такие настройки?

    CREATE TABLE table_distributed AS table
    ENGINE = Distributed(...)
    SETTINGS
    fsync_after_insert=0,
    fsync_directories=0;
  • https://t.me/clickhouse_ru
    @alexipro #307072 12:30 PM, 13 Jan 2023
    Добрый день. Как я могу удалить строчку из таблицы в ClickHouse по ключу?
    пробовал способом
    ALTER TABLE my_table DELETE WHERE key=‘MY_KEY’
    не удаляется - движок таблице MergeTree
  • Спасибо.
    Ну если я правильно понимаю, то выборка подзапроса должна быть по ключам, иначе фулскан получим. А когда мы имеем вложенный селект внутри join, то КХ не умеет вроде индексировать по ключам в этом селекте. Или я неправильно что то говорю?
  • @yatimur #307075 01:22 PM, 13 Jan 2023
    добрый день.

    вопрос: есть ли годные пакеты (или какие то другие решения) query builder для КХ под node js?

    при работе с postgres в качестве query builder использую knex. Захотелось подобного на кликхаусе, knex не поддерживает кх. поискал библиотеки в интернете - нашел несколько оч слабо популярных и судя по всему заброшенных.

    далее, увидел на оф сайте кх odbc-bridge, подумал, что это может решить мою проблему, попробовал его установить и использовать, но чот пошло не так, при запуске curl с оф гайда кх мне в ответ прилетает "Server and library-bridge have different versions: '0' vs. '1'", ну и я так подумал, что эта тулза мне не поможет
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307073 #307076 01:25 PM, 13 Jan 2023
    Не то. Наличие подзапроса в общем случае не влияет на алгоритм выборки, если не брать в расчет особо изощрённые баги.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307075 #307079 01:34 PM, 13 Jan 2023
    ORM видел
    https://github.com/zimv/node-clickhouse-orm
    GitHub - zimv/node-clickhouse-orm: 🍔Clickhouse orm for Nodejs

    🍔Clickhouse orm for Nodejs. Contribute to zimv/node-clickhouse-orm development by creating an account on GitHub.

  • этот тож видел, но он мало популярный
  • https://t.me/clickhouse_ru
    @lgtwb #307081 01:35 PM, 13 Jan 2023
    ну так в чем проблема, пишите свой билдер 😁
  • https://t.me/clickhouse_ru
    @lgtwb #307082 01:35 PM, 13 Jan 2023
    под ch не то что бы и много прям решений
  • да, так и думал, просто мб существует уже что то годное
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307083 #307084 01:37 PM, 13 Jan 2023
    Я лично не нашел быстрого удобного решения, потому в ноде сам запросы собираю
  • @strntsv #307085 01:56 PM, 13 Jan 2023
    Привет! Для интеграционного тестирования работы с кликхаус хочется сравнить состояние базы после теста с ожидаемым. Будет ли работать побайтовое сравнение директории /var/lib/clickhouse/data/... ? Таблица Distributed, кликхаус поднимается в докере. Спасибо
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307085 #307086 02:12 PM, 13 Jan 2023
    В distributed таблице ничего нет. Это прокси и очередь. И сама идея сравнения так себе. Если вам надо сравнивать данные то select ... except. Если ddl, то выковыривать тексты из system.tables и запускать diff
  • https://t.me/clickhouse_ru
    @ilior #307087 02:22 PM, 13 Jan 2023
    Всем привет!
    А ни у кого не было задачи, где требовалось бы сравнить данные двух колонок, которые сохранены как Object(json)?
    Есть варианты кроме как сравнивать каждое поле JSON с аналогом из второй колонки? Нужно найти хотя бы сам факт отличия двух объектов
  • https://t.me/clickhouse_ru
    1 колонка Json = много колонок , так что вы можете спокойно сравнивать любой объект json'a
  • https://t.me/clickhouse_ru
    @ilior ↶ Reply to #307088 #307089 02:27 PM, 13 Jan 2023
    это как раз и получается вариант со сравнением каждого поля отдельно. Какого-то варианта сравнить весь объект целиком, не перечисляя все поля вручную, нет?
  • https://t.me/clickhouse_ru
    SELECT
    sipHash64(toJSONString(CAST('{"a": 1}', 'JSON'))) AS h1,
    sipHash64(toJSONString(CAST('{"a": 2}', 'JSON'))) AS h2,
    h1 = h2 AS equals
  • https://t.me/clickhouse_ru
    @m1khal3v #307091 02:28 PM, 13 Jan 2023
    ну как вариант
  • https://t.me/clickhouse_ru
    @m1khal3v #307092 02:29 PM, 13 Jan 2023
    где CAST(...) - ваша колонка
  • https://t.me/clickhouse_ru
    @ilior #307093 02:30 PM, 13 Jan 2023
    спасибо, попробую
  • https://t.me/clickhouse_ru
    @m1khal3v #307094 02:30 PM, 13 Jan 2023
    но тут могут быть проблемы если ключи JSON не отсортированы заранее
  • https://t.me/clickhouse_ru
    @m1khal3v #307095 02:31 PM, 13 Jan 2023
    те
    {"a": 1, "b": 1}
    !==
    {"b": 1, "a": 1}
  • @1063161973 #307096 02:32 PM, 13 Jan 2023
    Добрый день. Репозиторий по ссылке недоступен:
    https://packages.clickhouse.com/deb/pool/stable
  • @1063161973 #307097 02:33 PM, 13 Jan 2023
    По адресу ссылки отображается сообщение: Not Found
  • https://t.me/clickhouse_ru
    issue на github'e создайте
  • https://t.me/clickhouse_ru
    @konnectrl #307099 02:34 PM, 13 Jan 2023
    Аа
  • https://t.me/clickhouse_ru
    @konnectrl #307100 02:34 PM, 13 Jan 2023
    Нет
  • https://t.me/clickhouse_ru
    @konnectrl #307101 02:34 PM, 13 Jan 2023
    просто перенесли в другое место https://packages.clickhouse.com/deb/pool/main/c/clickhouse-server/
  • Спасибо !
  • https://t.me/clickhouse_ru
    @konnectrl #307103 02:34 PM, 13 Jan 2023
    А за русской докой следит только комьюнити
  • https://t.me/clickhouse_ru
    @konnectrl #307104 02:35 PM, 13 Jan 2023
    А вот тут полный список https://packages.clickhouse.com/deb/pool/main/c/clickhouse/
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307087 #307106 03:03 PM, 13 Jan 2023
    Object(json) под капотом имеет обычный tuple. Его можно сравнивать целиком (и даже на > если внутри типы подходящие). Поэтому просто сравниваете целиком как есть. Если и правда одинаковые - совпадет. Но должно быть очень точно - там при вставках постоянно меняется внутренняя структура.

    SELECT countIf(d != d) AS r FROM TABLE
    0
  • https://t.me/clickhouse_ru
    у меня не получилось сравнить

    Code: 49. DB::Exception: Received from . DB::Exception: ColumnObject must be converted to ColumnTuple before use: While processing CAST('{"a": 1}', 'JSON') = CAST('{"a": 2}', 'JSON'). (LOGICAL_ERROR)
  • https://t.me/clickhouse_ru
    @ilior ↶ Reply to #307106 #307108 03:07 PM, 13 Jan 2023
    почему-то если в where сравнивать одну и ту же колонку в JOIN таблицы с собой, то получаю ILLEGAL_TYPE_OF_ARGUMENT

    select * from table1 oo1 JOIN table1 oo2 USING oid where oo1.Fld = oo2.Fld
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307107 #307109 03:07 PM, 13 Jan 2023
    откуда cast?
  • https://t.me/clickhouse_ru
    ну это для примера
  • https://t.me/clickhouse_ru
    @m1khal3v #307112 03:08 PM, 13 Jan 2023
    SELECT toTypeName(CAST('{"a": 1}', 'JSON'))

    Query id: 08da9431-2389-44ee-b95c-454d6e1870cf

    ┌─toTypeName(CAST('{"a": 1}', 'JSON'))─┐
    │ Object('json') │
    └──────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @m1khal3v #307113 03:08 PM, 13 Jan 2023
    возможно в таблице это по другому раскладывается
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307111 #307114 03:09 PM, 13 Jan 2023
    так это не работает. Нужно делать полноценную mergetree и вставлять в нее. И никаких cast. Магия пока случается только при вставках. Они там думают как сделать лучше, но пока так.
  • https://t.me/clickhouse_ru
    понял, спасибо. энивэй если задача стоит сравнить две jsonины полностью, то может имеет смысл от них хэш писать где-то рядом при вставке и потом по нему сравнивать
  • https://t.me/clickhouse_ru
    @680342979 #307120 09:13 PM, 13 Jan 2023
    Как удалить из базы повторяющиеся строки?

    Есть большая база содержащая дату, хост, цифры.
    Есть дупликаты полностью повторяющие "близнецов"
    При потытке клонировать таблицу как
    INSERT INTO table_clone SELECT date, fqdn, any(number) FROM table_orig GROUP BY date,fqdn;
    сервер падает из-за нехватки памяти.

    `Progress: 52.43 million rows, 5.71 GB (3.60 million rows/s., 391.45 MB/s.) (7.6 CPU, 43.45 GB RAM)
    Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from localhost:9000. (ATTEMPT_TO_READ_AFTER_EOF)`
  • https://t.me/clickhouse_ru
    How to delete duplicate rows in SQL ( Clickhouse)?

    so I created a table using clickhouse, but it has duplicates in it. The following query gives me the duplicates in my table select *, count() AS cnt from my_table GROUP BY * HAVING cnt > 1 In

  • https://t.me/clickhouse_ru
    @680342979 #307122 09:34 PM, 13 Jan 2023
    спасибо!
  • https://t.me/clickhouse_ru
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/who-ate-my-cpu/#processes-retrospectively

    https://kb.altinity.com/altinity-kb-setup-and-maintenance/high-cpu-usage/
    Who ate my CPU

    Queries to find which subsytem of Clickhouse is using the most of CPU.

  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    sync replica этого не делает. Описание кривое в доке
    Это просто ждем пока все таски из replication_queue которые существовали до старта sync replica завершатся, и возвращаем управление. Это операция для тестов внутри CI, пользователям она малопригодна.

    Вашу проблему надо решать на уровне SQL просто сравнивая system.parts используя clusterAllReplicas типа

    select shard_num, node, database, table, engine, uniq(partition), min(min_date), max(max_date), count(*) parts, sum(rows) rows, sum(marks) marks, sum(bytes_on_disk/1024/1024) mb,
    sum(primary_key_bytes_in_memory_allocated)/1024/1204 pk_mb_alloc, sum(primary_key_bytes_in_memory)/1024/1204 pk_mb_mem
    from lf.parts all inner join (select shard_num, splitByChar('.',host_name)[2] as node from system.clusters where cluster='cluster') using node
    where table like '$[?table]' and node like '$[?node]' and active group by shard_num, node, database, table, engine order by shard_num, table, node

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

    что вы называете синхронной вставкой?
  • https://t.me/clickhouse_ru
    select * from system.mutations where not is done \G
  • 14 January 2023 (34 messages)
  • https://t.me/clickhouse_ru
    Нужно чтобы по завершении инсерта, данные гарантировано разошлись по всем шардам, пусть и медленнее. Инсерт выполняется в мат. вью
  • https://t.me/clickhouse_ru
    параметр называется insert_distributed_sync
  • https://t.me/clickhouse_ru
    Он же для всего кластера устанавливается. А мне нужно только для конкретной таблицы распределённой
  • https://t.me/clickhouse_ru
    нет, не для кластера.
    это пользовательский параметр его можно установить в профиле пользователя который делает инсерты, либо прямо в конкретном инсерте.

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

    параметр insert_distributed_sync напротив возвращает управление когда данные записаны в настоящие таблицы в шардах, причем в этом случае дистрибьютид таблица не записывает себе на диск данные, а просто транслирует в шарды.
  • https://t.me/clickhouse_ru
    Ясно, спасибо!
  • @radiojoh #307135 05:57 AM, 14 Jan 2023
    Доброе утро. Подскажите пожалуйста. Есть 2 диска. Основной и /mnt/backup у меня есть база base и в ней две таблицы work и arh. Как переместить (возможно ли?) таблицу arh для хранения в разделе /mnt/backup ?
  • @radiojoh #307136 06:16 AM, 14 Jan 2023
    у меня мысль такая: перенести неиспользуемые партиции таблицы arh в detached и соответственно переместить на /mnt/backup . Но, может есть более эстетичный способ?
  • https://t.me/clickhouse_ru
    @vtyuta ↶ Reply to #307126 #307139 08:40 AM, 14 Jan 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    @sharp_0000ff #307141 09:30 AM, 14 Jan 2023
    Всем привет
    как удалить ненужные значения в таблице clickhouse? использую MergeTree, что-то я не могу найти команду
    допустим у меня есть 200 строк, которые я хочу удалить, как это сделать? по дате например
  • https://t.me/clickhouse_ru
    @lgtwb #307142 09:31 AM, 14 Jan 2023
    ALTER TABLE ... DELETE WHERE ...
  • https://t.me/clickhouse_ru
    если версия свежая то можно DELETE FROM, по классике
  • https://t.me/clickhouse_ru
    это и то что выше - разные механизмы. в документации соответственно

    https://clickhouse.com/docs/en/sql-reference/statements/alter/delete

    https://clickhouse.com/docs/en/sql-reference/statements/delete/
    ALTER TABLE … DELETE Statement | ClickHouse Docs

    Deletes data matching the specified filtering expression. Implemented as a mutation.

  • https://t.me/clickhouse_ru
    @sharp_0000ff #307145 10:02 AM, 14 Jan 2023
    а есть способ удалить по дате? если у меня datetime, потому что как я понимаю, лайк не работает с датой
  • https://t.me/clickhouse_ru
    @m1khal3v #307146 10:04 AM, 14 Jan 2023
    where toDate(column) = '2023-01-01'
  • https://t.me/clickhouse_ru
    @m1khal3v #307147 10:07 AM, 14 Jan 2023
    ну или column >= '2023-01-01 00:00:00' and column < '2023-01-02 00:00:00'. зачем там like вообще непонятно)
  • https://t.me/clickhouse_ru
    @sharp_0000ff #307148 11:02 AM, 14 Jan 2023
    @m1khal3v спасибо большое
  • https://t.me/clickhouse_ru
    Спасибо огромное
  • @alkorgun #307152 05:04 PM, 14 Jan 2023
    Привет. Существует ли какой-нибудь способ при вставке в постгрес через функцию, движок таблицы, или движок бд, не важно, получить ON CONFLICT DO NOTHING?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @madiken_habr #307155 07:09 PM, 14 Jan 2023
    Добрый день. Столкнулась с тем, что в Clickhouse union all настраивается параметром в конфигурации.

    Может кто-то знает, почему нет по умолчанию? Это как-то противоречит колоночному хранению? Или функционал union all в Clickhouse закрывается каким-то другим более удобным функционалом?

    Например, запросы выполняются последовательно, результат пишется в таблицу последовательно. Таким образом это эмитирует union all.

    Может быть неэффективно держать результаты нескольких запросов в памяти, чтобы потом объединить их union all.

    Если есть обсуждения/видео на эту тему, поделитесь пожалуйста.
  • https://t.me/clickhouse_ru
    Так что вам мешает поставить настройку в distinct? Просто изначально distinct не был реализован
  • https://t.me/clickhouse_ru
    Хотелось понять, как было задумано и для чего, чтобы разумно использовать.
  • https://t.me/clickhouse_ru
    Изначально union distinct не существовало, по этому дефолтных union это union all
  • https://t.me/clickhouse_ru
    @madiken_habr #307159 07:22 PM, 14 Jan 2023
    Понятно, спасибо
  • Спасибо
  • А, блин, оно и в доке уже появилось в списке параметров табличного движка. Но только в англоязычной
  • https://t.me/clickhouse_ru
    @antonk0 #307163 11:15 PM, 14 Jan 2023
    Думал что из MergeTree нельзя удалять и обновлять данные. И тут наткнулся на документацию про мутации и ALTER TABLE … UPDATE. Нахожусь в фрустрации, не понимаю, я могу использовать это для обновления и удаления данных или не стоит? Про проблемы тут почитал.
  • https://t.me/clickhouse_ru
    На регулярной основе — не стоит, так как здорово тормозит и нагружает базу очень непропорционально количеству удаляемого/изменяемого. Мы ввели однажды удаление через alter table delete при нажатии пользователем далеко спрятанной кнопки удаления данных (потенциально очень редкое событие) — и то пришлось переделывать вскоре, когда заметили, что счётчик активных мутаций никогда не пустой.

    В общем я бы советовал этот метод только как экспериментальный и с обязательным мониторингом количества незаконченных мутаций.
  • https://t.me/clickhouse_ru
    @cmbcksrl #307165 11:48 PM, 14 Jan 2023
    Если обновлять или удалять данные, то используйте движок CollapsingMergeTree
  • https://t.me/clickhouse_ru
    Рассматриваю альтернативный способ "soft delete" (колонка is_deleted) , так как использую ReplacingMergeTree. И потенциально удаленных данных не должно быть много. Но не до конца понимаю как это скажется на производительностью общей массы запросов, так как все запросы придется выполнять с условием по этой колонке.
  • https://t.me/clickhouse_ru
    Пошел читать про CollapsingMergeTree, сходу не понял как оно работает
  • https://t.me/clickhouse_ru
    Вот тут про удаление

    https://clickhouse.com/docs/ru/engines/table-engines/mergetree-family/collapsingmergetree/#table_engine-collapsingmergetree-collapsing
    CollapsingMergeTree | ClickHouse Docs

    table_engine-collapsingmergetree}

  • https://t.me/clickhouse_ru
    @antonk0 #307169 11:55 PM, 14 Jan 2023
    Спасибо всем
  • https://t.me/clickhouse_ru
    @cmbcksrl #307170 11:59 PM, 14 Jan 2023
    В 2 словах:
    У вас появится столбец sign, который либо 1, либо -1

    Обычные строки вставляете с sign = 1
    Когда хотите строку удалить, добавляете строку с такими же значениями полей из ORDER BY, но только sign = -1

    Данные не удалятся сразу, какое-то время (до следующего мерджа соответствующих партов) у вас будет лежать обе строки, тогда при выборке придётся использовать спец приемы (там в доке есть) либо тупо добавить final

    Запросы с final лучше запускать с SETTINGS do_not_merge_across_partitions_select_final =1

    Final делает слияния только при выборке, то есть физически обе строки все ещё останутся, но в запросе их не будет
  • 15 January 2023 (84 messages)
  • https://t.me/clickhouse_ru
    Спасибо, дочитал и тоже понял :)

    Сейчас использую `ReplacingMergeTree` и это проще, не требуется sign = -1. Зато тут есть возможность удалять данные.
  • https://t.me/clickhouse_ru
    @cmbcksrl #307172 12:04 AM, 15 Jan 2023
    Ну в этом как раз фишка Collapsing

    Только на всякий случай, если надумаете менять движок, проверьте, что удаляющая строка идёт позже удаляемой (вдруг в несколько потоков откуда то идут обе)

    Если у вас такое есть, то лучше VersionedCollapsingMergeTree
  • https://t.me/clickhouse_ru
    😊
  • @AlessandrD #307178 09:51 AM, 15 Jan 2023
    Если хранить в кликхаусе очень длинные строки, каких проблем с производительностью стоит ожидать?
  • https://t.me/clickhouse_ru
    Пропопорционально объёму, если выборку делать по этому полю. Ну или почти нет, если в WHERE этого поля нет.
  • https://t.me/clickhouse_ru
    @ibnteo #307181 11:14 AM, 15 Jan 2023
    Можно ли выполнить произвольный запрос из CH в чужих движках баз данных?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307181 #307183 12:19 PM, 15 Jan 2023
    Можно через dictionary. Но с ограничениями на условия вытекающие из логики обращения к словарям.
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307183 #307184 12:28 PM, 15 Jan 2023
    То есть, произвольный SQL запрос никак не удастся выполнить для различных движков баз данных?
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307184 #307185 12:40 PM, 15 Jan 2023
    Вопрос странный. Только в том случае, если соответствующие функции есть в другом движке баз данных.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307184 #307186 12:41 PM, 15 Jan 2023
    Есть несколько путей, но я не очень понимаю что вы подразумеваете под произвольным запросом. Поясните подробнее с примером.
  • Делаете свою пользовательскую функцию, где скриптом делаете абсолютно любые действия, включая выполнение запросов. Можно хоть звёзды на фотографиях считать. Но по понятным причинам это будет работать совсем не быстро.
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307186 #307188 01:57 PM, 15 Jan 2023
    Например, создал базу CREATE DATABASE test ENGINE=SQLite('test.db'), и чтобы можно было выполнять через ClickHouse произвольные запросы в ней, UPDATE, DELETE, PRAGMA, и т.д., на удалённом сервере, чтобы не делать отдельное соединение к этой базе данных для таких запросов.
  • https://t.me/clickhouse_ru
    @ibnteo #307189 02:01 PM, 15 Jan 2023
    Вот есть функция https://clickhouse.com/docs/ru/sql-reference/table-functions/sqlite, но она же только для выборки данных подходит?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307188 #307191 02:04 PM, 15 Jan 2023
    insert тоже должен работать. синтаксис такой - insert into function sqllite()
    почитайте про движок базы данных - https://clickhouse.com/docs/en/engines/database-engines/sqlite там больше написано.
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307191 #307192 02:06 PM, 15 Jan 2023
    Только SELECT и INSERT, а требуется ещё и возможность выполнения в той базе данных и других SQL-запросов, используя соединение с ней через ClickHouse.
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307187 #307193 02:06 PM, 15 Jan 2023
    Да, похоже это единственный способ, спасибо за информацию.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307192 #307194 02:10 PM, 15 Jan 2023
    А что такого ценного есть в sqllite, чтобы так заморачиваться? Я понимаю когда у вас есть данные в виде файла и их надо прочитать. Но если вам нужно key-value storage в рамках КХ, то я бы предложил посмотреть на EmbeddedRocksDb
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307194 #307196 02:14 PM, 15 Jan 2023
    То, чего нет в CH. Спасибо за наводку, посмотрю RocksDB.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307196 #307197 02:19 PM, 15 Jan 2023
    А если не секрет - что такого умеер скулайт?
  • @AlessandrD #307198 02:21 PM, 15 Jan 2023
    Умеет ли кликхаус автоматически создавать таблицу, на основании данных из другой?В первой таблице есть колонка с текстом, во второй нужны колонки, получаемые путём парсинга текстовой колонки из первой таблицы
  • https://t.me/clickhouse_ru
    @lgtwb #307199 02:22 PM, 15 Jan 2023
    Можно попробовать через внешние функции это сделать
  • https://t.me/clickhouse_ru
  • Спасибо
  • https://t.me/clickhouse_ru
    @lgtwb #307203 02:23 PM, 15 Jan 2023
    Но все равно должна быть какая-то инициация
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307197 #307205 02:30 PM, 15 Jan 2023
    Быстрые UPDATE и DELETE одиночных записей. Быстро достать одну запись по PRIMARY KEY.
  • https://t.me/clickhouse_ru
    @lgtwb #307206 02:31 PM, 15 Jan 2023
    Ну вы можете включить синхронные мутации и это будет быстро работать и на клике
  • https://t.me/clickhouse_ru
    @lgtwb #307207 02:32 PM, 15 Jan 2023
    точнее, синхронно
  • https://t.me/clickhouse_ru
    @lgtwb #307208 02:32 PM, 15 Jan 2023
    быстро оно будет работать в зависимости от вашей базы, но если база мелочь - то все ок
  • https://t.me/clickhouse_ru
    @lgtwb #307209 02:32 PM, 15 Jan 2023
    ну как мелочь, на 20к строках норм работает
  • https://t.me/clickhouse_ru
    @ibnteo #307210 02:34 PM, 15 Jan 2023
    По документации не понятно, как обновлять и удалять записи в RocksDB: https://clickhouse.com/docs/ru/engines/table-engines/integrations/embedded-rocksdb
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307206 #307211 02:36 PM, 15 Jan 2023
    Да, рассмотрю этот вариант, в принципе одиночные эти записи надо доставать с большим количеством статистической информации, поэтому скорость по ним уже не особо важна, упирается всё в скорость CH по статистике.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307198 #307212 02:49 PM, 15 Jan 2023
    умеет конечно. а в чем тут вобще может быть проблема? Это стандартный функционал. Я все что угодно пишу на КХ sql
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307212 #307213 02:50 PM, 15 Jan 2023
    Разве можно создать таблицу, в качестве аргумента передавая результаты селекта?
  • Есть какая-нибудь таблица или эмпирические данные, соотношение эффективности сжатия/падения производительности при разных уровнях сжатия ZSTD?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307213 #307215 02:52 PM, 15 Jan 2023
    CREATE TABLE | ClickHouse Docs

    Creates a new table. This query can have various syntax forms depending on a use case.

  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307215 #307216 02:52 PM, 15 Jan 2023
    Когда структура хранится записями
  • https://t.me/clickhouse_ru
    @lgtwb #307217 02:53 PM, 15 Jan 2023
    Он берет колонки из селекта и результаты из селекта, т.е. он создаст колонки = колонкам в селекте
  • https://t.me/clickhouse_ru
    @lgtwb #307218 02:53 PM, 15 Jan 2023
    нет?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307217 #307219 02:53 PM, 15 Jan 2023
    ровно так. А как надо иначе?
  • https://t.me/clickhouse_ru
    @lgtwb #307220 02:53 PM, 15 Jan 2023
    Я предполагал, что в исходной задаче структура описана например 1 колонкой, где хранятся названия столбцов, и их надо пассить в криэйт
  • https://t.me/clickhouse_ru
    @lgtwb #307221 02:54 PM, 15 Jan 2023
    >нужны колонки, получаемые путём парсинга текстовой колонки из первой таблицы
  • https://t.me/clickhouse_ru
    @lgtwb #307222 02:54 PM, 15 Jan 2023
    Ну я так понял что надо колонки делать из результатов селекта, а не структуры селекта
  • https://t.me/clickhouse_ru
    @lgtwb #307223 02:55 PM, 15 Jan 2023
    @AlessandrD подключитесь пожалуйста обратно к нам, вам как надо? 😁
  • В строках, чаще всего - JSON.
    Если он там парсится успешно, нужно писать в другую таблицу
  • https://t.me/clickhouse_ru
    @lgtwb #307225 02:56 PM, 15 Jan 2023
    Ну у вас получается надо брать JSON из строки и из него строить новую таблицу, верно?
  • Да, из generic таблицы строить конкретику
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307221 #307227 02:57 PM, 15 Jan 2023
    что-то странное. вы бы написали это как-то подробно и с примерами. Можно сделать как угодно, вот тут особенности КХ точно не при чем. Берете любой язык программирования и пишите. Да хоть бы и bash.
    JSON парсится автоматически и раскладывается по колонкам.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307227 #307228 02:58 PM, 15 Jan 2023
    Так это не я написал, это исходный вопрос.
    В изначальном вопрос шел вопрос про исполнение этого в кликхаусе
  • Хотел обойтись только средствами КХ, без стороннего микросервиса
  • https://t.me/clickhouse_ru
    @lgtwb #307230 02:58 PM, 15 Jan 2023
    И я предложил в качестве решения user defined functions, потому что любые другие способы экстракции - это лютая дрочь и головная боль
  • https://t.me/clickhouse_ru
    @lgtwb #307231 02:58 PM, 15 Jan 2023
    (лично для меня)
  • https://t.me/clickhouse_ru
    @monashev #307233 03:44 PM, 15 Jan 2023
    Привет.
    Обновил clickhouse до 22.13.1.2186 (official build) и обнаружил, что куда-то делось 2 гига места на диске. Покопал и обнаружил, что исполняемый файл /usr/bin/clickhouse теперь весит 2.4 гига! Хотя прежняя версия весила 400 мегов. Откуда такие размеры бинарника?
  • Не подскажите, как устанавливали? Deb или просто голый бинарник скачали?
    2.4 гига весит, потому что в нем присутсвуют дебажные символы. Обычно они поставляются отдельно в пакете common-static-dbg. Видимо, CI поломался
  • https://t.me/clickhouse_ru
    curl https://clickhouse.com/ | sh
    sudo ./clickhouse install
    Fast Open-Source OLAP DBMS - ClickHouse

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

  • @nikitamikhaylov #307236 03:53 PM, 15 Jan 2023
    Понятно. Если сильно размер волнует, то можете натравить strip на бинарник.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307230 #307237 04:16 PM, 15 Jan 2023
    По мне так executable UDF - это довольно тяжелое решение. Object('JSON') работает достаточно прилично для задачи, описанной выше by @AlessandrD, похожей по описанию на хранение логов. Ничего дополнительно делать не надо.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307210 #307238 04:17 PM, 15 Jan 2023
    удалять обычным delete, в последних версиях он работает. Обновлять повторным insert с тем-же самым key.
  • https://t.me/clickhouse_ru
    @Alexfilus #307239 04:41 PM, 15 Jan 2023
    Всем привет, есть ли возможность при использовании MaterializedPostgreSQL преобразовывать на лету колонки как в обычных Materialized view?
  • https://t.me/clickhouse_ru
    Надеюсь, что всё починят и можно будет установить релиз без отладочных символов.
  • https://t.me/clickhouse_ru
    это НЕ РЕЛИЗ, вы устанавиливаете night build
  • https://t.me/clickhouse_ru
    Меня настораживает, что про 22.13 нигде не написано. Ни на гитхабе, ни в пакетах...
  • https://t.me/clickhouse_ru
    это night build
  • https://t.me/clickhouse_ru
    бл...
  • https://t.me/clickhouse_ru
    @monashev #307245 05:01 PM, 15 Jan 2023
    а тут https://clickhouse.com/docs/en/install/#self-managed-install ни слова про это...
    Installing ClickHouse | ClickHouse Docs

    You have three options for getting up and running with ClickHouse:

  • https://t.me/clickhouse_ru
    стоит. Зависит что вы понимаете под длинными строками. Если строки по 10мегабайт, то надо много памяти на мержи.
  • вот да. вообще не очевидно...
  • https://t.me/clickhouse_ru
    нету.

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

    очень часто может оказаться что ZSTD(1) и ZSTD(3) вообще не отличаются по размеру, естественно что тогда надо использовать zstd1

    есть еще одна фича, что КХ может при мержах менять компрессор в зависимости от размера парта, это позволяет экономить cpu при инсертах и первых мержах.
    т.е. инсерт создает lz4, дальше парты мержаться, мержаться, используется мало CPU , а когда размер доходит например до 20ГБ и начинаем жать ZSTD(3)

    https://kb.altinity.com/altinity-kb-schema-design/codecs/
  • https://t.me/clickhouse_ru
    @iusik #307249 05:23 PM, 15 Jan 2023
    Подскажите.
    Надо к слоаврю подключить источник S3. Если такая реализация source в словаре ?
  • https://t.me/clickhouse_ru
    нету https://github.com/ClickHouse/ClickHouse/issues/39851

    НО можно сделать view as select ... from s3( ) и прописать это вью как источник local словаря
  • https://t.me/clickhouse_ru
    подожду, когда выйдет 22.13 и поставлю его ручками...
  • https://t.me/clickhouse_ru
    🙂 22.13 не выйдет. Вместо него выйдет 23.1
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #307250 #307253 05:26 PM, 15 Jan 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    а там что-то существенное изменится, раз старший номер версии изменится?
  • https://t.me/clickhouse_ru
    год на календаре
  • https://t.me/clickhouse_ru
    @den_crane #307256 05:28 PM, 15 Jan 2023
    23.1 = январь 2023
  • https://t.me/clickhouse_ru
    @monashev #307257 05:28 PM, 15 Jan 2023
    тогда ночные билды не так уж и страшны, если релизы по месяцам расписаны...
  • https://t.me/clickhouse_ru
    @den_crane #307258 05:31 PM, 15 Jan 2023
    я тестирую 6 месяцев августовские LTS и все равно после выкатки в прод находится какая-то херня.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307258 #307260 05:38 PM, 15 Jan 2023
    Я правильно понимаю, что 22.8 Altinity stable ожидается нескоро?
  • https://t.me/clickhouse_ru
    не знаю, я лично наверное пропущу 22.8 и буду ставить через год 23.8

    слишком много херни типа
    https://github.com/ClickHouse/ClickHouse/issues/44500
    https://github.com/ClickHouse/ClickHouse/issues/43816
    https://github.com/ClickHouse/ClickHouse/issues/43865
  • https://t.me/clickhouse_ru
    Вообще собирались в ближайший месяц-два апрувить, но с особенностями, да
  • А есть где нить исправленное? А то у нас есть баги что только в 22.8 и выше фикшены
  • @AlessandrD #307264 08:44 PM, 15 Jan 2023
    Подскажите как оформить структуру данных.Раз в секунду приходит сообщение с небольшой текстовой строкой, записывается timestamp, отправляется в КХ.Но хранить требуется только те записи, когда строка, в сравнении с прошлым сообщением, изменилась.Как эффективно использовать кликхаус в таком сценарии?
  • https://t.me/clickhouse_ru
    нету, не исправлено
  • https://t.me/clickhouse_ru
    window view (проще до КХ)
  • 16 January 2023 (154 messages)
  • @milovidov_an #307268 01:34 AM, 16 Jan 2023
    ClickHouse митап в Тель Авиве: https://www.meetup.com/clickhouse-tel-aviv-user-group/events/289599423/
    ClickHouse Meetup at the CHEQ office in Tel Aviv, Mon, Jan 16, 2023, 6:00 PM | Meetup

    We are very excited to be holding our next in-person ClickHouse meetup at the CHEQ office in Tel Aviv! Hear from CHEQ, ServiceNow and Contentsquare, as well as a deep dive

  • https://t.me/clickhouse_ru
    @monashev #307272 07:14 AM, 16 Jan 2023
    Привет.

    Иногда db.Query() из github.com/ClickHouse/clickhouse-go/v2 возвращает ошибку
    read: read tcp 127.0.0.1:34032->127.0.0.1:9000: i/o timeout .

    Параметры подключения к Кликхаусу дефолтные:
    db, err := sql.Open("clickhouse","clickhouse://default:xxxx@127.0.0.1:9000/xxxxx")
    а там read_timeout 5 минут. Ну и вообще запросы обычно отрабатывают за доли секунды... В чём может быть проблема?
  • https://t.me/clickhouse_ru
    @monashev #307273 07:18 AM, 16 Jan 2023
    В логе ошибок в это время такое:
    2023.01.16 05:55:20.313982 [ 450467 ] {} <Error> ServerErrorHandler: Code: 210. DB::NetException: Connection reset by peer, while reading from socket (127.0.0.1:34010). (NETWORK_ERROR), Stack trace (when copying this message, always include the lines below)
  • https://t.me/clickhouse_ru
    @I_Andrey_A #307274 07:20 AM, 16 Jan 2023
    Добрый день!
    Подскажите, пожалуйста, а есть какая-нибудь документация для реализации такого?
    select JSONExtract.... from http( . )

    Не нашёл, как реализовать from http()
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо большое!
  • @a1key #307277 07:55 AM, 16 Jan 2023
    На странице https://clickhouse.com/docs/en/sql-reference/statements/alter/view/ сказано что MODIFY QUERY работает только для MV созданных без TO. Как тогда менять запросы для MV созданных с TO? Только удалять и заново создавать MV?
    ALTER TABLE … MODIFY QUERY Statement | ClickHouse Docs

    You can modify SELECT query that was specified when a materialized view was created with the ALTER TABLE … MODIFY QUERY statement. Use it when the materialized view was created without the TO [db.]name clause. The allowexperimentalaltermaterializedview_structure setting must be enabled.

  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307277 #307278 08:04 AM, 16 Jan 2023
    Denny [Altinity] in ClickHouse не тормозит

    неправильно в доке написано. ЕЕ как раз можно использовать только для TO https://github.com/ClickHouse/ClickHouse/issues/15206 датагрип просто использует antlr файл из исходников КХ, который описывает синтаксис КХ (сам кх его не использует), и этот файл покрывает не весь синтаксис и устарел

  • https://t.me/clickhouse_ru
    @Gena12M #307279 08:06 AM, 16 Jan 2023
    привет
    На сколько безопасно давать zabbix пользователю такой грант?
    GRANT SELECT ON *.* TO zabbix
    Есть ли другие варианты?
    https://www.zabbix.com/integrations/clickhouse
  • https://t.me/clickhouse_ru
    Думаю нужно попробывать 2 варианта
    1. Дать просто фулл доступ на system
    2. Дать доступ на всё
    Нужно сравнить, отображается ли вся информация об таблицах или нет
  • https://t.me/clickhouse_ru
    GRANT SELECT ON system.* TO zabbix ?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    пересоздал - не показывает метрики клиентских бд
    походу *.* только
  • https://t.me/clickhouse_ru
    @s_nikolajus #307286 08:27 AM, 16 Jan 2023
    Привет, при создании UDF - как потом посмотреть её DDL?
  • https://t.me/clickhouse_ru
    select *
    from system.functions
    where origin = 'SQLUserDefined'
  • @all_bay #307290 09:40 AM, 16 Jan 2023
    Привет,

    Пытаюсь создать бэкап БД CH v22.8.12.45.

    Настройка конфига

    1 <clickhouse>
    2 <storage_configuration>
    3 <disks>
    4 <backups>
    5 <type>local</type>
    6 <path>/var/lib/clickhouse/backup/</path>
    7 </backups>
    8 </disks>
    9 </storage_configuration>
    10 <backups>
    11 <allowed_disk>backups</allowed_disk>
    12 <allowed_path>/var/lib/clickhouse/backup/</allowed_path>
    13 </backups>
    14 </clickhouse>

    Делаю бэкап, файл db.zip появляется в указанном месте
    BACKUP DATABASE db TO Disk('backups', 'db.zip')

    Восстанавливаю
    RESTORE DATABASE db AS db_restored FROM Disk('backups', 'db.zip')

    и получаю
    Code: 76. DB::Exception: Received from 127.0.0.1:50501. DB::ErrnoException. DB::ErrnoException: Cannot open file tmp31426aaaaaa, errno: 13, strerror: Permission denied. (CANNOT_OPEN_FILE)

    Насколько понимаю, нехватает прав на чтение временного файла. Ch стартует из под пользователя clickhouse, у которого есть, соответсвенно, все права на каталог /var/lib/clickhouse. Непонятно в чем причина ошибки и куда смотреть?
  • https://t.me/clickhouse_ru
    @ivanbrrr #307291 09:41 AM, 16 Jan 2023
    Здравствуйте.
    Помогите разобраться почему у меня кх вылетает?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @hostadminonline #307293 10:27 AM, 16 Jan 2023
    всем привет, подскажите плз что может быть не так в настройках
    создаем тестовую таблицу в кластере и оно создается вот так
    CREATE TABLE testcluster.test
    (
    id UInt32
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
    ORDER BY id
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @hostadminonline #307294 10:27 AM, 16 Jan 2023
    UUID почему-то не подставляется
  • а такой макрос точно есть?

    SELECT * FROM system.macros
  • https://t.me/clickhouse_ru
    @hostadminonline #307297 10:41 AM, 16 Jan 2023
    там нету, но у нас на продакшн сервере тоже нету его ... но оно подставляется и все работает )
  • https://t.me/clickhouse_ru
    @hostadminonline #307298 10:46 AM, 16 Jan 2023
    причем в system.tables у этой таблицы uuid на месте ...
  • https://t.me/clickhouse_ru
    @jenjate #307301 10:58 AM, 16 Jan 2023
    Подскажите, пожалуйста, как задать порядок вывода строк в результате union all (иначе он просто случайный) - не хочет сортировать даже при явном указании поля для сортировки https://fiddle.clickhouse.com/56157760-5ad2-4a2a-af17-1ef57a775eea - получилось только если выделить весь запрос в подзапрос и его целиком отсортировать, но этот вариант сильно замедляет запрос
  • https://t.me/clickhouse_ru
    @hostadminonline #307302 11:15 AM, 16 Jan 2023
    походу это глюк версии чтоли .... в system.zookeerer в path /clickhouse/tables проставляется UUID таблицы, но в SQL таблицы вместо него просто {uuid} в результате таблицы не реплицируются
  • https://t.me/clickhouse_ru
    @AlexMukhin #307303 11:18 AM, 16 Jan 2023
    Всем прривет! Подскажите пожалуйста каким методом можно достать словарь из массива, при условии, что в одном событии таких массивов может быть несколько?
  • https://t.me/clickhouse_ru
    @269917803 #307305 12:10 PM, 16 Jan 2023
    Добрый день!
    Подскажите, пожалуйста, можно как-то для распределённой реплицированной таблицы проверить на каких машинах она ATTACHED, а на какие нет?
    На некоторых могли отсоединять, а ходить по всем как-то муторно
  • https://t.me/clickhouse_ru
    @a1imkul0v707 #307306 12:15 PM, 16 Jan 2023
    Всем Привет,как заполнить столбец из другой таблицы в кликхаус?
  • https://t.me/clickhouse_ru
    @lgtwb #307307 12:16 PM, 16 Jan 2023
    INSERT INTO table1 ( column1 )
    SELECT col1
    FROM table2
  • https://t.me/clickhouse_ru
    @ilior #307308 12:17 PM, 16 Jan 2023
    Доброго дня. Столкнулся со странным поведением поля типа JSON. Есть две таблицы одинаковой структуры, в них по такому полю.
    Запрос
    SELECT OrderId, t1.JsonField, t2.JsonField FROM table1 t1 JOIN (SELECT * FROM table2) t2 USING OrderId WHERE JsonField != t2.JsonField
    Срабатывает верно и сравниваются поля из разных таблиц, в ответе тоже поля из разных таблиц

    А если сделать вот так:
    SELECT OrderId, t1.JsonField.Guid, t2.JsonField.Guid FROM table1 t1 JOIN (SELECT * FROM table2) t2 USING OrderId WHERE JsonField.Guid != t2.JsonField.Guid
    То получим ошибку Missing columns: ‘JsonField.Guid’ на where

    Если вернуть первое условие и сделать такой запрос
    SELECT OrderId, t1.JsonField.Guid, t2.JsonField.Guid FROM table1 t1 JOIN (SELECT * FROM table2) t2 USING OrderId WHERE JsonField != t2.JsonField
    То ошибок не будет, условие сработает, но в результатах вместо t2.JsonField.Guid будет значение из такого же поля t1

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

    Есть ли возможность после JOIN добраться до вложенных полей из колонки второй таблицы?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307305 #307309 12:23 PM, 16 Jan 2023
    "Detached tables are not shown in system.tables."
    Поэтому берете clusterAllReplicas, и считаете counts по всем своим таблицам. Если большинство таблиц приатачено правильно, то нехватка будет видна сразу.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307306 #307310 12:26 PM, 16 Jan 2023
    Добавить новый столбец с данными из другой таблицы? Сначала создать словарь с нужными данными, а потом alter table add column, update column set value=dictGet() where ...
  • https://t.me/clickhouse_ru
    Спасибо, то что надо!
  • https://t.me/clickhouse_ru
    @MakeReady #307312 12:36 PM, 16 Jan 2023
    Добрый день! Есть ли в КХ что-то для сравнения версий в виде строк?
    Чтото типа класса Version с С
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307308 #307313 12:36 PM, 16 Jan 2023
    Не надо использовать select * в подзапросе.
    * - это список колонок, так как это указано в определении таблицы. Никакие внутренние туплы тут не раскрываются. Если вы делаете подзапросы - явно указывайте все элементы туплов, которые вы хотите выдать наверх. Нет щастья и красоты. Но пока так.
  • https://t.me/clickhouse_ru
    @ibnteo #307314 12:40 PM, 16 Jan 2023
    Найти не могу в документации, как искать по массиву arr in (select id ...)?
  • https://t.me/clickhouse_ru
    типа найти массив в подзапросе или найти элемент в массиве?

    если искать элемент в массиве, то has(array, element)
  • https://t.me/clickhouse_ru
    uuid подставляет командой on cluster
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307315 #307317 12:45 PM, 16 Jan 2023
    Подзапрос возвращает единичные элементы, присутствующие в массиве, определяются как arr Array(UUID) ... id UUID.
  • https://t.me/clickhouse_ru
    это все так и задумано в стандартном sql
  • нету ничего, сами через splitByChar('.', version) с массивом работайте
  • https://t.me/clickhouse_ru
    ага, но почему если выносить запрос с union-ами в подзапрос и его сортировать по некому индексу, то на реальных данных в три раза дольше все?
  • https://t.me/clickhouse_ru
    а сколько строк в результате?
  • https://t.me/clickhouse_ru
    ок
  • https://t.me/clickhouse_ru
    3 🙂
  • https://t.me/clickhouse_ru
    если 3 тогда не знаю
  • https://t.me/clickhouse_ru
    select * from (
    select 1, store1.1
    union all
    select 2, store1.2
    union all
    select 3, store1.3
    )
    order by 1 - 16 секунд, если убрать select *, то 7… store1 - это tuple, который генерируется из кучи подзапросов, они при одном прогоне и дают 7 секунд, но почему обращение к этому tuple дает настолько разные результаты при добавлении сортировки 3 строк, я не понимаю
  • https://t.me/clickhouse_ru
    ну вот так, например, работает

    SELECT has([1,2,3], (SELECT number FROM numbers(2,1)))
  • @buhalex #307329 12:55 PM, 16 Jan 2023
    Коллеги, может кто-то сталкивался. Наблюдаем дублирование строк в КХ 22.8. Клик берет данные из кафки и через несколько секунд повторяет запрос и дублирует запись, и так на протяжении 10- 12 часов
  • https://t.me/clickhouse_ru
    @ilior ↶ Reply to #307313 #307330 12:59 PM, 16 Jan 2023
    Спасибо.
    Правда, даже если задать в подзапросе конкретное поле типа JsonField.Guid, то нужно давать ему алиас, потому что обращение типа t2.JsonField.Guid в верхнем запросе выдаст данные из первой таблицы или ошибку.
  • каскадные вьюшки есть? обычно такое происходит когда несколько вью на одном топике
  • https://t.me/clickhouse_ru
    @francesco_tortik #307333 01:06 PM, 16 Jan 2023
    Коллеги, привет! Хелп , сос, вот уже пару недель лихорадит дико только одну ноду нашего кластераБ каждый час идет алерт о превышении нагрузки больше 90 %, как вычислить процесс, который такой перекос создает?
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307328 #307334 01:07 PM, 16 Jan 2023
    Если подзапрос возвращает более одной записи, то ошибка Code: 125. DB::Exception: Scalar subquery returned more than one row
    SELECT has([1,2,3], (SELECT number FROM numbers(1,2)))
  • https://t.me/clickhouse_ru
    @cmbcksrl #307335 01:09 PM, 16 Jan 2023
    я подумал, что под единичными элементами подразумевается один элемент)

    SELECT hasAny([1,2,3], (SELECT groupArray(number) FROM numbers(2)))
  • да есть каскадные view -> kafka -> mv -> events -> mv1 -> table1
    -> mv2 -> table2 -> mv4 -> table4
    -> mv3 -> table3
  • https://t.me/clickhouse_ru
    @cmbcksrl #307337 01:11 PM, 16 Jan 2023
    вот так можно делать

    смотрите, имеют ли 2 массива хотя бы 1 общий элемент, если вам надо, чтобы полностью входил массив в другой массив, то это hasAll
    Массивы | ClickHouse Docs

    functions-for-working-with-arrays}

  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307335 #307338 01:13 PM, 16 Jan 2023
    Работает, спасибо за помощь.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307329 #307339 01:14 PM, 16 Jan 2023
    Какая-то ошибка в вашем коде. Что видно в логах или system.errors?
    Kafka engine выгребает блок и пропускает его через несколько MV. Где-то там случается ошибка. Все завершается, offset не продвигается ибо КХ поддерживает at-least-once, а не exactly-once.
    Не стоит злоупотреблять цепочками MV и сложными join в MV, подключенных к Kafka Engine
  • https://t.me/clickhouse_ru
    а если сделать

    select * from (
    select 1, store1.1
    limit 10000000
    union all
    select 2, store1.2
    limit 10000000
    union all
    select 3, store1.3
    limit 10000000
    )
    order by 1
  • @marfanyan #307341 01:19 PM, 16 Jan 2023
    Добрый день, как вывести название месяца на русском? Пробовал дописать 'Europe/Moscow'- не помогло
    WITH toDateTime(now()) AS date_value
    SELECT monthName(date_value);

    monthName(date_value)|
    ---------------------+
    January |
  • https://t.me/clickhouse_ru
    >через несколько секунд повторяет запрос

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

    просто напишите [Янв, фев, март][month(date_value)]
  • @dmitry_mosin #307344 01:21 PM, 16 Jan 2023
    Добрый день
    Подскажите пожалуйста такую вешь:

    Есть таблица, ReplacingMergeTree, например 100М строк
    всплыл косяк, и нужно сделать ALTER UPDATE для одной колонки у 90% строк.

    Какой вариант будет более адекватным:
    1. Делаем ALTER UPDATE для каждой строки
    2. Делаем DICTIONARY c нужными данными и делаем ALTER UPDATE ... UPDATE docDt = dictGetOrDefault(...) WHERE dictHas(...)
  • https://t.me/clickhouse_ru
    2
  • https://t.me/clickhouse_ru
    не помогло( та же разница 7 vs 16 секунд
  • https://t.me/clickhouse_ru
    насколько store1.1 большой? это массив?
  • Спасибо
  • https://t.me/clickhouse_ru
    @ibnteo #307349 01:24 PM, 16 Jan 2023
    Насколько понял, groupArray() на большом количестве данных будет гораздо хуже обычного запроса id1 IN (SELECT id2 )? Может лучше тогда разместить массив в другой таблице в виде обычных записей? Сам массив небольшой, а вот подзапрос может много записей вернуть. Практическое использование массивов в запросах практикуется в CH?
  • https://t.me/clickhouse_ru
    tuple из 18 чисел select tuple(val1…val18) from result, а result в свою очередь выдает эти 18 чисел в одну строку
  • Словарь в 90М строк с LAYOUT(HASHED) - это не перебор? Или стоит ограничить аппетит и побить на куски поменьше?
  • https://t.me/clickhouse_ru
    в смысле сам store1 это tuple, store1.1 это просто число типа 2354385
  • объемное ,скидываю скрин
  • https://t.me/clickhouse_ru
    да нормальный словарь 90млн.

    в общем-то можно делать или cached или direct словарь https://kb.altinity.com/altinity-kb-schema-design/backfill_column/
    у нас клиент 500млрд. проапдейтил у себя через cached словарь, неделю alter шел.
  • Супер, спасибо, поизучаю
  • @SvetikGladkikh #307357 01:29 PM, 16 Jan 2023
    Коллеги, добрый день! Есть необходимость отслеживать статус выполнения запроса по системным таблицам proccess и query_log. Но я не знаю, на какой из нод выполняется запрос. С distributed таблицами не вышло. Каждый раз при обращении к distributed таблице получаю разный результат. Вариант с clusterAllReplicas оказался рабочий. Я пошла по верному пути? Или всё-таки использовать clusterAllReplicas неэффективно, и есть лучшие варианты решения?
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307349 #307358 01:29 PM, 16 Jan 2023
    Или результат IN (SELECT id ) всё равно весь размещается в памяти, и тогда разницы не будет?
  • https://t.me/clickhouse_ru
    @den_crane #307359 01:32 PM, 16 Jan 2023
    with в целом это просто сахар, я не использую, лень вспоминать как он пишется.

    select ['янв', 'фев', 'м', 'а'][month(today())]
    --
    янв
  • https://t.me/clickhouse_ru
    я не про это.

    вы пишете "через несколько секунд повторяет запрос"
    что вы имеете в виду?
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307358 #307361 01:35 PM, 16 Jan 2023
    Похоже что так и есть: https://clickhouse.com/docs/ru/sql-reference/operators/in
    "Не перечисляйте слишком большое количество значений (миллионы) явно."
  • запись дублируется через несколько секунд
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307361 #307363 01:36 PM, 16 Jan 2023
    Хотя нет: "Если множество большое - лучше загрузить его во временную таблицу (например, смотрите раздел Внешние данные для обработки запроса), и затем воспользоваться подзапросом."
  • https://t.me/clickhouse_ru
    с distributed не вышло потому что вы используете неправильный кластер в distributed, он у вас смотрит только на одну из реплик

    clusterAllReplicas это нормально, другого пути нет. Ну и внутри clusterAllReplicas этот же самый distributed. Но будет проблема когда одна из реплик недоступна, запрос к clusterAllReplicas будет выдавать ошибку.
  • https://t.me/clickhouse_ru
    теперь понятно.
    Надо в лог КХ смотреть.
  • принял, спасибо
  • https://t.me/clickhouse_ru
    @antaranyan_v #307367 01:38 PM, 16 Jan 2023
    добрый день, а можно ли запретить вход в КХ для юзера, который нашелся в ldap-сервере, но которому не смаппилась ни одна роль? Т.е. чтобы нельзя было зайти вне роли
  • Проблему с недоступными нодами решила через settings skip_unavailable_shards=1. С неправильным кластером я не поняла, он у меня один, да и в clusterAllReplicas я его же указываю, и всё работает.
  • например вы что-то поменяли в таблице table3, mv3 не может вставить и случается ошибка, офсет в кафке не комитается и через пару секунд будет происходить чтение тех же данных. При этом каждый раз вставка в table1 будет отрабатывать. Надо быть супер осторожным если используете такие цепочки. Любой чих и у вас будут дубли в table1
  • спасибо за подробный ответ
  • https://t.me/clickhouse_ru
    @fenogentov #307371 01:47 PM, 16 Jan 2023
    Можно ли запросить данные, чтоб выбрать только измененные данные.
    т.е. из
    1
    5
    5
    4
    4
    6
    выбрать
    1
    5
    4
    6
  • @7699150 #307372 01:50 PM, 16 Jan 2023
    Всем привет!
    Подскажите пожалуйста, можно ли как-то обновить MATERIALIZED колонку?
  • https://t.me/clickhouse_ru
    ALTER COLUMN MATERIALIZE
  • а там можно сделать WHERE ?
  • https://t.me/clickhouse_ru
    @m1khal3v #307375 01:52 PM, 16 Jan 2023
    в документации думаю указано
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307373 #307376 01:57 PM, 16 Jan 2023
    А не лучше для этого использовать DISTINCT?
  • https://t.me/clickhouse_ru
    @m1khal3v #307377 01:58 PM, 16 Jan 2023
    для материализации колонки? я бы на это посмотрел
  • @Mamyan99 #307378 01:58 PM, 16 Jan 2023
    Привет, можете сказать как фиксить ? это происходит во время инсерта .

    Host [MyHost] returned error: Code: 202. DB::Exception: Too many simultaneous queries. Maximum: 4. (TOO_MANY_SIMULTANEOUS_QUERIES)
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307378 #307379 02:02 PM, 16 Jan 2023
    У вас вставка идет по одному инсерту? Если да - передайте на пакеты
  • https://t.me/clickhouse_ru
    @lgtwb #307380 02:02 PM, 16 Jan 2023
    или увеличьте количество одновременнных запросов в конфиге
  • https://t.me/clickhouse_ru
    @lgtwb #307381 02:03 PM, 16 Jan 2023
    <max_concurrent_queries>100</max_concurrent_queries>
  • https://t.me/clickhouse_ru
    @lgtwb #307382 02:03 PM, 16 Jan 2023
    на проде так делать не надо без понимания того, что вы делаете
  • @Mamyan99 #307383 02:04 PM, 16 Jan 2023
    У меня такой формат примерно

    [
    [
    'id' => 'id1',
    'name' => 'name1'
    ],
    [
    'id' => 'id2',
    'name' => 'name2'
    ],
    ]
  • https://t.me/clickhouse_ru
    @lgtwb #307384 02:05 PM, 16 Jan 2023
    А как вы данные пишете? Через что
  • @Mamyan99 #307385 02:08 PM, 16 Jan 2023
    У меня интегрирован package для работы с Clickhouse-ом
  • @Mamyan99 #307386 02:08 PM, 16 Jan 2023
    Bavix/Clickhouse
  • https://t.me/clickhouse_ru
    Я не верю, что он три строчки сортирует дополнительные 10 секунд, а значит где-то под капотом кх скорее всего заново генерирует эти массивы/кортежи (я попрбовал оба варианта), ибо при добавлении еще нескольких union all время запроса линейно увеличивается. Странно, учитывая, что массив должен материализовываться в отличии от обычного cte (что в принципе мы и наблюдаем без сортировки)
  • https://t.me/clickhouse_ru
    ну таблица system.query_log не реплицируется же

    у вас M шардов и N реплик и в remote_server описан кластер X

    когда вы делаете запрос в distirbuted( X, ) у вас запрос улетает в M кликхаузов, и вы видите частичный результат
    когда вы делаете запрос в clusterAllReplicas( X, ) у вас запрос улетает в M*N кликхаузов, и вы видите полный результат
  • Поняла, спасибо за подробный ответ!
  • https://t.me/clickhouse_ru
    можно, но вариантов как это сделать много, сколько строк в запросе надо обработать?
  • https://t.me/clickhouse_ru
    @fenogentov #307392 02:15 PM, 16 Jan 2023
    Всяко может быть.
    И 10 и 10 000
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @fenogentov #307397 02:16 PM, 16 Jan 2023
    Повторяющихся (т.е поле по которому отбрасываем) тоже может быть и все разные и все одно значение
  • https://t.me/clickhouse_ru
    Спасибо. Почитаю
  • https://t.me/clickhouse_ru
    скорее всего какой-то баг

    что дает такой запрос

    select * from (
    select materialize(1) aaa, store1.1
    limit 10000000
    union all
    select materialize(2), store1.2
    limit 10000000
    union all
    select materialize(3), store1.3
    limit 10000000
    )
    order by aaa
  • https://t.me/clickhouse_ru
    баг в кх или у меня? дает тот же результат (порядка 15 секунд вместо 7 без select * from)
  • https://t.me/clickhouse_ru
    временно поменять ее на default / alter ... update / снова поменять на MATERIALIZED
    да это стремно: инсерты будут падать возможно и селекты будут возвращать возможно больше колонок
  • https://t.me/clickhouse_ru
    в КХ
    возможно что-то меняется в пайплайне и запрос начинает выполняться меньшим кол-вом потоков
  • Спасибо
  • CREATE VIEW view.memcpu
    (

    timemsk DateTime('Europe/Moscow'),

    CPU % Float64,

    RAM % Float64,

    `RAM free,
    bytes` Float64,

    `RAM total,
    bytes` Float64
    ) AS
    WITH
    mem AS
    (
    SELECT value AS memfree
    FROM system.asynchronous_metrics
    WHERE metric = 'OSMemoryAvailable'
    ),

    memall AS
    (
    SELECT value AS memtotal
    FROM system.asynchronous_metrics
    WHERE metric = 'OSMemoryTotal'
    ),

    usr AS
    (
    SELECT value
    FROM system.asynchronous_metrics
    WHERE metric LIKE '%OSUserTimeCPU%'
    ),

    sys AS
    (
    SELECT value
    FROM system.asynchronous_metrics
    WHERE metric LIKE '%OSSystemTimeCPU%'
    ),

    cpu AS
    (
    SELECT
    now('Europe/Moscow') AS timemsk,

    sum(user) AS user,

    sum(system) AS system,

    round(user + system,
    1) AS allcpu
    FROM
    (
    SELECT
    round((sum(value) / count()) * 100,
    1) AS user,

    0 AS system
    FROM usr
    UNION ALL
    SELECT
    0,

    round((sum(value) / count()) * 100,
    1)
    FROM sys
    )
    )
    SELECT
    cpu.timemsk AS timemsk,

    cpu.allcpu AS CPU %,

    round((1. - (mem.memfree / memall.memtotal)) * 100,
    1) AS RAM %,

    mem.memfree AS `RAM free,
    bytes`,

    memall.memtotal AS `RAM total,
    bytes`
    FROM cpu,
    mem,
    memall;
  • https://t.me/clickhouse_ru
    @andrewk0077 #307409 03:10 PM, 16 Jan 2023
    Ребят, всем привет!

    Вопрос: нужно ли пересоздавать MV после переименовки таблиц из которых берутся данные ?
  • https://t.me/clickhouse_ru
    @Nick_jv #307410 03:40 PM, 16 Jan 2023
    Всем привет! Подскажите, пожалуйста, как/куда вынести пароль/пользователь для подключения к postgres engine.

    Пример:
    CREATE TABLE postgresql_db.postgresql_replica (key UInt64, value UInt64)
    ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgresql_replica', 'postgres_user', 'postgres_password')
    PRIMARY KEY key;
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо, видел. А если пароля нет, а только есть секрет в к8с
  • https://t.me/clickhouse_ru
    from_env
  • https://t.me/clickhouse_ru
    <clickhouse>
    <macros>
    <replica from_env="REPLICA" />
    <layer from_env="LAYER" />
    <shard from_env="SHARD" />
    </macros>
    </clickhouse>

    Типо такого?
    Есть ещё какой-нить вариант?
  • https://t.me/clickhouse_ru
    типа такого
  • https://t.me/clickhouse_ru
    @ibnteo #307417 04:12 PM, 16 Jan 2023
    А как в подзапросах в SELECT можно использовать поля из основного запроса?
    select (select id from tbl2 where tbl1_id=tbl1.id limit 1), * from tbl1
    выдаёт ошибку: Code: 47. DB::Exception: Missing columns: 'tbl1.id'
  • https://t.me/clickhouse_ru
    @MakeReady #307418 04:15 PM, 16 Jan 2023
    Кстати тоже не нашел как делать классические рекуррентные.
    Видимо всем оконок хватает
  • https://t.me/clickhouse_ru
    не поддерживаются коррелированные подзапросы

    используйте джойны
  • https://t.me/clickhouse_ru
    @marspais #307423 05:17 PM, 16 Jan 2023
    Как в клике можно быстро вставить большую csv?
  • https://t.me/clickhouse_ru
    положите связку tbl1.id -> tbl2.id в словарь и подтягивайте в запросе
  • https://t.me/clickhouse_ru
    Insert Local Files | ClickHouse Docs

    You can use clickhouse-client to stream local files into your ClickHouse service. This allows you the ability to preprocess

  • https://t.me/clickhouse_ru
    define большую
  • https://t.me/clickhouse_ru
    Спасибо надо попробовать
  • https://t.me/clickhouse_ru
    👍🏻
  • https://t.me/clickhouse_ru
    @ivanbrrr #307429 05:57 PM, 16 Jan 2023
    А в КХ сейчас нужен рестарт для применения настроек или нет? ратио менялся
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307424 #307432 06:42 PM, 16 Jan 2023
    Спасибо, решил уже другим способом, более оптимальным.
  • https://t.me/clickhouse_ru
    @ElenaIT #307433 07:10 PM, 16 Jan 2023
    А подскажите пожалуйста, синтаксис нескольких with в кх: with... with. Не нашла в документации.
  • https://t.me/clickhouse_ru
    @popov_art #307434 07:12 PM, 16 Jan 2023
    With l as (), l2 as (), ...
    Select ...
  • https://t.me/clickhouse_ru
    @popov_art #307435 07:12 PM, 16 Jan 2023
    Стандарт же
  • https://t.me/clickhouse_ru
    Артем, спасибо большое, теперь вижу свою ошибку
  • https://t.me/clickhouse_ru
    @runiverse_hiker #307438 07:26 PM, 16 Jan 2023
    Добрый вечер. Подскажите пожалуйста какой нибудь источник по оптимизации запросов в клике?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Спасибо, это читал)
  • https://t.me/clickhouse_ru
    а дальше сам
  • @7699150 #307442 08:17 PM, 16 Jan 2023
    подскажите пожалуйста, запустил ALTER MODIFY TTL чтобы добавить TTL Recompress в табличку в зависимости от времени жизни данных и секономить память.
    В результате в кластере (2х2) ноды на одном шарде память на диске высвободилась, а но втором шарде наоборот – потребление памяти на диске растет. Посмотрел вес таблички в system.parts – она стала компактнее на 300гб. Вопрос – что могло отъесть память на диске?
  • https://t.me/clickhouse_ru
    ALTER MODIFY TTL закончился?

    в директориях shadow и backup есть что-нибудь?
  • https://t.me/clickhouse_ru
    @enclaved #307444 08:21 PM, 16 Jan 2023
    Привет. Есть ли где-нибудь пример готового оптимального конфига под маленький датасет и сервер с 16 гб озу?
  • https://t.me/clickhouse_ru
    @enclaved #307445 08:23 PM, 16 Jan 2023
    Таблица около 5 млрд строк
  • похоже бекап
    Спасибо за наводку
  • 17 January 2023 (141 messages)
  • https://t.me/clickhouse_ru
    @rozahot11 #307452 01:43 AM, 17 Jan 2023
    Приветики
  • https://t.me/clickhouse_ru
    @keksum666 #307455 06:43 AM, 17 Jan 2023
    Всем привет, может кто-то подсказать из-за чего вылазит ошибка аутентификации при работе с словарем?

    SQL:
    SELECT dictGet('dict-test', ('date'), 2323641414416316)

    Error:
    default: Authentication failed: password is incorrect or there is no user with such name: While processing dictGet
  • скорее всего неправильная аутентификациия в настройках словаря
  • https://t.me/clickhouse_ru
    @Nick_jv #307458 07:19 AM, 17 Jan 2023
    Всем привет! Подскажите, пожалуйста, что не так делаю:
    Секрет создается таким образом и он нормально создается и доступен в к8с:
    apiVersion: "kubernetes-client.io/v1"
    kind: ExternalSecret
    metadata:
    name: test-ch
    spec:
    backendType: systemManager
    data:
    - key: /test/test_ch_password
    name: TEST_CH_PASS
    Потом пытаюсь им воспользоваться в операторе, но пишет что не может найти такого секрета(если просто текстом вставить пароль все работает)
    ...
    configuration:
    users:
    testch/k8s_secret_password: test-ch
    ...
    apiVersion: "clickhouse.altinity.com/v1"
    kind: "ClickHouseInstallation"
    metadata:
    name: test-ch
    ...
    clusters:
    - name: test-ch
    secret:
    valueFrom:
    secretKeyRef:
    name: "test-ch"
    key: "TEST_CH_PASS"

    Пытался так, но тоже без успеха:
    configuration:
    users:
    testch/password:
    valueFrom:
    secretKeyRef:
    name: "test-ch"
    key: "TEST_CH_PASS"
  • @110248354 #307459 08:07 AM, 17 Jan 2023
    Добрый день. Запустил chroxy, подключился, в указанную папку для кэша на диск ничего не сохраняется, ошибок в процессе работы нет. В плагине grafana-clickhouse от Altinity отсутствует вариант выбора источника "proxy" как в документации, есть server и browser. Выбрано server. chproxy 1.21.0, plugin 2.5.3. Выглядит всё так, будто и нет никакого кэширования запросов
  • https://t.me/clickhouse_ru
    @jenjate #307462 08:24 AM, 17 Jan 2023
    Хочу сделать insert into target_table select * from source_table. Ругается: Expected one of: token, Comma, SELECT - source_table это сte, что я делаю не так?
  • попробуй source_table в скобки заключить
  • https://t.me/clickhouse_ru
    не работает, он тупо хочет select или еще один сte, а insert не воспринимает даже в этом месте
  • insert into target_table select t.* from (source_table) as t
  • есть предположение, что нужно перечислить колонки в селекте вместо звёздочки и, возможно, колонки в инсерте
  • https://t.me/clickhouse_ru
    он ругается еще до этой строчки, он на нее даже не смотрит, а хочет после блока WITH либо продолжение CTE либо SELECT, все что внутри insert вообще без разницы пока что
  • не совсем понял... у тебя insert into где стоит ?
  • ты же писал, что source_table это сte,
  • https://t.me/clickhouse_ru
    with
    result as (select …)
    insert into target from select * from result
  • insert into target_table select t.* from (cte писать здесь) as t
  • https://t.me/clickhouse_ru
    а вынести сte нельзя?
  • попробуй сначала так :) судя по доке я вижу только CTE на селект
  • https://t.me/clickhouse_ru
    я так сделал, ему все равно на insert - ругается ДО insert’а Code: 62. DB::Exception: Syntax error: failed at position 8063 (end of query) (line 180, col 2): . Expected one of: token, Comma, SELECT. - тут вроде много дата инженеров, как вы делаете insert’ы из сte?
  • ну, я не знаю тогда, я это вижу как
    insert into target_table select t.* from (WITH test1 AS (SELECT i + 1, j + 1 FROM test1)
    SELECT * FROM test1) as t
  • https://t.me/clickhouse_ru
    спасибо за подсказки, но в этом варианте пока что та же ошибка(
  • Вообще нормальные выражения (в других БД) могут выглядеть и так
    INSERT INTO x WITH y AS ( SELECT * FROM z ) SELECT * FROM y
    или
    WITH y AS ( SELECT * FROM z ) INSERT INTO x SELECT * FROM y
  • Без полного запроса можно очень долго "гадать" в чем ошибка. А вот например упростить его до таблицы system numbers и показать его в https://fiddle.clickhouse.com/ будет сильно продуктивнее имхо. Ну или показать запрос целиком
  • https://t.me/clickhouse_ru
    @ikeniborn #307479 09:11 AM, 17 Jan 2023
    Добрейшего! Есть такой кейс. Нужно перемножить два массива данных. ДЕкартово произвевдение. Делаю через нулл таблицу и матвью. Вижу что все равно все затягивается в оперативку и потом уже сливается в матвью полным куском. Как распределить такие вычесления? Есть мысли, беспрактис. Буду очень признателен. Уже не знаю куда копать...
  • согласен, ибо работает
  • Помогло имя кэша (longterm) указать в блоке users:, появились файлики
  • и так тоже
    INSERT INTO users2
    WITH xxx AS (SELECT * FROM users WHERE uid = 1231)
    SELECT * FROM xxx
    ;
  • https://t.me/clickhouse_ru
    вот теперь сработало, спасибо большое!
  • https://t.me/clickhouse_ru
    @Yrossslav #307489 11:06 AM, 17 Jan 2023
    Привет всем! Такой вопрос: возможно ли как то соединить два клика между собой так, чтобы данные из одного стримились в другой? Хотим сделать один клик как хранилище данных, к которому подключаются другие клики, которые выполняют роль стендов. Или на роль хранилища данных лучше взять не клик?
  • https://t.me/clickhouse_ru
    @Nick_jv #307490 11:16 AM, 17 Jan 2023
    Всем привет! Подскажите, пожалуйста, что не так делаю:
    Секрет создается таким образом и он нормально создается и доступен в к8с:
    apiVersion: "kubernetes-client.io/v1"
    kind: ExternalSecret
    metadata:
        name: test-ch
    spec:
        backendType: systemManager
        data:
          - key: /test/test_ch_password
            name: TEST_CH_PASS
    Потом пытаюсь им воспользоваться в операторе, но пишет что не может найти такого секрета(если просто текстом вставить пароль все работает)
    ...
      configuration:
        users:
          testch/k8s_secret_password: test-ch
    ...
    apiVersion: "clickhouse.altinity.com/v1"
    kind: "ClickHouseInstallation"
    metadata:
      name: test-ch
    ...
    clusters:
          - name: test-ch
            secret:
              valueFrom:
                secretKeyRef:
                  name: "test-ch"
                  key: "TEST_CH_PASS"

    Пытался так, но тоже без успеха:
      configuration:
        users:
          testch/password:
            valueFrom:
              secretKeyRef:
                name: "test-ch"
                key: "TEST_CH_PASS"
  • https://t.me/clickhouse_ru
    @1151007688 #307491 11:21 AM, 17 Jan 2023
    Привет. Не знал такой факт, но получается, в базе с ENGINE = Memory можно создавать таблицы с любыми движками, например MergeTree как в примере ниже. Проверял - всё работает.

    CREATE DATABASE mem_db_1 ENGINE = Memory;
    USE mem_db_1;
    CREATE TABLE tdb_table_1
    (
    id UInt64,
    column1 String
    )
    ENGINE = MergeTree()
    PRIMARY KEY id;

    Это считаеться "нормальным"? Или это что то вроде бага?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307489 #307492 11:29 AM, 17 Jan 2023
    Много серверов==кластер. Если вам просто для тестов, то можете сделать как на Replicated, так и на Distributed. Зависит от того что у вас там уже собрано и как.
  • https://t.me/clickhouse_ru
    @Yulia_tgm #307493 11:38 AM, 17 Jan 2023
    Всем привет:)

    Кто может нам помочь настроить репликацию БД из MySQL(MariaDB) в Clickhouse. MySQL находятся на одном сервере с Clickhouse. Объем БД ~50Гб.
    Одно из рассматриваемых решений: Altinity Sink Connector - кто сможет и готов, напишите, пожалуйста, в лс - @yulia_tgm - и сразу сроки и стоимость😊
  • @aoparin #307495 11:40 AM, 17 Jan 2023
    добрый день, помогите, пожалуйста, разобраться с фильтрацией.

    В таблицу складываются опросы датчика с определённой периодичностью. Значение датчика изменяется гораздо реже, чем период его опроса. Необходимо из этой таблицы получить только те записи, когда произошло изменение значения параметра. Через neighbor() это получилось сделать, а вот через оконную функцию возвращается ошибка ILLEGAL_AGGREGATION.

    Возможно ли фильтровать селект по значению из оконной функции и если да, то как? Попытка засунуть в подзапрос ошибку не убрало.

    https://fiddle.clickhouse.com/39e41791-fb3c-4371-b88c-d860887795f9
  • https://t.me/clickhouse_ru
  • Константин, спасибо!

    не понимаю, почему у меня не проходило это :( по всей видимости какая-то другая ошибка
  • https://t.me/clickhouse_ru
    потому что вы в секции where пытались сделать условие по оконной функции, я перенес её на уровень выше
  • я так тоже пробовал, да, видимо, в скобках запутался 😳
  • https://t.me/clickhouse_ru
    Это так и задумано. Это специальный движок чтобы ci кх работал быстрее, его обычным пользователям нет смысла использовать, ci работает в стрессовом режиме, там настолько все перегружено что запросы которые выполняются меньше 100мс в обычном ноуте, работают несколько минут в ci.
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307501 11:57 AM, 17 Jan 2023
    Всем привет, подскажите ,пожалуйста, как распарсить строку ( удалить v , сплит по точке -сделаю, выделить полученный после сплита массив в отдельные признаки)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307493 #307502 11:58 AM, 17 Jan 2023
    Если у вас один сервер и почти нет данных, то решение на основе Altinity Sink Connector включающее в себя несколько сложных кластерных компонентов, скорее всего, для вас будет слишком тяжелым и дорогим решением.
    На вашем месте я бы все-таки попробовал Engine MaterializedMySQL (при всей моей нелюбви к ней). Ну или написал бы что-то простое на докачке по монотонно возрастающим id.
  • https://t.me/clickhouse_ru
    @1151007688 #307503 11:58 AM, 17 Jan 2023
    Спасибо! Наверное все таки нашел один баг. Если создать таблицу как выше, вставить в нее данные, то в файловой системе вижу /var/lib/clickhouse/data/mem_db_1/tdb_table_1 (со всеми файлами внутри). Теперь если грохну сервер КХ с помощью Ctrl+C, затем запущу опять сервер, затем команды: use mem_db_1; show tables - уже не показывает эту таблицу. Но в файловой системе папка /var/lib/clickhouse/data/mem_db_1/tdb_table_1 остается (с содержимым внутри). Это наверное баг? Есть какая то команда типа OPTIMIZE? чтобы удалить такой garbage?
  • https://t.me/clickhouse_ru
    так Database Engine=Memory, делает ровно ОДНО, не создает файлы в каталоге metadata.
  • https://t.me/clickhouse_ru
    Понятно. Спасибо.
  • https://t.me/clickhouse_ru
    отдельные признаки? может быть поля? колонки? строки?
  • https://t.me/clickhouse_ru
    Каждую цифру в свою колонку
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307510 12:30 PM, 17 Jan 2023
    Сплит по точке
  • https://t.me/clickhouse_ru
    сколько колонок может быть максимально?
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307512 12:31 PM, 17 Jan 2023
    Нет ограничений, можно обрезать строку по 11тый символ и с оставшимся работать
  • https://t.me/clickhouse_ru
    @lgtwb #307513 12:32 PM, 17 Jan 2023
    там после тыщи колонок приколы начинаются вроде как
  • https://t.me/clickhouse_ru
    @lgtwb #307514 12:32 PM, 17 Jan 2023
    сам не сталкивался, но видел в чате комментарии на эту тему
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307515 12:33 PM, 17 Jan 2023
    Да не, 11 максимум, нет речи о 1000
  • https://t.me/clickhouse_ru
    нет ограничений, замечательно. Предположим в 1й строке 8 колонок, во второй 128. Как это в SQL выглядеть должно?

    select '4.5.1.1345' s, splitByChar('.', s) x, x[1] a, x[2] b, x[3] c, x[4] d, x[5] e, x[6] f, x[7] g;
    ┌─s──────────┬─x────────────────────┬─a─┬─b─┬─c─┬─d────┬─e─┬─f─┬─g─┐
    │ 4.5.1.1345 │ ['4','5','1','1345'] │ 4 │ 5 │ 1 │ 1345 │ │ │ │
    └────────────┴──────────────────────┴───┴───┴───┴──────┴───┴───┴───┘
  • https://t.me/clickhouse_ru
    это про хранение таблиц на ДИСКЕ.
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307518 12:35 PM, 17 Jan 2023
    Нулы ,если символов меньше,чем 11
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307517 #307519 12:35 PM, 17 Jan 2023
    А это разве тот же человек с engine=memory?
  • https://t.me/clickhouse_ru
    @Anna_R_proc #307520 12:35 PM, 17 Jan 2023
    Вообще итоговая задача сравнить версии между собой,может есть идеи как это сделать иначе?
  • https://t.me/clickhouse_ru
    @lgtwb #307521 12:35 PM, 17 Jan 2023
    А, все, я тупой, пардон
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307517 #307522 12:36 PM, 17 Jan 2023
    Кстати, а где можно прочесть про это более детально?
  • https://t.me/clickhouse_ru
    @lgtwb #307523 12:36 PM, 17 Jan 2023
    ну или посмотреть
  • https://t.me/clickhouse_ru
    select '4.5.1.1345' s, splitByChar('.', s) y,arrayResize(cast(y, 'Array(Nullable(String))'), 11, null) x, x[1] a, x[2] b, x[3] c, x[4] d, x[5] e, x[6] f, x[7] g;
    ┌─s──────────┬─y────────────────────┬─x───────────────────────────────────────────────────────┬─a─┬─b─┬─c─┬─d────┬─e────┬─f────┬─g────┐
    │ 4.5.1.1345 │ ['4','5','1','1345'] │ ['4','5','1','1345',NULL,NULL,NULL,NULL,NULL,NULL,NULL] │ 4 │ 5 │ 1 │ 1345 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
    └────────────┴──────────────────────┴─────────────────────────────────────────────────────────┴───┴───┴───┴──────┴──────┴──────┴──────┘
  • https://t.me/clickhouse_ru
    круто,спасибо! а если первый символ V, как его убрать?
  • https://t.me/clickhouse_ru
    нигде, никто не хочет писать о том что колонки небесплатны
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307526 #307527 12:40 PM, 17 Jan 2023
    Какие-то косвенные метрики мб тогда?
  • https://t.me/clickhouse_ru
    ?
  • https://t.me/clickhouse_ru
    @lgtwb #307529 12:41 PM, 17 Jan 2023
    Или о платности колонок я могу узнать только когда все рухнет?
  • https://t.me/clickhouse_ru
    select 'v4.5.1.1345' S, replace(S, 'v', '') s, splitByChar('.', s) y,arrayResize(cast(y, 'Array(Nullable(String))'), 11, null) x, x[1] a, x[2] b, x[3] c, x[4] d, x[5] e, x[6] f, x[7] g;

    ┌─S───────────┬─s──────────┬─y────────────────────┬─x───────────────────────────────────────────────────────┬─a─┬─b─┬─c─┬─d────┬─e────┬─f────┬─g────┐
    │ v4.5.1.1345 │ 4.5.1.1345 │ ['4','5','1','1345'] │ ['4','5','1','1345',NULL,NULL,NULL,NULL,NULL,NULL,NULL] │ 4 │ 5 │ 1 │ 1345 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
    └─────────────┴────────────┴──────────────────────┴─────────────────────────────────────────────────────────┴───┴───┴───┴──────┴──────┴──────┴──────┘
  • https://t.me/clickhouse_ru
    👍👍👍спасибо!
  • https://t.me/clickhouse_ru
    да есть у нас клиенты у которых 20 тыс колонок, есть ограничения, они понятны, они менеджебл, тут рассказывать 4 часа, я не буду делать это в чате.
  • https://t.me/clickhouse_ru
    память расходуется, и random IOPS
  • https://t.me/clickhouse_ru
    @lgtwb #307534 12:44 PM, 17 Jan 2023
    Я понял, ответ есть, но платный
  • https://t.me/clickhouse_ru
    @den_crane #307535 12:47 PM, 17 Jan 2023
    скорее я не хочу рассказывать про недостатки и недоделки
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307535 #307536 12:48 PM, 17 Jan 2023
    Энивей, скорее всего я впервые от вас и услышал про небесплатность колонок, и это вылилось в то что я на всякий случай клик пускаю на nvme-дисках 😅
  • https://t.me/clickhouse_ru
    @BloodJazMan
  • https://t.me/clickhouse_ru
    @855437500 #307538 12:52 PM, 17 Jan 2023
    Доброе время суток.
    получаю ошибки
    <Error> void DB::StorageKafka::threadFunc(size_t): Code: 252. DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts: while pushing to view my_db.my_table. (TOO_MANY_PARTS), Stack trace (when copying this message, always include the lines below)

    Подскажите в какую сторону смотреть.
  • https://t.me/clickhouse_ru
    @855437500 #307539 12:53 PM, 17 Jan 2023
    Запрос
    SELECT
    partition,
    count()
    FROM system.parts
    WHERE table = 'event'
    GROUP BY partition
    ORDER BY partition DESC

    Выдал такой результат
    202301 300
    202212 7
    202211 5
    202210 4

    Понимаю, что уперлись в лимиты, но пока не могу сообразить, что делать.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307538 #307540 12:56 PM, 17 Jan 2023
    Вставлять бОльшими пачками и реже.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307539 #307541 12:56 PM, 17 Jan 2023
    Сервак дев или прод?
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307540 #307542 12:57 PM, 17 Jan 2023
    Эта ошибка происходит даже с записью раз в несколько часов
  • https://t.me/clickhouse_ru
    прод. Данные КХ забирает сам из кафки.
  • https://t.me/clickhouse_ru
    @lgtwb #307544 12:57 PM, 17 Jan 2023
    Тогда простите, больше не подскажу. На деве я бы предложил просто поднять лимиты :)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307542 #307545 12:58 PM, 17 Jan 2023
    А в system.merges нет долгих активных мерджей для этой таблицы?
  • https://t.me/clickhouse_ru
    А поднятие лимитов поможет, но не повторится ли ситуация
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307546 #307548 12:59 PM, 17 Jan 2023
    Вы можете этот показатель партов мониторить например :D
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307545 #307549 01:00 PM, 17 Jan 2023
    Неа
  • https://t.me/clickhouse_ru
    @lgtwb #307550 01:01 PM, 17 Jan 2023
    у меня эта проблема была вообще на стандалоне
  • https://t.me/clickhouse_ru
    Такой запрос
    SELECT database, table, elapsed, progress
    FROM system.merges

    выдал такой запрос
    my_db my_table 2878.548249417 0.22796318565136667
    my_db my_table 2878.548250673 0.26899671683658827
  • https://t.me/clickhouse_ru
    @855437500 #307552 01:03 PM, 17 Jan 2023
    Правильно понимаю, что мерджится очень долго?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307552 #307553 01:05 PM, 17 Jan 2023
    Ну, эта ошибка вылезает в том случае, если количество партов внутри одной партиции превышает лимит (по умолчанию 300). Т.е. КХ объединяет парты медленнее, чем вставляются новые. Соответственно, либо идёт частая вставка, либо медленное слияние.

    Как вариант медленные диски, очень мелкое партиционирование (что одна вставка порождает много мелких партов, которые параллельно мерджатся), может быть 100500 параллельных мерджей в других таблицах.
  • https://t.me/clickhouse_ru
    select * from system.replication_queue
  • https://t.me/clickhouse_ru
    @den_crane #307555 01:07 PM, 17 Jan 2023
    в 2023 году в 99% случаев у Too many parts (300) одна причина, мержи не идут из-за того что есть проблема репликации (потерян парт и все застряло).
  • https://t.me/clickhouse_ru
    select table, round(elapsed*(1/progress)-elapsed,2) 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
    посмотрю сейчас
  • https://t.me/clickhouse_ru
    Результат запроса
    my_table 9037.7 3470.895005267 0.27748070896796356 0 189.00 GiB 29.11 MiB
    my_table 10914.3 3470.895030401 0.24128251485181915 0 147.10 GiB 767.09 MiB
  • https://t.me/clickhouse_ru
    @855437500 #307559 01:12 PM, 17 Jan 2023
    Значение колонки progress потихоньку увеличивается
  • https://t.me/clickhouse_ru
    а процессор загружен сильно?
    есть колонки с CODEC ?
  • https://t.me/clickhouse_ru
    @den_crane #307561 01:13 PM, 17 Jan 2023
    189.00 GiB -- кто-то запустил optimize table final ?
  • https://t.me/clickhouse_ru
    @855437500 #307562 01:15 PM, 17 Jan 2023
    Да, как только появилась ошибка, админ запустил оптимизацию
  • https://t.me/clickhouse_ru
    @855437500 #307563 01:17 PM, 17 Jan 2023
    CODEC при создании не использовался
  • https://t.me/clickhouse_ru
    стабильно 2 ядра загружено КХ
  • https://t.me/clickhouse_ru
    админ молодец, заболела голова - давайте выстрелим в ногу.
    КХ планирует мержи раз в секунду и плюс при каждом инсерте, optimize в случае too many parts это самое худшее что можно придумать
  • https://t.me/clickhouse_ru
    @lgtwb #307566 01:22 PM, 17 Jan 2023
    Самый прикол, что на странице написано, что Optimize не решает проблему too_many_parts))
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #307562 #307567 01:23 PM, 17 Jan 2023
    Админ по приколу решил это сделать видимо - безысходность
  • https://t.me/clickhouse_ru
    Будем знать. Я так понимаю, тут остается только вариант ждать, когда КХ все прожует и посмотреть все ли нормально с дисками?
  • https://t.me/clickhouse_ru
    @lgtwb #307569 01:24 PM, 17 Jan 2023
    Траблшутинг в кликхаусе самый неочевидный.

    В докер-образе например, есть (была) закладка, которая убивает процесс если он не запустился за 12 секунд.
    Очень здорово я потратил тогда день))
  • https://t.me/clickhouse_ru
    сколько места свободного на диске?
  • https://t.me/clickhouse_ru
    @vtarasoff #307571 01:25 PM, 17 Jan 2023
    Привет! Подскажите. У меня есть запрос, который выводит две колонки. В одной из колонок массив. Можно ли его преобразовать в строки? Чтобы, например, если в колноке строки массив из 5 элементов, получилось на выходе 5 строк?
  • https://t.me/clickhouse_ru
    т.е. когда mysql не стартует за 10минут, вам все очевидно?
    я тут 4 часа трахался с mysql неделю назад
  • https://t.me/clickhouse_ru
    /dev/mapper/ssd-clickhouse 6.0T 5.4T 307G 95% /home/clickhouse
    /dev/mapper/cold-clickhouse 9.1T 1.7T 6.9T 20% /home/clickhouse/data-cold
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307572 #307574 01:25 PM, 17 Jan 2023
    Нет, но как бы как хостить клик лично мне из документации неочевидно.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307574 #307575 01:26 PM, 17 Jan 2023
    Да и база решений более наработанная, имхо. Все известные баги и приколы описаны и переведены в киллерфичи)
  • https://t.me/clickhouse_ru
    и кто должен для Кликхауза это все сделать и описать? Clickhouse,inc? Идите в облако, там все проблемы решены
  • https://t.me/clickhouse_ru
    а, нашел: arrayJoin
  • https://t.me/clickhouse_ru
    А если сделать поиск по последней строчки лога, то на гитхабе есть ответы как это починить
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307576 #307579 01:33 PM, 17 Jan 2023
    Да бож упаси мне выпендриваться, дали инструмент - уже отлично. Так, отметил, не более.
  • https://t.me/clickhouse_ru
    @lgtwb #307580 01:34 PM, 17 Jan 2023
    У мариадб кстати документация на 3800 листов пдф, чисто ради интереса посмотрел 😁
  • https://t.me/clickhouse_ru
    @den_crane #307582 01:43 PM, 17 Jan 2023
    я думаю у КХ дока на 1000 страниц уже
  • https://t.me/clickhouse_ru
    что это /dev/mapper/ssd-clickhouse 6.0T 5.4T 307G 95% /home/clickhouse ? там данные КХ есть?
  • https://t.me/clickhouse_ru
    @yourock88 #307584 01:46 PM, 17 Jan 2023
    Честно говоря, по моему опыту, ClickHouse один из самых неприхотливых продуктов в плане эксплуатации, но за счёт чуть большего объема ручной работы, чем в других кластерных решениях. Я лично не считаю это недостатком, но, очевидно, у всех свои предпочтения 🙂
  • https://t.me/clickhouse_ru
    @yourock88 #307585 01:48 PM, 17 Jan 2023
    Но мы сильно большие кластеры не держали, так, буквально серверов 50-70
  • https://t.me/clickhouse_ru
    Да там данные КХ
  • https://t.me/clickhouse_ru
    Так места возможно для мержей не хватает. Это в логе кх видно
  • https://t.me/clickhouse_ru
    Вот не знаю. Место уменьшается со временем не стремительно. Пока решили понаблюдать подождать. Прогресс потихоньку двигается
  • https://t.me/clickhouse_ru
    300 Гб вроде должно хватить
  • https://t.me/clickhouse_ru
    @yourock88 #307590 02:00 PM, 17 Jan 2023
    Максимальный размер парта по умолчанию вроде что-то около 150 Гб?
  • https://t.me/clickhouse_ru
    Потому что мержи резервируют место *2
    Т.е. Ахиллес не догонит черепаху
  • https://t.me/clickhouse_ru
    Это externalsecret
    Он требует отдельного обработчика
    Оператор работает с kind: Secret
  • https://t.me/clickhouse_ru
    - Есть какие-то обходные пути сейчас?
    - Есть в планах его добавить?
  • https://t.me/clickhouse_ru
    @ibnteo #307598 05:49 PM, 17 Jan 2023
    Как оптимальнее доставать в списке только последние записи с одним id?
    Сейчас делаю через SELECT DISTINCT ON (id) ... ORDER BY date DESC
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307598 #307599 05:57 PM, 17 Jan 2023
    оптимальность зависит от задачи - https://kb.altinity.com/altinity-kb-queries-and-syntax/distinct-vs-group-by-vs-limit-by/
    DISTINCT & GROUP BY & LIMIT 1 BY what the difference

    Page description for heading and indexes.

  • https://t.me/clickhouse_ru
    SELECT id, argMax(value, date) GROUP BY id как вариант
  • https://t.me/clickhouse_ru
    @Rainb0wD4sh #307605 07:07 PM, 17 Jan 2023
    Добрый день, есть ли возможность сделать SELECT * FROM 'table_name' переменной из другого запроса? где table_name список полученный другим запросом
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307605 #307606 08:08 PM, 17 Jan 2023
  • https://t.me/clickhouse_ru
    Спасибо, за ответ пойду другим путём
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307607 #307608 08:21 PM, 17 Jan 2023
    если переменные таблицы похожи по маске и запрос одинаковый, то можно воспользоваться Engine Merge (не путать c MergeTree).
  • https://t.me/clickhouse_ru
    Ну план был брать таблицы из системной таблицы с списком таблиц
  • https://t.me/clickhouse_ru
    @Rainb0wD4sh #307610 08:26 PM, 17 Jan 2023
    Просто именна на перёт не известны
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307609 #307611 08:28 PM, 17 Jan 2023
    Нормальный план, я так делаю описанным выше способом. Ничего сложного нет - простой скрипт на bash.
  • https://t.me/clickhouse_ru
    Там не планируется доступ к консоле, типо сервис купить
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307612 #307613 08:33 PM, 17 Jan 2023
    Какая консоль? Что это? Это же все запускается как обычный клиент.
  • https://t.me/clickhouse_ru
    Шел можно из клиента кх запускать?
  • https://t.me/clickhouse_ru
    @vitalii_ka #307615 08:36 PM, 17 Jan 2023
    😂
  • 18 January 2023 (98 messages)
  • @5802378244 #307619 12:38 AM, 18 Jan 2023
    Можете подсказать, на сколько хорошо подходит ClickHouse для того, что бы производить статистику по тексту
    Например есть 2 текста:
    Саша на шоссе
    Шоссе упало на облака

    Нужно получить количество слов, что то по типу
    шоссе - 2
    на - 2

    Или в данном случае лучше использовать ElasticSearch?
  • https://t.me/clickhouse_ru
    @popov_art #307620 01:41 AM, 18 Jan 2023
    база данных статистику по тексту 🤦‍♂️
  • ну можно же по идее слова разделять по строкам в бд и преобразовывать 🧐
  • @5802378244 #307622 02:26 AM, 18 Jan 2023
    чем не статистическая база
  • @5802378244 #307623 02:27 AM, 18 Jan 2023
    Будет что то на подобии
    ||word||
    |саша|
    |на|
    |шоссе|
    И дальше уже подсчет
    Тут больше вопрос в сторону того, стоит ли овчинка выделки, или просто взять эластик не парясь с разделением и сделать уже там на уровне БД
  • https://t.me/clickhouse_ru
    @popov_art #307624 03:53 AM, 18 Jan 2023
    map / reduce - все примеры начинаются именно с этой задачи. Примеров масса.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307619 #307626 05:14 AM, 18 Jan 2023
    Вопрос немного странный про базу. При чем тут база? Вы же будете это писать на каком-то языке с каким-то набором функций. Если писать это на Clickhouse SQL, то придется изучить его. Вот этот ваш map/reduce тут выглядит примерно так
    - https://fiddle.clickhouse.com/10523ac1-b227-4463-b738-aa50e03f50d5
    Если вы любите функциональное программирование, то все хорошо. Если нет - умрете.
  • https://t.me/clickhouse_ru
    Насколько помню external secret в итоге environment variables в контейнер прикидывает

    Соответственно можно через xml
    Погуглите from_env как внутри xml конфигурационных файлах кликхаус использовать
  • @supersurfer #307629 05:49 AM, 18 Jan 2023
    добрый день. небольшой вопрос по юзерам на репликационном кластере: есть роль с определёнными правами. если создаю юзера только на одной ноде, то роль нерабочая, она не даёт доступа в таблицы, в которые есть доступ у роли. если создаю юзера на всех нодах, то тогда всё работает, хоть и появляется с задержкой. так и должно быть? если да, то как ограничить доступ некоторым юзерам на определённые ноды?
  • @Abrak98 #307631 07:03 AM, 18 Jan 2023
    Всем привет. Подскажите, можно ли при OPTIMIZE передать несколько partition_id?
    Хотелось бы сделать что-то вроде
    """PARTITION ID in ('202202', '202203')"""
    У таблицы:
    """PARTITION BY toYYYYMM(create_stamp)"""
  • @2122375266 #307633 07:07 AM, 18 Jan 2023
    Добрый день. Есть таблица user | event(view, click) | date. Я выбираю юзеров группируя по дате и считаю count событий. Вопрос такой, можно ли в выборку добавить поле с условием, например мне нужно количество view. до первого события click.?
  • https://t.me/clickhouse_ru
    Вам потребуется добавить логику для вычислений (какой вопрос такой ответ)
  • Логику где-то отдельно кодом или внутри запроса можно? Например подобным способом не сработало select date, select(min(date) )
  • https://t.me/clickhouse_ru
    @konnectrl #307636 07:27 AM, 18 Jan 2023
    Конечно в sql запрос требуется добавить логику
  • https://t.me/clickhouse_ru
    Как я помню, нет
  • Понял, спасибо
  • https://t.me/clickhouse_ru
    У меня нет идей, как это сделать, но есть вопрос для чего))
    Мне казалось что кластер это нечто целое с точки зрения доступа
  • хотели пустить пользователей на одну ноду, а сервисы на другую, чтобы распределить нагрузку.
    ну да. мне почему-то показалось можно ограничить. всё равно доступы долетают с задержкой по какой-то причине.
  • https://t.me/clickhouse_ru
    Посмотрите в сторону ch proxy
  • https://t.me/clickhouse_ru
    Если вы используете vpn, то в теории можно пробовать ограничивать доступ к другим нодам на уровне vpn
  • спасибо, попробуем так
  • https://t.me/clickhouse_ru
    @NDSpasov #307646 08:09 AM, 18 Jan 2023
    Можно ли в кликхаусе сделать mat.view которая будет забирать файлы с последующим удаление из table s3 engine и перекладывать в merge tree?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307642 #307647 08:12 AM, 18 Jan 2023
    ну и распределите если так вам кажется правильным, при чем тут права доступа? Предполагаете, что ваши пользователи узнают тайный адрес другого сервера и незаконно начнут им пользоваться? Если даже и так, то я бы ограничил это на уровне фаревола.
  • проблема с ролями всё равно наблюдается. добавляю права для роли и они не работают. или же нужно отзывать роль, а затем снова давать, но это не выглядит удобным
  • @marfanyan #307649 08:18 AM, 18 Jan 2023
    Добрый день, подскажите, а функция upper() с кириллицей не работает? Есть замена какая-то?
  • select upperUTF8('фывфФ')
  • https://t.me/clickhouse_ru
    @m1khal3v #307652 08:58 AM, 18 Jan 2023
    Всем привет. Частенько стали падать ошибки типа

    HttpCode:500 ; ;Code: 439. DB::Exception: Cannot schedule a task: cannot allocate thread (threads=0, jobs=0). (CANNOT_SCHEDULE_TASK) (version 22.8.6.71 (official build))

    это в какую сторону можно покопать?
  • В какой момент эта мат вью должна срабатывать?
  • https://t.me/clickhouse_ru
    В идеале как только появится новый файл
    Можно интервал 1мин
  • https://t.me/clickhouse_ru
    @ilejn ↶ Reply to #307652 #307655 10:15 AM, 18 Jan 2023
    Если никому в чатике эта конкретная проблема неизвестна, логично начать с логов сервера. Как минимум там будет бэктрейс.
  • Мат вью это просто триггер на вставку. Про с3 она ничего не знает и по расписанию что-то проверять не умеет. Были планы добавить движок который умеет следить за новыми файлами на с3, но пока только руками такое делается
  • https://t.me/clickhouse_ru
    Благодарю 🙏
  • https://t.me/clickhouse_ru
    по итогу добавили в графану метрики из этой статьи https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-threads/ и оказалось что "частенько" это было субъективное мнение. пики в 10к присутствуют но не чаще чем раз в неделю
  • https://t.me/clickhouse_ru
    Это известная проблема. К сожалению ее непонятно как воспроизвести.
  • https://t.me/clickhouse_ru
    Нельзя
  • https://t.me/clickhouse_ru
    @enclaved #307661 12:16 PM, 18 Jan 2023
    как посмотреть текущий размер mark cache?
  • https://t.me/clickhouse_ru
    @ncuqb #307662 12:20 PM, 18 Jan 2023
    Коллеги, привет. Подскажите, какой есть более эффективный и простой способ загрузки pandas dataframe в clickhouse? Может кто сталкивался с этим вопросом.
  • https://t.me/clickhouse_ru
    SELECT *, formatReadableSize(value)
    FROM system.asynchronous_metrics
    WHERE metric like '%Cach%'
  • https://t.me/clickhouse_ru
    @enclaved #307664 12:29 PM, 18 Jan 2023
    спасибо
  • @612200930 #307667 01:31 PM, 18 Jan 2023
    Добрый день!
    Есть функция IPv4ToIPv6(x) , а обратно нет?
  • @vmakulov #307669 01:36 PM, 18 Jan 2023
    (х)6ʌdıoʇ4ʌdı
    https://clickhouse.com/docs/en/sql-reference/functions/ip-address-functions/
  • @612200930 #307670 01:38 PM, 18 Jan 2023
    под обратно я имел ввиду что то типа IPv6ToIPv4(s)
  • @vmakulov #307671 01:39 PM, 18 Jan 2023
    а обратно червей можно загнать только в банку большего размера.
  • https://t.me/clickhouse_ru
    @mchist #307672 01:40 PM, 18 Jan 2023
    Всем привет. В clickhouse-client при отображении результатов select нельзя настроить пагинацию? Чтобы cli вёл себя как psql клиент при настройке переменных PAGER/PQL_PAGER
  • тогда где логика?
  • @612200930 #307674 01:41 PM, 18 Jan 2023
    v4 в v6 загнать можно а тото же адрес перегнать из формата V6 назад в формат v4 нет?
  • @a1ex_pol #307675 01:41 PM, 18 Jan 2023
    Добрый день. Подскажите, пожалуйста, по механизму действия ALTER TABLE MODIFY COLUMN, меняю кодек сжатия (устанавливаю) для одного из столбцов таблицы и не наблюдаю изменений в размере таблицы.
    Сжатие будет применяться только для новых данных таблицы?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
  • @a1ex_pol #307678 01:43 PM, 18 Jan 2023
    Спасибо!
  • Какая задача? Вы можете сделать это ручками при желании, разбейте на части и соберите обратно. Очевидно что в обратную сторону не любой ipv6 можно преобразовать.
  • ну через несколько других функций это понятно
  • @612200930 #307681 01:44 PM, 18 Jan 2023
    но в арсенале функций с IP явно нехватает такой функции
  • да , это очевидно, но как вернуть формат ::ffff:192.168.0.0 назад в 192.168.0.0 ?
  • @612200930 #307683 01:47 PM, 18 Jan 2023
    а также функция isIPv6String в таком случае даёт неожидаемый результат
  • https://t.me/clickhouse_ru
    казалось бы? вот например UInt64 можно загнать в UInt8, а с IP такая несправедливость
  • @612200930 #307685 01:53 PM, 18 Jan 2023
    как это связано с моим вопросом?
  • @vmakulov #307686 01:56 PM, 18 Jan 2023
    Походу с аналогиями совсем беда..
  • @vmakulov #307687 01:56 PM, 18 Jan 2023
    Любой ipv6 "поместится" в ipv4 ?
  • https://t.me/clickhouse_ru
    SELECT reinterpret(reverse(substr(IPv4ToIPv6(toIPv4('192.168.1.2')), 13, 4)), 'IPv4') AS x
    ┌─x───────────┐
    │ 192.168.1.2 │
    └─────────────┘
  • @612200930 #307689 01:58 PM, 18 Jan 2023
    это понятно что из любой ситуации можно найти как минимум 2 выхода
  • @612200930 #307690 01:59 PM, 18 Jan 2023
    например так toIPv4( replaceOne( ms_ip_v4, '::ffff:', '') )
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307667 #307692 02:00 PM, 18 Jan 2023
    Можно ip4 преобразовывать в ip6, и потом по определённому шаблону разделять адреса после получения ip6.
  • https://t.me/clickhouse_ru
    не понимаю что здесь непонятного.

    ipv6 16 байт, ipv4 4 байта, не уместить одно в другое в общем случае. Частный случай, когда ipv6 вдруг случайно можно переделать в ipv4 нахер не нужен был до вас, поэтому не реализован.
  • https://t.me/clickhouse_ru
    @5885025244 #307694 02:01 PM, 18 Jan 2023
    How are you
  • https://t.me/clickhouse_ru
    @ibnteo ↶ Reply to #307692 #307695 02:01 PM, 18 Jan 2023
    Получается что-то вроде ::ffff:127.0.0.1 на выходе.
  • @612200930 #307696 02:01 PM, 18 Jan 2023
    а что так грубо то?
  • @612200930 #307697 02:02 PM, 18 Jan 2023
    если вам нахер не нужен был, можно было не отвечать!!!
  • https://t.me/clickhouse_ru
    потому что я хам.
  • @612200930 #307699 02:02 PM, 18 Jan 2023
    мне очень жаль
  • https://t.me/clickhouse_ru
    @den_crane #307700 02:03 PM, 18 Jan 2023
    детская травма
  • @612200930 #307701 02:03 PM, 18 Jan 2023
    бывает
  • https://t.me/clickhouse_ru
    последняя версия в 22.8 это 22.8.12.45, попробуйте обновится

    когда падает посмотрите netstat -ant , возможно там куча незакрытых коннектов с определенного ip и возможно это не HTTP
  • https://t.me/clickhouse_ru
    сложно отловить, а тем более застать готового запускать netstat в этот момент живого девопса) а обновление уже запланировали, да, спасибо
  • https://t.me/clickhouse_ru
    это бага. К сожалению трудноуловимая.

    У вас сколько пользователей (примерно)? И каким пользователем вы даете грант на select для роли? default ?
  • спасибо, вы меня успокоили. я уже чуть с ума не сошёл, борясь с ней. для себя вывел, что можно жить с нерасширяемыми ролями.

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

    1 у вас пользователь U у него access_management=1 или у него with grant option?
    2 вы создали роль R
    3 вы создали пользователя u123 грантовали ему роль R
    4 теперь вы грантуете пользователем U таблицу T роли R
    5 и пользователь u123 не имеет прав на T
  • @fulgerx2007 #307711 04:44 PM, 18 Jan 2023
    Такой вопрос тем кто углубляться в MaterializedView.
    Он срабатывает на добавление данных в базы и обрабатывает только добавленные?
  • https://t.me/clickhouse_ru
    да
  • Спасибо
  • Когда срабатывает репликация то MaterializedView не тригерится?
  • https://t.me/clickhouse_ru
    не триггерится
  • Спасибо.
  • 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
  • 1. у него with grant option
    в остальном все верно. еще уточню. я до гранта роли R какому либо юзеру грантовал таблицу t1, и на неё доступ имеется у юзеров, которым даю роль. очень запутанное поведение.
  • https://t.me/clickhouse_ru
    @maksim_melnichuk #307723 08:54 PM, 18 Jan 2023
    Подскажите пожалуйста, как можно избавиться от дубликатов, например сделать отдельную таблицу и туда писать отслеживая основную, есть одинаковые поля, но поле created_at будет разное, в этом проблема, а группировать каждый раз занимает ресурсы и время выполнения всего запроса
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307723 #307724 08:59 PM, 18 Jan 2023
    А движок replacingMergeTree вам для табл не пойдет?
  • https://t.me/clickhouse_ru
    @lgtwb #307725 09:00 PM, 18 Jan 2023
    там задаете поле ORDER BY, несколько полей или tuple, и после этого дубликаты будут автоматически затираться, оставляя более свежие данные
  • @snevolin #307727 10:07 PM, 18 Jan 2023
    А по какой причине может не подставляться дефолтное значение для столбца? Делаю
    `createdAt` DateTime DEFAULT now(),
    При добавлении получаю 1970-01-01 00:00:00
    Таблица на движке ReplicatedMergeTree
  • https://t.me/clickhouse_ru
    если эту колонку вставлять в инсерте (null конвертнется в 1970 если колонка не nullable)
  • Да, тоже так думаю. Вставка идёт через nodejs библиотеку, там специальный метод для инсерта. Кто его знает, что он подставляет. Но да, скорее всего, тут проблема. Спасибо.
  • https://t.me/clickhouse_ru
    скорее всего можно сделать materialized

    createdAt materialized DEFAULT now()
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #307729 #307731 10:26 PM, 18 Jan 2023
    Покажите пожалуйста либу, я заинтересовался, что за либа с специальным методом на инсерт
  • Стандартная либа от команды clickhouse: https://clickhouse.com/docs/en/integrations/language-clients/nodejs/
    ClickHouse JS | ClickHouse Docs

    The official Node.js client for connecting to ClickHouse.

  • https://t.me/clickhouse_ru
    @lgtwb #307733 10:30 PM, 18 Jan 2023
    Жесть, я оказывается везде не ту либу юзал.
    https://www.npmjs.com/package/clickhouse
    npm: clickhouse

    Client for ClickHouse. Latest version: 2.6.0, last published: 4 months ago. Start using clickhouse in your project by running `npm i clickhouse`. There are 14 other projects in the npm registry using clickhouse.

  • https://t.me/clickhouse_ru
    @lgtwb #307734 10:31 PM, 18 Jan 2023
    А официальная https://www.npmjs.com/package/@clickhouse/client.
    Это второй факап с кликом. Первый - я выбрал не тот образ докера. Внимательнее надо быть, мда
    npm: @clickhouse/client

    Official JS client for ClickHouse DB. Latest version: 0.0.11, last published: a month ago. Start using @clickhouse/client in your project by running `npm i @clickhouse/client`. There are 3 other projects in the npm registry using @clickhouse/client.

  • https://t.me/clickhouse_ru
    @lgtwb #307735 10:32 PM, 18 Jan 2023
    ну бля теперь все переписывать
  • 19 January 2023 (291 messages)
  • https://t.me/clickhouse_ru
    привет, спасибо за гайд, эксперементирую с MV, наткнулся на проблему: если делать batch insert c одинаковыми записями MV перестает вообще работать, использую ReplicatedSummingMergeTree
  • https://t.me/clickhouse_ru
    Insert Deduplication / Insert idempotency

    Insert Deduplication / Insert idempotency , insert_deduplicate setting.

  • https://t.me/clickhouse_ru
    я понимаю что он дедуплицирует инсерты, при этом пишет 1 запись в исходную таблицу, но каунтер в MV перестает вообще работать
  • https://t.me/clickhouse_ru
    если исходная таблица replicated то онf задает дедупликацию, это регулируется параметром deduplicate_blocks_in_dependent_materialized_views, про это было в докладе

    https://kb.altinity.com/altinity-kb-schema-design/materialized-views/idempotent_inserts_mv/

    ну и в современном КХ можно использовать insert_deduplication_token
    Idempotent inserts into a materialized view

    How to make idempotent inserts into a materialized view".

  • https://t.me/clickhouse_ru
    да это стоит, кажется кластер развалился совсем отсюда и проблемы с mv, спасибо
  • https://t.me/clickhouse_ru
    @z0mb1ek #307742 03:54 AM, 19 Jan 2023
    то есть я правильно понимаю что в ReplicatedSummingMergeTree должен быть уникальный ключ чтобы прошла вставка? либо insert_deduplication_token
  • https://t.me/clickhouse_ru
    @zduissekov #307743 04:13 AM, 19 Jan 2023
    доброго времени дня
    подскажите пожалуйста почему то использование RAM стабильно растет (поднялось до 94%). 4го числа убрал метрики с прометея чтобы разгрузить машину
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @zduissekov #307745 04:13 AM, 19 Jan 2023
    в чем может быть причина?
  • https://t.me/clickhouse_ru
    @zduissekov #307746 04:14 AM, 19 Jan 2023
    кликхаус стоит в докере
  • https://t.me/clickhouse_ru
    @zduissekov #307747 04:14 AM, 19 Jan 2023
    интересно что там еще два таких но именно нагрузка на продовом докере
  • https://t.me/clickhouse_ru
    @zduissekov #307748 04:15 AM, 19 Jan 2023
    нагрузка неравномерная в течении дня, но вот загруженность озу растет равномерно независимо от времени дня
  • https://t.me/clickhouse_ru
    @konnectrl #307749 05:29 AM, 19 Jan 2023
    Какая версия ?
  • https://t.me/clickhouse_ru
    @konnectrl #307750 05:30 AM, 19 Jan 2023
    Кафка есть ?
  • https://t.me/clickhouse_ru
    @zduissekov #307751 05:41 AM, 19 Jan 2023
    кафка есть
  • https://t.me/clickhouse_ru
    версия22.6.5.22
  • https://t.me/clickhouse_ru
    @konnectrl #307753 05:47 AM, 19 Jan 2023
    Была такая проблема https://github.com/ClickHouse/ClickHouse/issues/36367
    When I use Kafka table: there might be a memory leak after upgrading to version 22.3.3 · Issue #36367 · ClickHouse/ClickHouse

    We use clickhosue version 21.12.2.17 before.It works well But we found that after upgrade to 22.3.3, the memory of clickhouse used grow up daily . I don't know if this is a memory overflow ...

  • https://t.me/clickhouse_ru
    Абстрактный пример дубликатов в таблице:
    user_id value created_at
    1 100 2022-12-14T12:36:12
    1 100 2022-12-14T12:36:13
    1 100 2022-12-14T12:36:14

    в данном примере каждый день записываются прошлые данные (я не могу влиять на логику этой записи), поле created_at всегда разное, т.к. пишется в разное время, нужно оставить только одну запись, я пробовал материализ. представление, которое следит за этой таблицей, но в неё тоже попадают дубликаты, если вставлять по одной записи. optimize table тоже не решение видимо, нужно гарантировать, что там не будет дубликатов в любое время
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307754 #307755 07:07 AM, 19 Jan 2023
    Какое-то количество дубликатов для RMT останется всегда. Об этом сказано в документации. Так задумано, и это не бага.
    Ваши варианты:
    - доагрегация при выборке (final или group by) - чуть медленне выборка, но это самый правильный и рекомендованный путь.
    - optimize, в том числе недавно появившийся автоматический, по количеству секунд назад в прошлое. Если данные меняются быстро и на большую глубину по времени, то будете грузить дисковую систему непрерывными мерджами. Если меняются только свежие строки (у вас вроде так), то терпимо, но учтите что менее указанной задержки дубликаты останутся.
    - дедубликация при инсертах. Смотрите в целевую таблицу, проверяете что там уже такое есть и не вставляете. Тормозит инсерты. Но если order by правильный, а блоки большие, то не так сильно.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bvt123 #307757 07:12 AM, 19 Jan 2023
    Статья на хабре чудовищная. Лучше пока не давать на нее ссылки, пока автор не исправит очевидные проблемы.
  • https://t.me/clickhouse_ru
    то есть нужно обновить версию Кликхаус? но у меня то версия по свежее
  • https://t.me/clickhouse_ru
    @zduissekov #307759 07:37 AM, 19 Jan 2023
    ситуация очень похожа
  • https://t.me/clickhouse_ru
    @zduissekov #307760 07:37 AM, 19 Jan 2023
    и кафка есть и рост медленный но стабильный
  • https://t.me/clickhouse_ru
    @zduissekov #307761 07:37 AM, 19 Jan 2023
    в RAM
  • https://t.me/clickhouse_ru
    final вроде не лучшее решение, так сказал в документации. Сейчас мне приходится работать с тем что дали, 20к записей уникальных среди 300к. Приходится делать подзапрос который группирует по набору уникальных полей, чтобы выполнить дедубликацию, а затем уже из нее выбирать
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307762 #307763 07:49 AM, 19 Jan 2023
    документация старая. final в последних версиях работает пристойно, особенно с do_not_merge_across_partitions_select_final и правильным партиционированием.

    Но согласен - лучше без final. Если запросы сами по себе требуют агрегации, то трюк с sign=-1 позволяет уйти от final совсем. Но этот -1 еще как-то надо сделать....

    20к записей уникальных среди 300к - это что-то странное. RMT вам должен удалить большую часть дубликатов, так что останется совсем немного.
  • https://t.me/clickhouse_ru
    Дак пофиксили только после выхода 22.8
  • https://t.me/clickhouse_ru
    @konnectrl #307765 07:55 AM, 19 Jan 2023
    Но так же и бэкпортили на старые версии
  • https://t.me/clickhouse_ru
    @zduissekov #307766 07:56 AM, 19 Jan 2023
    то есть есть смысл обновиться и надеятся что все будет хорошо?
  • https://t.me/clickhouse_ru
    @zduissekov #307767 07:56 AM, 19 Jan 2023
    просто я тоже обновился ранее и пожалел
  • https://t.me/clickhouse_ru
    @zduissekov #307768 07:56 AM, 19 Jan 2023
    )
  • https://t.me/clickhouse_ru
    @zduissekov #307769 07:56 AM, 19 Jan 2023
    так я обожаю клик очень помогает, вот и молюсь на него))
  • https://t.me/clickhouse_ru
    @konnectrl #307770 07:57 AM, 19 Jan 2023
    Я не могу вам сказать, нужно ли вам обновляться и что у вас за проблема, я просто вам сообщил информацию которую я знаю... О других memory leak я не знаю
  • https://t.me/clickhouse_ru
    @zduissekov #307771 07:59 AM, 19 Jan 2023
    спасибо вам Константин
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307766 #307772 08:11 AM, 19 Jan 2023
    Но в то же время 22.8 Денис не рекомендовал как минимум из-за нескольких серьёзных багов.

    https://t.me/clickhouse_ru/307261
    Denny [Altinity] in ClickHouse не тормозит

    не знаю, я лично наверное пропущу 22.8 и буду ставить через год 23.8 слишком много херни типа https://github.com/ClickHouse/ClickHouse/issues/44500 https://github.com/ClickHouse/ClickHouse/issues/43816 https://github.com/ClickHouse/ClickHouse/issues/43865

  • https://t.me/clickhouse_ru
    @zduissekov #307773 08:20 AM, 19 Jan 2023
    тогда вариант вернутся на старую версию
  • https://t.me/clickhouse_ru
    @zduissekov #307775 08:20 AM, 19 Jan 2023
    и дождаться другой
  • https://t.me/clickhouse_ru
    @zduissekov #307776 08:20 AM, 19 Jan 2023
    ?
  • https://t.me/clickhouse_ru
    @konnectrl #307777 08:25 AM, 19 Jan 2023
    Обновить свою версию до последней
  • https://t.me/clickhouse_ru
    @konnectrl #307778 08:25 AM, 19 Jan 2023
    Возможен ещё такой вариант
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307773 #307779 08:28 AM, 19 Jan 2023
    Можно откатиться, можно попробовать последнюю минорную своей версии, можно до 22.8 или 22.12 обновиться.
    Мы в итоге откатились.
  • https://t.me/clickhouse_ru
    @zduissekov #307780 08:38 AM, 19 Jan 2023
    а у вас какая если не секрет? кажется тут где то написано но я не увидел
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307780 #307781 08:47 AM, 19 Jan 2023
    21.11
    Обновлялись на 22.3, но там как раз с кафкой проблемы начались - в итоге вернулись назад. Сейчас думали на 22.8 обновляться, но там проблемы с Map, которые мы тоже используем.
  • https://t.me/clickhouse_ru
    @zduissekov #307782 08:52 AM, 19 Jan 2023
    вы имели ввиду 22.11.3.47-stable да?
  • https://t.me/clickhouse_ru
    @zduissekov #307783 08:52 AM, 19 Jan 2023
    а там вам тоже что то не устраивает?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307782 #307784 08:58 AM, 19 Jan 2023
    21.11.11.1-stable
    она потребляет больше ресурсов, чем 22.3
    есть проблемы с оконками, решённые в той же 22.3
    порой ловим баг с зависанием при отмене запроса, решённый в 22.8
    нет пары новых нужных фич
  • https://t.me/clickhouse_ru
    @fimcho #307785 08:58 AM, 19 Jan 2023
    Привет всем! Подскажите можно ли взять часть данных из таблицы и изменить в них какую-то часть и добавить измененную копию? пример: есть несколько колонок, одна из которых дата, вытащить данные за определенное число, изменить дату и вернуть обратно.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307785 #307786 09:00 AM, 19 Jan 2023
    insert into yourtable(...)
    select ... from yourtable where ...
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #307786 #307787 09:01 AM, 19 Jan 2023
    спасибо
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #307788 09:01 AM, 19 Jan 2023
    Привет!
    Подскажите, пожалуйста, делаю вставку в csv примерно так:
    cat test.csv |clickhouse-client --format_csv_allow_double_quotes=0 -q 'insert into csv format CSV'

    в test.csv ровно те же столбцы, что и в таблице csv
    а как сделать так, чтобы в ьаблицу csv писалось время вставки?
    пробовал сделать столбец _time, в который пистаь now() - логично, что ошибка, тк к-во столбцов то разное теперь
    мат.вью - это по сути же будет копия основной таблицы +столбец? как-то очень нерационально использовать место (в день порядка 5млрд записей)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #307788 #307790 09:09 AM, 19 Jan 2023
    попробуйте сделать столбец _time DateTime materialized now()
  • https://t.me/clickhouse_ru
    @cmbcksrl #307791 09:10 AM, 19 Jan 2023
    всем привет
    есть словарь, у которого источник - вьюшка типа
    SELECT <поле_ключ>, <поле_значение>
    FROM <таблица_словаря> FINAL

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

    в 2 словах опишу ситуацию:
    был запрос, в котором используется фильтрация типа WHERE <поле> IN (SELECT <поле_ключ> FROM <таблица словаря> WHERE <поле_значение> = <какое-то число>

    вложенный запрос в этом фильтре точно смог достать ключ из нужной мне строки, но потом я к этому ключу применил dictGetOrDefault(<словарь>, <значение>, <ключ>, <ключ>) и найти эту строку в словаре не удалось, т.к. в результате была строка, где был именно ключ

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

    подскажите, мб это баг какой-то?
    версия клика 21.2.9.41
  • https://t.me/clickhouse_ru
    а разве это insert into подходит для пакетной загрузки из csv?
  • https://t.me/clickhouse_ru
    а какая разница? вы же обычный SQL запрос пишете после ключа -q
  • https://t.me/clickhouse_ru
    Insert Local Files | ClickHouse Docs

    You can use clickhouse-client to stream local files into your ClickHouse service. This allows you the ability to preprocess

  • https://t.me/clickhouse_ru
    @m1khal3v #307795 09:12 AM, 19 Jan 2023
    здесь описано как перед инсертом сделать селект из вашей CSV
  • https://t.me/clickhouse_ru
    как варианет - у вас данные в таблице оказались раньше чем обновился словарь
  • https://t.me/clickhouse_ru
    @m1khal3v #307797 09:12 AM, 19 Jan 2023
    в том числе now() as inserted_at
  • https://t.me/clickhouse_ru
    так а разве словарь не обновляется у меня при вызове? там ведь вьюшка с FINAL
  • https://t.me/clickhouse_ru
    у словаря есть TTL
  • https://t.me/clickhouse_ru
    @m1khal3v #307800 09:13 AM, 19 Jan 2023
    он не обновляется при каждом вызове
  • https://t.me/clickhouse_ru
    @m1khal3v #307801 09:14 AM, 19 Jan 2023
    Dictionary Updates | ClickHouse Docs

    ClickHouse periodically updates the dictionaries. The update interval for fully downloaded dictionaries and the invalidation interval for cached dictionaries are defined in the lifetime tag in seconds.

  • https://t.me/clickhouse_ru
    @cmbcksrl #307802 09:15 AM, 19 Jan 2023
    таак, пойду, значит, перечитывать доку
    я почему-то думал, что если у меня источник вьюшка, то у меня обновление при вызове
    спасибо
  • https://t.me/clickhouse_ru
    а, те получаетс к потоку из CSV можно обратиться как
    FROM input('id UInt32, type String, author String, timestamp DateTime, comment String, children Array(UInt32)')
    ?
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #307804 09:16 AM, 19 Jan 2023
    ну, поля из примера
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @Vitaly_Vaskovich #307806 09:17 AM, 19 Jan 2023
    супер, моё решение
    спасибо большое
  • https://t.me/clickhouse_ru
    @5885025244 #307807 09:18 AM, 19 Jan 2023
    I hope to find someone I love in the new year.🥰🥰
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @timofei_melnikov #307809 09:21 AM, 19 Jan 2023
    В таком случае эти сетинги будут использоваться для обоих подключений?
    INSERT INTO table SELECT * FROM remoteSecure(table…)
    SETTINGS receive_timeout=10000, send_timeout=10000, connect_timeout=10000
  • https://t.me/clickhouse_ru
    да, да, спасибо!
    чуть выше уже посоветовали подобное решение
    не знал про input (((
  • https://t.me/clickhouse_ru
    если бы это было так, то смысла в словаре никакого не было бы =)
  • https://t.me/clickhouse_ru
    @cmbcksrl #307812 09:30 AM, 19 Jan 2023
    да, ошибку свою признаю
    спасибо большое за помощь
  • https://t.me/clickhouse_ru
    ну есть ещё тип словаря direct, это что-то около этой темы
  • https://t.me/clickhouse_ru
    ну директ это всё таки не про то когда источник это соседняя таблица внутри кх
  • https://t.me/clickhouse_ru
    в том числе такой вариант возможен. если данных очень много и их невозможно поместить в память, но ключ сортировки позволяет эффективно ходить точечно, то почему нет
  • https://t.me/clickhouse_ru
    а директ он полностью источник читает в момент вызова или достает только те строки, которые равны ключу? Просто фраза "взаимодействует с источником непосредственно в момент запроса." немного размыто объясняет принцип
  • https://t.me/clickhouse_ru
    @cmbcksrl #307817 09:43 AM, 19 Jan 2023
    я к тому, что гранулярность индекса источника будет ли влиять на расход памяти и скорость запроса при вызове таких словарей?
  • https://t.me/clickhouse_ru
    полностью не читает, всё как в обычном селекте по идентификатору
  • https://t.me/clickhouse_ru
    @cmbcksrl #307820 09:52 AM, 19 Jan 2023
    ага понял, спасибо большое
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307785 #307821 09:52 AM, 19 Jan 2023
    Это называется update. Если это разовая ручная операция (а не постоянный процесс), то не вижу повода не воспользоваться alter table update.
  • https://t.me/clickhouse_ru
    @fimcho ↶ Reply to #307821 #307822 09:56 AM, 19 Jan 2023
    нужно исходные данные тоже сохранить
  • https://t.me/clickhouse_ru
    INSERT SELECT
  • https://t.me/clickhouse_ru
    @m1khal3v #307824 10:02 AM, 19 Jan 2023
    INSERT t1 SELECT '2023-01-01' as date, some_data FROM t2 tbl WHERE tbl.date = '2023-01-02' только вероятно будут проблемы с алиасом - тогда нужно будет обренуть всё в селект ещё один
  • @aoparin #307825 10:04 AM, 19 Jan 2023
    коллеги, приветствую.
    Есть таблица с Nested структурой с двумя уровнями вложенности. Используется для экономии места. В селекте разворачиваю двумя array join. К результату разворачивания применяю оконные функции (ищу изменения в записях на втором уровне вложенности). На тестовых наборах всё отрабатывало нормально. Но как стал запрос применять к порядка 100+ млн записей в результатах оконных функций появились ошибки. Как будто не находит соседнюю строку, при её наличии. Вместо over попробовал neighbor, такие же проблемы, но в других строках. Причём ошибки перемещаются от одних строк к другим, если я изменяю условие в where не влияющее на конечный результат.

    Версия КХ 22.12.3.5

    Какие могут быть особенности у оконных функций, которые надо учитывать, чтобы избегать подобных ошибок? Что можно посмотреть/проверить, чтобы найти проблему?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307825 #307826 10:11 AM, 19 Jan 2023
    neighbor использовать нельзя - он не уважает блоки. Для отладки можно порождать дополнительные уровни подзапросов и смотреть что там получается. Особенно отделять group by. Ну и вобще вы хоть бы запрос показали на fiddle.
  • https://t.me/clickhouse_ru
    если этот запрос не на постоянку то можно SETTINGS max_block_size = -1 использовать, тогда с большой долей вероятности neighbor отдаст вам то что вы хотите увидеть
  • На небольшом количестве данных отрабатывает без ошибок. Выделение на подзапросы проблему не решают. neighbor стал пробовать, когда перешёл на engine=memory. Не подумал, что там будет с блоками подстава. Если я в подзапрос выношу получение и сортировку данных, то во внешнем селекте тоже будет проявлятся неуважение к блокам? Например,
    select
    timestamp,
    field,
    neighbor(field, 1)
    from
    ( select timestamp, field from mytable order by timestamp)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307822 #307830 10:20 AM, 19 Jan 2023
    тогда почти так как предлагали. Но можно лучше:
    INSERT INTO t SELECT * REPLACE(i + 1 AS i) from t;
  • @aoparin #307831 10:20 AM, 19 Jan 2023
    попробую в фидлере собрать пример, нужно время это организовать.
  • не на постоянку это как должно проявляться? для регулярных предварительных расчётов подойдёт? какие есть негативные моменты от использования этой настройки?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307829 #307833 10:22 AM, 19 Jan 2023
    запускайте это в clickhouse-client. Там хорошо видно что такое блок и какие они бывают. Запрос обрабатывается в несколько потоков. У вас нет последовательной простыни данных таблицы, каждый поток работает сам. neighbor на краях блока дает неверный результат - он не видит данные другого блока.
  • https://t.me/clickhouse_ru
    @ea_kozlov #307834 10:23 AM, 19 Jan 2023
    Всем привет. Стоит такая задача
    Есть топик на 12 партиций
    Кластер на 6 машин

    Как лучше организовать чтение из топика?
    - сделать на каждой машине 2 kafka table с дефолтными настройками + 2 mat view для переноса данных
    - сделать 1 mat view + 1 kafka table с настройкамий kafka_num_consumers = 2 и kafka_thread_per_consumer = 1

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

    Кто чем пользовался, поделитесь)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307834 #307835 10:26 AM, 19 Jan 2023
    делайте вар2 где всего по одному :) И не надо увеличивать количество kafka_num_consumers пока не поймете что тормозит.
    И вам надо почитать немного про кафку, что такое перебалансировка партиций в консьюмере.
  • Борис, прошу прощения, на что в clickhouse-client нужно обращать внимание, чтобы видеть про блоки? Я в нём и запускаю и вижу только бегущую полоску прогресса и меняющиеся цифры количества строк и мегабайт. Может быть есть где-то описание про работу с clickhouse-client чуть более подробное, чем документация?
    Применимо ли ограничение с блоками для оконной функции over() ? Я с ней точно с такой же проблемой столкнулся и к neighbor пошёл только в надежде найти решение...
  • https://t.me/clickhouse_ru
    Спасибо! Про кафку в курсе, был скорее вопрос как лучше в кластере организовать вычитку. Сделал сначала первый вариант, но почитав доку подумал что используя настроки может получиться гибче и не плодить лишние сущности)
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307832 #307838 10:29 AM, 19 Jan 2023
    не пользовался таким трюком, но если двигаться в ту сторону, то можно попробовать max_threads=1 Будет работать в один поток и тормозить.
  • ага, попробую и это тоже, спасибо. на самом деле, у меня с большим количеством субселектов иногда получалось по всей видимости к одному треду и прийти
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307836 #307840 10:33 AM, 19 Jan 2023
    в clickhouse-client если делать обычный select видны блоки. люди часто удивляются.

    но вы так и не показали даже кусочка своего запроса. вы точно там используете lagInFrame() over (rows order by some BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ?
  • Это блоки из нативного протокола, то, что они соответствуют партам в таблице - "случайное" совпадение.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307837 #307842 10:39 AM, 19 Jan 2023
    Я просто не понимаю откуда мог взяться ваш вариант с двумя MV, отдельно на каждую партицию. Тут все делают специально количество партиций сильно больше чем количество узлов кластера для более равномерной перебалансировке при выпадениях отдельных узлов. В вашем случае можно и 30 партиций сделать. Когда один узел выпадет, то распределятся ровненько по 6 партиций на узел.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307841 #307843 10:40 AM, 19 Jan 2023
    угу. но доходчивое. просто чтобы помнить про многопоточность. я как раз про это хотел сказать.
  • а, что вывод не в одну "таблицу", а в несколько "таблиц". понятно, да, это вижу и как раз представлял себе параллельные треды, а не блоки данных.
    в запросе точно используется
    leadInFrame(qty) OVER (PARTITION BY product_id, category_id, subcategory_id ORDER BY event_date ASC ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) as next_qty
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307844 #307845 10:46 AM, 19 Jan 2023
    я так никогда не делал - AND 1 FOLLOWING, может оно и работает, но в доке написано:
    use lagInFrame/leadInFrame, which are analogous, but respect the window frame. To get behavior identical to lag/lead, use rows between unbounded preceding and unbounded following
  • ага, забыл про это, ведь читал же 😳 попробую с этим поиграть.
    спасибо огромное!
  • @s4851 #307847 11:09 AM, 19 Jan 2023
    Добрый день!
    Если не сложно подскажите почему не работает фильтрация на IN есть массив получен из запроса в CTE
    https://fiddle.clickhouse.com/75e86d69-a65d-41d8-9424-6919f0b0125b

    Received exception from server (version 22.12.3):
    Code: 130. DB::Exception: Received from localhost:9000. DB::Exception: Array does not start with '[' character: while executing 'FUNCTION in(name : 0, users_arr :: 1) -> in(name, users_arr) UInt8 : 2'. (CANNOT_READ_ARRAY_FROM_TEXT)
    (query: with
    (select groupArray(name ) from users) as users_arr
    select name from users where name in (users_arr);)
  • https://t.me/clickhouse_ru
    @ionite ↶ Reply to #307847 #307848 11:10 AM, 19 Jan 2023
    Потому что для проверки вхождения в массив нужно использовать функцию has
  • @s4851 ↶ Reply to #307848 #307849 11:11 AM, 19 Jan 2023
    Спасибо!
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307847 #307850 11:18 AM, 19 Jan 2023
    ответ про has по сути верный, однако само решение получается ужасное - это будет тормозить. Правильно так:
    select name from users where name in (select name from users) ;
    если угодно с CTE, то так:
    with u as (select name from users) select * from users where name not in u;
  • https://t.me/clickhouse_ru
    @148363699 #307851 11:19 AM, 19 Jan 2023
    Добрый день! А какой самый простой способ добавить новую колонку с данными? У меня условно есть таблица, где для каждой строки по ключу понятно какое значение проставить.

    Я хочу добавить это значение для каждой исторической строки. И при этом эта колонка не описывается SQL функциями (т.е. совсем новое значение :))
  • https://t.me/clickhouse_ru
  • @s4851 ↶ Reply to #307850 #307853 11:22 AM, 19 Jan 2023
    У меня было желание материализовать массив, так как предполагается его использовать более одного раза запросе, поэтому вынес его именно таким образом
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307853 #307854 11:23 AM, 19 Jan 2023
    зависит от размера. Если 100-1000 и может 10000, то OK, но если 1М, то нет.
  • @s4851 ↶ Reply to #307854 #307855 11:24 AM, 19 Jan 2023
    Да понимаю, там предполагается не более нескольких тысяч в массиве
  • @7699150 #307856 11:29 AM, 19 Jan 2023
    Всем привет!
    Подскажите пожалуйста, я же правильно понимаю что после удаления реплицированной таблички с приставкой ON CLUSTER также должна удалиться запись из Zookeeper?
  • https://t.me/clickhouse_ru
    есть таймлаг
  • https://t.me/clickhouse_ru
    @m1khal3v #307858 11:31 AM, 19 Jan 2023
    если принципиально без таймлага то можно использовать {uuid} в пути, но это не очень хороший вариант, потому что это добавляет головной боли при нештатных ситуациях
  • я как раз uuid и стал использовать, когда перешли на Atomic
  • https://t.me/clickhouse_ru
    @m1khal3v #307860 11:33 AM, 19 Jan 2023
    ну касательно удаления записи из зукипера и так и так будет таймлаг, просто c uuid можно сражу же пересоздать такую же таблицу
  • https://t.me/clickhouse_ru
    @m1khal3v #307861 11:33 AM, 19 Jan 2023
    т.к логично пути будут разные
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @Luck1ess #307866 12:08 PM, 19 Jan 2023
    Всем привет, а кто-нибудь работал с кликом из спарка? Как правильно прокинуть параметр на повышение таймаута с сокетов?
  • @andrew_zol #307868 12:24 PM, 19 Jan 2023
    всем привет! У меня есть таблица на движке PostgreSQL и мне надо изменить пользователя postgres. Есть ли для этого какой-то синтаксис (без drop table и потом create table с новым паролем)?
  • https://t.me/clickhouse_ru
    @ea_kozlov #307869 12:32 PM, 19 Jan 2023
    А есть какие то готовые альтернативы clickhouse-client? 755мб тащить в docker image не вариант, чем пользуетесь вы?)

    root@38dae7413e2b:/# apt-get install --no-install-recommends clickhouse-client
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following additional packages will be installed:
    clickhouse-common-static
    Suggested packages:
    clickhouse-common-static-dbg
    The following NEW packages will be installed:
    clickhouse-client clickhouse-common-static
    0 upgraded, 2 newly installed, 0 to remove and 55 not upgraded.
    Need to get 265 MB of archives.
    After this operation, 755 MB of additional disk space will be used.
    Do you want to continue? [Y/n]
  • https://t.me/clickhouse_ru
    Ну потому что есть только один бинарник Clickhouse. Других альтернатив нету
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307869 #307871 12:35 PM, 19 Jan 2023
    755мб - это много? Там вобще все - сервер, keeper, и еще пяток инструментов. Если вы ставите докер на телефон, то возьмите curl или любой его аналог - все что надо можно делать по http
  • изначально создавать так, чтобы реквизиты из макросов брались, а не были захардкожены в декларации таблицы.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Реализация по HTTP не удобна тем что нельзя отправить несколько запросов за раз, хотел это обойти использованием CLI инструмента.

    Но видимо придется все таки через нее, всем спасибо)
  • https://t.me/clickhouse_ru
    а поч через треды нельзя отправить?
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307874 #307876 12:42 PM, 19 Jan 2023
    если в вашем коде не используется ';' то разделить текст на отдельные sql при помощи bash очень просто. Немного bash программирования и вы экономите 600мб.
  • https://t.me/clickhouse_ru
    имел в виду прям прочитать файл в переменную, в файле несколько запросов через; и отправить их все вместе клику)

    Чтобы не делать никакого баш программирования)
  • https://t.me/clickhouse_ru
    Можете чуть подробнее поделиться идеей? Допустим у меня файл с 2мя запросами и каждый запрос занимает более 1 строки. Если не будет условной точки с запятой то я ведь не смогу сделать split(";") (то что мне в голову пришло) и разделить файл на 2 части
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307878 #307879 12:51 PM, 19 Jan 2023
    конечно же нужна ; между sql, но ее не должно быть внутри строк, чтобы все не спуталось. Парсинг через разделитель в bash делается через IFS
  • https://t.me/clickhouse_ru
    спасибо большое, почитаю)
  • https://t.me/clickhouse_ru
    @m1khal3v #307881 12:53 PM, 19 Jan 2023
    можно в одну строку в принципе

    echo $(echo "SELECT 1;SELECT 2" | cut -d ";" -f 1)
    SELECT 1
    echo $(echo "SELECT 1;SELECT 2" | cut -d ";" -f 2)
    SELECT 2
  • https://t.me/clickhouse_ru
    @m1khal3v #307882 12:55 PM, 19 Jan 2023
    это конечно не оптимально но если цель в скрипты не запихивать логику то почему нет
  • https://t.me/clickhouse_ru
    Спасибо!
  • спасибо!
  • https://t.me/clickhouse_ru
    @ph1lipp #307886 01:22 PM, 19 Jan 2023
    select range(
    (select cast(min(id),'Nullable(Int32)') from transactions where env = 'prod'),
    (select cast(min(id),'Nullable(Int32)') from transactions where env = 'prod')
    );

    Code: 43. DB::Exception: Illegal type Int32 of argument of function range: While processing range(_CAST(49968097, 'Nullable(Int32)') AS _subquery411188, _CAST(49968097, 'Nullable(Int32)') AS _subquery411189). (ILLEGAL_TYPE_OF_ARGUMENT) (version 22.1.3.7 (official build))
  • https://t.me/clickhouse_ru
    @ph1lipp #307887 01:23 PM, 19 Jan 2023
    Supported types: Int32, illegal type Int32
  • @newoks #307888 01:25 PM, 19 Jan 2023
    Всем привет! Подскажите, пожалуйста, как включить настройку "stream_like_engine_allow_direct_select", нужно создать таблицу, которая считывает данные из очереди RabbitMQ.

    Сейчас при попытке это сделать, появляется следующая ошибка:
    Direct select is not allowed. To enable use setting "stream_like_engine_allow_direct_select"
  • https://t.me/clickhouse_ru
    @MakeReady #307889 01:35 PM, 19 Jan 2023
    Добрый день!
    есть таблица событий
    t1 (id,date)
    итаблица событй1
    t1 (id,date)
    как событиям t1 приклеить события ближайшее более раннее событие t2

    например
    1, 2022-01-03
    2, 2022-01-05

    1, 2022-01-03
    2, 2022-01-03
    2, 2022-01-04

    Должнол дать
    1, 2022-01-03, 1, 2022-01-01
    2, 2022–01-05, 2, 2022-01-04
  • https://t.me/clickhouse_ru
    @MakeReady #307890 01:36 PM, 19 Jan 2023
    ON t1.id = t2.id and t1.date=t2.date
    даст только одну запись
    t1.date >=t2.date даст три записи
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #307891 01:40 PM, 19 Jan 2023
    Добрый день!
    Подскажите, пытаюсь подключить s3 через КХ, в s3 json записи, одно из полей такое: "timestamp": "2022-12-29T06:27:38Z"
    Подключаю таблицу как 'JSONEachRow' поле с типом timestamp DateTime, в настройках базы выставлено date_time_input_format='best_effort' как и подставлено в SELECT запрос, но все равно ошибка, что КХ не может распарсить поле:
    Code: 27. DB::ParsingException: Cannot parse input: expected '"' before: 'Z","tra ta ta': (while reading the value of key timestamp): While executing JSONEachRowRowInputFormat: While executing S3: (in file/uri <file>): (at row 1)
    . (CANNOT_PARSE_INPUT_ASSERTION_FAILED) (version 22.8.12.45 (official build))
    Есть идеи, как это можно победить?
  • https://t.me/clickhouse_ru
    Asof join
  • https://t.me/clickhouse_ru
    @MakeReady #307893 01:44 PM, 19 Jan 2023
    так я получу три записи ибо по >=проудут обе из второй таблицы
  • https://t.me/clickhouse_ru
    Вы проверили?
  • https://t.me/clickhouse_ru
    @MakeReady #307895 01:45 PM, 19 Jan 2023
    в СУБД в которых можно прокидывать значение в подзапрос кинул бы просто дату внутрь подзапроса и взял бы max
  • https://t.me/clickhouse_ru
    сейчас сделаю
  • https://t.me/clickhouse_ru
    хм, работает, спасибо!
  • https://t.me/clickhouse_ru
    Int32 и Nullable(Int32) это разные вещи
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ph1lipp #307900 01:53 PM, 19 Jan 2023
    функция сама пытается в нуллабл сконвертить
  • https://t.me/clickhouse_ru
    @m1khal3v #307901 01:55 PM, 19 Jan 2023
    потому что SELECT априори может вернуть отсутствие каких либо значений
  • https://t.me/clickhouse_ru
    @m1khal3v #307902 01:56 PM, 19 Jan 2023
    оберните ваши селекты в COALESCE((select ...), 0)
  • https://t.me/clickhouse_ru
    @ph1lipp #307903 01:57 PM, 19 Jan 2023
    select range(
    coalesce((select min(id) from transactions where env = 'prod'),0),
    coalesce((select min(id) from transactions where env = 'prod'),0)
    );

    Code: 43. DB::Exception: Illegal type Int32 of argument of function range: While processing range(coalesce(_CAST(49968097, 'Nullable(Int32)') AS _subquery413211, 0), coalesce(_CAST(49968097, 'Nullable(Int32)') AS _subquery413212, 0)). (ILLEGAL_TYPE_OF_ARGUMENT) (version 22.1.3.7 (official build))
  • https://t.me/clickhouse_ru
    это странно
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @ph1lipp #307907 02:01 PM, 19 Jan 2023
    у меня int32 они. thx anyway
  • @Chizh1979 #307908 02:03 PM, 19 Jan 2023
    Коллеги, возможен ли CamelCase в названиях таблиц и колонок? Какие проблемы или неудобства?
    Никогда такой ерундой не занимался, а тут химические элементы подъехали и в lowercase выглядят убого
  • https://t.me/clickhouse_ru
    да ничего особого вроде не всплывало у нас, правда у нас этих таблиц/колонок по пальцам пересчитать можно
  • @Chizh1979 #307911 02:12 PM, 19 Jan 2023
    Спасибо. Кавычки нужны при обращении?
  • https://t.me/clickhouse_ru
    это реально воспроизводится и на последних версиях
  • https://t.me/clickhouse_ru
    @m1khal3v #307913 02:17 PM, 19 Jan 2023
    если у вас там отрицательного id нет то сделайте toUInt32
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @m1khal3v #307915 02:17 PM, 19 Jan 2023
    как тут
  • https://t.me/clickhouse_ru
    пасиба, попробую

    UPD: работает. кайф.
  • @newoks #307917 02:25 PM, 19 Jan 2023
    Всем привет! Подскажите, пожалуйста, как включить настройку "stream_like_engine_allow_direct_select", нужно создать таблицу, которая считывает данные из очереди RabbitMQ.

    Сейчас при попытке это сделать, появляется следующая ошибка:
    Direct select is not allowed. To enable use setting "stream_like_engine_allow_direct_select"
  • Так вы пытаетесь читать непосредственно из очереди, а не из таблицы, в которую бы складывались данные из неё.
  • @2070273164 #307919 02:33 PM, 19 Jan 2023
    Схема такая StreamLikeEngineTable -> MaterializedView ->MergeTreeFamilyTable, делать выборки только из последней
  • https://t.me/clickhouse_ru
    нет
  • @s4851 #307921 02:36 PM, 19 Jan 2023
    Добрый день!
    Подскажите, а можно за один проход из таблички где есть
    товар/номер заказа/сумма по строке

    получить табличку сгруппированную следующим образом
    Товар/Сумма по всем продажам товара/ сумма заказа(Полная сумма заказа)где этот товар участвовал
    ?

    https://fiddle.clickhouse.com/7d7e0226-0039-4f59-8edd-c35a14205866
  • https://t.me/clickhouse_ru
    Сам спросил, сам отвечаю: date_time_input_format надо было прописывать в настройках при создании таблицы... 🤦‍♂️
  • https://t.me/clickhouse_ru
    SET stream_like_engine_allow_direct_select = 1
  • https://t.me/clickhouse_ru
    @critskiy #307924 02:45 PM, 19 Jan 2023
    Здравствуйте, хочу уточнить насчет следующего кейса свою гипотезу: была пересобрана машина для нод одного кластера, мной было настроено все по типу указанного метода в altinity, и на машине пересобранной clickhouse-server запущен, но происходит восстановление всех реплицированных таблиц. При этом я не могу войти в clickhouse-client. Правильно ли я понимаю, что доступа к КХ не будет пока не восстановятся реплицированные таблицы?
    ZooKeeper Recovery

    How to recover when Zookeeper has issues.

  • https://t.me/clickhouse_ru
    Посмотрите, что в логах кх происходит
  • https://t.me/clickhouse_ru
    Работа с реплицированными таблицами, мерж и fetch операции по таблицам, ошибок нет никаких, видно, что КХ производит pull записей в очередь, и работает с партами.
    Т.е. то, что clickhouse-client не поднимается пока не восстановит все данные реплицированных таблиц - это нормально?
    Или стоит помимо остановленных скриптов, например, останавливать запись со всех сервисов (мы не отключили некоторые сервисы, но отключили скрипты, так как во время экспериментов обнаружили, что ch зависает в случае отключенной ноды только на операциях drop и truncate,а с сервисов мы пишем в буферные таблицы) в идеале чтобы восстановилась вся репликация более быстрее?
  • https://t.me/clickhouse_ru
    не совсем понимаю, как у вас тут поле order трактуется
    вот эта строка, например
    INSERT INTO sales VALUES (2, '001', 10);
  • https://t.me/clickhouse_ru
    @cmbcksrl #307928 03:01 PM, 19 Jan 2023
    ааа, все понял...
  • @s4851 ↶ Reply to #307927 #307929 03:04 PM, 19 Jan 2023
    Номер заказа, общий на несколько строк товара )
  • https://t.me/clickhouse_ru
    @cmbcksrl #307930 03:04 PM, 19 Jan 2023
    да, разобрался)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Да нет, восстановления всех данных он ЕМНИП ждать не должен, но инициализация таблиц может занимать действительно +- заметное время (минут 10)
  • https://t.me/clickhouse_ru
    Сервис сейчас три часа активен, но доступа с clickhouse-client нет
  • https://t.me/clickhouse_ru
    Ну скиньте файлом 1000 последних строк
  • https://t.me/clickhouse_ru
    @unamedrus #307935 03:11 PM, 19 Jan 2023
    лога
  • https://t.me/clickhouse_ru
    ммммм, не могу)
  • https://t.me/clickhouse_ru
    ШТОШ, тогда держим за вас кулачки тогда
  • https://t.me/clickhouse_ru
    в последних 1000 строках было видно, что между операциями восстановления работают и сервисы, которые пишут в реплику первой ноды, и данные сразу же отсылаются на вторую
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #307941 03:15 PM, 19 Jan 2023
    есть ли у ASOF подводные камни приводящие вот к такому?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Хмм, если кх поднял порт 9000 и 8123 то он должен давать подключения к себе
  • https://t.me/clickhouse_ru
    @MakeReady #307944 03:16 PM, 19 Jan 2023
    и похоже внутри тоже ряд условий игнорируется (в используемых вьюшках)
  • https://t.me/clickhouse_ru
    @cmbcksrl #307945 03:18 PM, 19 Jan 2023
    всм
    у вас в фильтре is null, вы и получаете строки с null или что на скриншоте не так ведет себя?
  • https://t.me/clickhouse_ru
    @MakeReady #307946 03:19 PM, 19 Jan 2023
    точно, косяк
  • https://t.me/clickhouse_ru
    @unamedrus #307947 03:19 PM, 19 Jan 2023
    Отдельная история, что dbeaver и другие ide довольно фривольно интерпретируют вывод кх, поэтому желательно перепроверять их через clickhouse-client или еще что
  • https://t.me/clickhouse_ru
    хмм, приеду проверю, но предполагаю что там будет ошибка Connection refused.
  • https://t.me/clickhouse_ru
    там на деле история клубже
    на нул это я сделал проверку чтобы вывести как раз то чего не должно быть, так как оно отфильтровывается глубже
  • @s4851 ↶ Reply to #307939 #307951 03:22 PM, 19 Jan 2023
    Вроде похоже, но пока с телефона
    Спасибо!
  • https://t.me/clickhouse_ru
    @MakeReady #307952 03:23 PM, 19 Jan 2023
    например вот
    данные по идентификатору есть
  • https://t.me/clickhouse_ru
    @MakeReady #307953 03:23 PM, 19 Jan 2023
    но если взять отдельно вьюшку к которой клеются данные то их нет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cmbcksrl #307955 03:28 PM, 19 Jan 2023
    интересное кино, а данные тогда откуда?
    я про строчки с user_id, loyalty_id и account_id

    а если ASOF JOIN заменить на простой INNER и убрать условие связи с неравенством, то данных же не должно по идее быть
  • https://t.me/clickhouse_ru
    так это ,оконка sum(amount) OVER (PARTITION BY order_number)
  • https://t.me/clickhouse_ru
    именно, очень интересно как так
    там конечно матрешка запросов и есть повторное использование и таблиц и вьюшек
  • https://t.me/clickhouse_ru
    отказ от ASOF странность не убирает
  • https://t.me/clickhouse_ru
    @MakeReady #307959 03:34 PM, 19 Jan 2023
    напрямую во вьюшке такого идентификатора нет, а если вьюшку соединить с нею же но с дополнительной оконкой, то оно появляется
  • https://t.me/clickhouse_ru
    @MakeReady #307960 03:38 PM, 19 Jan 2023
    карты которые всплывают отфильтровываются тут
    SELECT
    card_id,
    toDate(date) AS transaction_date_m,
    sum(sum) AS manzana_amount,
    count(sum) AS manzana_cnt
    FROM db1.turnover_manzana_last_v
    JOIN
    (
    SELECT tv.loyalty_id, min(tv.created_at) AS dt
    FROM tv
    GROUP BY tv.loyalty_id
    ) AS tv ON tv.loyalty_id = card_id
    WHERE tv.dt <= transaction_date_m
    GROUP BY
    card_id,
    transaction_date_m
  • https://t.me/clickhouse_ru
    то есть если вы тут ставите INNER JOIN с этим фильтром, то у вас фильтр как будто бы также не выполняется, правильно понимаю?
  • https://t.me/clickhouse_ru
    @MakeReady #307962 03:40 PM, 19 Jan 2023
    то есть если кратко, есть запрос
    with запрос по картам
    запрос по транзакциям 1
    запрос по другим транзакциям с фильтром на транзакции 1

    запрос объединяющий три из with

    это тело вьюшки
    далее беру эту вьюшку и запрос с оконкой по ней же
    и оппа, выблывают транзакции которые фильтровались в третьем with
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @MakeReady #307964 03:40 PM, 19 Jan 2023
    исключение ASOF не помогает
  • https://t.me/clickhouse_ru
    @cmbcksrl #307965 03:42 PM, 19 Jan 2023
    а если алиас таблицы добавить?
  • https://t.me/clickhouse_ru
    @cmbcksrl #307966 03:42 PM, 19 Jan 2023
    ну подзапроса
  • https://t.me/clickhouse_ru
    обманул, INNER убирает фантомов
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @cmbcksrl #307969 03:43 PM, 19 Jan 2023
    а ну значит ASOF JOIN их порождает)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #307972 03:44 PM, 19 Jan 2023
    при LEFT без ASOF они тоже есть
  • https://t.me/clickhouse_ru
    @MakeReady #307973 03:45 PM, 19 Jan 2023
    kmu.card_id- это поле левой вьюшки
  • https://t.me/clickhouse_ru
    @MakeReady #307974 03:45 PM, 19 Jan 2023
    и при такой выборке ничего нет
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #307976 03:47 PM, 19 Jan 2023
    окно тоже не при чем
    просто при самосоединении перестает работать фильтр внутри )))
  • https://t.me/clickhouse_ru
    а если сделать из вьюшки выборку по user_id и по loyalty_id вот этим (которые не null), какое там значение card_id?
  • https://t.me/clickhouse_ru
    @MakeReady #307978 03:50 PM, 19 Jan 2023
    такое же
  • https://t.me/clickhouse_ru
    @MakeReady #307979 03:54 PM, 19 Jan 2023
    если загнать сожержимое вьюшки в таблицы, то все, ожидаемо, работает
    то есть проблемма не в самосоединении как таковом
  • https://t.me/clickhouse_ru
    @cmbcksrl #307980 03:56 PM, 19 Jan 2023
    то есть проблема во взаимодействии фильтра и вьюшки
  • https://t.me/clickhouse_ru
    @MakeReady #307981 03:58 PM, 19 Jan 2023
    да
  • https://t.me/clickhouse_ru
    @MakeReady #307982 03:59 PM, 19 Jan 2023
    возможно даже в том что во вьюшке фильтры делаются в подзапросах в секции WITH с использованием результата предыдуих подзапросов в with
  • https://t.me/clickhouse_ru
    @MakeReady #307983 03:59 PM, 19 Jan 2023
    это проверить быстро не выйдет
  • https://t.me/clickhouse_ru
    @protomorphine #307985 04:10 PM, 19 Jan 2023
    Привет
    Подскажите плз, влияет ли формат вывода на что либо?

    select ... from ... format JSON

    Сейчас встал вопрос, возвращать напрямую из БД json или перекладывать в модельку уже в приложении
    Есть ли какие-нибудь подводные при использовании format JSON?
  • https://t.me/clickhouse_ru
    @timofei_melnikov #307986 04:13 PM, 19 Jan 2023
    Подскажите, пожалуйста, необходимо сделать индекс по DateTime, какой лучше выбрать? В таблице 80млн уникальных пользователей, DateTime - дата регистрации, ключ сортировки order by(user_id)
  • https://t.me/clickhouse_ru
    @MakeReady #307987 04:16 PM, 19 Jan 2023
    может ли быть подвох в использовании цепочки WITH вкоторой последующие запросы используют предыдущие?
  • https://t.me/clickhouse_ru
    о как интересно?
    у меня во вьюшке было
    from t right jon t2
    я сделал t2 left join t
    и уже в самой вьюшке получил неотфильтрованные значения
  • @ivanio11 #307990 04:18 PM, 19 Jan 2023
    Всем привет , хочу создать remote табличку из постгри , у одного из полей такой формат данных , в пг это называется interval
    Описывая структуру таблицы , и понял что не знаю какой формат задать этому полю.
    Подскажите плиз , есть ли похожий формат в кликхаусе , чтобы он не ругался на разные соответсвтия типов
  • https://t.me/clickhouse_ru
    А версия какая?
  • https://t.me/clickhouse_ru
    @MakeReady #307992 04:23 PM, 19 Jan 2023
    22.8.11 revision 54460
  • https://t.me/clickhouse_ru
    Скорее всего обычный String, кх не имеет сравнимый тип данных
  • https://t.me/clickhouse_ru
    Попробовала постучаться на вторую реплику с первой, получаю следующее:
    Code: 516. DB::Exception: Received from prod.pdns.internal:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.
  • https://t.me/clickhouse_ru
    Ну значит порт поднят, разбирайтесь что у вас там с юзер конфигами
  • https://t.me/clickhouse_ru
    Тогда хз, в чем тут дело
    Знаю, что раньше была проблема с тем, что left и right join разные результаты давали при перестановке таблиц
  • https://t.me/clickhouse_ru
    @MakeReady #307997 04:28 PM, 19 Jan 2023
    пока подозреваю цепочку в WITH
    но не исключаю что где-то с псевдонимами примитивная ошибка
  • @s4851 ↶ Reply to #307956 #307998 04:46 PM, 19 Jan 2023
    А дальше надо по каждому товару получить сумму заказов в которых он участвовал
  • https://t.me/clickhouse_ru
    GROUP BY item_id
  • @s4851 ↶ Reply to #307999 #308000 04:52 PM, 19 Jan 2023
    Кстати да, что-то я протупил
    Вот так получается итог
    https://fiddle.clickhouse.com/12dd9644-cd85-4e0a-81ff-c43155939eaa
  • https://t.me/clickhouse_ru
    м, нашли косяки.
  • https://t.me/clickhouse_ru
    @zhxbkv #308002 04:57 PM, 19 Jan 2023
    Привет всем, а как вы мониторите базу пишет/не пишет если туда в секунду по несколько тысяч строк записывается? я подключил кликхаус к графане, но запросы кроме как просто отобразить саму базу сначала не отрабатывается
  • https://t.me/clickhouse_ru
    Все, взрыв мозда
    Присоединяю подзапрос через ASOF INNER и вижу полное соответствие и по номеру и по дате
    прицепляю через LEFT и соответствий типа нет
    Как такое вообще может быть?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakeReady #308007 05:43 PM, 19 Jan 2023
    Из сомнительного для КХ то, что в разных местах запроса одна и та же таблица используется то для проверки наличия более ранних транзакций, то для сбора сумм
  • https://t.me/clickhouse_ru
    @MakeReady #308008 05:44 PM, 19 Jan 2023
    И это в одном случае inner, а в другом left
  • https://t.me/clickhouse_ru
    @vdimir ↶ Reply to #307971 #308009 05:53 PM, 19 Jan 2023
    А покажите explain syntax …, пожалуйста
  • https://t.me/clickhouse_ru
    @vdimir #308010 05:56 PM, 19 Jan 2023
    Можно попробовать отключить move_to_prewhere, есть баг связанный с этой оптимизацией … SETTINGS optimize_move_to_prewhere = 0;
  • https://t.me/clickhouse_ru
    Решил отвлечься и может быть сделать подход с другой стороны
    Вернусь, пришлю
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307986 #308012 06:09 PM, 19 Jan 2023
    для DateTime хорошо подходит min_max, т.к. это просто число. Но skip index это не тот индекс к которому вы скорее всего привыкли. Если user_id монотонно возрастающий и коррелирован с временем,то индекс будет работать, еслиже user_id - случайное число, то нет. Сделайте стандартное партиционирование по месяцам по этому времени, и на ваших 80М вам скорее всего будет более чем достаточно для приличной скорости запросов.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #307987 #308013 06:14 PM, 19 Jan 2023
    Если очень много, то сломаете компилятор :) Это же все развертывается во время компиляции запроса и потом уже живет в бинарном виде.
    Другое дело что любой подзапрос при определенном стечении обстоятельств может поломать оптимизатор, и тогда запрос начнет исполняться в один поток и тормозить. Для этого не надо делать вложенность 10. Смотрите по explain pipeline что там происходит.
  • https://t.me/clickhouse_ru
    10 там нет. А то что в одном месте нужен идентификатор и первая дата появления а в другом суммы по идентификаторам и датам - это есть
    Собственно ничего экстраординарного
    Из одной транзакционной таблицы взять только то, что имеет более ранние соответствия в другой и к результату прицепить суммы из этой другой
    Усложняется парой справочников с многие ко многим
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308014 #308015 06:26 PM, 19 Jan 2023
    Справочники уже ведь стали словарями? Ну и по сути задача на asof join. Он работает нормально.
  • https://t.me/clickhouse_ru
    @MakeReady #308016 06:27 PM, 19 Jan 2023
    Нет, они не словари, в них всякие даты создания и обновления , привязки к другим
  • https://t.me/clickhouse_ru
    @MakeReady #308017 06:28 PM, 19 Jan 2023
    Ну вон я выше показывал что asof как то находит что прицепить, а left - нет. Справедливости цеплять не должны оба.
  • https://t.me/clickhouse_ru
    @MakeReady #308018 06:29 PM, 19 Jan 2023
    Потому что транзакции есть, но они не проходят условия, которые заданы в подзапросе
  • https://t.me/clickhouse_ru
    @MakeReady #308019 06:30 PM, 19 Jan 2023
    With 1 запрос с условиями
    Запрос asof inner 1
    Left 1
    И вот первый игнорирует условия в 1
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308018 #308021 06:45 PM, 19 Jan 2023
    сверху ничего не нашел, только картинки какие-то. нужна ссылка на fiddle если хотите чтобы это смотрели.
    - join запросы лучше вкладывать друг в друга, не джойнить более 2х таблиц (оно иногда работает, но если нет, то лучше так)
    - не понимаю при чем тут "даты создания и обновления". Единственный ответ почему джойн нельзя заменить на словарь - не лезет в память. Все остальное можно переписать на словари. И даже те кто не лезут тоже можно (direct).
  • https://t.me/clickhouse_ru
    @MakeReady #308022 06:46 PM, 19 Jan 2023
    :))
  • https://t.me/clickhouse_ru
    @MakeReady #308023 06:46 PM, 19 Jan 2023
    Словари попробую
  • https://t.me/clickhouse_ru
    В fiddle вечность воссоздавать и будет работать :)
  • https://t.me/clickhouse_ru
    Различается ли вероятность проблем при реализации подзапрос в секции with и в from?
    Меняется ли вероятность при многократном переиспольщовании подзапрос из секции with?
  • https://t.me/clickhouse_ru
    @MakeReady #308027 06:54 PM, 19 Jan 2023
    Сейчас я пытаюсь усечь большой запрос до минимума в котором воспроизводится проблема.
    Его уже можно будет показывать
  • https://t.me/clickhouse_ru
    @MakeReady #308028 06:54 PM, 19 Jan 2023
    Иначе много лишнего
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308026 #308029 07:14 PM, 19 Jan 2023
    CTE просто развертываются там где вы их применили. Точно так-же как и функции. Считайте что это такие макросы или cut&paste. Так что разницы нет. Есть разница в структуре подзапросов.
  • https://t.me/clickhouse_ru
    порезанный от личного запрос выглядит так
    WITH
    lcards AS
    (
    SELECT
    ud.id AS ud_id,
    ud.user_id AS user_id,
    li.loyalty_id AS loyalty_id,
    max(parseDateTimeBestEffort(substring(li.created_at, 1, 19))) AS create_dt
    FROM logs.user_devices AS ud
    INNER JOIN logs.loyalty_info_drafts AS li ON li.device_id = ud.id
    INNER JOIN logs.loyalty_info_commits AS lic ON lic.loyalty_info_draft_id = li.id
    GROUP BY
    ud_id,
    ud.user_id,
    li.loyalty_id
    LIMIT 1 BY user_id
    ),
    tv AS
    (
    SELECT
    u.id AS user_id,
    sum(tv2.amount) AS amount,
    tv2.account_id AS account_id,
    toDate(tv2.created_at) AS created_at,
    lc.loyalty_id AS loyalty_id
    FROM db1.transactions_v2_t AS tv2
    INNER JOIN db1.users_t AS u ON u.user_account_id = tv2.account_id
    INNER JOIN lcards AS lc ON lc.user_id = u.id
    WHERE (tv2.source_type = 'purchase') AND (tv2.transaction_status_id = 'SUCCEED') AND (tv2.sale_point_name NOT IN ('cafe_in_spar', 'internet_shop', '14')) AND (created_at >= toDate('2022-09-01'))
    GROUP BY
    user_id,
    account_id,
    created_at,
    loyalty_id
    ),
    m AS
    (
    SELECT
    m.card_id,
    toDate(m.date) AS transaction_date_m,
    sum(m.sum) AS manzana_amount
    FROM db1.turnover_manzana_last_v AS m
    WHERE transaction_date_m >= toDate('2022-09-01')
    GROUP BY
    m.card_id,
    transaction_date_m
    )
    SELECT
    m.card_id,
    m.manzana_amount,
    m.transaction_date_m,
    t1.user_id,
    t1.amount,
    t1.loyalty_id,
    t1.created_at,
    tsm.loyalty_id,
    tsm.created_at,
    tsm.amount
    FROM m
    ASOF INNER JOIN tv AS t1 ON (t1.loyalty_id = m.card_id) AND (t1.created_at <= m.transaction_date_m)
    LEFT JOIN tv AS tsm ON (tsm.loyalty_id = m.card_id) AND (tsm.created_at = m.transaction_date_m)
    WHERE m.card_id = '2900019313338'
    ORDER BY m.transaction_date_m ASC
  • https://t.me/clickhouse_ru
    @MakeReady #308031 07:30 PM, 19 Jan 2023
    дважды используется
    tv
    но первый раз словно на все вот это плевать
    WHERE (tv2.source_type = 'purchase') AND (tv2.transaction_status_id = 'SUCCEED') AND (tv2.sale_point_name NOT IN ('cafe_in_spar', 'internet_shop', '14')) AND (created_at >= toDate('2022-09-01'))
  • https://t.me/clickhouse_ru
    @MakeReady #308032 07:33 PM, 19 Jan 2023
    explain────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ WITH │
    │ lcards AS │
    │ ( │
    │ SELECT │
    │ ud.id AS ud_id, │
    │ ud.user_id AS user_id, │
    │ li.loyalty_id AS loyalty_id, │
    │ max(parseDateTimeBestEffort(substring(li.created_at, 1, 19))) AS create_dt │
    │ FROM logs.user_devices AS ud │
    │ INNER JOIN logs.loyalty_info_drafts AS li ON li.device_id = ud.id │
    │ INNER JOIN logs.loyalty_info_commits AS lic ON lic.loyalty_info_draft_id = li.id │
    │ GROUP BY │
    │ ud_id, │
    │ ud.user_id, │
    │ li.loyalty_id │
    │ LIMIT 1 BY user_id │
    │ ), │
    │ tv AS │
    │ (
  • https://t.me/clickhouse_ru
    @MakeReady #308033 07:33 PM, 19 Jan 2023

    │ SELECT │
    │ u.id AS user_id, │
    │ sum(tv2.amount) AS amount, │
    │ tv2.account_id AS account_id, │
    │ toDate(tv2.created_at) AS created_at, │
    │ lc.loyalty_id AS loyalty_id │
    │ FROM db1.transactions_v2_t AS tv2 │
    │ INNER JOIN db1.users_t AS u ON u.user_account_id = tv2.account_id │
    │ INNER JOIN │
    │ lcards AS lc ON lc.user_id = u.id │
    │ WHERE (tv2.source_type = 'purchase') AND (tv2.transaction_status_id = 'SUCCEED') AND (tv2.sale_point_name NOT IN ('cafe_in_spar', 'internet_shop', '14')) AND (created_at >= toDate('2022-09-01')) │
    │ GROUP BY │
    │ user_id, │
    │ account_id, │
    │ created_at, │
    │ loyalty_id │
    │ ), │
    │ m AS │
    │ ( │
    │ SELECT
  • https://t.me/clickhouse_ru
    @MakeReady #308034 07:33 PM, 19 Jan 2023

    │ m.card_id, │
    │ toDate(m.date) AS transaction_date_m, │
    │ sum(m.sum) AS manzana_amount │
    │ FROM db1.turnover_manzana_last_v AS m │
    │ WHERE transaction_date_m >= toDate('2022-09-01') │
    │ GROUP BY │
    │ m.card_id, │
    │ transaction_date_m │
    │ ) │
    │ SELECT │
    │ card_id AS `m.card_id`, │
    │ manzana_amount AS `m.manzana_amount`, │
    │ transaction_date_m AS `m.transaction_date_m`, │
    │ `--t1.user_id` AS `t1.user_id`, │
    │ `--t1.amount` AS `t1.amount`, │
    │ `--t1.loyalty_id` AS `t1.loyalty_id`, │
    │ `--t1.created_at` AS `t1.created_at`, │
    │ loyalty_id AS `tsm.loyalty_id`, │
    │ created_at AS `tsm.created_at`, │
    │ amount AS `tsm.amount`
  • https://t.me/clickhouse_ru
    @MakeReady #308035 07:33 PM, 19 Jan 2023

    │ FROM │
    │ ( │
    │ SELECT │
    │ transaction_date_m, │
    │ manzana_amount, │
    │ card_id, │
    │ loyalty_id AS `--t1.loyalty_id`, │
    │ amount AS `--t1.amount`, │
    │ created_at AS `--t1.created_at`, │
    │ user_id AS `--t1.user_id` │
    │ FROM │
    │ m │
    │ ASOF INNER JOIN │
    │ tv AS t1 ON (`--t1.loyalty_id` = card_id) AND (`--t1.created_at` <= transaction_date_m) │
    │ WHERE card_id = '2900019313338' │
    │ ) AS `--.s` │
    │ ALL LEFT JOIN │
    │ tv AS tsm ON (loyalty_id = card_id) AND (created_at = transaction_date_m) │
    │ WHERE card_id = '2900019313338' │
    │ ORDER BY transaction_date_m ASC
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308030 #308036 07:42 PM, 19 Jan 2023
    так действительно тяжело - слишком большая простыня.
    И все-таки, почему вы не хотите разобрать вот эти стремные места:
    FROM m
    ASOF INNER JOIN tv AS t1 ON (t1.loyalty_id = m.card_id) AND (t1.created_at <= m.transaction_date_m)
    LEFT JOIN tv AS tsm ON (tsm.loyalty_id = m.card_id) AND (tsm.created_at = m.transaction_date_m)
    тут три таблицы соединяются в общем контексте. Причем две из них одинаковые, а они с разными типами join. Вы специально пишите такой замысловатый тест парсера ? :)
    Я в таких стремных случаях разбиваю джойны на пары, делая дополнительные подзапросы, пока не выловлю проблему.
  • https://t.me/clickhouse_ru
    @MakeReady #308037 07:43 PM, 19 Jan 2023
    было и по парам
    первое присоединение имеет цель ограничить выборку из m только теми для кого есть более ранние транзакции в tv
  • https://t.me/clickhouse_ru
    @MakeReady #308038 07:44 PM, 19 Jan 2023
    второе присоединение - это суммы из tv
    суммы из m могут быть по датам по которым в tv данных нет
  • https://t.me/clickhouse_ru
    @MakeReady #308039 07:44 PM, 19 Jan 2023
    но я сейчас как раз думаю все вывернуть
  • https://t.me/clickhouse_ru
    RMT с -1 ? Я так и не понял как работают эти флажки
  • @snevolin #308041 09:14 PM, 19 Jan 2023
    А как-то можно залогать данные, которые вставляются через INSERT и приходят по HTTP-интерфейсу? Хочу посмотреть, что именно приходит от библиотеки.
  • Nginx-ом можно.
  • Сторонними средствами -- понятно. Есть и фиддлер. Но должен же быть способ сделать это внутри самого кликхауза.
  • 20 January 2023 (201 messages)
  • https://t.me/clickhouse_ru
    @zduissekov #308047 04:18 AM, 20 Jan 2023
    @konnectrl @brbrbr интересное изменение, пока ничего не делал а ОЗУ упало с 98 до 65%
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308040 #308048 05:25 AM, 20 Jan 2023
    у вас есть сырые данные и есть агрегации (суммы скажем) через MV. Если в сырые данные поступают обновления, то что делать с агрегациями? Можно пересчитывать заново раз в сутки, а можно обновлять инкрементально. Но для того чтобы прибавить новое значение, надо сначала отнять старое. Для этого и нужны эти -1,1 в исходной таблице.
    Обычно такое делатся на основе CollapsingMT, которая во время мерджей весь этот мусор схлопнет и выкинет. Но можно делать на чем угодно, хоть бы и на обычной MergeTree, но лучше на RMT, которая тоже умеет чистить мусор. Послушайте выступление Роберта на этом видео
    December 2022 ClickHouse Bay Area Meetup

    Join us for this session on latest #ClickHouse news. 0:10 Start of Meetup 9:07 Adventures with the ClickHouse ReplacingMergeTree Engine by Robert Hodges 46:28 ClickHouse ReplacingMergeTree in Telecom Apps by Alexandr Dubovikov 1:24:32 Doing Crazy Stuff with ClickHouse by Alexey Milovidov See the meetup invite for more information: https://www.meetup.com/san-francisco-bay-area-clickhouse-meetup/events/289605843 #datawarehouse #Meetup ----------------- Check out more ClickHouse resources here: https://altinity.com/resources/​ Join Reddit community: https://www.reddit.com/r/Clickhouse/​ ----------------- Learn more about Altinity, sponsors of this meetup. Site: https://www.altinity.com​ LinkedIn: https://www.linkedin.com/company/alti...​ Twitter: https://twitter.com/AltinityDB

  • https://t.me/clickhouse_ru
    @rRnst #308049 05:29 AM, 20 Jan 2023
    Здравствуйте, как решить проблему memory issue sql error 241?
  • https://t.me/clickhouse_ru
    Не починили. 😞
  • https://t.me/clickhouse_ru
    @m1khal3v #308053 07:26 AM, 20 Jan 2023
    Всем привет. А SYSTEM STOP MERGES действует до перезагрузки?
  • https://t.me/clickhouse_ru
    @BMF_RU #308054 07:29 AM, 20 Jan 2023
    коллеги, приветствую!
    есть что-то для иерархий? вроде connect by prior в oracle или WITH RECURSIVE HIERARCHY, JOIN HIERARCHY в sybase?
  • https://t.me/clickhouse_ru
    иерархические словари
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @BMF_RU ↶ Reply to #308055 #308057 07:32 AM, 20 Jan 2023
    🤝
  • https://t.me/clickhouse_ru
    @164878936 #308059 07:43 AM, 20 Jan 2023
    Бодрейшего дня, друзья)
    Можно ли вывести формулу, по которой можно достоверно точно по ключу шардирования определить номер шарда куда легли данные или лягут в дальшейнем?
  • https://t.me/clickhouse_ru
    если вы про запись в Distributed то вот тут всё описано

    https://clickhouse.com/docs/en/engines/table-engines/special/distributed#distributed-writing-data
    Distributed Table Engine | ClickHouse Docs

    Tables with Distributed engine do not store any data of their own, but allow distributed query processing on multiple servers.

  • https://t.me/clickhouse_ru
    @m1khal3v #308061 07:55 AM, 20 Jan 2023
    но вы можете реализовать свою схему шардирования на стороне приложения
  • https://t.me/clickhouse_ru
    @m1khal3v #308062 07:55 AM, 20 Jan 2023
    на чтение из Distributed это никак не влияет
  • @ZaurBegiev #308064 08:55 AM, 20 Jan 2023
    Всем привет!
    Пользуемся CH для ssa отчётности. Запросы поступают от read-only юзеров. Появилась необходимость делать запросы с модификацией опций (обойти ошибку: Cannot modify ... setting in readonly mode), а именно, хотим запускать с SETTINGS distributed_product_mode = 'local'.
    Возник вопрос, изменение параметра readonly с режима 1 на режим 2 в конфиге позволит это делать, но какие у этого есть риски? Существуют ли какие-то settings, которые дают возможность readonly юзеру сломать базу?

    Может быть есть альтернативные решения? Например включение определённых SETTINGS определённому пользователю?
  • https://t.me/clickhouse_ru
    @yatoba #308065 09:37 AM, 20 Jan 2023
    подскажите, есть шарды (сейчас два), планируем выделелить сервак под горячие данные, но нет понимания надо будет делать их два или и на одном нормально будет работать? т.е. вопрос по сути в том надо ли сохранять соотношение что в одном шарде и горячий сервак и холодные
  • https://t.me/clickhouse_ru
    @k0tb9g9m0t #308066 10:27 AM, 20 Jan 2023
    А есть возможность исполнять аналог хранимок на python в clickhouse ?
  • https://t.me/clickhouse_ru
    @svbgv ↶ Reply to #305516 #308067 10:30 AM, 20 Jan 2023
    привет. продолжаю исследовать этот прикол. кажется, он возникает если какая-то нода кластера не успела ответить на селект через распределенную вьюху в течение какого-то времени

    ищу в конфигах КХ где можно увеличить время, предоставляемое нодам на выполнение селекта через распределенную вью. возможно кто-то знает такие параметры конфига, в гугле пока не нашел
  • https://t.me/clickhouse_ru
    @svbgv ↶ Reply to #308067 #308068 10:34 AM, 20 Jan 2023
    inb4: distributed_ddl_task_timeout не помогает, там 180 сек дефолтные, запрос выполняется секунд 10
  • https://t.me/clickhouse_ru
    конечно можно выдавать readonly пользователю пресеттинги
  • @anton_kostylev #308071 10:47 AM, 20 Jan 2023
    #vacancy #вакансия #job #parttime
    Компания, занимающаяся интернет рекламой, ищет ClickHouse разработчика.
    Знание ClickHouse и Zookeeper. Позиция part-time, локация СПб, можно удаленно.
    Пишите в личку если интересно.
  • https://t.me/clickhouse_ru
    <ch>
    <profiles>
    <readonly>
    <distibuted_product_mode>local</distibuted_product_mode>
    <distibuted_group_by_no_merge>1</distibuted_group_by_no_merge>
    </readonly>
    </profiles>
    <users>
    <readonly>
    ...
    <profile>readonly</profile>
    ...
    </readonly>
    </users>
    </ch>
  • https://t.me/clickhouse_ru
    Functions | ClickHouse Docs

    There are at least\* two types of functions - regular functions (they are just called “functions”) and aggregate functions. These are completely different concepts. Regular functions work as if they are applied to each row separately (for each row, the result of the function does not depend on the other rows). Aggregate functions accumulate a set of values from various rows (i.e. they depend on the entire set of rows).

  • https://t.me/clickhouse_ru
    спасибо
  • @mikerukd #308075 10:56 AM, 20 Jan 2023
    Всем привет. Ребят, порекомендуйте, пожалуйста, к кому можно обратиться с консультацией по clickhouse ( только платная ), как лучше сделать в моем случае + потом по этому ТЗ настроить сервер/сервера.
    Буду благодарен за контакт с специалистом )
  • https://t.me/clickhouse_ru
    @nvngrt #308078 11:57 AM, 20 Jan 2023
    Привет!
    Подскажите, пожалуйста

    Какой самый быстрый / эффективный способ проверить, что есть not NULL значение, подходящее условию where?
    Допустим, после where останется 10 записей: где 10 разных значений в столбце A, и 10 раз повторяется одно значение в столбце B
    мне подойдет любое, т.к. важен только факт соответствия условию - что для столбца B есть хотя бы 1 A, которое проходит по условию

    any для этих целей подойдет? или есть что-то лучше?
  • https://t.me/clickhouse_ru
    @redr0bin #308080 12:13 PM, 20 Jan 2023
    Добрый день! Нужна подсказка по типу данных схемы. Есть JSON с такой структурой {"id": 1, "version": "1.2.0", "data": {"key1": "value1", "key2": "value2"}, "categories": ["1","2"]}}. Секция data это же Map ?
  • https://t.me/clickhouse_ru
    @redr0bin #308081 12:14 PM, 20 Jan 2023
    хочется это путем INSERT INTO x FORMAT JSONEachRow заливать
  • добрый день
    у нас похожая структура и сделали через Nested
  • @aoparin #308085 01:01 PM, 20 Jan 2023
    но Nested это массив, а не однострочный объект, т.е. дат в одной строке может быть много
  • https://t.me/clickhouse_ru
    @392734528 #308086 01:03 PM, 20 Jan 2023
    Подскажите у нас клик поедает все ресурсы с запросами final
    ресурсы 12 CPU, 48GB RAM, какой-то ssd
    время запроса 20 сек, даже на 4M сессиях и буквально 5-10 запросов в параллель полностью вычёрпывают ресурсы clickhouse на проде.
    Куда копать?
  • https://t.me/clickhouse_ru
    @solard ↶ Reply to #308086 #308087 01:04 PM, 20 Jan 2023
    Не использовать FINAL
  • https://t.me/clickhouse_ru
    вариант годный, но нужно решить проблемку дедупликации.
    в датлицу поступают данные по сессиям. могут дублироваться в какой то момент
    чтобы построить на них витрину их нужно дедуплицировать. Файнал как бы предоставляет эту. возможность.
  • https://t.me/clickhouse_ru
    @392734528 #308089 01:06 PM, 20 Jan 2023
    возможно мы не правильно его готовим ) подскажите как решить эту проблему?
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #308088 #308090 01:06 PM, 20 Jan 2023
    Вы тогда выбрали не ту базу данных
  • https://t.me/clickhouse_ru
    @dollarfree2u #308091 01:06 PM, 20 Jan 2023
    🆓Начни пассивный заработок с сегодня 🆓
    Не п2п 😬
    Не трейдинг 🙌
    Только пассив ✅
    💎Бесплатное обучение только для тех кто не регал бинанс 💎
    Мы не берём пароль или аккаунт в рост ‼️
    🦾Депозит зависит только от вас и % который желаем вами🦾
    Пиши сюда @raskrytka_man
    Только белый трафик 💯
    Только после регистрации 👌🏻
  • https://t.me/clickhouse_ru
    да, мне по этому Nested и не подошел, я подумал, может это может быть просто Tuple. проблема в том, что я не имею контроля над входными данными, они стримом из kafka идут, пробую ch - kafka интеграцию
  • https://t.me/clickhouse_ru
    витрины на клике нельзя строить?
  • https://t.me/clickhouse_ru
    @lgtwb #308094 01:07 PM, 20 Jan 2023
    Витрины = интернет-магазины?
  • https://t.me/clickhouse_ru
    @392734528 #308095 01:07 PM, 20 Jan 2023
    нет. причем тут магазины?
  • https://t.me/clickhouse_ru
    @lgtwb #308096 01:08 PM, 20 Jan 2023
    Видел что часто так называют ИМ
  • https://t.me/clickhouse_ru
    @lgtwb #308097 01:08 PM, 20 Jan 2023
    У вас есть задача поддерживать данные всегда в актуальном состоянии?
  • https://t.me/clickhouse_ru
    @392734528 #308098 01:08 PM, 20 Jan 2023
    а сори не утонил. статистика по сессиям на основе аналитики.
  • https://t.me/clickhouse_ru
    @lgtwb #308099 01:08 PM, 20 Jan 2023
    *отдавать
  • https://t.me/clickhouse_ru
    Оптимайзите затрагиваемую патрицию одним из степов пайплайна построения витрины, и будет вам счастье
  • @strntsv #308101 01:09 PM, 20 Jan 2023
    Привет, некорректно работает вставка в таблицу. Таблица distributed, кластер поднимается в docker из одного шарда и одной реплики. В таблицу пишем с помощью http. В чем может быть проблема? Вот пример поведения:
  • https://t.me/clickhouse_ru
    слова умные, узнаваемые но я чот ничего не понял.
  • https://t.me/clickhouse_ru
    Получать историю сессий по источникам, отсортированную по дате от старых к новым.
  • https://t.me/clickhouse_ru
    У вас витрина считается каким-то образом же?
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #308103 #308105 01:13 PM, 20 Jan 2023
    Ну если вы используете final - то вы заставляете движок прогонять через себя все данные и выполнять все мержи чтобы отдать финальный результат
  • https://t.me/clickhouse_ru
    @lgtwb #308106 01:13 PM, 20 Jan 2023
    Это нагрузка
  • https://t.me/clickhouse_ru
    все так.
  • https://t.me/clickhouse_ru
    @bvt123 ↶ Reply to #308092 #308108 01:15 PM, 20 Jan 2023
    тогда используйте тип Object('JSON'), оно само там этот тупл построит и перестроит
  • https://t.me/clickhouse_ru
    И это разумно делать не в момент запросов к витрине, а после вставок. А потом давать селектить без final
  • Tuple скорее всего не подойдёт, т.к. последовательность key скорее всего будет разная. По крайней мере не гарантированная... :( А мап это изменяемая структура...
    Как идею, можно попробовать рассмотреть таблицу с объектом json и через mat view парсить и складывать в таблицу с нужными полями... сама таблица с json может быть типом null и в ней данных не будет при этом...
    но я так не пробовал, только читал о таком способе
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #308109 #308111 01:16 PM, 20 Jan 2023
    А зачем, если клик сам все сделает когда ему надо
  • https://t.me/clickhouse_ru
    @lgtwb #308112 01:16 PM, 20 Jan 2023
    Я потому спросил про актуальность данных
  • https://t.me/clickhouse_ru
    select * from prom3.session final
    where source_id = '12123123'
    order by begin_date desc
    limit 100 offset 1000

     и жопец
  • https://t.me/clickhouse_ru
    @lgtwb #308114 01:17 PM, 20 Jan 2023
    ну так пофиг сколько там чего вы выгружаете - таблица сначала приходит в финальное состояние, а потом извлекаются данные
  • https://t.me/clickhouse_ru
    @lgtwb #308115 01:17 PM, 20 Jan 2023
    ну как, не пофиг
  • https://t.me/clickhouse_ru
    @lgtwb #308116 01:17 PM, 20 Jan 2023
    но тут типа пофиг
  • https://t.me/clickhouse_ru
    Ну если аналитики селектят с final, видимо нужно сразу
  • https://t.me/clickhouse_ru
    Я тоже так не пробовал, но я попробовал сгенерить структуру для своей таблицы путем инсерта данных (json) в поле типа JSON и последующего DESCRIBE TABLE. реально на бум просто запустил describe не ожидая того что ch распарсит все поля.
  • https://t.me/clickhouse_ru
    @lgtwb ↶ Reply to #308117 #308119 01:18 PM, 20 Jan 2023
    А может быть и похер, в принципе.
  • https://t.me/clickhouse_ru
    да забыл сказать что в момент запроа идет вставка данных.
    вот такие сообщения после начала запроса летят
    15:18:39.765 [WARN] Query execution failed: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 42.10 GiB (attempt to allocate chunk of 16777216 bytes), maximum: 42.10 GiB: While executing ReplacingSorted. (MEMORY_LIMIT_EXCEEDED) (version 22.3.8.39 (official build))
    , server ClickHouseNode
  • https://t.me/clickhouse_ru
    @lgtwb #308121 01:19 PM, 20 Jan 2023
    А тип таблицы какой?
  • https://t.me/clickhouse_ru
    Вы можете считать это всё в одну таблицу,в конце аттачить посчитанную патрицию к другой таблице, и пускать аналитиков только в эту вторую таблицу
  • https://t.me/clickhouse_ru
    @amdubovoy #308123 01:20 PM, 20 Jan 2023
    Тогда проблема неконсистентных селектов будет решена
  • https://t.me/clickhouse_ru
    ну пока это единственный разумный вариант.; сырая таблица для вставки и периодически обновляемая таблица с посчитанными данными.
  • https://t.me/clickhouse_ru
    Так довольно часто делают, нормальный вариант
  • я с Nested примерно так же разбирался :)
  • https://t.me/clickhouse_ru
    Спасибо за брейншторм )
    Как первый вариант думаю сгодится. сейчас еще проблем поднакидаем )
  • https://t.me/clickhouse_ru
    Тут может срабатывать дедубликация insert'a и повторная вставка такого же батча не происходит.
    Вставьте вторым запросом другое значение и проверьте count

    Ну и ещё хорошо бы понимать с каким движком таблица стоит за distributed
  • https://t.me/clickhouse_ru
    А ещё можно через argMax данные выбирать
    SELECT session_id, argMax(session_param1, insert_dt) as p1, argMax(session_param2, insert_dt) as p2
    from tbl1
    group by session_id
  • https://t.me/clickhouse_ru
    если полей 100 штукт то надо каждое поле так обернуть в запросе? )
  • https://t.me/clickhouse_ru
    Сделайте вью если частый запрос и выбирайте из неё
  • https://t.me/clickhouse_ru
    хм. тоже вариант! спасибо!
  • https://t.me/clickhouse_ru
    во-первых можно перечислить все поля как кортеж argMax((session_param1,session_param2), insert_dt)
    во-вторых можно использовать argMax(tuple(COLUMNS('session_.*')), insert_dt)
  • @strntsv #308134 01:36 PM, 20 Jan 2023
    Подскажите, из-за чего колонка written_rows из system.query_log в два раза больше реального значения? То есть встаявлеться 1 строка, а записывается как 2
  • https://t.me/clickhouse_ru
    там мусор хранится
    distributed и matView умножают кол-во вставленных записей
  • @strntsv #308136 01:38 PM, 20 Jan 2023
    Спасибо
  • https://t.me/clickhouse_ru
    по дефолту у КХ mark_cache раздувается до 5ГБ,
    из опыта скажу что пока RES меньше 40ГБ нельзя сказать что что-то ненормально с КХ.
  • https://t.me/clickhouse_ru
    да. До detach / attach таблицы, или до system start merges, и наверное system restart replica тоже стартанет мержи
  • https://t.me/clickhouse_ru
    это однозначно баг в КХ

    distributed_ddl_task_timeout -- это из другой сказки, это для запросов create on_cluster. Этот параметр не используется для select
  • https://t.me/clickhouse_ru
    @svbgv ↶ Reply to #308139 #308140 01:50 PM, 20 Jan 2023
    Да, допетлил что это только про изменения в ddl
    А чем помочь проблеме не допетлил
    Но за взгляд на проблему спасибо
  • https://t.me/clickhouse_ru
    тип json экспериментальный, вангую что заработает он в 2025 году, во втором квартале.

    я бы его выпилил (из КХ), не стоит усилий эта балалайка.
  • https://t.me/clickhouse_ru
    маленький апдейт вчера после того как озу до 98% дошло то само упало до 65%
  • https://t.me/clickhouse_ru
    @den_crane вот так показало на графане
  • https://t.me/clickhouse_ru
    скорее всего рестартовал ваш КХ

    select uptime()
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    92526
  • https://t.me/clickhouse_ru
    похоже перезагрузился да?
  • https://t.me/clickhouse_ru
    ну это секунды если вопрос ко мне
  • https://t.me/clickhouse_ru
    @zduissekov #308149 01:59 PM, 20 Jan 2023
    получается как потолок то КХ перегружается и наверное теряет оперативные данные
  • https://t.me/clickhouse_ru
    1 нет
    2 нет
  • https://t.me/clickhouse_ru
    Ну тут всё просто, вам не нужен КХ :)
  • https://t.me/clickhouse_ru
    ну это самое простое решение ) А альтернатива? )
  • https://t.me/clickhouse_ru
    starrocks, быстрее КХ, +решардинг, +транзакции, +нормальный SQL, +join-ы
    (бесплатно, apache license)
  • https://t.me/clickhouse_ru
    @den_crane #308155 04:31 PM, 20 Jan 2023
    в КХ возможно будет uniqueMergeTree, там будет не нужен final (он уже готов на 90%) https://github.com/ClickHouse/ClickHouse/pull/44534
    Add new table engine UniqueMergeTree by ucasfl · Pull Request #44534 · ClickHouse/ClickHouse

    Changelog category (leave one): New Feature Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md): Add new table engine UniqueMergeTree. Closes #41817. Syn...

  • https://t.me/clickhouse_ru
    о, они ещё и glog используют, т.е. умеют в syslog. интересные.
  • https://t.me/clickhouse_ru
    Они быстро развиваются
  • https://t.me/clickhouse_ru
    ну понаблюдаем.
  • https://t.me/clickhouse_ru
    @den_crane #308160 04:43 PM, 20 Jan 2023
    test with random data

    test with random data. GitHub Gist: instantly share code, notes, and snippets.

  • @2070273164 #308161 05:12 PM, 20 Jan 2023
    Транзакций там тоже нет?
  • https://t.me/clickhouse_ru
    звуячит конечно сексуально но клик выбирался по довольно простому критерию
    есть касандра откуда надо откинуть данные в клик.
    строк миллионы. полей под 100 штук.
    далее на данные нужно накладывать аналитические запросы (шустро ворочить данные) и строить витрины.
    Я правильно вас понял что клин не умеет всего вышеперечисленного и выбор был мимо?
  • https://t.me/clickhouse_ru
    Подходит, просто со своей спецификой
  • https://t.me/clickhouse_ru
    Ну подскажи ее плиз ) очень спасешь серьезнеый проект )
  • https://t.me/clickhouse_ru
    @konnectrl #308165 05:16 PM, 20 Jan 2023
    Всё же просто использовать Click как конечное хранилище в котором будет просто SELECT без JOIN'a
  • https://t.me/clickhouse_ru
    @konnectrl #308166 05:16 PM, 20 Jan 2023
    и будет вам счастье
  • https://t.me/clickhouse_ru
    Уточни. Мы тут одно решение озвучили.
    Сделать зеркальную таблицу куда складывать раз в сутки посчитанные (дедуплицированные) данные за последние сутки. И уже оттуда запросы строить.
    Норм решение?
  • https://t.me/clickhouse_ru
    @konnectrl #308168 05:18 PM, 20 Jan 2023
    Да, мы делаем примерно так же
  • https://t.me/clickhouse_ru
    @392734528 #308169 05:18 PM, 20 Jan 2023
  • https://t.me/clickhouse_ru
    @konnectrl #308170 05:19 PM, 20 Jan 2023
    Мы делаем темп таблицу в которую всё льётся день, в конце дня дедубликация в ней
  • https://t.me/clickhouse_ru
    @konnectrl #308171 05:19 PM, 20 Jan 2023
    И в большой таблице раз в неделю дедубликацию, для того чтобы убрать дубли в разных днях
  • https://t.me/clickhouse_ru
    @konnectrl #308172 05:20 PM, 20 Jan 2023
    Нежелательно использовать OPTIMIZE как говорил Denny, но в нашей схеме дедубликации никуда без него
  • https://t.me/clickhouse_ru
    только при ваших вводных - 10 параллельных аналитических запросов всё равно могут приводить к нехватке ресурсов
  • https://t.me/clickhouse_ru
    @konnectrl #308174 05:20 PM, 20 Jan 2023
    Ну тут только ограничивать ресурсы на юзера, в последних обновах это сделали
  • https://t.me/clickhouse_ru
    даже без final?
  • https://t.me/clickhouse_ru
    @konnectrl #308176 05:21 PM, 20 Jan 2023
    Да, потому что 1 запрос может сожрать весь CH
  • https://t.me/clickhouse_ru
    ну да)
  • https://t.me/clickhouse_ru
    Хм, а почему нежелательно использовать optimize для подготовки витрин, если компьют на CH?
  • https://t.me/clickhouse_ru
    то есть чем уже условие тем шустрей.
  • https://t.me/clickhouse_ru
    с какой версии примерно?
  • https://t.me/clickhouse_ru
    Как рассказывал Denny и возможно это плохой пересказ нормальных слов ...
    OPTIMIZE все парты смержит максимально в 1 ... CH такое не любит, так как ему надо читать из разных партов
  • https://t.me/clickhouse_ru
    Вроде 22.3
  • https://t.me/clickhouse_ru
    @konnectrl #308183 05:23 PM, 20 Jan 2023
    Но не помню
  • https://t.me/clickhouse_ru
    Ну типа есть движок со встроенным функционалом дедупликации через оптимайз — зачем он тогда нужен вообще?) Уж точно не для селектов с final
  • https://t.me/clickhouse_ru
    @amdubovoy #308185 05:23 PM, 20 Jan 2023
    И не для мерджей «когда-нибудь»
  • https://t.me/clickhouse_ru
    Он же не доконца мержит, и дубли будут всегда
  • https://t.me/clickhouse_ru
    годный вопрос )
  • https://t.me/clickhouse_ru
    @konnectrl #308188 05:25 PM, 20 Jan 2023
    Вся разница в движках, это разница работы мержа, не более. То есть просто в MT и в ReplacingMT будут идти мержи одинаково, просто механизм обработки данных разный
  • https://t.me/clickhouse_ru
    Ну вот у нас в пайплайнах ровно так и делается — оптимайзим aggregating и replacing партиции в конце, чтобы схлопывать строки, проблем с мерджами не до конца вроде нет
  • Если вы данные раз в сутки заливаете и не делаете запросов в этот период и до завершения optimize, то можно делать optimize, а так final всё равно ведь понадобится.
  • https://t.me/clickhouse_ru
    Это понятно, да
  • https://t.me/clickhouse_ru
    @amdubovoy #308192 05:26 PM, 20 Jan 2023
    Просто выше написали, что так вообще лучше не делать, и я хочу понять, нафиг тогда вообще нужен этот функционал
  • Потому что некоторые пытаются делать optimize после каждого insert.
  • https://t.me/clickhouse_ru
    Ну то есть для расчёта регулярных не real-time витрин это ок
  • https://t.me/clickhouse_ru
    @amdubovoy #308195 05:28 PM, 20 Jan 2023
    Посчитал партицию — схлопнул — закинул в витрину
  • 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
    @392734528 #308201 05:35 PM, 20 Jan 2023
    хм. наверно все-таки что то сложное на первом происходит )
  • https://t.me/clickhouse_ru
    Ну, да. Буквально всё в нём и происходит
  • https://t.me/clickhouse_ru
    тогда вопросов нет. у нас касандра для "всего" )
  • https://t.me/clickhouse_ru
    КХ это OLAP, не DWH. Много таблиц, витрины это не совсем подходит для КХ
  • https://t.me/clickhouse_ru
    3 таблицы.
    1 оч большая 2 так приблуда )
    Я прям очень старался влезть в КХ )
  • https://t.me/clickhouse_ru
    ну т.е. типа запрос без final у вас у вас быстрее чем с final в 10 раз? В этом проблема?
  • https://t.me/clickhouse_ru
    не сравнивали пока
    изначально при текте я обнаружил что данные могут заливаться с дублями из касандры.
    ОК предложил пользовать файнал в запросах для получени чистых данных
    сегождня прилетела задача - запросы с файнал кладут ресурсы.
    я сразу к вам )
    пока не сравнивал. в понедельник посмотрим.
    Если только в этом проблема - решине очевидное. Считать и класть в сторону раз в сутки для потрошения аналитиками.
  • А что значит "кладут ресурсы"? 100% cpu? Так это и 1 запрос без final будет делать в ряде случаев, как выше написали.
  • https://t.me/clickhouse_ru
    запустили параллельно 3 запроса типа
    select * from table
    where source_id = '123123123'
    order by begin_date desc
    limit 100 offset 1000

    с начала [WARN] Query execution failed: Code: 241. DB::Exception: Memory limit (total) exceeded: would use 42.10 GiB (attempt to allocate chunk of 16777216 bytes), maximum: 42.10 GiB: While executing ReplacingSorted. (MEMORY_LIMIT_EXCEEDED) (version 22.3.8.39 (official build))
    , server ClickHouseNode

    и как бы на этом всё
  • @2070273164 #308210 05:54 PM, 20 Jan 2023
    Так это данных с source_id = '123123123' слишком много.
  • @2070273164 #308211 05:56 PM, 20 Jan 2023
    У вас таблица по каким полям отсортирована?
  • https://t.me/clickhouse_ru
    ну собственно это нормально, либо делаете очередь и выполняете по 1 запросу в момент времени, либо добавьте в кластер нормально озу
  • https://t.me/clickhouse_ru
    46гаков как бы
  • https://t.me/clickhouse_ru
    ну чушь же написал для примера
  • В примере главное, что есть order by и limit. Если order by не совпадает с табличным, то беда
  • https://t.me/clickhouse_ru
    копейки
  • https://t.me/clickhouse_ru
    не тут все норм. ордер по трем полям одно из которых как раз дата начала. Это я как бы в курсе до проектирования был )
  • https://t.me/clickhouse_ru
    а я блин спрашивал давно сколько у кого и как понять скока надо )
  • https://t.me/clickhouse_ru
    https://clickhouse.com/docs/en/operations/tips/#ram
    https://kb.altinity.com/altinity-kb-setup-and-maintenance/cluster-production-configuration-guide/hardware-requirements/
  • https://t.me/clickhouse_ru
    @Sablast #308220 06:08 PM, 20 Jan 2023
    лично мне нравится цифра 128+
  • https://t.me/clickhouse_ru
    А дата первая в Order by ?
  • https://t.me/clickhouse_ru
    ну от 46 до 64 сам понимаешь не шибко проблема оттопырить ) но если 46 жто коппейки то 64 тоже ни о чем )
  • https://t.me/clickhouse_ru
    вторая
  • https://t.me/clickhouse_ru
    Щедрый ты ) Мне нравится! )
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    странный запрос, не для OLAP базы.

    set max_bytes_before_external_sort='10G'
  • https://t.me/clickhouse_ru
    @den_crane #308227 06:14 PM, 20 Jan 2023
    естественно limit 100 offset 1000, это ад. Пагинацию надо делать по другому
  • https://t.me/clickhouse_ru
    @den_crane #308228 06:36 PM, 20 Jan 2023
    UniqueMergeTree скорость инсертов конечно разочаровывает 65.947 sec vs 1.962 sec
    https://gist.github.com/den-crane/64ca99b15ca4ea123c137352a306acbd
  • Чудес не бывает
  • https://t.me/clickhouse_ru
    А если ключи не уникальны ? Мне кажется ещё медленней станет
  • https://t.me/clickhouse_ru
    @den_crane #308231 06:59 PM, 20 Jan 2023
    еще тещу, там еще интереснее, если ключи не возрастают монотонно, то там тоже все совсем плохо.
  • https://t.me/clickhouse_ru
    @konnectrl #308232 07:01 PM, 20 Jan 2023
    Ну по факту если батч обработка, то скорость сильно не решает