• 01 August 2020 (25 messages)
  • https://t.me/clickhouse_ru
    Спасибо! Разобрался
  • https://t.me/clickhouse_ru
    @podhornyi #174487 11:11 AM, 01 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @B5H4M1L #174488 12:07 PM, 01 Aug 2020
    Joined.
  • @scooby18 #174489 12:09 PM, 01 Aug 2020
    всем привет. ЗК refused КХ, все это дело запускаю в контейнерах. С КХ контейнера ping на ЗК есть все ок. Куда можно капнуть
  • @scooby18 #174490 12:10 PM, 01 Aug 2020
    сами ЗК настроины вот так
  • @scooby18 #174491 12:19 PM, 01 Aug 2020
    видимо в том что порт 2181 не прописан в конфиге
  • @lucifron31 #174492 02:38 PM, 01 Aug 2020
    Добрый день коллеги! Подскажите может кто знает когда будет следующий после 20.3 релиз с длительной поддержкой LTS?
  • https://t.me/clickhouse_ru
    Long Term Support versions are introduced for big enterprise customers who don't like to update often. LTS version is released twice a year with limited support during one year. Limited support includes backports of bugfixes (only fixes that were easy to backport or that were required by customer).
  • На мой вопрос все рано нет ответа))
  • https://t.me/clickhouse_ru
    Скорее всего в середину осени думаю.
  • Это уже ближе к ответу, спасибо
  • https://t.me/clickhouse_ru
    @purgatory_x #174497 02:57 PM, 01 Aug 2020
    Подскажите, если я храню данные за последние 60 дней, PARTITION BY toYYYYMM(date) для меня будет не очень оптимальным, я прав, ведь всего будет две партиции? Вопрос таков: можно ли сделать toDayOfYear(date)? Будет ли ClickHouse понимать нужные партиции при выборке ... WHERE date > '2020-07-15? И если такой ключ для партиционирования не очень оптимален, то какой лучше взять?
  • https://t.me/clickhouse_ru
    можно сделать просто PARTITION BY date
    на самом деле там чуть хитрее и кликхаус хранит минимальные и максимальные значения столбца учавствующего в ключе партицирования, так что все будет ок
  • https://t.me/clickhouse_ru
    Спасибо. У меня вообще несколько вопросов накопилось. Правильно ли я понимаю, что если ключ партиционирования по дате, то в ORDER BY первым значением эту дату тоже полезно положить, особенно если в выборках эта дата почти всегда фигурирует? Правильно ли я понимаю исходя из этой иллюстрации, что порядок внутри ORDER BY имеет значение, верно? Где можно почитать про правильный выбор полей, которые нужно ложить в ORDER BY?
    MergeTree | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @purgatory_x #174500 03:08 PM, 01 Aug 2020
    Допустим запрос WHERE date > '2020-07-05' AND user_id = 100, при PARTITION BY date ORDER BY (date, user_id) будет выполнятся максимально эффективно. А что делать с таким запросом: WHERE date > '2020-07-05' AND event_id = 200?
  • https://t.me/clickhouse_ru
    > Правильно ли я понимаю, что если ключ партиционирования по дате, то в ORDER BY первым значением эту дату тоже полезно положить,
    если у вас партиционирование по дате, класть ее в ORDER BY нет никакого смысла.
    > порядок внутри ORDER BY имеет значение, верно?
    Да.
    > Где можно почитать про правильный выбор полей, которые нужно ложить в ORDER BY?
    Основное правило в начало идут низко кардинальные поля, по которым часто идет фильтрация
  • https://t.me/clickhouse_ru
    > если у вас партиционирование по дате, класть ее в ORDER BY нет никакого смысла.__
    Подскажите, почему? Смотрю сейчас тестовые данные в туториале, там именно так и сделано
  • https://t.me/clickhouse_ru
    Это две большие разницы:)
    в примере идет партицирование по месяцам, а в ORDER BY идет уже сама дата
  • https://t.me/clickhouse_ru
    @lnuynxa #174504 04:21 PM, 01 Aug 2020
    Если же ты сделаешь партицирование по дате, то у тебя в одной партиции будет одна и таже дата, и смысла от такой колонки в ORDER BY не будет.
  • https://t.me/clickhouse_ru
    Да. Но допустим если партиционирование по самой дате (а не по YYYYMM) разве внутри парта сортировка по дате не поможет отсекать большую часть данных при наличии в условии самой даты?
  • https://t.me/clickhouse_ru
    у тебя внутри парта будет только 1 дата, допустим '2020-08-10', вся колонка целиком одно и тоже значение, отсечь ничего не получится
  • https://t.me/clickhouse_ru
    @purgatory_x #174507 04:22 PM, 01 Aug 2020
    А. Я понял вас) там тип Date, действительно
  • https://t.me/clickhouse_ru
    @john_mi #174509 06:56 PM, 01 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @aivaskin #174510 10:20 PM, 01 Aug 2020
    Всем привет! Cтолкнулся с ошибкой 400 Bad request при batch insert в jdbc driver. Запрос выглядит так:

    http-outgoing-2 >> "POST /?query=INSERT+INTO+objects+ЗДЕСЬ МНОГО КОЛОНОК++FORMAT+TabSeparated&database=default&user=default&compress=1 HTTP/1.1
    http-outgoing-2 >> "Transfer-Encoding: chunked[\r][\n]"
    http-outgoing-2 >> "Host: localhost:33128[\r][\n]"
    http-outgoing-2 >> "Connection: Keep-Alive[\r][\n]"
    http-outgoing-2 >> "User-Agent: Apache-HttpClient/4.5.12 (Java/14)[\r][\n]"
    http-outgoing-2 >> "[\r][\n]"
    http-outgoing-2 >> "2f23[\r][\n]"
    http-outgoing-2 >> “ЗДЕСЬ ДАННЫЕ”

    То есть в случае batch запрос разбит на 2 части, 1 часть в query param, вторая в body. В документации нашел:

    Send the request as a URL ‘query’ parameter, or as a POST. Or send the beginning of the query in the ‘query’ parameter, and the rest in the POST (we’ll explain later why this is necessary). The size of the URL is limited to 16 KB, so keep this in mind when sending large queries.

    У меня как раз больше из-за большого числа колонок. А как быть то в этой ситуации?
  • https://t.me/clickhouse_ru
    @aivaskin #174511 10:26 PM, 01 Aug 2020
    Причем, если это отдельный insert, ошибки нет, строка запроса выглядит так:
    http-outgoing-2 >> "POST /?database=default&query_id=734db7fa-686d-4b66-831a-be65543b5e83&compress=1&user=default HTTP/1.1[\r][\n]"
    То есть весь запрос в body
  • 02 August 2020 (29 messages)
  • @732222294 #174514 12:51 AM, 02 Aug 2020
    Код состояния ответа "HTTP 400 Bad Request" указывает, что сервер не смог понять запрос из-за недействительного синтаксиса. Клиент не должен повторять этот запрос без изменений.
  • https://t.me/clickhouse_ru
    Если jdbc, то пользуйте preparedstatement :)
  • https://t.me/clickhouse_ru
    @aivaskin #174516 07:24 AM, 02 Aug 2020
    PreparedStatement использую
  • https://t.me/clickhouse_ru
    @ivymike_b #174517 08:20 AM, 02 Aug 2020
    Не оч понятна тогда связь с ошибкой http клиента
  • https://t.me/clickhouse_ru
    @aivaskin #174518 08:27 AM, 02 Aug 2020
    jdbc-драйвер использует org.apache.httpcomponents.httpclient
  • https://t.me/clickhouse_ru
    @Sablast #174519 09:51 AM, 02 Aug 2020
    подскажите, чтобы сделать дистрибуцию по типу UUID единственный вариант делать cityHash64(toString(UUID))? или как то еще можно?
  • https://t.me/clickhouse_ru
    Ну а там ? ? используете?)
  • https://t.me/clickhouse_ru
    да, используем
  • https://t.me/clickhouse_ru
    Ну, херня какая-нибудь) может там какие-нибудь кавычки используете в запросе и т.п.
  • https://t.me/clickhouse_ru
    @aivaskin #174523 10:12 AM, 02 Aug 2020
    похоже на
    Send the request as a URL ‘query’ parameter, or as a POST. Or send the beginning of the query in the ‘query’ parameter, and the rest in the POST (we’ll explain later why this is necessary). The size of the URL is limited to 16 KB, so keep this in mind when sending large queries.
    то есть если колонок меньше, меньше размер URL -> батч работает
  • https://t.me/clickhouse_ru
    @aivaskin #174524 10:14 AM, 02 Aug 2020
    это отсюда, если что https://clickhouse.tech/docs/en/interfaces/http/
    HTTP Interface | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @askjuise #174527 03:11 PM, 02 Aug 2020
    Коллеги, подскажите чем правильно построить агрегат по данным вида:
    datetime1, x, a
    datetime2, x, a
    datetime3, x, a
    datetime4, x, e
    datetime5, x, e
    datetime6, x, a

    на выходе хочется получить набор
    x, 3
    x, 2
    x, 1
  • https://t.me/clickhouse_ru
    select a, b, uniqExact(c)
    group by a,b
  • https://t.me/clickhouse_ru
    @askjuise #174529 03:14 PM, 02 Aug 2020
    спасибо
  • https://t.me/clickhouse_ru
    ну видимо допиливать jdbc драйвер
  • https://t.me/clickhouse_ru
    ну toString не нужен и даже вреден для перфоманса
  • https://t.me/clickhouse_ru
    Так не даёт поверху uuid применить
  • https://t.me/clickhouse_ru
    @Sablast #174533 03:27 PM, 02 Aug 2020
    Code: 53. DB::Exception: Received from 185.243.85.01:9000. DB::Exception: Sharding key expression does not evaluate to an integer type.
  • https://t.me/clickhouse_ru
    я имел в виду cityHash64(UUID)
  • https://t.me/clickhouse_ru
    Таки от uuid не работает. Мб просто сервер старый
  • https://t.me/clickhouse_ru
    Попробуйте сторонние разработки. На сайте есть ссылки, насколько помню, даже api совместимо на 100%, только имена пакетов сменить
  • https://t.me/clickhouse_ru
    @ivymike_b #174538 05:06 PM, 02 Aug 2020
    ))
  • https://t.me/clickhouse_ru
    Хм, попробу посмотреть, всем спасибо!
  • @saippuakauppias #174540 09:10 PM, 02 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @MakeReady #174541 11:10 PM, 02 Aug 2020
    стал полчать Code: 210. DB::NetException: Connection refused (127.0.0.1:9000)
  • https://t.me/clickhouse_ru
    @MakeReady #174542 11:10 PM, 02 Aug 2020
    в конфигах все открыто
  • https://t.me/clickhouse_ru
    @MakeReady #174543 11:22 PM, 02 Aug 2020
    починил
  • https://t.me/clickhouse_ru
    @MakeReady #174544 11:38 PM, 02 Aug 2020
    теперь
  • https://t.me/clickhouse_ru
    @MakeReady #174545 11:39 PM, 02 Aug 2020
    Received exception from server (version 20.5.4):
    Code: 514. DB::Exception: Received from . DB::Exception: Not found a storage to insert user
  • 03 August 2020 (192 messages)
  • https://t.me/clickhouse_ru
    @MakeReady #174547 03:12 AM, 03 Aug 2020
    при попытке создать пользователя командой CREATE USER
  • https://t.me/clickhouse_ru
    @MakeReady #174548 03:13 AM, 03 Aug 2020
    ошибка
  • https://t.me/clickhouse_ru
    @MakeReady #174549 03:13 AM, 03 Aug 2020
    Code: 514. DB::Exception: Received from localhost:9000. DB::Exception: Not found a storage to insert user
  • https://t.me/clickhouse_ru
    После обновления 19.16.13.54 —> 20.5.3.2 стала падать команда

    OPTIMIZE TABLE AAA.bbb FINAL DEDUPLICATE

    ошибка

    Code: 365, e.displayText() = DB::Exception: Output of TreeExecutor is not sorted (version 20.5.3.27 (official build))

    С чем может быть связанно? По отдельности FINAL и DEDUPLICATE - работают, вместе - нет. Раньше работало.
  • https://t.me/clickhouse_ru
    @Fawls #174551 04:57 AM, 03 Aug 2020
    Привет, есть ли в ClickHouse возможность сделать сводную таблицу в рамках запроса? Если есть подскажите оператор
  • https://t.me/clickhouse_ru
    обычно это на стороне приложения делается

    https://stackoverflow.com/questions/56074216/how-to-implement-pivot-in-clickhouse-just-like-in-dolphindb
    How to implement `pivot` in clickhouse just like in dolphindb

    I want to do some pivot ops to some data. Just like following. >>> df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two', ... 'two'], ... ...

  • https://t.me/clickhouse_ru
    @SergeyLossev #174553 07:54 AM, 03 Aug 2020
    Не пойму, почему не включается настройка max_partitions_per_insert_block, встроенная непосредственно в запрос. Её что, надо в конфиг писать? По-другому её не включить?

    INSERT INTO TABLE db.tb (...cols...)
    SELECT (...cols...)
    FROM ( /* сложно-вложенный запрос */ )
    SETTINGS max_partitions_per_insert_block = 0
  • https://t.me/clickhouse_ru
    Попробуйте 0 заменить на 1
  • https://t.me/clickhouse_ru
    @SergeyLossev #174555 07:55 AM, 03 Aug 2020
    Партиций, да, много, но не настолько, чтобы случайно отпартиционировать по времени или ид пользователя. Не совсем чайник ;)
  • Не все параметры работают через settings
  • https://t.me/clickhouse_ru
    Один? Так ведь оно в 100 упирается, а ноль отключает
  • Можно без конфигп выставить в сессии клиента или http api
  • https://t.me/clickhouse_ru
    Так если упирается, как вам эта настройка поможет? Если упирается, значит вставляете такие данные, что порождают много партов. Что изменит настройка?
  • Когда один раз надо балком прогрузить, эту настройку надо обходить либо менять, все правильно
  • https://t.me/clickhouse_ru
    Я отлично понимаю, что партов много. Но это второй вопрос. И причина, почему их больше 100, не из-за ошибки
  • @orlan_sar #174563 08:10 AM, 03 Aug 2020
    Привет всем. Как извлечь последние две цифры из числа?
  • https://t.me/clickhouse_ru
    Кастануть в строку и извлечь два символа с конца
  • https://t.me/clickhouse_ru
    Так сделайте на стороне приложения разбивку вставки так, чтобы в одной вставке были данные только одной партиции. Или выставляйте в таблицу с движком TinyLog
  • https://t.me/clickhouse_ru
    Или разделить на 100 и взять остаток от деления
  • https://t.me/clickhouse_ru
    целого числа?
  • @orlan_sar #174568 08:14 AM, 03 Aug 2020
    да
  • https://t.me/clickhouse_ru
    @floxard #174569 08:15 AM, 03 Aug 2020
    SELECT 123456789 % 100

    ┌─modulo(123456789, 100)─┐
    │ 89 │
    └────────────────────────┘
  • https://t.me/clickhouse_ru
    Неее, у меня таблица-приёмник MergeTree, и от неё мне никуда не деться
  • спасибо
  • спасибо
  • https://t.me/clickhouse_ru
    Так а что мешает вставить в TinyLog, а потом по партициям вставить в приемник на MergeTree? Вы же понимаете что лимит max_partitions_per_insert_block = 100 нифига не просто так? Что найдя способ вставить в КХ за раз кучу партиций вы в итоге выстрелите себе в ногу? Например перезапустите КХ и он будет стартовать два часа
  • https://t.me/clickhouse_ru
    помогите починить проблему, пожалуйста. Установил с нуля, все работает.
  • https://t.me/clickhouse_ru
    стартовать 2 часа он не будет, но просто сработает другой триггер когда слишком много будет партов для мержа

    то есть если у вас 100 партиций и у вас вставка 100 партов (кусков) по 1 в кажду партицию, то вы получаете засирание при мерже в бакграунде, на сортировке слиянием, потому что вам надо будет как минимум 200 партов прочитать чтобы смержить туда по 1 куску... в каждую из 100 партиций
  • https://t.me/clickhouse_ru
    @MakeReady #174576 08:45 AM, 03 Aug 2020
    не создает пользователей
  • Вам один раз перегнать данные или постоянно по 100 партиция за раз вставлять? В зависимости ответа на этот вопрос весь этот холивар погасить можно....
  • https://t.me/clickhouse_ru
    Да, я отлично понимаю все эти последствия. Но таблица уже исторически сложилось, и мне лишь нужно закинуть в неё данные, чтобы коллеги могли начать с ней работать, а уж потом буду думать на тему, что как оптимизировать. Да, перезапуск занимает минуты, но меня это не беспокоит, т.к. на скорость основной работы это не влияет, а если и влияет, то этого пока не заметно - всё летает
    Поэтому, собственно, и возник вопрос - то ли есть способ быстро обойти это ограничение, то ли нужно ещё делать обёртку на стороне, чтобы всё впихнуть по частям
  • https://t.me/clickhouse_ru
    @SergeyLossev #174579 08:57 AM, 03 Aug 2020
    Да и перезапуск КХ, если и происходит, то с периодичностью от недель до месяцев
  • @maxulan #174580 09:13 AM, 03 Aug 2020
    Добрый день, вопрос по storage policies: есть параметр move_factor - по заполнению диска на определенный процент, какие данные будут переносится на следующий диск: новые вставляемые или старые?
  • @maxulan #174581 09:16 AM, 03 Aug 2020
    В документации по конфигурированию нескольких томов этот момент не ясен: https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-multiple-volumes_configure
    MergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @r9odt #174582 09:35 AM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Ivan_Leontev #174583 09:40 AM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @ilya_lvbs #174584 09:41 AM, 03 Aug 2020
    Добрый день. Пытаюсь подружить кх и рэббит. При использовании rabbitmq_format = 'JSONAsString’, на выходе пустая строка, хотя с JSONEachRow все ок. У кого-нибудь был опыт похожий?
  • @scooby18 #174585 10:51 AM, 03 Aug 2020
    всем привет!
    получаю вот такую ошибку 2020.08.03 10:48:17.604931 [ 1 ] {} <Warning> Application: Listen [::]:8123 failed: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = DNS error: EAI: Address family for hostname not supported (version 20.5.2.7 (official build)). If it is an IPv6 or IPv4 address and your host has disabled IPv6 or IPv4, then consider to specify not disabled IPv4 or IPv6 address to listen in <listen_host> element of configuration file. Example for disabled IPv6: <listen_host>0.0.0.0</listen_host> . Example for disabled IPv4: <listen_host>::</listen_host>
    2020.08.03 10:48:17.605250 [ 1 ] {} <Warning> Application: Listen [::]:9000 failed: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = DNS error: EAI: Address family for hostname not supported (version 20.5.2.7 (official build)). If it is an IPv6 or IPv4 address and your host has disabled IPv6 or IPv4, then consider to specify not disabled IPv4 or IPv6 address to listen in <listen_host> element of configuration file. Example for disabled IPv6: <listen_host>0.0.0.0</listen_host> . Example for disabled IPv4: <listen_host>::</listen_host>
    2020.08.03 10:48:17.605503 [ 1 ] {} <Warning> Application: Listen [::]:9010 failed: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = DNS error: EAI: Address family for hostname not supported (version 20.5.2.7 (official build)). If it is an IPv6 or IPv4 address and your host has disabled IPv6 or IPv4, then consider to specify not disabled IPv4 or IPv6 address to listen in <listen_host> element of configuration file. Example for disabled IPv6: <listen_host>0.0.0.0</listen_host> . Example for disabled IPv4: <listen_host>::</listen_host>
    2020.08.03 10:48:18.107166 [ 54 ] {} <Error> void DB::DDLWorker::runMainThread(): Code: 999, e.displayText() = Coordination::Exception: All connection tries failed while connecting to ZooKeeper. nodes: 192.168.96.2:2183, 192.168.96.4:2181, 192.168.96.3:2182
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.2:2183
    Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4.: while receiving handshake from ZooKeeper (version 20.5.2.7 (official build)), 192.168.96.4:2181
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.3:2182
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.2:2183
    Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4.: while receiving handshake from ZooKeeper (version 20.5.2.7 (official build)), 192.168.96.4:2181
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.3:2182
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.2:2183
    Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4.: while receiving handshake from ZooKeeper (version 20.5.2.7 (official build)), 192.168.96.4:2181
    Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.5.2.7 (official build)), 192.168.96.3:2182

    в конфиге кх прописал:
    <listen_host>::</listen_host>
    <!--<listen_host>::</listen_host>-->
    <listen_host>0.0.0.0</listen_host>
  • @scooby18 #174586 10:51 AM, 03 Aug 2020
    подскажите куда копать? все это я запускаю в докерах
  • 【D】【J】 in ClickHouse не тормозит

    Можно без конфигп выставить в сессии клиента или http api

  • @scooby18 #174588 11:03 AM, 03 Aug 2020
    в конфиг файле указал <listen_host>::</listen_host>
  • https://t.me/clickhouse_ru
    Какой движок у таблицы?
  • @zhora9001 #174590 11:14 AM, 03 Aug 2020
    добрый день! изучаем вариант шардинга CH на несколько серверов (со старта – 5-10), пытаемся понять, в какую сторону смотреть правильнее. Основная задача - уметь постепенно растить кластер, добавляя новые сервера по мере заполнения старых. Правда ли, что в данном случае имеет смысл сразу делать "свою" схему шардирования и писать данные напрямую в шарды, а Distributed таблицы оставить только для запросов на чтение?

    P.S. джоинов пока что нет и не предвидется, максимум - мелкие, редко изменяющиеся словари, которые не жалко раскопировать на все шарды.
  • https://t.me/clickhouse_ru
    Вы config.xml на свой подменяете? Там в конфиге определен каталог где хранить xml-и с юзерами access path что-то.
  • https://t.me/clickhouse_ru
    groupArray
  • https://t.me/clickhouse_ru
    редактиру существующий
  • https://t.me/clickhouse_ru
    @MakeReady #174594 11:20 AM, 03 Aug 2020
    пути точно не менял, но, делал копию файла default-password.xml в users.d после чего сервер перестал пускать, шла мерджа. Файл грохнул, ошибка пропала и вновь стало можно подключиться, но после этого пропали все созданные пользователи кроме дефолтного и создать их заново не получается
  • https://t.me/clickhouse_ru
    ну видимо вы что-то сделали с путем к стораджу юзеров в config.xml
  • https://t.me/clickhouse_ru
    @MakeReady #174596 11:24 AM, 03 Aug 2020
    хм, сейчас перепроверю, но кажется он рядышком с конфигом лежит в виде ссылки
  • https://t.me/clickhouse_ru
    м-да... Вот только так и получилось

    Странно, что оно не работало, какие бы я параметры не передавал в секции SETTINGS вместе с запросом

    Может, в последнем релизе появился баг на эту тему?..
  • https://t.me/clickhouse_ru
    @ispanteleev #174598 11:28 AM, 03 Aug 2020
    Joined.
  • нет, не все параметры работают через SETTINGS
  • https://t.me/clickhouse_ru
    @patsevanton #174600 11:28 AM, 03 Aug 2020
    Подскажите пожалуйста, делаю по ошибке вставке в clickhouse
    https://gist.github.com/patsevanton/18dd67515593fd948dc22e1125fdee6c
    Missing columns: 'HIT' while processing query: - такой колонки нет, да и он не вставляет в колонку HIT, а вставляет в колонку upstream_cache_status со значением HIT

    делаю по этой инструкции - https://github.com/patsevanton/articles-to-habr/blob/master/Отправка-Nginx-логов-с-помощью-Vector-в-Clickhouse.md - там есть схема бд
    Nginx Vector Clickhouse Missing columns: 'HIT' while processing query

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

  • https://t.me/clickhouse_ru
    Просто мне удобно через Tabix работать, а там, как известно, сессии нет. Вот и не получается её задать
  • https://t.me/clickhouse_ru
    Так явно ведь кавычек нет upstream_cache_status = HIT
  • Apply all SETTINGS clauses as early as possible. by akuzm · Pull Request #11804 · ClickHouse/ClickHouse

    Among other things, this fixes max_memory_usage in settings clause -- didn't work before, because the memory limit is set when the query is added to the process list, and the settings were ...

  • @den_crane не подскажешь куда копать, я на ВМ запускаю в докере 2 КХ и 3 ЗК
  • https://t.me/clickhouse_ru
    Зачем вы указываете два listen_host? Ipv6 покарывает ipv4
  • https://t.me/clickhouse_ru
    @evsign #174606 11:38 AM, 03 Aug 2020
    Подскажите плиз, в чём может быть проблема?
    Есть 2 таблицы, между ними связь по id

    Вторая таблица распартиционированна по этому id, пк - id. Данных в ней 700кк+. Селекты c where id in/= по этой таблице работают быстро.

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

    Запрос вида
    select id, name from table_one any left join table_two on table_one.id = table_two.id;

    Кх что ли на такой запрос не вешает никаких констрейнтов на правую таблицу для выборки данных для джойна?
  • пробовал и с одним, ошибка аналагична , заметил что для докера есть файл docker_related_config.xml
  • https://t.me/clickhouse_ru
    Клик поднимает правую таблицу в память, и да там оптимизаций на джойны почти нет
  • https://t.me/clickhouse_ru
    Не используются индексы для джойнов. Специально. Потому что это olap. И да запихивает в память правую таблицу.
  • https://t.me/clickhouse_ru
    @evsign #174610 11:41 AM, 03 Aug 2020
    всё-таки не фильтрует значит сначала правую таблицу( Спасибо.
  • https://t.me/clickhouse_ru
    Но никто не мешает тебе вместо правой таблицы сделать подзапрос из правой с нужными фильтрами
  • можете сделать select from righttable where (id,id2) in (select id, id2 from lefttable)
    обычно помогает, сначала выполнится подзапрос, отфильтрует правую, загонит в память, потом приджойнит
  • https://t.me/clickhouse_ru
    @evsign #174613 11:42 AM, 03 Aug 2020
    Ну в моём кейсе легче уже будет 2 запроса сделать. А то там получается, что просто абсолютно одинаковый запрос придётся в where , в подзапросе джойна пихать, что бы идшки в where засунуть
  • https://t.me/clickhouse_ru
    пересоздал конфиг с нуля, заработало, на досуге найду где внутри рука дрогнула
  • https://t.me/clickhouse_ru
    @bogatyreva_elena #174615 11:52 AM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @mrworks #174616 12:05 PM, 03 Aug 2020
    Добрейшего времени суток всем
    сталкнулся со следующей проблемой
    кх дефолтно запустил в docker
    и возникла проблема max_partitions_per_insert_block.
    config.xml не могу найти подскажите где он может находиться или как его сгенерировать?
  • https://t.me/clickhouse_ru
    @avkapustin #174617 12:09 PM, 03 Aug 2020
    /etc/clickhouse-server/config.xml
  • https://t.me/clickhouse_ru
    @ispanteleev #174618 12:12 PM, 03 Aug 2020
    Всем привет, никогда не сталкивались с такой ошибкой при селекте в odbc сорс?
    ODBCHandler: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: ODBC (version 19.17.6.36
  • https://t.me/clickhouse_ru
    трейс вызова с clickhouse-odbc-bridge
  • https://t.me/clickhouse_ru
    К сожалению нет ни файла ни дириктории
  • Оставь эти настройки только в файле для докера docker_related_config.xml и убери их из config.xml. Оставь только ipv4
  • вроде сделал, сейчас нет ошибок
  • Ок 👌
  • @scooby18 #174624 12:25 PM, 03 Aug 2020
    но вставил данные в одну табличку, а на другой шарде не появились
  • https://t.me/clickhouse_ru
    а как проверяли?
    docker run --rm -it yandex/clickhouse-server:20.5 sh -c "ls -la /etc/clickhouse-server"
  • https://t.me/clickhouse_ru
    руками)
    спасибо команда помогла))
  • https://t.me/clickhouse_ru
    вы таблицу как создали? покажите
  • https://t.me/clickhouse_ru
    эта настрока в users.xml должна быть, в профиле пользователя, но скорее всего вам она не нужна
  • https://t.me/clickhouse_ru
    изначально запускал следующим скриптом
    docker run -d -p 8123:8123 --name my-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server
  • https://t.me/clickhouse_ru
    "analytics.shop" должно быть "analytics"."shop"
  • https://t.me/clickhouse_ru
    @DmitrijKovalenko #174631 12:41 PM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    create table покажите
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    class HistoricalOHLC(Model):
    exchange = StringField()
    coin_pair = StringField()
    open = Float32Field()
    high = Float32Field()
    low = Float32Field()
    close = Float32Field()
    timestamp_date = DateTimeField()

    engine = MergeTree(partition_key=(F.toYYYYMMDD(timestamp_date), 'coin_pair'),
    order_by=("exchange", "coin_pair", "timestamp_date"))

    @classmethod
    def table_name(cls):
    return 'historical_ohlc’
  • https://t.me/clickhouse_ru
    дефолт
    там таблицы скрипт создает и тип не указывает
    кажется в этом случае дефолт это MergeTree

    сервер в единичном экземпляре (не кластер), если это важно
  • https://t.me/clickhouse_ru
    кто-нибудь?)
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #174636 #174637 01:24 PM, 03 Aug 2020
    через isql работает?
  • https://t.me/clickhouse_ru
    ага
  • https://t.me/clickhouse_ru
    @ispanteleev #174639 01:26 PM, 03 Aug 2020
    он и поля вытягивает с таблицы
  • https://t.me/clickhouse_ru
    @MakeReady #174640 01:27 PM, 03 Aug 2020
    @den_crane вероятно вот, в старом конфиге этого атрибута не было
  • https://t.me/clickhouse_ru
    @MakeReady #174641 01:27 PM, 03 Aug 2020
    <!-- Path to folder where users and roles created by SQL commands are stored. -->
    <access_control_path>/var/lib/clickhouse/access/</access_control_path>
  • https://t.me/clickhouse_ru
    кажется. Мне Кажется вы врете и там не MT и тогда deduplicate делает ничего.

    https://github.com/ClickHouse/ClickHouse/issues/11572
  • https://t.me/clickhouse_ru
    ну я так и сказал сразу
  • https://t.me/clickhouse_ru
    @MakeReady #174644 01:32 PM, 03 Aug 2020
    👍
  • https://t.me/clickhouse_ru
    @MakeReady #174645 01:32 PM, 03 Aug 2020
    не подскажете еще какой самый простой и быстрый способ сохранять копию базы. Небольшая, на десяток гигов.
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #174639 #174646 01:32 PM, 03 Aug 2020
    а если попробовать через системный DSN, прописать все в odbc.ini и в КХ отдавать только название dsn?
  • https://t.me/clickhouse_ru
    @Bartimeus33nt10 #174647 01:33 PM, 03 Aug 2020
    Всем привет!
    4 реплики версии 19.16.13.54, таблица CollapsingMergeTree
    1) Создаю таблицу
    2) Пишу в таблицу одну партицию - есть записи
    3) Мутацией удаляю эту партицию, дожидаюсь is_done = 1 на всех репликах
    4) Снова пишу одну партицию - таблица пустая

    Смотрел по query_log - инсерт партиции есть, логам он после мутации
    Смотрел parts - последний парт создан мутацией и он пустой
    Делал до записи SYSTEM SYNC REPLICA - не помогло

    Куда копать и какие логи смотреть?
  • https://t.me/clickhouse_ru
    с этого начинал, результат тот же (
  • https://t.me/clickhouse_ru
    а что не работает-то? У вас кавычки " не в том месте, что за база вообще? PG ?
  • https://t.me/clickhouse_ru
    Replicated insert deduplication
  • https://t.me/clickhouse_ru
    @den_crane #174651 01:35 PM, 03 Aug 2020
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/

    Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. Запрос INSERT идемпотентный. Параметры дедуплицирования регулируются настройками сервера merge_tree
  • https://t.me/clickhouse_ru
    да, база postgres, кавычки не я расставляю, мой селект из кли выглядит вот так:
    SELECT * FROM odbc('DSN=postgres;USERNAME=ch_dict;PASSWORD=verystrongpass;PORT=5432;DATABASE=analytics','analytics.shop')
  • https://t.me/clickhouse_ru
    перепроверил (show create table) - там MergeTree
    эта таблица существует давно и до обновления кликхауса FINAL DEDUPLICATE работало без замечаний
    что-то изменилось после обновления на последнюю версию
  • https://t.me/clickhouse_ru
    Кликхаус никогда не запишет снова уже ранее записанный блок данных? Неважно сколько времени прошло?
    А если мутацией стерт? Или схлопнулся?
  • @inscaven #174655 01:44 PM, 03 Aug 2020
    Подскажите, можно ли создать ROW POLICY для всех таблиц в некоторой БД ?
    запрос
    CREATE ROW POLICY filter ON mydb.* FOR SELECT USING …
    ругается что Expected identifier
  • https://t.me/clickhouse_ru
    ну так должно быть просто shop
  • https://t.me/clickhouse_ru
    @ispanteleev #174657 01:45 PM, 03 Aug 2020
    по документации schema_name.table_name, емнип
  • https://t.me/clickhouse_ru
    попробуйте 20.5.4.40
  • https://t.me/clickhouse_ru
    ссылку?
  • https://t.me/clickhouse_ru
    о, эту версию контейнером выложили пару дней назад
    попробую, спасибо!
  • https://t.me/clickhouse_ru
    Ваша правда, переделал: SELECT * FROM odbc('DSN=postgres','analytics','shop'). Итог тот же.
  • https://t.me/clickhouse_ru
    вы знаете, а ведь помогло!
    обновился - запрос перестал падать на FINAL DEDUPLICATE
    мое почтение!
  • @vvvjhaq #174663 01:56 PM, 03 Aug 2020
    Добрый день. Есть механизм разбиения числа на разряды?
  • https://t.me/clickhouse_ru
    например что должно получится? массив?
  • нет, как понимаю строка
  • @vvvjhaq #174667 02:00 PM, 03 Aug 2020
    123456 должно стать 123.456
    аналитики, говорят, так проще для восприятия)))
  • https://t.me/clickhouse_ru
    так а КХ тут при чем? Это приложение должно делать?
  • нет, хочу сделать это в КХ
  • @vvvjhaq #174670 02:02 PM, 03 Aug 2020
    если возможно
  • https://t.me/clickhouse_ru
    @den_crane #174671 02:06 PM, 03 Aug 2020
    нет, невозможно
  • ок, спасибо)
  • https://t.me/clickhouse_ru
    в смысле итог? не работает?
  • https://t.me/clickhouse_ru
    да, в конце та же ошибка
  • https://t.me/clickhouse_ru
    и что там опять кавычки как раньше? FROM "analytics.shop" ?
  • https://t.me/clickhouse_ru
    нет, кавычки "analytics"."shop", я приложил выше трейс. но после запроса опять
    <Error> ODBCHandler: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: ODBC (version 19.17.6.36
  • https://t.me/clickhouse_ru
    Спасибо за наводку, проблема решена!

    Кому интересно - вот настройки дедупликации для MergeTree в MergeTreeSettings.h
    replicated_deduplication_window, 100
    "How many last blocks of hashes should be kept in ZooKeeper (old blocks will be deleted)."
    replicated_deduplication_window_seconds, 7 * 24 * 60 * 60 /* one week */
    "Similar to \"replicated_deduplication_window\", but determines old blocks by their lifetime. Hash of an inserted block will be deleted (and the block will not be deduplicated after) if it outside of one \"window\". You can set very big replicated_deduplication_window to avoid duplicating INSERTs during that period of time."
  • https://t.me/clickhouse_ru
    а как у вас описан driver в odbc.ini ?
  • https://t.me/clickhouse_ru
    ойойой. Не трогайте это никогда.

    Вам нужно либо добавить id инсерта в инсерт, либо просто выключить во время втсавки insert_deduplicate=0
  • https://t.me/clickhouse_ru
    нет, я точно трогать не буду
  • https://t.me/clickhouse_ru
    @Bartimeus33nt10 #174682 02:20 PM, 03 Aug 2020
    просто нашел где и сколько
  • https://t.me/clickhouse_ru
    @Bartimeus33nt10 #174683 02:20 PM, 03 Aug 2020
    да, добавлю колонку
  • https://t.me/clickhouse_ru
    odbcinst:
    [PostgreSQL Unicode]
    Description=PostgreSQL ODBC driver (Unicode version)
    Driver=psqlodbcw.so
    Setup=psqlodbcw.so
    Debug=0
    CommLog=1
    UsageCount=1
    odbc.ini:
    [DEFAULT]
    Driver = postgres

    [postgres]
    Description = PostgreSQL connection to postgresql
    Driver = PostgreSQL Unicode
    Protocol = 10
    ReadOnly = No
    RowVersioning = No
    ShowSystemTables = No
    Servername = foo.bar
    Database = analytics
    Port = 5432
    USERNAME = ch_dict
    PASSWORD = verystrongpass
  • https://t.me/clickhouse_ru
    с абсолютным путем аналогично
  • https://t.me/clickhouse_ru
    >Driver = postgres

    это неправльно, нужен полный путь в либе .so
  • https://t.me/clickhouse_ru
    @den_crane #174687 02:24 PM, 03 Aug 2020
    полный путь к driver /usr/lib..../

    DRIVER = /usr/local/lib/libmyodbc5w.so
    обязателен!
    https://clickhouse.tech/docs/en/operations/table_engines/odbc/
    ODBC | ClickHouse Documentation

    ODBC Allows ClickHouse to connect to external databases via ODBC. To safely implement ODBC connections, ClickHouse uses

  • https://t.me/clickhouse_ru
    @troy_borshevich #174688 02:32 PM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    вот тут полный путь нужен Driver = PostgreSQL Unicode
  • https://t.me/clickhouse_ru
    @CatWithTail #174690 02:44 PM, 03 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    да, я понял, уже делал, но поменял еще раз. Но не помогло
  • https://t.me/clickhouse_ru
    смущает то, что все работает через isql, + я вижу, что до постгреса долетают запросы для парсинга полей в таблице
  • https://t.me/clickhouse_ru
    isql работает в вашем окружении, odbcbridge форкается и не видит драйвера чаще всего (зависит от дистрибутива линукса)
  • https://t.me/clickhouse_ru
    @CatWithTail #174694 02:47 PM, 03 Aug 2020
    @den_crane Добрый день!
    При попытке даунгрейда 20.5->19.17.10
    Clickhouse перестал стартовать, в логах записи:

    ...
    DB::Exception: Cannot create object 'asynchronous_metric_log' from query ATTACH TABLE asynchronous_metric_log
    ...
    Подскажите пожалуйста, как это можно поправить?
  • https://t.me/clickhouse_ru
    >что до постгреса долетают запросы для парсинга полей в таблице

    тогда надо смотреть ошибки в логе odbcbridge, поищу как логирование там включить
  • https://t.me/clickhouse_ru
    удалите все таблицы из базы system / data и metadata

    rm -rf /var/lib/clickhouse/metadata/system/*
    rm -rf /var/lib/clickhouse/data/system/*
  • https://t.me/clickhouse_ru
    я прибил демон и запустил bridge с уровнем логирования trace, собственно все что я постил ранее в аттаче - его аутпут
  • https://t.me/clickhouse_ru
    Спасибо, сейчас попробую
  • https://t.me/clickhouse_ru
    Если не ошибаюсь, он тогда пишет 'Data source name not found, and no default driver specified'
  • https://t.me/clickhouse_ru
    Спасибо, вы великолепны!
  • https://t.me/clickhouse_ru
    OK, а просто select 1 работает?
    непонятно почему ошибка обрывается посередине
  • https://t.me/clickhouse_ru
    Но теперь при попытке инсёртить в старые таблицы, сталкваюсь с таким:
    <Error> executeQuery: Code: 53, e.displayText() = DB::Exception: Type mismatch in IN or VALUES section. Expected: UInt16. Got: String (version 19.17.10.1 (official build)) (from [::ffff:10.1.4.6]:39742) (in query: INSERT INTO nginx.webservers (logdate, logdatetime, hostname, syslogtag, message, clientip, ident, auth, verb, request, httpv, response, bytes, referrer, agent, blob ) values ), Stack trace:
  • https://t.me/clickhouse_ru
    Почему-то конвертнуло его в SELECT "event_time" FROM "analytics"."shop"
  • https://t.me/clickhouse_ru
    ну странно, странная ошибка, а если трассировку в odbc драйвере включить, что там?
  • https://t.me/clickhouse_ru
    это не из-за даунгрейда. это какой-то кривой sql
  • https://t.me/clickhouse_ru
    Спасибо, проверю!
  • https://t.me/clickhouse_ru
    Тоже делал, спамится много всего, но как это читать - не знаю. Птичий язык
  • https://t.me/clickhouse_ru
    не похоже:

    INSERT INTO nginx.webservers (logdate, logdatetime, hostname, syslogtag, message, clientip, ident, auth, verb, request, httpv, response, bytes, referrer, agent, blob ) values ('2020-08-03', '2020-08-03 15:19:09', 'pubweb1', 'nginx', 'XXX - - [03/Aug/2020:15:19:09 +0000] \"GET /packages/mainline/debian/dists/stretch/InRelease HTTP/1.1\" 200 2866 \"-\" \"Debian APT-HTTP/1.3 (1.4.10)\" \"-\"', 'XXX', '-', '-', 'GET', '/packages/mainline/debian/dists/stretch/InRelease', '1.1', '200', '2866', '-', 'Debian APT-HTTP/1.3 (1.4.10)', '');
    logdate Date
    logdatetime DateTime
    hostname String
    syslogtag String
    message String
    clientip String
    ident String
    auth String
    verb String
    request String
    httpv String
    response UInt16
    bytes UInt64
    referrer String
    agent String
    blob String
  • https://t.me/clickhouse_ru
    response UInt16 --- '200'
  • https://t.me/clickhouse_ru
    @den_crane #174711 03:27 PM, 03 Aug 2020
    должно быть 200
  • https://t.me/clickhouse_ru
    Ого, значит ошибка давно жила. Спасибо!
  • Type mismatch in IN or VALUES section. Expected: UInt16. Got: String
  • @vvvjhaq #174714 03:28 PM, 03 Aug 2020
    ответили
  • https://t.me/clickhouse_ru
    не знаю тогда, сделайте тикет, но 19.17 уже не саппортится
  • https://t.me/clickhouse_ru
    Спасибо за попытку :)
  • https://t.me/clickhouse_ru
    @den_crane #174717 04:04 PM, 03 Aug 2020
    интересно , видимо КХ стал прощать несовпадение типов при инсертах

    20.5.3
    create table xxxxtest( A UInt16) Engine=Log;
    insert into xxxxtest values('200')
    Ok
  • @scooby18 #174718 04:08 PM, 03 Aug 2020
    Кто-то делал КХ в докерах? мне необходимо для тестов развернуть одну шарду с двумя реплликами. Вроде все сделал, но при инсерте данные не попадают во вторую реплику. При этом если из контейнера сделать echo stat | nc zookeeper1 2181 то ЗК отдает нормальный отввет все ок, и проверял на обоих репликах
  • хех, ну это ж хорошо

    * все типы должны быть приведены вручную, автокастинг это неправильно
    * мы сделаем приведения типов внутри одной категории
    * в SQL de-facto implicit casting это норма <— вы находитесь здесь
  • https://t.me/clickhouse_ru
    реплики КХ не видят друг друга? select * from system.replication_queue на обоих
  • @scooby18 #174721 04:50 PM, 03 Aug 2020
    теперь что-то и ddl да же сделать не может
  • @scooby18 #174723 05:10 PM, 03 Aug 2020
    @den_crane а может быть из-за того что я не так табличку создаю ?
  • https://t.me/clickhouse_ru
    я кинул кубик, выпало 3,
    3 -- это потому что в докере у вас КХ, и hostname -f у вас в докере localhost
  • ох! вспомнил вы мне ранее говорили
  • @scooby18 #174726 05:14 PM, 03 Aug 2020
    @den_crane спасибо, посмотрю
  • @scooby18 #174727 05:14 PM, 03 Aug 2020
    @den_crane а не напомните опцию в КХ
  • https://t.me/clickhouse_ru
    @unamedrus #174728 05:15 PM, 03 Aug 2020
    select hostName();
  • https://t.me/clickhouse_ru
    interserver_http_host
  • https://t.me/clickhouse_ru
    да, это добавили для совместимости с другими субд, для WHERE должно тоже работать
    select number FROM numbers(10) WHERE number='1'
  • Но при репликации это не влияет как я понимаю или ошибаюсь?
  • https://t.me/clickhouse_ru
    @aksimemor #174732 06:17 PM, 03 Aug 2020
    Подскажите, из-за чего могут быть такие ошибки при компиляции odbc драйвера на MacOs

    https://pastebin.com/NuNuz1Zi
    clickhouse-odbc-2/driver/attributes.h:123:28: error: no viable overloade - 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
    @aksimemor #174733 06:18 PM, 03 Aug 2020
    ошибки возникают после 91% установки
  • https://t.me/clickhouse_ru
    это как раз для репликации
  • почему в КХ до сих пор не пофиксили ТТЛ?
  • https://t.me/clickhouse_ru
    @den_crane #174737 06:52 PM, 03 Aug 2020
    TTL кстати вроде пофикшен
  • https://t.me/clickhouse_ru
    @den_crane #174738 06:53 PM, 03 Aug 2020
    и кстати, там например некоторые "баги" совсем и не баги
    https://github.com/ClickHouse/ClickHouse/pull/13252#issuecomment-667734024
    Remove empty parts after they were pruned by TTL by CurtizJ · Pull Request #13252 · ClickHouse/ClickHouse

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

  • по полной перезаписи всех партов на materialize ttl надо будет проверить на последней, оно тут не упомянуто https://github.com/ClickHouse/ClickHouse/issues/10128
    Roadmap to improve TTL delete and TTL move functionality · Issue #10128 · ClickHouse/ClickHouse

    Current implementation of TTL delete and TTL move is not very intuitive or user friendly. Usability OPTIMIZE FINAL should do everything and get table to the correct state in regards to TTL TTL oper...

  • там совсем пусто, приэтом ошибок в КХ нету
  • https://t.me/clickhouse_ru
    ну а таблица как создана? Engine ....
    что в system.marcos ?
  • https://t.me/clickhouse_ru
    @v1gital #174742 08:59 PM, 03 Aug 2020
    Парни привет! Можете посоветовать open-source clickstream коллекторы?
    И уж совсем странный вопрос - встречали коллекторы, которые в базе умеют определять основные типы ивентов на странице?
  • CREATE TABLE test.blogger_likers ON CLUSTER dev ( created Date DEFAULT CAST(now(), 'Date'), post_id UInt64, blogger_id UInt64, liker_id UInt64, liker_username String ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/test/blogger_likers', '{replica}') PARTITION BY toYYYYMM(created) ORDER BY (blogger_id, liker_id) SAMPLE BY liker_id SETTINGS index_granularity = 8192
  • @1231956109 #174744 10:25 PM, 03 Aug 2020
    Joined.
  • 04 August 2020 (194 messages)
  • https://t.me/clickhouse_ru
    @AgeevV7 #174745 04:14 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @AgeevV7 #174746 04:15 AM, 04 Aug 2020
    Парни привет, есть у кого дашборд для графаны с метриками из клик хауса для прометея, а не для экспортера?
  • https://t.me/clickhouse_ru
    @AgeevV7 #174747 04:15 AM, 04 Aug 2020
    поделитесь пожалуйста json файликом
  • https://t.me/clickhouse_ru
    @A_L_E_KS_E_Y #174748 05:07 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @cmenshenin #174749 07:14 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #174750 07:36 AM, 04 Aug 2020
    Коллеги, приветствую!
    Подскажите, в чем может быть проблема?

    Есть запрос, он возвращает 594 строки:
    SELECT id
    FROM shop_clients
    WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))) AND (shop_clients.is_deleted != 'Y')

    594 rows in set. Elapsed: 0.040 sec. Processed 1.88 million rows, 37.63 MB (47.12 million rows/s., 942.76 MB/s.)

    Если обавляем вывод еще одной колонки — количество результирующих строк сразу вырастает на три порядка:
    SELECT id, phone
    FROM shop_clients
    WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))) AND (shop_clients.is_deleted != 'Y')

    840948 rows in set. Elapsed: 0.171 sec. Processed 1.88 million rows, 81.63 MB (10.98 million rows/s., 476.61 MB/s.)

    ENGINE = MergeTree.

    При этом если посчитать строки, то вместо 840948 опять будет будет 594:
    SELECT count(1)
    FROM
    (
    SELECT
    id,
    phone
    FROM shop_clients
    WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))) AND (shop_clients.is_deleted != 'Y')
    )

    ┌─count(1)─┐
    │ 594 │
    └──────────┘

    Характер использования таблицы такой: она раз в период дропается, создается заново и в нее с нуля консольным клиентов импортируется tsv, содержащий дама mysql-ной таблицы.

    Спасибо!
  • https://t.me/clickhouse_ru
    какая версия кх?
  • https://t.me/clickhouse_ru
    Покажите show create table shop_clients
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #174753 07:56 AM, 04 Aug 2020
    ClickHouse server version 19.16.3 revision 54427.

    `
    SHOW CREATE TABLE shop_clients

    ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #174754 07:56 AM, 04 Aug 2020
    │ CREATE TABLE rfm_db_opinion.shop_clients (`id` Int64, date_add Nullable(DateTime), date_upd Nullable(DateTime), uid Nullable(String), site_user_id Int32, local_id Nullable(String), full_name Nullable(String), first_name Nullable(String), middle_name Nullable(String), last_name Nullable(String), email Nullable(String), email_orig Nullable(String), email_validation_code Int32, email_validation_date Nullable(DateTime), email_edited String, email_error_count Int32, phone Nullable(String), phone_orig Nullable(String), phone_type Nullable(Int32), phone_validation_code Int32, phone_validation_date Nullable(DateTime), phone_edited String, phone_error_count Int32, push_id Nullable(String), timezone Nullable(String), sex Nullable(String), birth_date Nullable(UInt64), country Nullable(String), city Nullable(String), zip Nullable(String), register_date Nullable(DateTime), first_order_date Nullable(DateTime), first_order_number Nullable(String), first_order_items_sum Float32, last_order_id Int64, last_order_date Nullable(DateTime), last_order_number Nullable(String), last_order_items_sum Float32, order_cnt Int32, order_average_check Float32, order_sum Float32, order_cnt_rfm Int32, order_average_check_rfm Float32, order_sum_rfm Float32, last_visit_date Nullable(DateTime), last_visit_days Int32, r_seg_now Int32, f_seg_now Int32, m_seg_now Int32, r_seg_prev Int32, f_seg_prev Int32, m_seg_prev Int32, rfm_date_upd Nullable(DateTime), bonus_active Float32, bonus_expect_activate Float32, bonus_expect_deactivate Float32, bonus_expect_deactivate_next_date Nullable(DateTime), bonus_expect_deactivate_next_value Float32, subscribe_email String, subscribe_sms String, subscribe_push String, active String, in_global_control_group String, integer_1 Nullable(Int32), integer_2 Nullable(Int32), integer_3 Nullable(Int32), integer_4 Nullable(Int32), integer_5 Nullable(Int32), integer_6 Nullable(Int32), integer_7 Nullable(Int32), integer_8 Nullable(Int32), integer_9 Nullable(Int32), integer_10 Nullable(Int32), integer_11 Nullable(Int32), integer_12 Nullable(Int32), integer_13 Nullable(Int32), integer_14 Nullable(Int32), integer_15 Nullable(Int32), integer_16 Nullable(Int32), integer_17 Nullable(Int32), integer_18 Nullable(Int32), integer_19 Nullable(Int32), integer_20 Nullable(Int32), integer_21 Nullable(Int32), integer_22 Nullable(Int32), integer_23 Nullable(Int32), integer_24 Nullable(Int32), integer_25 Nullable(Int32), integer_26 Nullable(Int32), integer_27 Nullable(Int32), integer_28 Nullable(Int32), integer_29 Nullable(Int32), integer_30 Nullable(Int32), integer_31 Nullable(Int32), integer_32 Nullable(Int32), integer_33 Nullable(Int32), integer_34 Nullable(Int32), integer_35 Nullable(Int32), double_1 Nullable(Float32), double_2 Nullable(Float32), double_3 Nullable(Float32), double_4 Nullable(Float32), double_5 Nullable(Float32), double_6 Nullable(Float32), double_7 Nullable(Float32), double_8 Nullable(Float32), double_9 Nullable(Float32), double_10 Nullable(Float32), double_11 Nullable(Float32), double_12 Nullable(Float32), double_13 Nullable(Float32), double_14 Nullable(Float32), double_15 Nullable(Float32), double_16 Nullable(Float32), double_17 Nullable(Float32), double_18 Nullable(Float32), double_19 Nullable(Float32), double_20 Nullable(Float32), date_1 Nullable(DateTime), date_2 Nullable(DateTime), date_3 Nullable(DateTime), date_4 Nullable(DateTime), date_5 Nullable(DateTime), date_6 Nullable(DateTime), date_7 Nullable(DateTime), date_8 Nullable(DateTime), date_9 Nullable(DateTime), date_10 Nullable(DateTime), date_11 Nullable(DateTime), date_12 Nullable(DateTime), date_13 Nullable(DateTime), date_14 Nullable(DateTime), date_15 Nullable(DateTime), date_16 Nullable(DateTime), date_17 Nullable(DateTime), date_18 Nullable(DateTime), date_19 Nullable(DateTime), date_20 Nullabl
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #174755 07:56 AM, 04 Aug 2020
    e(DateTime), string_1 Nullable(String), string_2 Nullable(String), string_3 Nullable(String), string_4 Nullable(String), string_5 Nullable(String), string_6 Nullable(String), string_7 Nullable(String), string_8 Nullable(String), string_9 Nullable(String), string_10 Nullable(String), string_11 Nullable(String), string_12 Nullable(String), string_13 Nullable(String), string_14 Nullable(String), string_15 Nullable(String), string_16 Nullable(String), string_17 Nullable(String), string_18 Nullable(String), string_19 Nullable(String), string_20 Nullable(String), boolean_1 Nullable(String), boolean_2 Nullable(String), boolean_3 Nullable(String), boolean_4 Nullable(String), boolean_5 Nullable(String), boolean_6 Nullable(String), boolean_7 Nullable(String), boolean_8 Nullable(String), boolean_9 Nullable(String), boolean_10 Nullable(String), boolean_11 Nullable(String), boolean_12 Nullable(String), boolean_13 Nullable(String), boolean_14 Nullable(String), boolean_15 Nullable(String), boolean_16 Nullable(String), boolean_17 Nullable(String), boolean_18 Nullable(String), boolean_19 Nullable(String), boolean_20 Nullable(String), region_id Nullable(Int32), is_deleted String, ch_date Date) ENGINE = MergeTree(ch_date, site_user_id, 8192) │
    └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    `
  • @668450178 #174756 08:57 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @romask3 #174757 08:59 AM, 04 Aug 2020
    Всем привет. Есть запрос KILL QUERY WHERE query_id = 'smth'. А можно как-то узнать id запроса, если я все запросы делаю через JDBC официальный драйвер?
  • Ну если доступна табличка system.processes, там лежит
  • https://t.me/clickhouse_ru
    @romask3 #174759 09:03 AM, 04 Aug 2020
    Таблица то есть. Тут тогда делать SELECT query_id FROM system.processes WHERE query = 'SELECT * FROM smth'?
  • query_id какого запроса вам нужно? Если SELECT * FROM smth, то да, но мб там в query свои символы есть, точно не скажу
  • https://t.me/clickhouse_ru
    @romask3 #174761 09:07 AM, 04 Aug 2020
    Ну да, там добавляется FORMAT
  • https://t.me/clickhouse_ru
    А такое поведение только при добавлении колонки phone или любой? Вообще структура таблицы очень странная, я бы integer_N и остальные такие же вынес в массивы. И у вас синтаксис таблицы устаревший, замените на актуальный с PARTITION и ORDER
  • https://t.me/clickhouse_ru
    @ovv_wo #174763 09:11 AM, 04 Aug 2020
    Joined.
  • @OlegMajboroda #174764 09:38 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @DmitriyKozeev #174765 09:39 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @xx264 #174766 09:48 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    Согласен — это legacy-кусок, который в следующем квартале будет переписываться и актуализироваться. Но пока надо как-то с этим дожить. Такое странное поведение только при добавлении поля phone. С любым другим — всё нормально. Более того, если сделать SELECT phone FROM shop_clients <…> — то тоже всё корректно отрабатывает -- возвращает 594 строки.
    Еще из удивительного, если удалить одно из условий, то тоже нормально отрабатывает:
    SELECT id, phone
    FROM shop_clients
    WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11)));

    594 rows in set. Elapsed: 0.042 sec. Processed 1.88 million rows, 37.63 MB (44.87 million rows/s., 897.73 MB/s.)

    SELECT id, phone
    FROM shop_clients
    WHERE (integer_2 != toInt32(1737)) AND (integer_2 != toInt32(1761)) AND (integer_2 != toInt32(1762)) AND (integer_2 != toInt32(1736)) AND (integer_2 != toInt32(1763)) AND (integer_2 != toInt32(1787)) AND (integer_2 != toInt32(1788)) AND (integer_30 = toInt32(1)) AND (integer_9 = toInt32(30)) AND (region_id IN (toInt32(1), toInt32(2), toInt32(3), toInt32(4), toInt32(5), toInt32(6), toInt32(7), toInt32(8), toInt32(9), toInt32(10), toInt32(11))) AND (shop_clients.is_deleted != ‘Y’);

    840948 rows in set. Elapsed: 0.204 sec. Processed 1.88 million rows, 81.63 MB (9.21 million rows/s., 399.63 MB/s.)
  • https://t.me/clickhouse_ru
    Советую попробовать переписать сейчас, ваш синтаксис устаревший, возможно с ним что-то ломает запрос
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #174769 09:57 AM, 04 Aug 2020
    Попробуем
  • https://t.me/clickhouse_ru
    @VladislavVakhruhev #174770 10:40 AM, 04 Aug 2020
    Подскажите пожалуйста. Есть кластер с ReplicatedMergeTree в нем есть полные дубликаты по всем столбцам. Есть ли вариант удалить дубликаты ? Укажите пожалуйста путь как можно решить данный вопрос.
  • OPTIMIZE | ClickHouse Documentation

    OPTIMIZE Statement This query tries to initialize an unscheduled merge of data parts for tables. Warning OPTIMIZE can’t

  • https://t.me/clickhouse_ru
    @denis_nikulnikov #174772 10:50 AM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @denis_nikulnikov #174773 10:52 AM, 04 Aug 2020
    Всем привет. Есть задача получить список названий полей таблицы. Делаю следующий запрос select t.name from (DESCRIBE table table_name) t и он падает с ошибкой Error running query: Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 206 (line 1, col 206): DESCRIBE table table_name) t FORMAT JSON. Expected one of: SELECT subquery, SELECT query, SELECT, list of elements, WITH, SELECT query, possibly with UNION, SELECT query, subquery, possibly with UNION (version 20.5.2.7 (official build)) Подскажите, плз что я делаю не так?
  • 1.
    show create tablename
    2.
    select * from system.columns where table='tablename'
  • https://t.me/clickhouse_ru
    @denis_nikulnikov #174775 11:00 AM, 04 Aug 2020
    Спасибо, 2 способ - то что нужно.
  • https://t.me/clickhouse_ru
    Ага спс. Сразу не понял почему не работало. Оказалось, что надо final после прочтения документации внимательно стало понятней. Спс
  • https://t.me/clickhouse_ru
    @DmitriyKozeev #174777 11:27 AM, 04 Aug 2020
    Добрый день. Не получается запустить clickhouse-jdbc-bridge для postgresql не проходит тест который описан на в git. Так же припопытке select * from jdbc ('jdbc:postgresql://***.26.159.56:5432/?user=******&password=******','dwh', 'public.def_sp_labexa_bcp')

    получаю ошибку

    Received exception from server (version 20.5.4):
    Code: 86. DB::Exception: Received from localhost:9000. DB::Exception: Received error from remote server /columns_info?connection_string=jdbc%3Apostgresql%3A%2F%2F***.26.159.56%3A5432%2F%3Fuser%3D******%26password%3D******&schema=dwh&table=public.def_sp_labexa_bcp&external_table_functions_use_nulls=true. HTTP status code: 500 Server Error, body: No suitable driver found for jdbc:postgresql://***.26.159.56:5432/?user=******&password=******.

    Received exception from server (version 20.5.4):

    что и где я делаю не то или не так?
  • @a_sima10 #174778 11:33 AM, 04 Aug 2020
    всем привет, подскажите, есть таблица
    CREATE TABLE test_test.test
    (
    `uuid` UUID,
    `status` Enum8('approved' = 1, 'in_progress' = 2, 'canceled' = 3),
    `cost` UInt64,
    `currency` Enum8('USD' = 1, 'RUB' = 2),
    `EventDate` Date,
    `EventDateTime` DateTime
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (uuid, EventDate)
    SETTINGS index_granularity = 8192

    пробую добавить
    ALTER TABLE test
    MODIFY TTL EventDate + toIntervalMonth(6) TO DISK 'hdd'

    SETTINGS storage_policy = 'ssd_only'

    Exception on client:
    Code: 115. DB::Exception: Unknown setting storage_policy: in attempt to set the value of setting 'storage_policy' to 'ssd_only'

    если создаю новую таблицу, то все ок
    CREATE TABLE test1
    (
    `uuid` UUID,
    `status` Enum8('approved' = 1, 'in_progress' = 2, 'canceled' = 3),
    `cost` UInt64,
    `currency` Enum8('USD' = 1, 'RUB' = 2),
    `EventDate` Date,
    `EventDateTime` DateTime
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (uuid, EventDate)
    TTL EventDate + toIntervalWeek(2) TO DISK 'hdd'
    SETTINGS storage_policy = 'ssd_only'

    Ok.

    0 rows in set. Elapsed: 0.002 sec.

    как добавить в существуюущую таблицу TTL и storage_policy?
  • https://t.me/clickhouse_ru
    а если сделать PREWHERE в 1м запросе, тоже ломается?

    SELECT id
    FROM shop_clients
    PREWHERE
  • @253072124 #174781 11:56 AM, 04 Aug 2020
    все доброго времени суток. Подскажите, пожалуйста, какие есть best practies при загрузке данных в Clickhouse? Стоит ли пытаться загружать данные через python-драйвер clickhouse_driver, если объёмы данных для записи составляют десятки миллионов строк? Какие есть способы для fast insert в Clickhouse БД?
  • @eperesadka #174782 01:29 PM, 04 Aug 2020
    Добавил ttl на поле в таблице, как сделать, чтобы существующие данные уже попали под очистику по ттл или со временем это само произойдет?
  • Вроде бы TTL распространяется только на новые данные
  • @scooby18 #174784 01:46 PM, 04 Aug 2020
    @den_crane не подскажете, настроил джайдест в ЗК, когда делаю getAcl /clickhouse получаю еще так же sasl. прописать zookeeper.sasl.client или еще есть варианты?
  • https://t.me/clickhouse_ru
    @blooze_man #174785 01:52 PM, 04 Aug 2020
    здраствуйте, поскажите как почистить историю консольного клиента?
  • https://t.me/clickhouse_ru
    в system.query_log
    можно поискать, если он у вас включен
  • https://t.me/clickhouse_ru
    ага, понял. спасибо
  • https://t.me/clickhouse_ru
    =) ну питон сам по себе не очень быстрый язык

    практика вставки в clickhouse
    это вставка большими порциями (от 100 000 записей, можно миллионы)
    это в документации есть

    исходные данные у вас откуда?
    какое то свое приложение события отсылает по HTTP/gRPC/protobuf в ваш коллектор?
    MySQL\PostgreSQL как источник?
  • @253072124 #174789 01:59 PM, 04 Aug 2020
    источник MySQL, запросом я выбираю данные, и полученный датасет я должен загрузить в БД
  • https://t.me/clickhouse_ru
    и язык у вас при этом python ?
  • https://t.me/clickhouse_ru
    если много маленьких запросов и нет возможности из собрать на стороне приложения, то стоит использовать буферные таблицы
  • @253072124 #174792 02:01 PM, 04 Aug 2020
    да
  • https://t.me/clickhouse_ru
    @AngelYurik #174793 02:08 PM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    IMHO самый быстрый способ
    вызвать из python
    mysql -B -s -e "SELECT * FROM db.table FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' | clickhouse-client -q "INSERT INTO db.table FORMAT TSV"
  • а как записывать в Buffer?
  • https://t.me/clickhouse_ru
    обычный INSERT
    можно даже через MySQL протокол подключиться...

    но это если вам надо вставлять записи по одной

    но особо высоких RPS и строк в секунду там не ждите
  • https://t.me/clickhouse_ru
    Buffer | Документация ClickHouse

    Buffer Буферизует записываемые данные в оперативке, периодически сбрасывая их в другую таблицу. При чтении, производится

  • я так понимаю, что схема следующая должна работать: чтение условно по 200-300 000 записей в MySQL и запись в буферную таблицу
  • @yglmn #174800 02:12 PM, 04 Aug 2020
    всем привет
    вопрос: есть матвью с кучей джоинов (по сути - воронка)

    струткура такая

    event1 left join (
    event2 left join (
    event3 ...
    )
    )

    если на момент создания матвью события 3 не было, то когда оно придет, то перезапишется ли эта строчка в матвью? заранее спасибо
  • @253072124 #174801 02:12 PM, 04 Aug 2020
    а из буферной таблицы будет переноситься в постоянную на движке MergeTree
  • https://t.me/clickhouse_ru
    нет смысла писать в буфферную таблицу сразу 300 000 записей за один раз
    вы не правильно поняли для чего она нужна
  • @253072124 #174803 02:13 PM, 04 Aug 2020
    а как?
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/174794
    я написал
    вы сказали что данные у вас в MySQL уже лежат
    если вам можно выкинуть MySQL и хочется данные писать по одной строке... тогда да, пробуйте Buffer таблицы

    можно даже через MySQL protocol
    https://clickhouse.tech/docs/en/interfaces/mysql/
    Slach in ClickHouse не тормозит

    IMHO самый быстрый способ вызвать из python mysql -B -s -e "SELECT * FROM db.table FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' | clickhouse-client -q "INSERT INTO db.table FORMAT TSV"

  • @253072124 #174805 02:15 PM, 04 Aug 2020
    ок
  • https://t.me/clickhouse_ru
    MATVIEW это просто trigger на INSERT
    в clickhouse Нет update
  • @yglmn #174807 02:16 PM, 04 Aug 2020
    то бишь нет, спасибо
  • большое спасибо)
  • https://t.me/clickhouse_ru
    а зачем вам строить воронки таким тяжелым способом?
    через sequenceMatch не получается?
    почему?

    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/parametric-functions/#function-sequencematch
    Parametric | ClickHouse Documentation

    Parametric Aggregate Functions Some aggregate functions can accept not only argument columns (used for compression), but

  • @yglmn ↶ Reply to #174809 #174810 02:23 PM, 04 Aug 2020
    sequenceCount почему-то не отловил много кейсов, которые я искал
    поэтому хотел сделать быстрые костыли и доразобраться с этой функцией
  • https://t.me/clickhouse_ru
    Каких например? Просто интересно.
  • https://t.me/clickhouse_ru
    @kizimenko #174812 03:14 PM, 04 Aug 2020
    может не совсем в тему вопрос

    у metabse есть такая возможность или какие то аналогичные?
    1. Задаем параметр, он привязан к пользователю метабейс.
    Когда пользователь логинится то он видит инфу всегда с этим фильтром. Грубо говоря чтобы владелец сайта А из общего объема всегда видел данные только сайта А.

    БД у нас click
  • https://t.me/clickhouse_ru
    @orantius #174813 03:20 PM, 04 Aug 2020
    не знаю что такое metabase, а фильтры возможно надо вписывать сюда https://clickhouse.tech/docs/en/operations/settings/settings-users/#user-namedatabases
    User Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    спасибо, тоже полезно
  • @196329660 #174816 03:31 PM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @RecycleSup #174817 03:32 PM, 04 Aug 2020
    Коллеги, подскажите, могули я как-то ограничить память выделяемую на создание мат представления с директивой POPULATE?
  • @a_sima10 #174818 03:38 PM, 04 Aug 2020
    Кто-то подскажет?
  • @a_sima10 #174819 03:38 PM, 04 Aug 2020
    всем привет, подскажите, есть таблица
    CREATE TABLE test_test.test
    (
    `uuid` UUID,
    `status` Enum8('approved' = 1, 'in_progress' = 2, 'canceled' = 3),
    `cost` UInt64,
    `currency` Enum8('USD' = 1, 'RUB' = 2),
    `EventDate` Date,
    `EventDateTime` DateTime
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (uuid, EventDate)
    SETTINGS index_granularity = 8192

    пробую добавить
    ALTER TABLE test
    MODIFY TTL EventDate + toIntervalMonth(6) TO DISK 'hdd'

    SETTINGS storage_policy = 'ssd_only'

    Exception on client:
    Code: 115. DB::Exception: Unknown setting storage_policy: in attempt to set the value of setting 'storage_policy' to 'ssd_only'

    если создаю новую таблицу, то все ок
    CREATE TABLE test1
    (
    `uuid` UUID,
    `status` Enum8('approved' = 1, 'in_progress' = 2, 'canceled' = 3),
    `cost` UInt64,
    `currency` Enum8('USD' = 1, 'RUB' = 2),
    `EventDate` Date,
    `EventDateTime` DateTime
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (uuid, EventDate)
    TTL EventDate + toIntervalWeek(2) TO DISK 'hdd'
    SETTINGS storage_policy = 'ssd_only'

    Ok.

    0 rows in set. Elapsed: 0.002 sec.

    как добавить в существуюущую таблицу TTL и storage_policy?
  • Даже если я storage_policy не указывал для таблицы?
  • я думал что нельзя указывать, если уже была добавлена storage_policy, тогда понятно
    Спасибо
  • @396449281 #174829 05:09 PM, 04 Aug 2020
    Joined.
  • @saippuakauppias #174831 05:58 PM, 04 Aug 2020
    Всем привет. Хочу попробовать для себя CH, нашел интересную задачу, которую не вывозит PostgreSQL:
    каждый день создаются и удаляются множество доменных имён в интернете (есть выгрузки некоторых доменных зон в сыром виде), хочу попробовать поделать какую-нибудь аналитику на основе этой BigData 🙂

    Для начала думал что закину в PgSQL 150 млн доменов и всё будет окей, но упираюсь в производительность как вставки, так и апдейта данных (хотя уже накрутил и вставку через COPY и вынес проверяемые данные в Redis, что получить O(1)). Сейчас понимаю что нужно взять кликхаус и пробовать его, но опыта - совсем нету.

    Дайте, пожалуйста, какие-нибудь советы совсем новичку, чтоб больно не спотыкаться? 🙂

    Структура БД в PgSQL прикладываю ниже в скрине, коротко суть:
    1. Табличка tld: в ней я храню доменную зону (ru, net, org и тд), чтобы в главной таблице domain поле было типа Integer.
    2. Табличка nameserver: в ней хранятся все неймсервера для домена (минимум 2 и максимум что я встречал вроде бы 25).
    3. Главная таблица domain:
    - tld_id (integer) - связь с таблицей tld
    - letter (varchar(1)) - первая буква домена для ключа партиционирования (чтобы при обновлении домена = удалении/смене ns серверов искать не по всей таблице целиком)
    - name_servers (array[integer]) - массив id неймсерверов для текущего домена
    - created_at (date) - дата, когда домен попал первый раз в базу (в выгрузке нет дат, поэтому берем дату когда парсили эту выгрузку)
    - updated_at (date) - дата, когда было последнее обновление неймсерверов для домена
    - deleted_at (data) - дата, когда домен пропал из выгрузки (не продлили, домен свободен к регистрации)
    - domain (varchar) - соответственно сам домен без доменной зоны (example.com => example)

    Как лучше подстроить текущую структуру под CH? Скорее всего нет смысла создавать столько таблиц, внутренняя магия столбцовой БД должна (?) переварить если я буду хранить tld текстом, а не id, а неймсервера тоже массивом строк?

    В будущем как минимум хочется делать выборки в духе "Какие домены были удалены/обновлены вчера с доменной зоной = ru".

    Ещё пару важных вещей, которые не понимаю:
    1. Как мне быть с обновлением полей updated_at/deleted_at? Писать ещё одну строку в базу, где уже будут эти поля заполнены, но как тогда старое потом удалять, чтоб оно не захламляло?
    2. При последующих парсингах выгрузок (когда первично база уже наполнена) - нужно проверять есть ли такой домен в базе, нормально ли для CH, если я буду делать запрос, где будет возвращаться 1 строка и это будет что-то в духе "select exists(id) from domain where domain_name = 'example.com'"? Просто вроде вся мощь CH (на сколько я понимаю) как раз в агрегации данных, а не запросам где нужно получить всего 1 строку?
  • https://t.me/clickhouse_ru
    @olevole #174833 06:00 PM, 04 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @orantius #174834 06:03 PM, 04 Aug 2020
    несколько таблиц если и надо, то других. тлд можно инлайнить в домены, низкокардинальные строки пожмутся нормально. запросы за одним ключом не будут масштабироваьтся, exists id делать не надо, раз таблица про домены, делайте ключом домен, сортируте по нему и всё. хранить логи изменений это нормально, с обновлением записей возможна разного вида печаль.
  • @saippuakauppias #174835 06:04 PM, 04 Aug 2020
    а как вот классически по-кликхаусовски делать обновления, чтоб это были не обновления в привычном понимании, а добавление новой строки или как-то вот так?
  • Replacing merge tree
  • @saippuakauppias #174837 06:06 PM, 04 Aug 2020
    в первый парсинг файла я загружу 150 млн доменов в базу (хочется чтоб загрузка проходила не более 12 часов), каждый день обновляется примерно 150 тысяч доменов - хочется тоже, чтоб это было не более 12 часов

    сейчас pgsql не вывозит такое
  • https://t.me/clickhouse_ru
    @orantius #174838 06:06 PM, 04 Aug 2020
    150к апдейтов вроде быстро должны работать.
  • https://t.me/clickhouse_ru
    @orantius #174839 06:07 PM, 04 Aug 2020
    у вас ссд?
  • @saippuakauppias #174840 06:08 PM, 04 Aug 2020
    да, тестировал на hetzner cloud (VPS): 3 CPU, 4GB RAM, nvme
  • @saippuakauppias #174841 06:09 PM, 04 Aug 2020
    там вся боль сейчас в том, что вначале я партицию (по букву) выгружаю в redis, чтоб каждый запрос в pgsql не закидывать - и долго именно из pg перекладывается, т.к. я пачками выбираю (делаю where id > last_id limit 1000)
  • https://t.me/clickhouse_ru
    @orantius #174842 06:09 PM, 04 Aug 2020
    домен это сколько, 32 байта? у вас по идее база <10Гб
  • @saippuakauppias #174843 06:09 PM, 04 Aug 2020
    сырая выгрузка 20ГБ, в PgSQL папка с данными была что-то вроде 60ГБ
  • @saippuakauppias #174844 06:10 PM, 04 Aug 2020
    макисмальная длина домена вроде бы 50 символов была из того что я помню, но это не точно, там 255 стоит у меня в структуре таблицы почему-то
  • 150mln ни о чем, пг норм
    Вам кх не особо нужен.

    Но можете в кх хранить весь лог без удалений обновлений строк тоже
  • @saippuakauppias #174846 06:12 PM, 04 Aug 2020
    да уже хочется КХ потестить, раз с пг у меня не получается, а я уже устал финты пробовать разные ) тем более для себя, не страшно если ошибусь
  • https://t.me/clickhouse_ru
    @orantius #174847 06:14 PM, 04 Aug 2020
    можно сделать табличку с логом всего, можно сделать mv, который отдедуплицирует события по одному домену, но при чтении вроде все равно надо будет домерживать. tld точно можно инлайнить, ns для начала тоже, какая там средняя длина массива?
  • @saippuakauppias #174848 06:16 PM, 04 Aug 2020
    в среднем 2-4 неймсервера
  • https://t.me/clickhouse_ru
    @orantius #174850 06:18 PM, 04 Aug 2020
    еще можно самому всегда агрегировать по domain исходные данные, но 150М ключей - это обычно проблемы с памятью, надо смотреть какая предполагается аналитика и какая исходная событийная модель. что такое домен пропал из регистрации итд. Какие домены были удалены/обновлены вчера с доменной зоной = ru можно и по оригинальным событиям вообще без всякого updated_at посчитать.
  • @saippuakauppias #174851 06:19 PM, 04 Aug 2020
    я думал вначале в память засунуть всё, но у меня нет таких серверов..))
  • @saippuakauppias #174852 06:22 PM, 04 Aug 2020
    а вот как у КХ с запросами, когда нужно получить 1 строку из всей таблицы по её ключу? на апдейтах у меня такая логика и подразумевается, что во время последующих парсингов я делаю на каждый домен запрос в базу и проверяю NSы в коде.
    Не упрусь в то, что КХ будет вывозить условно 100 запросов в секунду всего таких?
  • https://t.me/clickhouse_ru
    @orantius #174853 06:23 PM, 04 Aug 2020
    не надо делать апдейты и не надо читать по одной записи. упретесь.
  • @saippuakauppias #174854 06:24 PM, 04 Aug 2020
    а как тогда быть? я не могу пачкой взять 100 доменов из базы и пачку в 100 доменов спарсить из файла, там если будут пропуски, то я замучаюсь понимать как это разрулить, особенно когда следующую пачку надо будет взять
  • @saippuakauppias #174855 06:25 PM, 04 Aug 2020
    выгружать примерно по 5 млн доменов в память (по первой букве) - не выйдет опять же из-за того что не влезут(
  • https://t.me/clickhouse_ru
    @orantius #174856 06:25 PM, 04 Aug 2020
    исходные данные это что, снапшоты раз в какое-то время?
  • @scooby18 #174857 06:26 PM, 04 Aug 2020
    Народ, а кто может подсказать как отключить sasl
  • @saippuakauppias #174858 06:26 PM, 04 Aug 2020
    да, раз в день выгрузка всех существующих доменов (для доменной зоны)

    каждый день соответственно нужно её парсить заново, обновляя то что изменилось
  • @scooby18 #174859 06:27 PM, 04 Aug 2020
    в ЗК сделал getAcl /clickhouse а там sasl и джайдест, по этой причине КХ не может законнектится к ЗК
  • https://t.me/clickhouse_ru
    и вы хотите этой выгрузке сделать full outer join на предыдущее состояние, чтобы нагенерить дифф, и потом с одной стороны иметь такие диффы, с другой стороны еще и состояние (актуальное?) всех доменов, и при этом чтобы размер базы не рос на 60Гб в день?
  • @saippuakauppias #174861 06:34 PM, 04 Aug 2020
    не столько даже диффы хранить хочется, сколько знать когда какой домен добавлен/удален/обновлен (его NS обновлены), но вообще получается - да, что-то вроде.
    Нужно актуальное состояние на текущий день, чтоб я мог потом получить все измененные домены сегодня или все домены, которым поствлены какие-то NSы, или количество доменов, которые были удалены вчера (например).
    И да, не хочется чтоб через месяц база превратилась 1.8ТБ )
  • @saippuakauppias #174862 06:35 PM, 04 Aug 2020
    может мой кейс неподходящий для CH, вы скажите если что )
  • https://t.me/clickhouse_ru
    @orantius #174863 06:43 PM, 04 Aug 2020
    тут вопрос не в кейсе, а как организовать нормально. можно заливать в базу каждый день полный дамп (сколько это занимает времени?), потом оставлять его как актуальное состояние, считать дифф с предыдущим днем, диффы откладывать в еще одну табличку с датой в ключе. возможно залить первый дамп в диффы в виде добавлений, чтобы он тоже был,
    это уже будет содержать примерно все нужные данные, и расти только на дифф. full outer join для диффа возможно работать не будет, тогда надо будет что-то изобретать, например посемплировать по хешу.
  • @saippuakauppias #174864 06:46 PM, 04 Aug 2020
    сколько это может занимать времени для КХ - я не представляю, в pgsql это сейчас льётся больше суток )))

    а на третий день как быть, диффать предыдущим днем, а то что было до этого - дропать? Но тогда у меня будет разница только между вчерашним и сегодняшним днем, а хочется чтоб можно было потом получить все домены за дату Х, которая была в прошлом (например, какой-то регистратор понизил цену на регистрацию доменов в период с Z по Y, я потом хочу проанализировать на сколько в эти дни больше доменов было зарегистрировано чем в обычное время)
  • https://t.me/clickhouse_ru
    @orantius #174865 06:47 PM, 04 Aug 2020
    изменения между днями надо сохранять.
  • @saippuakauppias #174866 06:49 PM, 04 Aug 2020
    то есть условно нужно что-то вроде: каждый день вливаем все данные в таблицу А, получаем как-то через КХ разницу с таблицей Б, сохраняем это в таблицу В; дропаем А, Б и переименовываем В в таблицу Б?
  • @saippuakauppias #174867 06:50 PM, 04 Aug 2020
    единственное что непонятно как разницу делать, там ведь в выгрузке дат нету, там только домен = [неймсервер1, ..., неймсерверN], а даты я сам генерировал получается (когда добавли домен проставлял = created_at, обновили - updated_at, удалили - deleted_at)
  • https://t.me/clickhouse_ru
    @orantius #174868 06:50 PM, 04 Aug 2020
    да, даты есть только в те моменты когда мы скачали дамп и наблюдали состояние.
  • @saippuakauppias #174869 06:53 PM, 04 Aug 2020
    а как это всё организовать в терминологии кликхауса, чтоб я дальше пошёл раскуривать доку?
  • @saippuakauppias #174870 06:55 PM, 04 Aug 2020
    если, конечно, это нормальный кейс мы описали и не стоит пробовать как-то по-другому через указанный выше ReplacingMergeTree)
  • https://t.me/clickhouse_ru
    @orantius #174871 07:02 PM, 04 Aug 2020
    replacing не факт, что подойдет для удаления того что надо удалить, во-первых потому что я не уверен что там можно что-то удалить (ладно, для этого у нас есть deleted_at), во-вторых, как понимать что в базе есть что-то, чего уже нет в новом дампе и потому это надо удалить.
    также наверное стоит подумать над вопросом как из удаленного стать обратно не удаленным, насколько я понимаю, это не конечное состояние.
  • @saippuakauppias #174872 07:03 PM, 04 Aug 2020
    да, тоже верное замечание - такое тоже каждый день происходит - сейчас я сбрасываю deleted_at снова в null и ставлю created_at текущим днем
  • @saippuakauppias #174873 07:03 PM, 04 Aug 2020
    то есть саму строку я не удаляю никогда
  • @saippuakauppias #174874 07:07 PM, 04 Aug 2020
    к слову, уже много различных онлайн-сервисов решали похожую задачу ( например, https://domainlists.io/gtld-domains/ ), но я нигде не смог найти чтоб они рассказывали как это делается 🙁
    All active domain lists updated daily

    Full lists of classic and country domains. Total 1565 zones updated daily.

  • @saippuakauppias #174875 07:11 PM, 04 Aug 2020
    > во-вторых, как понимать что в базе есть что-то, чего уже нет в новом дампе и потому это надо удалить.

    да, к слову ещё стоит сказать, что сейчас "удаление" (простановка deleted_at) организована таким образом что перед обработкой последующей буквы домена - я беру все домены из её партиции и складываю в Redis, после того как текущая буква пропарсилась - в редисе остаются домены, это значит что они не были в текущем дампе, а значит они удалены из выгрузки
  • @dj_mixer #174876 07:17 PM, 04 Aug 2020
    Сохраняйте не меняя старые записи, не вижу проблемы если честно...
  • @saippuakauppias #174877 07:19 PM, 04 Aug 2020
    сейчас, кстати, получение всех доменов из партиции и запись их в Redis выглядят вот так (ужаснитесь со мной тоже):
    [domain_letter: a] Prefill domains (1411.4 sec) | Count: 9459731
    [domain_letter: b] Prefill domains (1255.1 sec) | Count: 8424206
    [domain_letter: c] Prefill domains (1580.8 sec) | Count: 10660824

    час потратили только на то, чтоб получить данные 3х партиций из 36 🙂 И это там запросы уже оптимизированы (`select id, domain from domain_letter_[буква] where id > :last_id limit 5000`)
  • можно подробнее? как тогда получить все домены, которые были изменены позавчера (сменён ns)? учитывая что сегодня они могли снова сменится - как схлопнуть это изменение?
  • Дайте пример данных
  • @dj_mixer #174880 07:22 PM, 04 Aug 2020
    Insert select, или сгенерьте из numbers()
  • вот прямо живые данные в pg сейчас
  • @saippuakauppias #174882 07:23 PM, 04 Aug 2020
    только без учета того, что что-то поменяться могло - там только 1 раз парсинг целиком прошел у меня
  • zookeeper.sasl.client
    Set the value to false to disable SASL authentication. Default is true.

    https://zookeeper.apache.org/doc/r3.5.2-alpha/zookeeperProgrammers.html
  • @saippuakauppias #174884 07:24 PM, 04 Aug 2020
    из того что хочется уже сейчас поанализировать и что я запихал в pg, это вот такой запрос:
    SELECT domain FROM domain_letter_{}
    WHERE tld_id = :tld_id AND ARRAY[:ns] <@ name_servers
    AND (updated_at = :ddate OR created_at = :ddate)
    LIMIT 100

    который, к слову, выполняется примерно вечность
  • @saippuakauppias #174885 07:25 PM, 04 Aug 2020
    получить первые 100 доменов из партиции по букве с указанной доменной зоной, указанными name servers, которые были обновлены или созданы за выбранную дату
  • Ок, как распарсю картинку так и кину запрос сразу )
  • @saippuakauppias #174887 07:26 PM, 04 Aug 2020
    да даже не сколько запрос нужен, расскажите как это вот всё организовать в КХ )
  • @saippuakauppias #174888 07:27 PM, 04 Aug 2020
    я не понимаю как мне складывать нужно это туда, чтоб можно было делать такие запросы как я показал выше
  • @saippuakauppias #174889 07:27 PM, 04 Aug 2020
    не обессудьте, но по сути в этом суть ))))
  • @saippuakauppias #174890 07:44 PM, 04 Aug 2020
    это не лучшая задача чтоб поиграться с КХ получается?
  • https://t.me/clickhouse_ru
    @aweselow #174891 07:50 PM, 04 Aug 2020
    Joined.
  • @dj_mixer #174892 07:54 PM, 04 Aug 2020
    упростите ваш пример входных данных, и объясните что именно вы хотите на выходе с этого входа
    например, что значит "обновлены"
    >
    получить первые 100 доменов из партиции по букве с указанной доменной зоной, указанными name servers, которые были обновлены или созданы за выбранную дату
    >
  • @dj_mixer #174893 07:55 PM, 04 Aug 2020
    когда обновлен список NS? (появился новый НС, удалился старый НС, изменился порядок НС)?
  • @saippuakauppias #174894 08:00 PM, 04 Aug 2020
    когда обновляются NS это значит, что там хотя бы один из них или заменяется другим или добавляются новые, порядок всегда строго отсортирован (в парсере сортировка)

    по входным даным: каждый день есть выгрузка всех доменов по доменной зоне, которая состоит из списка
    example.com = [ns1, ..., nsX]

    если домена не было в базе в этот момент, то нужно добавить его с created_at = текущий день;
    если в базе есть домен, в выгрузке не было - значит нужно поставить этому домену в базе в поле deleted_at = текущий день;
    если изменились NS - значит нужно изменить их в базе и поставить updated_at = текущий день;
    и если домен уже был удален когда-то (deleted_at не null), а он снова появился в выгрузке - нужно поставить deleted_at = null, created_at = текущий день, ну и скорее всего сменить NS
  • @saippuakauppias #174895 08:02 PM, 04 Aug 2020
    логика такая, но как это всё организовать в КХ, чтобы не острелить себе все конечности - я не понимаю, но очень хочется разобраться и начать уже хоть где-то применять КХ, а то футболка от самого Алексея есть, ношу её, но похвастаться инстансом в проде (пускай и для хобби) - не могу
  • и все запросы будут с фильтрацией по дате и префиксу домена?
  • @saippuakauppias #174897 08:07 PM, 04 Aug 2020
    после загрузки данных - большинство да, вот тот пример запроса что я привел выше - это первое что мне хочется проанализировать (правда, LIMIT 100 там стоит просто потому что pg не вывозит, вообще мне все домены получать хочется)
  • https://t.me/clickhouse_ru
    @aweselow #174898 08:07 PM, 04 Aug 2020
    всем привет) какое совпадение, тоже ковыряю КХ как организовать базу доменов с данными))
  • мы ещё и однофамильцы если что))))
  • https://t.me/clickhouse_ru
    @ProffUst #174900 08:29 PM, 04 Aug 2020
    А может вы брать?
  • https://t.me/clickhouse_ru
    @AvadaKebaba #174901 08:44 PM, 04 Aug 2020
    Кто-то может поделится статьёй, как прикрутить к кликхаус tls? Ничего годного не нашёл на просторах интернета (
  • https://t.me/clickhouse_ru
    в config.xml все написано
  • ну если лень делать умный парсер (который возьмет весь последний день в память и сделает дифф по нему), то можно так (грузите все записи тупо каждый день, ставите order by по полям по которым будет фильтрация):
    select tgtdate, domainname, groupArray(ns),
    if(count(ns)=sum(deleted), 1,0) as isdeleted,
    if(count(ns)=sum(added), 1,0) as isadded,
    if(count(ns)!=sum(notchanged) and not isadded and not isdeleted, 1,0) as ismodified
    from
    (
    select all_dates[2] as tgtdate, domainname, ns,
    --- use for troubleshooting
    groupArrayInsertAt('none', 2)(ns, toUInt32(indexOf(all_dates, dt) - 1)) arrData,
    If( (countIf(dt=toDate('2020-01-09')) as existsYesterday ) and not (countIf(dt=toDate('2020-01-10')) as existsToday),1,0 ) as deleted,
    If( (not existsYesterday) and existsToday,1,0 ) as added,
    If( existsYesterday and existsToday,1,0 ) as notchanged
    --arrayElement(groupArrayInsertAt(Null, 2)(tuple(toNullable(ns)), toUInt32(indexOf(all_dates, toDate(datadatetime)) - 1)).1 as values, 1) as "daybefore",
    from (
    with [ toDate('2020-01-09'), toDate('2020-01-10') ] as all_dates
    select dt, domainname, ns, all_dates
    from
    (
    -- this is generated sample data
    select dt, domainname, arraySort(x-> x, groupArray(NS)) sortedNSList from (
    select toDate('2020-01-08') +cityHash64(number,3)%4 as dt, 'ns'|| toString(cityHash64(number,0)%5) as NS, toString(cityHash64(number%25,1)) domainname from numbers(100)
    ) group by dt, domainname order by dt
    ) array join sortedNSList as ns
    where 1=1
    -- and domainname='10497707425991577777'
    and dt in (all_dates)
    ) group by tgtdate, domainname, ns
    )
    group by tgtdate, domainname;
  • @saippuakauppias #174904 08:56 PM, 04 Aug 2020
    Один вопрос: а какой движок для чего там сделать? Я ж даже с этого не могу начать и понять что нужно
  • @saippuakauppias #174905 08:57 PM, 04 Aug 2020
    Спасибо за запрос, попробую разобраться
  • https://t.me/clickhouse_ru
    @akakoychenko #174906 08:57 PM, 04 Aug 2020
    Joined.
  • merge tree, в таблицу лучше на каждый NS по строке прямо и грузите, partition by date, order by domainname or prefix_domainname
  • @saippuakauppias #174908 08:59 PM, 04 Aug 2020
    А если мы говорим о том, что оно все в памяти будет работать, то с моим текущим сервером на 4ГБ RAM оно заработает вообще в теории?
  • 4GB RAM - КХ вообще вряд ли заработает... начинайте от 32
  • @saippuakauppias #174910 09:01 PM, 04 Aug 2020
    🤯 Оу
  • @saippuakauppias #174911 09:01 PM, 04 Aug 2020
    Спачибо
  • https://t.me/clickhouse_ru
    ну это ты загнул
  • вообще ваша проблема решается sqlite-ом, не говоря о ПГ, если делать парсером обновления состояния
  • делайте ваши ставки господа =)
  • @dj_mixer #174915 09:02 PM, 04 Aug 2020
    у нас подобная задача была, ВМ не хватало 24, правда там словарик был на 6-7Г, помимо всего прочего
  • если всегда фильтровать по домену, то в принципе можно
  • Sqlite? Можно подробнее как?
  • https://t.me/clickhouse_ru
    @ProffUst #174918 09:03 PM, 04 Aug 2020
    м, под задачу с доменами я бы вообще 48 выделил =)
  • написанием кода =)
  • @dj_mixer #174920 09:05 PM, 04 Aug 2020
    грузим все в базу (sqlite file)
    каждый день применяем change к текущему снепшоту
    ????
    PROFIT
  • @saippuakauppias #174921 09:53 PM, 04 Aug 2020
    так а зачем мне тогда кликхаус, если будет 32-48ГБ памяти?
    я просто все домены в ОЗУ сложу и буду обходить их там
  • @saippuakauppias #174922 09:54 PM, 04 Aug 2020
    весь интерес как раз впихнуть невпихуемое 🙂
  • https://t.me/clickhouse_ru
    @nikitosiusis #174923 09:54 PM, 04 Aug 2020
    *шепотом* незачем
  • @saippuakauppias #174924 09:55 PM, 04 Aug 2020
    шутки шутками, но относительно моей задачи не так много решений в КХ выходит
  • https://t.me/clickhouse_ru
    @nikitosiusis #174925 09:55 PM, 04 Aug 2020
    мне кажется эта задача вообще не для колоночной бд. тебе сжатие нужно, а не кх)
  • брррр сказала лесопилочка
  • вашу задачу можно в КХ, и в чем угодно, но не нужно
  • вполне может быть
  • @saippuakauppias #174929 09:57 PM, 04 Aug 2020
    буду признателен если предложите какую-то другую БД, которая всерьез можно это пережевать
  • говорю же, любая, исходите из других ограничений... если 4ГБ рам. будете мучатся с КХ, тут/там подкручивать... возьмите sqlite, у вас все равно нет конкурентных процессов
  • @dj_mixer #174932 10:00 PM, 04 Aug 2020
    т.е. и ПГ у вас не работает, потому что вы криво сделали
  • @saippuakauppias #174933 10:00 PM, 04 Aug 2020
    вполне мб что и криво, но будет круто если скажите как сделать прямее )
  • зайдите в ПГ чат, и спросите
  • @saippuakauppias #174935 10:01 PM, 04 Aug 2020
    с sqlite всё равно не понимаю, там операция вставки медленнее чем в pgsql, это однозначно (если не :memory:, но тогда в RAM снова есть шанс не влезть)
  • > там операция вставки медленнее чем в pgsql, это однозначно
    https://stackoverflow.com/questions/1711631/improve-insert-per-second-performance-of-sqlite
    Improve INSERT-per-second performance of SQLite

    Optimizing SQLite is tricky. Bulk-insert performance of a C application can vary from 85 inserts per second to over 96,000 inserts per second! Background: We are using SQLite as part of a desktop

  • @saippuakauppias #174937 10:04 PM, 04 Aug 2020
    journal_mode = MEMORY
    🙁
  • @dj_mixer #174938 10:05 PM, 04 Aug 2020
    не путайте wal с данными... пробуйте... я "кончился", вам удачи =)
  • @saippuakauppias #174939 10:06 PM, 04 Aug 2020
    спасибо, попробую ради теста всё равно, безысходность же уже)
  • @saippuakauppias #174940 10:06 PM, 04 Aug 2020
    мне ещё подсказали, что у меня может быть проблема в том, что редис и пг в контейнерах, и общение по сети докера какое-то не очень под перформанс заточено (подключения по хостнейму=imagename)
  • https://t.me/clickhouse_ru
    @nikitosiusis #174941 10:10 PM, 04 Aug 2020
    сколько иовейт на запросе том длинном?)
  • @saippuakauppias #174942 10:11 PM, 04 Aug 2020
    как посмотреть? я только explain analyze умею)
  • https://t.me/clickhouse_ru
    @nikitosiusis #174943 10:11 PM, 04 Aug 2020
    top на машинке где запущен докер :)
  • @saippuakauppias #174944 10:13 PM, 04 Aug 2020
    боюсь что не смогу сейчас сказать, там с утра обновление грузится всё ещё..)
  • @saippuakauppias #174945 10:14 PM, 04 Aug 2020
    но вообще "Execution Time: 4225.737 ms", и это не самый худший вариант вышел
  • @saippuakauppias #174946 10:15 PM, 04 Aug 2020
    но в момент загрузки сейчас:
  • https://t.me/clickhouse_ru
    @nikitosiusis #174948 10:16 PM, 04 Aug 2020
    выглядит как будто дело не в диске)
  • @saippuakauppias #174949 10:17 PM, 04 Aug 2020
    угу, тоже уже есть мысль обмазать каждую операцию проверкой сколько времени она исполняется
  • @saippuakauppias #174950 10:18 PM, 04 Aug 2020
    вполне может быть там редис деградирует сильно, когда в него миллионы доменов на определенную букву засунули
  • 05 August 2020 (218 messages)
  • https://t.me/clickhouse_ru
    @Makasinov #174952 07:47 AM, 05 Aug 2020
    Всем привет! Подскажите пожалуйста для чего и откуда появилась база _temporary_and_external_tables в последнем обновлении кх? Обновил кластер до 20.5.3.27
  • https://t.me/clickhouse_ru
    @Makasinov #174953 07:48 AM, 05 Aug 2020
    Хотя я ещё словари подключал, может поэтому появилось
  • @bobelev #174954 08:31 AM, 05 Aug 2020
    Привет, подскажите, как работает max_execution_speed_bytes. Выставил для ETL юзера неадекватно низкое значение 6291456, но запросы продолжают летать на больших выборках

    Elapsed: 64.841 sec. Processed 583.75 million rows, 9.23 GB (9.00 million rows/s., 142.38 MB/s.)

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

    Как бонус, хочется ограничить io для аналитиков и других пользователей витрин.
  • https://t.me/clickhouse_ru
    @ulyanakucheruk #174955 08:39 AM, 05 Aug 2020
    Joined.
  • версия?
    была такая проблема с distributed
    https://github.com/ClickHouse/ClickHouse/issues/5732
    max_execution_speed doesn't seem to work as expected · Issue #5732 · ClickHouse/ClickHouse

    #4430 introduced two new settings: max_execution_speed max_execution_speed_bytes Both of which should be very useful in a multi tenant environment, especially as a poor's man non-conserving...

  • @84600419 #174957 08:50 AM, 05 Aug 2020
    Joined.
  • Точно не 20+, будем обновляться )
  • https://t.me/clickhouse_ru
    @almorgv #174960 09:05 AM, 05 Aug 2020
    Подскажите, как сделать условие, что IP адрес входит в подсеть?
    Что-то типа WHERE ipv4 in IPv4CIDRToRange(toIPv4('1.0.0.0'), 12)
  • SELECT IPv4StringToNum('192.168.3.2') between IPv4CIDRToRange(toIPv4('192.168.5.2'), 16).1 and IPv4CIDRToRange(toIPv4('192.168.5.2'), 16).2;
  • @84600419 #174962 09:11 AM, 05 Aug 2020
    Всем привет.
    Как вы проводите миграции? По ответам вижу, что у всех что-то самописное, но может появилась уже версия flyway или liquibase с поддержкой КХ?
    вижу пр https://github.com/flyway/flyway/pull/2640, но он не вмержен пока что.
    Yet another ClickHouse support by a-konyaev · Pull Request #2640 · flyway/flyway

    Based on #2166 and #1773 This one has some improvements in comparison to previous implementations: more accurate declaration of the schema table's columns (types and default values) &q...

  • https://t.me/clickhouse_ru
    да, пришел к такому же решению, спасибо
  • @bashlykevich #174964 09:17 AM, 05 Aug 2020
    Привет!
    Когда прилетают запросы к distributed таблице на прошерстить большие объёмы данных, проседает загрузка в кластер КХ. Какие-то общие рекомендации по разруливанию такой проблемы можете дать?
  • https://t.me/clickhouse_ru
    Туда в flyway кто-то пытался добавить поддержку, но ее разработчики flyway не одобрили
  • https://t.me/clickhouse_ru
    @foxermen #174966 09:24 AM, 05 Aug 2020
    Всем привет, обновили версию кх с 19.14 на 20.3, раньше делали запросы такого вида ALTER TABLE default.table2 REPLACE PARTITION FROM default.table1 и все работало, структура таблиц одинаковая, ключ партицирования toYYYYMMDD(dt), сейчас такой запрос отдает Syntax error: failed at position: FROM default.table1. Expected one of: AND, OR, token, NOT, BETWEEN, LIKE, IS, NOT LIKE, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, QuestionMark (version 20.3.12.112), если сделать запрос такого вида ALTER TABLE default.table2 REPLACE PARTITION 20200526 FROM default.table1 работает, также работает запрос SELECT toYYYYMMDD(toDate('2020.05.26')) в чем может быть проблема?
  • В общем централизованного способа проводить миграции пока нет и все используют что-то самописное?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #174964 #174968 09:37 AM, 05 Aug 2020
    Обратите внимание на количество потоков которое выделяется для выполнения запроса. Можно немного уменьшить, тогда запрос будет медленее, но менее деструктивен. Искать по слову threads
  • https://t.me/clickhouse_ru
    https://github.com/ClickHouse/ClickHouse/issues/10212

    tuple(toYYYYMMDD(toDate('2020.05.26')))
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @akakoychenko #174971 10:05 AM, 05 Aug 2020
    Всем привет
    Сильно не пинайте, КХ пробую впервые.
    Рассматриваю, как альтернативу для MSSQL с колоночным индексом на объёме 10+ ТБ для уже имеющегося хранилища.

    Попробовал несколько простых запросов в песочнице play.clickhouse.tech

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

    SELECT o1.UserID, median(dateDiff('second', o1.EventTime, o2.EventTime, 'UTC')), count(1)
    FROM hits_100m_obfuscated as o1
    asof join hits_100m_obfuscated
    as o2 on o1.UserID = o2.UserID and o1.WatchID < o2.WatchID
    group by o1.UserID
    ORDER BY median(dateDiff('second', o1.EventTime, o2.EventTime, 'UTC'))
    limit 100

    Скажите, какой бест практис решения подобных задач (для наших потребностей достаточно типовая). Как можно посчитать то же, но вложиться в минуту и 10ГБ памяти песочницы, и возможно ли?
  • https://t.me/clickhouse_ru
    через GROUP BY и массивы
  • @1019316538 #174973 10:11 AM, 05 Aug 2020
    подскажите пожалуйста по zookeper для чего нужны в файле в jaas.conf логины пароли, если у меня почему то можно под любой комбинацией логин/пароль создать ноду и работать с ней.
    можно ли вообще ограничить списком пользователей, кто может работать с zoo ?
  • https://t.me/clickhouse_ru
    @unamedrus #174974 10:11 AM, 05 Aug 2020
    JOIN в clickhouse нужно избегать, особенно с большими таблицами, правая часть поднимается в память
  • https://t.me/clickhouse_ru
    @akakoychenko #174975 10:15 AM, 05 Aug 2020
    Спасибо, то есть, надо делать промежуточный результат со строками вида

    UserID, массив с нужными полями всех хитов юзера

    И потом как-то уже на каждом отдельном массиве находить пары соседних хитов и считать медиану?
  • https://t.me/clickhouse_ru
    да, можно через лямбды
  • https://t.me/clickhouse_ru
    @unamedrus #174977 10:16 AM, 05 Aug 2020
    делаешь два массива один нормальный, второй со сдвигом в единицу и считаешь что хочешь
  • https://t.me/clickhouse_ru
    @unamedrus #174978 10:16 AM, 05 Aug 2020
    Функции высшего порядка | Документация ClickHouse

    Функции высшего порядка Оператор ->, функция lambda(params, expr) Позволяет описать лямбда-функцию для передачи в функци

  • https://t.me/clickhouse_ru
    @unamedrus #174979 10:17 AM, 05 Aug 2020
    А можно вообще через
    https://clickhouse.tech/docs/ru/sql-reference/functions/array-functions/#arraydifference
    Массивы | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @akakoychenko #174980 10:25 AM, 05 Aug 2020
    Интересно.
    А как быть, когда надо таки использовать два датасета в запросе. Например, есть таблица с покупками и таблица с хитами. И надо для каждой покупки посчитать поведенческие метрики. Например, сколько страниц посетил перед покупкой, на какой дольше всего задержался, и так далее. Тоже имеет смысл думать, как без джойна обойтись?
  • https://t.me/clickhouse_ru
    ну clickhouse-way это иметь одну таблицу: с покупками, хитам и тд
  • https://t.me/clickhouse_ru
    @akakoychenko #174982 10:28 AM, 05 Aug 2020
    Хм
  • https://t.me/clickhouse_ru
    @akakoychenko #174983 10:29 AM, 05 Aug 2020
    Почитав спеку на asof join посчитал, что вот он наш святой грааль объединения датасетов в 1. Но, как я понял, на него не стоит уповать?
  • https://t.me/clickhouse_ru
    @wacken #174984 10:32 AM, 05 Aug 2020
    Joined.
  • @makkinwa #174985 11:41 AM, 05 Aug 2020
    Коллеги, я сделал
    ALTER TABLE table MODIFY TTL dt + INTERVAL 100 DAY;
    Но количество записей в таблице не изменилось, хотя точно известно, что там полно записей старее 100 дней. Никто не знает, почему так могло произойти и как проверить, что сейчас в таблице действительно прописались изменения (describe не показывает ничего про TTL)
  • https://t.me/clickhouse_ru
    Может только для вставленных после добавления ттл применимо?
  • https://t.me/clickhouse_ru
    @easya #174987 11:48 AM, 05 Aug 2020
    TTL работает только для таблиц, созданных с новым синтаксом (в противном случае вы наткнетесь на https://github.com/ClickHouse/ClickHouse/issues/10177)
    Протухшие данные дропаются не сразу, а периодически (контролируется настройкой движка mergetree), при добавлении контролируется параметром materialize_ttl_after_modify
    Удаление старых данных можно триггернуть командой alter table <table> materialize ttl
    DB::Exception: Existing table metadata in ZooKeeper differs in TTL · Issue #10177 · ClickHouse/ClickHouse

    Describe the bug Performed the update from version 20.1.2.4 to 20.3.5.21, after restart clickhouse does not start. Tried to upgrade to 20.1.6.30 or 20.1.9.54 versions, clickhouse also does not star...

  • Прошу прощения, а что за новый синтаксис?
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #174988 #174989 11:51 AM, 05 Aug 2020
    Документация ClickHouse | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @easya #174990 11:52 AM, 05 Aug 2020
    точнее даже так
    https://clickhouse.tech/docs/ru/single/#table_engine-mergetree-creating-a-table
    Документация ClickHouse | Документация ClickHouse

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

  • @makkinwa #174991 11:53 AM, 05 Aug 2020
    Благодарю
  • https://t.me/clickhouse_ru
    @ImZonG #174992 11:53 AM, 05 Aug 2020
    Joined.
  • ТТЛ применяются на мерджах + новые парты.
    можете сделать alter table t materialize ttl
  • https://t.me/clickhouse_ru
    @ImZonG #174994 11:57 AM, 05 Aug 2020
    Добрый день!

    Имею следующую проблему:
    делаю запрос
    select date from odbc('DSN=postgres_10_10', 'view_with_date')
    в ответе получаю '0000-00-00'

    если же в постгресе лежит дата в формате timestamp, то в ch она читается из odbc без проблем

    версия pg: PostgreSQL 10.10
    версия ch: 20.4.2.9
  • https://t.me/clickhouse_ru
    @ImZonG #174995 11:58 AM, 05 Aug 2020
    Сталкивался ли кто с таким? И как можно обойти?
    нашел открытое issue: https://github.com/ClickHouse/ClickHouse/issues/3700 которому уже почти два года, но ответов так и нет
    При использовании функции ODBC для Postgres в столбец типа Date приходит NULL · Issue #3700 · ClickHouse/ClickHouse

    При попытке экспорта таблицы из Postgres с помощью функции ODBC в поле типа Date приходит либо NULL, либо 0000-00-00, либо 1970-01-01. Использую версию v1.0.0.20181017 Допустим, в Postgres есть таб...

  • https://t.me/clickhouse_ru
    Ну никак. Сделать вью в пг, во вью преобразовать в datetime
  • @andrey45263 #174998 12:13 PM, 05 Aug 2020
    Добрый день. Версия 20.5.4.40
    Может кто встречался?
    При создании Kafka engine указываю в SETTINGS kafka_max_block_size = 250000, но эффекта нету:
    в логих все равно
    <Trace> StorageKafka (events_kafka): Polled batch of 65536 messages. Offset position: [ events[0:118227815] ]
    ПС: в версии 20.4.4.18 параметр работал корректно.
  • https://t.me/clickhouse_ru
    @blooze_man #174999 12:16 PM, 05 Aug 2020
    здраствуйте, подскажите а можно как то ограничить колличество строк в таблице с движком Memory
  • https://t.me/clickhouse_ru
    Нет
  • https://t.me/clickhouse_ru
    создайте баг
  • https://t.me/clickhouse_ru
    жаль, а там есть какието параметры у Memory, а то в документации об этом нечего не сказано(
  • https://t.me/clickhouse_ru
    Никаких параметров нет
  • https://t.me/clickhouse_ru
    спасибо, пойду страдать...
  • https://t.me/clickhouse_ru
    Возьмите engine log
    Разницы вы не заметите
  • https://t.me/clickhouse_ru
    он тоже в памяти хранится?
  • https://t.me/clickhouse_ru
    Нет. Но из-за дискового кеша разницы вы не заметите
  • https://t.me/clickhouse_ru
    @dasha_amst #175008 12:38 PM, 05 Aug 2020
    Joined.
  • @1019316538 #175009 12:38 PM, 05 Aug 2020
    подскажите пожалуйста по zookeper для чего нужны в файле в jaas.conf логины пароли, если у меня почему то можно под любой комбинацией логин/пароль создать новую ноду и работать с ней.
    можно ли вообще ограничить списком пользователей, кто может работать с zoo ?
    добавление export SERVER_JVMFLAGS="-Djava.security.auth.login.config=/usr/local/zookeeper/conf/sasl.cfg $SERVER_JVMFLAGS" в zkEnv.sh никакого эффекта н , также как и
    requireClientAuthScheme=sasl
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    в zoo.cfg
  • https://t.me/clickhouse_ru
    @vvnik #175010 12:40 PM, 05 Aug 2020
    Всех приветсвую!

    Может кто-то сталкивался, с недавних пор, после включения новых узлов в кластер, стали появляеться ошибки.
    Ошибки эти видны только в параметром send_logs_level >= debug.
    И данные не приходят, как будто спотыкается на этом и затихает.

    Приходит DB::Exception: Unknown packet from server (version 19.9.4.34 (official build))
    Как видно из сообщения, используем версию 19.9.4.34, и такой же версии клиент.

    При обычном запросе, когда не планируется дебажить, все окей, данные отдаются.
  • @scooby18 #175011 12:45 PM, 05 Aug 2020
    ребят хэлп КХ не стартует
  • @scooby18 #175012 12:46 PM, 05 Aug 2020
    прописал пасс для ЗК и рестартанул и все
  • https://t.me/clickhouse_ru
    Какие пароли в jaas.conf ?
  • Kafka engine settings param kafka_max_block_size doesn't work in 20.5.4.40 · Issue #13385 · ClickHouse/ClickHouse

    Since my update to 20.5.4.40 independs on kafka_max_block_size param in SETTINGS block of CREATE statement for Kafka engine I have the same <Trace> StorageKafka (events_kafka): Polled...

  • https://t.me/clickhouse_ru
    HjK in ClickHouse не тормозит

    пару дней назад переезжал ничего критичного(конфигурация 2 сервера КХ и между ними 1 ЗК)Версия 20.1.3.7 Только внимательно с правами в зк 1) в клиенте ЗК addauth digest user:password setAcl /clickhouse auth:user:password:cdrwa 2) Стопнул КХ сервера, добавил информацию в конфиг хмл на обоих серверах 3) перезапустил ЗК сервер 4) запустил КХ сервера Но в зависимости от вашей поддержки и конфигурации может быть иначе у меня запустилось и все ок

  • @scooby18 #175016 12:51 PM, 05 Aug 2020
    @den_crane создал пассы в ЗК прописал их в КХ, рестартанул КХ и он не заводится, подскажи куда копать
  • @scooby18 #175017 12:51 PM, 05 Aug 2020
    плиз
  • вот тестовый пример
    Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    user_click1="click1"
    user_admin="admin1";
    };
  • https://t.me/clickhouse_ru
    Ошибка какая? Как кпрописали?
  • @scooby18 #175022 12:52 PM, 05 Aug 2020
    так прописал
  • https://t.me/clickhouse_ru
    Ошибка в логах
  • Application: Coordination::Exception: Not authenticated, path: /clickhouse/tables/01/ …
  • @scooby18 #175025 12:54 PM, 05 Aug 2020
    но он же должен работать если не может получить доступ к ЗК
  • @1019316538 #175026 12:55 PM, 05 Aug 2020
    скорее всего нет прав
  • https://t.me/clickhouse_ru
    ну не доделано, если ошибка из-за подключения -- зк не доступен то работает
  • не понял
  • @1019316538 #175029 12:56 PM, 05 Aug 2020
    посмотри getAcl /clickhouse какие права на папку в зукипере
  • @scooby18 #175031 12:58 PM, 05 Aug 2020
    я сейчас прописал skipACL=yes
  • @1019316538 #175032 12:58 PM, 05 Aug 2020
    а до папки /clickhouse/tables/ ?
  • @scooby18 #175033 12:59 PM, 05 Aug 2020
    и не помогает вообще ни как
  • @scooby18 #175034 12:59 PM, 05 Aug 2020
    о!
  • @scooby18 #175035 12:59 PM, 05 Aug 2020
    zkcli
  • @vvvjhaq #175036 12:59 PM, 05 Aug 2020
    Может ли КХ вообще не стартовать, если нет подключения к ЗК?
  • @scooby18 #175037 12:59 PM, 05 Aug 2020
    там такой юзер
  • и меня это очень интересует
  • @1019316538 #175039 01:00 PM, 05 Aug 2020
    может стартовать
  • @1019316538 #175040 01:00 PM, 05 Aug 2020
    таблицы будут readonly
  • @1019316538 #175041 01:00 PM, 05 Aug 2020
    по поводу прав
  • @scooby18 #175042 01:00 PM, 05 Aug 2020
    блин но он да же не стартует
  • https://t.me/clickhouse_ru
    может, если ЗК недоступен совсем, таблицы Replicated будут RO
  • @1019316538 #175044 01:00 PM, 05 Aug 2020
    надо тебе перевыдать права рекурсивно на всю глубину папок
  • ну вот, значит проблема не в ЗК
  • https://t.me/clickhouse_ru
    да там ошибка другая, zk auth
  • @vvvjhaq #175047 01:01 PM, 05 Aug 2020
    Can't start clickhouse --help · Issue #1981 · ClickHouse/ClickHouse

    os: Ubuntu 16.04.3 LTS \n \l clickhouse version: 1.1.54342 I use " sudo service clickhouse-server start" . but not start. so I use "systemctl status clickhouse-server.ser...

  • @vvvjhaq #175048 01:01 PM, 05 Aug 2020
    у него такое
  • @scooby18 #175049 01:05 PM, 05 Aug 2020
    я КХ от рута запускаю
  • @scooby18 #175050 01:06 PM, 05 Aug 2020
    -rw-r--r-- 1 root root 519 Mar 27 14:20 clickhouse-server.service
  • https://t.me/clickhouse_ru
    а, похоже теперь есть kafka_poll_max_batch_size
    https://github.com/ClickHouse/ClickHouse/pull/11388
    Better settings for Kafka by filimonov · Pull Request #11388 · ClickHouse/ClickHouse

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

  • @den_crane если это поможет
  • https://t.me/clickhouse_ru
    у вас параметры видны у java процесса? ps -ef ?
  • .....-Djava.security.auth.login.config=/usr/local/zookeeper/conf/sasl.cfg -Dzookeeper.DigestAuthenticationProvider.superDigest=adm:c02b+IRQ/ZP9rhNNE47BOMy5W4I=..... вот это есть в параметрах
  • https://t.me/clickhouse_ru
    вы когда говорите jaas.conf вы имеете в виду sasl.cfg ?

    java.security.auth.login.config=<path to zookeeper_jaas.conf>
  • да. вот так назвал файл просто.
  • https://t.me/clickhouse_ru
    хз, зукипер с дебагом запускать и смотреть
  • хорошо. буду копать, меня интересует, что это возможно сделать, чтобы в зукипер можно было зайти только по пользователям которые в файле конфиге jaas.conf?
  • https://t.me/clickhouse_ru
    @aksimemor #175059 01:47 PM, 05 Aug 2020
    Подскажите, возможно ли в clickhouse при джойне таблиц в ON использовать if или multiif?
  • https://t.me/clickhouse_ru
    нет

    точнее есть пачт hardening security что-то там
  • https://t.me/clickhouse_ru
    нет, только =

    в смысле можно написать выражение и по нему сравнивать
  • тогда вернемся к началу разговора и первому моему вопроса. а тогда в чем смысл этого конфиг файла? )
  • https://t.me/clickhouse_ru
    чтобы выдать на ветки права только определенному пользователю
  • @scooby18 #175064 01:50 PM, 05 Aug 2020
    при старте КХ получаю DB::Exception: external dictionary 'pg_blogger_interest_view' not found: Cannot attach table
  • спасибо!
  • @scooby18 #175066 01:59 PM, 05 Aug 2020
    @den_crane не подсдкажешь
  • @scooby18 #175067 01:59 PM, 05 Aug 2020
    видимо из-за дикта не стартует
  • https://t.me/clickhouse_ru
    из-за таблицы engine=Dict ? версия КХ. ?
  • @scooby18 #175069 02:00 PM, 05 Aug 2020
    @den_crane 20.5.2.7
  • https://t.me/clickhouse_ru
    обновитесь до 20.5.3, там починено https://github.com/ClickHouse/ClickHouse/issues/10994
  • понял. файл этот нужен когда выдаются права наподобие
    setAcl /bob sasl:bob:cdrwa,sasl:alica:cdrwa - тогда идет при подключении юзеров, проверка их паролей в файле saas.cfg.
    а если
    права установлены setAcl /bob digest:bob:X1SKGw3XQQSIPMZRf5lW7e07VPY=:cdrwa то файл не нужен.

    мне кажется второй вариант предпочтительней. потому что пароль в хеш виде записан. а в файле saas.cfg он в PLAIN
  • https://t.me/clickhouse_ru
    @351787200 #175073 02:40 PM, 05 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @rvkggwp #175075 02:53 PM, 05 Aug 2020
    есть таблица:
    create table analytics_click.datast(
    iddata UUID DEFAULT generateUUIDv4(),
    idmpchd UInt64,
    dsName String,
    tsUTC DateTime,
    val Nullable(Float64),
    valSrc Nullable(Float64),
    idstx UInt32,
    status UInt32,
    forsedUpdate UInt8,
    tsAddedUTC DateTime64,
    idbunch String,
    INDEX u_data (idmpchd, tsUTC) TYPE SET(1000) GRANULARITY 8192,
    INDEX id (iddata) TYPE SET(1) GRANULARITY 8192
    ) ENGINE = MergeTree()
    PARTITION BY (toYear(tsUTC), toMonth(tsUTC))
    ORDER BY (tsUTC, idmpchd);
    в нее я буду писать все, но мне нужны уникальные записи, я создаю МВ:
    create materialized view data
    ENGINE = MergeTree()
    PARTITION BY (toYear(tsUTC), toMonth(tsUTC))
    ORDER BY (tsUTC, idmpchd)
    AS(
    select
    *
    from datast
    where iddata in(
    SELECT
    argMin(iddata, status) as iddata
    from datast
    group by datast.idmpchd, datast.tsUTC
    ));
    но во вьюху пишет все строки, которые вставляю, может кто направит на пусть истинный
  • https://t.me/clickhouse_ru
    не решить такое с помощью materialized view

    посмотрите на Engine=ReplacingMergeTree (но он не гарантирует остутствие дубликатов по ключу.

    PARTITION BY (toYear(tsUTC), toMonth(tsUTC)) --- надо обязательно поменять на PARTITION BY toYYYMM(tsUTC)
  • https://t.me/clickhouse_ru
    @askjuise #175077 03:01 PM, 05 Aug 2020
    коллеги, подскажите plz, кластер состоит из двух шардов, в шарде две ноды (реплика), запрос над distributed таблицей возвращается время от времени разные данные хотя он фиксирован по диапазону времени (данные в таблице datetime) и не имеет ограничения limit X
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    а реплики это какой Engine? REPLICATED?

    если прямо из шардов-таблиц выбирать, данные совпадают?
  • https://t.me/clickhouse_ru
    @askjuise #175080 03:05 PM, 05 Aug 2020
    engine - ReplicatedMergeTree для таблиц, и над ними engine - Distributed
  • https://t.me/clickhouse_ru
    @askjuise #175081 03:06 PM, 05 Aug 2020
    > если прямо из шардов-таблиц выбирать, данные совпадают?
    да, это я счас проверяю руками как раз
  • @d_sevastyanov #175082 03:06 PM, 05 Aug 2020
    Подскажите плез поведение словарей внешних. Есть словарь:
    CREATE DICTIONARY test_dictionary(
    id UInt64,
    ....
    )
    PRIMARY KEY id
    SOURCE(MYSQL(
    ))
    LAYOUT(HASHED())
    LIFETIME(MIN 60 MAX 120);
    Источник таблица на 20кк, значение атрибута не обновляется через LIFETIME MAX секунд, даже с учетом самого времени обновления. По сути словарь не обновляется вообще. Invalidate query нет, движок в мускуле Innodb
    В чем может быть дело?
  • https://t.me/clickhouse_ru
    @Dmgburg #175083 03:06 PM, 05 Aug 2020
    Привет, вопрос.
    А есть настройка, чтобы заставить мерджы, вызванные
    Optimize deduplicate бежать в несколько потоков?
  • https://t.me/clickhouse_ru
    нет. Но вроде и так несколько потоков, по мержу на партицию?
  • https://t.me/clickhouse_ru
    @Dmgburg #175085 03:11 PM, 05 Aug 2020
    Ну в system.merges только один показывается...
  • https://t.me/clickhouse_ru
    @Dmgburg #175086 03:12 PM, 05 Aug 2020
    И в итоге для большой таблицы идет довольно медленно
  • https://t.me/clickhouse_ru
    значит я путаю. видимо только отдельно на каждую партицую вручную
  • https://t.me/clickhouse_ru
    @Dmgburg #175088 03:21 PM, 05 Aug 2020
    Окок, спасибо)
  • в system.dictionaries ошибки есть?
    может и баг что вот это место сломано Для таблиц типа MyISAM, время модификации проверяется запросом SHOW TABLE STATUS.
  • нет, статус в system.dictionaries LOADED, про Myisam я поэтому и указал что innodb движок в мускуле.
    Словарь работает как положено, при первом запросе грузит в память, атрибуты отдаёт. Визуально всё в порядке. Но вот обновления не происходит. Принудительно обновить получается через SYSTEM RELOAD DICTIONARY и данные обновляются - значение аттрибута меняется.

    В доке написано что invalidate query опционален, но возможно для каких то размеров внешних источников, или для каких то специфичных кейсов его всё таки необходимо указывать.
  • тогда ненаю
  • @dj_mixer #175092 03:39 PM, 05 Aug 2020
    делайте баг
  • @d_sevastyanov #175093 03:39 PM, 05 Aug 2020
    да и проверяю clickhouse.err.log и там с течение времени никаких ошибок не появляется
  • эх, понял, спасибо
  • ну попробуйте макс в 4-5 минут выставить и "продолжайте наблюдение"
  • https://t.me/clickhouse_ru
    что тако аттрибут? о чем речь?
  • LIFETIME(300) ещё попробуйте так (без мин-макс)
  • LOADED не причем, смотрите в last_exception
  • last_exception пустой
    last_successful_update_time: 2020-08-05 14:34:36 - то есть судя по всему обновление просто не тригерится
    надо попробовать invalidate_query таки
  • https://t.me/clickhouse_ru
    в логе кх погрепайте по имени словаря, это должно работать, тесты есть
  • значение колонки из внешней таблицы в мускуле, вроде в доке кх оперируют понятием "аттрибут"
  • я его просто смотрю через tail -f и никаких сообщений прост не падает, тестирую на локале пока
  • https://t.me/clickhouse_ru
    пфф, вот создал

    mysql: create view test as select 1 as id, now() as t;

    CREATE DICTIONARY test_dictionary(
    id UInt64,
    t DateTime
    )
    PRIMARY KEY id
    SOURCE(MYSQL(
    port 3306
    user 'xxx'
    password 'zzzz'
    replica(host 'yyyy' priority 1)
    db 'xxx'
    table 'test'

    ))

    LAYOUT(HASHED())
    LIFETIME(MIN 1 MAX 5)

    ;

    SELECT *
    FROM test_dictionary

    ┌─id─┬───────────────────t─┐
    │ 1 │ 2020-08-05 15:56:13 │
    └────┴─────────────────────┘

    SELECT *
    FROM test_dictionary

    ┌─id─┬───────────────────t─┐
    │ 1 │ 2020-08-05 15:58:08 │
    └────┴─────────────────────┘

    tail -f /var/log/clickhouse-server/clickhouse-server.log|grep test_dictionary

    2020.08.05 15:58:28.769354 [ 15594 ] {} <Trace> ExternalDictionariesLoader: Start loading object 'dw.test_dictionary'
    2020.08.05 15:58:28.774838 [ 15594 ] {} <Trace> ExternalDictionariesLoader: Supposed update time for 'dw.test_dictionary' is 2020-08-05 15:58:29 (loaded, lifetime [1, 5], no errors)
    2020.08.05 15:58:28.774846 [ 15594 ] {} <Trace> ExternalDictionariesLoader: Next update time for 'dw.test_dictionary' was set to 2020-08-05 15:58:29
    2020.08.05 15:58:33.770862 [ 15546 ] {} <Trace> ExternalDictionariesLoader: Will load the object 'dw.test_dictionary' in background, force = false, loading_id = 31
    2020.08.05 15:58:33.770874 [ 15546 ] {} <Trace> ExternalDictionariesLoader: Object 'dw.test_dictionary' is neither loaded nor failed, so it will not be reloaded as outdated.
    2020.08.05 15:58:33.770887 [ 15592 ] {} <Trace> ExternalDictionariesLoader: Start loading object 'dw.test_dictionary'
    2020.08.05 15:58:33.776387 [ 15592 ] {} <Trace> ExternalDictionariesLoader: Supposed update time for 'dw.test_dictionary' is 2020-08-05 15:58:38 (loaded, lifetime [1, 5], no errors)
    2020.08.05 15:58:33.776395 [ 15592 ] {} <Trace> ExternalDictionariesLoader: Next update time for 'dw.test_dictionary' was set to 2020-08-05 15:58:38
    2020.08.05 15:58:43.772762 [ 15546 ] {} <Trace> ExternalDictionariesLoader: Will load the object 'dw.test_dictionary' in background, force = false, loading_id = 32
    2020.08.05 15:58:43.772775 [ 15546 ] {} <Trace> ExternalDictionariesLoader: Object 'dw.test_dictionary' is neither loaded nor failed, so it wil
  • @d_sevastyanov #175104 04:07 PM, 05 Aug 2020
    вот что у меня после грепа:
    2020.08.05 15:55:51.327218 [ 190 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
    2020.08.05 15:55:51.327239 [ 190 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
    2020.08.05 15:55:51.327255 [ 190 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
    2020.08.05 15:55:51.331400 [ 150 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
    2020.08.05 15:55:51.331429 [ 150 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
    2020.08.05 15:55:51.331442 [ 150 ] {9029d5c4-115d-4eef-844c-8c18d246b0e8} <Trace> AccessRightsContext (testdb): Access granted: dictGet() ON testdb.test_dictionary
  • @d_sevastyanov #175105 04:07 PM, 05 Aug 2020
    собственно все сообщения такие
  • это я писал про clickhouse-server.err.log, ожидал там увидеть ошибку
  • https://t.me/clickhouse_ru
    мой пример попробуйте
  • да, ваш пример работает, ~ раз в 5сек обновляет
  • https://t.me/clickhouse_ru
    а mysql какой у вас?
  • @d_sevastyanov #175110 04:17 PM, 05 Aug 2020
    но странно что не вижу в логе похожих на ваши сообщения, только это:
    2020.08.05 16:14:28.060467 [ 200 ] {7366b92e-829f-4287-a769-0be03a9877ad} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:28.068312 [ 200 ] {7366b92e-829f-4287-a769-0be03a9877ad} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:33.335095 [ 200 ] {9c0c3245-58f8-49bf-aa1e-194eceaf0b95} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:33.335555 [ 200 ] {9c0c3245-58f8-49bf-aa1e-194eceaf0b95} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:34.075098 [ 200 ] {20854307-f847-4c7f-b0c7-de9c43574c43} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:34.075255 [ 200 ] {20854307-f847-4c7f-b0c7-de9c43574c43} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:34.775005 [ 200 ] {d6602cad-f7f6-4bc3-b87e-d8bf7878a10d} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:34.775451 [ 200 ] {d6602cad-f7f6-4bc3-b87e-d8bf7878a10d} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:35.442858 [ 200 ] {92d86932-59fa-48d8-a4cc-7b0eaa5a7606} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:35.442980 [ 200 ] {92d86932-59fa-48d8-a4cc-7b0eaa5a7606} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:36.119016 [ 200 ] {1c5167ec-afaa-4b63-8a5e-da93846c7881} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:36.119442 [ 200 ] {1c5167ec-afaa-4b63-8a5e-da93846c7881} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
    2020.08.05 16:14:36.623015 [ 200 ] {0de29a00-5950-4e78-b4a1-7cd1f744bad2} <Debug> executeQuery: (from 127.0.0.1:55872, user: test) SELECT * FROM test.test_dictionary
    2020.08.05 16:14:36.623472 [ 200 ] {0de29a00-5950-4e78-b4a1-7cd1f744bad2} <Trace> AccessRightsContext (test): Access granted: SELECT(id, t) ON test.test_dictionary
  • 8.0.20
    clickhouse build 20.3.13.127
  • https://t.me/clickhouse_ru
    у меня мастер какой-то 20.7, сейчас попробую 20.3

    https://github.com/ClickHouse/ClickHouse/issues/11475
    External dictionaries couldn't update from mysql 8 version · Issue #11475 · ClickHouse/ClickHouse

    In our organization we upgrade mysql to 8 version from 5.7 After that all external dictionaries stopped to update. For example, for one of the dictionaries. SELECT name, last_successful_update_time...

  • https://t.me/clickhouse_ru
    @den_crane #175113 04:25 PM, 05 Aug 2020
    брехня в доке КХ
  • https://t.me/clickhouse_ru
    @den_crane #175114 04:26 PM, 05 Aug 2020
    Для таблиц типа MyISAM, время модификации проверяется запросом SHOW TABLE STATUS.
  • https://t.me/clickhouse_ru
    @den_crane #175115 04:26 PM, 05 Aug 2020
    а в коде if (!update_time_value.isNull())
  • спасибо попробую конечно это решение, но думаю лучше заведу колонку updated_at в мускуле и укажу invalidate_query в словаре кх
  • https://t.me/clickhouse_ru
    @den_crane #175117 04:26 PM, 05 Aug 2020
    у iinnodb SHOW TABLE STATUS LIKE тоже есть Update_time
  • никогда такого не было...
  • https://t.me/clickhouse_ru
    @den_crane #175119 04:27 PM, 05 Aug 2020
    или может я брешу
  • https://t.me/clickhouse_ru
    @den_crane #175120 04:27 PM, 05 Aug 2020
    const auto & update_time_value = row[UPDATE_TIME_IDX];
  • https://t.me/clickhouse_ru
    @den_crane #175121 04:28 PM, 05 Aug 2020
    может только у myisam UPDATE_TIME_IDX
  • https://t.me/clickhouse_ru
    @den_crane #175122 04:30 PM, 05 Aug 2020
    ааа , UPDATE_TIME_IDX= 12 это 12 колонка в SHOW TABLE STATUS
  • https://t.me/clickhouse_ru
    @den_crane #175123 04:30 PM, 05 Aug 2020
    брехня в доке
  • https://t.me/clickhouse_ru
    @den_crane #175124 04:31 PM, 05 Aug 2020
    короче 8й mysql и information_schema_stats_expiry виноваты
  • https://t.me/clickhouse_ru
    @bralbral #175125 04:33 PM, 05 Aug 2020
    Подскажите , нужно кусок етл, для хранения промежуточных результатов запихнуть в бд. Т.е один воркер создаёт таблицу , пишет туда данных , другой их забирает и удаляет таблицу . Кликхаус для такого подойдёт ? Или из-за того, что транзакций нет это антипатерн ? Много маленьких таблиц до миллиона строк существуют в один момент времени в таком случае .
  • https://t.me/clickhouse_ru
    @orantius #175126 04:37 PM, 05 Aug 2020
    а реплицировать кто будет?
  • define "много"
  • https://t.me/clickhouse_ru
    100, к примеру.
  • @dj_mixer #175129 04:39 PM, 05 Aug 2020
    у нас например кеш запросов для paging так работает (не факт что работает, но планирует)
  • нормально, если задержка на create не волнует, и если вставка одним махом будет
    если ha не нужен можете stripelog engine взять
  • @dj_mixer #175131 04:41 PM, 05 Aug 2020
    на Log engine ещё бы репликацию/sharding натянуть типа ReplicatedMT, цены бы не было (наверно можно через distributed)
  • https://t.me/clickhouse_ru
    Яндекс.Метрика и нестандартный ClickHouse / Александр Макаров (Яндекс)

    Приглашаем на HighLoad ++ Весна 202117 и 18 мая 2021, Москва, Крокус-ЭкспоПрограмма, спикеры и билеты - https://bit.ly/3sZPj2Y--------HighLoad++ Moscow 2018Т...

  • https://t.me/clickhouse_ru
    @askjuise #175133 06:32 PM, 05 Aug 2020
    коллеги, подскажите пожалуйста еще раз, при создании реплицированной таблицы

    ReplicatedMergeTree('/clickhouse/tables/{shard}/hits', '{replica}',

    если в кластере два шарда, в каждом шарде два сервера (реплика), макрос {shard} в конфиге скажем для 3го сервера, который относится ко 2у шарду должен быть 2 (по номеру шарда) или 3 (просто по номеру сервера) ?
  • https://t.me/clickhouse_ru
    По номеру шарда
  • @N0tNu11 #175135 06:35 PM, 05 Aug 2020
    Привет! Делаю запрос с left join. В левой части делается limit 10. Колонки которые участвуют в USING находzтся в ORDER BY правой части. По логам вижу, что для правой части индекс не применяется. Может как-то кликхаус брать результаты левой части и фильтровать правую по индексу?
  • https://t.me/clickhouse_ru
    👍
  • да, поменяйте местами или используйте фильтрацию с IN для большой таблицы
  • А как поможет поменять местами? Сначала выполняется правая часть?
  • там уже столько версий и параметров, что я запутан... лучше в трейс смотреть
  • @dj_mixer #175140 06:38 PM, 05 Aug 2020
    там видно кто первый, кто второй, итд
  • https://t.me/clickhouse_ru
    КХ не умеет индексы для джойна, пишите подзапрос для правой таблицы
  • IN такой же как левая часть? Если запрос тот же, то он 1 раз исполнится?
  • https://t.me/clickhouse_ru
    нет, и даже будет разный результат иметь. Поэтому левую limit 10 во временную таблицу отдельным запросом.
    лучше конечно избегать джойнов, особенно таких
  • Спасибо!
  • https://t.me/clickhouse_ru
    @amoshi_san #175146 06:52 PM, 05 Aug 2020
    есть вопрос по кликхаус копиру:
    есть кластер N шардов, данные которого надо перенести на новый кластер с M шардов
    1) правильно ли я понимаю, что если я запущу один копиер на любом из кластеров, то он будет через одну точку тягать данные с N шардов на M шардов?
    2) для лучшей параллельности процесса лучше ли будет запустить на каждой ноде шарда по копиеру и в source_cluster прописать 127.0.0.1 (тяни с меня, но не с соседней машины)?
    3) если пункт 2 соблюдается, то улучшится ли параллельность процесса, если реплики тоже будут так данные передавать (или они законфликтуют по набору данных?)
    4) --task-path надо для каждой ноды с копиером делать выделенный, или учитывая что сорс у меня 127.0.0.1 можно через один? не законфликтуют ли воркеры за task_active_workers ноду в зукипере?
  • https://t.me/clickhouse_ru
    @askjuise #175147 07:31 PM, 05 Aug 2020
    коллеги, еще один дилетантский вопрос, про репликацию, шарды и кафку

    есть кластер
    шард1
    сервер1 (реплика)
    сервер2 (реплика)
    шард2
    сервер3 (реплика)
    сервер4 (реплика)

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

    есть таблица kafka_replica с
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/bi/0/kafka_replica', '{replica}')

    читаю стрим кафки kafka_stream в materizlied view и далее его отображаю в kafka_replica:
    CREATE MATERIALIZED VIEW bi.kafka_materialized TO bi.kafka_replica AS
    SELECT
    ...
    FROM
    (SELECT
    ...
    FROM bi.kafka_stream)

    далее, над bi.kafka_replica построена таблица kafka_all c
    ENGINE = Distributed(bi_replicated, bi
  • https://t.me/clickhouse_ru
    @askjuise #175148 07:32 PM, 05 Aug 2020
    и я хочу чтоб данные вычитанные из кафки на каждом сервере при записи в kafka_replica писались в заданный шард и соответственно внутри него реплицировались
  • @Sirvall #175149 07:40 PM, 05 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    вам надо из N в M , читать надо через одну distributed писать в другую distributed -- через одну точку, иначе как? надо же решардить каждую строку.
    но так как партиций много и если воркеров много, будут задействованы все ноды
  • https://t.me/clickhouse_ru
    >писались в заданный шард
    заданный как? шардирование по полю какому-то?

    CREATE MATERIALIZED VIEW bi.kafka_materialized TO kafka_all AS

    но вообще это все хреново
  • https://t.me/clickhouse_ru
    @askjuise #175152 08:20 PM, 05 Aug 2020
    уже разобрался, включил internal replication и админы докрутили права, чтоб работала репликация
  • https://t.me/clickhouse_ru
    @den_crane #175153 08:20 PM, 05 Aug 2020
    и надо партиционировать в кафке партициями или топиками и читать например разные топики на шардах
  • https://t.me/clickhouse_ru
    @askjuise #175154 08:20 PM, 05 Aug 2020
    @den_crane расскажите пожалуйста, почему это хреново?
  • https://t.me/clickhouse_ru
    эм, а почему так?
  • https://t.me/clickhouse_ru
    internal replication из другой оперы, оно должно быть true у вас
  • https://t.me/clickhouse_ru
    @askjuise #175157 08:23 PM, 05 Aug 2020
    уточню, чтоб закрепить, я хочу писать в таблицу _replica c engine ReplicatedMergeTree и если я пишу в эту таблицу на одном сервере, я хочу чтоб такая же запись появлялась и на другом (на реплике), как раз это делается через internal replication = true
  • https://t.me/clickhouse_ru
    @askjuise #175158 08:23 PM, 05 Aug 2020
    или я ошибаюсь?
  • https://t.me/clickhouse_ru
    @den_crane #175159 08:23 PM, 05 Aug 2020
    если есть ENGINE = Replicated internal_replication обязано быть true
    (internal_replication=true означает что репликацию делает сама таблица потому что у нее Replicated engine)
  • https://t.me/clickhouse_ru
    >писались в заданный шард
    заданный как? шардирование по полю какому-то?
    что вы вообще понимаете под фразой "писались в заданный шард"
  • https://t.me/clickhouse_ru
    @askjuise #175161 08:26 PM, 05 Aug 2020
    поясню от результата, кластер из 4х нод, в котором 2 шарда, в каждом 2 сервера в реплике, каждый сервер читает из кафка топика и пишет в таблицу _replicated
  • https://t.me/clickhouse_ru
    @askjuise #175162 08:27 PM, 05 Aug 2020
    я хочу, чтоб данные прочитанные из кафки скажем сервером 1 в шарде 1 зареплицировались на серер 2 в этом же шарде и наоборот
  • https://t.me/clickhouse_ru
    @askjuise #175163 08:28 PM, 05 Aug 2020
    тоже самое и для второго шарда, сервер 3 в шарде 2 реплицирует на серевер 4, сервер 4 реплицирует на сервер 3
  • https://t.me/clickhouse_ru
    @askjuise #175164 08:28 PM, 05 Aug 2020
    над этими 4я серверами и их _replicated таблицей я хочу построить distributed таблицу
  • https://t.me/clickhouse_ru
    ааа, ясно, тогда все ОК у вас.
    У вас просто рандомное шардирование, половина записей в одном шарде, половина в другом.
  • https://t.me/clickhouse_ru
    @askjuise #175166 08:44 PM, 05 Aug 2020
    Ok, понял, спасибо
  • @325485046 #175167 11:48 PM, 05 Aug 2020
    Доброго времени всем, может, кто подскажет:

    вставка значений в Decimal(9, 2) на КХ 20.4.4.18, при вставке значения 1.01 умудряется (крайне редко, но все же) фейлиться с

    Code: 69, e.displayText() = DB::Exception: Too many digits (10 > 9) in decimal value: (at row 171)

    Row 171:
    <...>
    Column 38, name: Amount, type: Decimal(9, 2), parsed text: "1.00999999"ERROR

    как работает эта магия и куда колдовать?
  • https://t.me/clickhouse_ru
    вот прямо 1.01?
  • @325485046 #175169 11:50 PM, 05 Aug 2020
    да, именно так
  • @325485046 #175170 11:50 PM, 05 Aug 2020
    логи параллельно со вставкой пишутся, так что точно именно это число улетало
  • https://t.me/clickhouse_ru
    @den_crane #175171 11:53 PM, 05 Aug 2020
    а воспроизводится если

    create table x(a Decimal(9,2)) Engine=Null;
    echo 'insert into x values (1.01)'|clickhouse-benchmark --database default
  • @325485046 #175172 11:55 PM, 05 Aug 2020
    как проверю - отпишусь, спасибо за ответ в позднее время)
  • https://t.me/clickhouse_ru
    @den_crane #175173 11:56 PM, 05 Aug 2020
    в каком формате вставка? TSV? values ? API?
  • @325485046 #175174 11:57 PM, 05 Aug 2020
    CSV
  • @325485046 #175175 11:57 PM, 05 Aug 2020
    туда летит как раз в виде ...,1.01,...
  • 06 August 2020 (225 messages)
  • https://t.me/clickhouse_ru
    @den_crane #175176 12:03 AM, 06 Aug 2020
    можно кавычки добавить для теста "1.01"
  • @325485046 #175177 12:04 AM, 06 Aug 2020
    тоже опробую, спасибо)
  • https://t.me/clickhouse_ru
    @egorpopov94 #175178 06:44 AM, 06 Aug 2020
    Всем привет! Есть база БД с движком Dictionary. при попытке создать словарь через DDL с указанием этой БД получаю ошибку вида " DB::Exception: Dictionary engine doesn't support dictionaries". Без указания БД словарь создается в базе default. Подскажите, есть ли возможность с помощью DDL создать словарь, чтобы увидеть его в базе Dictionary?
  • у БД нет таких движков, движок таблицы? какой DDL запускаете?
  • @dj_mixer #175181 07:35 AM, 06 Aug 2020
    если создать словарь через DDL, можно спокойно кидать запросы
  • https://t.me/clickhouse_ru
    @egorpopov94 #175182 07:35 AM, 06 Aug 2020
    почему нет, create database engine = Dictionary
  • https://t.me/clickhouse_ru
    @egorpopov94 #175183 07:37 AM, 06 Aug 2020
    DDL вида CREATE DICTIONARY test_dict
    (
    id UInt64
    ,record_number Int32 default 0
    )
    PRIMARY KEY id
    SOURCE(CLICKHOUSE(
    host 'localhost'
    port 9000
    user 'default'
    password ''
    db 'default'
    table 'test_data'
    ))
    LAYOUT(RANGE_HASHED())
    RANGE(MIN date_from MAX date_to)
    LIFETIME(MIN 300 MAX 360);
  • Введение | Документация ClickHouse v20.3

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

  • в обычной КХ БД должно работать...
    про движок БД dictionary - не слышал
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @egorpopov94 #175187 07:40 AM, 06 Aug 2020
    Оно и работает, но таблица создается по умолчанию в default. а если описать ее в конфиге, то автоматом подтягивается в dictionary базу.
  • https://t.me/clickhouse_ru
    @111093495 #175188 07:40 AM, 06 Aug 2020
    Всем привет, подскажите можно ли сделать alter materialize view без целевой таблицы ( TO )? а то в доке только про них написано...

    detach view и alter .inner.xxx таблицы сработает?
  • https://t.me/clickhouse_ru
    @egorpopov94 #175189 07:40 AM, 06 Aug 2020
    я как раз хотел узнать, реально ли через ddl запихать словарь сразу в dictionary базу
  • @dj_mixer #175190 07:41 AM, 06 Aug 2020
    это нужно было раньше когда словари XML... сейчас неясно зачем это надо
  • но вообще вам так:
    create database djdicttest Engine=Dictionary;
    select * from djdicttest.`dbname.dictname`;
  • https://t.me/clickhouse_ru
    ого, спасибо попробую👌
  • @dj_mixer #175193 07:43 AM, 06 Aug 2020
    но вообще, после введения DDL, не рекомендую... у меня вот теперь она не дропается... =)
  • select * from system.tables;
    и это сломалось )
  • https://t.me/clickhouse_ru
    надеюсь хоть база не продуктовая?(
  • конечно продуктовая. вот обновляю CV параллельно =)
  • https://t.me/clickhouse_ru
    ну тогда напоследок можно rm -r /var/lib/clickhouse )
  • https://t.me/clickhouse_ru
    @baikulov #175198 08:12 AM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @baikulov #175199 08:15 AM, 06 Aug 2020
    Дратути, коллеги!

    Вопрос такой: хочу развернуть Click House на GoogleCloud. VM на ubuntu 16.04. Задача: складывать данные в Click House через R и потом подключаться к Click House при помощи Power BI. Какие могут быть проблемы? Кто-то может подсказать?
  • https://t.me/clickhouse_ru
    @MashinaMashina #175200 08:21 AM, 06 Aug 2020
    Здравствуйте,

    Запрос:
    SELECT
    year,
    month,
    day,
    COUNT() * any(_sample_factor) AS data
    FROM events
    SAMPLE 10000
    WHERE (event_time > 1594109197) AND (project_id = 171) AND (year IN (20)) AND (month IN (7, 8)) AND (event_name = 'view')
    GROUP BY
    year,
    month,
    day

    Получаю ошибку:
    Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: RangeReader read 13084 rows, but 13198 expected.

    В чем может быть ошибка?

    ClickHouse server version 20.1.4.14
  • @ssserj #175201 08:28 AM, 06 Aug 2020
    Вопрос про комбинаторы агрегатной функции -State, возможно есть функция или подход к решению? Необходимо найти пересечение (intersection) двух групп пользователей разных сайтов. В документации есть рабочий пример через использование IN, что типа SELECT uniq(UserID) FROM distributed_table WHERE CounterID = 101500 AND UserID IN (SELECT UserID FROM local_table WHERE CounterID = 34)

    Допустим у меня уже есть “свертки” по уникам, по дням. Уники уже хранятся в виде результата выполнения комбинатора агрегатной функции uniqCombinedState. Можно ли как-то найти пересечение двух uniqCombinedState?
    IN Operators | ClickHouse Documentation

    IN Operators The IN, NOT IN, GLOBAL IN, and GLOBAL NOT IN operators are covered separately, since their functionality is

  • @7699150 #175202 08:37 AM, 06 Aug 2020
    Ребят, привет! Какое-то время назад писал об этой проблеме, но так и не поборол её.
    Начала сыпать ошибка WriteBufferFromHTTPServerResponse полный лог ошибки ниже.
    Причину не пойму. Куда можно копать, может кто-то сталкивался с таким?
  • @7699150 #175203 08:37 AM, 06 Aug 2020
    2020.08.06 08:30:06.473605 [ 38362 ] {} <Error> virtual DB::WriteBufferFromHTTPServerResponse::~WriteBufferFromHTTPServerResponse(): Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 8, Stack trace (when copying this message, always include the lines below):

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x10ed0da0 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x95c923d in /usr/bin/clickhouse
    2. ? @ 0xc0cb686 in /usr/bin/clickhouse
    3. DB::WriteBufferFromHTTPServerResponse::nextImpl() @ 0xe63fbb2 in /usr/bin/clickhouse
    4. DB::WriteBufferFromHTTPServerResponse::~WriteBufferFromHTTPServerResponse() @ 0xe640373 in /usr/bin/clickhouse
    5. DB::StaticRequestHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0xe68e48a in /usr/bin/clickhouse
    6. Poco::Net::HTTPServerConnection::run() @ 0x10db5183 in /usr/bin/clickhouse
    7. Poco::Net::TCPServerConnection::start() @ 0x10deebcb in /usr/bin/clickhouse
    8. Poco::Net::TCPServerDispatcher::run() @ 0x10def05b in /usr/bin/clickhouse
    9. Poco::PooledThread::run() @ 0x10f6db86 in /usr/bin/clickhouse
    10. Poco::ThreadImpl::runnableEntry(void*) @ 0x10f68f80 in /usr/bin/clickhouse
    11. start_thread @ 0x7fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so
    12. __clone @ 0xf94cf in /usr/lib/x86_64-linux-gnu/libc-2.28.so
  • https://t.me/clickhouse_ru
    @Makasinov #175204 08:41 AM, 06 Aug 2020
    Привет! После рестарта кликхауса на /replicas_status был absolute delay в неделю почти. Почему неделя, а не пара минут максимум? Как это значение высчитывается?
  • @767696369 #175205 08:42 AM, 06 Aug 2020
    Гуру, подскажите пожалуйста по проблеме,
    есть кластер (v20.4.4, 2 шарда по 2 реплики), 3 ноды из 4х постоянно спамят ошибки по несколько раз в секунду:
    <Error> executeQuery: Code: 252, e.displayText() = DB::Exception: Too many partitions for single INSERT block (more than 100).
    одна из нод (реплика ноды с которой все ок) спамит дополнительно :
    <Error> default.snapshot.DirectoryMonitor: Code: 252, e.displayText() = DB::Exception: Received from xxxx:9000. DB::Exception: Too many partitions for single INSERT block (more than 100)
    Причем спамит и в такое время, в которое в КХ никто не пишет. Такое ощущение что репликация какая-то залипла.. но replication_queue пустая на всех нодах. Куда еще можно посмотреть?
  • https://t.me/clickhouse_ru
    Репликация не через инсерты работает
  • https://t.me/clickhouse_ru
    @rvkggwp #175207 08:51 AM, 06 Aug 2020
    У меня есть таблица на engine=kafka. Дальше я построил материализованную вьюху на таблицу data. Вопрос в том, как мне сообщить kafka что запись записалась в таблицу data ?
  • @752212300 #175208 08:53 AM, 06 Aug 2020
    Здравствйте! Вопрос такой - как соотносится, примерно, объем данных, который в клик пишем, и то, что там хранится в итоге на диске?
  • https://t.me/clickhouse_ru
    Зачем Вам сообщать Кафке о том что была запись?
  • https://t.me/clickhouse_ru
    чтобы быть уверенным, что я не потерял запись
  • https://t.me/clickhouse_ru
    Впервые о таком методе слышу, но с большой вероятностью никак Вы не сообщите Кафке, что запись была осуществлена
  • https://t.me/clickhouse_ru
    мне нужно вычитать это данное и записать в другой топик. У меня есть фоновые задачи и мне нужно быть уверенным, что данное записалось, прежде чем я запустил фоновую задачу.
  • @lenden #175213 09:05 AM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    Если Вы понимаете как работает Кафка, то наверное знаете, что есть некий период, который она хранит сообщения после прочтения. Этим можно воспользоваться в случае если данные не записались, то прочитать их ещё раз для этого Вам конечно же нужно знать смещение
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @x3ter #175216 09:24 AM, 06 Aug 2020
    Здравия!
    Валится ошибка
    <Warning> StorageKafka (queue): Can't get assignment. It can be caused by some issue with consumer group (not enough partitions?). Will keep trying.

    Сообщения в кафке есть, прочитать их с помощью Conductor могу
    Что проверить имеет смысл?
  • @scooby18 #175217 09:29 AM, 06 Aug 2020
    @den_crane, подскажи плиз. Получаю такую ошибку в логах КХ: ZooKeeper error: Code: 999, e.displayText() = Coordination::Exception: Transaction failed (No node): Op #0, path: /clickhouse/task_queue/ddl/query-0000000002/active/localhost:9000
    Я правильно понимаю что это из-за того что не настроен interserver_http_host?ну или хостнейм смотреть надо. я пытаюсь создать бд с ON CLUSTER
  • https://t.me/clickhouse_ru
    Сколько консюмеров у Вас в кликхаузе читает из таблицы и сколько партиций в самой кафке?
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #175218 #175219 09:40 AM, 06 Aug 2020
    В кафке 3 партишена(сообщения есть во всех трёх), в кластере кликхауса 3 хоста
    И варнинг такой валится на всех 3 хостах кликхауса
  • https://t.me/clickhouse_ru
    И kafka_group_name на всех нодах кластера у таблицы одинаковая?
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #175220 #175221 09:43 AM, 06 Aug 2020
    Да, по идее.
    Я таблицу ON CLUSTER создавал
    Сейчас придумаю, как достоверно проверить
  • https://t.me/clickhouse_ru
    @vladislav_sakun #175222 09:43 AM, 06 Aug 2020
    Какой у Вас кластер?
    1 шард 3 реплики?
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #175222 #175223 09:45 AM, 06 Aug 2020
    да, один шард, три реплики
  • https://t.me/clickhouse_ru
    На каждой реплике, я так понимаю, у Вас есть MV, которые пишет в ReplicatedMergeTree таблицу на своей реплике?
  • https://t.me/clickhouse_ru
    @x3ter ↶ Reply to #175224 #175225 09:57 AM, 06 Aug 2020
    Да, всё так

    Ещё важное замечание - у меня есть такой же набор таблиц на managed clickhouse в Яндекс.Облако
    Сейчас я перетаскиваю эту схему в другое облако

    Настройки кафки в облаках также идентичны (за исключением того, что в ЯО три хоста кафки, а в другом облаке - два хоста. Но количество партишенов одинаковое)
  • https://t.me/clickhouse_ru
    @adwski #175226 10:08 AM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @111093495 #175227 10:11 AM, 06 Aug 2020
    все привет!
    после апдейта с версии 19.17.6.36 на версию 20.3.10.75 иногда (те иногда норм проходят, иногда падают) стали падать ошибки когда обращаюсь за данными через mysql(..), может кто-нибудь сталкивался, знает в чем причина?

    c909828dc32e :) SELECT *
    :-] FROM mysql(..') limit 10

    SELECT *
    FROM mysql('..', '..', '..', '..', '..')
    LIMIT 10

    Received exception from server (version 20.3.10):
    Code: 1000. DB::Exception: Received from localhost:9000. DB::Exception: mysqlxx::ConnectionFailed: Unknown SSL error ((nullptr):3306).

    0 rows in set. Elapsed: 0.893 sec.
  • Не подскажите?
  • https://t.me/clickhouse_ru
    я взял файлик bbb.x и зажал архиватором 7zip , как соотносится, примерно, объем данных bbb.x и bbb.x.7zip ?
  • 42x compression
  • Те один к одному * на k сжатия?
  • https://t.me/clickhouse_ru
    иногда в 100 раз сжимается, иногда в 2.

    И можно разные компрессоры и кодеки использовать, lz4 zstd, delta, и т.д.
  • там блоки сжатия по 65к строк (может менятся) поколоночно, ессно зависит от порядка, кодеков, компрессии. пока не проверите - не поймете
  • https://t.me/clickhouse_ru
    обновляться до 20.1.16.120
  • https://t.me/clickhouse_ru
    distrbuted таблица для инсертов используется? ну она пытается асинхронно вставить и не может
  • да, используется
  • https://t.me/clickhouse_ru
    >localhost:9000
    да, из-за interserver_http_host
  • https://t.me/clickhouse_ru
    при инсертах данные пишутся в distributed и лежат в .bin файлах на диске, дальше distributed вставляет в MergeTree и не может из-за ошибки, и повторяет до успеха
  • а как это можно пофиксить?
  • https://t.me/clickhouse_ru
    Ну вы понимаете что в ошибке написано? Как у вас таблица создана? Partition by что?
  • https://t.me/clickhouse_ru
    @ukchuvrus #175242 11:09 AM, 06 Aug 2020
    partition by дата и источник информации
  • https://t.me/clickhouse_ru
    @ukchuvrus #175243 11:10 AM, 06 Aug 2020
    мне не понятно другое, он получается на одной ноде смог записать, а на другую асинхронно не может?
  • https://t.me/clickhouse_ru
    @ukchuvrus #175244 11:10 AM, 06 Aug 2020
    как такое возможно, таблицы одинаковые
  • https://t.me/clickhouse_ru
    @ukchuvrus #175245 11:11 AM, 06 Aug 2020
    или оно вообще в принципе никогда не вставится, и никогда не пропадет если неправильный запрос создать в дистрибьютед таблицу?
  • https://t.me/clickhouse_ru
    если таблицы replicated то вставка делается только на одной. Параметр поставьте 0 в профиле пользвателя.
    А как так получилось что вставилось 100 дней? Случайно?
  • https://t.me/clickhouse_ru
    @den_crane #175247 11:22 AM, 06 Aug 2020
    --max_partitions_per_insert_block arg Limit maximum number of partitions in single INSERTed block. Zero means unlimited. Throw exception if the block contains too many partitions. This setting is a safety threshold, because using large number of partitions is a common misconception.
  • https://t.me/clickhouse_ru
    Да, случайно, попытались батчем историю залить слишком большую
  • https://t.me/clickhouse_ru
    @baikulov #175251 11:43 AM, 06 Aug 2020
    Нужен хелп!

    Кто-то подключался к ClickHouse через R? Я пробую подключиться через DBI и драйвер RClickhouse и получаю ошибку

    Error in connect(config[["host"]], strtoi(config[["port"]]), config[["db"]], :
  • а этот запрос можно как-то убить?
    или теперь только через max_partitions_per_insert_block = 0
  • https://t.me/clickhouse_ru
    Проще в профиль парметр добавить, он же применяется на лету. И да можно этот bin файл удалить
  • а как найти "правильный" .bin ?
    вроде нашли query c которой все началось, но про расположение .bin там ничего нет..
  • https://t.me/clickhouse_ru
    Из лога по id запроса который падает ?
  • @767696369 #175256 12:00 PM, 06 Aug 2020
    да, в query_log, через initual_query_id.
    и время совпадает с началом ошибок
  • https://t.me/clickhouse_ru
    @artilligence #175259 12:17 PM, 06 Aug 2020
    Господа, доброго времени суток!
    Подскажите, пожалуйста, в чем может быть проблема:

    SELECT count(*)
    FROM dis_locatable_entity_states

    ↓ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 20.3.7):
    Code: 999. DB::Exception: Received from localhost:9000. DB::Exception: Received from chi-clickhouse-db-org-sim-default-1-1:9000. DB::Exception: Session expired (Session expired).
  • https://t.me/clickhouse_ru
    Кластер в кубере из 4 нод: 2 шарда, 2 реплики
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE dis_locatable_entity_states что говорит?
  • https://t.me/clickhouse_ru
    @artilligence #175263 12:43 PM, 06 Aug 2020
    SHOW CREATE TABLE dis_locatable_entity_states

    SHOW CREATE TABLE dis_locatable_entity_states

    ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ CREATE TABLE db.dis_locatable_entity_states (`timestamp` DateTime, `location_online_status` LowCardinality(String), `cur_patient_state` LowCardinality(String), `cur_patient_timestamp` DateTime, `prev_patient_state` LowCardinality(String), `prev_patient_timestamp` DateTime, `loc_room_id` UUID, `loc_ward_id` UUID, `loc_floor_id` UUID, `loc_building_id` UUID, `loc_campus_id` UUID, `loc_campus_org_code` LowCardinality(String), `loc_timestamp` DateTime, `site_id` UUID, `site_type` LowCardinality(String), `site_name` String, `entity_id` UUID, `entity_org_code` LowCardinality(String), `entity_type` LowCardinality(String), `entity_sub_type` LowCardinality(String), `entity_name` String, `cur_clean_state` LowCardinality(String), `cur_clean_timestamp` DateTime, `prev_clean_state` LowCardinality(String), `prev_clean_timestamp` DateTime, `cur_broken_state` LowCardinality(String), `cur_broken_timestamp` DateTime, `prev_broken_state` LowCardinality(String), `prev_broken_timestamp` DateTime, `cur_in_use_state` LowCardinality(String), `cur_in_use_timestamp` DateTime, `prev_in_use_state` LowCardinality(String), `prev_in_use_timestamp` DateTime, `user` String, `group` String, `prev_user` String, `prev_group` String, `event_type` LowCardinality(String), `deleted_at` Nullable(DateTime)) ENGINE = Distributed(default, db, locatable_entity_states, rand())
  • https://t.me/clickhouse_ru
    пишет ошибку при вставк:

    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x10541260 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x8f3f72d in /usr/bin/clickhouse
    2. ? @ 0xd7af148 in /usr/bin/clickhouse
    3. DB::StorageReplicatedMergeTree::write(std::__1::shared_ptr<DB::IAST> const&, DB::Context const&) @ 0xd758bb9 in /usr/bin/clickhouse
    4. DB::PushingToViewsBlockOutputStream::PushingToViewsBlockOutputStream(std::__1::shared_ptr<DB::IStorage> const&, DB::Context const&, std::__1::shared_ptr<DB::IAST> const&, bool) @ 0xd0d5fdb in /usr/bin/clickhouse
    5. DB::InterpreterInsertQuery::execute() @ 0xd0cd651 in /usr/bin/clickhouse
    6. DB::PushingToViewsBlockOutputStream::PushingToViewsBlockOutputStream(std::__1::shared_ptr<DB::IStorage> const&, DB::Context const&, std::__1::shared_ptr<DB::IAST> const&, bool) @ 0xd0d5ba9 in /usr/bin/clickhouse
    7. DB::InterpreterInsertQuery::execute() @ 0xd0cd651 in /usr/bin/clickhouse
    8. DB::DistributedBlockOutputStream::writeToLocal(DB::Block const&, unsigned long) @ 0xd8a64d1 in /usr/bin/clickhouse
    9. DB::DistributedBlockOutputStream::writeAsyncImpl(DB::Block const&, unsigned long) @ 0xd8a80f6 in /usr/bin/clickhouse
    10. DB::DistributedBlockOutputStream::writeSplitAsync(DB::Block const&) @ 0xd8a85a0 in /usr/bin/clickhouse
    11. DB::DistributedBlockOutputStream::write(DB::Block const&) @ 0xd8a8b2d in /usr/bin/clickhouse
    12. DB::PushingToViewsBlockOutputStream::write(DB::Block const&) @ 0xd0d4b1e in /usr/bin/clickhouse
    13. DB::SquashingBlockOutputStream::writeSuffix() @ 0xd0e286a in /usr/bin/clickhouse
    14. DB::TCPHandler::processInsertQuery(DB::Settings const&) @ 0x90217b2 in /usr/bin/clickhouse
    15. DB::TCPHandler::runImpl() @ 0x9022ecf in /usr/bin/clickhouse
    16. DB::TCPHandler::run() @ 0x90234c0 in /usr/bin/clickhouse
    17. Poco::Net::TCPServerConnection::start() @ 0xe3b885b in /usr/bin/clickhouse
    18. Poco::Net::TCPServerDispatcher::run() @ 0xe3b8cdd in /usr/bin/clickhouse
    19. Poco::PooledThread::run() @ 0x105cf3c7 in /usr/bin/clickhouse
    20. Poco::ThreadImpl::runnableEntry(void*) @ 0x105cb1cc in /usr/bin/clickhouse
    21. ? @ 0x105ccb6d in /usr/bin/clickhouse
    22. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
    23. __clone @ 0x12188f in /lib/x86_64-linux-gnu/libc-2.27.so
  • https://t.me/clickhouse_ru
    @floxard #175265 12:50 PM, 06 Aug 2020
    а кто нибудь знает как легко транспонировать выхлоп?
    запрос выбирает две строки и много много столбцов, хочу подифать глазами столбцы в конкретных двух строках которые выбираю
  • https://t.me/clickhouse_ru
    @floxard #175266 12:50 PM, 06 Aug 2020
    что нибудь типа format Vertical, но чтоб видеть рядом
  • https://t.me/clickhouse_ru
    @floxard #175267 12:53 PM, 06 Aug 2020
    мож какой нибудь однострочник на питоне/баше/перле можно натравить на CSV/TSV/любой-формат-выхлопа-кликхауса
  • https://t.me/clickhouse_ru
    не актуально, транспонировал
  • https://t.me/clickhouse_ru
    @AvadaKebaba #175269 01:26 PM, 06 Aug 2020
    Что бы врубить ssl нужно сгенерить crt key pem и раскоментить 8443 порт? Или что-то ещё нужно? У меня не завелось, хотя порт раскоментил и все сгенерил
  • Спасибо! временное изменение параметра помогло
  • https://t.me/clickhouse_ru
    у вас коннекта нет между нодами
    в приведенном stacktrace там выше сообщение об ошибке есть в логе выше
  • https://t.me/clickhouse_ru
    спасибо! Как чинить?
  • https://t.me/clickhouse_ru
    сообщение об ошибке при insert посмотрите
    ну и у вас zookeeper поднят в k8s?
    под с зукипером живой?
  • @GordeevEvgenii #175274 01:34 PM, 06 Aug 2020
    А в чем разница между матвьями которые POPULATED и которые TO db.table? Я понимаю что в одном случае создается кэш-таблица на диске, а в другом не создается. А еще какие-нибудь различия есть? Зачем вообще может понадобиться популейтед таблица в матвью? Это чтобы выгребать данные с нод кластера или есть смысл такое мутить даже если табличка "локальная"?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #175274 #175275 01:36 PM, 06 Aug 2020
    TO появилось сильно позже. Изначально его не было и просто создавалась таблица под mview со специальным именем.
  • https://t.me/clickhouse_ru
    посмотрю все, спасибо!
  • https://t.me/clickhouse_ru
    sessions expired это значит нет коннекта с Zookeeper
  • https://t.me/clickhouse_ru
    в логе КХ написано что неправильно, может права на key кривые
  • https://t.me/clickhouse_ru
    написано же все в доке?

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

    без TO -- MV создаст таблицу в которой будут хранится ее данные самостоятельно и назовет эту свою таблицу .inner.mvname
    c TO -- мы сами создали таблицу в которой будут хранится данные MV

    populate и TO несовместимы, это недоделка

    в MV можно делать инсерты, и заполнять ее как угодно без использования populate

    optimize_move_to_prewhere не работает если делать запросы к MV, поэтому MV без TO теряют смысл (или делать селекты к .inner.mvname вручную, что полный бред)
  • https://t.me/clickhouse_ru
    @den_crane #175280 01:58 PM, 06 Aug 2020
    и до кучи: MV это триггер на инсерт, оно не читает исходную таблицу (кроме шага populate)
  • Даже когда оно ТО?
  • https://t.me/clickhouse_ru
    исходная таблица -- это таблица которая написана в SELECT FROM исходная
  • https://t.me/clickhouse_ru
    @den_crane #175283 01:59 PM, 06 Aug 2020
    конечно исходную MV вообще не читает в случае TO
  • https://t.me/clickhouse_ru
    @den_crane #175284 02:02 PM, 06 Aug 2020
    Разница TO и без TO, только в том куда триггер делает инсерт, либо в готовую таблицу либо в самосозданную .inner.mvname

    все это можно переделать из одного в другое, это просто обычные таблицы и sql файлы
  • Ясно. Еще такой вопрос - если у меня реплекейтед таблица, и я матвью навешу, которое без ТО, оно будет хавать инсерты которые прилетят через зукипер? (допустим нода отвалилась, прошли инсерты, потом нода поднялась - очередь пустая, но есть новые парты)
  • https://t.me/clickhouse_ru
    @den_crane #175286 02:03 PM, 06 Aug 2020
    populate -- делает крайне тупую вещь, insert into .inner.mvname select который в MV, тупость в том что памяти может не хватить
  • https://t.me/clickhouse_ru
    zookeeper хранит данные (имена, контр. суммы) о партах(файлах) которые надо скачать одной ноде с другой.

    MV все равно какой Engine исходной таблицы, оно получает данные от инсертов, был инсерт на ноде A, MV на ноде A получит данные

    Естественно надо просто делать Replicated engine у MV чтобы они тоже реплицировались если надо иметь MV на всех нодах, само MV тоже создавать на всех нодах (там инсерты)
  • Да вот блин хотелось бы инсертить на одной ноде а данные в матвью собирать на другой
  • https://t.me/clickhouse_ru
    ну это возможно, просто в TO прописать таблицу с либо Engine Distributed либо remote

    т.е. делаем insert into source на ноде A, там MV получает данные от инсерта, считает select и делает свой инсерт в таблицу на другой ноде
  • https://t.me/clickhouse_ru
    @logast #175290 02:12 PM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #175291 02:12 PM, 06 Aug 2020
    хрень конечно полная и будет ломаться при разрыве связи
  • https://t.me/clickhouse_ru
    @mo1seev #175292 02:32 PM, 06 Aug 2020
    Всем привет! Подскажите, а можно в существующую таблицу добавить индекс, например через alter?
  • https://t.me/clickhouse_ru
    @rjs45 #175293 02:47 PM, 06 Aug 2020
    Доброго времени суток.
    ClickHouse (ver. 20.4.5.36)
    При рестарте КХ получаем креш и
    {} <Error> Application: Coordination::Exception: No node, path: /clickhouse/tables/1/db.tbl/replicas/server-name/metadata: Cannot attach table `db`.`.inner.tbl` from metadata file /var/lib/clickhouse/metadata/db/%2Einner%tbl.sql from query ATTACH TABLE `.inner.tbl` (.........

    Что может быть и что делать? Вроде ничего такого не делали на сервере
  • https://t.me/clickhouse_ru
    @floxard #175294 02:50 PM, 06 Aug 2020
    Application: Coordination::Exception: No node, path: /clickhouse/tables/1/db.tbl/replicas/server-name/metadata
  • https://t.me/clickhouse_ru
    @floxard #175295 02:50 PM, 06 Aug 2020
    говорит нету такого путя в ЗК
  • https://t.me/clickhouse_ru
    @floxard #175296 02:52 PM, 06 Aug 2020
    надо:
    1) проверить что в конфиге не потерялся ЗК
    2) "select * from system.zookeeper where path 'путь';" убедиться что кх доходит в ЗК и поперебирать путя найти нужны
    3) посмотреть в metadata/db/tbl.sql на файлухе что за макросы используются у вас и поправить в конфиге нужные макросы, чтоб путя стали правильные
  • https://t.me/clickhouse_ru
    @floxard #175297 02:53 PM, 06 Aug 2020
    и все станет хорошо ;)
  • https://t.me/clickhouse_ru
    в КХ нет инверсных индексов
    какой индекс? skip ? в доке описано
    первичный индекс задается при создании таблицы
  • https://t.me/clickhouse_ru
    @vladislav_sakun #175300 03:48 PM, 06 Aug 2020
    Добрый день!
    Подскажите в какой версии кликхауза доступен тип хранения словаря ssd_cache?
  • @tanirf #175301 03:55 PM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    Отвечу сам, начиная с версии 20.6, которая пока ещё не является стабильной
  • https://t.me/clickhouse_ru
    @den_crane #175303 04:21 PM, 06 Aug 2020
    20.6 prestable, т.е. есть шансы что зарелизится на этой неделе, тестировать у себя уже можно / нужно
  • https://t.me/clickhouse_ru
    Ну и подождать выход следующих минорных версий с исправлением багов :)
  • https://t.me/clickhouse_ru
    никто ssd пользоваться не начнет еще полгода, поэтому баги найдете все равно вы, раньше найдете, раньше исправят.
  • https://t.me/clickhouse_ru
    Значит жду релиз и буду пробовать
  • @nizovtsevnv #175307 05:08 PM, 06 Aug 2020
    Привет всем, запустил в базу кучу мелких альтер удалений, запустил оптимайз на таблицу, параллельно посматриваю is_done, но что-то как-то они не прибавляются, как мониторить процесс накатывания мутаций?
    мониторю завершенность так: select is_done, count() from system.mutations where table='table_name’ group by is_done
  • @nizovtsevnv #175308 05:12 PM, 06 Aug 2020
    да и оптимайз выдает:
    Timeout exceeded while receiving data from server. Waited for 300 seconds, timeout is 300 seconds.
    Cancelling query.

    подключение clickhouse-client —receive_timeout=86400 не помогает
  • https://t.me/clickhouse_ru
    @ProffUst #175309 05:13 PM, 06 Aug 2020
    не тот таймаут выставляешь
  • https://t.me/clickhouse_ru
    @ProffUst #175310 05:13 PM, 06 Aug 2020
    там есть query_timeout
  • @nizovtsevnv #175311 05:14 PM, 06 Aug 2020
    спасибо, попробую, как-то не ожидал что устрою базе ддос, по http ничего не принимает )
  • такого ключа нет
  • https://t.me/clickhouse_ru
    @ProffUst #175313 05:17 PM, 06 Aug 2020
    сейчас найду
  • https://t.me/clickhouse_ru
    @floxard #175314 05:17 PM, 06 Aug 2020
    client_args="--max_execution_time 7200 --receive_timeout 7200"
    clickhouse-client $client_args --query "OPTIMIZE TABLE $DATABASE.$TABLE PARTITION '$partition' FINAL;"
  • https://t.me/clickhouse_ru
    @floxard #175315 05:17 PM, 06 Aug 2020
    я вот такие флажки пользую
  • https://t.me/clickhouse_ru
    @floxard #175316 05:17 PM, 06 Aug 2020
    max_execution_time и receive_timeout
  • https://t.me/clickhouse_ru
    да, execution_time
  • https://t.me/clickhouse_ru
    @floxard #175318 05:18 PM, 06 Aug 2020
    с этими двумя у меня клиент дожидается окончания OPTIMIZE
  • @nizovtsevnv #175319 05:18 PM, 06 Aug 2020
    спасибо
  • @nizovtsevnv #175320 05:19 PM, 06 Aug 2020
    а прогресс както можно мониторить?
  • https://t.me/clickhouse_ru
    @floxard #175321 05:19 PM, 06 Aug 2020
    да
  • https://t.me/clickhouse_ru
    @R_Galeev #175322 05:19 PM, 06 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @floxard #175323 05:19 PM, 06 Aug 2020
    селекти по system.merges
    и по количеству партов на таблицу
  • https://t.me/clickhouse_ru
    @floxard #175324 05:20 PM, 06 Aug 2020
    FINAL схлопнет тебе до 1 парта
  • https://t.me/clickhouse_ru
    @floxard #175325 05:21 PM, 06 Aug 2020
    select partition,count() as parts from system.parts where table='таблица' and parts > 1 group by partition
  • @nizovtsevnv #175326 05:21 PM, 06 Aug 2020
    спасиб
  • https://t.me/clickhouse_ru
    @floxard #175327 05:22 PM, 06 Aug 2020
    и merges я с ходу не вспомню но там что нибудь типа "where table=" так же
  • @a_sima10 #175328 05:37 PM, 06 Aug 2020
    Всем привет, хочу переключить приложении на новый КХ, репликация не настроена, как мне до залить свежие данные со старого КХ в новый КХ и не затереть данные в новом?
  • https://t.me/clickhouse_ru
    Настроить репликацию?
  • https://t.me/clickhouse_ru
    @yourock88 #175330 05:38 PM, 06 Aug 2020
    Data Replication | ClickHouse Documentation

    Data Replication Replication is only supported for tables in the MergeTree family: ReplicatedMergeTree ReplicatedSumming

  • https://t.me/clickhouse_ru
    @yourock88 #175331 05:39 PM, 06 Aug 2020
    (можно сконвертировать существующий MergeTree в ReplicatedMergeTree)
  • @a_sima10 #175332 05:39 PM, 06 Aug 2020
    Кроме репликация, ещё есть варианты?
  • https://t.me/clickhouse_ru
    Можно остановить КХ и сделать rsync, но репликация позволяет сделать то же самое без длительного downtime
  • https://t.me/clickhouse_ru
    @yourock88 #175334 05:40 PM, 06 Aug 2020
    (репликация данных не затрет существующие записи в новом КХ)
  • а если попробовать через INSERT INTO... SELECT * from remote()...?
  • https://t.me/clickhouse_ru
    Зависит от того, сколько у Вас данных. Если их много (скажем, больше 10 Гб), я бы не советовал, ибо этот запрос будет неатомарным
  • https://t.me/clickhouse_ru
    @yourock88 #175337 05:49 PM, 06 Aug 2020
    (а ещё он будет намного медленней чем что репликация, что ручной rsync)
  • https://t.me/clickhouse_ru
    @yourock88 #175338 05:50 PM, 06 Aug 2020
    В общем, если хотите самое простое и надежное решение, то переделайте свои MergeTree в ReplicatedMergeTree и ClickHouse всё сам смержит, даже не заметите
  • https://t.me/clickhouse_ru
    @yourock88 #175339 05:50 PM, 06 Aug 2020
    Если хотите геморроя, то пожалуйста, делайте rsync, INSERT INTO SELECT FROM remote(), используйте clickhouse-copier, и прочее
  • Данных не должно быть много, только за 6-7 число надо будет до залить
  • Просто версии КХ разные и структура таблиц старая на старом КХ
  • https://t.me/clickhouse_ru
    Если структура таблиц отличается, то их всегда можно привести к одному знаменателю, добавив недостающие колонки
  • https://t.me/clickhouse_ru
    Если так, то INSERT INTO SELECT может сработать, но я бы вставлял небольшими пачками (по ~1 млн строк) на всякий случай, чтобы точно INSERT был атомарным и также чтобы потребление памяти было под контролем
  • https://t.me/clickhouse_ru
    optimize вообще не имеет отношения к мутациям, и только мешает, вы себе в колено стреляете.
  • а что посоветуете чтобы просанировать ситуацию с кучей мелких мутаций?
  • https://t.me/clickhouse_ru
    alter table freeze
    копируете из shadow на новый сервер rsync-м , там attach
  • https://t.me/clickhouse_ru
    не делать мутаций вообще, это админский инструмент, чтобы решать проблемы типа gdpr
    не делать мелкие, делать крупные мутации
    смотреть в system.mutation / system.merges для понимания текущего состояния

    ускорить мутации нельзя, точнее можно сделать больше одновременных мутаций, настроив больше background pool-в
  • @nizovtsevnv #175348 05:58 PM, 06 Aug 2020
    а если всё таки необходимость есть, можно ли както нормализовать работу таблицы? желательно без создания новой таблицы )
  • https://t.me/clickhouse_ru
    я не понимаю в чем сейчас проблема
  • @nizovtsevnv #175350 05:59 PM, 06 Aug 2020
    были залиты десяток тысяч ALTER DELETE и наблюдаю длительное время что is_done в мутациях не растёт, а пользование таблицей практически стало нереальным
  • https://t.me/clickhouse_ru
    kill mutation where not is_done
    отменить всЕ и больше не запускать это
  • @nizovtsevnv #175352 06:00 PM, 06 Aug 2020
    а в чем проблема, движок не сможет проглотить?
  • https://t.me/clickhouse_ru
    мутации банально если упростить перезаписывают всю таблицу без удаленных / или c измененной строками
  • @nizovtsevnv #175354 06:02 PM, 06 Aug 2020
    понял засаду - спасибо
  • @nizovtsevnv #175355 06:04 PM, 06 Aug 2020
    киллер тоже подвис )
  • есть варианты как ускорить процесс? KILL MUTATION WHERE NOT is_done ASYNC - висит уже больше 20 минут
  • @nizovtsevnv #175357 06:27 PM, 06 Aug 2020
    переоценил возможности движка
  • @nizovtsevnv #175358 06:27 PM, 06 Aug 2020
    знаю что оно не для этого
  • https://t.me/clickhouse_ru
    надо смотреть что в лог КХ чтобы понять что происходит
  • https://t.me/clickhouse_ru
    @den_crane #175360 06:28 PM, 06 Aug 2020
    обычная таблица ? не replicated ?
  • @nizovtsevnv #175361 06:28 PM, 06 Aug 2020
    реплицированная
  • https://t.me/clickhouse_ru
    скорее всего мержи блокируют . что в
    select table, elapsed, progress, memory_usage from system.merges
    долго там еще?
  • @nizovtsevnv #175363 06:32 PM, 06 Aug 2020
    ──────elapsed─┬─progress─┬─memory_usage─┐
    504.828588304 │ 0 │ 510681232 │
    503.550474278 │ 0 │ 502397328 │
    3.334264938 │ 0 │ 515521152 │
    3.301880644 │ 0 │ 297412272 │
  • @nizovtsevnv #175364 06:33 PM, 06 Aug 2020
    строки постоянно меняются - чтото шуршит
  • https://t.me/clickhouse_ru
    @den_crane #175365 06:33 PM, 06 Aug 2020
    2 мержа -- 500 сек. 0% ?
  • @nizovtsevnv #175366 06:34 PM, 06 Aug 2020
    да
  • @nizovtsevnv #175367 06:34 PM, 06 Aug 2020
    уже 600
  • https://t.me/clickhouse_ru
    @den_crane #175368 06:34 PM, 06 Aug 2020
    там еще столбик is_mutation / num_parts
  • @nizovtsevnv #175369 06:35 PM, 06 Aug 2020
    ┌───────elapsed─┬─progress─┬─memory_usage─┬─is_mutation─┬─num_parts─┐
    │ 787.565333036 │ 0 │ 505484192 │ 1 │ 1 │
    │ 786.287218977 │ 0 │ 514012464 │ 1 │ 1 │
    └───────────────┴──────────┴──────────────┴─────────────┴───────────┘
  • https://t.me/clickhouse_ru
    @den_crane #175370 06:37 PM, 06 Aug 2020
    а kill mutation уже отвалился? или еще виден в system.processes?
  • @nizovtsevnv #175371 06:38 PM, 06 Aug 2020
    висит, таймаут там большой разрешил
  • @nizovtsevnv #175372 06:41 PM, 06 Aug 2020
    ┌────────elapsed─┬─query───────────────────────────────────────┐
    │ 2363.074829663 │ kill mutation where not is_done │
  • https://t.me/clickhouse_ru
    таймаут это про ожидание клиента, отменить kill нельзя, поэтому он будет выполнятся пока не выполнится
  • https://t.me/clickhouse_ru
    @den_crane #175375 06:44 PM, 06 Aug 2020
    ну т.е. скорее всего все зависло и если мутации progress 0% и не меняется кол-во parts_todo, то перегужать КХ (kill-9) и снова отменять kill mutation, и если kill не получится, чистить вручную в zk
  • https://t.me/clickhouse_ru
    @temamagic #175376 07:16 PM, 06 Aug 2020
    Всем привет! Подскажите плиз, чистил базу, а вот папка system на диске меньше не стала, как ее аккуратно почистить?
  • https://t.me/clickhouse_ru
    @temamagic #175377 07:18 PM, 06 Aug 2020
    куча старых каких-то партиций, я полагаю, я могу их безболезненно удалить?
  • https://t.me/clickhouse_ru
    там таблицы типа *_log , их можно truncate
    еще есть таблицы в цифровым суффиксом *_log_1 _2 их можно дропать, это старые таблицы , до апргейда
  • https://t.me/clickhouse_ru
    @temamagic #175379 07:19 PM, 06 Aug 2020
    в базе system?
  • https://t.me/clickhouse_ru
    @temamagic #175380 07:24 PM, 06 Aug 2020
    почистил part_log и query_log, спасибо большое)
  • @ssserj ↶ Reply to #175201 #175381 07:29 PM, 06 Aug 2020
    Провел небольшой research. Есть немного истории про создание агрегатной функции retention, ну и про groupUniqArray. Прихожу к выводу, что придется хранить UserID как массив, ну и AggregateFunction(groupUniqArray, UInt64) на него, а дальше вся мощь Clickhouse для работы с массивами.

    Математически uniqCombined - это HyperLogLog, поддерживающий только add,merge,count. Поэтому - никак.
    Add AggregateFunctionRetention by sundy-li · Pull Request #2887 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en This implements an AggregateFunction retention, which could be used for user retention rate analysis.

  • https://t.me/clickhouse_ru
    @DmitriyKozeev #175382 07:34 PM, 06 Aug 2020
    может кто нибудь обьяснить поведения пустой установки кликхауса не могу понять откуда столько демонов и что вообще происходит и делает клик. установка на centos 7 на ubuntu было такое же поведение
  • https://t.me/clickhouse_ru
    @R_Galeev #175383 07:35 PM, 06 Aug 2020
    Ребят, подскажите пожалуйста
    Как настроить стриминг данных из Гугл аналитикса в кликхаус?
  • https://t.me/clickhouse_ru
    @avkapustin #175384 07:36 PM, 06 Aug 2020
    Может имеет смысл отключить показ потоков? Процессов намного меньше
  • https://t.me/clickhouse_ru
    @DmitriyKozeev #175385 07:45 PM, 06 Aug 2020
    а что вообще за потоки в таком количестве на пустой установке клика и как их ограничить? подскажете?
  • https://t.me/clickhouse_ru
    а зачем вам diff ? stat-ы можно складывать , вот тут длинный тред про что-то похожее https://groups.google.com/forum/#!searchin/clickhouse/$20uniqMerge%7Csort:date/clickhouse/BqE49KuJpw8/C_g5F-rwAAAJ
    наверное можно допилить чтобы разница была
  • https://t.me/clickhouse_ru
    это треды, это один процесс,

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

    у mysql тоже потоки на экран не помещаются
  • https://t.me/clickhouse_ru
    @lnuynxa #175389 07:54 PM, 06 Aug 2020
    Учитывая принцип работы HyperLogLog не уверен, что можно будет получить что то вразумительное из этого.
  • https://t.me/clickhouse_ru
    @DmitriyKozeev #175390 07:54 PM, 06 Aug 2020
    понял спасибо а если еще подскажите как ограничеть потребление оперативной памяти у клика max_server_memory_usage как я понимаю оперирует байтами (описание в какой размерности указывать число нет)
  • https://t.me/clickhouse_ru
    @lnuynxa #175391 07:55 PM, 06 Aug 2020
    в теории конечно можно посчитать три числа.
    юники первого сайта, юники второго сайта, юники (первый сайт + второй) и из этого получить некое число.(Но судить насколько это число будет отражать реальность не могу)
    Типа такого
    finalizeAggregation(uniqCombineState(site_1)) + finalizeAggregation(uniqCombineState(site_2)) + finalizeAggregation(uniqCombineMerge(uniqCombineState(site_1)+uniqCombineState(site_2)))
  • @ssserj ↶ Reply to #175386 #175392 07:56 PM, 06 Aug 2020
    Спасибо, почитаю. diff нужен мне, чтобы найти количество пользователей, исполнивших событие A и B, уже имея результат только uniqCombineMerge по A и отдельно по B.
  • https://t.me/clickhouse_ru
    байтами
  • https://t.me/clickhouse_ru
    @DmitriyKozeev #175394 07:59 PM, 06 Aug 2020
    Спасибо
  • https://t.me/clickhouse_ru
    так просто сложите (+) uniqCombineMerge(uniqCombineState+uniqCombineState)
  • https://t.me/clickhouse_ru
    @den_crane #175396 08:01 PM, 06 Aug 2020
    а хотя нет, это не то
  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175397 08:03 PM, 06 Aug 2020
    Всем доброй ночи, я только знакомлюсь с кликхаус, вопрос полагаю для вас будет не сложным, но меня ставит в тупик и поисковик мне помочь в этом не может. Возможно кто то сможет тут подсказать. Запускаю из консоли вот этот код http://skrinshoter.ru/s/060820/F8tb9SPK?a , в ответ вот это `Traceback (most recent call last):
    File "test.py", line 30, in <module>
    print(request())
    File "test.py", line 27, in request
    res.raise_for_status()
    File "/usr/lib/python3/dist-packages/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
    requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url:`
  • @ssserj ↶ Reply to #175395 #175398 08:04 PM, 06 Aug 2020
    ну да, скорее хочется что-то типа uniqIntersectMerge(uniqCombineStateA,uniqCombineStateB)
  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175399 08:04 PM, 06 Aug 2020
    обычный запрос на выборку проходит, запрос на изменение и создание нет(
  • https://t.me/clickhouse_ru
    Какой тип запроса отправляешь GET или POST?
  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175401 08:04 PM, 06 Aug 2020
    get
  • https://t.me/clickhouse_ru
    @lnuynxa #175402 08:04 PM, 06 Aug 2020
    Для изменения и создания нужен POST
  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175403 08:05 PM, 06 Aug 2020
    а есть под рукой ссылка на документацию как раз по api clickhouse?
  • https://t.me/clickhouse_ru
    сделате feature request , может это возможно ( я не знаю )
  • https://t.me/clickhouse_ru
    У кликхауса нет апи так такового, просто отправляешь нужный тебе sql запрос на эндпоинт
    Но дока хорошая
    https://clickhouse.tech/docs/en/interfaces/http/
    HTTP Interface | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175406 08:16 PM, 06 Aug 2020
    а есть пример кода на python?
  • https://t.me/clickhouse_ru
    @lnuynxa #175407 08:16 PM, 06 Aug 2020
    Для python есть неофф драйверы с поддержкой нативного протокола.
  • https://t.me/clickhouse_ru
    @yakubovsky_rom #175408 08:25 PM, 06 Aug 2020
    спасибо, погуглю
  • https://t.me/clickhouse_ru
    @t_amirova #175409 09:12 PM, 06 Aug 2020
    Joined.
  • 07 August 2020 (101 messages)
  • https://t.me/clickhouse_ru
    @igor_trof #175411 06:31 AM, 07 Aug 2020
    Доброе утро, не могли бы подсказать по движку кафка: есть 10 серверов и топик с 72 партициями, сообщений порядка 300к,
    Сообственно в логах :
    2020.08.07 09:24:12.066836 [ 148446 ] {} <Trace> StorageKafka (log_in_parsed): Nothing to commit.
    2020.08.07 09:24:12.066961 [ 148446 ] {} <Trace> StorageKafka (log_in_parsed): Nothing to commit.
    2020.08.07 09:24:12.067025 [ 148446 ] {} <Trace> StorageKafka (log_in_parsed): Nothing to commit.
    2020.08.07 09:24:12.067102 [ 148446 ] {} <Trace> StorageKafka (log_in_parsed): Nothing to commit.

    2020.08.07 09:24:05.443652 [ 151217 ] {} <Trace> StorageKafka (log_in_parsed): Polled batch of 65536 messages. Offset position: [ log_in_parsed[54:6362691], log_in_parsed[55:6442633], log_in_parsed[56:6391740], log_in_parsed[57:6246779], log_in_parsed[58:6056912], log_in_parsed[59:6402441], log_in_parsed[60:5991525], log_in_parsed[61:6380870], log_in_parsed[62:6057811], log_in_parsed[63:5986540], log_in_parsed[64:5190593], log_in_parsed[65:6785423], log_in_parsed[66:3841620], log_in_parsed[67:3045223], log_in_parsed[68:3158228], log_in_parsed[69:2314162], log_in_parsed[70:3103955], log_in_parsed[71:3131679] ]
    2020.08.07 09:24:10.975487 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:10.975668 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:10.975763 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:10.975864 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:10.990119 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:10.990385 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:11.024021 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Re-joining claimed consumer after failure
    2020.08.07 09:24:11.034370 [ 148350 ] {} <Trace> StorageKafka (log_in_parsed): Execution took 10792 ms.
    2020.08.07 09:24:11.534515 [ 148446 ] {} <Debug> StorageKafka (log_in_parsed): Started streaming to 14 attached views
    2020.08.07 09:24:11.548569 [ 23816 ] {} <Trace> StorageKafka (log_in_parsed): Already subscribed to topics: [ ]
    2020.08.07 09:24:11.548588 [ 151283 ] {} <Trace> StorageKafka (log_in_parsed): Already subscribed to topics: [ ]
    2020.08.07 09:24:11.548599 [ 150452 ] {} <Trace> StorageKafka (log_in_parsed): Already subscribed to topics: [ ]

    Еще постоянные reballance происходят

    В табличке прописаны:
    kafka_num_consumers = 7, kafka_max_block_size = 524288

    Версия 20.3.8
    14 вьюх
    Подскажите куда копать?
  • https://t.me/clickhouse_ru
    @RomaLava #175412 08:33 AM, 07 Aug 2020
    Joined.
  • @guram_vashakidze #175413 10:42 AM, 07 Aug 2020
    Всем привет. Кто может подсказать по словарю mongodb. В коллекции есть два поля _id и name. В _id хранится int (NumberInt). Соответственно в настройках словаря указано:
    <structure>
    <key>
    <attribute>
    <name>_id</name>
    <type>Int32</type>
    </attribute>
    </key>
    <attribute>
    <name>name</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    </structure>
    Но при выполнении запроса:
    SELECT dictGetString('my_dict', 'name', tuple(toInt32(1)))
    Возвращается пустой рез-т, хотя по этому _Id есть данные.
    В логах ошибок нет, как и в таблице dictionaries.
    Версия КХ: 18.14.18
  • https://t.me/clickhouse_ru
    @igor_dia #175414 10:42 AM, 07 Aug 2020
    Всем привет! А можете подсказать, какие действия КХ делает при запуске между чтением конфига и открытием портов? просто есть сообщения 19.14 о чтении конфигов, но до открытия портов не доходит и ошибок никаких нет.
  • https://t.me/clickhouse_ru
    @igor_dia #175415 10:43 AM, 07 Aug 2020
    Вот все сообщения, но они некритичны вроде:
    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: user_files_path (version 19.14.9.12 (official build)
    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: format_schema_path (version 19.14.9.12 (official build)
    Include not found: clickhouse_compression
  • https://t.me/clickhouse_ru
    @aksimemor #175416 10:54 AM, 07 Aug 2020
    Возможно ли в кликхаусе проверить сколько запрос использовал оперативной памяти?
  • https://t.me/clickhouse_ru
    да, например как-нибудь так
    select event_time, formatReadableSize(memory_usage) mem_use_h, query
    from system.query_log
    where query like '%some_id%'
    and event_date = today()
  • https://t.me/clickhouse_ru
    @irekzayniev #175418 11:27 AM, 07 Aug 2020
    Коллеги, подскажите как добавить время к RBAC т.е. выдавать права доступа к записям на определенное время?
  • @lenden #175419 11:28 AM, 07 Aug 2020
    Привет! Подскажите, пожалуйста, кто знает. В таблице есть поле-массив с 2 полями, arr.A и arr.B например. Нужно из выборки, где много строк взять количество уникальных A с условием по B. Если бы условия не было, то подошло бы uniqArray(arr.A), а как добавить фильтр типа B = 'smth' не могу разобраться. Вроде есть возможно соединения комбинаторов, т.е. uniqArrayIf, но в нём как раз написано, что "аргумент cond не должен быть массивом". При этом примеры uniqArrayIf вообще найти не получается.
  • https://t.me/clickhouse_ru
    If можно любое условие, например has(B, 'smth') ( это кстати что B = 'smth' массив B содержит 'smth')

    [1,2,3,3,3] [44,55]

    select uniqArrayIf(A, has(B,44)) from (select [1,2,3,3,3] A ,[44,55] B )
    --
    3

    select uniqArrayIf(A, has(B,44)) from (select [1,2,3,3,3] A ,[66,55] B )
    --
    0
  • https://t.me/clickhouse_ru
    там в паралелль много потоков пишут, ошибка выше
  • https://t.me/clickhouse_ru
    @igor_dia #175422 11:35 AM, 07 Aug 2020
    Какая?
  • @lenden ↶ Reply to #175420 #175423 11:35 AM, 07 Aug 2020
    Так тут немного другое дело, A и B это не тупо разные массивы, это поля в одном массиве (возможно не правильно называю что-то). У них одинаковая длина и мы ставим условие на конкретный элемент, а не на весь массив
  • https://t.me/clickhouse_ru
    словарь (содержимое) можно увидеть как таблицу через engine Dict, проверьте там вообще эти id нормальные или покореженные
  • @lenden #175425 11:36 AM, 07 Aug 2020
    третий элемент попадает под очистку дубликатов (по полю A) только, если выполняется условие на B именно в этом третьем элементе например
  • там пусто
  • @guram_vashakidze #175427 11:38 AM, 07 Aug 2020
    вот так выдает
  • https://t.me/clickhouse_ru
    Если поправить те ворнинги, то КХ не пишет вообще ничего даже в режиме дебаг, порты так же не открывает
  • https://t.me/clickhouse_ru
    фильтруем массивы, из arrayFilter вылезают A если B >20
    select arrayFilter( (x,y)-> y>20 ,A,B ) from (select [1,2,3,3,3] A ,[66,55,-1,13,24] B )
    [1,2,3]

    select uniqArray(arrayFilter( (x,y)-> y>20 ,A,B )) from (select [1,2,3,3,3] A ,[66,55,-1,13,24] B )
    --
    3
  • https://t.me/clickhouse_ru
    а я не понял, КХ стартует или нет?
  • https://t.me/clickhouse_ru
    @igor_dia #175431 11:45 AM, 07 Aug 2020
    Он запущен, ничего не делает и ничего не говорит
  • https://t.me/clickhouse_ru
    @igor_dia #175432 11:45 AM, 07 Aug 2020
    В логах тоже ничего
  • https://t.me/clickhouse_ru
    ps -ef|grep click
  • https://t.me/clickhouse_ru
    @stryuktura #175434 11:45 AM, 07 Aug 2020
    Всем привет! Есть ли в CH функция, которая по урлу и рефереру определяет источник траффика? ( как Metrika::GetTrafficSource в YQL)
  • https://t.me/clickhouse_ru
    # ps -ef | grep click
    clickho+ 1 0 0 11:17 pts/0 00:00:00 /usr/bin/clickhouse-server --config-file=/etc/clickhouse-server/config.xml
    root 2902 2896 0 11:46 pts/28 00:00:00 grep --color=auto click
  • https://t.me/clickhouse_ru
    @igor_dia #175436 11:47 AM, 07 Aug 2020
    # netstat -ltupn
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp6 0 0 :::9116 :::* LISTEN -
  • https://t.me/clickhouse_ru
    @igor_dia #175437 11:47 AM, 07 Aug 2020
    но это экспортер
  • https://t.me/clickhouse_ru
    т.е. докер? порты смаплены? -p 8123:8123 -p 9000:9000 ?
  • https://t.me/clickhouse_ru
    @igor_dia #175439 11:48 AM, 07 Aug 2020
    да
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @igor_dia #175441 11:49 AM, 07 Aug 2020
    # curl localhost:8123
    curl: (7) Failed to connect to localhost port 8123: Connection refused
  • https://t.me/clickhouse_ru
    @igor_dia #175442 11:49 AM, 07 Aug 2020
    netstat же показал, что не открыто
  • https://t.me/clickhouse_ru
    ну не смаплены порты
  • https://t.me/clickhouse_ru
    @igor_dia #175444 11:50 AM, 07 Aug 2020
    это изнутри контейнера
  • https://t.me/clickhouse_ru
    я не заметил сообщение
  • https://t.me/clickhouse_ru
    запустите еще один КХ внутри контейнера как обычный процесс и смотрите на stdout

    clickhouse-server --config-file=/etc/clickhouse-server/config.xml
  • https://t.me/clickhouse_ru
    # CLICKHOUSE_DO_NOT_CHOWN=1 clickhouse-server --config-file=/etc/clickhouse-server/config.xml
    Include not found: clickhouse_compression
    И висит после этого
  • https://t.me/clickhouse_ru
    ну т.е. вообще не работает словарь
  • https://t.me/clickhouse_ru
    strace clickhouse-server --config-file=/etc/clickhouse-server/config.xml
  • Ну наверное да
  • @guram_vashakidze #175451 11:55 AM, 07 Aug 2020
    Но ошибок никаких нет
  • https://t.me/clickhouse_ru
    @igor_dia #175452 11:56 AM, 07 Aug 2020
    stat("/var/lib/clickhouse/preprocessed_configs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
    openat(AT_FDCWD, "/var/lib/clickhouse//preprocessed_configs/config.xml", O_WRONLY|O_CREAT|O_TRUNC, 0666
  • https://t.me/clickhouse_ru
    ну
    ls -l /var/lib/clickhouse/preprocessed_configs
  • https://t.me/clickhouse_ru
    @igor_dia #175454 11:57 AM, 07 Aug 2020
    Права 777
  • https://t.me/clickhouse_ru
    @igor_dia #175455 11:58 AM, 07 Aug 2020
    но cat этого файла не проходит
  • https://t.me/clickhouse_ru
    тоже висит в смысле?
  • https://t.me/clickhouse_ru
    @igor_dia #175457 12:00 PM, 07 Aug 2020
    да
  • https://t.me/clickhouse_ru
    ну значит оно, т.е. дело не в КХ, разбирайтесь с мапингом дисков в кубах или где вы там запускаете
  • https://t.me/clickhouse_ru
    @igor_dia #175459 12:01 PM, 07 Aug 2020
    окей. спасибо
  • @lenden ↶ Reply to #175429 #175460 12:06 PM, 07 Aug 2020
    с учётом того, что строк много и ещё агрегация есть, у меня вот так получилось:

    arrayUniq(arrayFilter((a, b) -> b = 'smth', arrayFlatten(groupArray(arr.A)), arrayFlatten(groupArray(arr.B))))

    это нельзя как-то лаконичнее записать?
  • @lenden #175461 12:12 PM, 07 Aug 2020
    точнее интуитивно хочется сделать фильтрацию ДО агрегации, а потом уже агрегацию и уник)
  • https://t.me/clickhouse_ru
    все можно, просто рассказываете с конца, залезли в . и пытаетесь выбраться, а тупо не надо было залезать туда
  • @lenden ↶ Reply to #175462 #175463 12:43 PM, 07 Aug 2020
    ну если вы про то, как изначально данные лежат, то тут действительно мало что можно сделать) то, что я описал это в принципе приведённые исходные данные задачи. есть строки, в них два массива одинаковой длины. надо сделать то-то, то-то. куда тут можно было не залезть? :)
  • @lenden #175464 12:46 PM, 07 Aug 2020
    а, ну собственно можно тупо вот так сделать arrayUniq(arrayFlatten(groupArray(arrayFilter((a, b) -> b = 'smth', arr.A, arr.B)))) может можно конечно ещё проще, но так хотя бы не дублируется агрегация. в общем спасибо)
  • https://t.me/clickhouse_ru
    что делает array join понимаете?

    select x, uniqExact(A)
    from (select 1 x, [1,2,3,3,3] Arr ,[66,55,-1,13,24] Brr )
    array join Arr as A, Brr as B
    where B > 20
    group by x

    ┌─x─┬─uniqExact(A)─┐
    │ 1 │ 3 │
    └───┴──────────────┘
  • @lenden #175466 12:49 PM, 07 Aug 2020
    ну да, это типа unnest и потом зафильтровали
  • https://t.me/clickhouse_ru
    arrayFlatten(groupArray === groupArrayArray
  • https://t.me/clickhouse_ru
    в смысле это быстрее работает чем ваш вариант, потому что нет массивов и groupArray
  • @lenden #175469 12:51 PM, 07 Aug 2020
    ага, понял, как раз хотел спросить, что в итоге лучше) окей, спасибо
  • @61967120 #175470 12:53 PM, 07 Aug 2020
    держись
  • https://t.me/clickhouse_ru
    @rvkggwp #175471 01:49 PM, 07 Aug 2020
    Подскажите пожалуйста, в таблицу с движком кафка пишу данные, все данные пишу в стринги, чтобы ошибок преобразования типов не было, потом в материализованной вьюхе преобразую типы и если ошибка преобразования, то где такие сообщения вычитать?
  • https://t.me/clickhouse_ru
    в логах err.log
    можно в MV делать такие преобразования чтобы ошибок не было
  • https://t.me/clickhouse_ru
    @den_crane #175473 01:53 PM, 07 Aug 2020
    т.е. есть функции toUInt32OrZero и так и для всего
  • https://t.me/clickhouse_ru
    Я вот на такую статью наткнулся, но не знаю где искать.
    В JSON, TSV и подобных текстовых форматах можно анализировать все поля как строки, преобразуя их к соответствующим типам на уровне материализованного представления. Это позволяет ClickHouse помещать искаженные сообщения в отдельный поток со специальными виртуальными столбцами, такими как _error или _raw_message.
  • https://t.me/clickhouse_ru
    @rvkggwp #175475 01:54 PM, 07 Aug 2020
    я на уровне MV и делаю преобразование
  • https://t.me/clickhouse_ru
    что искать? там просто предлагается самому в MV проверять if / else и писать в свои столбцы _error
  • https://t.me/clickhouse_ru
    понял, спасибо за быстрый ответ
  • https://t.me/clickhouse_ru
    @den_crane #175478 02:07 PM, 07 Aug 2020
    а вообще человек ссылается (написав рекламную статью и похоже не видя КХ вообще) на https://altinity.com/blog/clickhouse-kafka-engine-faq

    There is a lot of room for improvement here. In particular, ClickHouse could put malformed messages in a separate stream with special virtual columns, like _error, and maybe _raw_message. A user then could attach a materialized view to filter them out or store separately.

    т.е. это типа а вот если бы
  • https://t.me/clickhouse_ru
    да, я подумал, что такой механизм реализован в самом КХ и не надо ничего выдумывать. Сложности перевода :(
  • https://t.me/clickhouse_ru
    @artemhnilov #175480 02:46 PM, 07 Aug 2020
    Привет. Подскажите, что можно оптимизировать в config.xml, кроме <max_server_memory_usage_to_ram_ratio>, чтобы ClickHouse потреблял минимум памяти? Скажем, 512 MB или меньше. Складирую в ClickHouse данные пачками по несколько тысяч штук раз в секунду.
  • https://t.me/clickhouse_ru
    @artemhnilov #175481 02:47 PM, 07 Aug 2020
    Может есть какие-то твики, уменьшающие производительность, но потребляющие меньше памяти?
  • https://t.me/clickhouse_ru
    @artemhnilov #175482 02:48 PM, 07 Aug 2020
    Или экспериментальные фичи какие-то, отключенные по умолчанию?
  • https://t.me/clickhouse_ru
    нету, т.е. можно конечно помучатся и в 2 ГБ влезть. Но я бы не стал. Я бы сразу взял sqlite
  • https://t.me/clickhouse_ru
    @artemhnilov #175484 02:51 PM, 07 Aug 2020
    для 2 GB нужно как-то специально тюнить? Я меня на 2 гигах более-менее стабильно все работало.
  • https://t.me/clickhouse_ru
    конечно нужно. Например есть дефолтный параметр mark_cache который со временем раздувает кеш марков до 5ГБ, ну мержи могут и гб скушать. И зависит от кол-ва столбцов, на 400 стролбцах инсерт 1 строки скушает 1GB
  • @anuriq #175486 02:54 PM, 07 Aug 2020
    всем привет. КХ умел до этой фичи джоинить, используя диск?
  • @anuriq #175487 02:54 PM, 07 Aug 2020
    Switch JOIN algo on the fly by 4ertus2 · Pull Request #9082 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @artemhnilov #175488 02:54 PM, 07 Aug 2020
    у меня 10 столбцов
  • https://t.me/clickhouse_ru
    умел, join_algorithm=partial_merge
  • @anuriq ↶ Reply to #175489 #175490 02:55 PM, 07 Aug 2020
    а что для этого нужно было делать, что-то в конфиге править?
  • @anuriq #175491 02:56 PM, 07 Aug 2020
    или в query?
  • https://t.me/clickhouse_ru
    да где угодно, ну в профиле можно вписать join_algorithm>auto</join_algorithm
  • https://t.me/clickhouse_ru
    @den_crane #175493 02:57 PM, 07 Aug 2020
    вы проверьте сначала, а то на диске join 4 часа вместо 4 сек может работать
  • @anuriq #175494 02:57 PM, 07 Aug 2020
    но если этого не делать, то Clickhouse 19.x.x джоинит только в памяти, верно?
  • @anuriq #175495 02:57 PM, 07 Aug 2020
    да не, у меня ж вопрос чисто доступности фичи
  • @anuriq #175496 02:57 PM, 07 Aug 2020
    спор возник
  • https://t.me/clickhouse_ru
    В общем случае КХ 19. не умеет partial_merge
  • @anuriq #175498 02:59 PM, 07 Aug 2020
    спасибо
  • https://t.me/clickhouse_ru
    @den_crane #175499 03:01 PM, 07 Aug 2020
    в смысле 19х версий очень много
  • @anuriq #175500 03:02 PM, 07 Aug 2020
    ну у нас одна из последних - декабрьская вроде
  • https://t.me/clickhouse_ru
    @glader_ru #175501 03:09 PM, 07 Aug 2020
    Добрый день. Можно ли выполнять optimize table на одной партиции?
  • Документация ClickHouse

    Прочие виды запросов ATTACH CHECK TABLE DESCRIBE TABLE DETACH DROP EXISTS KILL OPTIMIZE RENAME SET SET ROLE TRUNCATE USE

  • @vvvjhaq #175503 03:11 PM, 07 Aug 2020
    "Если указать PARTITION, то оптимизация выполняется только для указанной партиции"
  • https://t.me/clickhouse_ru
    @patsevanton #175504 03:38 PM, 07 Aug 2020
    сделал тест. отправлял одни и теже логи в clickhouse и в elasticsearch.
    Размер таблицы в clickhouse занимает 857.19 МБ.
    Размер тех же данных в индексе в Elasticsearch занимае 4,5ГБ.
    Если в vector в параметрах не указывать в Clickhouse данные занимает в 4500/857.19 = 5.24 раза меньше чем в Elasticsearch.
    При создании таблицы указывал:
    ENGINE = MergeTree() PARTITION BY toYYYYMMDD(timestamp)
    ORDER BY timestamp TTL timestamp + toIntervalMonth(1)
    SETTINGS index_granularity = 8192;
    Clickhouse еще больше сжимать может?
    Могу в личку или здесь предоставить статью как я делал.
  • https://t.me/clickhouse_ru
    ORDER BY timestamp выглядит подозрительным, ты делал какую нибудь нормализацию логов? раскидывал ли их по колонкам?
    Какие указал кодеки для столбцов?
  • https://t.me/clickhouse_ru
    Нет. Ничего такого.
  • сильно зависит от данных, кодеков, компрессии.

    по хорошему elastic тоже сжимает по умолчанию lz4 (ну можно настроить на deflate и сожмет ещё сильнее).
  • а, не увидел, тогда это нормально, если это одна текстовая колонка... можно попробовать увеличить
    min_compress_block_size 65536
    max_compress_block_size 1048576

    но в целом ожидать чудес не стоит
  • https://t.me/clickhouse_ru
    Zstd включен?
  • https://t.me/clickhouse_ru
    @emakarov #175510 05:48 PM, 07 Aug 2020
    Добрый день.
    Подскажите пожалуйста, в движке ReplacingMergeTree колонка ver которая используется для выбора версии объекта при слиянии, может иметь тип DateTime64(6) или только DateTime ?
  • https://t.me/clickhouse_ru
    @emakarov #175511 05:55 PM, 07 Aug 2020
    так, опытным путем было установлено, что может
  • 08 August 2020 (32 messages)
  • https://t.me/clickhouse_ru
    В конфигах и при создании таблицы про zstd ничего не было
  • значит у вас по дефолту идет, а по дефолту lz4. сделайте таблицу с zstd компрессией
  • https://t.me/clickhouse_ru
    compression incl="clickhouse_compression"> <case> <min_part_size>1000</min_part_size> <min_part_size_ratio>0.01</min_part_size_ratio> <method>zstd</method> </case> </compression>. Так подойдёт для сжатия логов ?
  • @dj_mixer #175516 03:28 AM, 08 Aug 2020
    В конфиге лучше не трогать, напрямую в ддл пишите
  • @dj_mixer #175517 03:29 AM, 08 Aug 2020
    В конфиге можете увеличить это
    https://t.me/clickhouse_ru/175508
  • @v_statys #175518 07:05 AM, 08 Aug 2020
    То
  • @818601295 #175519 07:43 AM, 08 Aug 2020
    Joined.
  • @1268326259 #175520 08:04 AM, 08 Aug 2020
    Joined.
  • @sidvit8 #175521 08:51 AM, 08 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @ehramovich #175522 10:41 AM, 08 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @vsgrab ↶ Reply to #172286 #175523 11:01 AM, 08 Aug 2020
    У нас (в Яндекс.Облаке) можно параметры юзерам прописывать
  • это здорово, но вы наш прямой конкурент
  • @752212300 #175525 02:18 PM, 08 Aug 2020
    Здравствуйте! Есть столбец дата. Но, есть необходимость в запросе группировать по часам. Стоит ли отдельный столбец Час в таблицу добавить? Или хватит возможностей GROUP BY toHour()?
  • https://t.me/clickhouse_ru
    @orantius #175526 02:19 PM, 08 Aug 2020
    toHour от чего?
  • @752212300 #175527 02:20 PM, 08 Aug 2020
    От даты
  • https://t.me/clickhouse_ru
    @orantius #175528 02:20 PM, 08 Aug 2020
    чему равен toHour от восьмого августа?
  • https://t.me/clickhouse_ru
    @orantius #175529 02:21 PM, 08 Aug 2020
    у часа меньше кардинальность, лучше жмется, меньше байт на строку и на блок. но это лишний столбец.
  • @752212300 #175530 02:23 PM, 08 Aug 2020
    А сама функция - получения часа от даты, и группировка по ней, не сильно оптимизировано?
  • @752212300 #175531 02:24 PM, 08 Aug 2020
    Может и не надо столбца с часами?
  • @752212300 #175532 02:25 PM, 08 Aug 2020
    Я тут нуб, поэтому плиз, по простому ответьте
  • https://t.me/clickhouse_ru
    @orantius #175533 02:27 PM, 08 Aug 2020
    если у вас по времени данные отсортированы, то делайте как проще
  • Те можно не заводить столбец с часами?
  • https://t.me/clickhouse_ru
    GROUP BY toHour будет отлично работать
  • Спасибо!
  • @githubreleases_bot #175537 b o t 03:00 PM, 08 Aug 2020
    ClickHouse/ClickHouse tagged: v20.3.16.165-lts
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v20.3.16.165-lts
    Release notes:
    v20.3.16.165-lts
  • @mr_bk #175542 03:55 PM, 08 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @MashinaMashina #175543 07:43 PM, 08 Aug 2020
    Подскажите пожалуйста, эта ошибка про нехватку оперативной памяти или памяти на диске?

    Memory limit (total) exceeded: would use 956.23 MiB (attempt to allocate chunk of 4502760 bytes), maximum: 953.67 MiB
    IN:INSERT INTO ...
  • https://t.me/clickhouse_ru
    Оперативной
  • https://t.me/clickhouse_ru
    @MashinaMashina #175545 07:45 PM, 08 Aug 2020
    Просто у меня проблема такая:

    Вставляю данные (около 50МБ) - проходит. На каком-то запросе получаю ошибку про нехватку памяти. Увеличил ограничение - сколько-то запросов прошло, снова эта же ошибка.

    Как будто после каждого запроса памяти больше занято
  • https://t.me/clickhouse_ru
    @MashinaMashina #175546 07:46 PM, 08 Aug 2020
    И я не пойму, то ли данные на диск не складываются и хранятся в оперативке, то ли это про нехватку места на диске
  • https://t.me/clickhouse_ru
    @MashinaMashina #175547 07:46 PM, 08 Aug 2020
    Сами запросы больше не становятся
  • https://t.me/clickhouse_ru
    Seesawing in MemoryTracking metric causing >20.3 to fail some writes and reads, unable to identify cause. · Issue #12583 · ClickHouse/ClickHouse

    Summary After upgrading a host that is just a collection Distributed tables to 20.4.X and 20.5.2.7, we observe the new MemoryTracking setting increasing substantially during writes, leading to indi...

  • 09 August 2020 (27 messages)
  • @lixey #175549 02:18 AM, 09 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @MashinaMashina #175551 06:53 AM, 09 Aug 2020
    Спасибо, посмотрю
  • https://t.me/clickhouse_ru
    @igor_skrynkovskyy #175554 09:11 AM, 09 Aug 2020
    Joined.
  • Если вдруг кому понадобится, сам разобрался. Если в монге используется user и password то этот пользователь должен быть заведен именно в той БД к который вы пытаетесь подключится. Т.е. если БД словаря "db1" а authenticationDatabase - "admin". То подключения не будет. И что самое интересное нигде об этом не будет ошибки, запрос просто будет пустой. Логи пустые.
    Было бы неплохо, если бы эту тонкость отразили в документации или в настройки подключения словаря добавят БД аутентификации.
  • https://t.me/clickhouse_ru
    @Nurhat_Ibragim #175556 03:29 PM, 09 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @vitakor #175557 03:38 PM, 09 Aug 2020
    Привет!
    Есть задача в сохранении ивентов с разным числом и типами параметров... Как эту задачу лучше решить в CH? Думаю EAV неочень из-за джойнов или норм?
  • https://t.me/clickhouse_ru
    875 способов, в смысле всегда динамический набор параметров и ничего общего? Это не про КХ, будет тормозить.
    Но можно например сделать key array(String), value array(String), можно прямо json валить в к колонку String и парсить в селектах
  • 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
    Это один из моментов, который нужно учесть... Из задания - есть 10М+ DAU, каждый по 300 событий в сутки генерит, нужно эти данные передавать в Tableue, можно с агрегацией, но не реже раза в 15 минут
  • https://t.me/clickhouse_ru
    в общем КХ создан с идеей что все данные разложены по колонкам в готовом виде. КХ Работает быстро потому что в функцию передается указатель на готовый список значений. И с точки зрения КХ единственный православный вариант решения вашей задачи это раскладывание в 400-800 колонок.
  • https://t.me/clickhouse_ru
    Просто читал про историю CH и у меня задача похожая - сервис аналитики для моб. приложений. В яндекс метрике же есть кастомные ивенты... Получается, нужно мапить типизированные колонки на определенный параметр события, я правильно понимаю?
  • https://t.me/clickhouse_ru
    схема бд яндекс метрики не секрет https://clickhouse.tech/docs/en/getting-started/example-datasets/metrica/
    там все разложено по колонкам, микроскопическая часть кастомных атрибутов лежит ParsedParams

    CREATE TABLE datasets.hits_v1
    ...
    ParsedParams Nested(Key1 String,Key2 String,Key3 String,Key4 String,Key5 String,ValueDouble Float64),
    ...
  • https://t.me/clickhouse_ru
    Спасибо большое! Вы мне очень помогли.
  • У нас как есть кейс с еав, но у нас в 80% обращению по ключу, плюс в день данных мало (~400млн), нет sub-second критичности времени запросов.
    ну и КХ потому что в другом продукте использовали КХ (т.е объективно - причины другие).
    но КХ - настоящий "микроскоп". забить им можно вполне много вещей
  • https://t.me/clickhouse_ru
    А у меня агрегация по кастомным параметрам в основном
  • Лучше не надо
  • https://t.me/clickhouse_ru
    Так вот и ищу решение... КХ мне понравился по многим параметрам, думал его применить... но похоже, к этой задаче не получится
  • https://t.me/clickhouse_ru
    @JackRussell77 #175572 07:06 PM, 09 Aug 2020
    https://sourceforge.net/projects/in2sql/

    Добавил поддержку CH как ODBC и как Cloud
    Excel AddIn : In2Sql

    Download Excel AddIn : In2Sql for free. ODBC Cloud SQL Explorer. Connection Manager. Query Editor. https://sourceforge.net/projects/in2sql Video for best usage https://rb.gy/tvl8lk This Excel Addin helps SQL analytic create an Excel report based on ODBC relational data. *Creates table base on data from a relational database *Generate a pivot report using the same external connection (1) *Some ad-hoc tools are available - like "keep only" and "remove only" *you can use the row limit option for exploring the largest dataset *The ODBC connection manager is available *auto-build query tool can create SQL select statement by using different database tables with matching them by column name * creating connections for PowerQuery news and updates -- change list -- v05 beta export tables and SQL to CSV files treat CSV like relational tables -- add Cloud ClickHouse Source resolve the problem with an untrusted source changed Sql Editor fixed behavior for "update rows"

  • https://t.me/clickhouse_ru
    о ! круто =)
  • https://t.me/clickhouse_ru
    @BloodJazMan #175574 07:15 PM, 09 Aug 2020
    ODBC драйвер clickhouse обязателен?
  • https://t.me/clickhouse_ru
    @JackRussell77 #175575 07:16 PM, 09 Aug 2020
    для Cloud подключения - нет
  • https://t.me/clickhouse_ru
    @BloodJazMan #175576 07:17 PM, 09 Aug 2020
    ;) ок, а почему такой странный способ распостранения? sourceforge лет 5 уже не встречал там живых проектов =) вроде все на github выкладывают
  • https://t.me/clickhouse_ru
    @BloodJazMan #175577 07:18 PM, 09 Aug 2020
    Плагин хороший!
  • https://t.me/clickhouse_ru
    @JackRussell77 #175578 07:19 PM, 09 Aug 2020
    на гитхабе только код - мне кажется что SF проще для рекламы
    https://github.com/er77/in2sql
  • 10 August 2020 (138 messages)
  • @1075090567 #175579 01:24 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @inzgiba #175580 07:34 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    Используем https://github.com/amacneil/dbmate , дописали туда поддержку кликхауса, работает.
    GitHub - amacneil/dbmate: A lightweight, framework-agnostic database migration tool.

    :rocket: A lightweight, framework-agnostic database migration tool. - GitHub - amacneil/dbmate: A lightweight, framework-agnostic database migration tool.

  • @hhhackkk #175582 07:55 AM, 10 Aug 2020
    Всем привет, подскажите пожалуйста как написать запрос, выборка из MySQL + JOIN табличку в кликхаусе при условии что она Engine = replacingMergeTree т.е. как джойнить смерженные данные или куда писать FINAL)
  • https://t.me/clickhouse_ru
    используйте dictGet и ключевое слово SELECT ... FROM ... FINAL
    https://clickhouse.tech/docs/en/sql-reference/statements/select/from/#select-from-final
    https://clickhouse.tech/docs/en/sql-reference/functions/ext-dict-functions/#dictget

    MySQL табличку в CREATE DICTIONARY ... SOURCE(MYSQL()) загоните если конечно там не десятки миллионов записей
    FROM | ClickHouse Documentation

    FROM Clause The FROM clause specifies the source to read data from: Table Subquery Table function JOIN and ARRAY JOIN cl

  • благодарю, буду копать))
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #174962 #175585 08:16 AM, 10 Aug 2020
    Мы используем 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
    @makrushin_evgenii_work #175586 08:25 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @makrushin_evgenii_work #175587 08:26 AM, 10 Aug 2020
    Всем привет. Подскажите, пожалуйста:
    - есть возможность запустить фильтрацию до CROSS JOIN?
    - или запустить CROSS JOIN на подзапросах?
  • https://t.me/clickhouse_ru
    @BloodJazMan #175588 08:29 AM, 10 Aug 2020
    подзапросы с фильтрацией?
    да, можно на sub-query, но без сортировки в подзапросах...
    иначе если сортировка есть, то в память все читаться будет... вместо стриминга
  • https://t.me/clickhouse_ru
    Видимо, нарушил синтаксис, который не указан в документации:

    SELECT *
    FROM
    (
    (SELECT * FROM srs_dev.RecBuilts)
    CROSS JOIN
    (SELECT * FROM srs_dev.RecEvents)
    )
    GROUP BY BuiltAtDate
    ORDER BY BuiltAtDate

    Подскажите, в чём ошибся?
  • https://t.me/clickhouse_ru
    @BloodJazMan #175590 08:39 AM, 10 Aug 2020
    скобки лишние IMHO

    SELECT тут не может быть * если у вас group by есть... аггрегирующую функцию добавляйте
    FROM
    (SELECT ..) AS t1
    CROSS ALL JOIN
    (SELECT ...) AS t2
    GROUP BY
    ORDER BY
  • https://t.me/clickhouse_ru
    @BloodJazMan #175591 08:40 AM, 10 Aug 2020
    ну и внутри (SELECT ... WHERE) ставьте
    елси надо фильтрацию ДО JOIN
    но вообще посокльку CROSS JOIN
    это все со всеми
    памяти может не хватить...
  • https://t.me/clickhouse_ru
    @BloodJazMan #175592 08:41 AM, 10 Aug 2020
    сколько у вас строк в t1 и t2?
    декартово произведение на выходе получается
  • https://t.me/clickhouse_ru
    @gararr #175593 08:45 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    В t1 около миллиона на дату выйдет, в t2 ну раза в три-четыре больше. В память должно влезать

    Спасибо за помощь - запрос заработал
  • https://t.me/clickhouse_ru
    10^6 *10^6 ?
    =) резиновая у вас память
    сколько полей в таблице?
    даж не знаю как оно у вас там заработало =)
    скорее всего частично на диск CROSS JOIN что-то будет сбрасывать
  • https://t.me/clickhouse_ru
    Ну на месяц запрос уже не влезет, конечно)

    Полей 40 в первой таблице и 20 во второй, все String или Nullable(String)
  • https://t.me/clickhouse_ru
    @BloodJazMan #175599 09:04 AM, 10 Aug 2020
    итого триллион записей в каждой 60 строк по 50-100 байт каждая ? примерно 90 гигабайт за день на этот запрос уйдет
    я бы все таки поостерегся такое запускать =) но с другой стороны, пробуйте конечно =) clickhouse Для того и сделали чтобы и в хвост и в гриву... ;)
  • https://t.me/clickhouse_ru
    Я уже точно не помню, там больше половины значений в столбцах - NULL. Может поэтому выходит 10GB на две недели
  • https://t.me/clickhouse_ru
    @alekhm #175601 09:34 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Alexpricker #175602 09:37 AM, 10 Aug 2020
    Все доброго дня. Кто знает? Есть ли в конф файле возможность поднять лимиь max result rows выше 5 тысяч?
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/operations/settings/query-complexity/#setting-max_result_rows
    тут ничего не сказано что нельзя поднять и что ограничение 5000

    SELECT ... SETTINGS max_result_rows=0
    сделайте посмотрите сработает ли

    запрос через clickhouse-client пробовли сделать?
    Restrictions on Query Complexity | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @CatWithTail #175604 09:47 AM, 10 Aug 2020
    Joined.
  • @evghenuser #175605 09:47 AM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @CatWithTail #175606 09:50 AM, 10 Aug 2020
    Добрый день!

    Господа, у меня такой вопрос:
    у меня минута/рная инсталяция на сервере, с незначительным количеством иопсов внутри амазона. Иопсы заканчиваются, когда clickhouse “схлопывает” файлы для таблиц Merge Tree.

    Есть ли какя-то возможность сделать так, чтобы этих файлов было меньше, или чтобы он их схлопывал реже?
  • https://t.me/clickhouse_ru
    да, вставляйте БОЛЬШИМИ БЛОКАМИ по 100 000 записей минимум
    выбирайте правильный
    PARTITION BY
    чтобы в вставляемом блоке не было больше 100 paritiion
  • https://t.me/clickhouse_ru
    А это как-то можно со стороны clickhouse настроить?
  • https://t.me/clickhouse_ru
    вы хотите не правильного и не понимаете как и зачем clickhouse делает merge
    хотите вставлять мелкими вставками используйте Buffer
    https://clickhouse.tech/docs/en/engines/table-engines/special/buffer/
    Buffer | ClickHouse Documentation

    Buffer Table Engine Buffers the data to write in RAM, periodically flushing it to another table. During the read operati

  • https://t.me/clickhouse_ru
    Спасибо, сейчас ознакомлюсь.
  • https://t.me/clickhouse_ru
    @BloodJazMan #175611 10:03 AM, 10 Aug 2020
    но повторюсь , лучше переписать приложение

    ну или можно что нибудь типа вот такой утилиты использовать
    https://github.com/nikepan/clickhouse-bulk
    GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

    Collects many small inserts to ClickHouse and send in big inserts - GitHub - nikepan/clickhouse-bulk: Collects many small inserts to ClickHouse and send in big inserts

  • https://t.me/clickhouse_ru
    Там rsyslog, я ему буффера выкрутил, но, похоже что предложенный вами вариант может помочь
  • https://t.me/clickhouse_ru
    @bokolesnik #175613 10:08 AM, 10 Aug 2020
    Привет, я новичок, можно как-то связать MongoDB и Clickhouse, и чем? GrahpQL, Kafka??
  • https://t.me/clickhouse_ru
    что значит связать?
    что хотите сделать?
    вам монга зачем?
    сколько документов в коллекции уже?
    индексы вторичные есть?
    aggregation framework пробоали?
  • https://t.me/clickhouse_ru
    @R_Galeev #175615 10:42 AM, 10 Aug 2020
    Всем привет!
    Подскажи плиз
    Как настроить стриминг данных из Google analytics с clickhouse
  • https://t.me/clickhouse_ru
    https://bitbucket.org/clickhouse_pro/ga2clickhouse
    это стриминг через плагин в analytics.js
    это не выгрузка из API
  • https://t.me/clickhouse_ru
    спасибо, может сможете подсказать, а real-time там можно настроить?
  • https://t.me/clickhouse_ru
    я ссылку привел
    это realtime и есть
    весь measurement протокол будет стримиться если правильно JS настроите
  • https://t.me/clickhouse_ru
    спасибо большое)
  • https://t.me/clickhouse_ru
    если что-то не заработает, пишите в чат
    это старый софт
    щас у гугла могло поломаться API с measurement protocol
  • https://t.me/clickhouse_ru
    хорошо, спасибо)
  • https://t.me/clickhouse_ru
    @R_Galeev #175622 11:07 AM, 10 Aug 2020
    но API mrt protocol работает
  • https://t.me/clickhouse_ru
    @Deniallugo #175623 12:18 PM, 10 Aug 2020
    Всем привет!
    Я для миграций использую GO migrate.
    и хочу подключить engine для кафки.
    Одно из полей для создании таблицы с кафкой это путь до нее.
    Но мне прям очень не хочется хардкодить в миграции путь до кафки, кто как решает подобную задачу?
  • https://t.me/clickhouse_ru
    @rastafarra #175624 12:18 PM, 10 Aug 2020
    вечер добрый.

    появился вопрос: у меня запрос есть “select from select” и если этот запрос выполнить несколько раз подряд, то он отдает разное количество строк.

    понятно что я записи не добавляю уже, количество строк у меня либо 653, либо 650, и так вот эти две цифры чередуются.

    это так и должно быть, или от чего зависит?
  • Если проксей и семплинга/рандома нет, то баг наверно.
  • https://t.me/clickhouse_ru
    @ImZonG #175626 12:31 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    две реплики и они разошлись?
    запрос неидемпотентный? -- в это сложно поверить, я понимаю, но это возможно, из-за многопоточности
  • https://t.me/clickhouse_ru
    @rastafarra #175628 12:44 PM, 10 Aug 2020
    реплики две, да.
  • https://t.me/clickhouse_ru
    ну select count() from прямо в MergeTree таблицу на каждой реплике
  • https://t.me/clickhouse_ru
    @acromegale #175630 12:51 PM, 10 Aug 2020
    Joined.
  • @vvvjhaq #175631 12:51 PM, 10 Aug 2020
    @den_crane Привет. Мердж партов происходит самовольно или есть параметр по которому можно им управлять?
  • https://t.me/clickhouse_ru
    Шедулер мержей раз в 5(?) сек. и на каждый инсерт анализирует все парты и решает надо мержить или нет. Решение принимается в зависимости от кол-ва, размеров партов, и текущей загрузки мержами инстанса. Управлять можно в том смысле что можно увеличить кол-во одновременных мержей увеличив пул, но в конечном счете вы не получите полностью смерженные до 1го парта партиции, потому что это бессмысленная трата ресурсов, с точки зрения алгоритма шедулера.
  • Благодарю)
  • https://t.me/clickhouse_ru
    вы не должны этого хотеть. шедулер нормально написан
    вставляйте боьлшими пачками в меньшее кол-во партиций и все будет хорошо
  • Проблема не в этом, данных заходят хорошо, проблем нет
  • https://t.me/clickhouse_ru
    @den_crane #175636 01:00 PM, 10 Aug 2020
    если бы не завезли движки Replacing и Collapsing никто бы этого и не хотел
  • https://t.me/clickhouse_ru
    а зачем тогда вам управлять мержем?
  • https://t.me/clickhouse_ru
    хотелось узнать почему merge может не выполняться,
    @den_crane ответил
  • https://t.me/clickhouse_ru
    @ThePercyvelle #175639 01:02 PM, 10 Aug 2020
    Привет всем, не подскажете, как можно автоматически через jdbc создавать таблицы с nullable значениями и соответственно записывать данные, просто через dataFrame.write.jdbc не получается, выдается ошибка, что найден null-value
  • https://t.me/clickhouse_ru
    @ThePercyvelle #175640 01:03 PM, 10 Aug 2020
    то есть он не определяет колонку как nullable
  • https://t.me/clickhouse_ru
    К.О.:
    вообще nullable в КХ это проблема, потому что они занимают место и замедляют запросы, и лучше не иметь nullable вообще
    если вам фиолетово на такой тонкий момент, то надо создавать поля как Col Nullable(String), Col1 Nullable(Int8)
  • https://t.me/clickhouse_ru
    я понимаю, но как это делать автоматически через dataframe.write.jdbc, а не создавать вручную таблицы
  • https://t.me/clickhouse_ru
    @den_crane #175643 01:09 PM, 10 Aug 2020
    бог миловал, я не знаю что такое dataframe.write.jdbc и работаю в компании где за создание таблиц автоматически, сразу отрубают все пальцы на всех руках и ногах.
  • https://t.me/clickhouse_ru
    @ThePercyvelle #175644 01:09 PM, 10 Aug 2020
    я пишу эту строчку для загрузки данных в КХ dataFrame.write.jdbc(url=chUrl, table=chTableName, mode='append',
    properties=json.loads(chConfig))
  • https://t.me/clickhouse_ru
    @ThePercyvelle #175645 01:10 PM, 10 Aug 2020
    я просто хотел для себя попробовать, но я понял Вас, спасибо большое за ответ
  • https://t.me/clickhouse_ru
    @ivantgam #175646 01:48 PM, 10 Aug 2020
    Привет!
    Можно ли в ClickHouse создать динамический запрос, который будет считать count за последние 7 дней у всех таблиц с определенной схемы?

    Например:
    1) схеме analytics есть 3 таблицы.
    Мониторинг показывает count по каждой из этих таблиц за последние 7 дней.

    2) В схеме analytics появилась четвертая таблица.
    Мониторинг учитывает новую таблицу и считает count за последние 7 дней.

    Есть мысли реализовать это через питон и system.tables, но пока интересует реализация именно через CH)
  • https://t.me/clickhouse_ru
    нельзя
  • https://t.me/clickhouse_ru
    спасибо!
  • https://t.me/clickhouse_ru
    правда можно нагенерить SQL запрос используя system.tables , но как узнать по какой колонке брать 7 дней?
  • https://t.me/clickhouse_ru
    а кстати у таблиц одинаковая структура? и похожие имена ?
  • https://t.me/clickhouse_ru
    @bdrgn #175651 02:17 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    Структура да, все даты называются тоже одинаково.
    А каким образом можно сгенерировать SQL запрос?
    Я думал использовать: arrayMap + groupArray(table_name) + использовать arrayStringConcat + UNION
    Только на выходе будет строка с текстом запроса, а не сам запрос.
  • https://t.me/clickhouse_ru
    если одинаковая структура тогда engine=Merge накрывает их всех и дальше используя виртуальное поле _table группируем
  • https://t.me/clickhouse_ru
    Благодарю за помощь
  • @vvvjhaq #175655 02:27 PM, 10 Aug 2020
    Таблица MergeTree с ключом по дате. В таблице 2 строки. Делаю freeze, потом делаю аттачед. Строки задублировались. Стоит ли ожидать, что через некоторое время 4 строки станут 2-мя?
  • https://t.me/clickhouse_ru
    никогда не станут. С чего бы вдруг.
  • в replacing схлопнутся же?
  • https://t.me/clickhouse_ru
    в replacing могут схлопнутся, могут нет, но вы про MergeTree спросили.
  • да,спасибо
  • @1022042136 #175660 02:55 PM, 10 Aug 2020
    Joined.
  • @7699150 #175661 03:23 PM, 10 Aug 2020
    Ребят, а кто дружил CH c Tableau через ODBC driver?
    Постоянно падают ошибки с таймаутом.
    Куда копать?)
  • https://t.me/clickhouse_ru
    @Alina_Ropotan #175662 03:27 PM, 10 Aug 2020
    Joined.
  • @Promsoft #175663 03:51 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @paveldubinin #175664 03:54 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    вообще на любой запрос?
  • нет
    только на большие и толстые
  • @7699150 #175667 03:57 PM, 10 Aug 2020
    причем в CLI нормально отрабатывают
  • https://t.me/clickhouse_ru
    Если проблема в том, что запросы долгие, то копать в сторону увеличения Timeout в DSN: https://github.com/ClickHouse/clickhouse-odbc#configuration
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    @tron_wai #175669 03:58 PM, 10 Aug 2020
    ошибка какая конкретно?
  • https://t.me/clickhouse_ru
    Можно попробовать https://cloud.yandex.ru/services/datalens ;)
  • пробовал через ODBC Manager поставть timeout — но при большом таймауте некоторые запросы, которые по идее должны были бы с ошибкой упасть — крутятся вечность и весь табло зависает
  • хм, и почему я детально не рассмотрел эту таблицу, перед тем как писать вопрос?)
    спасибо )
  • https://t.me/clickhouse_ru
    в cli receive_timeout = 300
    в odbc видимо Timeout 30 Connection timeout
  • https://t.me/clickhouse_ru
    @Makasinov #175674 04:03 PM, 10 Aug 2020
    Всем привет! Уже второй раз кликхаус становится раком из-за простого alter modify ttl на реплицируемой таблице. Обновились с 20.1 до 20.5 и это всё началось. Сначала подумал что понял в чем проблема (materialize_ttl_after_modify), будто кх идёт чистить старые парты, но нет. Даже посли чистки он не возобновляет работу. Лечится только рестартом, а после, в зукипере происходят проблемы с рассинхроном мета данных. В конечном итоге на одной ноде один ttl, а на другой - другой. И при попытке сделать снова alter получаю отлуп DB::Exception: Metadata on replica is not up to date with common metadata in Zookeeper. Cannot alter.
    Подскажите пожалуйста кто нибудь в чём дело и как теперь можно "безопасно" делать modify ttl?
  • Попробую поиграться. Спасибо
  • https://t.me/clickhouse_ru
    раком? не заканчивается alter modify ttl и потом ломаются инсерты или что ?
  • https://t.me/clickhouse_ru
    @Makasinov #175677 04:37 PM, 10 Aug 2020
    Ага, alter не останавливается, вставка проходит раз через раз, селекты вообще не проходят
  • https://t.me/clickhouse_ru
    @Makasinov #175678 04:38 PM, 10 Aug 2020
    Я по моему нашел очень похожее issue на эту тему https://github.com/ClickHouse/ClickHouse/issues/10177
    DB::Exception: Existing table metadata in ZooKeeper differs in TTL · Issue #10177 · ClickHouse/ClickHouse

    Describe the bug Performed the update from version 20.1.2.4 to 20.3.5.21, after restart clickhouse does not start. Tried to upgrade to 20.1.6.30 or 20.1.9.54 versions, clickhouse also does not star...

  • https://t.me/clickhouse_ru
    @den_crane #175679 04:40 PM, 10 Aug 2020
    там про раком ни слова
  • https://t.me/clickhouse_ru
    @Makasinov #175680 04:41 PM, 10 Aug 2020
    а у меня чуть более чем полностью) Потом начинаются проблемы с репликацией на /replicas_status. Но со временем восстанавливается
  • https://t.me/clickhouse_ru
    @den_crane #175681 04:46 PM, 10 Aug 2020
    не воспроизводится зависание, есть какая-то хитрость видимо
  • https://t.me/clickhouse_ru
    @den_crane #175682 04:46 PM, 10 Aug 2020
    https://gist.github.com/den-crane/008b9be1ce88bd0e0912a9a7d2933f29

    может в момент alter идет мерж и alter зависает на очень долго, ожидая мержа?
  • https://t.me/clickhouse_ru
    @Makasinov #175683 05:00 PM, 10 Aug 2020
    Кто то в комментах отписал о том, что он обновился на новую версию и версии ttl отличаются от прежних и это возможно привело к проблеме
  • https://t.me/clickhouse_ru
    @Makasinov #175684 05:01 PM, 10 Aug 2020
    Какой мог быть "старый" (20.1) синтаксис alter ttl? И какой новый сейчас (20.5)? toIntervalDay() который у меня сейчас вроде был и есть без изменений
  • @Valumarius #175686 05:08 PM, 10 Aug 2020
    Joined.
  • @Valumarius #175687 05:09 PM, 10 Aug 2020
    Коллеги, приветствую! Пожалуйста, подскажите какие ресурсы для кликхауса нужны чтобы отправлять в него 2,5-3Тб логов в сутки?
  • https://t.me/clickhouse_ru
    А в какой форме то логи, денормализованы?
    Сколько собираетесь хранить?
  • Очень хороший вопрос. Пока только в голове)
    Предполагается, что под каждый тип приложения будет отдельная таблица. Грубо, 20 типов приложений = 20 таблиц. Но это не точно.
  • https://t.me/clickhouse_ru
    В зависимости от данных они могут сжиматься хоть в 10-20 раз а могут и гораздо хуже, лучший способ проверить это получить объем для одной партиции и посмотреть как они сожмутся.
  • https://t.me/clickhouse_ru
    @Makasinov #175691 05:26 PM, 10 Aug 2020
    Кстати ещё вопросец, что можно сделать при залипших репликациях? В логах очень много
    Code: 86, e.displayText() = DB::Exception: Received error from remote server ?endpoint=DataPartsExchange%3A%2Fclickhouse%2Fcluster_1%2Ftables%2F0%2Ftcb%2Fuser_events_local%2Freplicas%2Fch2&part=20200721_749_749_0&client_protocol_version=2&compress=false. HTTP status code: 500 Internal Server Error, body: Code: 232, e.displayText() = DB::Exception: No part 20200721_749_749_0 in table, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    это про старый синтаксис создания таблиц, устаревший 3 года назад. К ним вообще не применим TTL, но alter по ошибке срабатывал на них.
  • https://t.me/clickhouse_ru
    @inquiss #175693 05:30 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    если селекты не делать, то что угодно, тупо записать 3 TB на диск в сутки не проблема.
  • https://t.me/clickhouse_ru
    удалять из зукипера
  • https://t.me/clickhouse_ru
    А что вы делаете с таким объемом логов потом? Как используете эти данные?
  • https://t.me/clickhouse_ru
    Ого. Если это единственный способ, то чтож... таков путь)
  • https://t.me/clickhouse_ru
    @Makasinov #175698 05:35 PM, 10 Aug 2020
    Спасибо, буду копать дальше. Или ломать) Как пойдёт
  • https://t.me/clickhouse_ru
    вы слишком размыто описываете проблему

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

    можно detach partition / attach partition , но реплики перекачают полностью данные
    Some merges may stuck · Issue #10368 · ClickHouse/ClickHouse

    This bug is discovered on Yandex.Metrica servers. If there is assigned merge but some parts in between of the range of parts to merge get lost on all replicas, the merge cannot proceed and the foll...

  • https://t.me/clickhouse_ru
    просто писать 100Мб в секунду это не проблема, хоть в один сервер, если вы синкаете реплику например, то и быстрее можно.
  • https://t.me/clickhouse_ru
    Это в теории может помочь, попробую детач атач
  • https://t.me/clickhouse_ru
    это не в теории, это фактически пересоздание всей таблицы (партиции)
  • В основном планируется хранить, чтение очень редкое. То есть планируется использовать в качестве колд-хранилища логов, для хот - эластик.
  • @serlex777 #175704 05:51 PM, 10 Aug 2020
    Добрый вечер! Стоит выбор ОС для КХ. Дебиан или убунта. Есть ли причины выбрать что-то конкретное?
  • https://t.me/clickhouse_ru
    без разницы. У КХ один и тот же бинарник собранный статически.
    Что вам удобнее админить
  • https://t.me/clickhouse_ru
    разницы с точки зрения CH нет, это статический бинарник без зависимостей...

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

    у вас была таблица X и там были парты A1 B1 C1 на всех репликах
    вы сделали детач, парты A1 B1 C1 попали в папку detached
    на одной из реплик вы сделали attach парты присоединились и переименовались в A2 B2 C2
    другие реплики скачали A2 B2 C2
    у этих других реплик остались в папке detached A1 B1 C1
    если вы сделаете attach для A1 B1 C1 , они присоединятся переименуются и все удвоится, утроится, учетверится

    в папке detached куча партов теперь, их вам надо удалить
  • https://t.me/clickhouse_ru
    @Makasinov #175712 06:41 PM, 10 Aug 2020
    Понял понял)
  • https://t.me/clickhouse_ru
    мы флайвей используем собранный года полтора назад из какого то пулл реквеста
  • О, мы тоже собираемся это сделать. Спасибо
  • https://t.me/clickhouse_ru
    @biochemicalcake #175715 08:50 PM, 10 Aug 2020
    можно собрать и опубликовать как артифакт в ваш личный нексус, например
  • @739213537 #175716 09:57 PM, 10 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @blkmrkt #175717 10:08 PM, 10 Aug 2020
    Ребят, подскажите легкий драйвер Кликхауза для Питона 2.7. Мне нужно добавить в существующий код с gevent лупом кусочек для отправки колонок в КХ, да так чтоб не блокировало основной тред вебворкера, либо делало это после отдачи ответа клиенту.

    Какой протокол КХ для этого лучше подойдет - нативный или хттп?
  • https://t.me/clickhouse_ru
    @nyoroon #175718 11:38 PM, 10 Aug 2020
    можешь просто по http ходить
  • https://t.me/clickhouse_ru
    @nyoroon #175719 11:39 PM, 10 Aug 2020
    HTTP Interface | ClickHouse Documentation

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

  • 11 August 2020 (97 messages)
  • @1040365887 #175720 05:36 AM, 11 Aug 2020
    Joined.
  • @eperesadka #175721 05:57 AM, 11 Aug 2020
    подскажите, пожалуйста, по полю elapsed из табилцы system.processes, оно вроде показывает секунды с начала обработки запросов, как и почему оно может превышать таймаут?
  • https://t.me/clickhouse_ru
    timeout на клиенте задается

    на сервере есть вот такое
    https://clickhouse.tech/docs/en/operations/settings/query-complexity/#max-execution-time
    Restrictions on Query Complexity | ClickHouse Documentation

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

  • я правильно понял, что по умолчанию на сервере нет ограничений на время выполнения?
  • @1019316538 #175724 06:56 AM, 11 Aug 2020
    кто подключался к mongo через odbc ? подключение напрямую делается или надо поднять промежуточную службу MongoDB Connector for BI Components?
  • https://t.me/clickhouse_ru
    да все верно
    когда отваливается клиент, это просто отваливается клиент
    выполнение запроса на сервере продолжается

    KILL QUERY ... SYNC вам в помощь, но оно тоже не делает на самом деле KILL. там просто флаг выставляется который в query thread весьма не часто проверяется после чего происходит остановка выполнения запроса

    и даже для max_exectution_time есть исключение
    At this time, it is not checked for one of the sorting stages, or when merging and finalizing aggregate functions.
  • понял, спасибо
  • https://t.me/clickhouse_ru
    @ekzjuperi #175728 08:26 AM, 11 Aug 2020
    Привет, есть ли возможность из колонки типа datetime64(таймштамп с точностью до наносекунды) вернуть значение в наносекундах, что то вроде функции toUnixTimestamp()
  • https://t.me/clickhouse_ru
    @glebi0 #175729 08:34 AM, 11 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    умножить на 10^9 и округлить до целого не подойдёт?
  • https://t.me/clickhouse_ru
    @nyoroon #175731 08:46 AM, 11 Aug 2020
    правда может не влезет в 64 бита
  • https://t.me/clickhouse_ru
    Type Conversion | ClickHouse Documentation

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

  • toUnixTimestamp64Micro(datetim64)
    toUnixTimestamp64Milli(datetim64)
  • https://t.me/clickhouse_ru
    @ekzjuperi #175734 08:50 AM, 11 Aug 2020
    спасибо
  • пожалуйста
    только насколько я помню, это работает на более новых версиях КХ
  • https://t.me/clickhouse_ru
    @501846356 #175736 09:05 AM, 11 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @ispanteleev #175737 09:50 AM, 11 Aug 2020
    Всем привет. Поделитесь бестпрактисами по перевозу кх с бареметела в докер. Запилил образ с той же версией, планирую просто смонтировать /etc/clickhouse-server и /var/lib/clickhouse в контейнер. Стоит ждать каких-либо проблем?
  • https://t.me/clickhouse_ru
    Ещё раз добрый день. Исследовал проблему, и пришёл к выводу, что alter modify ttl ничего не сломает, если не менять колонку, над которой висит ttl.
    То бишь ранее у нас было прописано в create table такое: TTL eventDateTime + toIntervalDay(25). Так вот, чтобы ничего не залипло и прошло хорошо, нужно было оставить eventDateTime колонку, а я поменял на TTL eventDate + toIntervalDay(23). Возможно дело совсем не в это, но на остальных восьми нодах всё прошло успешно, поэтому я и пришёл к такому выводу
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #175733 #175739 10:54 AM, 11 Aug 2020
    О, спасибо, надо обновить кх
  • https://t.me/clickhouse_ru
    @rkhasanshin #175740 11:14 AM, 11 Aug 2020
    всем привет. вопрос: есть несколько шардов, хочу создать распределенную таблицу на движке Distributed на основе таблицы, которая есть на каждом шарде. где нужно создать эту распределенную таблицу? достаточно на одном любом шарде (догадка), или нужно на каждом создавать?
  • https://t.me/clickhouse_ru
    Смотря где делаете селект. Если селект на одной ноде всегда, то достаточно только на ней. А если селекты на разных нодах делаются постоянно, то на всех
  • https://t.me/clickhouse_ru
    понятно, спасибо
  • https://t.me/clickhouse_ru
    @rkhasanshin #175743 11:20 AM, 11 Aug 2020
    блин... тогда странная проблема:

    создание distributed-таблицы на каждом шарде падает с ошибкой выделения памяти.
    Allocator: Cannot mmap 128.00 MiB., errno: 12, strerror: Cannot allocate memory.
    при перезапуске скрипта все создается.
    на следующем шарде снова ошибка, при перезапуске снова создается
  • https://t.me/clickhouse_ru
    @rkhasanshin #175744 11:23 AM, 11 Aug 2020
    может, это связано с тем, что перед distributed-таблицей в скрипте создаются другие сущности, а при втором запуске уже не создаются, т.к. уже существуют (там IF NOT EXISTS)? может такое быть?
  • Добрый день, коллеги! Столкнулся с данной проблемой, когда обновил версию кликхауза. В последнем сообщении писали, что ошибка вызвана старым синтаксисом при создании таблицы и что нужно пересоздать таблицы заново с новым синтаксисом. Но я вот смотрю на код создания таблиц и не понимаю, где тут старый синтаксис. Может кто-нибудь понимает, что надо поменять? Ну или хотя бы доку, где написано что поменялось.
    Таблица:
    CREATE TABLE table.table (`dt` Date, ts DateTime, cpeid Nullable(String), hardwareversion Nullable(String), softwareversion Nullable(String), vendor Nullable(String), model Nullable(String), url Nullable(String), name Nullable(String), type Nullable(String), district Nullable(String), data Nullable(String), stat Nullable(String), house Nullable(String), corpus Nullable(String), cpu_info Nullable(String), abon_type Nullable(String), tar Nullable(String), speed Nullable(Float32)) ENGINE = ReplicatedMergeTree(\'/clickhouse/{shard}/tables/table\’, \'{replica}\') PARTITION BY dt ORDER BY ts SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175745 #175746 11:27 AM, 11 Aug 2020
    в этом примере синтаксис уже новый, TTL должен работать (по идее)
  • @makkinwa #175747 11:28 AM, 11 Aug 2020
    Existing table metadata in ZooKeeper differs in TTL. Stored in ZooKeeper: dt + toIntervalDay(100), local: : Cannot attach table table.table from metadata file /var/lib/clickhouse/metadata/table/table.sql
  • https://t.me/clickhouse_ru
    @easya #175748 11:31 AM, 11 Aug 2020
    в метаданных, хранимых в ZK, и локальном .sql есть разница. У меня такое случалось, когда я на таблицу, созданной со старым синтаксисом, навешивал настройки TTL. Если такое случилось с таблицей, созданной с новым синтаксисом, то это баг :(
  • https://t.me/clickhouse_ru
    @easya #175749 11:33 AM, 11 Aug 2020
    посмотрите, что у вас в метаданных в ZK и .sql написано
  • @makkinwa #175750 11:43 AM, 11 Aug 2020
    ATTACH TABLE report_dl
    (
    dt Date,
    ts DateTime,
    cpeid Nullable(String),
    hard Nullable(String),
    soft Nullable(String),
    vendor Nullable(String),
    model Nullable(String),
    mac Nullable(String),
    login Nullable(String),
    type Nullable(String),
    name Nullable(String),
    city Nullable(String),
    street Nullable(String),
    number Nullable(String),
    corpus Nullable(String),
    apart Nullable(String),
    abon Nullable(String),
    tar Nullable(String),
    speed Nullable(Float32)
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/{shard}/tables/table’, '{replica}')
    PARTITION BY dt
    ORDER BY ts
    SETTINGS index_granularity = 8192
  • @makkinwa #175751 11:43 AM, 11 Aug 2020
    Это /var/lib/clickhouse/metadata
  • https://t.me/clickhouse_ru
    @glebi0 #175752 11:46 AM, 11 Aug 2020
    Возможно нубский вопрос, но чем ключ сортировки(order by) отличается от первчиного(primary key) в MergeTree?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #175752 #175753 11:47 AM, 11 Aug 2020
    Первичный -- суффикс ключа сортировки, держится в памяти. Стоит ставить отличным от OK, если много памяти на первичный индекс уходит
  • Как посмотреть метаданные из ZK?
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175754 #175755 11:56 AM, 11 Aug 2020
    либо запросом в system.zookeeper с заданным path, либо любым клиентом для ZK (хотя бы тем же zkCli)
  • Сейчас посмотрю, спасибо
  • select * from system.zookeeper where path = '/clickhouse/0/tables/table/metadata';
    Там пусто
  • Если я дропну таблицы, то данные из зоокипера тоже удалятся? Есть смысл менять версию и пересоздать таблицы? Мне кажется, что если пересоздать, то все должно заработать.
  • https://t.me/clickhouse_ru
    уберите последний путь metadata, по идеи должно показать
  • https://t.me/clickhouse_ru
    в основном это сделано чтобы иметь возможность добавлять измерения в summingMT (но работает для всех движков) плюс возможность иметь короткий индекс при длинном списке измерений
  • @455794329 #175761 12:56 PM, 11 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    вам кажется.

    Вы бы просто в sql файле дописали нужный TTL и все
  • @455794329 #175763 01:03 PM, 11 Aug 2020
    Все привет! Подскажите пожалуйста, получаю ошибку типа: Element of set in IN, VALUES or LIMIT is not a constant expression (result column not found): concat('XYZ', __subquery_XXXX_XXXX, 'ABC')" запрос типа селект в селекте с вычислением на лету значения
  • @455794329 #175764 01:04 PM, 11 Aug 2020
    как обычно фиксят подобные баги? на стандартном MySQL уверен бы такой проблемы не появилось.
  • https://t.me/clickhouse_ru
    @Sdmxx #175765 01:05 PM, 11 Aug 2020
    @den_crane какая заполненность диска для КХ является критичной? ну типо ошибки начинают сыпаться после какого процента заполнения диска?
  • @455794329 #175766 01:05 PM, 11 Aug 2020
    __subquery_XXXX_XXXX — это в моем запросе подстрока типа (select 'abc')
  • https://t.me/clickhouse_ru
    @Sdmxx ↶ Reply to #175766 #175767 01:06 PM, 11 Aug 2020
    в КХ вроде нельзя создавать временные таблицы
  • https://t.me/clickhouse_ru
    очень специфично. Диск нужен для мержей и мутаций, если у вас макс. размер партов 100ГБ, то я думаю гигов 500 свободно надо иметь
  • https://t.me/clickhouse_ru
    @Sdmxx #175769 01:06 PM, 11 Aug 2020
    которые на один запрос
  • https://t.me/clickhouse_ru
    @Sdmxx ↶ Reply to #175768 #175770 01:08 PM, 11 Aug 2020
    то есть примерно Х5 от максимального размера партиции?
  • https://t.me/clickhouse_ru
    КХ создает временные (temporary) таблицы сам, например для global

    __subquery_XXXX_XXXX -- это не temporary
  • https://t.me/clickhouse_ru
    нет, КХ резервирует 2*размер слияемых, но вдруг у вас несколько мержей должно бежать, я ХЗ.
  • @455794329 #175773 01:10 PM, 11 Aug 2020
    я заметил такую вещь, если у меня в запросе вместо (select '123') будет, например, version(), то всё ок, а если (select version()), то та ошибка
  • @455794329 #175774 01:11 PM, 11 Aug 2020
    и вот мне обязательно нужно воткнуть этот select. собственно вопрос как забайпасить, чтобы иметь возможность вытянуть данные (:
  • https://t.me/clickhouse_ru
    select materialize(version())

    в смысле это известный баг, что есть константы внутри инстанса ( типа version(), timezone() ), и это стреляет при Distributed, потому что константы становятся не константами внезапно.
  • https://t.me/clickhouse_ru
    @den_crane #175776 01:15 PM, 11 Aug 2020
    функция materialize создает колонку из констант (из чего угодно).
  • @455794329 #175777 01:18 PM, 11 Aug 2020
    спасибо. сейчас попробовал так

    select materialize(version())

    - ошибка повторилась. Затем сделал так:

    materialize(version())

    - ошибка, потом сделал:

    version()
  • @455794329 #175778 01:18 PM, 11 Aug 2020
    запрос прошел
  • https://t.me/clickhouse_ru
    ниче не понял
  • ?
  • https://t.me/clickhouse_ru
    Existing table metadata in ZooKeeper differs in TTL.
    Stored in ZooKeeper: dt + toIntervalDay(100), local: : Cannot attach table table.
    table from metadata file /var/lib/clickhouse/metadata/table/table.sql

    в ZK dt + toIntervalDay(100
    в /var/lib/clickhouse/metadata/table/table.sql TTL нету

    берете любимый текстовый редактор и дописываете в /var/lib/clickhouse/metadata/table/table.sql TTL dt + toIntervalDay(100)
  • https://t.me/clickhouse_ru
    @elVlaHell #175782 01:58 PM, 11 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @elVlaHell #175783 02:04 PM, 11 Aug 2020
    всем привет!
    вопрос как раз по TTL, объясните, плиз, как он работает?
    берет данные, у которых подошло время, копирует их(то есть делает х2), делает апдейт и вставляет обратно?
    или же это работает по-другому?
  • https://t.me/clickhouse_ru
    делает специфический мерж. Мержит парт в новый парт но без протухших записей.

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

    еще небольшой вопрос, у нас кх 19.17.4.11, были ли какие-то критические исправления TTL за этот год? с ходу не нашел
  • https://t.me/clickhouse_ru
  • @N0tNu11 #175789 03:03 PM, 11 Aug 2020
    Привет!
    Достаточно ли повысить background_pool_size для ускорения optimize final? Процесс идет. Диск особо не занят, процессор тоже.
  • https://t.me/clickhouse_ru
    не поможет. optimize final последовательно перебирает / мержит партиции
  • Спасибо
  • @vitaly_myshenkov #175792 03:36 PM, 11 Aug 2020
    Joined.
  • @vitaly_myshenkov #175793 03:45 PM, 11 Aug 2020
    Привет!
    Есть кластер с distributed таблицами. Когда у пользователя default пароль не выставлен всё хорошо работает. И вставка и выборка. Если выставить пароль для пользователя default. Перестаёт. code 256. Authentication failed. Такое ощущение что он пытается зайти на состояние ноды с пустым паролем. Как победить?
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175758 #175794 03:51 PM, 11 Aug 2020
    я бы попробовал сначала дописать в .sql файл нужные настройки TTL, чтобы было так же, как и в ZK. Если не сработает - можно руками удалить из ZK нужную строку с TTL (что крайне не рекомендуется разработчиками, грязный хак и вообще. Но мне это помогло). Ну а если есть вариант безболезненно пересоздать таблицу - то лучше так и сделать
  • Я дописал в metadata и все заработало
  • @makkinwa #175796 03:52 PM, 11 Aug 2020
    Но это тоже грязный хак
  • @makkinwa #175797 03:52 PM, 11 Aug 2020
    Но
    Но
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175795 #175798 03:53 PM, 11 Aug 2020
    тогда возможно баг при создании таблицы с TTL/добавление TTL к существующей
  • @makkinwa #175799 03:53 PM, 11 Aug 2020
    Я обновил до 20 версии и в ней все нормально. Я делаю alter ttl и он сам все пишет в metadata + добавляет TTL даже на реплике, так что все круто
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175796 #175800 03:53 PM, 11 Aug 2020
    чуть менее грязный, чем руками лезть в зукипер
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175799 #175801 03:54 PM, 11 Aug 2020
    значит, в новой версии починили уже. В старых версиях с TTL было много багов. У меня 20.5, пока без проблем
  • Похоже на то
  • @makkinwa #175803 03:57 PM, 11 Aug 2020
    Я тестил изначально на 20, поэтому и прихерел, когда начал работать на 19
  • https://t.me/clickhouse_ru
    Подскажите пожалуйста как можно редактировать данные в зк? Через zkCli или как то иначе?
  • https://t.me/clickhouse_ru
    @easya ↶ Reply to #175804 #175805 04:35 PM, 11 Aug 2020
    я использовал первое, что нашлось в гугле: https://github.com/zzhang5/zooinspector
    GitHub - zzhang5/zooinspector: An improved zookeeper inspector

    An improved zookeeper inspector. Contribute to zzhang5/zooinspector development by creating an account on GitHub.

  • коллега говорит, что несколько optimize partition final позволят достич бОльшей параллельности
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    да, они параллельно работают. А optimize table xxx final , перебирает партиции и делает им partition final по очереди
  • надо бы feature request завести)
  • https://t.me/clickhouse_ru
    в remote_servet в описание кластера надо пароль добавлять, иначе инстансы КХ ломятся в другие инстансы с пустым паролем
  • https://t.me/clickhouse_ru
    @ligurio #175811 04:59 PM, 11 Aug 2020
    Joined.
  • @1019316538 #175812 07:45 PM, 11 Aug 2020
    кто пробовал из КХ подключиться к Mongo?
    настроил ODBC . через iusql подключаюсь нормально. когда в КХ выполняю запрос:
    SELECT * FROM odbc('DSN=Mongo','pg_test','counter')
    ловлю ошибку
    Code: 86, e.displayText() = DB::Exception: Received error from remote server /columns_info?connection_string=DSN%3DMongo&schema=pg_test&table=counter&external_table_functions_use_nulls=true. HTTP status code: 500 Internal Server Error, body: Error getting columns from ODBC 'Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Connection attempt failed: Connection:Not applicable
    Server:Not applicable
    ===========================
    ODBC Diagnostic record #1:
    ===========================
    SQLSTATE = 08S01
    Native Error Code = 2002
    [MySQL][ODBC 1.4(w) Driver]Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13)

    (version 20.5.3.27 (official build))'
    (version 20.5.3.27 (official build))
  • @181568392 #175813 08:46 PM, 11 Aug 2020
    Успеют ли в этом году зарилизить оконные функции
  • https://t.me/clickhouse_ru
    я не видел пул реквестов, а что кто-то что-то делал?
  • @181568392 #175815 08:54 PM, 11 Aug 2020
    @clickhouse_developers
  • Вроде обещали в ближайшее время
  • Юзай массивы
  • 12 August 2020 (143 messages)
  • @eperesadka #175818 05:16 AM, 12 Aug 2020
    Кто-нибудь сталкивался с залипанием запросов? Некоторые запросы выполняются бесконечно (хотя в другой момент времени те же самые запросы проходят успешно), несмотря на то, что у пользователя установлен max_execution_time в 30 секунд, при этом KILL QUERY так же залипает
  • @226708094 #175819 05:25 AM, 12 Aug 2020
    Joined.
  • @tsaberyaby #175820 07:27 AM, 12 Aug 2020
    Добрый день. Вопрос про обновления. Мои сервера сейчас на 19.16.13.54 я хочу обновится на самую новую версию КХ, в случае если что-то не устроит, смогу ли я откатиться назад? Смогу ли я это сделать безболезненно?
  • https://t.me/clickhouse_ru
    @artemhnilov #175821 07:27 AM, 12 Aug 2020
    Привет. Можно ли как-то посмотреть размер конкретной колонки на диске?
  • https://t.me/clickhouse_ru
    @artemiy_uo #175823 07:39 AM, 12 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @artemiy_uo #175824 07:41 AM, 12 Aug 2020
    Ребята привет

    подскажите есть ли какая-то документация к clickhouse obfuscator кроме статьи ?
    https://habr.com/ru/company/yandex/blog/457354/

    подскажите пожалуйста как его установить проще всего ? весь кликхаус из пакетов установить ?

    какие форматы он поддерживает крмое TSV ?
    Обфускация данных для тестов производительности

    Пользователи ClickHouse знают, что его главное преимущество — высокая скорость обработки аналитических запросов. Но как мы можем выдвигать такие утверждения? Это должно подтверждаться тестами...

  • https://t.me/clickhouse_ru
    @DmitrijKovalenko #175825 07:47 AM, 12 Aug 2020
    Привет всем! Подскажите пожалуйста, кто знает. Вопрос по типу DateTime при создании таблицы. в документации про это пишут так "Часовой пояс для столбца типа DateTime можно в явном виде установить при создании таблицы. Если часовой пояс не установлен, то ClickHouse использует значение параметра timezone, установленное в конфигурации сервера или в настройках операционной системы на момент запуска сервера." Вот только у меня почему то CH не использует ни значение timezone ни из конфигурации сервера и приходится задавать вручную. Кто нибудь сталкивался?
  • https://t.me/clickhouse_ru
    Что выводит
    SELECT timezone()?
  • https://t.me/clickhouse_ru
    Europe/Moscow
  • https://t.me/clickhouse_ru
    @rjs45 #175828 08:30 AM, 12 Aug 2020
    Скажите, можно ли както вызвать хранимую процедуру на удаленном MS SQL сервере? И ее результат записать в КХ
  • https://t.me/clickhouse_ru
    Если это не то что у Вас в конфиге, гляньте тут
    https://github.com/ClickHouse/ClickHouse/issues/4658
    Схожая с Вашей ситуацией история
    Default timezone regression · Issue #4658 · ClickHouse/ClickHouse

    After I upgraded to last master today (from an old version from sept 2018) I see at least on OSX that even if in config.xml I have <timezone>UTC</timezone> the server is...

  • https://t.me/clickhouse_ru
    @DmitrijKovalenko #175830 08:32 AM, 12 Aug 2020
    т.е.у меня вот такая вещь выходит, запрос вида "
    select
    toString(create_date),
    toString(create_date, 'Etc/GMT'),
    toString(сreate_date, 'Europe/Moscow'),
    create_date from some_table where id = 1234567;" возвращает: '2020-08-01 15:38:19, 2020-08-01 12:38:19, 2020-08-01 15:38:19, 2020-08-01 12:38:19
    '
  • https://t.me/clickhouse_ru
    Ну так у Вас таймзона по умолчанию Europe/Moscow, вот и получаете toString(create_date) = toString(сreate_date, 'Europe/Moscow')
  • @N0tNu11 #175832 08:59 AM, 12 Aug 2020
    Привет!
    Правильно ли я понимаю, что bloom_filter будет ускорять
    LIKE '%cat%'?
    https://github.com/ClickHouse/ClickHouse/pull/4499
    Bloom filter indices by nikvas0 · Pull Request #4499 · ClickHouse/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Category (leave one): New Feature Short description (up to few sentences): A new type of data skipping in...

  • Посмотри system.columns
  • https://t.me/clickhouse_ru
    @artemhnilov #175834 09:04 AM, 12 Aug 2020
    Уже нашел, спасибо
  • https://t.me/clickhouse_ru
    @MakeReady #175835 09:16 AM, 12 Aug 2020
    Нужен совет. Есть справочники. Обновления поставляются в виде cvs.
    Можно грохать и пересоздавать, но некрасиво как-то.
    Нужен аналог update or insert.
    Либо промежуточная таблица и insert as select с условием на несовпадения с тем что есть...
  • https://t.me/clickhouse_ru
    @newsettler #175836 09:18 AM, 12 Aug 2020
    Подскажите, не глупость ли: сделать маленькую табличку с размером партиции на два часа и две партиции максимум (потом дропать) для частых опросов, а из неё через MV в "большую" таблицу для аналитики и длинных выборок? Это будет работать?
  • https://t.me/clickhouse_ru
    @newsettler #175837 09:28 AM, 12 Aug 2020
    Или, может, лучше наоборот? Вставку в большую с копированием через MV в маленькую и ротировать её?
  • https://t.me/clickhouse_ru
    спасибо, это понятно. неясно почему при SELECT timezone() Europe/Moscow, функция toString(dateTime) без указания таймзоны накидывает к значению +3 часа, а также функция toDate() если хочешь получить дату из даты_время тоже накидывает +3 часа. приходится делать так toDate(value, 'etc/GMT'). это баг или фича?)
  • https://t.me/clickhouse_ru
    да, bloom_filter работает с like
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#functions-support
    MergeTree | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @nyoroon #175840 09:55 AM, 12 Aug 2020
    будет ли ускорять - отдельный вопрос
  • Спасибо, я кажется разобрался уже)
  • https://t.me/clickhouse_ru
    У Вас стоит таймзона по умолчанию Europe/Moscow (+3 от UTC), всё время которое Вы используете в проекте Clickhouse приводит к этой таймзоне, если Вы не укажите таймзону непосредственно в функции.
    Я пока не совсем понимаю, что у Вас не правильно работает и как должно быть.
  • https://t.me/clickhouse_ru
    @vladislav_sakun #175843 10:00 AM, 12 Aug 2020
    Если Вам надо без таймзоны, поставьте UTC и будет Вам радость
  • https://t.me/clickhouse_ru
    Спасибо!
  • https://t.me/clickhouse_ru
    Можно так. И без разницы кто кому mv.

    Можно и в большой табличке сделать в индексе час toHour() тогда маленькая не нужна.
  • https://t.me/clickhouse_ru
    Clickhouse fast not exists

    Clickhouse fast not exists . GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    Сделать view в mssql в которм select from sp
  • https://t.me/clickhouse_ru
    Какая версия кх? И как Примерно выглядит запрос?
  • https://t.me/clickhouse_ru
    а если помимо новых записей есть записи которые изменились?
  • https://t.me/clickhouse_ru
    @MakeReady #175851 12:34 PM, 12 Aug 2020
    банально флаг удаленности стал true
  • https://t.me/clickhouse_ru
    Откатися сможете если не будете создавать новые таблицы и не будете alter старые
  • https://t.me/clickhouse_ru
    @MakeReady #175853 12:35 PM, 12 Aug 2020
    то есть есть новые записи мправочника и некоторые старые переведены в пассив
  • А если буду, уже не смогу?
  • https://t.me/clickhouse_ru
    @OrNixx #175855 12:36 PM, 12 Aug 2020
    всем добрый день. полный лог 300мб такой ошибки: https://pastebin.com/7eFmE4fd
    потом КХ упал. Зукипер в порядке, насколько я вижу. что это может быть?
    2020.08.12 13:48:26.600289 [ 44 ] {} <Error> DDLWorker: ZooKeeper error: Code: 9 - 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.

  • Версия 19.14, запрос:

    SELECT 0 as id, toDateTime(ts, 'UTC') as ts, latitude, longitude, accuracy, source, course, altitude, speed, activityType
    FROM history
    WHERE dt >= :start AND dt <= :end AND ts > :timeStart AND ts < :timeEnd AND user = :user
    ORDER BY ts ASC
    FORMAT JSON

    В тп яндекса ответили уже, что это дедлоки и решаются они обновлением кликхауса
  • https://t.me/clickhouse_ru
    left join и проверять каждое поле
  • https://t.me/clickhouse_ru
    спасибо! А вариант делать новую полную таблицу рядом, а затем дроп и переименование?
  • https://t.me/clickhouse_ru
    Ну или просто всегда тупо вставлять все в replacingMT
  • https://t.me/clickhouse_ru
    Спасибо! Буду тестировать.
  • https://t.me/clickhouse_ru
    можно сначала переименовать одним запросом,ьпотом дроп
    Rename a to b, b to a
  • https://t.me/clickhouse_ru
    не совсем понял, есть описание такой конструкции?
  • https://t.me/clickhouse_ru
    @MakeReady #175863 01:04 PM, 12 Aug 2020
    пардон, понял! Сначала прочитал как дроп и ренейм вместе
  • https://t.me/clickhouse_ru
    @MakeReady #175864 01:06 PM, 12 Aug 2020
    тогда самый быстрый вариант, вероятно, будет insert в B, Rename B to A, A to B, и Alter Table B delete While 1. И далее крутить эту карусель в нужном периоде.
  • https://t.me/clickhouse_ru
    на бронепоезде? могу повторить: Откатится сможете если не будете создавать новые таблицы и не будете alter старые

    ну таблцы с логами системными в system надо будет удалить при откате в любом случае
  • https://t.me/clickhouse_ru
    в ЗК такой путь есть?
    Coordination::Exception: No node, path: /clickhouse/task_queue/ddl
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #175866 #175867 01:26 PM, 12 Aug 2020
    угу,
    [zk: localhost:2181(CONNECTED) 2] ls /clickhouse/task_queue
    [ddl]
  • https://t.me/clickhouse_ru
    CH точно в тот зукипер ходит?
    в конфиге КХ в zookeepeer секции есть атрибут root ?

    А что точно произошло, работал работал КХ, а потом начал писать такую ошибку? Или сразу не поднялся?
  • https://t.me/clickhouse_ru
    @igoorboob #175870 01:31 PM, 12 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Fullherdi #175871 01:31 PM, 12 Aug 2020
    Товарищи, подскажите пожалуйста как построить запрос что бы он возвращал числа округленные до 2 знаков после запятой, и целые числа тоже, т.е. "1" выводил как "1.00"
  • @Krash90 #175872 01:33 PM, 12 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    ну никак, нету функций форматирования

    жалкое подобие:
    select toString(cast(1, 'Decimal128(2)'))
    --
    1.00
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #175868 #175874 01:39 PM, 12 Aug 2020
    делали alter table, потом через какое-то время КХ упал
  • https://t.me/clickhouse_ru
    @OrNixx #175875 01:39 PM, 12 Aug 2020
    мониторинга не было, поэтому точно момент неясен :(
  • https://t.me/clickhouse_ru
    т.е. сейчас все работает
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #175876 #175877 01:42 PM, 12 Aug 2020
    после рестарта да. обновил до кучи, там старьё было
  • https://t.me/clickhouse_ru
    @OrNixx #175878 01:42 PM, 12 Aug 2020
    не старьё, но 20.1.2.4
  • https://t.me/clickhouse_ru
    >обновил до кучи
    вот это стальные яйца, я смену версии КХ тестирую 6 месяцев, потом заявку апрув на апгрейд пишу, с описанием как тестрировали процедуру наката и отката.
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #175879 #175880 01:44 PM, 12 Aug 2020
    https://github.com/ClickHouse/ClickHouse/issues/9153
    надо было этот баг обойти
    Out of bound in ColumnVector error · Issue #9153 · ClickHouse/ClickHouse

    query : SELECT event_dt, mode, countDistinct(user_id) AS measure FROM events WHERE (events.event_dt = 20200216) AND (events.client_id = 1) AND (events.event_id = 4) AND ((toInt32OrNull(events.event...

  • https://t.me/clickhouse_ru
    @OrNixx #175881 01:45 PM, 12 Aug 2020
    а что, КХ так болезненно обновляется?
  • https://t.me/clickhouse_ru
    одним не работает RENAME TABLE data TO datab, datab TO data

    Received exception from server (version 20.5.4):
    Code: 57. DB::Exception: Received from 89.208.209.197:9000. DB::Exception: Table default.datab already exists..
  • https://t.me/clickhouse_ru
    @OrNixx #175883 01:46 PM, 12 Aug 2020
    я как-то не задумывался об этом раньше. по крайней мере на минорных версиях
  • https://t.me/clickhouse_ru
    @ilya_lvbs #175884 01:46 PM, 12 Aug 2020
    Коллеги, у кого-нибудь был опыт интегрирования кх с реббитом, запросы уходят в timeout при попытке создать RabbitMQ ENGINE с
    rabbitmq_num_consumers большим чем 1
  • https://t.me/clickhouse_ru
    красота, сломали значит в 20х
  • https://t.me/clickhouse_ru
    в 20.6 работает
  • https://t.me/clickhouse_ru
    @SergeyLossev #175887 01:49 PM, 12 Aug 2020
    Ребят, че-т я так и не понял - задачу, вроде закрыли, а всё равно ничего не работает. Из гита никто не реагирует
    Че-т не понимаю, что нужно сделать, чтобы получилось расширить Enum8 для партиционируемого поля...

    Можете кто-нибудь прокомментировать?

    https://github.com/ClickHouse/ClickHouse/issues/7513
    Changes of Enum in partition key don't work · Issue #7513 · ClickHouse/ClickHouse

    From #2667. thanks @develar CREATE TABLE report ( `product` Enum8('IU' = 1, 'WS' = 2), `machine` String, `branch` String, `build_c1` String, `build_c2` String, `buil...

  • https://t.me/clickhouse_ru
    в 20.7 нет
    причем я недавно совсем тестировал
  • https://t.me/clickhouse_ru
    А у тебя какая версия КХ то?
  • https://t.me/clickhouse_ru
    20.5.3.27
  • https://t.me/clickhouse_ru
    в 20.7 работает
  • https://t.me/clickhouse_ru
    правда? Вот прям мамой клянусь? )
  • https://t.me/clickhouse_ru
    @lnuynxa #175893 01:52 PM, 12 Aug 2020
    https://github.com/ClickHouse/ClickHouse/commit/718262e7ce3b3979ef11e8a2cdc27125d0be6c75
    Ну судя по коммиту, должно работать в твоей версии
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @SergeyLossev #175895 01:53 PM, 12 Aug 2020
    Значит, надо обновляться...
  • https://t.me/clickhouse_ru
    😁
  • https://t.me/clickhouse_ru
    @MakeReady #175897 01:57 PM, 12 Aug 2020
    Баг завести?
  • https://t.me/clickhouse_ru
    да, я поискал и не нашел такого, странно. Может вообще убрали специально.
  • https://t.me/clickhouse_ru
    @MakeReady #175899 01:58 PM, 12 Aug 2020
    20.5.4 revision 54435
  • https://t.me/clickhouse_ru
    а вы как кстати проверяете? вот так работает ? rename table X to Y_old, Y to X, Y_old to Y;
  • https://t.me/clickhouse_ru
    @MakeReady #175901 02:05 PM, 12 Aug 2020
    вот так работает rename table data to data_old, datab to data;
  • https://t.me/clickhouse_ru
    @MakeReady #175902 02:06 PM, 12 Aug 2020
    ну и третье тоже пройдет
  • @i302752 #175903 02:09 PM, 12 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    а ну так и должно быть, так и было, я перепутал значит.
  • https://t.me/clickhouse_ru
    @MakeReady #175905 02:13 PM, 12 Aug 2020
    👍
  • https://t.me/clickhouse_ru
    @MakeReady #175906 02:14 PM, 12 Aug 2020
    я тоже подумал что странно без промежуточной :)) но вдруг!
  • https://t.me/clickhouse_ru
    @den_crane #175907 02:25 PM, 12 Aug 2020
    а я помню что в вертике взрыв мозга типа ALTER TABLE x, x_new, t RENAME TO t, x, x_old; а в КХ было попроще
  • https://t.me/clickhouse_ru
    @eldar_nasyrov #175908 02:25 PM, 12 Aug 2020
    Коллеги, подскажите, плз, как можно удалить первый элемент массива, равный определённому значению?

    Пробовал arrayMap(i-> i<>X, arr), но это для удалениях всех вхождений
  • https://t.me/clickhouse_ru
    пример покажите данных входного и выходного, arrayFilter
  • https://t.me/clickhouse_ru
    :))
  • @dj_mixer #175911 02:27 PM, 12 Aug 2020
    файлы в distributed начали копится и вообще перестали посылатся в другие шарды.
    в других частях изменений не было (версии кх, апп, кол-во вставок, все так же).
    типа такого, но умерло от слова совсем.
    https://t.me/clickhouse_ru/153907

    пинок в виде START DISTRIBUTED SENDS оживил.
    в 20.3 есть какие баги по этому поводу?
    Roman Tarasov in ClickHouse не тормозит

    приветствую всех! столкнулись с проблемой начали накапливаться бин файлы в дистриб табличках на данный момент 15к файликов накопилось вчера добавили опцию в дефолтный профиль distributed_directory_monitor_batch_inserts 1 помогает после рестарта кх не на долго, потом снова замирает

  • https://t.me/clickhouse_ru
    Спасибо, дружище, помог очень
  • https://t.me/clickhouse_ru
    @SergeyLossev #175913 02:53 PM, 12 Aug 2020
    Хотя странно - обновлялся, вроде... То ли не ту версию обновил, то ли фичу туда-сюда откатывали. В любом случае, теперь завелось
  • https://t.me/clickhouse_ru
    @microcropoc #175914 03:06 PM, 12 Aug 2020
    Приветствую. Правильно ли я понимаю что в этом запросе первым выполнится самый вложенный подзапрос, его результат отправляется на все ноды, так как данные из этого подзапроса нужны для выполнения подзапроса выше и так далее по цепочке?
  • https://t.me/clickhouse_ru
    правильно
  • https://t.me/clickhouse_ru
    @microcropoc #175916 03:21 PM, 12 Aug 2020
    отлично
  • https://t.me/clickhouse_ru
    @ARyndin #175917 03:26 PM, 12 Aug 2020
    Привет. Как заставить клиент переваривать inline комменты, которые начинаются с --? Всё что идёт после комента считается так же комментом, и запрос ломается. Пробовал ключи -m и -n
  • https://t.me/clickhouse_ru
    @mo1seev #175918 03:26 PM, 12 Aug 2020
    А как в КХ concat с пробелом запилить?
  • https://t.me/clickhouse_ru
    @mo1seev #175919 03:26 PM, 12 Aug 2020
    concat(A, “ “, B) не работает
  • https://t.me/clickhouse_ru
    @nyoroon #175920 03:27 PM, 12 Aug 2020
    что значит "не работает"?
  • https://t.me/clickhouse_ru
    @mo1seev #175921 03:27 PM, 12 Aug 2020
    А, туплю
  • https://t.me/clickhouse_ru
    @mo1seev #175922 03:27 PM, 12 Aug 2020
    ‘ ‘
  • https://t.me/clickhouse_ru
    @mo1seev #175923 03:27 PM, 12 Aug 2020
    Благодарочка
  • это с терминалом обычно связано, если копировать многострочник из условного notepad++, все ок

    host :) select --^J1 as one;

    SELECT 1 AS one

    ┌─one─┐
    │ 1 │
    └─────┘
  • https://t.me/clickhouse_ru
    e9a8a4ddf8c0 :) select 1
    :-] -- comment
    :-] ,2 as two;

    SELECT 1

    ┌─1─┐
    │ 1 │
    └───┘
    Если ручками набирать то тоже фигня выходит
  • это проблема шелла (баша например), не КХ... набирайте так и будет вам счастье

    select — (ctrl+v)(ctrl+j) 1;
  • @dj_mixer #175927 04:35 PM, 12 Aug 2020
    ну или вставляйте откуда нибудь
  • https://t.me/clickhouse_ru
    @den_crane #175928 04:47 PM, 12 Aug 2020
    cl -m

    🙂 select 1
    :-] --aaa
    :-] , 2 b
    :-] ;

    SELECT 1

    ┌─1─┐
    │ 1 │
    └───┘
  • https://t.me/clickhouse_ru
    @den_crane #175929 04:48 PM, 12 Aug 2020
    аа , и правда не работает
  • https://t.me/clickhouse_ru
    @den_crane #175930 04:49 PM, 12 Aug 2020
    но это сломали в 20х
  • https://t.me/clickhouse_ru
    clickhouse-obfuscator —help
    в мануале нет ничего
  • https://t.me/clickhouse_ru
    не пашет
  • https://t.me/clickhouse_ru
    похоже на вот это
  • https://t.me/clickhouse_ru
    @ARyndin #175934 05:19 PM, 12 Aug 2020
    в 19 пашет
  • Значит у вас терминал навроченный. С голым путти xterm через ctrl v, ctrl j все ок. Но вообще да, надо ридлайн чинить
  • https://t.me/clickhouse_ru
    @ARyndin #175936 06:13 PM, 12 Aug 2020
    так терминал навороченный или ридлайн сломали? 😝
  • https://t.me/clickhouse_ru
    @vermutius #175937 06:15 PM, 12 Aug 2020
    Joined.
  • И то и то. Т.е. есть воркараунд. Но работает с базовым терминалом
  • The Ctrl+V key combination invokes “verbatim insert.” This allows you to enter a representation of a key into what you're typing, instead of getting the effect of the key
  • https://t.me/clickhouse_ru
    @ARyndin #175940 06:22 PM, 12 Aug 2020
    да, эта штука работает как оказалось, просто alacritty не печатает некоторые непечатаемые символы, я думал это глюк
  • https://t.me/clickhouse_ru
    @ARyndin #175941 06:23 PM, 12 Aug 2020
    но воркароунд такой себе, так как цель это всё же копипастить запросы
  • Конечно работает, без самопального кода ридлайн это не починить, не никс-вей...
    Если пастите в базовый терминал все работает тоже.
  • https://t.me/clickhouse_ru
    @ARyndin #175943 06:24 PM, 12 Aug 2020
    базовый терминал это xterm?
  • @dj_mixer #175944 06:25 PM, 12 Aug 2020
    Ну да, путти хтерм запустите и вставьте , все ок
  • @dj_mixer #175945 06:26 PM, 12 Aug 2020
    Он вставит новые строки как ctrlJ и проглотит молча
  • @dj_mixer #175946 06:26 PM, 12 Aug 2020
    У меня тоже не работает на mobaxTerm, а в putty ok
  • https://t.me/clickhouse_ru
    насчёт путти не знаю, но сам по себе xterm не смог
  • Ну, там 100 настроек на это дело в каждом шелле. Заведите тикет, все равно боль
  • https://t.me/clickhouse_ru
    @ARyndin #175949 06:28 PM, 12 Aug 2020
    пасиб
  • https://t.me/clickhouse_ru
    @den_crane #175950 06:33 PM, 12 Aug 2020
    кмк проблемы у клиента начались как раз потому что readline заменили на replxx
  • @KciNKh #175951 06:55 PM, 12 Aug 2020
    Доброго всем.
    Может кто-то подсказать на сколько безопасно можно обновить CH кластер с 18.6.0 до 20.6?
    Пересмотрел все Backward Incompatible Change в changelog последовательно, но нет уверенности что можно обновить сразу на последнюю версию.
    Не изменился ли формат данных в файлах? Используются только ReplicatedMergeTree, Distributed, MATERIALIZED VIEW (ReplicatedAggregatingMergeTree/ReplicatedSummingMergeTree)
    Кластер из 4 шардов по 2 сервера каждый (8 серверов).
  • @khanze #175952 07:03 PM, 12 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    очень много изменений в джойнах, т.е. может оказаться что запрос теперь делает совсем не то (из-за any), и возращает 2 колонки вместо 4
    тестировать короче надо (Я тестирую минимум 6 месяцев на стейдже)

    в нескольких местах может стать сильно медленее (некоторые откатываются из-за этого)
  • https://t.me/clickhouse_ru
    @den_crane #175954 07:27 PM, 12 Aug 2020
    >Не изменился ли формат данных в файлах?
    нет. Появилась адаптивная гранулярность (mrk2 файлы), она будет на новых таблицах, и из-за нее вернутся будет нельзя (но можно выключить) , я выключаю
  • https://t.me/clickhouse_ru
    @den_crane #175955 07:29 PM, 12 Aug 2020
    все альтеры таблиц теперь через мутации -- поэтому возможно работать не будут совсем, если например в таблице тысячи партов
  • @KciNKh ↶ Reply to #175953 #175956 07:30 PM, 12 Aug 2020
    стейжинг может быть не кластером для такого тестирования или изменения в distributed существенные? *JOIN можно и подправить, главное данные не потерять и insert-ы не сломалась.
  • https://t.me/clickhouse_ru
    у меня стейджинг просто два шарда в двух контейнерах на одном сервере
  • https://t.me/clickhouse_ru
    @artemhnilov #175958 07:33 PM, 12 Aug 2020
    Кстати, очень не хватает в документации как раз вот таких мажорных изменений от версии к версии или за весь год, например. Даже если перечитать все CHANGES - это мало что дает для понимания, что конкретно изменилось, какие появились новые фичи и подводные камни...
  • @KciNKh ↶ Reply to #175957 #175959 07:35 PM, 12 Aug 2020
    спасибо за информацию. два тестовых шарда с текущей схемой БД на последней версии работают, их проще держать на актуальной версии, а вот сразу прыгнуть на 2 года продакшеном...
  • https://t.me/clickhouse_ru
    да, возможно. Но Яндексу скорее всего это не нужно, они видимо живут на стейблах и постоянно апгрейдятся.
    Альтинити что-то такое подобное ведет.
  • https://t.me/clickhouse_ru
    т.е. у вас приложение работает со свежим КХ ? Тогда значит все ОК.
  • https://t.me/clickhouse_ru
    @artemhnilov #175962 07:38 PM, 12 Aug 2020
    Можно хотя бы жирным текстом важные изменения отмечать в CHANGES
  • https://t.me/clickhouse_ru
  • 13 August 2020 (150 messages)
  • https://t.me/clickhouse_ru
    у меня работает
    смотрели в README замечания по grafana 7.x ?
  • https://t.me/clickhouse_ru
    что конкретно у вас отвалилось?
  • @982520055 #175968 02:53 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    повторю
    смотрели в README замечания по grafana 7.x ?
  • https://t.me/clickhouse_ru
    @BloodJazMan #175973 03:09 AM, 13 Aug 2020
    а блин точно ;( на странице в 2.0.2 в репозитории Grafana старый еще README ;(
    https://github.com/Vertamedia/clickhouse-grafana#grafana-7x-setup-notes

    so, for properly setup you need change configuration option

    [plugins]
    allow_loading_unsigned_plugins=vertamedia-clickhouse-datasource
    or setup environment variable

    GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=vertamedia-clickhouse-datasource
    GitHub - Vertamedia/clickhouse-grafana: Clickhouse datasource for grafana

    Clickhouse datasource for grafana. Contribute to Vertamedia/clickhouse-grafana development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @409944013 #175974 07:40 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @vitakor #175975 07:57 AM, 13 Aug 2020
    а какой оптимальный сценарий добавления шарда при росте данных? заполнился диск, нужно добавить шард, что тогда будет ключем для шарда, рандом будет стучаться во все шарды... что-то этот момент для меня неясен... и что обычно используют для автоскейла?
  • https://t.me/clickhouse_ru
    Шохарактерно, после того, как добавил поле и использовал его (инсертил новые строки с этим новым значением), не даёт использовать фильтр по этому полю, говорит
    Key expression contains comparison between inconvertible types: Enum16('hz' = 0, 'ga' = 1, 'bq' = 2, 'ym' = 3, 'adriver' = 4, 'sizmek' = 5, 'weborama' = 6, 'crm' = 7) and String inside src = 'dcm' (version 20.6.3.28 (official build))
  • https://t.me/clickhouse_ru
    @SergeyLossev #175977 08:22 AM, 13 Aug 2020
    Т.е. Enum8 был расширен полем 'dcm'

    В итоге WHERE по этому значению не работает напрямую
    SELECT *
    FROM db.tb
    WHERE ProjectID==7
    AND src=='dcm'

    И нужно делать инвертированный фильтр
    SELECT *
    FROM db.tb
    WHERE ProjectID==7
    AND not (src=='hz' OR src=='ga' OR src=='bq' OR src=='ym' OR src=='adriver' OR src=='sizmek' OR src=='weborama' OR src=='crm')

    Но ведь это же черезжопство...
    Явно какая-то ошибка
  • @341936611 #175978 08:32 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @scorp_dev_null #175979 08:36 AM, 13 Aug 2020
    Привет
    есть вопрос не совсем по кликхаусу но смежный.
    Я использую clickhouse как backend для graphite- clickhouse. В целом работает нормально но если в запросе используется summarize и по этому запросу достаточно много метрик то на выходе получается очень много маленьких query. Настолько много что даже за 5min может не успевает обработать.
    Я понимаю что вопрос скорее к разработчикам graphite- clickhouse, но может кто сталкивался с подобным?
  • https://t.me/clickhouse_ru
    @rjs45 #175980 08:59 AM, 13 Aug 2020
    Подскажите пожалуйста.
    Пытаюсь сделать запрос insert into table select from mysql(...)
    В мускуле порядка 40-50М Записей.
    Получаю ошибку
    Received exception from server (version 20.4.5):
    Code: 306. DB::Exception: Received from XXX.XXX.XXX.XXX:9000. DB::Exception: Stack size too large. Stack address: 0x7f6c9ec18000, frame address: 0x7f6c9f0160d0, stack size: 4202288, maximum stack size: 8388608.
    Query was cancelled.
    С чем может быть связано? На другом сервере такой запрос выполнялся нормально (примерно за 200 сек)
  • @341936611 #175981 09:09 AM, 13 Aug 2020
    Привет всем, подскажите плз, есть кликхаус в который пишем через Кафку. Если в сообщении ошибка и кликхаус не может его распарсить, то вся очередь встает. Если сделать скип сообщений, то такие будут просто теряться. Как лучше обрабатывать такие случаи?
  • https://t.me/clickhouse_ru
    GitHub - housepower/clickhouse_sinker: Easily load data from kafka to ClickHouse

    Easily load data from kafka to ClickHouse. Contribute to housepower/clickhouse_sinker development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @july_n #175983 09:32 AM, 13 Aug 2020
    Joined.
  • @OlegMajboroda #175984 09:35 AM, 13 Aug 2020
    Добрый день! А кто-нибудь пытался сбилдить Кликхаус для AARCH64 на redhat? Я следовал этой инструкции https://clickhouse.tech/docs/en/development/build-cross-arm/ (с попправкой на redhat), но на CC=clang-8 CXX=clang++-8 cmake . -Bbuild-arm64 -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-aarch64.cmake падает :(
  • https://t.me/clickhouse_ru
    @korennaya_n #175985 09:52 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @newsettler #175986 09:55 AM, 13 Aug 2020
    При реплицированной таблице, MV из неё в другую реплицированную надо создавать на всех нодах? Если не на всех, то как оно будет работать при отключении той, на которой создавали?
  • @ru108 #175987 10:04 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Xapa6apga #175988 10:34 AM, 13 Aug 2020
    Всем привет, а чисто случайно не у кого нет Access базы "Библиотека" ?)) Знакомая пытается закончить учебу )) если что по специальности не работает и работать не будет
  • @1355091987 #175989 10:37 AM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    решардинга из коробки нет
    добавление шарда это добавление "набора пустых реплик"
    вставлять через distributed таблицу медленнее
    поэтому просто выбираете сервера какие вам надо и на них вставляете напрямую
    выборка через distributed будет грузить на чтение те сервера на которых больше данных
  • https://t.me/clickhouse_ru
    вставлять напрямую, а читать через distributed ?
    в этом случае ZooKeeper не нужен, если я не буду автоматом реплицировать?
  • https://t.me/clickhouse_ru
    @netremo #175992 10:44 AM, 13 Aug 2020
    Всем привет. Столкнулся с оч непростой для меня задачей.

    есть таблица, в которой имеем набор данных:
    create table if not exists telemetry_common
    (
    src_id UInt16,
    param String,
    param_date DateTime('Europe/Moscow')
    )
    engine = MergeTree() PARTITION BY toYYYYMM(param_date) ORDER BY (param_date, src_id) SETTINGS index_granularity = 8192;

    в колонке param лежит json с данными вида (ключ это название какого-то параметра, а в значениях лежат вложенные категории с самими значениями):
    {
    "a_zone_temperature": {
    "100": 318.0,
    "0": 270.0,
    "1": 74.0,
    "2": 462.0,
    "3": 341.0,
    "4": 490.0
    },
    "b_zone_temperature": {
    "0": 270.0,
    "1": 74.0,
    "2": 462.0,
    }
    }

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

    это вообще возможно реализовать средствами клика?
    голову сломал
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #175980 #175993 11:03 AM, 13 Aug 2020
    Ответ нашелся. Спасибо поиску по чату.

    Проблема была в том, что существует материалка из целевой таблицы в эту же таблицу.
  • https://t.me/clickhouse_ru
    "автоматом реплицировать" значит вставлять сразу паралельно в несколько серверов?
    или имеется ввиду ReplicatedMergeTree?
    второй вариант подразумевает что вставляете в один сервер
    остальные докачивают вставленные данные обмениваясь названиями файлов с данными через Zookeeper
  • https://t.me/clickhouse_ru
    да, имел ввиду ReplicatedMergeTree
    понял... спасибо!
  • https://t.me/clickhouse_ru
    По умолчанию кх стучится во все шарды, не важно какой шардинг ключ.
  • https://t.me/clickhouse_ru
    https://clickhouse.tech/docs/en/sql-reference/functions/json-functions/#jsonextractfloatjson-indices-or-keys
    JSONExtractFloat пробовали? что не получается?
    JSON | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    о! так норм... спасибо 🙂
  • https://t.me/clickhouse_ru
    имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

    при записи в Distributed
    раскидывает по шардам в соответсвии с ключом шардирования
  • https://t.me/clickhouse_ru
    а 🙂
    ну тоже неплохо... осталось придумать алгоритм выбора шарда для записи
  • https://t.me/clickhouse_ru
    имеется ввиду ПРИ ЧТЕНИИ из Distributed таблицы стучится во все шарды

    при записи в Distributed
    раскидывает по шардам в соответсвии с ключом шардирования
  • https://t.me/clickhouse_ru
    А вам надо билдить самому? Кх ci собирает бинарники под arm
  • https://t.me/clickhouse_ru
    воот...так вот каким должен быть правильным ключ шардирования, если до этого писал только в один шард и он переполнился?
    по дате, ID... ?
  • 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
    дело вот в чём. мне нужен запрос вида:
    select toStartOfHour(param_date) as hour,
    any((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature
    from telemetry_common
    where param_date > today()
    and src_id = 125
    group by hour
    order by hour desc;

    но any заменить на avg

    вот пример того, что возвращает запрос выше:
    2020-08-13 14:00:00,"[('3',100),('4',103),('100',102),('0',98),('1',81),('2',95)]"
    2020-08-13 13:00:00,"[('3',102),('4',80),('100',86),('0',109),('1',99),('2',101)]"
    2020-08-13 12:00:00,"[('3',91),('4',83),('100',80),('0',101),('1',86),('2',83)]"
    2020-08-13 11:00:00,"[('3',110),('4',98),('100',101),('0',110),('1',96),('2',84)]"
    2020-08-13 10:00:00,"[('3',96),('4',80),('100',100),('0',110),('1',87),('2',107)]"
    2020-08-13 09:00:00,"[('3',92),('4',105),('100',96),('0',83),('1',108),('2',93)]"
    2020-08-13 08:00:00,"[('3',108),('4',95),('100',98),('0',93),('1',87),('2',82)]"

    как для каждого тупла посчитать среднее?
  • https://t.me/clickhouse_ru
    @501846356 #176009 11:24 AM, 13 Aug 2020
    Добрый день, подскажите пожалуйста, как откорректировать синтаксис запроса

    select * FROM table1
    any left join table2 using (column1)
    any left join table3 using (column2)

    чтобы он не приводил к ошибке DB::Exception: Multiple CROSS/COMMA JOIN do not support USING (version 20.3.10.75)?
    с самими таблицами все ок, по одной джойнятся без проблем (((
  • https://t.me/clickhouse_ru
    Нет решардинга из коробки.
  • https://t.me/clickhouse_ru
    нужен... думаю, поднял бы порог вхождения новых юзеров, хотя может оно и не надо
  • https://t.me/clickhouse_ru
    внутри каждой строки? arrayReduce('avg'
    или для всех строк?
  • https://t.me/clickhouse_ru
    спасибо кеп
  • https://t.me/clickhouse_ru
    SELECT
    hour,
    a_zone_temperature.1 AS category,
    avg(a_zone_temperature.2) AS avg_temp
    FROM (

    select toStartOfHour(param_date) as hour,
    any((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature
    from telemetry_common
    where param_date > today()
    and src_id = 125
    group by hour
    order by hour desc
    )
    GROUP BY hour, category;
  • https://t.me/clickhouse_ru
    any left join схлапывает левую и правую таблицы, вам правда нужен any? В 20х версиях кх его переделали и теперь надо писать semi чтобы получился результат как в 19м
  • https://t.me/clickhouse_ru
    в строках массив туплов:
    [[('3',100),('4',103),('100',102),('0',98),('1',81),('2',95)],[('3',83),('4',94),('100',107),('0',96),('1',91),('2',83)],[('3',85),('4',97),('100',81),('0',88),('1',108),('2',103)],[('3',83),('4',82),('100',102),('0',96),('1',90),('2',105)],[('3',104),('4',89),('100',106),('0',102),('1',109),('2',93)],[('3',105),('4',101),('100',102),('0',101),('1',104),('2',94)],[('3',106),('4',95),('100',95),('0',84),('1',93),('2',109)],[('3',80),('4',88),('100',105),('0',104),('1',87),('2',95)],[('3',95),('4',95),('100',100),('0',107),('1',106),('2',80)],[('3',83),('4',80),('100',107),('0',109),('1',84),('2',110)],[('3',84),('4',97),('100',109),('0',108),('1',108),('2',99)],[('3',108),('4',99),('100',102),('0',101),('1',104),('2',109)],[('3',103),('4',96),('100',102),('0',109),('1',106),('2',101)],[('3',90),('4',109),('100',89),('0',93),('1',109),('2',102)],[('3',82),('4',105),('100',92),('0',84),('1',97),('2',96)],[('3',82),('4',105),('100',90),('0',97),('1',93),('2',87)],[('3',102),('4',90),('100',95),('0',105),('1',86),('2',83)],[('3',88),('4',92),('100',92),('0',110),('1',83),('2',80)],[('3',93),('4',91),('100',90),('0',106),('1',104),('2',107)],[('3',97),('4',80),('100',95),('0',98),('1',100),('2',108)],[('3',91),('4',82),('100',105),('0',84),('1',99),('2',96)],[('3',92),('4',81),('100',106),('0',110),('1',100),('2',96)],[('3',107),('4',100),('100',82),('0',110),('1',102),('2',92)],[('3',105),('4',108),('100',98),('0',103),('1',108),('2',108)],[('3',101),('4',84),('100',93),('0',107),('1',88),('2',84)],[('3',103),('4',83),('100',98),('0',102),('1',98),('2',89)],[('3',83),('4',103),('100',96),('0',108),('1',95),('2',95)],[('3',94),('4',103),('100',93),('0',89),('1',104),('2',94)],[('3',93),('4',91),('100',95),('0',101),('1',95),('2',109)],[('3',101),('4',109),('100',84),('0',105),('1',102),('2',109)]]

    arrayReduce('avg', a_zone_temperature) не может примениться к туплам...
  • https://t.me/clickhouse_ru
    @netremo #176017 11:36 AM, 13 Aug 2020
    select toStartOfHour(param_date) as hour,
    groupArray((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature,
    arrayReduce('avg', a_zone_temperature)
    from telemetry_common
    where param_date > today()
    and src_id = 125
    group by hour
    order by hour desc;
  • Спасибо, а где их найти можно?
  • https://t.me/clickhouse_ru
    мне в "наследство" достались готовые таблицы с ENGINE = Join(ANY, LEFT, field), которые вязались к основной посредством joinGet несколько десятков раз, изза чего, как я предполагаю, запрос падал по нехватке оперативки. Пытаюсь заменить много joinGet на несколько Join... как понимаю, мне нужен классический LEFT JOIN, но без any оно дает ошибку Table has incompatible type of JOIN...
  • https://t.me/clickhouse_ru
    перепрочел документацию, вроде бы все правильно, any выберет первую попавшуюся (в моем случае - единственную) запись из второстепенной таблицы... осталось только понять ответ на изначальный вопрос - как сделать в одном селекте несколько any left join (((
  • @n1ght_f0x #176024 12:26 PM, 13 Aug 2020
    и сюда политика добралась..
  • При всём уважении, происходящее в Беларуси нельзя назвать нормой в принципе.
    И это не политота, хотя согласен, в этом чате она смотрится как минимум странно.
  • Чисто для справки, я сейчас в Минске
  • Аналогично, да. Ремоут, все дела.
    Простите, больная тема.
  • @dj_mixer #176028 12:32 PM, 13 Aug 2020
    добрый день, не было магической функции для вытаскивания всех distinct значений из LowCardinality колонки? (т.е. контент словаря)
  • https://t.me/clickhouse_ru
    @iam4happy #176029 12:39 PM, 13 Aug 2020
    Добрый день подскажите как можно посчитать сумму столбца?
  • https://t.me/clickhouse_ru
    @floxard #176030 12:39 PM, 13 Aug 2020
    select sum(column) from table where something?
  • https://t.me/clickhouse_ru
    @floxard #176031 12:40 PM, 13 Aug 2020
  • https://t.me/clickhouse_ru
    @iam4happy #176032 12:46 PM, 13 Aug 2020
    понял свою ошибку извиняюсь 🙂
  • https://t.me/clickhouse_ru
    select hour, a_zone_temperature.1 as k, avg(a_zone_temperature.2) as v
    from (
    select toStartOfHour(param_date) as hour,
    arrayJoin((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature
    from telemetry_common
    where param_date > today()
    and src_id = 125
    group by hour, param
    order by hour desc)
    group by hour, k
    order by hour, k;

    нашёл решение, спасибо за мысль
  • https://t.me/clickhouse_ru
    arrayReduce('avg', a_zone_temperature.1)
  • https://t.me/clickhouse_ru
    @den_crane #176035 12:50 PM, 13 Aug 2020
    arrayReduce('avg', a_zone_temperature.2)
  • https://t.me/clickhouse_ru
    эво как ... чувствую я намудрил )))
  • https://t.me/clickhouse_ru
    [('3',100) -- что такое 3? что такое 100?
  • https://t.me/clickhouse_ru
    @kalmychkov #176038 12:51 PM, 13 Aug 2020
    Привет. может уже было, но что-то не отыскал. Как убрать заданный при создании TTL у таблицы?
  • https://t.me/clickhouse_ru
    @netremo #176039 12:51 PM, 13 Aug 2020
    первый элемент в тупле это идентификатор устройства
  • https://t.me/clickhouse_ru
    @netremo #176040 12:51 PM, 13 Aug 2020
    второй значение
  • https://t.me/clickhouse_ru
    никак. Переделать например на 50 лет
  • https://t.me/clickhouse_ru
    https://t.me/clickhouse_ru/87607

    например https://clickhouse-builds.s3.yandex.net/12470/dc51a8db4859a89c8a806a3050e49592f97a4e55/clickhouse_build_check/report.html

    clang-10-aarch64 relwithdebuginfo none bundled unsplitted

    https://clickhouse-builds.s3.yandex.net/12470/dc51a8db4859a89c8a806a3050e49592f97a4e55/clickhouse_build_check/clang-10-aarch64_relwithdebuginfo_none_bundled_unsplitted_disable_False_binary/clickhouse
    Alexey Milovidov in ClickHouse не тормозит

    Можно исправить проблему, не дожидаясь сборки следующего релиза, установив ClickHouse из master. У нас есть готовые сборки почти на каждый коммит. Воспользоваться ими можно так: 1. Заходим в список коммитов: https://github.com/yandex/ClickHouse/commits/master 2. Находим самый верхний коммит с зелёной галочкой. Зелёная галочка означает, что все тесты прошли. 3. Нажимаем на зелёную галочку и находим там "ClickHouse build check". Жмём на Details. https://clickhouse-builds.s3.yandex.net/0/e7541f03ddc22f8e399fc21a1a7edbb6294db454/report.html 4. Здесь находим строчку gcc-7, relwithdebuginfo, none, bundled. В данном примере, она верхняя. 5. Копируем ссылку на пакет clickhouse-common-static: https://clickhouse-builds.s3.yandex.net/0/e7541f03ddc22f8e399fc21a1a7edbb6294db454/375561582/clickhouse-common-static_19.1.42_amd64.deb 6. Скачиваем, устанавливаем.

  • https://t.me/clickhouse_ru
    кмк вы идете в обратном направлении, ENGINE = Join как раз нужен для того чтобы джойны работали быстрее и не падали по памяти, покажите запрос который был и какая ошибка была
  • https://t.me/clickhouse_ru
    в документации ложь
  • https://t.me/clickhouse_ru
    не было. select a from group by a работает быстрее чем select distinct a
  • https://t.me/clickhouse_ru
    @den_crane #176046 01:03 PM, 13 Aug 2020
    обсуждали же на митапе такую функцию, и Николай Кочетов сказал что можно сделать.
    я понял кстати почему ее нет изначально, я тормоз, я знаю. Ее можно использовать и выдрать из .dict файлов все значения словаря только в случае когда нет where. Если where есть, то надо кроме .dict файлов читать еще и bin
  • аха, а в ГХ есть issue на такую оптимизацию
  • в 20.3 работает точно так же...
  • https://t.me/clickhouse_ru
    может оптимизация в процессорах появилась
  • а не, все верно, быстрее, я просто на нескольких колонках попробовал, логично что там ловить нечего
  • https://t.me/clickhouse_ru
    на нескольких колонках оптимизации lowcardinality не сделаны
  • @dj_mixer #176053 01:28 PM, 13 Aug 2020
    всем добрый день ещё раз (особенно тем у кого функциональщина головного мозга =) )

    есть таблица EAV в виде
    datadatetime, pk1, textualpk1, textualpk2, keycolumn, valuecolumn

    кардиналити на pk1 высокий, на key не очень.

    в целях отчетности она пивот-иться в вид:
    pk1, textualpk1, textualpk2, keycolumn, valuedate1, valuedate2, valuedate3

    , пока запрос такой.

    with [toDate('2020-04-06') , toDate('2020-04-07') , toDate('2020-04-08')] as "report_dates"
    select pk1, keycolumn,
    any("textualpk1") as "textualpk1" , -- very fat strings
    any("textual2pk1") as "textual2pk1" , -- very fat strings
    (groupArrayInsertAt(Null, 3)(tuple(toNullable("keycolumn")), toUInt32(indexOf("report_dates" , toDate("datadatetime")) -1)).1 as "valuecolumn")[1] as "2020-04-06" ,
    "param_values"[2] as "2020-04-07" ,
    "param_values"[3] as "2020-04-08"
    from keyvalues
    group by "pk1" , "keycolumn";

    когда строк комбинаций pk1*key очень много жрет память 125 млн строк на 22 ГБ в виду очень Жирных текстовых колонок.
    можно как нибудь умнее переписать?

    PS. в память словарь с pk1, textualpk1 не влезает. в нашей версии ssd_cache ещё не подвезли.
  • https://t.me/clickhouse_ru
    есть оптимизация -- group by использует индекс, может запрос вообще стримабл можно сделать?
  • #1 будет ли эта оптимизация работать при наличии where pk1 IN (xxx) — большой IN
    #2 чтобы эта оптимизация работала надо докинуть keycolumn в конец индекса, и все?
  • https://t.me/clickhouse_ru
    ну еще один баг https://github.com/ClickHouse/ClickHouse/issues/13675

    detach / attach помогает
  • https://t.me/clickhouse_ru
    не знаю
  • https://t.me/clickhouse_ru
    @iam4happy #176058 02:29 PM, 13 Aug 2020
    Подскажите как можно поменять Uint64 в string в DataGrip выдает timeout а без этого не выдает данные 🙁 Или как можно их вернуть?
  • https://t.me/clickhouse_ru
    @nyoroon #176059 02:31 PM, 13 Aug 2020
    toString(column)?
  • https://t.me/clickhouse_ru
    @nyoroon #176060 02:32 PM, 13 Aug 2020
    почему ты решил что проблема именно из-за типа?
  • https://t.me/clickhouse_ru
    @nyoroon #176061 02:32 PM, 13 Aug 2020
    таймаут пробовал увеличивать?
  • https://t.me/clickhouse_ru
    Это равносильно перезапуску КХ?
  • https://t.me/clickhouse_ru
    @501846356 #176063 02:33 PM, 13 Aug 2020
    Прошу прошения, что снова встреваю (( подскажите пожалуйста по синтаксису вложенных запросов, как правильно переписать пример

    SELECT
    t1.field1,
    (select t2.field2, t2.field3
    from table2 t2 where t2.field = t1.field1
    )
    FROM table1 t1

    чтобы он стал рабочим? ругается что не видит t1.field1 во вложенном запросе...
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    для начала поджойнить t1 на t2
  • 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
    а как быть? джойнить не вариант, там их 5 штук второстепенных таблиц... сейчас пробовали joinGet - падаем по нехватке оперативки
  • https://t.me/clickhouse_ru
    Внешние словари ?
  • https://t.me/clickhouse_ru
    а чем это лучше JoinGet, словари тоже загрузятся в оперативку и так же ее забьют... (по крайней мере в документации написано что очень похоже работает)
  • https://t.me/clickhouse_ru
    Технически, можно попробовать через union all и группировку, но затраты оперативки будут примерно одинаковые (наверное, точно не уверен)
  • https://t.me/clickhouse_ru
    а я не заметил про joinGet, я про коррелированный подздапрос отвечал.

    словари можно кешировать (и не грузить в память целиком), но вообще непоятно что вы делаете и почему вам нужен такой запрос что у вас в table2 ?
    это таблица фактов или словарь(размерность)? сколько там строк?
  • https://t.me/clickhouse_ru
    @501846356 #176075 02:59 PM, 13 Aug 2020
    и в основной таблице и во второстепенных - сотни миллионов строк. это попытка объединения нескольких "классических" таблиц в одну широкую
  • https://t.me/clickhouse_ru
    @Dabih #176076 03:03 PM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    это антипаттерн для КХ, не заработает, валите все в одну таблицу еще до КХ, на стадии ETL
  • https://t.me/clickhouse_ru
    сам я это понимаю, коллеги против. Спасибо Вам, буду биться дальше...
  • https://t.me/clickhouse_ru
    так либо так либо никак, выбирать-то не из чего.
  • @AlekseyO #176080 03:26 PM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @plp4k #176081 03:43 PM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @glebi0 ↶ Reply to #176079 #176082 04:16 PM, 13 Aug 2020
    А потом большую таблицу саму с собой джойнить? Или как составлять отчёт, если в нем нужны данные из нескольких таблиц
  • @752212300 #176083 04:22 PM, 13 Aug 2020
    Здравствуйте! Задача: Сырые события занимают много места. Решаю так - предагрегирую запросом и сливаю в другую таблицу. Запрос на чтение не сразу видит данные, булкинсертом вставленные. Что-то делаю не так? Как правильно?
  • @752212300 #176084 04:23 PM, 13 Aug 2020
    И, забыл, из таблицы с сырыми данными делаю удаление событий, по которым была сделана агрегация
  • https://t.me/clickhouse_ru
    ммм, а зачем джойнить?

    >, если в нем нужны данные из нескольких таблиц
    валите все в одну таблицу (широкую ) еще до КХ, на стадии ETL
    уже поджойненное как надо
  • https://t.me/clickhouse_ru
    @glebi0 ↶ Reply to #176085 #176086 04:28 PM, 13 Aug 2020
    Ясно, пока непонятно как там в etl джойнить)
  • https://t.me/clickhouse_ru
    ну как как, как все джойнят.
    У всех в этом чатике одна и таже проблема, как обогатить ивенты, если часть атрибутов приезжает позже.
  • @Dilemma #176088 04:31 PM, 13 Aug 2020
    Если используется Spark или MR - стандартно в скрипте Scala/или HiveQL аггрегировать данные, и вперёд 🙂 Заливать результат в денормализованную таблицу в CH
  • Если позже - то либо пересчитывать за предшествующий день/несколько дней, либо ждать, пока все таблицы заполнятся
  • https://t.me/clickhouse_ru
    @Shadilan #176090 04:48 PM, 13 Aug 2020
    Выключи кльяну
  • https://t.me/clickhouse_ru
    Классно было бы это паттерн в какой-нибудь доке рассмотреть
  • https://t.me/clickhouse_ru
    я это, канадский дба, без фантазии. Мне такое абсолютно неинтересно. Вот раид разломать, потом собрать, это ко мне.
  • А мой вопрос? Или он совсем за плинтусом?
  • https://t.me/clickhouse_ru
    инсерт в таблицу с каким движком сырые данные заливает?
    например есть Engine=Buffer который флашит данные в таблицу не сразу
    вставка в Distributed асинхронная, есть флаг который это меняет и т.д.
  • https://t.me/clickhouse_ru
    @den_crane #176095 05:18 PM, 13 Aug 2020
    >И, забыл, из таблицы с сырыми данными делаю удаление событий, по которым была сделана агрегация
    это все можно сделать с помощью Materialized View над таблицей с движком Engine=Null даже
  • ENGINE = MergeTree
  • И автоматическое удаление, чтобы диск не засорялся тоже можно?
  • https://t.me/clickhouse_ru
    >Запрос на чтение не сразу видит данные, булкинсертом вставленные.

    тогда такого быть не может. КХ возвращает управление инсерту когда все данные уже видны селектам
  • https://t.me/clickhouse_ru
  • @pklyuev #176100 06:10 PM, 13 Aug 2020
    Друзья, не подскажете, как правильнее вставить в КХ много данных, типа пару ТБ?
  • https://t.me/clickhouse_ru
    @orantius #176101 06:16 PM, 13 Aug 2020
    а insert не работает?
  • @pklyuev #176102 06:34 PM, 13 Aug 2020
    падает по памяти? может я чтото не так делаю
    Code: 240. DB::ErrnoException: Allocator: Cannot mremap memory chunk from 2.00 GiB to 16.00 EiB., errno: 12, strerror: Cannot allocate memory
  • https://t.me/clickhouse_ru
    как инсерт выглядит? Какой тип данных? Какой клиент используется?
  • @pklyuev #176104 06:57 PM, 13 Aug 2020
    clickhouse-client -d db -q 'insert into db.table_log format TabSeparated'
  • https://t.me/clickhouse_ru
    интересно, это 100% баг
    а версия КХ ?

    попробуйте
    clickhouse-client --input_format_parallel_parsing=0 -d db -q 'insert into db.table_log format TabSeparated'
  • @pklyuev #176106 07:02 PM, 13 Aug 2020
    Да, вроде сработало
    version 20.5.2.7
  • https://t.me/clickhouse_ru
    это неуловимый баг, который не удается воспроизвести потому что страдальцы не могут дать тестовый семпл с tsv
  • @pklyuev #176108 07:04 PM, 13 Aug 2020
    Я читал на github'e уже, увидел что закрыт и старый, и даже не попробовал с флагом
  • https://t.me/clickhouse_ru
    какие типы данных в таблице? DDL можете показать? А TSV большой? Строк в нем много? Они широкие?
  • @pklyuev #176110 07:14 PM, 13 Aug 2020
    У меня ошибка парсинга, файл битый — не могу сказать что точно отработало уже
    session_start DateTime64(3, 'Etc/UTC'),
    session_end DateTime64(3, 'Etc/UTC'),
    filter_ip IPv4,
    local_ipv4 Nullable(IPv4),
    local_ipv6 Nullable(IPv6),
    local_port UInt16,
    remote_ipv4 Nullable(IPv4),
    remote_ipv6 Nullable(IPv6),
    remote_port UInt16,
    dpi_protocol_code_list Array(UInt32)
    ) engine = ReplicatedMergeTree('/clickhouse/tables/{shard}/session_log.session_signature_log_local', '{replica}')
    partition by toStartOfDay(session_start)
    order by (session_start, filter_ip);
    размер 2ТБ, вот как раз сломан файл там слишком длинная первая строка выяснил только что
  • @valeriysimonov #176111 07:20 PM, 13 Aug 2020
    Joined.
  • если один к одному данные, можете через aggregatingMT джойнить. например maxState от колонок. И все прекрасно будет в одной таблице
  • @N0tNu11 #176113 08:25 PM, 13 Aug 2020
    Привет! Если join on mySuperString, но в select нет mySuperString, CH будет строить таблицу со строками или приведет к какому-то hash?
  • https://t.me/clickhouse_ru
    наличие hash-а не решает проблему коллизий, разруливается на уровне реализации hash-таблицы (сам join отдельно хранить строку не будет достанет из hash-мапы):
    std::unique_ptr<FixedHashMap<UInt8, Mapped>> key8;
    std::unique_ptr<FixedHashMap<UInt16, Mapped>> key16;
    std::unique_ptr<HashMap<UInt32, Mapped, HashCRC32<UInt32>>> key32;
    std::unique_ptr<HashMap<UInt64, Mapped, HashCRC32<UInt64>>> key64;
    std::unique_ptr<HashMapWithSavedHash<StringRef, Mapped>> key_string;
    std::unique_ptr<HashMapWithSavedHash<StringRef, Mapped>> key_fixed_string;
    std::unique_ptr<HashMap<UInt128, Mapped, UInt128HashCRC32>> keys128;
    std::unique_ptr<HashMap<UInt256, Mapped, UInt256HashCRC32>> keys256;
    std::unique_ptr<HashMap<UInt128, Mapped, UInt128TrivialHash>> hashed;
  • я скорее не про коллизии, а про размер данных при объединении. Т.е. стоит ли мне join on xxHash64(mySuperString) сделать руками или CH сам умеет это?
  • https://t.me/clickhouse_ru
    ^ специализации хэш таблиц в join-е для ключей разных размеров и типов
  • https://t.me/clickhouse_ru
    ну по хэшу руками вы получите join с коллизиями, которые как-то надо пофильтровать
  • логично. Спасибо
  • сделайте через send_logs_level='debug'
    заодно проверите сколько он ест памяти в обоих вариантах...
  • да, это обязательно попробую
  • https://t.me/clickhouse_ru
    @tzx1z #176121 09:07 PM, 13 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @sersad #176122 10:33 PM, 13 Aug 2020
    Joined.
  • 14 August 2020 (155 messages)
  • https://t.me/clickhouse_ru
    @bennyhils #176123 04:45 AM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @microcropoc #176124 06:30 AM, 14 Aug 2020
    Приветствую. Столкнулся с проблемой невозможности использования глобального подзапроса в локальном. Есть ли какая-нибудь возможность для исполнения подобного сценария?
  • https://t.me/clickhouse_ru
    @BloodJazMan #176125 06:40 AM, 14 Aug 2020
    а какую ошибку показывает?
    выглядит так что просто побоялись беспонечных циклических подзапросов из GLOBAL IN получить...
  • https://t.me/clickhouse_ru
    DB::Exception: Double-distributed IN/JOIN subqueries is denied (distributed_product_mode = 'deny'). You may rewrite query to use local tables in subqueries, or use GLOBAL keyword, or set distributed_product_mode to suitable value. (version 19.14.11.16 (official build))
  • https://t.me/clickhouse_ru
    @microcropoc #176129 06:50 AM, 14 Aug 2020
    если поменять на локальную, то всё ок. Но в реальном решении это не подходит, так как нужны данные из поля не по ключу шардирования.
  • Он же в ошибке пишет что нужно сделать, чтобы разрешить.
  • https://t.me/clickhouse_ru
    замените везде IN на GLOBAL IN
  • https://t.me/clickhouse_ru
    но производительность замедлится и нагрузка на CPU на ноде инициаторе запроса возрастет
  • https://t.me/clickhouse_ru
    @microcropoc #176133 06:53 AM, 14 Aug 2020
    да, этот вариант работает) Но хотелось бы как я описал
  • https://t.me/clickhouse_ru
    @microcropoc #176134 06:53 AM, 14 Aug 2020
    да да, замедлится
  • https://t.me/clickhouse_ru
    @BloodJazMan #176135 06:57 AM, 14 Aug 2020
    ну как вариант сделать Table3 - словарем
    и вытащить через WHERE dictGet
  • @a_sima10 #176136 07:01 AM, 14 Aug 2020
    всем привет, проблема при переключении на новый КХ 20.5.4.40. Перенес данные со старой версии 19.3.5 в новый, пересоздал таблицы в новом формате, поменял c
    ENGINE = MergeTree(EventDate, (View, Click, Get, EventDate), 8192)
    на
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY (View, Click, Get, EventDate)
    но при переключении приложения на новый КХ почему-то в некоторых колонках значения получаются очень большие

    это нормальные значения на старом КХ
    ┌──────────────g_date─┬─────profit─┐
    │ 2020-08-14 01:25:00 │ 1.06384226 │
    │ 2020-08-14 01:26:00 │ 1.14885028 │
    │ 2020-08-14 01:27:00 │ 1.06182347 │
    │ 2020-08-14 01:28:00 │ 0.03494053 │
    │ 2020-08-14 01:29:00 │ 0.25599383 │
    └─────────────────────┴────────────┘
    а это на новом
    ┌──────────────g_date─┬───────profit─┐
    │ 2020-08-14 01:27:00 │ 0.02914438 │
    │ 2020-08-14 01:28:00 │ 215.75539282 │
    │ 2020-08-14 01:29:00 │ 172.57422046 │
    └─────────────────────┴──────────────┘
    в чем может быть проблема с новым КХ?
  • сначала сравните сырые данные между старым и новым (count). совпадают ли они?
  • при переносе данных count совпадал
  • @dj_mixer #176140 07:23 AM, 14 Aug 2020
    ну тогда, последовательно упрощайте запрос и сравнивайте. там вообще много чего поменялось за это время...
  • @313177079 #176141 07:59 AM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @an_solo_77 #176142 08:14 AM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Hichnick #176143 08:15 AM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @bennyhils #176144 08:39 AM, 14 Aug 2020
    Друзья, привет
    Есть ли у кого-то опыт пролива flyway с помощью docker на Clickhouse?
    Применение популярного тут ПР https://github.com/flyway/flyway/pull/2640
    Yet another ClickHouse support by a-konyaev · Pull Request #2640 · flyway/flyway

    Based on #2166 and #1773 This one has some improvements in comparison to previous implementations: more accurate declaration of the schema table's columns (types and default values) &q...

  • https://t.me/clickhouse_ru
    Реквест уже успел протухнуть. Они поменяли внутреннее api.
  • https://t.me/clickhouse_ru
    Понятно почему не работает)
    Как-то прикрутить flyway возможно сейчас?
  • https://t.me/clickhouse_ru
    Они там сломали слегка внутреннее api.
  • https://t.me/clickhouse_ru
    @Kankasuiso #176148 09:28 AM, 14 Aug 2020
    К базам где нет update оно сейчас не дружелюбно.
  • https://t.me/clickhouse_ru
    @501846356 #176149 10:20 AM, 14 Aug 2020
    Добрый день! Подскажите пожалуйста, если я в одном select делаю два joinGet на одну и ту же таблицу - Клик ее загрузит в оперативку один или два (по числу joinGet) раза?
  • https://t.me/clickhouse_ru
    0 раз.
    Engine=join хранится в озу целиком. В этом идея, не надо грузить.
  • @faerics #176151 12:09 PM, 14 Aug 2020
    коллеги, привет!
    как сделать так, чтобы при вставке данных с помощью clickhouse-client в формате CSV пустые значения трактовались как значения по умолчанию?
    нашёл https://github.com/ClickHouse/ClickHouse/issues/5349, но у клиента настройки такой не вижу, и тип DateTime оно не вставляет.
    Версия клиента 20.6.3.28 (official build).
    Setting `input_format_csv_empty_as_default` · Issue #5349 · ClickHouse/ClickHouse

    The setting affects parsing data from CSV format. With current behaviour, if CSV has unquoted empty field, it is parsed as empty string (for String data type) or will lead to parse error (for other...

  • https://t.me/clickhouse_ru
    это про другое и там параметр сделали --input_format_defaults_for_omitted_fields
  • https://t.me/clickhouse_ru
    @den_crane #176153 01:12 PM, 14 Aug 2020
    --input_format_defaults_for_omitted_fields arg For input data calculate default expressions for omitted fields (it works for JSONEachRow, CSV and TSV formats).
  • https://github.com/flyway/flyway/pull/2640 - вот этот пулл вы используете?
    Yet another ClickHouse support by a-konyaev · Pull Request #2640 · flyway/flyway

    Based on #2166 and #1773 This one has some improvements in comparison to previous implementations: more accurate declaration of the schema table's columns (types and default values) &q...

  • https://t.me/clickhouse_ru
    @aweselow #176155 01:26 PM, 14 Aug 2020
    всем привет. технчиеский вопрос - словарь не подгружается, и в логах ничего. ни в ошибках ни в логе сервера.
    где искать причину?)
    словарь из мускл таблички
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    коннект и сервера кликхауса до mysql есть?

    SELECT ... FROM mysql()
    табличную функцию проверьте с этими же реквизитами
  • https://t.me/clickhouse_ru
    @aweselow #176158 01:30 PM, 14 Aug 2020
    работает
  • https://t.me/clickhouse_ru
    @BloodJazMan #176159 01:31 PM, 14 Aug 2020
    в логах grep -r dictionary.xml /var/log/clickouse/* посмотрите и окрестностях
  • https://t.me/clickhouse_ru
    @aweselow #176160 01:31 PM, 14 Aug 2020
    спс
  • https://t.me/clickhouse_ru
    @BloodJazMan #176161 01:32 PM, 14 Aug 2020
    разобрались?
  • https://t.me/clickhouse_ru
    @aweselow #176162 01:32 PM, 14 Aug 2020
    смотрю)
  • https://t.me/clickhouse_ru
    @BloodJazMan #176163 01:34 PM, 14 Aug 2020
    ну и SYSTEM RELOAD DICTIONARY
  • https://t.me/clickhouse_ru
    @aweselow #176165 01:35 PM, 14 Aug 2020
    что значит 8й?)
  • https://t.me/clickhouse_ru
    версия mysql 8 ?
  • https://t.me/clickhouse_ru
    @aweselow #176167 01:35 PM, 14 Aug 2020
    mariadb 10.4
  • https://t.me/clickhouse_ru
    @Xapa6apga #176169 01:36 PM, 14 Aug 2020
    всем привет, а не подскажите, как можно вывести rowNumberInAllBlocks()
    для группы?
    Грубо говоря, есть таблица
    id_user, tr_id, amount_tr
    мне нужно вывести
    id_user, number_of_transaction_for_user, amount_tr
  • https://t.me/clickhouse_ru
    @Xapa6apga #176170 01:37 PM, 14 Aug 2020
    есть какие-то возможности у кх, что бы в окне сделать?
  • https://t.me/clickhouse_ru
    посмотрел на картинку, просто вы еще не обращались к словарю, они lazy load
  • https://t.me/clickhouse_ru
    @aweselow #176172 01:38 PM, 14 Aug 2020
    оО не подумал)
  • https://t.me/clickhouse_ru
    @den_crane #176173 01:38 PM, 14 Aug 2020
    сделайте либо select либо dictget
  • https://t.me/clickhouse_ru
    groupArray / arrayEnumerate
  • https://t.me/clickhouse_ru
    @aweselow #176175 01:39 PM, 14 Aug 2020
    щас попробую)
  • https://t.me/clickhouse_ru
    @shchadnev #176176 01:41 PM, 14 Aug 2020
    Всем привет! Подскажите плз: при тестировании возникла ошибка
    Cannot reserve 1.00 MiB, not enough space
    При том что места на разделе с КХ еще 1 TB.
    Где может стоять какое то ограничение по потреблению?
    Развернуто в единственном экземпляре, не кластер
  • https://t.me/clickhouse_ru
    ошибку целиком можете показать?
    На каком разделе диска не смог и на каком свободно?
  • https://t.me/clickhouse_ru
    Что это за инструмент?
  • https://t.me/clickhouse_ru
    @aweselow #176179 01:43 PM, 14 Aug 2020
    DataGrip
  • https://t.me/clickhouse_ru
    @aweselow #176180 01:43 PM, 14 Aug 2020
    JetBrains DataGrip
  • https://t.me/clickhouse_ru
    2020-08-14T15:39:58.524+0300 [error] com.lightbend.lagom.internal.broker.kafka.KafkaSubscriberActor [sourceThread=application-akka.actor.default-dispatcher-32, akkaTimestamp=12:39:58.523UTC, akkaSource=akka://application/user/KafkaBackoffConsumer1-injirMsg/KafkaConsumerActor1-injirMsg, sourceActorSystem=application] - Topic subscription interrupted due to failure: [ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 243, host: 10.78.222.229, port: 8123; Code: 243, e.displayText() = DB::Exception: Cannot reserve 1.00 MiB, not enough space (version 20.6.3.28 (official build))
    ]
    2020-08-14T15:39:58.529+0300 [error] akka.actor.OneForOneStrategy [sourceThread=application-akka.actor.default-dispatcher-33, akkaTimestamp=12:39:58.524UTC, akkaSource=akka://application/user/KafkaBackoffConsumer1-injirMsg/KafkaConsumerActor1-injirMsg, sourceActorSystem=application] - ClickHouse exception, code: 243, host: 10.78.222.229, port: 8123; Code: 243, e.displayText() = DB::Exception: Cannot reserve 1.00 MiB, not enough space (version 20.6.3.28 (official build))
    ru.yandex.clickhouse.except.ClickHouseException: ClickHouse exception, code: 243, host: 10.78.222.229, port: 8123; Code: 243, e.displayText() = DB::Exception: Cannot reserve 1.00 MiB, not enough space (version 20.6.3.28 (official build))
    at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:58)
    at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:28)
    at ru.yandex.clickhouse.ClickHouseStatementImpl.checkForErrorAndThrow(ClickHouseStatementImpl.java:875)
    at ru.yandex.clickhouse.ClickHouseStatementImpl.getInputStream(ClickHouseStatementImpl.java:616)
    at ru.yandex.clickhouse.ClickHouseStatementImpl.executeUpdate(ClickHouseStatementImpl.java:215)
    at ru.yandex.clickhouse.ClickHousePreparedStatementImpl.executeUpdate(ClickHousePreparedStatementImpl.java:130)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
    at akka.stream.alpakka.slick.javadsl.Slick$.$anonfun$toDBIO$3(Slick.scala:372)
    at akka.stream.alpakka.slick.javadsl.Slick$.$anonfun$toDBIO$3$adapted(Slick.scala:371)
    at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:70)
    at slick.jdbc.SimpleJdbcAction.run(StreamingInvokerAction.scala:69)
    at slick.basic.BasicBackend$DatabaseDef$$anon$3.liftedTree1$1(BasicBackend.scala:275)
    at slick.basic.BasicBackend$DatabaseDef$$anon$3.run(BasicBackend.scala:275)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.Throwable: Code: 243, e.displayText() = DB::Exception: Cannot reserve 1.00 MiB, not enough space (version 20.6.3.28 (official build))
    at ru.yandex.clickhouse.except.ClickHouseExceptionSpecifier.specify(ClickHouseExceptionSpecifier.java:53)
    ... 16 common frames omitted
  • https://t.me/clickhouse_ru
    @abashkinl #176182 01:46 PM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @osurkov #176183 01:46 PM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    не понятно ((
    SELECT up.user_id,
    rowNumberInAllBlocks()+1,
    num,
    up.*
    FROM user_payments up ARRAY join arrayEnumerate(user_id) AS num
    WHERE up.user_id = 2232807
    and up.type ='payin'
    and up.status ='done'
    пишет, что должен быть array
  • https://t.me/clickhouse_ru
    да джавный стек трейс очень помог, в логе кх более подробно
  • https://t.me/clickhouse_ru
    @shchadnev #176186 01:47 PM, 14 Aug 2020
    посмотрю там
  • https://t.me/clickhouse_ru
    3 группы

    SELECT
    number % 3 AS g,
    number AS x
    FROM numbers(10)

    select g, x, i from (select g, groupArray(x) gx from (select number % 3 g , number x from numbers(10)) group by g) array join gx as x, arrayEnumerate(gx) as i
  • https://t.me/clickhouse_ru
    аааааа, понял, спасибо!
  • https://t.me/clickhouse_ru
    @abashkinl #176189 01:53 PM, 14 Aug 2020
    Привет! Подскажите, есть ли настройка, чтобы обойти следующее ограничение? В доках не нашёл.
    DB::Exception: Limit for rows to read exceeded, max bytes: 9.09 TiB, current bytes: 9.10 TiB
  • https://t.me/clickhouse_ru
    по умолчанию ограничения нет.

    --max_rows_to_read arg Limit on read rows from the most 'deep' sources. That is, only in the deepest subquery. When reading from a remote server, it is

    set max_rows_to_read =300
    select * from numbers(10000000) format Null
    DB::Exception: Limit for rows or bytes to read exceeded, max rows: 300.00, current rows: 10.00 million
  • https://t.me/clickhouse_ru
    А он платный? Сколько стоит? Смотрю, в загрузках 30-дневный триал. Что будет по их прошествии?
  • https://t.me/clickhouse_ru
    @aweselow #176192 01:54 PM, 14 Aug 2020
    проблема была - надо было добавить в атрибуты <null_value>Null</null_value> ))
  • https://t.me/clickhouse_ru
    в лс
  • https://t.me/clickhouse_ru
    В моём случае байтики, а не строки, но и то другое прибито гвоздями: DB::Exception: Setting max_bytes_to_read should not be changed. В любом случае, спасибо!
  • https://t.me/clickhouse_ru
    денег захотят
  • @dj_mixer #176196 02:13 PM, 14 Aug 2020
    добрый день, за последние пару дней в логах посыпались постоянные "Session expired" (wc-l по err-логу 36000 ) и таблицы уходят в readonly и возвращаются.
    При этом ЗК живой вполне.
    куда можно копать?

    2020.08.11 08:36:22.669140 [ 8046 ] {} <Error> schema.tablename: void DB::StorageReplicatedMergeTree::mutationsUpdatingTask(): Code: 999, e.displayText() = Coordination::Exception: Session expired (Session expired), Stack trace (when copying this message, always include the lines below):



    0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x1051b3a0 in /usr/bin/clickhouse
    1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x8f5172d in /usr/bin/clickhouse
    2. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int) @ 0xdeef818 in /usr/bin/clickhouse
    3. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xdeefe42 in /usr/bin/clickhouse
    4. ? @ 0xdf24221 in /usr/bin/clickhouse
    5. Coordination::ZooKeeper::list(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (Coordination::ListResponse const&)>, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0xdf1f68d in /usr/bin/clickhouse
    6. zkutil::ZooKeeper::getChildrenImpl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&, Coordination::Stat*, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0xdef7bd7 in /usr/bin/clickhouse
    7. zkutil::ZooKeeper::getChildrenWatch(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Stat*, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0xdefc01f in /usr/bin/clickhouse
    8. DB::ReplicatedMergeTreeQueue::updateMutations(std::__1::shared_ptr<zkutil::ZooKeeper>, std::__1::function<void (Coordination::WatchResponse const&)>) @ 0xdac42d8 in /usr/bin/clickhouse
    9. DB::StorageReplicatedMergeTree::mutationsUpdatingTask() @ 0xd7291e5 in /usr/bin/clickhouse
    10. DB::BackgroundSchedulePoolTaskInfo::execute() @ 0xcfe9415 in /usr/bin/clickhouse
    11. DB::BackgroundSchedulePool::threadFunction() @ 0xcfe9a32 in /usr/bin/clickhouse
    12. ? @ 0xcfe9b70 in /usr/bin/clickhouse
    13. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x8f757e7 in /usr/bin/clickhouse
    14. ? @ 0x8f73c33 in /usr/bin/clickhouse
    15. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    16. __clone @ 0xfe8cd in /usr/lib64/libc-2.17.so
    (version 20.3.11.97 (official build))
  • мутации на этой таблице никто не запускает, но есть куча старых мутаций (изза materialize ttl в мае). есть ли смысл их "почистить"
  • https://t.me/clickhouse_ru
    @rjs45 #176198 02:59 PM, 14 Aug 2020
    Подскажите, как кверить удаленный ms sql сервер?
    Поставили и запустили clickhouse-jdbc-bridge
    пытаюсь выполнить
    SELECT * FROM jdbc('jdbc:sqlserver://XXX.XXX.XXX:PPPP?...)
    говорит
    HTTP status code: 500 Server Error, body: No suitable driver found for jdbc:sqlserver://XXX.XXX.XXX:PPPP?...)

    Где взять этот драйвер? или может я что не так делаю?
  • проблема была в ЗК похоже из-за debug log, но это неточно
  • @dj_mixer #176201 03:43 PM, 14 Aug 2020
    вопрос теперь такой
    - вставка в distributed
    - не проходит на одном из шардов по лимиту партишнов в одном инсерте (иногда апп криво работает допустим)
    - distributed monitor пытается его вставить бесконечное количество раз и каждый раз файл явно переименовывается/пересоздается. как поймать плохой bin файл?
  • https://t.me/clickhouse_ru
    да вроде нет, имя файла не меняется

    https://github.com/ClickHouse/ClickHouse/issues/12530#issuecomment-658902526

    Started processing /var/lib/clickhouse/data/default/test12345d/default@chdw1%2D2%2Esde894:9000/1.bin
    Started processing /var/lib/clickhouse/data/default/test12345d/default@chdw1%2D2%2Esde894:9000/1.bin
    Started processing /var/lib/clickhouse/data/default/test12345d/default@chdw1%2D2%2Esde894:9000/1.bin
    Multiple sending data from a distributed table · Issue #12530 · ClickHouse/ClickHouse

    Two shards without replication, version CH 20.4.5.36. Create local Main_Tab tables Create a Distributed table for Main_Tab tables - Distr_main_tab Create a MaterializedView - MV and Tab - target ta...

  • https://t.me/clickhouse_ru
    @den_crane #176203 03:53 PM, 14 Aug 2020
    можно остановить обработку distributed типа как-то system distributed send stop
  • https://t.me/clickhouse_ru
    @den_crane #176204 03:54 PM, 14 Aug 2020
    и взять из лога из ошибки имя файла
  • https://t.me/clickhouse_ru
    на сайте MS скачать jdbc драйвер?

    https://github.com/ClickHouse/clickhouse-jdbc-bridge#overview
  • не пишет в логе имя файла... ошибка происходит при вставке в один из шардов только
  • https://t.me/clickhouse_ru
    дистрибьютид таблица пишет ошибку, она шардит до отсылки
  • там точно есть некая перезапись, потому что все даты модификации свежие... а тот файл валится с июня
    можно конечно убить вставки и дождаться пока останется только один, но эт долго и больно
  • https://t.me/clickhouse_ru
    SYSTEM STOP DISTRIBUTED SENDS [db.]<distributed_table_name>
  • https://t.me/clickhouse_ru
    @den_crane #176210 03:59 PM, 14 Aug 2020
    ищем в логе последнюю ошибку
  • https://t.me/clickhouse_ru
    @blkmrkt #176211 04:08 PM, 14 Aug 2020
    Как можно на существующей таблице отключить graphite_rollup? Или переписать секцию graphite_rollup в конфиге таким образом чтоб она ничего не трогала?
  • https://t.me/clickhouse_ru
    @blkmrkt #176212 04:11 PM, 14 Aug 2020
    Два дня бился с багом из-за которого пропадали метрики (стек bioyino, carbon-clickhouse, clickhouse`), и обнаружил что это КХ усреднял некоторые значения. Таблицы уже задефинированы с `graphite_rollup, и сервер отказывается запускаться когда я убираю эту секцию из конфига...
  • https://t.me/clickhouse_ru
    Всего пара таблиц, определены они вот так им образом:

    CREATE TABLE IF NOT EXISTS graphite.data (
    Path String,
    Value Float64,
    Time UInt32,
    Date Date,
    Timestamp UInt32
    ) ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup');

    Нужно как-то исправить или реинициализовать ENGINE без graphite_rollup.
  • https://t.me/clickhouse_ru
    так пропишите другие правила в graphite_rollup
  • https://t.me/clickhouse_ru
    можно просто заменить GraphiteMergeTree на MergeTree

    ) ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup');
    ) ENGINE = MergeTree(Date, (Path, Time), 8192);

    в .sql файле

    сами парты у всех движков одинаковые, движок влияет на мерж
  • простите, я тупил. я думал что надо смотреть логи самого хоста, но прилетали они с distributed ( from IP) другого хоста, там всех нашли и удалили. файлы не перезаписываются.

    теперь вопрос другого характера.
    файлы в distributed накапливаются и он не успевает всем раскидывать.
    поддержки в background_distributed_schedule_pool_size только с 20.3

    distributed_directory_monitor_batch_inserts=1 уже выставлено.

    что ещё можно предпринять безболезненно?
  • https://t.me/clickhouse_ru
    включать синхронный инсерт?
    --insert_distributed_sync arg If setting is enabled, insert query into distributed waits until data will be sent to all nodes in cluster.

    и инсертить более крупно?

    у вас во все ноды инсерт идет? distributed на всех не успевают?
  • >и инсертить более крупно?
    ну, это надо работать =)
    >включать синхронный инсерт?
    он более efficient? или затормозит апп примерно в похожем порядке?

    если разные таблицы в distributed на разных хостах вставлять - поможет? (есть 3-4 крупных). будет у каждой таблицы по потоку?
  • https://t.me/clickhouse_ru
    >>включать синхронный инсерт?
    >он более efficient? или затормозит апп примерно в похожем порядке?
    вроде выше параллелизм при insert_distributed_sync , я не уверен на 100% , я не пользуюсь вставкой в distributed

    >будет у каждой таблицы по потоку?
    да

    можно вставлять во все хосты во все таблицы и тогда они все будут писать
  • @dj_mixer #176220 04:37 PM, 14 Aug 2020
    ок, тогда сначала попробуем в несколько хостов, потом insert distributed sync, спасибо
  • https://t.me/clickhouse_ru
    можно объявить пустые правила:
    <graphite_rollup_null incl="rollup_scheme"></graphite_rollup_null>

    </yandex>

    ...
    ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/{shard}/graphite_reverse', '{replica}', 'graphite_rollup_null')
  • https://t.me/clickhouse_ru
    Ох благодарю, вроде помогло и запустилось!
  • https://t.me/clickhouse_ru
    Благодарю за ответ! Проблема была в том что просто поменять движ я не смог, и дропать сущестующие таблицы тоже нельзя
  • https://t.me/clickhouse_ru
    @metikovvadim #176224 05:40 PM, 14 Aug 2020
    Да, мы тоже натыкался на это, хотя 5тб данных уже несколько раз переписали за 2 года( смена партиционирования и грануляции)
  • https://t.me/clickhouse_ru
    @hrebet #176225 06:08 PM, 14 Aug 2020
    Добрый вечер) Подскажите пожалуйста, возможно ли используя SummingMergeTree со слиянием по дням, обеспечить пользователю выборку записей по диапазону дат с произвольным часовым поясом, либо такой движок здесь не вариант?)
  • https://t.me/clickhouse_ru
    @orantius #176226 06:33 PM, 14 Aug 2020
    можно хранить в utc дни и часы, преобразовывать фильтр на клиенте, почти для всех таймзон будет работать.
  • https://t.me/clickhouse_ru
    ну либо хранить для каждого часового пояса отдельно сумму за день, либо хранить с группировкой до часа (естественно не поможет для таймзон со смещением на 30 минут)
  • https://t.me/clickhouse_ru
    @hrebet #176229 06:52 PM, 14 Aug 2020
    Спасибо) 🙏
  • https://t.me/clickhouse_ru
    Привет!
    Допилил чуть PR, чтобы не было конфликтов с текущей веткой master.
    Проверил у себя в проекте - работает)
    Вообще мы уже довольно давно его используем - основные юзкейсы покрывает: migrate, info, repair, baseline.
  • https://t.me/clickhouse_ru
    @lakek #176231 07:34 PM, 14 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @lakek #176232 07:36 PM, 14 Aug 2020
    Всем привет.
    Запускаю CH в докере, ловлю ошибку:
    DB::Exception: Memory limit (total) exceeded: would use 1.87 GiB (attempt to allocate chunk of 135793963 bytes), maximum: 1.75 GiB: While executing AggregatingTransform (version 20.6.3.28 (official build))

    Хотя прокидываю кастомный конфиг (и вижу что изменения применяются в /var/lib/postgresql/data/preprocessed_configs/config.xml ), но почему-то не могу никак сменить это ограничение.
    Мой конфиг такой:

    <yandex>
    <users>
    <default>
    <max_server_memory_usage>4000000000</max_server_memory_usage>
    </default>
    </users>

    <profiles>
    <default>
    <max_bytes_before_external_group_by>3000000000</max_bytes_before_external_group_by>
    <max_memory_usage>4000000000</max_memory_usage>
    </default>
    </profiles>

    </yandex>
  • https://t.me/clickhouse_ru
    @lakek #176233 07:39 PM, 14 Aug 2020
    всего 400 млн строк в таблице, на которую делаю select с group by и order by
  • Сколько весит?
  • https://t.me/clickhouse_ru
    @lakek #176235 07:40 PM, 14 Aug 2020
    волюмы прокидываю так:
    volumes:
    - ./chdb:/var/lib/clickhouse
    - ./chlog:/var/log/clickhouse-server
    - ./chconf/chconf.xml:/etc/clickhouse-server/config.d/chconf.xml
  • https://t.me/clickhouse_ru
    @lakek ↶ Reply to #176234 #176236 07:40 PM, 14 Aug 2020
    на диске 7ГБ вроде бы
  • Норм
  • https://t.me/clickhouse_ru
    @lakek #176238 07:41 PM, 14 Aug 2020
    первый раз решил в бигдату поиграть, а тут сразу такое) помогите куда копать, я уже ишью переворошил в репе )
  • select * from system.settings s where name like '%memory%';

    тут все лимиты, проверьте своим пользователем
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @lakek #176241 07:46 PM, 14 Aug 2020
    не применилось походу
  • https://t.me/clickhouse_ru
    @lakek #176242 07:46 PM, 14 Aug 2020
    у меня другое значение даже
  • https://t.me/clickhouse_ru
    профили пользователей в users.xml
    max_server_memory_usage -- не пользовательский параметр
  • https://t.me/clickhouse_ru
    @lakek #176244 07:47 PM, 14 Aug 2020
    max_server_memory_usage
    Ограничивает объём оперативной памяти, используемой сервером ClickHouse. Настройка может быть задана только для профиля default.
  • https://t.me/clickhouse_ru
    @lakek #176245 07:47 PM, 14 Aug 2020
    из доки
  • https://t.me/clickhouse_ru
    @lakek #176246 07:47 PM, 14 Aug 2020
    я запутался, покажите, пожалуйста, кто-нибудь свой рабочий конфиг с настройкой чего-нибудь похожего и скажите куда именно вы его в докере прокидывайте(
  • https://t.me/clickhouse_ru
    @den_crane #176247 07:48 PM, 14 Aug 2020
    хаха, лажа в доке как всегда
  • https://t.me/clickhouse_ru
    да все путаются, за пару лет разберетесь
  • https://t.me/clickhouse_ru
    @lakek #176249 07:53 PM, 14 Aug 2020
    кек )
  • https://t.me/clickhouse_ru
    @lakek #176250 07:55 PM, 14 Aug 2020
    вынес на верхний уровень, не помогло )
  • https://t.me/clickhouse_ru
    @lakek #176251 07:55 PM, 14 Aug 2020
    ещё и по ходу дела словил: DB::Exception: Timeout exceeded: elapsed 5.013 seconds, maximum: 5: While executing MergeTreeThread (version 20.6.3.28 (official build))
  • это через табикс чтоли?
  • https://t.me/clickhouse_ru
    @lakek #176253 08:14 PM, 14 Aug 2020
    Да
  • https://t.me/clickhouse_ru
    @lakek #176254 08:14 PM, 14 Aug 2020
    Не нужно его использовать? Я совсем новичок если что
  • там наверху справа есть settings
  • @n1ght_f0x #176256 08:15 PM, 14 Aug 2020
    поменяйте значение в поле max execution time на нужное вам
  • @n1ght_f0x #176257 08:16 PM, 14 Aug 2020
    ну и внизу нажмите apply
  • https://t.me/clickhouse_ru
    @lakek #176258 08:16 PM, 14 Aug 2020
    🤦‍♂ Спасибо, попробую!
    Объем памяти он тоже может выставлять сам?
  • @n1ght_f0x #176259 08:16 PM, 14 Aug 2020
    нет)
  • @n1ght_f0x #176260 08:16 PM, 14 Aug 2020
    просто этот таймаут это его ограничение)
  • https://t.me/clickhouse_ru
    @lakek #176261 08:17 PM, 14 Aug 2020
    А как память победить? Я так и не понял, вынес на верхний уровень настройку и ничего не поменялось
  • Тут я уже не помогу) это серверная настройка
  • @n1ght_f0x #176263 08:20 PM, 14 Aug 2020
    возможно поможет
    https://github.com/ClickHouse/ClickHouse/issues/2799
    clickhouse-server memory settings not applied · Issue #2799 · ClickHouse/ClickHouse

    Hello, We installed clickhouse-server on debian using the official source, and the version is latest(I guess) $ aptitude show clickhouse-server Package: clickhouse-server Version: 1.1.54390 New: ye...

  • https://t.me/clickhouse_ru
    @alexey_laptev #176264 08:21 PM, 14 Aug 2020
    Выделить 4-8 гб, так проще
  • https://t.me/clickhouse_ru
    какая версия КХ?
  • https://t.me/clickhouse_ru
    @lakek ↶ Reply to #176265 #176266 08:48 PM, 14 Aug 2020
    version 20.6.3.28 (official build)
  • https://t.me/clickhouse_ru
    @lakek #176267 08:49 PM, 14 Aug 2020
    services:
    clickhouse:
    container_name: ch_server
    image: yandex/clickhouse-server
  • https://t.me/clickhouse_ru
    @lakek #176268 08:50 PM, 14 Aug 2020
    вот такой конфиг прокинул:
    <yandex>
    <max_server_memory_usage>4500000000</max_server_memory_usage>
    </yandex>
  • https://t.me/clickhouse_ru
    т.е. в preprocessed_configs это значение появилось? /var/lib/postgresql/data/preprocessed_configs/config.xml
  • https://t.me/clickhouse_ru
    @lakek #176270 08:51 PM, 14 Aug 2020
    да, 100%, сейчас проверил
  • https://t.me/clickhouse_ru
    @lakek #176271 08:52 PM, 14 Aug 2020
    могу запастебинить то как это делаю, чтоб воспроизвести
  • https://t.me/clickhouse_ru
    в логе пишется при старте вот так

    <Information> Application: Setting max_server_memory_usage was set to 56.53 GiB (62.81 GiB available * 0.90 max_server_memory_usage_to_ram_ratio)

    что у вас?
  • https://t.me/clickhouse_ru
    @lakek #176273 08:54 PM, 14 Aug 2020
    2020.08.14 20:50:30.344617 [ 1 ] {} <Information> Application: Setting max_server_memory_usage was lowered to 1.75 GiB because the system has low amount of memory. The amount was calculated as 1.94 GiB available * 0.90 max_server_memory_usage_to_ram_ratio
  • https://t.me/clickhouse_ru
    @lakek #176274 08:54 PM, 14 Aug 2020
    16ГБ RAM, macos
  • в докере значит ограничение
  • https://t.me/clickhouse_ru
    @lakek #176276 08:55 PM, 14 Aug 2020
    хм, точно
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @lakek #176278 08:56 PM, 14 Aug 2020
    MEMORY By default, Docker for Mac is set to use 2 GB runtime memory, allocated from the total available memory on your Mac
  • https://t.me/clickhouse_ru
    @lakek #176279 08:57 PM, 14 Aug 2020
    спасибо что помогли докопаться до истины, пойду поменяю и рестарту докер
  • https://t.me/clickhouse_ru
    @paveltyavin #176280 09:20 PM, 14 Aug 2020
    как получить индекс в функции arrayFilter ?
  • https://t.me/clickhouse_ru
    SELECT arrayFilter((i, v) -> (v > 0), arrayEnumerate(arr), [3, 3, 3, -2] AS arr)
    [1,2,3]
  • https://t.me/clickhouse_ru
    @paveltyavin #176282 09:49 PM, 14 Aug 2020
    спс
  • https://t.me/clickhouse_ru
    @den_crane #176283 09:50 PM, 14 Aug 2020
    чаще всего индекс не нужен, и лучше выкрутится без него, потому что для лямбд создается копия массива
  • https://t.me/clickhouse_ru
    @den_crane #176284 09:51 PM, 14 Aug 2020
    т.е. лучше не делать -> arr[ ... ]
  • 15 August 2020 (45 messages)
  • https://t.me/clickhouse_ru
    group by в памяти хеш таблицу создает для каждой уникальной комбинации полей
    насколько высоко кардинальные данные у вас там в GROUP BY ?
  • https://t.me/clickhouse_ru
    @414139800 #176288 06:50 AM, 15 Aug 2020
    Добрый день, подскажите пожалуйста, в каком релизе появится фикс дефекта https://github.com/ClickHouse/ClickHouse/pull/8911 ? Казалось бы проблема довольно серьезная - пароли от реплик в логах, рарзмеры названий директорий могут превышать 255 символов, что делает невозможным создание дата файлов на ext4, а баг почему то не считается приоритетным.
    Changed format for path in replicas by millb · Pull Request #8911 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @BloodJazMan #176289 06:55 AM, 15 Aug 2020
    смотрите в pull request в merge commit
    дальше в тэги
    как только видите -stable или -lts значит это опубликованная версия и она есть на docker/репозиториях
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @BloodJazMan #176291 06:56 AM, 15 Aug 2020
    в 20.3 и выше уже есть
  • https://t.me/clickhouse_ru
    В докере версии 20.3.13.127 проблема воспроизводится. Названия директорий генерятся в старом формате.
  • https://t.me/clickhouse_ru
    @414139800 #176293 07:34 AM, 15 Aug 2020
    Есть стенд где стоит сервер версии 20.5.4.40 там тоже самое- пароли в именах каталогов и их названия почти 250 символов
  • https://t.me/clickhouse_ru
    ну тогда стоит написать в тикете и @alexey-milovidov
    в комментарии упомянуть на github

    только сделайте docker-compose.yaml и gist.github.com с воспроизведением проблемы
    чтобы точно можно было убедиться
  • Здравствуйте! Поставил время 1 минуту. Но, данные из таблицы очищаются гораздо позже
  • @752212300 #176296 11:43 AM, 15 Aug 2020
    и еще, когда удаляются данные, материализованная вьюха тоже сбрасывается
  • @752212300 #176297 11:44 AM, 15 Aug 2020
    или я уже гоню...
  • https://t.me/clickhouse_ru
    Вообще не понимаю о чем вы. Пример покажите какие запросы выполняете.
  • https://t.me/clickhouse_ru
    под словом "удаляются данные" имеется ввиду DROP TABLE?
  • https://t.me/clickhouse_ru
    Add setting for a new format of distributed parts by alesapin · Pull Request #9653 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @den_crane #176301 11:50 AM, 15 Aug 2020
    use_compact_format_in_distributed_parts_names
  • TTL для таблицы
  • https://t.me/clickhouse_ru
    Ttl раз в сутки удаляет. Это в доке описано
  • А выражение которое d + INTRVAL?
  • https://t.me/clickhouse_ru
    Выражение это раз в 24 часа проверяется
  • кстати вопрос такой, по ГХ не совсем понял, что это настройка на самом деле что дает? т.е. какая разница между 1 и 0?
  • https://t.me/clickhouse_ru
    Это настройка использовать или нет фичу
    https://github.com/ClickHouse/ClickHouse/pull/8911
    Changed format for path in replicas by millb · Pull Request #8911 · ClickHouse/ClickHouse

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

  • А в чем смысл тогда задать меньше сукток?
  • https://t.me/clickhouse_ru
    TTL парезаписывает весь парт целиком. Это очень тяжелая операция. Смысл ее делать чаще. Вот молотили диск 2 часа и можно снова начинать потому что опять записи устарели и снова мержить 2 часа.

    Вы чего хотели-то? Все намного проще делается
  • ну вопрос, а в чем сермяжная правда этой фичи? чтобы лечить это (https://github.com/ClickHouse/ClickHouse/issues/6402) или ещё где то помогает?
  • https://t.me/clickhouse_ru
    Чтобы убрать(скрыть) пароли из логов (имен файлов)
    https://t.me/clickhouse_ru/176288
  • https://t.me/clickhouse_ru
    @den_crane #176312 12:11 PM, 15 Aug 2020
    И была проблема со сменой паролей
  • https://t.me/clickhouse_ru
    @den_crane #176313 12:12 PM, 15 Aug 2020
    Пароль меняется и файлы которые еще дослались застревают, потому что парль уже подходит
  • ок, а если включить её когда в distributed папке есть бины, они допосылаются после рестарта? или руками надо будет перекинуть?
  • https://t.me/clickhouse_ru
    Это не знаю
  • Хотел так: события падают в мерджетрее таблицу. Но она не помещается на диск. Поэтому ее предагрегировать, и складывать предагрегированную события в другую таблицу. А первую подчищать
  • https://t.me/clickhouse_ru
    Я вам намекал уже на engine=Null
  • @752212300 #176318 12:17 PM, 15 Aug 2020
    Да, но я тупой. Можно, как-то поразвернутей намекнуть, плиз
  • https://t.me/clickhouse_ru
    Вам первая таблица вообще нужна? Селекты из нее делаются? Или только агрегированная нужна?

    MV это триигер и он получает данные от команды insert поэтому у первой таблицы можно сделать engine=Null и все будет работать.
  • @752212300 #176320 12:23 PM, 15 Aug 2020
    Первая типа приемник, сама по себе не нужна
  • https://t.me/clickhouse_ru
    Ну вот замените ее движок просто на Null
  • @752212300 #176322 12:23 PM, 15 Aug 2020
    Спасибо!
  • https://t.me/clickhouse_ru
    @den_crane #176323 12:24 PM, 15 Aug 2020
    И можно использовать input function будет тоже самое только текст агрегации можно вписать в insert и не создавать mv
  • https://t.me/clickhouse_ru
    @den_crane #176324 12:25 PM, 15 Aug 2020
    И тогда инсертить прямо в агрегированную таблицу
  • https://t.me/clickhouse_ru
    @artem_v_bochkov #176325 04:12 PM, 15 Aug 2020
    Всем привет.
    Регулярно возникает проблема с переименованием таблиц.

    Есть CH версии 20.5.4. Есть таблица MergeTree. В неё каждый час загружается текущее состояние данных из mysql - таблица выгружается полностью, так как по ней в мускуле идёт большое количество апдейтов.
    Чтобы для пользователей кликхауса таблица не моргала, скрипт перегрузки данных делает вот так:
    1) Данные из TSV грузит в {table}_new;
    2) Как только данные влились, делает рокировку: RENAME TABLE {table} TO {table}_old, {table}_new TO {table};
    3) DROP TABLE {table}_old;
    Проблема в том, что по факту в 2/3 случаев получается очень плохо:
    - целевая таблица мигает - исчезает на сотни секунд;
    - иногда вообще валится ошибка WRITE locking attempt on "{table}_new" has timed out! (120000ms) Possible deadlock avoided. Client should retry. IN:RENAME TABLE {table} TO {table}_old, {table}_new TO {table}

    Увеление lock_acquire_timeout ни к чему не привело - в большей части случаев RENAME всё равно не успевает выполниться, плюс целевая таблица оказывается невидна на время куполнения RENAME.
    Судя по system.query_log у нас нет запросов, которые выполнялись бы более 30 секунд.
    Сама по себе таблица, на которой происходит проблема - небольшая, буквально 20ГБ в Clickhouse.

    Собственно вопросы:
    1) Что можно еще попробовать, чтобы решить проблемы с а) видимостью таблицы во время RENAME б) больщим временем выполнения RENAME?
    2) Возможно, схема с RENAME TABLE вообще не рабочая, и не надо пытаться сейчас реашать проблему из предыдущего пункта, а есть работающие устоявшиеся практики для полной перегрузки таблиц?
  • https://t.me/clickhouse_ru
    @nur_b111 #176326 04:54 PM, 15 Aug 2020
    Joined.
  • @osipov_evgeny #176327 04:56 PM, 15 Aug 2020
    Joined.
  • @lodthe #176328 05:02 PM, 15 Aug 2020
    Joined.
  • @1019316538 #176329 06:17 PM, 15 Aug 2020
    скажите пожалуйста, что значит
    PARTITION BY tuple()
  • https://t.me/clickhouse_ru
    @orantius #176330 06:21 PM, 15 Aug 2020
    значит одну партицию на таблицу
  • @1019316538 #176331 06:23 PM, 15 Aug 2020
    спасибо!
  • 16 August 2020 (32 messages)
  • @1345402120 #176334 01:38 AM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    попробуйте alter table ... replace partition ... from ...

    https://gist.github.com/den-crane/521975b5333c5dc7059bed4030f62f94

    до 19.14 rename был атомарный (с global lock) и ваша схема работала, но иногда это приводило к дедлоку с зависанием КХ, сейчас пилится Engine=Atomic, но видимо еще не готов.
  • @776585111 #176339 04:25 AM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @andrecpc #176340 04:33 AM, 16 Aug 2020
    Joined.
  • @1137065477 #176341 04:41 AM, 16 Aug 2020
    Joined.
  • @1285391492 #176342 04:47 AM, 16 Aug 2020
    Joined.
  • @1184114052 #176343 05:50 AM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @Igorlamerger #176348 09:20 AM, 16 Aug 2020
    Всем доброго дня, скажите а в чем циммес: при селектах UUID принимается нормально в where при инсертах, тоже, но вот при update надо toUUID это как ??? =)))
  • https://t.me/clickhouse_ru
    @andrey_romanov #176350 01:01 PM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    скорее всего просто не доделано
  • https://t.me/clickhouse_ru
    Да, вероятно, ибо на гите есть об этом еще в 18году
  • @Skipper81 #176354 03:29 PM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @mikaelyan_artur #176358 05:06 PM, 16 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @nur_b111 #176364 06:25 PM, 16 Aug 2020
    Всем привет. Может ли кто-нибудь подсказать, есть таблицы созданные на движке ReplacingMergeTree и, когда я делаю select из одной таблицы вместе с 2 ANY LEFT OUTER JOIN, то идет очень большая нагрузка на диск. Кстати, данный селект запускается каждые 30 минут
  • https://t.me/clickhouse_ru
    из за чего такая большая нагрузка на диск? при том, что результат запроса содержит максимум 600 записей
  • https://t.me/clickhouse_ru
    какая версия КХ? результат запроса правильный? начиная с 20 ANY действует на левую и правую таблицы
  • https://t.me/clickhouse_ru
    результат запроса верный
  • https://t.me/clickhouse_ru
    и сколько записей в исходных таблицах?
  • @133452245 #176369 06:36 PM, 16 Aug 2020
    А почему mv на таблицу где String заменены на int функцией toInt64orZero вечит почти в 2 раза больше? toInt64orZero использует NULL?
    .inner.events_mv,47.21
    events,28.59
  • https://t.me/clickhouse_ru
    в основной 600 при where, к нему добавленные 2 в общем кол-ве содержат 4.7KK, 1KK
  • https://t.me/clickhouse_ru
    т.е. надо как-то фильтровать ту в которой 4.7кк, КХ не использует индексы для джойна и грузит все правые таблицы целиком в память.
  • https://t.me/clickhouse_ru
    попробовал отфильтровать 2 таблицы при JOIN-е, повлияет ли это на скорость выборки?
  • https://t.me/clickhouse_ru
    @nur_b111 #176374 06:47 PM, 16 Aug 2020
    без данного изменения выполнилось за "3 s 569 ms", при добавленных фильтрах- "18 s 18 ms"
  • https://t.me/clickhouse_ru
    create table L(A Int64) Engine=MergeTree order by A;
    insert into L select number from numbers(3);

    create table R(A Int64) Engine=MergeTree order by A;
    insert into R select number from numbers(3000000);

    select count() from L any left join R using A
    --
    3

    Elapsed: 0.224 sec. Processed 3.00 million rows, 24.00 MB

    select count() from L any left join (select * from R where A in (select A from L)) R1 using A;
    --
    3

    Elapsed: 0.004 sec. Processed 8.20 thousand rows, 65.56 KB
  • https://t.me/clickhouse_ru
    ок, понял, спасибо
  • @1019316538 #176377 07:30 PM, 16 Aug 2020
    скажите пожалуйста, вот этот вывод информации , после выполнения запроса:
    Elapsed: 0.004 sec. Processed 8.20 thousand rows, 65.56 KB
    можно ли включить его вывод в output на других клиентах?
  • https://t.me/clickhouse_ru
    @den_crane #176378 07:41 PM, 16 Aug 2020
    можно, в тех которые умеют.
    Есть параметр send_progress_in_http_headers и в http хедерах прилетают значения

    curl -vv 'http://localhost:8123/?send_progress_in_http_headers=1' --data-binary @testa3.sql

    < X-ClickHouse-Progress: {"read_rows":"24 996 720","read_bytes":"204755840","total_rows":"38 308 864"}
  • @1019316538 #176379 07:51 PM, 16 Aug 2020
    спасибо!
  • @maxulan #176382 09:06 PM, 16 Aug 2020
    Не могу найти в CHANGELOG.md - в какой версии появилась role-based SQL workflow для управления правами доступа пользователей?
  • https://t.me/clickhouse_ru
    20.3-20.4
  • https://t.me/clickhouse_ru
    @sergey4324324324 #176384 10:40 PM, 16 Aug 2020
    Joined.
  • 17 August 2020 (337 messages)
  • @1265352525 #176385 12:42 AM, 17 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @nukekz #176387 04:48 AM, 17 Aug 2020
    Joined.
  • @orlan_sar #176388 06:08 AM, 17 Aug 2020
    Привет всем! Хочу группировать даты по недельно. Как изменить день начала недели, например: неделя начинается со вторника, а не с понедельника ? toStartOfWeek
  • https://t.me/clickhouse_ru
    обернуть в addDays
  • @n1ght_f0x #176390 06:10 AM, 17 Aug 2020
    AddDays(toStartOfWeek(date), 1)
  • @orlan_sar #176391 06:28 AM, 17 Aug 2020
    Спасибо
  • https://t.me/clickhouse_ru
    @Kerigan #176392 06:32 AM, 17 Aug 2020
    Коллеги, привет! После обновления на version 20.6.3 с version 20.5.2.7 перестали работать внешние ODBC словари
    2020.08.17 06:24:10.692951 [ 59293 ] {} <Error> ExternalDictionariesLoader: Could not load external dictionary 'default.dict_competitor_price', next update is scheduled at 2020-08-17 06:34:10: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = No message received, Stack trace (when copying this message, always include the lines below):
    Кто-нибудь сталкивался?
  • @1369262346 #176393 07:21 AM, 17 Aug 2020
    Joined.
  • @khanze #176394 07:22 AM, 17 Aug 2020
    Коллеги, привет!
    Недавно пользуюсь этой бд и возник такой вопрос. Возможно ли сделать уникальной колонку с типом данных String?
  • как таковой уникальности нет в кх
  • если опишите какие преследуете цели, то возможно подскажут как лучше сделать
  • https://t.me/clickhouse_ru
    @YurijL #176397 07:29 AM, 17 Aug 2020
    Это же колоночная бд, у тебя и будет уникальная запись в ней, просто индекс будет ссылатся на не из нескольких строк таблицы
  • @khanze ↶ Reply to #176396 #176398 07:30 AM, 17 Aug 2020
    я создал таблицу и суть таблица такая, что я помечаю и сохраняю те файлы(имя, дата, uuid), которые уже были загружены в систему. Чере питон я каждый раз проверяю на всякий случай все файлы, чтобы не использовались старые данные
  • @khanze #176399 07:33 AM, 17 Aug 2020
    давайте я опишу, чтобы было понятней.

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

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

    Мне показалось не очень оптимальным чекать каждую строчку в таблице
  • @khanze #176400 07:33 AM, 17 Aug 2020
    вот, хотел посоветоваться
  • https://t.me/clickhouse_ru
    @JackRussell77 #176401 07:36 AM, 17 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @nukekz #176402 07:55 AM, 17 Aug 2020
    Получается вы записываете в кликхаус данные по файлу и после того, как этот файл был использован, делаете запись в базу с тем же названием и пометкой?
  • @khanze ↶ Reply to #176402 #176403 07:55 AM, 17 Aug 2020
    Нет, на данный момент записываю только его имя и дату
  • @khanze #176404 07:56 AM, 17 Aug 2020
    вот и возник вопрос по уникальности
  • @khanze #176405 07:57 AM, 17 Aug 2020
    А так пока я на питоне засовываю все имена в лист и просто смотрю входит ли мое имя в объекты листа
  • @khanze ↶ Reply to #176405 #176406 07:58 AM, 17 Aug 2020
    при выборке всех имен из таблицы
  • https://t.me/clickhouse_ru
    @nukekz #176407 08:01 AM, 17 Aug 2020
    В кликхаусе вроде нет уникальности и все данные копятся. Уникальность нужно будет самому реализовывать. Не понятно для чего использовать кликхаус в данном случае.
  • https://t.me/clickhouse_ru
    @nukekz #176408 08:15 AM, 17 Aug 2020
    >В кликхаусе вроде нет уникальности

    Хотя я не уверен уже. В мануале написано, что в кликхаусе нет update, но люди выше обсуждали его.
  • https://t.me/clickhouse_ru
    есть там update =) только синтаксис странноватый, но есть
  • @Shazo_Rus #176410 08:16 AM, 17 Aug 2020
    синтаксис приходит из логики как его использовать в КХ. Он не предназначен для частых update, скорее крайне редкая операция.
  • https://t.me/clickhouse_ru
    вполне неплохо отрабатывает и на больших таблицах, в целом порой update оч нужен чтобы не плодить зоопарк из быд, как у меня сейчас монга, касандра и кх на одном серваке... а так хочется чтобы все в кх было
  • https://t.me/clickhouse_ru
    @nukekz ↶ Reply to #176409 #176412 08:19 AM, 17 Aug 2020
    Вроде нашел. Это через ALTER TABLE?
  • https://t.me/clickhouse_ru
    угу
  • Смотря что вы имеете ввиду под большими таблицами, по факту он перезаписывает полностью парты. Если у вас парт по сотням гигабайт, то часто их полностью переписывать странная идея
  • @Shazo_Rus #176415 08:20 AM, 17 Aug 2020
    Зоопрак зоопарком, но различные инстррументы и БД используются в различных ситуациях
  • https://t.me/clickhouse_ru
    смотря как апдейтить и что, мне надо обновить одну строку к примеру или изменить uuid у записи одной из тысяч, в целом через alter update это работает, но я пока побаиваюсь сие использовать поэтому касандра еще живет у меня...
  • ReplacingMergeTree | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    и только мариадб можно гнуть как хочешь =) а при правильной настройке будет не хуже nosql =)
  • Не понял про смотря как апдейтить. Если вам в КХ нужно будет обновить одну строчку, то перезапишется весь парт при апдейте.
  • https://t.me/clickhouse_ru
    ну парты то можно разные делать, по дню, неделе, году, месяцу, развен ет?
  • Если там всё так иделаьно, зачем вам КХ?
  • https://t.me/clickhouse_ru
    если бы там было все идеально =)) никто не говорит об идеальности
  • Да, но слишком мелкие парты будут негативно сказываться. Тогда вы опять же забивать будете микроскопом
  • https://t.me/clickhouse_ru
    согласен, оэтому и не применяю там это, жду когда там все-же появится движок для таких данных, может однажды он будет =)
  • @Shazo_Rus #176425 08:24 AM, 17 Aug 2020
    Проще использовать альтернативную логику в запросах или движки в стиле колапсинг или реплейсинг
  • https://t.me/clickhouse_ru
    @nukekz #176427 08:25 AM, 17 Aug 2020
    О, раз заговорили про партиции. Кто-нибудь сталкивался с проблемой дублирования записи из разных парт-ов при выборке через FINAL?
    Вводная. В КХ есть таблица на 100млн записей (10ГБ). Партицирование происходит по полю "дата создания".
    Проблема. С недавнего времени у пользователей появилась возможность редактирования этого поля. Теперь при построении статистики одна и та же запись фигурирует в разных датах, потому что при селекте из FINAL данные мержатся внутри парт.
    Если строить парты по другому полю, которое никогда не меняется, то выборка через FINAL происходит очень медленно когда этого поля нет в WHERE.

    Я использую ReplaceMergeTree и читал про CollapseMergeTree, но не хотелось бы переходить на него - слишком много запросов пришлось бы переделывать. Может есть возможность решить это через подзапросы или каким-нибудь другим движком?
  • https://t.me/clickhouse_ru
    когда у тебя есть таблица с пользователями или объектами где каждый день меняют, редактируют, удаляют альтернативные поля типа комментариев, телефона, мыла, адреса, это все равно не подойдет. а если удалять одну запись из парта, парт все равно может быть перечитан (хотя я не изучал этот вопрос при удалении)
  • @Shazo_Rus #176429 08:28 AM, 17 Aug 2020
    Не понял вашу мысль про перечитан. А телефон мыло и адрес больше как словари возможно использовать.
  • https://t.me/clickhouse_ru
    о прикольно, это я еще не тестировал
  • https://t.me/clickhouse_ru
    ну что произойдет если в партиции на 100 - 200 тыщ записей сделать update одной?
  • создастся новый парт, куда запишутся данные без этой записи
  • https://t.me/clickhouse_ru
    даже если это будет справочник, удалять и вставлять новую запись, порой не всегда удобно, хотя я в паре мест применил этот подход, и мне в целом понравилось, объект в кеше все равно есть, можно и обновить через удаление
  • https://t.me/clickhouse_ru
    вот, а если сделать удаление одной из записей и вставку? в тот-же временной диапазон?
  • Вставка всегда рождает новый парт.
  • @khanze ↶ Reply to #176417 #176436 08:30 AM, 17 Aug 2020
    Спасибо, почитаю
  • https://t.me/clickhouse_ru
    ну вот, в целом я понимаю как надо правильно, но вот с Replacing я пока не игрался, спасибо за наводку
  • @247700905 #176438 08:34 AM, 17 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iPrior #176439 09:21 AM, 17 Aug 2020
    Господа, помогите разобраться:
    есть колонка в таблице timestamp DateTime
    я делаю селект из таблицы:
    SELECT
    `timestamp`,
    toDateTime(`timestamp`, 'UTC') AS `utc`,
    toDateTime(`timestamp`, 'Asia/Hong_Kong') AS `china`,
    toDateTime(`timestamp`, 'Europe/Moscow') AS `moscow`
    ...

    и получаю 4 одинаковые даты/время...
    разве оно не должно конвертиться в указанную time zone?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #176439 #176440 09:28 AM, 17 Aug 2020
    возможно ваш клиент переводит принудительно в вашу TZ.
    Попробуйте в clickhouse-client выполнить, или toString добавить
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176440 #176442 09:31 AM, 17 Aug 2020
    сейчас попробую, спасибо.
    Клиент IDE JetBrains, там выставлено FALSE в параметре use_client_time_zone, но попробую через консоль
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176440 #176443 09:43 AM, 17 Aug 2020
    через clickhouse-client всё хорошо, как и должно быть. Видать IDE действительно переводит время
  • https://t.me/clickhouse_ru
    https://youtrack.jetbrains.com/issue/DBE-7770
    Это старый баг датагрипа
  • @1184826634 #176445 10:14 AM, 17 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176444 #176446 10:16 AM, 17 Aug 2020
    спасибо за ссылку
  • @scooby18 #176448 11:02 AM, 17 Aug 2020
    Всем добрый день! @den_crane подскажи, получаю DB::Exception: Too many parts (2611). Это может быть из-за того что index_granularity 1024?
  • https://t.me/clickhouse_ru
    А как частво вставляете в таблицу?
  • статья писалась когда еще не было alter delete
  • 1 раз в минуту
  • https://t.me/clickhouse_ru
    Можно полный stacktrace и при какой операции получаете такую ошибку?
  • Code: 252, e.displayText() = DB::Exception: Too many parts (2611). Merges are processing significantly slower than inserts. (version 20.5.2.7 (official build))
  • не может
  • вставляйте кусками крупнее
  • https://t.me/clickhouse_ru
    или посмотрите сколько мерджей у вас там идет
  • на текущий момент 1000 в одну минуту
  • не чаще чем раз в секунду лучше,
    либо увеличьте background pool size
    или мерджи где то зависли из-за блокирующей мутации
  • https://t.me/clickhouse_ru
    а Partition By Order By какой у вас?
  • https://t.me/clickhouse_ru
    как я понял 1 раз в минуту по 1000 строк
  • system.parts все скажет тогда
  • @scooby18 #176463 11:19 AM, 17 Aug 2020
    @dj_mixer и @beglaryanartur посмотрю как решу другую задачу, спасибо вам
  • @orlan_sar #176464 11:24 AM, 17 Aug 2020
    Привет всем! Есть ячейка с текстом , с эмозди и числами. Например: такое содержание ячейки {[эмозди] текст текст [эмозди] число}
    Хочу извлечь только текст. Подскажите как это сделать. Строк очень много, в каждой ячейке эмозди уникальные. Или как заполнить первый параметр тут splitByChar( __ , ячейка)? В первый параметр нужно передать разделитель с типом стринг, а эмозди не засовывается
  • если числа не нужны, alphaTokens
    https://clickhouse.tech/docs/ru/sql-reference/functions/splitting-merging-functions/#alphatokenss
    Функции разбиения и слияния строк и массивов | Документация ClickHouse

    Функции разбиения и слияния строк и массивов splitByChar(separator, s) Разбивает строку на подстроки, используя в качест

  • SELECT alphaTokens('abc🙂😂a1abc');
    -===
    ['abc','a','abc']
  • спасибо большое)
  • https://clickhouse.tech/docs/en/sql-reference/statements/alter/delete/
    https://clickhouse.tech/docs/en/sql-reference/statements/alter/update/
    вы вот это имеете ввиду или что то другое?

    неужели после этого надобность в движках ReplacingMergeTree и CollapsingMergeTree отпала?
    и что тяжелее для субд будет, проапдейтить через ALTER TABLE UPDATE
    или использование этих движков?
    DELETE | ClickHouse Documentation

    ALTER TABLE … DELETE Statement ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr Deletes data matchin

  • https://t.me/clickhouse_ru
    Ну как мы тут выше обсудили, проблема в том, что при update будет обновляться весь партишен и если он большой - это накладные расходы на иопсы и память, что скажется на скорости, более компетентные люди меня поправят - надеюсь =)
  • @1019316538 #176470 12:01 PM, 17 Aug 2020
    так вот я и хочу выяснить у компетентных людей, что лучше делать, если возникнет нужда обновлять данные.
    использовать ALTER TABLE UPDATE\DELETE или движки ReplacingMergeTree , CollapsingMergeTree .
    с КХ работать только только начинаю...
  • https://t.me/clickhouse_ru
    @387452444 #176471 12:09 PM, 17 Aug 2020
    движки же придумали неспроста
  • @a_sima10 #176472 12:12 PM, 17 Aug 2020
    всем привет, приложение пишет в два КХ разных версий 20.5.4.40 и 19.3.5, настройки одинаковые, но в новой версии КХ system.query_log есть лог запросы, а в старой версии почему-то нет, хотя когда в старой версии подключаюсь клиентом, делаю запрос, ставлю set log_queries=1 проверяю еще раз запрос и в system.query_log вижу свой запрос, но почему-то от приложения в старом КХ нет ничего
  • https://t.me/clickhouse_ru
    если это один апдейт в год, то думаю можно и альтером, а если регулярно по тысяче в день, то лучше движки которые под это были придуманы
  • 1 не обновлять или не использовать КХ
    2 collapsing/replacing/aggregatingMT
    3 insert-select в новую таблицу (так хоть старые данные будут целыми) или добавлять колонку.
    4. отрицание
    5. гнев
    6. торг
    7. депрессия
    8. принятие
    9. mutations (ALTER TABLE UPDATE/DELETE)
    10. увольнение

    короче если это будет частью автоматической логики - лучше не надо.
    если это делается руками - можно
    гарантий на мутации никаких.
    при отмене получаете частично битые данные.
  • все сильно зависит от кейсов применения
  • Операции ALTER UPDATE в КХ пока что нет. Если не ошибаюсь.

    Если нужно что-то удалить/перезаписать в частных случаях и это не затруднительно делать руками — то merge tree хватит.
    Если данные нужно систематически обновлять, то конечно нужно использовать движки.
  • https://t.me/clickhouse_ru
    после 3 все пошло под откос
  • https://t.me/clickhouse_ru
    @387452444 #176479 12:22 PM, 17 Aug 2020
    или 11. pull request на апдейты-делиты
  • оно с текущей архитектурой не вяжется. максимум можно там ввести гибридное партиционирование (например свежие данные в строках), как в Гринпламе
  • это не откос, это начало новой жизни
  • есть ALTER UPDATE, больше года как уже...
  • @1019316538 #176483 12:29 PM, 17 Aug 2020
    Я пока просто гипотетически рассматриваю и исследую возможности. )) уже уяснил, что лучше не надо. Но если вдруг бизнесу понадобится ... Придется вертеться. Вот и хочу быть готовым ко всяким сценариям. Спасибо за ответы. Понял что лучше использовать движки.
  • https://t.me/clickhouse_ru
    не отпала. ALTER TABLE UPDATE/DELETE сделаны для административной работы, типа раз в году вручную админ запускает, требования gdpr и тому подобное. Их нельзя использовать в ежедневных бизнеспроцессах.
  • @molchanovdp #176485 12:37 PM, 17 Aug 2020
    Всем привет.
    Подскажите, как бы проредить данные? Например есть таблица c дискретностью до 5 раз в секунду
    ts (unix timestamp), value
    1597081596.081 , 1
    1597081596.192 , 0
    1597081596.438 , 1
    1597081596.678 , 0
    1597081596.982 , 1
    1597081597.082 , 1
    1597081597.199 , 1
    1597081597.371 , 0
    1597081597.663 , 1
    1597081597.958 , 1

    Нужно оставить только по 3 значения в секунду. Желательно как-нибудь ровненько разделить по периоду.
  • https://t.me/clickhouse_ru
    select intDiv(1597081596081, 333) * 333 ?
  • https://t.me/clickhouse_ru
    это все полный бред
  • https://t.me/clickhouse_ru
    вы про какой final ? select from final как раз не глядя на партиции работает

    create table f (a Int64, d date, s String) engine=ReplacingMergeTree partition by d order by a
    insert into f values(1, 11, '1')
    insert into f values(1, 11, '2')
    select * from f final;
    ┌─a─┬──────────d─┬─s─┐
    │ 1 │ 1970-01-12 │ 2 │
    └───┴────────────┴───┘
  • https://t.me/clickhouse_ru
    это не dbgrip, это jdbc

    вам на самом деле нужен toString , toDateTime тут неверно использовать

    SELECT
    toDateTime('2000-01-01 00:00:00') timestamp,
    toString(`timestamp`, 'UTC') AS `utc`,
    toString(`timestamp`, 'Asia/Hong_Kong') AS `china`,
    toString(`timestamp`, 'Europe/Moscow') AS `moscow
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176489 #176490 12:55 PM, 17 Aug 2020
    да, с этим я разобрался... теперь пытаюсь понять почему на 2х серверах с одинаковыми конфигами SELECT timezone() возвращает разные результаты
  • https://t.me/clickhouse_ru
    может там выставлены разные зоны на самом серваке?
  • https://t.me/clickhouse_ru
    в линуксе date что возвращает?
  • https://t.me/clickhouse_ru
    @iPrior #176493 12:57 PM, 17 Aug 2020
    Mon Aug 17 15:56:49 MSK 2020
  • https://t.me/clickhouse_ru
    @Igorlamerger #176494 12:57 PM, 17 Aug 2020
    а на втором?
  • https://t.me/clickhouse_ru
    @iPrior #176495 12:57 PM, 17 Aug 2020
    тоже самое
  • https://t.me/clickhouse_ru
    @iPrior #176496 12:58 PM, 17 Aug 2020
    и конфиги у обоих одинаковые:
    cat /etc/clickhouse-server/config.xml |grep timezone
    <timezone>UTC</timezone>
  • https://t.me/clickhouse_ru
    @iPrior #176497 12:58 PM, 17 Aug 2020
    разница только в версии кликхауса
  • https://t.me/clickhouse_ru
    @Igorlamerger #176498 12:58 PM, 17 Aug 2020
    ну чудес не бывавет же, а данные точно одинаковые?
  • https://t.me/clickhouse_ru
    @iPrior #176499 12:58 PM, 17 Aug 2020
    на одном
    Connected to ClickHouse server version 19.15.2 revision 54426.
    на втором
    Connected to ClickHouse server version 19.13.2 revision 54425.
  • https://t.me/clickhouse_ru
    а что select timezone() возвращает?
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176500 #176501 01:00 PM, 17 Aug 2020
    ClickHouse client version 19.13.2.19.
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 19.13.2 revision 54425.

    vs70 :) select timezone();

    SELECT timezone()

    ┌─timezone()────┐
    │ Europe/Moscow │
    └───────────────┘

    1 rows in set. Elapsed: 0.002 sec.

    ClickHouse client version 19.15.2.2.
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 19.15.2 revision 54426.

    vs35 :) select timezone();

    SELECT timezone()

    ┌─timezone()─┐
    │ UTC │
    └────────────┘

    1 rows in set. Elapsed: 0.010 sec.
  • https://t.me/clickhouse_ru
    cd /etc/clickhouse-server/; grep -R timezone *
  • https://t.me/clickhouse_ru
    @Igorlamerger #176503 01:01 PM, 17 Aug 2020
    а конфиги точно применились? может там не ребутали сервак после правок?
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176503 #176504 01:01 PM, 17 Aug 2020
    сложно сказать наверняка... админы говорят что точно конфиги применялись
  • https://t.me/clickhouse_ru
    есть варик для теста рестартануть?
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176502 #176506 01:02 PM, 17 Aug 2020
    /etc/clickhouse-server]$ grep -R timezone *
    bck/config.xml: <!-- <timezone>Europe/Moscow</timezone> -->
    config.xml: <timezone>UTC</timezone>
    config.xml.bak: <!-- <timezone>Europe/Moscow</timezone> -->
    config.xml.rpmnew: <!-- <timezone>Europe/Moscow</timezone> -->
    config.xml.rpmsave: <!-- <timezone>Europe/Moscow</timezone> -->
  • https://t.me/clickhouse_ru
    @Igorlamerger #176507 01:03 PM, 17 Aug 2020
    зачем столько бакапов конфига?
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176502 #176508 01:03 PM, 17 Aug 2020
    там где почему то Moscow
    /etc/clickhouse-server]$ grep -R timezone *
    config.xml: <timezone>UTC</timezone>
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176507 #176509 01:04 PM, 17 Aug 2020
    я разработчик, сие мне не ведомо =)
  • https://t.me/clickhouse_ru
    тоесть обновление кх и установка из репы это не ваше? =) как интересно =)
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176510 #176511 01:05 PM, 17 Aug 2020
    ну вот да, есть специально обученные люди для этого, с соответствующей ответственностью и банкой вазелина
  • https://t.me/clickhouse_ru
    тогда зачем вы паритесь про дату? отдайте этот вопрос админам пусть решают, но я если честно не понимаю как так у вас получается, я тут один и кх и касандру и монгу и ребит и кластер держу и еще и софт пишу под систему =))
  • https://t.me/clickhouse_ru
    вы расскажите людям что не надо config.xml менять, свои ченжи можно делать в отдельных файлах
    https://gist.github.com/den-crane/4d67e1d4cc49de66cd36d1d76a2b14a5
    gist:4d67e1d4cc49de66cd36d1d76a2b14a5

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

  • https://t.me/clickhouse_ru
    вы крутой. Я вот вообще только КХ админить еле успеваю и больше ничего не делаю
  • https://t.me/clickhouse_ru
    когда сам себе разраб и админ, кх админить и не надо, настроил и рабоатет главное не трогать =)) как икасандру с монгой, и ребит один раз натюнил, рабоатет - не падает, дальше уже софт пишу
  • https://t.me/clickhouse_ru
    @iPrior #176516 01:08 PM, 17 Aug 2020
    я пока думаю что из-за разницы в версиях.
    в issue нашел упоминания про TZ переменную окружения, её на серваках нет, но что бы попробовать перезапускать надо... пока хочется понять что не так, что бы 10 раз не рестартить.
    Думаю локально версию 19.13.2 в вагранте поднять и посмотреть как оно... но что-то погряз в issue на гитхабе =)
  • https://t.me/clickhouse_ru
    @iPrior #176517 01:09 PM, 17 Aug 2020
    да и запутался в тегах и релизах на гитхабе, что-то мне кажется они не очень соответствуют друг-другу
  • https://t.me/clickhouse_ru
    я проще сделал, чтобы не натыкаться на все подбные такие грабли, я в КХ держу лонг (UTC timestamp) а на клиенте выдаю в нужной ему зоне
  • https://t.me/clickhouse_ru
    TZ в 19.13 еще не использовалась
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176518 #176520 01:11 PM, 17 Aug 2020
    ну в "своих" таблицах я юзаю uint а не dateTime... только что-то не задумывался почему я так сделал... рефлекс наверное =)
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176519 #176521 01:11 PM, 17 Aug 2020
    ага, то есть в эту сторону можно не копать, спасибо
  • https://t.me/clickhouse_ru
    скорее всего кто-то поменял конфиг без рестарта.
  • https://t.me/clickhouse_ru
    @den_crane #176523 01:13 PM, 17 Aug 2020
    DateTime это тот же UIn32 -- UnixTimestamp (в UTC)
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176522 #176524 01:13 PM, 17 Aug 2020
    ну это я спрашивал, так же как точно ли эти конфиги юзаются... говорят что да, всё с их стороны норм
  • https://t.me/clickhouse_ru
    поддерживаю
  • https://t.me/clickhouse_ru
    да, но не все разработчики осознают что туда можно вставить и без правки на нулевую зону, я везде где делаю вставку сначала свожу к нулевой зоне и только потом вставляю.
  • https://t.me/clickhouse_ru
    @iPrior #176528 01:16 PM, 17 Aug 2020
    да я думаю эта борьба с TZ старая... многие и часто спотыкаются а всякие настройки ОС/сервера/клиента.
    и как бы давно, как мне казалось, все юзают чистый unix ts в виде Uint... Оно как то надежнее чтоль =)
  • https://t.me/clickhouse_ru
    не, не все, тут на соседнем канале про ios холивар на два дня был, что это не информативно и плохо держать в бд лонги а не стринги с читабельной датой =))
  • https://t.me/clickhouse_ru
    Так если нужно делать toStartOfHour или год прибавить, все равно DateTime нужен
  • https://t.me/clickhouse_ru
    @Igorlamerger #176531 01:18 PM, 17 Aug 2020
    да да =) я еще на ios и андройд пишу, у меня несколько своих приложух в маркете =))
  • https://t.me/clickhouse_ru
    а разве в лонгах это не сделать?
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176529 #176533 01:20 PM, 17 Aug 2020
    ну это субъективно всё и дело привычки... я в одной компании работал, там был свой алгоритм генерации уникального ID, типа UUID но по своему и в него зашивалась метка времени, которую можно вытащить.
    То есть в таблицах не было колонок типа created_dt — всё в ID зашито.
    Хочешь знать дату - вытаскивай, вот функции написаны
  • https://t.me/clickhouse_ru
    так кастить надо, касты могут замедлять и сильно
  • https://t.me/clickhouse_ru
    в первой версии uuid да и сейчас тоже, метка времени тоже имеется =)
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176530 #176536 01:20 PM, 17 Aug 2020
    ну тут да... если надо манипулировать то удобней наверняка.. у меня же метка создания, просто информация
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176535 #176537 01:21 PM, 17 Aug 2020
    а её вроде вытащить нельзя...?
  • https://t.me/clickhouse_ru
    возможно, но так какdatetime у нас в целом и так лонг, думаю не сильная проблема, но лучше прям в интах отнять год или час =)
  • https://t.me/clickhouse_ru
    такие велосипеды это не про бигдату. В нормальной системе даже UUID выкинут потому что тормозит
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176539 #176540 01:22 PM, 17 Aug 2020
    ну бигдата это вообще отдельная вселенная со своими законами
  • https://t.me/clickhouse_ru
    насколько я знаю можно
  • https://t.me/clickhouse_ru
    про високосную секунду и 30 ферваля вы явно не в курсе
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176541 #176543 01:22 PM, 17 Aug 2020
    любопытно... надо будет поискать/почитать
  • https://t.me/clickhouse_ru
    да в курсе конечно и уже есть свой костылик по этому =))
  • https://t.me/clickhouse_ru
    вот в яве к прмиеру и в плюсах у класса UUID есть timestamp
  • The Problem with Time & Timezones - Computerphile

    A web app that works out how many seconds ago something happened. How hard can coding that be? Tom Scott explains how time twists and turns like a twisty-turny thing. It's not to be trifled with! A Universe of Triangles: http://www.youtube.com/watch?v=KdyvizaygyY LZ Compression in Text: http://www.youtube.com/watch?v=goOa3DGezUA Characters, Symbols and the Unicode Miracle: http://www.youtube.com/watch?v=MijmeoH9LT4 More from Tom Scott: http://www.youtube.com/user/enyay and https://twitter.com/tomscott http://www.facebook.com/computerphile https://twitter.com/computer_phile This video was filmed and edited by Sean Riley. Computerphile is a sister project to Brady Haran's Numberphile. See the full list of Brady's video projects at: http://bit.ly/bradychannels

  • @7699150 #176547 01:24 PM, 17 Aug 2020
    ребят, столкнулся с такоой проблемой
    есть база данных которая по движку MySQL конектится к mysql
    оригинальный мускуль больше недоступен и я хочу удалить этот коннект из КХ
    Но кх на это ругается с ошибкой.

    Code: 1000. DB::Exception: Received from my_ch_node.com:9000. DB::Exception: There was an error on [my_ch_node.com:9000]: Poco::Exception. Code: 1000, e.code() = 2013, e.displayText() = mysqlxx::ConnectionFailed: Lost connection to MySQL server at 'handshake: reading inital communication packet', system error: 11 ((nullptr):0) (version 20.5.2.7 (official build))

    Кто-то в курсе как я все же могу удалить этот конект?)
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176545 #176548 01:24 PM, 17 Aug 2020
    спасибо, поковыряю плюсы на эту тему, оно привычней
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    detach / rm aaa.sql
  • при детаче та же ошибка
  • https://t.me/clickhouse_ru
    значит остановить КХ (возможно kill-9) и rm ....sql
  • https://t.me/clickhouse_ru
    посмеялся от души, да весь этот цирк я проходил еще в 2009м =))
  • https://t.me/clickhouse_ru
    @Igorlamerger #176554 01:35 PM, 17 Aug 2020
    а потом Россия решила не переходить на часовые пояса, а потом несколько поясов было убрано, да я понимаю истерику этого парня, это правда взрывает голову
  • так работает
    спасибо )
  • https://t.me/clickhouse_ru
    Вот к примеру у касандры
  • https://t.me/clickhouse_ru
    @iPrior ↶ Reply to #176557 #176558 01:39 PM, 17 Aug 2020
    ого! спасибо! это весьма интересно
  • @mrtroian #176559 01:41 PM, 17 Aug 2020
    Joined.
  • @Levilate #176560 01:41 PM, 17 Aug 2020
    Joined.
  • https://t.me/clickhouse_ru
    да не за что, стучи, всегда рад.
  • https://t.me/clickhouse_ru
    @zorrozoroff #176562 01:50 PM, 17 Aug 2020
    Коллеги! А у меня вот есть простой materialized view, там групбаи всякие на основе 1 таблицы. И вот по прошествии времени в нем конечно строки добавляются, но все данные кроме колонки по которой groupby, получаются нули. Штоделоц!
  • https://t.me/clickhouse_ru
    я не применял такие, но у того-же постгре при group by все колоник которые туда не попадают нужнаются в исчислении, чтото типа max, min, sum etc
  • DDL писать
  • https://t.me/clickhouse_ru
    @zorrozoroff #176565 01:53 PM, 17 Aug 2020
    вот версия:
    Connected to ClickHouse server version 20.3.7 revision 54433.
    вот запрос:
    CREATE MATERIALIZED VIEW klmn
    (ts DateTime, dt Date, cntx Int32, sumx Float64) ENGINE = MergeTree() order by (ts) SETTINGS index_granularity = 8192
    POPULATE
    as
    select a.ts, toDate(a.ts), count(), sum(a.size * a.cnt)
    from pqrs a
    group by a.ts;
  • https://t.me/clickhouse_ru
    если я верно помню, то не покажется только одно значение toDate
  • https://t.me/clickhouse_ru
    @Igorlamerger #176568 01:56 PM, 17 Aug 2020
    Хотя я может и заблуждаюсь
  • https://t.me/clickhouse_ru
    а если просто сделать селект ? select a.ts, toDate(a.ts), count(), sum(a.size * a.cnt)
    from pqrs a
    group by a.ts;
  • https://t.me/clickhouse_ru
    @zorrozoroff #176570 01:57 PM, 17 Aug 2020
    не, ну я конечно могу, но в pqrs там всё норм
  • https://t.me/clickhouse_ru
    @zorrozoroff #176571 01:58 PM, 17 Aug 2020
    и опять-таки, там приходит count() == 0,хотя ts такой есть, это ли не странно?
  • https://t.me/clickhouse_ru
    @zorrozoroff #176572 01:58 PM, 17 Aug 2020
    в матвью
  • https://t.me/clickhouse_ru
    @zorrozoroff #176573 01:58 PM, 17 Aug 2020
    (в селекте или не придет или придет > 0 )
  • https://t.me/clickhouse_ru
    @Igorlamerger #176574 01:59 PM, 17 Aug 2020
    я кажется что-то пропустил =) from pqrs a - говорит от том, что вы делаете выборку из таблицы pqrs и даете ей имя a =) разве нет? или я чет туплю под вечер уже
  • https://t.me/clickhouse_ru
    @zorrozoroff #176575 02:00 PM, 17 Aug 2020
    это же алиас
  • https://t.me/clickhouse_ru
    угу
  • https://t.me/clickhouse_ru
    @Igorlamerger #176577 02:00 PM, 17 Aug 2020
    не все норм, я не сразу прочел все что вы написали выше вот и тупанул
  • надо использовать aggregatingMT со -state колонками наверное, если постоянно данные довставляете...
  • https://t.me/clickhouse_ru
    @zorrozoroff #176579 02:02 PM, 17 Aug 2020
    вот, за этот намек спасибо, почитаю, видать как раз оно
  • https://t.me/clickhouse_ru
    по именам полей вставка идет,

    dt <> toDate(a.ts)
    cntx <> count()

    и немного странный движок MergeTree для MV
  • https://t.me/clickhouse_ru
    @zorrozoroff #176581 02:05 PM, 17 Aug 2020
    я не понял "по именам полей вставка идет" - то есть надо обязательно давать алиасы вычисленным значениям?
  • https://t.me/clickhouse_ru
    да конечно
  • https://t.me/clickhouse_ru
    @zorrozoroff #176583 02:05 PM, 17 Aug 2020
    но ведь вставилось в основное тело (populate)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #176585 02:05 PM, 17 Aug 2020
    toDate(a.ts) as dt
  • https://t.me/clickhouse_ru
    хаха, ну 1888й косяк, из-за отсуствия тестов на это
  • https://t.me/clickhouse_ru
    @zorrozoroff #176587 02:06 PM, 17 Aug 2020
    ясно, теперь кажется ситуация вообще ясна
  • https://t.me/clickhouse_ru
    и count() as cntx
  • https://t.me/clickhouse_ru
    @zorrozoroff #176589 02:06 PM, 17 Aug 2020
    да, спасиб