• 01 February 2021 (117 messages)
  • @erikrybka #202168 07:31 AM, 01 Feb 2021
    Привет, настраиваю tls c сертификатом Lets encrypt
    При подключении через клиента получаю такую ошибку
    Code: 210. DB::NetException: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILEDКонфиг

    <openSSL>
    <server>
    <certificateFile>/etc/clickhouse-server/server.crt</certificateFile>
    <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile>
    <dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile>
    <verificationMode>none</verificationMode>
    <loadDefaultCAFile>true</loadDefaultCAFile>
    <caConfig>/etc/clickhouse-server/certs/chain.pem</caConfig>
    <cacheSessions>true</cacheSessions>
    <disableProtocols>sslv2,sslv3</disableProtocols>
    <preferServerCiphers>true</preferServerCiphers>
    </server>
    </openSSL>Сертификат верифицируется если проверять через openssl

    ```openssl verify -CAfile ca.cer server.crt```Версия клика clickhouse:21.1.2.15

    Что может быть не так?
  • https://t.me/clickhouse_ru
    @BloodJazMan #202169 07:49 AM, 01 Feb 2021
    на клиенте тоже должна быть цепочка сертификатов в CA от let's encrypt
  • https://t.me/clickhouse_ru
    @BloodJazMan #202170 07:49 AM, 01 Feb 2021
    > Code: 210. DB::NetException: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
    `
    вы эту ошибку где получаете?
    в clickhouse-client ?
  • @erikrybka #202171 07:54 AM, 01 Feb 2021
    да в clickhouse-client
    это значит мне в конфиге клиента указать caConfig с ca.cer от let's encrypt ?
  • https://t.me/clickhouse_ru
    ну да, там параметры есть
    ну еще можно попробовать ca-certificates проапгрейдить попробовать возможно у вас просто нет корневого сертификата Let's encrypt в OS в /etc/ папке
  • @erikrybka #202173 08:07 AM, 01 Feb 2021
    Понял, спасибо
    Буду пробовать
  • https://t.me/clickhouse_ru
    @Mike_Er #202174 08:41 AM, 01 Feb 2021
    Коллеги, а /clickhouse/shadow/ - это кто? Бекап?
  • https://t.me/clickhouse_ru
    это хардлинки? они могут быть при FREEZE
    который обычно делается для backup
  • https://t.me/clickhouse_ru
    Data Backup | ClickHouse Documentation

    Data Backup While replication provides protection from hardware failures, it does not protect against human errors: acci

  • https://t.me/clickhouse_ru
    @Mike_Er #202177 08:47 AM, 01 Feb 2021
    Да, спасибо, уже нашел от куда freeze делается, только вот почему-то места /shadow/занимает прилично
  • https://t.me/clickhouse_ru
    @Mike_Er #202178 08:47 AM, 01 Feb 2021
    их можно удалить безболезненно?
  • https://t.me/clickhouse_ru
    он сам не занимает места

    если вы du -s -h делаете hardlink
    то это он ссылается на старые партиции
    которые возможно кто-то удалил
  • https://t.me/clickhouse_ru
    @zagirnur #202180 08:52 AM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kizimenko #202181 09:19 AM, 01 Feb 2021
    Если добавить колонку с MATERIALIZED expr, то значение будет вычисляться при каждом SELECT ?
  • https://t.me/clickhouse_ru
    @SMeduza #202182 09:20 AM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    если я правильно всё понял при инсерте будет вычисляться expr и сохраняться.
    старые данные будут вычисляться при каждом SELECT пока не произейдет merge этого PART
  • https://t.me/clickhouse_ru
    Тогда в чем отличие от DEFAULT, он вроде тоже вычисляется при INSERT если не указан
  • https://t.me/clickhouse_ru
    @kizimenko #202185 09:26 AM, 01 Feb 2021
    как лучше сделать?
    Пишутся события, домен отдельно не пишется. Фильтр по домену часто используется. Хочу сделать колонку c выражением domainWithoutWWW(page_url), по логике это должно ускорить запросы.

    Идеально конечно при записи сразу слать домен отдельно, но если ограничиться только возможностями CH
  • https://t.me/clickhouse_ru
    выше писали что отличие от дефолт только в том что дефолт выбирается по SELECT * и можно явно вставлять значение
  • https://t.me/clickhouse_ru
    @KiLEXst #202187 09:27 AM, 01 Feb 2021
    в любых ситуациях лучше использовать дефолт
  • https://t.me/clickhouse_ru
    Он исторические данные при мердже также дозаполнит?
  • https://t.me/clickhouse_ru
    вот
  • https://t.me/clickhouse_ru
    если верить @den_crane - то да
  • https://t.me/clickhouse_ru
    @KiLEXst #202191 09:28 AM, 01 Feb 2021
    я не тестил, честно
  • https://t.me/clickhouse_ru
    @kizimenko #202192 09:29 AM, 01 Feb 2021
    спасибо, вроде все ясно
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #201972 #202193 09:30 AM, 01 Feb 2021
    Помогите, пожалуйста, с этим вопросом.
  • https://t.me/clickhouse_ru
    @gray_yozhik #202194 09:32 AM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    партиционирвание сделано не для ускорения запросов в первую очередь, а для манипуляций
  • https://t.me/clickhouse_ru
    Понять что хардлинки не занимают место нелегко. Надо слелать du -sh на все каталоги кх, du учитывает что этот inode уже был и не включает в сумму второй раз. Ну и парты которые помержены будут занимать место конечно.
  • https://t.me/clickhouse_ru
    Опыты с составными ключами в partition by, подобные
    PARTITION BY (toYYYYMMDD(event_date), event_type, event_region)
    у меня ни к чему хорошему не привели. Во первых сильно стала проседать скорость, когда обьём данных накопился более-менее приличный, несколько лет. Партиций стало слишком много. И во вторых, пришлось увеличивать max_partitions_per_insert_block со 100 до 1000+, иначе при вставке репликация ставала колом, реплики просто не принимали такие запросы, и пока я не заметил, их в буфере Distributed накопилось уже приличное количество, и они бесконечно пытались раскидаться по шардам.
    После увеличения max_partitions_per_insert_block оно, конечно, рассосалось, но деградация скорости стала такой, что просто перелили с простым партицированием по месяцам.
    А дневные юзаются для кеш-таблиц, в которые триггером копируется из основных таблиц. Дневные - чтобы по крону раз в сутки можно было чистить кеш.
    Вот такой опыт получился.
  • https://t.me/clickhouse_ru
    Все правильно вы поняли.
    Обычно невозможно напихать столько полей в partition by потому что будет очень много партов и замедляются инсетры. Чаще всего удается добавить в partitiin by какое-то одно низкокардинальное поле которое не хочется класть в order by
  • https://t.me/clickhouse_ru
    storage-ch]# du -sh clickhouse/
    14T clickhouse/
    storage-ch]# du -sh clickhouse/shadow/
    3.3T clickhouse/shadow/
    правильно я понимаю, что в shadow что-то потярялось?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202197 #202201 10:04 AM, 01 Feb 2021
    Спасибо за ваш опыт, учту.

    У меня просто есть таблицы, созданные с кривыми ключами сортировки, и там добавление условия по полю из ключа партиционирования ускоряет запросы иногда в десятки раз.
    И есть много однотипных таблиц, которые хочу схлопнуть без потери скорости работы с ними.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202198 #202202 10:04 AM, 01 Feb 2021
    Денис, спасибо.
  • @1595619513 #202203 11:12 AM, 01 Feb 2021
    Joined.
  • @7699150 ↶ Reply to #90980 #202204 11:31 AM, 01 Feb 2021
    Добрый день!
    Удалось разобраться в чем проблема?
    Мы как раз сейчас интегрируем catboost и ловим такую ошибку
  • https://t.me/clickhouse_ru
    @ladish6 #202205 12:01 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Неа, так и работало на файликах которые из тутора выкачал
  • Хех)
    Ничего нового за два года
    Спасибо!
  • https://t.me/clickhouse_ru
    @CherkashinSergey #202208 12:34 PM, 01 Feb 2021
    Господа, подскажите, что будет происходить, когда количество свободного места на диске упрётся в параметр keep_free_space_bytes, и перемещать с него данные уже некуда, ибо это последний диск в очереди storage_policy? Будут дропаться старые данные или всё станет колом и база станет read only?
  • https://t.me/clickhouse_ru
    @CherkashinSergey #202209 12:37 PM, 01 Feb 2021
    Либо я не умею гуглить, либо документация тактично отмалчивается по этому поводу. Фраза keep_free_space_bytes — размер зарезервированного свободного места на диске. как-то не очень подробно раскрывает суть параметра.
  • https://t.me/clickhouse_ru
    du -sh clickhouse/*
  • https://t.me/clickhouse_ru
    @mikeryazan #202211 01:05 PM, 01 Feb 2021
    Всем привет, подскажите плз
    arrayFirstIndex будет пробегать по всему массиву или остановит итерации на первом элементе, который удовлетворяет условию функции ?
  • ну так arrayFirstIndex же
  • https://t.me/clickhouse_ru
    с точки зрения кода функции - останавливает
  • https://t.me/clickhouse_ru
    @mikeryazan #202214 01:11 PM, 01 Feb 2021
    Спасибо
  • https://t.me/clickhouse_ru
    @zagirnur #202215 01:16 PM, 01 Feb 2021
    Добрый день! Подскажите пожвалуйста

    Можно ли без настройки DSN в файле подключить внешний словарь по ODBC?
  • https://t.me/clickhouse_ru
    @mikhailberg #202216 01:22 PM, 01 Feb 2021
    кто-нибудь сетапил суперсет для кх ?
  • @kantarovich #202217 01:32 PM, 01 Feb 2021
    Ребят, всем привет!
    Кто-то может посоветовать сис.админа, который развернет КХ на чистом серваке и настроит его оптимально под используемое железо? На серваке кроме КХ ничего не будет.
    Возмездно конечно)
  • https://t.me/clickhouse_ru
    Altinity же как раз для этого вроде
  • @denisrakhimov #202219 01:37 PM, 01 Feb 2021
    Подскажите пожалуйста, как правильно отследить какие запросы в CH отъедают проц? Перезагружаешь CH все работает нормально, потом через какое то время проц отъедается на 100 процентов. Версия 21.1.2.15
  • https://t.me/clickhouse_ru
    select * from system.merges
    select * from system.mutations where not is_done
    select * from system.processes
  • Спасибо! Пока кого-то из РФ ищу)
  • https://t.me/clickhouse_ru
    @den_crane #202222 01:44 PM, 01 Feb 2021
    альтинити работает РФ, но вроде такого не делает, вообще разовых задач не делает, только годовые контракты
  • @kantarovich #202223 01:45 PM, 01 Feb 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @1236463047 #202224 01:45 PM, 01 Feb 2021
    Парни, добрый день,
    Альтер мат вью сумминг мерж еще нет такого, да?
  • https://t.me/clickhouse_ru
    @1236463047 #202225 01:45 PM, 01 Feb 2021
    ручками надо, да?
  • https://t.me/clickhouse_ru
    Да ваще несложно это сделать, только вот серверов надо бы как минимум два.
  • А два зачем?
  • Сравнивать тюнинг, нет же абсолютных истин
  • да вроде и процессов 2-3 и там селекты в основном не большие. есть ли какие рекомендации по тюнингу для ускорения СН?
  • https://t.me/clickhouse_ru
    я в видео про MV показывал варианты кажется
  • https://t.me/clickhouse_ru
    @1236463047 #202232 01:59 PM, 01 Feb 2021
    Варианты, я помню и использую. Но там был намек что один чел делает "альтер"
  • https://t.me/clickhouse_ru
    @1236463047 #202233 01:59 PM, 01 Feb 2021
    Вот не сделал еще, да?
  • https://t.me/clickhouse_ru
    в смысле результат показал только запрос select * from system.processes ?
    или что?
  • да, именно так, только мой запущенный запрос select * from system.processes
  • Напишу в личку
  • https://t.me/clickhouse_ru
    он в тикете сказал что не будет. Им не нужно MV, у них только MV to, поэтому он запилит возможно совсем нечто иное
  • https://t.me/clickhouse_ru
    а cpu используется в этот момент?

    что в логе КХ ?
  • в логах ероров нет (
  • https://t.me/clickhouse_ru
    почему ероров ?
    что кх пишет в лог в момент нагрузки на cpu ?
  • https://t.me/clickhouse_ru
    @monashev #202241 02:18 PM, 01 Feb 2021
    Привет.
    Подскажите, пожалуйста, как на практике реализуется работа с CollapsingMergeTree ? Меня смущает тот момент, что для затирания старой записи нужно вставлять её копию, но с другим знаком. Это значит, что данную копию нужно сначала залочить, потом прочитать, потом записать, потом снять блокировку. Это хорошо работает, когда подобные запросы льются через одного демона. Но как быть, если один демон не справляется и их нужно несколько пишут они одни и те же данные?
  • https://t.me/clickhouse_ru
    1. залочить? в КХ нет локов.
    2. не нужно копию, нужна запись с таким же ключом и -1 в sign
    3. таких вопросов не должно быть, если вы не помните вне КХ был такой ключ или нет и вам надо выбирать, то вам не подходит CollapsingMergeTree, берите Replacing
  • https://t.me/clickhouse_ru
    @monashev #202243 02:23 PM, 01 Feb 2021
    имелось ввиду залочить не в КН, а в демонах.

    Спасибо за ответ.
  • https://t.me/clickhouse_ru
    @Myshka590 #202244 02:24 PM, 01 Feb 2021
    Ребята, привет.
    Есть здесь Clickhouse девы из Украины? Может кому-то интересно будет рассмотреть предложение?
  • @ogavrilov #202265 02:27 PM, 01 Feb 2021
    Гениально
  • @ogavrilov #202266 02:28 PM, 01 Feb 2021
    Всю базу тоже скиньте пожалуйста
  • @denisrakhimov #202267 02:28 PM, 01 Feb 2021
    ) случайно вставил
  • https://t.me/clickhouse_ru
    гитхаб аккаунт есть?
    там можно gist-ы cоздавать https://gist.github.com/den-crane/35c4a488f06ec29293d096970ef21693
  • спасибо за подсказку
  • https://t.me/clickhouse_ru
    @azatyar13 #202291 02:57 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @azatyar13 #202292 03:12 PM, 01 Feb 2021
    Вечер добрый!
    Подскажите пожалуйста, как решить проблему с ALTER TABLE ... UPDATE ...
    Отправляю запрос (реакция и на другие запросы такая же):
    ALTER TABLE s_ko.funnel_crm
    UPDATE
    utm_source='test', utm_medium='test'
    WHERE
    projects_id=123
    AND key IN ('crmLeads')
    AND leads_id=1
    В system.mutations.command:
    UPDATE utm_source = 'test', utm_medium = 'test' WHERE (projects_id = 123) AND (key IN ('crmLeads')) AND (leads_id = 1)

    А latest_fail_reason:
    Code: 60, e.displayText() = DB::Exception: Table s_ko.crmLeads doesn't exist. (version 20.6.4.44 (official build))

    В чем может быть проблема?
  • https://t.me/clickhouse_ru
    @monashev #202293 03:15 PM, 01 Feb 2021
    Подскажите, пожалуйста, есть playground , который позволяет создавать свои таблицы? Тут https://play.clickhouse.tech/ пишет
    DB::Exception: playground: Not enough privileges. To execute this query it's necessary to have the grant CREATE TABLE ON datasets.posts (version 20.8.12.2 (official build))
  • @vasya_p0pkin #202294 03:18 PM, 01 Feb 2021
    Подскажите почему agregationFunction sum и simpleagregationfunction sum выдают разные результаты?
  • https://t.me/clickhouse_ru
    ну баг ,

    напишите AND key = 'crmLeads'
  • https://t.me/clickhouse_ru
    ну ошибка в 6й строке, вы опечатались, у вас переполнение из-за неверного типа данных

    В КХ все ОК, я проверял (правда я проверял не все типы данных)
  • https://t.me/clickhouse_ru
    Пробовал, выдает такой же результат.
    Также, пробовал ставить "key", key, key. Не помогает.
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202299 04:03 PM, 01 Feb 2021
    Вопрос. А чем вызано наличие настройки max_table_size_to_drop равным по дефолту 50GB?
  • https://t.me/clickhouse_ru
    не верю, покажите AND key = 'crmLeads' ошибку и что в system.mutations
  • https://t.me/clickhouse_ru
    ничем, просто Алексей любит все обкладывать safe-limiter-ами, и 50ГБ просто довольно большая величина, выше которой ему некомфортно терять данные при случайном drop table
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202302 04:08 PM, 01 Feb 2021
    Ааа, я просто думал что там какие-то хитрые логики есть за этим, тогда окей
  • https://t.me/clickhouse_ru
    Был такой command, ошибка та же.
    UPDATE utm_content = 'test', utm_term = 'test' WHERE (projects_id = 123) AND (key = 'crmLeads') AND (leads_id = 1)

    В списке mutations было множество ошибок таких, начал их чистить и при повторной отправке этот запрос сработал.
    Проверю остальные запросы.
    Спасибо.
  • `key`?
  • https://t.me/clickhouse_ru
    в любой вариации
  • https://t.me/clickhouse_ru
    @den_crane #202306 04:13 PM, 01 Feb 2021
    да тут дело явно в IN ('crmLeads')
  • https://t.me/clickhouse_ru
    @den_crane #202307 04:13 PM, 01 Feb 2021
    я проверю починено это или нет
  • https://t.me/clickhouse_ru
    @den_crane #202308 04:13 PM, 01 Feb 2021
    20.6.4.44 естественно out of support уже давно
  • https://t.me/clickhouse_ru
    @den_crane #202309 04:14 PM, 01 Feb 2021
    и кстати есть 20.6.11.1
  • https://t.me/clickhouse_ru
    @den_crane #202310 04:20 PM, 01 Feb 2021
    не воспроизводится в свежих кх
    https://gist.github.com/den-crane/47809d29e4850b9eb6c12add0d90c221
  • https://t.me/clickhouse_ru
    Запрос с IN тоже прошел.
    Правда clickhouse обновил до 21.1.2.15, пока ковырялся.

    Было похоже на то, что одна ошибка с IN не давала выполниться и остальным запросам.
  • https://t.me/clickhouse_ru
    мм, смело. Я тестирую 6 месяцев перед апргейдом.
  • https://t.me/clickhouse_ru
    @dmitrygf #202313 04:33 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Zhe700 #202314 04:51 PM, 01 Feb 2021
    Joined.
  • @619428358 #202315 05:47 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @sudo_apt_get #202316 06:07 PM, 01 Feb 2021
    Ребята, а не подскажите, что нужно в clickhouse отправлять в бинарном виде на порт 9000, чтобы провести корректный healthcheck ?
    Надоела ошибка в логах.
    <Warning> TCPHandler: Client has not sent any data.
  • https://t.me/clickhouse_ru
    @sudo_apt_get #202317 06:09 PM, 01 Feb 2021
    Например для FPM приводится пример проверки такого рода:
    backend be_phpfpm
    # ...
    option tcp-check
    # FCGI_BEGIN_REQUEST
    tcp-check send-binary 01 # version
    tcp-check send-binary 01 # FCGI_BEGIN_REQUEST
    tcp-check send-binary 0001 # request id
    …..
  • https://t.me/clickhouse_ru
    @sudo_apt_get #202318 06:15 PM, 01 Feb 2021
    Впрочем у меня нету полной уверенности, что это из-за tcp проверок.
    Пардон, вопрос следует более детального изучения.
  • https://t.me/clickhouse_ru
    Возможно поможет /replicas_status урл. Она 500 отдает в случае ошибок
  • https://t.me/clickhouse_ru
    @n1k0lay_z #202322 07:32 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @surkiz #202324 09:46 PM, 01 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #202325 10:01 PM, 01 Feb 2021
    curl localhost:9000
    Port 9000 is for clickhouse-client program.
    You must use port 8123 for HTTP.

    в логе

    <Trace> TCPHandlerFactory: TCP Request. Address: [::1]:54946
    <Debug> TCPHandler: Client has connected to wrong port.
    <Debug> TCPHandler: Done processing connection.
  • https://t.me/clickhouse_ru
    @den_crane #202326 10:02 PM, 01 Feb 2021
    можно на go написать маленьку софтину, чтобы по 9000 select 1 (с пользователем и паролем) делать
  • https://t.me/clickhouse_ru
    @den_crane #202327 10:04 PM, 01 Feb 2021
    (без пароля)
    curl localhost:8123/ping
    Ok.
  • https://t.me/clickhouse_ru
    @mrworks #202328 10:22 PM, 01 Feb 2021
    всем привет
    подскажите пожалуйста со следующим вопросом
    загужаю 15лямов записей в кх через буферную таблицу а кх показывает что кол-во строк а меня 5лямов где могли потеряться 10лямов записей?
  • https://t.me/clickhouse_ru
    Смержиться если строки повторяются а за буфером replacingmergetree например
  • https://t.me/clickhouse_ru
    да у меня движок ReplacingMergeTree
    данные разные но почему то он их схлопывает((
  • https://t.me/clickhouse_ru
    спасибо огромное, поменял движок
    все начало писаться
  • 02 February 2021 (152 messages)
  • https://t.me/clickhouse_ru
    @PavelKhripkov #202332 05:12 AM, 02 Feb 2021
    Привет, коллеги. Создал таблицу для вычитки из Кафки:

    CREATE TABLE t ( message String )
    ENGINE = Kafka
    SETTINGS
    kafka_broker_list = 'xxx:9092',
    kafka_topic_list = 'xxx',
    kafka_group_name = 'xxx',
    kafka_format = 'JSONAsString'

    После первого чтения (например так: select * from t), перестаёт читать, в логах ошибка:

    <Fatal> BaseDaemon: (version 20.12.5.14 (official build), no build id) (from thread 2806) (query_id: 2d2d8a45-a70e-4947-9ea8-a1df253e6ef6) Received signal Segmentation fault (11)
    <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Address not mapped to object.

    Вроде в более старых версиях была схожая проблема, но её устранили(?). Кто-нибудь сможет подсказать возможное решение? Заранее спасибо)
  • @756465662 #202333 05:16 AM, 02 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    а разве эта таблица предназначена для чтения напрямую? materialized view к ней обычно прикручивают
  • https://t.me/clickhouse_ru
    Прикручивал, результат тот же(
  • https://t.me/clickhouse_ru
    @Ilya_viv #202336 05:18 AM, 02 Feb 2021
    вы пишете, что читали из этой таблицы
  • https://t.me/clickhouse_ru
    в любом случае segfault быть не должно
  • https://t.me/clickhouse_ru
    Читал селектом, чтобы проверить, когда начинается проблема. Матвью тоже ведь читает из неё, только по тригеру.

    Вообще сначала делал по инструкции из документации, но получал одну и ту же ошибку.
  • https://t.me/clickhouse_ru
    Кстати, первый селект отрабатывает и отдаёт верный результат
  • https://t.me/clickhouse_ru
    это как раз не удивительно)
  • https://t.me/clickhouse_ru
    @Ilya_viv #202341 05:26 AM, 02 Feb 2021
    кафку проверили? руками топик норм забирается 2 раза подряд?
  • https://t.me/clickhouse_ru
    это не hard limit
    база в readonly встанет тогда когда место реально кончится
  • https://t.me/clickhouse_ru
    К кафке к тому же топику подключено много консьюмеров, сомнений в её работоспособности нет. Не может же из-за Кафки быть segfault?
  • https://t.me/clickhouse_ru
    segfsult не должен быть в любом случае
  • https://t.me/clickhouse_ru
    @egor_k2 #202345 05:45 AM, 02 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kochurovro #202346 07:16 AM, 02 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @monashev #202348 08:08 AM, 02 Feb 2021
    Привет.
    Скажите, пожалуйста, какие сейчас годные альтернативы генерации значений автоинкремента? Про UUID в курсе.
  • https://t.me/clickhouse_ru
    @dbalashov #202349 08:09 AM, 02 Feb 2021
    кто-то сказал snowflake? :)
  • https://t.me/clickhouse_ru
    @dbalashov #202350 08:09 AM, 02 Feb 2021
    а, автоинкремент...
  • https://t.me/clickhouse_ru
    @1168256868 #202351 08:39 AM, 02 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1168256868 #202352 08:41 AM, 02 Feb 2021
    Друзья, подскажите, пожалуйста, почему ReplacingMergeTree не склеивает записи.
    Может ли это быть связано с тем, что в таблице есть поле DateTime Default Now()
    ?
  • https://t.me/clickhouse_ru
    @temurlord #202353 08:41 AM, 02 Feb 2021
    Это поле является частью Order By?
  • https://t.me/clickhouse_ru
    Нет, order by другое поле
  • https://t.me/clickhouse_ru
    @1168256868 #202355 08:42 AM, 02 Feb 2021
    CREATE TABLE oferta_test
    (
    idItem Int64,
    sellerId Int32,
    idCategory Int32,
    offerName Nullable(String),
    price Decimal(10, 2),
    updated_at DateTime DEFAULT NOW('Europe/Berlin'),
    INDEX idItem idItem TYPE set(0) GRANULARITY 4,
    INDEX idCategory idCategory TYPE set(0) GRANULARITY 4,
    INDEX sellerId sellerId TYPE set(0) GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree()
    ORDER BY idItem
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @1168256868 #202356 08:42 AM, 02 Feb 2021
    Вот структура таблицы
  • https://t.me/clickhouse_ru
    @1168256868 #202357 08:44 AM, 02 Feb 2021
    Должно клеить по idItem, но нет..
  • https://t.me/clickhouse_ru
    Ну не должно, а может. Когда решит, что надо
  • https://t.me/clickhouse_ru
    Уже неделю жду ((
    Optimize table тоже не помогает
  • https://t.me/clickhouse_ru
    А в system.merges не висит?
  • https://t.me/clickhouse_ru
    Нет. system.merges пустая
  • Получилось побороть?
    Тоже сыпет сотни логов. Бесят )
  • https://t.me/clickhouse_ru
    неа... но уверен что проблема решится если приложения будут обращаться к серверу по порту 9000 )
  • https://t.me/clickhouse_ru
    @dengin #202364 09:39 AM, 02 Feb 2021
    Добрый день! Подскажите, насколько правильно использовать не временные поля при партиционировании, а какие-нибудь относительно низкокардинальные поля? При том, что это низкокардинальное поле уже часть ключа сортировки. Чувствую, что здесь что-то неправильно, но не могу аргументировать в споре.
  • Неудобно удалять старые данные (если это вообще требуется)
  • https://t.me/clickhouse_ru
    ну это через TTL можно решить, не обязательно DROP PARTITION делать
  • https://t.me/clickhouse_ru
    главное чтобы ВСЕ запросы в КХ выбирались по этому ключу.
  • https://t.me/clickhouse_ru
    Зависит от задачи

    главная цель партиций в том, чтобы у вас были разнесенные на диске наборы данных "не пересекающиеся"
    и чтобы в каждой партиции данные из PK были размазаны равномерно
    и чтобы куски данных внутри партиций (system.parts) имели на диске нормальный размер чтобы их быстро можно было full scan сделать если что...

    то есть определение партиций для сканирования это первый этап

    если партиций слишком много (десятки тысяч) а данные вы вставляете все равно "по времени"
    то при вставке можете получить ошибку что слишком много мелких партов надо вставить в слишком большое кол-во партиций
  • https://t.me/clickhouse_ru
    @dengin #202369 09:56 AM, 02 Feb 2021
    А в ReplacingMergeTree схлопывание происходит в рамках партиции же или по всей таблице при FINAL ?
  • https://t.me/clickhouse_ru
    в рамках партиции
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202368 #202371 09:59 AM, 02 Feb 2021
    "full scan сделать если что" - это если вдруг надо сделать запрос мимо ключа сортировки? Или в каких случаях это ещё надо?
  • https://t.me/clickhouse_ru
    ну вот вы делаете запрос по полю которого нет ни в PRIMARY KEY ни в ORDER BY ни в PARTITION BY ...
    будут паралельно тогда сканироваться все файлы <имя_колонки.bin> с распаковкой
    и с применением SECONDARY INDEX data skip алгоритмом если вдруг вы CREATE INDEX сделали
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202372 #202373 10:18 AM, 02 Feb 2021
    Да, это понимаю. Уточнил просто, вдруг есть ещё какие подводные камни.
    Спасибо.
  • https://t.me/clickhouse_ru
    @dtulendiyev #202374 10:21 AM, 02 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @dtulendiyev #202375 10:22 AM, 02 Feb 2021
    Привет ребят,

    Я создал таблицу, в которой у меня есть столбцы с некоторыми идентификаторами.
    Эти идентификаторы могут быть удалены в основной базе данных mysql, и я должен добавить их для каждого запроса CH в качестве фильтра (предложение NOT IN).
    Что я могу использовать для этого хранилища удаленных идентификаторов?
    Раз в неделю или месяц я хочу обновить эти удаленные идентификаторы в CH и удалить записи из основной таблицы CH.

    признателен за любую помощь, спасибо!
  • https://t.me/clickhouse_ru
    @edshaker #202376 10:29 AM, 02 Feb 2021
    summingMergeTree
    для каждого идентификатора вставлять обратное значение , и они со временем удалятся
  • https://t.me/clickhouse_ru
    ну на стороне MySQL сделайте отдельную таблицу с этими идентификаторами типа (id, delete_date)
    и сделайте на стороне ClickHouse
    словарь CREATE DICIONARY с SOURCE MySQL
    и выбирайте
    SELECT ... FROM db.clickhouse_table WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) = toDate('0000-00-00')

    а потом через TTL или через мутации удаляйте
    ALTER TABLE db.clickhouse_table DELETE WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) != toDate('0000-00-00')
  • https://t.me/clickhouse_ru
    тоже хороший вариант, можно collapsingMergeTree только
  • https://t.me/clickhouse_ru
    а потом через TTL удаляйте? должен быть калонка с настроенным TTL? или на любую калонку можно присвоить TTL ?
  • https://t.me/clickhouse_ru
    ALTER TABLE ... MODIFY TTL
  • @frienze31 #202381 10:52 AM, 02 Feb 2021
    Всем привет, есть какое-то решение?

    было переименование таблицы
    rename table table_name to table_name_old;

    запрос упал из-за нехватки на сервере дискового пространства.

    теперь получилось так, что файлы в дериктории для таблицы table_name_old есть, а самой таблицы нет.
    DB::Exception: Target path already exists: /var/lib/clickhouse/data/db/table_name_old/

    нагуглил решение с attach table, но оно не помогло, ошибка

    DB::Exception: Table table_name_old doesn't exist

    Буду рад любым подсказкам

    version 20.4.7.67 (official build)
  • https://t.me/clickhouse_ru
    можно на всю таблицу, также дополнительно можно на любые колонки
  • @kreuzerkrieg #202383 10:56 AM, 02 Feb 2021
    коллеги, такой вопрос, есть таблица, в ней есть парты, я хочу получить размер на диске только метаданных, т.е. размер парта минус размер всех bin файлов, есть такая возможность?
  • https://t.me/clickhouse_ru
    DESCIBE system.parts;
    если там нет, то нет
  • https://t.me/clickhouse_ru
    SELECT formatReadableSize(sum(bytes_on_disk)-sum(data_compressed_bytes)) FROM system.parts GROUP BY database, table, partitions

    но что вы подразумеваете под "метаданными"?
    mrk + secondary индексы?
  • ATTACH table делал сокращенным образом - без определения полей

    все решилось, когда в attach сделал определение всей структуры таблицы
  • в принципе да, марки и индексы
    сеичас попытаюсь проверить...
  • @DeHelden #202388 12:18 PM, 02 Feb 2021
    Joined.
  • @vvvjhaq #202389 12:37 PM, 02 Feb 2021
    Добрый день, хотим хранить данные в таблице за 3 дня. Хорошая ли практика сделать почасовые партиции? и каким выражением правильно задать их?
  • https://t.me/clickhouse_ru
    Пойдет
    PARTITION BY toStartOfHour(ts)
  • спасибо, на это и смотрел.
    листал историю чата, и часто упоминают, что в ЗК будет проблема при часовых партициях. в чем будет проблема? и будет ли она при хранении 3-х дней, потом удаление партици и заново.
  • https://t.me/clickhouse_ru
    сколько данных
    миллиадр строк в день?
  • https://t.me/clickhouse_ru
    в ZK проблема не в том что партиции почасовые
    а в том что партов может быть СЛИШКОМ много для синхронизации
    когда делают почасовые партиции а данные вставляют каждый раз "за последний день"
    и соответсвенно новые куски данных появляются в слишком большом кол-ве партиций...

    ZK не любит когда кол-во транзакций очень большое...

    но это крайние кейсы редко встречаемые
  • https://t.me/clickhouse_ru
    в зависимости от того сколько у вас данных и как вы их вставляете, проблем c ZK у вас быть не должно
  • https://t.me/clickhouse_ru
    На самом деле с zookeeper и часовые партиции видимо проблема в этом

    https://github.com/ClickHouse/ClickHouse/issues/3322
    znodes under /block_numbers seem to grow infinitely · Issue #3322 · ClickHouse/ClickHouse

    In our cluster, we regularly dropping old partitions out of the table. However, today i check some of Clickhouse's znodes and look like things under /block_numbers dont seem to be removed. ...

  • от 30 до 100млн в сутки
  • https://t.me/clickhouse_ru
    Наверное тогда не стоит мучатся с часовыми
    PARTITION BY toDate(ts)
    ORDER BY (toStartOfHour(ts),...)
  • https://t.me/clickhouse_ru
    @unamedrus #202398 12:48 PM, 02 Feb 2021
    Будет аналогично +-
  • https://t.me/clickhouse_ru
    IMHO тогда особого смысла делать почасовые партиции нет
    если дата есть в ORDER BY
    тогда оно равномерно по mrk файлам засечки сделает, и спокойно их фильтровать будет
  • подневные партиции+в ключе сортировки на 1 месте?
  • https://t.me/clickhouse_ru
    Да, ну точнее даже вопрос, вы как фильтруете по дате в запросе?
  • да, дата есть в ключе сортировки
  • да, будет фильтр по датам
  • https://t.me/clickhouse_ru
    @unamedrus #202404 12:50 PM, 02 Feb 2021
    По датам только, по часам нет? (тогда toStartOfHour вам вообще не нужен)
  • https://t.me/clickhouse_ru
    @Vanekru #202405 12:50 PM, 02 Feb 2021
    Joined.
  • по часам тоже фильтруем, но думаю будет реже чем просто запрос за последний день/два дня.
  • https://t.me/clickhouse_ru
    @Vanekru #202407 12:51 PM, 02 Feb 2021
    Колеги плиз хелп, есть ошибка DB::Exception: ALTER ADD INDEX is not supported for tables with the old syntax. Что за old syntax не могу найти информацию что бы почитать и сделать new syntax :) Спасибо.
  • https://t.me/clickhouse_ru
    MergeTree(date-column [, sampling_expression], (primary, key), index_granularity)
    Старый

    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#mergetree-query-clauses

    Deprecated Method for Creating a Table
    MergeTree | ClickHouse Documentation

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

  • вроде логично то что этот запрос выдает. спасибо
  • в ключе сортировки если указать id+toStartOfHour(ts) это будет лучше?
  • https://t.me/clickhouse_ru
    все запросы всегда идут с id и toStartOfHour(ts) ?
  • нет
    id/toStartOfHour(ts) - 90/10
  • https://t.me/clickhouse_ru
    вообще ORDER BY поля лучше всего в таблице указывать от МЕНЬШЕЙ кардинальности к большей
    то есть
    toStartOfHours явно меньшую кардинальность имеет чем id
    поэтому ее лучше сначала поместить
    Данные лучше сжиматься будут в остальных полях
  • https://t.me/clickhouse_ru
    @element_il #202414 02:23 PM, 02 Feb 2021
    Добрый день!
    Подскажите по восстановлению бекапа в кластере
    бекап делаю так alter table db.table freeze
    рестор ALTER TABLE db.table ATTACH PARTITION ’11’
    бекап из shadow/{{ increment }} кладу сюда /var/lib/clickhouse/data/db/table/detached/{{ increment }}
    далее создаю бд и создаю 3 таблицы на каждой ноде clickhouse и после этого рестор

    рестор отрабатывает со статусом - ok, но данных нет.
    может еще что-то надо сделать?
  • https://t.me/clickhouse_ru
    https://github.com/AlexAkulov/clickhouse-backup
    посмотрите как тут сделано
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

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

  • https://t.me/clickhouse_ru
    @element_il #202416 02:28 PM, 02 Feb 2021
    если правильно понял на новых версиях кх движок атомик и там симлинки поэтому clickhouse-backup не работает на новых версиях
  • https://t.me/clickhouse_ru
    опс, да извините, вы правильно поняли
  • https://t.me/clickhouse_ru
    @x052bb #202418 03:26 PM, 02 Feb 2021
    Подскажите, пожалуйста.

    Есть кластер, состоящий из двух шардов. Над этим кластером создана схема, в которой лежит основная таблица, которая, соответственно, шардируется.

    Хочется добавить в ту же схему ещё одну доп таблицу, но чтобы она не шардировалась, а просто реплицировалась на все ноды.

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

    Это, вообще, рабочее решение или костыль? Может быть, есть другие способы?
  • https://t.me/clickhouse_ru
    Спасибо.
    Подобрал правильные параметры генерации и заработало отлично!
  • https://t.me/clickhouse_ru
    Рабочее, мы используем - проблем нет
  • https://t.me/clickhouse_ru
    @karazbaev #202421 03:30 PM, 02 Feb 2021
    добрый день! А есть ли готовый мониторинг с аналитикой запросов в кликхаус, который метрики из query_log/query_thread_log сам заберет и разложит по полочкам, как сделано для постгреса в pgwatch2/powa4 или для MySQL в PMM?
  • https://t.me/clickhouse_ru
    @monashev #202422 03:30 PM, 02 Feb 2021
    А как КН переносить внезапное отключение виртуалки, в которой он активно работает? Что может приключиться?
  • https://t.me/clickhouse_ru
    а какую именно либу используете? я для Go нашёл такое: https://github.com/beinan/fastid
    GitHub - beinan/fastid: Snowflake ID generating in Go

    Snowflake ID generating in Go. Contribute to beinan/fastid development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Я про таблицу во всех шардах отвечал, про ID ничего подсказать не могу.
  • https://t.me/clickhouse_ru
    @Xapa6apga #202426 04:07 PM, 02 Feb 2021
    всем привет, а подскажите как лучше прочитать всю таблицу

    Есть таблица
    create table solder
    (
    id String,
    number String,
    cost Int32,
    currency Nullable(String),
    prize Nullable(Int32),
    date_sold DateTime,
    date Date,
    game_id Int32,
    user_id Int32,
    session_guid Nullable(String),
    session_id Nullable(String),
    session_balance Nullable(Int32),
    g_count Nullable(Int8),
    is_free Nullable(Int8),
    is_refund Nullable(Int8),
    roundnum Nullable(String),
    ip Nullable(String),
    ua Nullable(String),
    platform Nullable(String),
    date_updated Nullable(DateTime),
    is_real Nullable(Int8),
    is_gt_max Nullable(Int8) default CAST(0, 'Nullable(Int8)'),
    promotion_id Nullable(Int32) default CAST(0, 'Nullable(Int32)'),
    is_suspicious_activities Nullable(Int8) default CAST(0, 'Nullable(Int8)')
    )
    engine = MergeTree() PARTITION BY toYYYYMMDD(date) ORDER BY (id, date, date_sold, game_id, user_id) SETTINGS index_granularity = 8192

    как только делаю в запросе CASE, пишет Read Time out
    select tx.user_id, sum(ts.cost-ts.prize), sum(ts.cost), count(ts.id), sum(case when ts.date between today() - 7 and today() then ts.cost - ts.prize else 0 end)
    from solder ts
    group by ts.user_id

    Что в таком случае делать, спасибо (
  • https://t.me/clickhouse_ru
    @monashev #202427 04:08 PM, 02 Feb 2021
    tx.user_id -> ts.user_id
  • https://t.me/clickhouse_ru
    потеряются некоторые последние инсерты
  • https://t.me/clickhouse_ru
    А сама БД не попортится?
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @monashev #202433 04:56 PM, 02 Feb 2021
    И сервер запустится без ручных манипуляций?
  • https://t.me/clickhouse_ru
    да с вероятностью 99.99999%
  • https://t.me/clickhouse_ru
    @monashev #202435 04:57 PM, 02 Feb 2021
    Спасибо за отличную новость!
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202436 04:58 PM, 02 Feb 2021
    Вопрос про мутации

    1) Были сделаные 225 мутаций вида update set cola = 2 where colb = 30;
    2) Данных порядка 2.5 млрд
    3) В system.mutations мутаций которые в процессе — нет, то есть все завершены
    4) При этом select показывает еще старые данные

    В чем может быть дело? Кроме того что я не правильно сделал select
  • https://t.me/clickhouse_ru
    есть 38 багов на эту тему. Давайте начнем с версии КХ. И вы когда-нибудь делали рестор базы? Испольуете clickhouse-backup ?
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202438 05:02 PM, 02 Feb 2021
    1) 20.12.3.3
    2) Не делал через clickhouse-backup, есть просто в tar.gz копии некоторых партов (нужных)

    И в догонку еще, — это вот второй шард, а первый шард на нем так же порядка 2.5млрд но там все мутации висят в статусе что они "в процессе", уже минут 25, можно как либо понять может быть косвенно что процесс вообще идёт, ясно что реврайт партов не быстрый процесс
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202439 05:03 PM, 02 Feb 2021
    На втором шарде селект стал показывать то что нужно !
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202440 05:03 PM, 02 Feb 2021
    Успех
  • https://t.me/clickhouse_ru
    >просто в tar.gz копии
    рестор был?
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202442 05:04 PM, 02 Feb 2021
    Рестора не было
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202443 05:04 PM, 02 Feb 2021
    В общем на втором шарде всё ок, на первом тупо висят как "в процессе" все мутации :(
  • https://t.me/clickhouse_ru
    таблица replicated?

    все я запутался.

    В system.mutations мутаций которые в процессе — нет, то есть все завершены
    При этом select показывает еще старые данные
    На втором шарде селект стал показывать то что нужно
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202445 05:08 PM, 02 Feb 2021
    Таблица не replicated но на неё смотрит Distributed. Всего 2 шарда на каждому запущено было 225 мутаций. На одном - всё окей, на втором они висят в процессе выполнения. Я думаю что я просто зря сотрясаю воздух и надо подождать, там всё таки 1.2Тб данных
  • https://t.me/clickhouse_ru
    в system.merges видно мутации и %
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202447 05:09 PM, 02 Feb 2021
    % выполнения ??
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202449 05:09 PM, 02 Feb 2021
    А какая колонка?
  • https://t.me/clickhouse_ru
    progress
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202451 05:10 PM, 02 Feb 2021
    Нет такой у меня :(
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202452 05:11 PM, 02 Feb 2021
    describe table system.mutations;

    database,String
    table,String
    mutation_id,String
    command,String
    create_time,DateTime
    block_numbers.partition_id,Array(String)
    block_numbers.number,Array(Int64)
    parts_to_do_names,Array(String)
    parts_to_do,Int64
    is_done,UInt8
    latest_failed_part,String
    latest_fail_time,DateTime
    latest_fail_reason,String
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202453 05:14 PM, 02 Feb 2021
    Все закончилось успешно !
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202454 05:14 PM, 02 Feb 2021
    Я раньше времени начал волноваться :)
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202455 05:14 PM, 02 Feb 2021
    Но progress конечно был бы полезен, видимо это в более новой версии, либо я что-то не осиливаю
  • https://t.me/clickhouse_ru
    @monashev #202456 05:15 PM, 02 Feb 2021
    Есть довольно удобный гуёвый клиент heidisql.com . Но он не может подключиться с драйвером MySQL, ибо пытается выполнить несуществующую функцию CONNECTION_ID() .

    Если есть пара секунд, полайкайте, пожалуйста, поддержку ClickHouse в этом клиенте: https://github.com/HeidiSQL/HeidiSQL/issues/135
    Clickhouse support · Issue #135 · HeidiSQL/HeidiSQL

    https://clickhouse.yandex/ https://github.com/yandex/clickhouse-odbc

  • https://t.me/clickhouse_ru
    ну вы и читатель епт

    > в system.merges видно мутации и %
  • https://t.me/clickhouse_ru
    @mrAndersen7 #202458 05:18 PM, 02 Feb 2021
    Сорри :(
  • https://t.me/clickhouse_ru
    @den_crane может вы подскажите? версия кх 21.1.2.15
  • https://t.me/clickhouse_ru
    ??????????

    detached/{{ increment }}

    ?????? {{ increment }} ?????????

    этот {{ increment }} это индефикатор бекапа. Его не должно быть в detached
  • https://t.me/clickhouse_ru
    @element_il #202461 05:27 PM, 02 Feb 2021
    Должна быть папка store?
  • https://t.me/clickhouse_ru
    @element_il #202462 05:27 PM, 02 Feb 2021
    Или то что в store?
  • https://t.me/clickhouse_ru
    что за бред, откуда store ?
  • https://t.me/clickhouse_ru
    @den_crane #202464 05:28 PM, 02 Feb 2021
    давайте по шагам на конкретных примерах
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #202466 05:29 PM, 02 Feb 2021
    что вы понимаете под рестором? attach нужен
  • https://t.me/clickhouse_ru
    @element_il #202467 05:29 PM, 02 Feb 2021
    вот пример, то что в shadow
  • https://t.me/clickhouse_ru
    @den_crane #202468 05:30 PM, 02 Feb 2021
    сейчас сделаю пример
  • https://t.me/clickhouse_ru
    @element_il #202469 05:30 PM, 02 Feb 2021
    ALTER TABLE db.table ATTACH PARTITION ’{{ increment }}’ - вот что для меня рестор)
  • https://t.me/clickhouse_ru
    вот тренируйтесь на этом примере
    https://gist.github.com/den-crane/5ae44ec04961ec62286835c8798e2728
    atomic-backup

    atomic-backup. GitHub Gist: instantly share code, notes, and snippets.

  • https://t.me/clickhouse_ru
    понял свою ошибку, спасибо большое!
  • https://t.me/clickhouse_ru
    @avtomon86 #202472 06:14 PM, 02 Feb 2021
    Joined.
  • а разморозить?
  • https://t.me/clickhouse_ru
    что? о чем вы ? unfreeze ? зачем это ?
    это флаги -r-rw-- на файлах/партах.
    Они не нужны не для чего. Яндекс облако кажется использует эту фичу чтобы не вести реестр партов которые забекаплены.
  • @podshumok #202475 06:33 PM, 02 Feb 2021
    A.s осталась без слияний
  • @podshumok #202476 06:36 PM, 02 Feb 2021
    это не тоже самое, что SYSTEM STOP MERGES A.s?
  • https://t.me/clickhouse_ru
    да ща. нет конечно
  • https://t.me/clickhouse_ru
    вообще никакой связи. freeze просто создает хардинки, на мержи вообще не влияет
  • @podshumok #202479 06:39 PM, 02 Feb 2021
    то есть новые куски будут появляться
  • @podshumok #202480 06:39 PM, 02 Feb 2021
    но не в shadow
  • https://t.me/clickhouse_ru
    @den_crane #202481 06:41 PM, 02 Feb 2021
    фриз создает моментальный снепшот партции или таблицы в shadow используя хардлинки
  • @podshumok #202482 06:49 PM, 02 Feb 2021
    аааа, не очевидно про freeze, спасиб
  • @podshumok #202483 06:49 PM, 02 Feb 2021
    контр-интуитивно
  • https://t.me/clickhouse_ru
    @sasha_from_space #202484 10:48 PM, 02 Feb 2021
    привет, как получить первый элемнт массива?
    SELECT a FROM ... >>> ['aa', 'bb']...

    SELECT a.1 FROM .. >>> Code: 43, e.displayText() = DB::Exception: First argument for function tupleElement must be tuple or array of tuple.:
    в чем проблема?
  • https://t.me/clickhouse_ru
    a[1]
  • https://t.me/clickhouse_ru
    @unamedrus #202486 10:48 PM, 02 Feb 2021
    a.1 это для туплов синтаксис
  • https://t.me/clickhouse_ru
    @sasha_from_space #202487 10:49 PM, 02 Feb 2021
    аааа! понял, спасибо! работает!
  • 03 February 2021 (87 messages)
  • https://t.me/clickhouse_ru
    пока такого нет
  • https://t.me/clickhouse_ru
    если хотите, можете помочь улучшить
    https://github.com/Altinity/clickhouse-operator/blob/master/grafana-dashboard/ClickHouse_Queries_dashboard.json
    Altinity/clickhouse-operator

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

  • https://t.me/clickhouse_ru
    спасибо)
  • https://t.me/clickhouse_ru
    судя по названию, он только для кликхауса в кубернетисе?
  • @1305976133 #202493 06:33 AM, 03 Feb 2021
    Joined.
  • @1440998766 #202494 08:09 AM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @kizimenko #202495 08:38 AM, 03 Feb 2021
    какая из функций поиска подстроки самая легкая для CPU, если это корректный вопрос.

    Второй вопрос имеет ли значение длина строки ?
  • https://t.me/clickhouse_ru
    @kizimenko #202496 08:42 AM, 03 Feb 2021
    И третий вопрос, если сделать колонку с Materialized, сложить туда Категории (строки) и уже по ним делать выборку, они будут просто короче и меньше различных вариантов, это ускорит запрос ?
  • https://t.me/clickhouse_ru
    @kizimenko #202497 08:43 AM, 03 Feb 2021
    сейчас есть поиск подстроки в url для понимания что за категория страницы. И я думаю как это можно оптимиизровать
  • https://t.me/clickhouse_ru
    @KiLEXst #202498 08:45 AM, 03 Feb 2021
    я сделал материалку с регекспом которая нарезает урл - потом уже группировки и поиск получается не полнотекстовый. вышло весьма быстро
  • https://t.me/clickhouse_ru
    ну там можно взять JSON
    и заменить
    cluster('all-sharded',system.query_log)
    на просто
    system.query_log
    или на
    cluster('your_cluster_name_from_remote_servers_config_xml_section',system.query_log)

    и можно без kubernetes использовать
    только clickhouse-grafana плагин в grafana поставьте
  • https://t.me/clickhouse_ru
    спасибо, попробую
  • https://t.me/clickhouse_ru
    не совсем понял про нарезает, складываете в массив что ли?
  • https://t.me/clickhouse_ru
    нет, беру первую часть урла и складываю в отдельное поле
    ну типа
    https://github.com/minio/minio/tree/master/docs/erasure/storage-class
    раскладываю в колонки
    minio minio tree master docs …
    minio/docs/erasure/storage-class at master · minio/minio

    High Performance, Kubernetes Native Object Storage - minio/docs/erasure/storage-class at master · minio/minio

  • https://t.me/clickhouse_ru
    @KiLEXst #202503 08:53 AM, 03 Feb 2021
    в самом деле зависит от проекта, мне 2 полей хватает
  • https://t.me/clickhouse_ru
    ну на самом деле там под капотом ОЧЕНЬ много оптимизаций

    если данные по system.parts распределены равномерно
    тогда самый простой вариант это создать еще одну колонку у которой DEFAULT extract(URL, pattern) или extractURLParameter(URL, param_name)
  • https://t.me/clickhouse_ru
    и еще урлы нормализую - переменные оттуда убираю. тоже индивидуально для проектов
  • https://t.me/clickhouse_ru
    просто extract(URL, pattern)
  • https://t.me/clickhouse_ru
    @kizimenko #202507 08:57 AM, 03 Feb 2021
    Спасибо, пойду тестировать
  • https://t.me/clickhouse_ru
    @vadvmkn #202508 09:06 AM, 03 Feb 2021
    добавляю данные через http используя драйвер https://github.com/mailru/go-clickhouse:
    Code: 164, Message: default: Cannot execute query in readonly mode. For queries over HTTP
    подскажите что делать?
    GitHub - mailru/go-clickhouse: Golang SQL database driver for Yandex ClickHouse

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

  • @githubreleases_bot #202509 b o t 09:10 AM, 03 Feb 2021
    ClickHouse/ClickHouse tagged: v21.1.3.32-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.1.3.32-stable
    Release notes:
    ClickHouse stable release v21.1.3.32-stable
    Release v21.1.3.32-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.1.3.32-stable

  • https://t.me/clickhouse_ru
    @moskovkin #202510 09:19 AM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    query - ro, exec -rw в этом драйвере
  • @yuliachr #202512 09:38 AM, 03 Feb 2021
    Подскажите, пожалуйста, как, имея таблицы, сгенерить sql-скрипт, который создаст такие таблицы?
  • https://t.me/clickhouse_ru
    SELECT create_table_query FROM system.tables;
  • Спасибо!
  • https://t.me/clickhouse_ru
    @kizimenko #202515 09:44 AM, 03 Feb 2021
    что может ограничвать потребление опертивки при условии что CH в докер контейнере, смотрю по docker stats
    Ситуация
    - один сервак: контейнеру выделен лимит 64 гига оперативки, он использует 2, в простое и при запросах.
    - другой сервак: конктенеру выделено 24 гига он использует 12 в простое
  • @ogavrilov #202516 10:03 AM, 03 Feb 2021
    Может и не надо больше?
  • https://t.me/clickhouse_ru
    @kizimenko #202517 10:06 AM, 03 Feb 2021
    не пойму почему на серваке где выдано меньше гигов, и база почти всегда в простое стоит, жрет оперативы больше чем база в которую регулярно идет запись и запросы
  • https://t.me/clickhouse_ru
    @kizimenko #202518 10:06 AM, 03 Feb 2021
    может и не надо больше, но почему то есть подозрение что ее что то ограничивает
  • @theo_inside #202519 10:32 AM, 03 Feb 2021
    Всем привет.
    С чем может быть связана проблема, при которой запрос вида

    select
    main.value_1 as value_1,
    main.value_2 as value_2,
    main.value_1 as v1,
    main.value_2 as v2
    from (подзапрос as main)

    выдаёт разные, отличающиеся на порядки и никак не связанные результаты в колонках value_1 и v1 ?
  • https://t.me/clickhouse_ru
    dictionary по моему для этой задачи походят
  • https://t.me/clickhouse_ru
    @a1s_333444 #202521 10:53 AM, 03 Feb 2021
    Привет ребят, нашел странности в логах КХ
    2021.01.18 22:54:34.868742 [ 19518 ] {} <Error> InterserverIOHTTPHandler: Code: 24, e.displayText() = DB::Exception: Cannot write to ostream at offset 4195414, Stack trace (when copying this message, always include the lines below):

    0. DB::WriteBufferFromOStream::nextImpl() @ 0x9a4b360 in /usr/bin/clickhouse
    1. DB::WriteBufferFromHTTPServerResponse::nextImpl() @ 0xe4aaca7 in /usr/bin/clickhouse
    2. DB::HashingWriteBuffer::nextImpl() @ 0xe22227d in /usr/bin/clickhouse
    3. DB::DataPartsExchange::Service::sendPartFromDisk(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, DB::WriteBuffer&, bool) @ 0xe21c543 in /usr/bin/clickhouse
    4. DB::DataPartsExchange::Service::processQuery(Poco::Net::HTMLForm const&, DB::ReadBuffer&, DB::WriteBuffer&, Poco::Net::HTTPServerResponse&) @ 0xe21b46a in /usr/bin/clickhouse
    5. DB::InterserverIOHTTPHandler::processQuery(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&, DB::InterserverIOHTTPHandler::Output&) @ 0xe4ae339 in /usr/bin/clickhouse
    6. DB::InterserverIOHTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0xe4aea64 in /usr/bin/clickhouse
    7. Poco::Net::HTTPServerConnection::run() @ 0x10c9c915 in /usr/bin/clickhouse
    8. Poco::Net::TCPServerConnection::start() @ 0x10cd40df in /usr/bin/clickhouse
    9. Poco::Net::TCPServerDispatcher::run() @ 0x10cd5af1 in /usr/bin/clickhouse
    10. Poco::PooledThread::run() @ 0x10e06c99 in /usr/bin/clickhouse
    11. Poco::ThreadImpl::runnableEntry(void*) @ 0x10e02bca in /usr/bin/clickhouse
    12. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    13. __clone @ 0xfe96d in /usr/lib64/libc-2.17.so
    (version 20.10.6.27 (official build))
    2021.01.18 22:54:34.869191 [ 19518 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 32, e.displayText() = I/O error: Broken pipe, Stack trace (when copying this message, always include the lines below):

    0. Poco::Net::SocketImpl::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x10cccd8d in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::sendBytes(void const*, int, int) @ 0x10cce3e7 in /usr/bin/clickhouse
    2. Poco::Net::StreamSocketImpl::sendBytes(void const*, int, int) @ 0x10cd3176 in /usr/bin/clickhouse
    3. Poco::Net::HTTPSession::write(char const*, long) @ 0x10ca0233 in /usr/bin/clickhouse
    4. Poco::Net::HTTPChunkedStreamBuf::writeToDevice(char const*, long) @ 0x10c8e15d in /usr/bin/clickhouse
    5. Poco::BasicBufferedStreamBuf<char, std::__1::char_traits<char>, Poco::Net::HTTPBufferAllocator>::sync() @ 0x10c8f0b9 in /usr/bin/clickhouse
    6. Poco::Net::HTTPChunkedIOS::~HTTPChunkedIOS() @ 0x10c8e3ac in /usr/bin/clickhouse
    7. non-virtual thunk to Poco::Net::HTTPChunkedOutputStream::~HTTPChunkedOutputStream() @ 0x10c8ef2b in /usr/bin/clickhouse
    8. Poco::Net::HTTPServerResponseImpl::~HTTPServerResponseImpl() @ 0x10c9e06f in /usr/bin/clickhouse
    9. Poco::Net::HTTPServerConnection::run() @ 0x10c9c969 in /usr/bin/clickhouse
    10. Poco::Net::TCPServerConnection::start() @ 0x10cd40df in /usr/bin/clickhouse
    11. Poco::Net::TCPServerDispatcher::run() @ 0x10cd5af1 in /usr/bin/clickhouse
    12. Poco::PooledThread::run() @ 0x10e06c99 in /usr/bin/clickhouse
    13. Poco::ThreadImpl::runnableEntry(void*) @ 0x10e02bca in /usr/bin/clickhouse
    14. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    15. __clone @ 0xfe96d in /usr/lib64/libc-2.17.so
    (version 20.10.6.27 (official build))

    Это может означать только одно - беды с диском?
  • @Torydal #202522 10:59 AM, 03 Feb 2021
    Всем привет! Есть тут эксперты по odbc-драйверу? Нормальная ли производительность, фулскан с винды через odbc-драйвер таблицы 1 млн строк и 472 столбца, занимает 1 минуту в формате RowBinaryWithNamesAndTypes? При этом пробовали через нативный clickhouse-client, там скорость в таком же формате около 12 сек. Упора в сетку/цп/озу нигде нет, ни на сервере ни на клиенте. Пробовали как с одной ноды дергать, так и с кластера в 2 и 5 нод, используя distributed таблицу, результаты примерно одинаковые +- 1-2сек, что наверное погрешность. Как-то ещё можно ускорить или всё-таки упор уже в драйвер ? В таблице в основном числовые значения
  • https://t.me/clickhouse_ru
    @cherkasov_vladislav #202523 01:30 PM, 03 Feb 2021
    Коллеги SELECT timezone() выдает Europe/Berlin, сменил зону в конфигах и на самом сервере, однако ничего не поменялось, подскажите как поправить?
  • https://t.me/clickhouse_ru
    Рестарт нужен
  • https://t.me/clickhouse_ru
    @cherkasov_vladislav #202525 01:39 PM, 03 Feb 2021
    CH перезапустил, сам сервак только не перезапускал
  • https://t.me/clickhouse_ru
    как менял таймзону на сервере? =)
  • https://t.me/clickhouse_ru
    timedatectl set-timezone UTC
  • https://t.me/clickhouse_ru
    @cherkasov_vladislav #202528 01:42 PM, 03 Feb 2021
    В общем после рестарта сервера все работает
  • @chamaeleon_rex #202529 01:52 PM, 03 Feb 2021
    Всем привет. Подскажите, пожалуйста, а можно ли как-то сделать одну вьюху и для вставки и для выборки из существующей таблицы? (некий аналог переименования таблицы, что ли)
  • @AleksandrPt #202530 02:15 PM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @stuff_sf #202531 03:02 PM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    что-то типа distributed engine?
  • https://t.me/clickhouse_ru
    @artem_zi #202534 03:39 PM, 03 Feb 2021
    Привет, ткните пожалуйста куда почитать, как правильно удалить колонку использующуюся в ключе? Я так понимаю это причина ошибки DB::Exception: ALTER of key column <column_name> must be metadata-only
  • @vvvjhaq #202535 03:45 PM, 03 Feb 2021
    Добрый вечер. Подскажите, почему такой запрос не выполняется? Просто висит в процессах и все? Пинг ходит с локал ну удаленный, бд/таблицы есть. Куда можно взглянуть?
    Сервера должны быть прописаны в remote_server?
    select * from remote('192.168.XXX.XXX:8123', default.test_tab2, 'XXX’, 'XXX’);
  • https://t.me/clickhouse_ru
    Я думаю так нельзя делать
  • https://t.me/clickhouse_ru
    ну так не бывает ведь (надеюсь :)), возможность явно необходимая и как минимум через insert ...select создавая новую таблицу можно. Но довольно коряво выглядит, помню где то попадалось через правки метаданных, но не могу найти. Попытался в zookeeper индексы поудалять на стенде но толку нет.
  • https://t.me/clickhouse_ru
    Ну только если так
    Вы спросили конкретно про альтер
    Альтерить колонки из ключа сортировки нельзя
  • https://t.me/clickhouse_ru
    @mikhailberg #202539 03:51 PM, 03 Feb 2021
    А так создавайте новую таблицу и переливайте туда данные
  • порт 9000 должен быть
  • https://t.me/clickhouse_ru
    мда, попробую до утра подождать, может будут идеи у кого, как то печально выглядит, десятки gb туда сюда катать не очень хочется.
  • Да. Только не хочется создавать на всех шардах кластеры размером в один шард
  • десятки ГБ это 10-20 минут на все про все)
  • https://t.me/clickhouse_ru
    Это меньше часа работы
  • https://t.me/clickhouse_ru
    @artem_zi #202545 04:13 PM, 03 Feb 2021
    как минимум похоже можно делать через копирование partition ALTER TABLE dst_table ATTACH PARTITION '<partition_from_sys.part>' FROM source_table; и ничего лучше пока не нахожу, но в любом случае за подсказки спасибо.
  • https://t.me/clickhouse_ru
    Боюсь приаттачить не получится, если структура таблицы изменится. Как себя должен повести кх когда увидит отсутствующую или, наоборот, дополнительную колонку?
  • https://t.me/clickhouse_ru
    да тут я явно не подумал... но в принципе можно попробовать перелить в какой -то Memory, удалить поле и уже залить в Distributed :) хотя тут конечно все плюсы сразу теряются.
  • https://t.me/clickhouse_ru
    @CYevhenii #202548 04:58 PM, 03 Feb 2021
    Можно ли сделать MATERIALIZED VIEW которая будет обновлятся по заданаму периоду времени (например каждые 10 мин)?
  • средаствами КХ - нет, только кроном

    если МВ маленькая в результате можно попробовать сделать вью и на нее повесить словарь но это так себе решение

    ещё есть live view, но я про него не знаю
  • https://t.me/clickhouse_ru
    @sasha_from_space #202551 05:56 PM, 03 Feb 2021
    привет! как вернуть null вместо 0 если элемента не существует в массиве?
    a=[1,2,3]
    SELECT arr[4] >> 0 NULL?
  • https://t.me/clickhouse_ru
    @sasha_from_space #202552 05:57 PM, 03 Feb 2021
    SELECT [1,2,3][4];
  • https://t.me/clickhouse_ru
    Если в массиве не будет нулей то можно:
    nullIf(arr[4],0)

    иначе придется городить логику if(length(arr) >= x, arr[x], NULL)
  • https://t.me/clickhouse_ru
    @sasha_from_space #202554 06:00 PM, 03 Feb 2021
    Oh nullif supported in CH! отлично, спасибо, нулей нет
  • https://t.me/clickhouse_ru
    @sasha_from_space #202555 06:03 PM, 03 Feb 2021
    было бы неплохо если добавить дефолт в arrayElement(arr, n, default)
  • https://t.me/clickhouse_ru
    CH не смог клиенту по http поток отдать, потому что клиент ушел
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202548 #202557 06:42 PM, 03 Feb 2021
    Что значит "обновляться"? MV обрабатывает только вставляемые в таблицу данные.

    Можно сделать MV, которая будет писать в буфер, имеющий период вставки в следующую таблицу - 10 минут. Тогда результат обработки MV в результирующей таблице будет появляться раз в 10 минут.
  • https://t.me/clickhouse_ru
    а curl через http с RowBinaryWithNamesAndTypes сколько дает?
  • https://t.me/clickhouse_ru
    можно переопределять

    cat /etc/default/clickhouse
    export TZ=Europe/Berlin

    тогда нужен рестарт только КХ
  • https://t.me/clickhouse_ru
    никак
  • https://t.me/clickhouse_ru
    8123 это нет тот порт. remote умеет только 9000 tcp, 8123 = http
  • https://t.me/clickhouse_ru
    нельзя
  • https://t.me/clickhouse_ru
    нет
  • спс, я уже понял, там ниже ответил сам себе)
  • пока тут, можно спросить.
    Есть таблица, в ключе сортировки на первом месте id.
    Выполняются регулярно запросы select * from tab where id in( и тут большой список id).
    Как можно ускорить, если можно конечно?
  • https://t.me/clickhouse_ru
    надо смотреть используется индекс или нет.

    я бы просто запустил select * from tab where identity(id) in( и тут большой список id)
    и посмотрел есть разница или нет в статистике запроса
  • значительно хуже
    set force_primary_key=1;
    говорит не могу выполнять запрос(
  • https://t.me/clickhouse_ru
    значительно хуже с identity ?
  • да
  • https://t.me/clickhouse_ru
    значит используется primary_key и уже ничего больше не выжать, ну или index_granularity но надо смотреть внимаетльно что за таблица и что вообще за воркфлоу.
  • правильно ли я понимаю, если ставлю такую настройку (set force_primary_key=1;), то запрещает выполнять если не используется ПК?
    Нужно использовать весь ПК или можно только его часть?
  • https://t.me/clickhouse_ru
    вы чето брешите

    create table xxx( A Int64) Engine MergeTree order by A;
    set force_primary_key=1;

    select * from xxx where A in (1,2,3)
    Ok.

    select * from xxx where identity(A) in (1,2,3) ;
    DB::Exception: Primary key (A) is not used and setting 'force_primary_key' is set..
  • sorry, неправильно выполнил последовательность команд
    все как у вас, да
  • @terentevms #202576 07:14 PM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @dedushka_mao #202577 07:50 PM, 03 Feb 2021
    Подскажите пожалуйста, можно ли при создании базы данных указать ей место для хранения данных в соответствии с какой-то политикой хранения?
    Хочу создать MaterializedMySQL на другом диске
  • @AlexanderNozdrin #202578 10:13 PM, 03 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @461610490 #202579 11:29 PM, 03 Feb 2021
    Joined.
  • 04 February 2021 (164 messages)
  • https://t.me/clickhouse_ru
    @graid2030 #202582 01:11 AM, 04 Feb 2021
    Есть несколко вопросов по Buffer таблице:
    > Заметим, что даже для таблиц типа Buffer не имеет смысла вставлять данные по одной строке, так как таким образом будет достигнута скорость всего лишь в несколько тысяч строк в секунду…
    Понимаю что это довольно условно, но имеется ввиду запись в одну таблицу или в общем по кластеру.
    Сейчас есть одна табличка, в нее идет порядка 4k одиночных записей в секунду, можно ли обойтись Buffer?
    Так же несовсем понятен смысл этого
    > Если таблица назначения является реплицируемой, то при записи в таблицу Buffer будут потеряны некоторые ожидаемые свойства реплицируемых таблиц.
    Может кто-то расшифровать?
  • https://t.me/clickhouse_ru
    В конфигурации есть system.storage_policies
  • https://t.me/clickhouse_ru
    1 можно

    2 у replicated таблиц есть фича -- дедупликация инсертов. Если инсерт совпадает до бита с одним из предыдущих, он будет пропущен.
    буферная таблица склеивает инсерты, поэтому они не совпадают до бита, поэтому дедупликация инсертов не работает
  • https://t.me/clickhouse_ru
    @bralbral #202585 03:55 AM, 04 Feb 2021
    Добрый день, имеет смысл использовать кодеки на колонки SimpleAggrefation ?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    Благодарю .
  • https://t.me/clickhouse_ru
    @den_crane #202588 03:58 AM, 04 Feb 2021
    например https://github.com/ClickHouse/ClickHouse/issues/17775#issuecomment-738880540 SimpleAggregateFunction(sum, UInt64) CODEC(T64, LZ4)
  • https://t.me/clickhouse_ru
    создать новую таблицу с новой структурой и сделать INSERT INTO ... SELECT...
    проверить запросы
    потом удалить старую таблицу
    новую переименовать если надо
  • https://t.me/clickhouse_ru
    @trisetianto #202591 04:46 AM, 04 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nbnames #202592 05:55 AM, 04 Feb 2021
    Joined.
  • 16 сек) и с него сетка до 2гбит нагружается. А когда odbc драйвер, то 1 минута и сетка примерно до 500мбит нагружается
  • https://t.me/clickhouse_ru
    odbc драйвер как измеряли? на каком то языке? или time isql ?
  • У нас есть bi, который умеет через odbc подключаться. Смотрел по логам время которое тратится на сам запрос, без учёта отрисовки данных. А что, через curl производительность должна быть такая же как и через odbc драйвер?
  • https://t.me/clickhouse_ru
    нет, производительность BI может быть не той что вы ожидаете и узким местом может быть не драйвер, а то, как BI его использует

    time isql ...
    что говорит?
  • Это не смотрели. У нас все клиенты виндовые. Я так понимаю isql надо с линуха ?
  • Год назад были похожие проблемы с производительностью при выборе большого кол-ва строк из ClickHouse при помощи виндового odbc драйвера. Дамп трафика показал что используются очень маленькие пакеты для пересылки данных. В итоге просто написали кастомный коннектор для своего BI, обращающийся к ClickHouse по http. Это позволило значительно ускорить процесс получения данных.
  • Симптомы были похожие. Ни где затыка вроде нет, а запрос выполняется оочень медленно при большом кол-ве строк в результатах запроса.
  • А что у вас за bi, если не секрет? Я ещё хочу покопаться и выяснить, может действительно наш bi не очень хорошо работает с драйвером и из за него проблемы
  • QlikView
  • https://t.me/clickhouse_ru
    ой точно
    под винду компилируется вот это
    https://crates.io/crates/odbc-tools

    могу собранные .exe положить куда нибудь
  • Буду благодарен)
  • https://t.me/clickhouse_ru
    @703037334 #202604 07:05 AM, 04 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @n1k0lay_z #202605 07:12 AM, 04 Feb 2021
    /report
  • https://t.me/clickhouse_ru
    https://mega.nz/file/LUw0DZAB#1H7raEbeDno7jZjIMaV6zGQU9Z4-fNNTzzCh1BXXtRE

    драйвер ставил последнюю версию с github

    советую поставить какой нибудь cygwin или git-bash

    и в нем запускать как
    time odbc-query.exe "DSN=clickhouse_dsn" vertical "SELECT number FROM numbers(1000000)" > /dev/null
  • https://t.me/clickhouse_ru
    драйвер 64bit ставил
    clickhouse у меня поднят в docker + wsl2 с пробросом портов
    поэтому localhost
  • @strftime #202614 08:52 AM, 04 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @leagueofsoups #202615 08:56 AM, 04 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    получилось что нибудь замерять?
  • https://t.me/clickhouse_ru
    @lazoreth #202617 10:35 AM, 04 Feb 2021
    Друзья, подскажите пожалуйста. Есть такого вида запрос SELECT port_id,
    ip_address,
    count(*)
    FROM external_ips
    WHERE (sample_time >= '2020-12-06 00:00:00' AND sample_time <= '2020-12-06 23:59:59')
    GROUP BY port_id, ip_address;
    Запрос просто делает аггрегацию на определённые сутки. А если я хочу допустим сделать за месяц выборку, с аггрегацией по суткам, можно как-то кликхаус заставить выдать мне данные сразу аггрегированные по суткам за каждый день месяца? Не могу что-то собразить. Цель вообще сделать materialized_view
  • https://t.me/clickhouse_ru
    Ну если есть колонка с днями, используйте её. Если нет, то можно взять toDate(sample_time)
  • https://t.me/clickhouse_ru
    SELECT toDate(sample_time) as date,
    port_id,
    ip_address,
    count(*)
    FROM external_ips
    WHERE /* период */
    GROUP BY date, port_id, ip_address;
  • https://t.me/clickhouse_ru
    Спасибо огромное
  • https://t.me/clickhouse_ru
    в группировку можно свой аггрегат передать
  • https://t.me/clickhouse_ru
    @Mikhastos #202622 10:55 AM, 04 Feb 2021
    Добрый день. Подскажите, пожалуйста, можно подключить базы из примонтированных устройств (разные диски одного сервера)? Можно ли их примонтировать в /var/lib/clickhouse/...?
  • https://t.me/clickhouse_ru
    @lazoreth #202623 12:02 PM, 04 Feb 2021
    А если у меня в materialized_view селект какой-то огромный, который сам по себе изначально по 10-15 сек выполняется. Получается он при каждом инсерте в таблицы, откуда селект выполняется, будет выполнятся снова. Правильно я понимаю?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202623 #202624 12:10 PM, 04 Feb 2021
    Запрос в MV выполняется не над всей таблицей, а только над вставляемым куском данных. Но да, каждый раз.
  • https://t.me/clickhouse_ru
    MV это AFTER INSERT TRIGGER
    который вещается на "таблицы"

    таблицы которые ты указываешь как SELECT ... FROM ... в SELECT для MV
    там будет браться не все данные всех таблиц, а только какая то одна в которую пришел INSERT
    и работать этот SELECT будет только с куском данных а не со всей таблицей

    то есть делать MV в котором JOIN и куча других тоже изменяющихся таблиц, так себе идея
    делать MV над 1й таблицей + dictGet из словарей, уже лучше
    делать MV + JOIN на неизменяемые таблицы, тоже норм. но сильно зависит от скорости JOIN
  • https://t.me/clickhouse_ru
    Вообще идея в том что у нас сейчас есть таблицы, куда семплы пишутся каждую минуту. Хотел просто аггрегацию семплов по суткам сделать и писать в отдельную таблицу, что бы потом оттуда данные брать по датам быстренько, а не шерстить 1440*30*N записей когда нужно за месяц данные собрать. Получается всё равно проще раз в сутки по расписанию делать чтение и запись в эту таблицу данных за последние сутки чем делать MV =\
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202626 #202627 12:19 PM, 04 Feb 2021
    Можете с помощью MV копировать данные в другую таблицу с движком AggregationMergeTree, где они фоном будут агрегироваться по дате, например.
  • https://t.me/clickhouse_ru
    Звучит как план. Если MV будет туда только новые данные докидывать, то прям супер
  • https://t.me/clickhouse_ru
    нет 1 в 1 нормально сделайте MV, он для даунсемлинга вполне норм подходит

    сделайте таблицу T2 Engine=AggregationMergeTree (читайте в доке как)
    сделайте CREATE MATERIALIZED VIEW MV TO T2 ... SELECT ... FROM T1 ... GROUP BY ...
    получите искомый даунсемлинг
    но запросы из таблицы T2 все равно делайте с GROUP BY
  • https://t.me/clickhouse_ru
    Спасибо большое!
  • @beebeeep #202631 12:45 PM, 04 Feb 2021
    господа инженеры, подскажите, пожалуйста, я чет даже не пойму с какой стороны подступиться
    есть у меня запрос, который возвращает что-то подобное

    ┌──────time───────────┬──qpm─┬──m─┐
    │ 2021-02-04 12:31:00 │ v1 │ m1 │
    │ 2021-02-04 12:31:00 │ v2 │ m2 │
    │ 2021-02-04 12:31:00 │ v3 │ m2 │
    └─────────────────────┴──────┴────┘
    и хотелось бы как-то, гм, транспонировать эту таблицу в вот такое:
    ┌──────time───────────┬──m1─┬──m2─┬─m3──┐
    │ 2021-02-04 12:31:00 │ v1 │ v2 │ v3 │
    └─────────────────────┴─────┴─────┴─────┘

    (число этих измерений m1, m2, … mN в идеале произвольное, но сойдет и фиксированное N)
    сам запрос https://pastebin.com/tQaD5Std
    SELECT toStartOfMinute(ts) AS time, count(query_time) AS qpm, que - 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
    select groupArray(n) arr_n, arr_n[1], arr_n[2], arr_n[3] from (
    select number n from numbers(3)
    )
  • https://t.me/clickhouse_ru
    @kapustor #202633 12:49 PM, 04 Feb 2021
    Joined.
  • Да, я сразу на своей таблице пытаюсь проверить, но результат вообще не радует уже пару минут крутится, сетка всего на 30 мбит грузится, без vertical можно ? Как сделать вид «как есть»? Просто у меня куча столбцов и при вертикале он каждый столбик в строку записывает видимо
  • https://t.me/clickhouse_ru
    никак... значит rust еще тупее чем остальное =) извините что не в ту стороне отправил

    есть еще
    https://github.com/microsoft/ODBCTest
    он вроде в комплекте MDAC поставлялся
    но я что-то не могу найти MDAC на мракософт
    microsoft/ODBCTest

    Application for testing ODBC Drivers and ODBC Driver Manager - microsoft/ODBCTest

  • Печаль) попробовал ещё json-array, сетку уже получше до 150-170 мбит грузит, но все равно слабовато выходит, нужен формат как есть )
  • гм, но это вытаскивает в строки значения того, что в groupArray(), а мне нужно значение в соседнем столбце
  • https://t.me/clickhouse_ru
    группируйте по нужному столбцу
  • я что-то не пойму, как именно надо группировать
  • https://t.me/clickhouse_ru
    сделайте тестовый пример на числах
  • @beebeeep #202641 01:15 PM, 04 Feb 2021
    да, я вот сделал https://pastebin.com/cAmxY1kb
    qan-test-cluster-dca-lobod-pilor :) SELECT now() as ts, number AS k, number*2 as - 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
    @Evgeniy_Agafonov #202642 01:19 PM, 04 Feb 2021
    Joined.
  • @chamaeleon_rex #202643 01:19 PM, 04 Feb 2021
    Подскажите, пожалуйста, как безопасно дропнуть базу данных не стартуя КХ сервер?
  • https://t.me/clickhouse_ru
    select ts
    , groupArray(k) arr1
    , arr1[1] k1
    , arr1[2] k2
    , arr1[3] k3
    , groupArray(v) arr2
    , arr2[1] v1
    , arr2[2] v2
    , arr2[3] v3
    from (
    SELECT now() AS ts,
    number AS k,
    number * 2 AS v
    FROM numbers(3)
    )
    group by ts
    выбирайте
  • О, спасибо!
    я пробовал группировать по v но видимо что-то пошло не так 🙂 А есть вариант салиасить колонки значениями из arr1?
  • @beebeeep #202646 01:32 PM, 04 Feb 2021
    судя по синтаксису в доке, там просто идентифаер должен стоять 😕
  • https://t.me/clickhouse_ru
    @dmitrii_wh #202647 01:33 PM, 04 Feb 2021
    если только динамически
  • @itnotfoundnow #202648 01:34 PM, 04 Feb 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    mv /var/lib/clickhouse/metadata/database /tmp/
    systemctl start clickhouse-server

    ну и потом данные из /var/lib/clickhouse/data/database/
    тоже куда нибудь перенести

    а чем вас обычный DROP DATABASE не устраивает?
  • https://t.me/clickhouse_ru
    без старта, можно метаданные грохнуть
  • @chamaeleon_rex #202652 01:36 PM, 04 Feb 2021
    Сервер не стартует из-за неправильного создания таблиц с кафкой, да, тоже вот так почистили
    А в Зукипере нужно ли чистить пути
  • https://t.me/clickhouse_ru
    Используйте политики хранения
  • https://t.me/clickhouse_ru
    @dedushka_mao #202654 01:39 PM, 04 Feb 2021
    Amplifying ClickHouse Capacity with Multi-Volume Storage (Part 1)

    As longtime users know well, ClickHouse has traditionally had a basic storage model.  Each ClickHouse server is a single process that accesses data located on a single storage device. The design offers operational simplicity--a great virtue--but restricts users to a single class of storage for all data. The downside is difficult cost/performance choices, especially for large clusters. 

  • https://t.me/clickhouse_ru
    @dmitrii_wh #202655 01:39 PM, 04 Feb 2021
    создать аналогичную пустую таблицу, остановить сервер, подменить данные, запустить сервер, drop table
  • @chamaeleon_rex #202656 01:40 PM, 04 Feb 2021
    Данные не важны. Мне просто нужно с этими же именами таблиц пересоздать по-нормальному. Думаю что раз мета хранится в КХ - то ничего страшного. Ну или не удастся создать так как пути такие в Зукипере уже есть
  • https://t.me/clickhouse_ru
    почему нельзя взять из show create tname, drop table, создать заново?
  • https://t.me/clickhouse_ru
    @dmitrii_wh #202658 01:43 PM, 04 Feb 2021
    при создании таблицы указать другой путь зукипера
  • https://t.me/clickhouse_ru
    @dmitrii_wh #202659 01:43 PM, 04 Feb 2021
    если не удалилось
  • @chamaeleon_rex #202660 01:45 PM, 04 Feb 2021
    Не понял вопрос :).
    Я накатил миграции, где из-за неправильно конфигурации Кафки сервер упал и не может стартануть. Для этого пришлось чистить директории. Но насколько я понимаю, для distributed таблиц в зукипере созданы пути, которые читсить очень неудобно. Вопрос мой сейчас в том что если не менять пути в зукипере - даст ли КХ пересоздать эти же самые таблицы после старта сервера. Потому что их пути основаны на названии базы и таблиц вроде как. А названия хочется оставить теми же самыми
  • https://t.me/clickhouse_ru
    distirbuted таблицы не используют ZK
    вы с ReplicatedMergeTree не попутали?
  • @chamaeleon_rex #202662 01:47 PM, 04 Feb 2021
    попутал, да)
  • https://t.me/clickhouse_ru
    @promoden #202663 01:49 PM, 04 Feb 2021
    Привет.

    Меня зовут Денис и я работаю в ООО Топвизор. Публикую здесь это объявление с разрешения администратора этого чата. Нам необходим функционал, которого сейчас нет в ClickHouse. К сожалению, кастомная разработка требует саппорта уровня Essential. Вход туда стоит 22 000 000 миллиона рублей в год. Думаю, что разработка может стоить намного порядков дешевле. Уверен, функционал будет полезен не только нам, но и сообществу.

    Итак, мы используем ClickHouse и нам не хватает такого функционала:

    В MySQL есть понятия UDF - пользовательские функции, написанные на Си
    Разыскивается специалист, который сможет добавить такие функции в CH.

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

    callUDF('filename', 'args')

    ==

    Мы не знаем точно, сколько может стоить такая работа. По поводу сроков выполнения тоже нет определенного понимания. Если вы готовы взяться за эту работу, пожалуйста, напишите мне в личку или на почту den@topvisor.com для обсуждения сроков и стоимости работы.

    Спасибо.
  • https://t.me/clickhouse_ru
    если у вас есть в ZK path Такая штука как {uuid} то это будут новые пути при создании новой таблицы ReplicatedMergeTree с тем же именем
  • Нет такого, я бы не спрашивал будь пути с некой генерацией имени)
  • https://t.me/clickhouse_ru
    попробуйте с китайцем пообщаться из этой презентации?
    https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup33/udf.pptx
    ClickHouse/clickhouse-presentations

    Presentations, meetups and talks about ClickHouse. Contribute to ClickHouse/clickhouse-presentations development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    тогда страдать
  • @vvvjhaq #202668 02:15 PM, 04 Feb 2021
    Добрый день.
    Есть смысл использования индекса minmax по дате?
    Или все и так по ключу партиционирования хорошо выбирает?
    Или вариант просто пробовать и проверять?
  • https://t.me/clickhouse_ru
    Попробую, спасибо
  • https://t.me/clickhouse_ru
    партицирование это еще один min_max индекс но гораздо БОЛЬШИХ диапозонов
    по нему ищется в первую очередь если ваше поле есть в PARTITION BY
    только выражение PARTITION BY должно по типу совпадать с полем таблицы...
    то есть toYYYYMM это на самом деле Integer а не дата
    и искать по дате тогда тоже надо через WHERE toYYYYMM() чтобы партиции быстро отсекать

    а вот toStartOfDate это дата и тогда поиск по date BETWEEN .. AND будет по партициям сначала использоваться без конвертации

    =) если ваша дата есть в ORDER BY
    или PRIMARY KEY
    и
    то это итак фактически и есть min_max индекс и по нему собственно говоря и ищутся нужные куски данных
  • понял, спасибо
    да, дата есть ключе сортировки
  • https://t.me/clickhouse_ru
    тогда CREATE INDEX не нужен
  • спасибо)
  • https://t.me/clickhouse_ru
    По поводу второго это относится только ко вставкам из buffer, правильно? Или при вставке из того же rabbitmq ожидать такого же поведения?
  • https://t.me/clickhouse_ru
    rabbitmq по другому работает.

    buffer пересортировывает инсерты которые вы повторяете с клиента, а повторяете по причине timeout / сетевой проблемы.

    rabbitmq engine выбирает из очереди, собирает блок, и делает инсерты сам, и повторяет сам внутри до успеха.
  • https://t.me/clickhouse_ru
    а он при этом ack посылает в очередь что обработал ДО INSERT или после?
    и где он блок хранит? на диске?
  • https://t.me/clickhouse_ru
    Если я правильно понимаю, мне достаточно добавить к buffer таблице уникальное поле например с uuid чтобы такого не случилось, а в репликатед таблице это поле не обязательно должно быть
  • https://t.me/clickhouse_ru
    я не смотрел, наверное как в кафке, ack после успеха инсерта, блок в памяти, зачем на диске
  • https://t.me/clickhouse_ru
    все неправильно поняли. Дедупликация инсертов это вообще не про это, читайте доку про репликацию.
  • https://t.me/clickhouse_ru
    @den_crane #202680 03:19 PM, 04 Feb 2021
    кстати точно такую же дедупликацию вроде уже должны были присобачить в обычной mergetree, поищу
  • https://t.me/clickhouse_ru
    @matthiasBT #202681 03:21 PM, 04 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #202682 03:21 PM, 04 Feb 2021
    о как, больше года раскопки https://github.com/ClickHouse/ClickHouse/pull/8467 , чудеса такая мелкая фича
  • https://t.me/clickhouse_ru
    @matthiasBT #202683 03:23 PM, 04 Feb 2021
    всем привет
    можно ли пересчитать данные в матвьюшке?
    у нас есть матвьюшка, она хранит счетчики записей в основной таблице по минутам, но она стала как-то странно считать записи
    после пересоздания все стало нормально

    вот 2 запроса с агрегацией по часам - до и после пересоздания
    версия 19.8.3.8

    events_importance
    ┌─count─┬───────────────start─┐
    │ 194 │ 2021-02-02 06:00:00 │
    │ 7 │ 2021-02-02 04:00:00 │
    └───────┴─────────────────────┘

    events_importance после пересоздания
    ┌─count─┬───────────────start─┐
    │ 122 │ 2021-02-02 10:00:00 │
    │ 16 │ 2021-02-02 08:00:00 │
    │ 10 │ 2021-02-02 07:00:00 │
    │ 12 │ 2021-02-02 06:00:00 │
    │ 21 │ 2021-02-02 04:00:00 │
    │ 8 │ 2021-02-02 03:00:00 │
    │ 4 │ 2021-02-02 02:00:00 │
    │ 4 │ 2021-02-02 01:00:00 │
    │ 4 │ 2021-02-02 00:00:00 │
    └───────┴─────────────────────┘

    итоговое число записей одинаковое, но распределение совершенно разное
  • https://t.me/clickhouse_ru
    @matthiasBT #202684 03:26 PM, 04 Feb 2021
    матвьюшка AggregatingMergeTree, основная таблица MergeTree
    матвьюшка считается как

    SELECT
    countState() AS count,
    toStartOfMinute(toDateTime(time)) AS time,
    importance,
    toDate(time) AS _date
    FROM events
    GROUP BY time, importance
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @k0st1an #202687 04:16 PM, 04 Feb 2021
    добрый вечер. сервер КХ был перезапущен. штатно.таблица реплицируемая. сейчас сервер не запускается с ошибкой DB::Exception: Suspiciously many (152) broken parts to remove.: Cannot attach table. правильно я понимаю, что я могу эти куски <Warning> DB.TABLE: Detaching stale part /var/lib/clickhouse/data/DB/TABLE/610766fc0a3e72b7376196f9f9251b7a_1024111_1024332_7_1024651, which should have been deleted after a move. That can only happen after unclean restart of ClickHouse after move of a part having an operation blocking that stale copy of part. перетащить в другую папку?
  • https://t.me/clickhouse_ru
    @MakeReady #202688 04:45 PM, 04 Feb 2021
    Добрый вечер! нет ли в КХ готовых конструкций для 7 day rolling average?
  • https://t.me/clickhouse_ru
    @MakeReady #202689 05:04 PM, 04 Feb 2021
    тапа avg(value)
    over (order by date asc
    rows between 6 preceding and current row) as avg,
  • @992515588 #202690 05:08 PM, 04 Feb 2021
    /stat@combot
  • https://t.me/clickhouse_ru
    @combot #202693 b o t 05:15 PM, 04 Feb 2021
    Total messages: 202692
  • Это всё ещё в разработке. https://github.com/ClickHouse/ClickHouse/issues/17623
    Roadmap 2021 (discussion) · Issue #17623 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @MakeReady #202695 05:25 PM, 04 Feb 2021
    понятно, тогда через подзапросы
  • @uname91 #202696 05:31 PM, 04 Feb 2021
    Этого не может быть, потому что не может быть никогда?! Но есть.

    Здравствуйте! Столкнулся с воспроизводимой ситуацией, когда запросы через Distributed таблицу к system.settings соседних серверов ClickHouse возвращают значение параметра(ов), которое когда-то на этом сервере было установлено, но с тех пор давно изменилось.
    Как будто бы старое значение где-то залипло или закешировалось.
  • @uname91 #202697 05:31 PM, 04 Feb 2021
    Подробнее.
    Тестовый кластер из 3 серверов.
    Над часто востребованными таблицами (system.merges, system.replication_queue и т.д.) из system у меня Distributed таблицы (самое простое - 3 шарда по штуке на сервер, без реплицирования), чтобы из любой точки стенда одним запросом получить полную картину.

    Разбирался с причинами неких неполадок с межсерверным взаимодействием (в логах непрерывным спам много раз в секунду события <Trace> HTTPCommon: Failed communicating with {ANOTHER_HOST} with error 'connect timed out: {IP}.61:9009' will try to reconnect session . на стенд идёт фоновая нагрузка примерно 100-200 тыс. событий в секунду).

    Предположил, что надо покрутить параметры http_%_timeout, в частности значительно увеличить http_connection_timeout. (Поиск по этой группе показал, что некоторые его c 1 и до 15 поднимали).

    На одном из серверов сперва установил (в конфиге профиля default-пользователя) http_connection_timeout в 10, потом в 2, потом закомментировал, тем самым восстановив значение по умолчанию - 1.
    И локальный запрос этого параметра подтверждает, что значение параметра теперь дефолтное.
  • @uname91 #202699 05:31 PM, 04 Feb 2021
    Но с соседних серверов запрос через Distributed таблицу возвращает давно не актуальное состояние, которое было час назад! (Точнее какое-то время неверное значение возвращалось при запросе с обоих соседних серверов, сейчас уже только с одного).
  • https://t.me/clickhouse_ru
    это из-за pooling.

    живой конект живет в пуле и выдается разным запросам, параметры у него такие какие были в момент его рождения.
  • https://t.me/clickhouse_ru
    @den_crane #202702 05:34 PM, 04 Feb 2021
    раньше пула не было, поэтому проблемы такой не было
  • https://t.me/clickhouse_ru
    @den_crane #202703 05:35 PM, 04 Feb 2021
    потом добавили пул и обновление параметров уже непролезло в абстракции, дизайн
  • @uname91 #202704 05:41 PM, 04 Feb 2021
    Понятно. Большое спасибо!
    Главное, что это частный локальный эффект с system.settings. А то я совсем напрягся, что глобально что-то пошло не так с работой Distributed
  • https://t.me/clickhouse_ru
    @MakeReady #202705 05:42 PM, 04 Feb 2021
    хм, INNER JOIN vOwen AS past ON (past.Date >= (vOwen.Date - toIntervalDay(6))) AND (past.Date <= vOwen.Date) не ест
  • https://t.me/clickhouse_ru
    @MakeReady #202706 05:42 PM, 04 Feb 2021
    JOIN ON inequalities are not supported
  • UDF в виде функций на C или C++, работающие прямо в пространстве процесса, вряд ли будут реализованы, так как это очень небезопасно и делает очень сложной отладку чужих инсталляций.

    Сейчас рассматриваются другие решения, сейчас скину короткое описание...
  • @milovidov_an #202708 05:58 PM, 04 Feb 2021
    Там пять вариантов:

    1. Простые функции в виде SQL выражений - композиций других функций. При включении compile_expressions может быть даже нормальным. Полезно для мелких вещей. Есть вопросы - как лучше их задавать, будут ли полиморфные функции.
  • @milovidov_an #202709 05:58 PM, 04 Feb 2021
    2. Функции в виде подключаемых бинарников, работающих в режиме streaming. Похоже на https://github.com/ClickHouse/ClickHouse/issues/14528
    Variant of executable dictionary source with pool of processes. · Issue #14528 · ClickHouse/ClickHouse

    Executable dictionary runs a program (spawns a child process) for every block to process (typically 65536 rows), pipes data to its stdin, reads data from stdout. Program can work in streaming fashi...

  • @milovidov_an #202710 05:58 PM, 04 Feb 2021
    Это варианты - минимум.
  • @milovidov_an #202711 05:58 PM, 04 Feb 2021
    Первый ок, но мало что можно сделать с его помощью.
    Второй позволяет всё, что угодно, но не очень эффективный.
  • @milovidov_an #202712 05:58 PM, 04 Feb 2021
    3. Функции в отдельных процессах (скомпилированных бинарниках), которые используют shared memory для передачи данных столбцов и пайпы для сигнализирования. Недостатки: - сложно сделать, придётся выделять аллокатор у столбцов, чтобы уметь аллоцировать в shared memory; - очень сложно для пользователей, никто не будет использовать, но может быть базой для более простых вариантов.
  • @milovidov_an #202713 05:58 PM, 04 Feb 2021
    4. Функции, работающие в адресном пространстве процесса, но написанные на безопасном языке. Скорее всего на Rust. Недостатки - продумывать и выделять интерфейс для доступа к данным столбцов. Никто в нашей команде не знает Rust. Но полезно для популяризации.

    P.S. Python, Go - небезопасные по факту. Про Rust не уверен.
  • @milovidov_an #202714 05:58 PM, 04 Feb 2021
    5. Использование какого-то интерфейса из Apache Arrow для взаимодействия.
  • @milovidov_an #202715 05:58 PM, 04 Feb 2021
    А какие вообще юз кейс запросы были ?
  • @milovidov_an #202716 05:58 PM, 04 Feb 2021
    Получается обычными функциями в запросе нет возможности получить необходимый результат эффективно ?
  • @milovidov_an #202717 05:58 PM, 04 Feb 2021
    Иногда просят то, что подходит под пункт 1. То есть, запомнить композицию SQL выражений как функцию.

    Но чаще просят в общем виде - чтобы подключать сложные функции, непонятно какие.
  • @milovidov_an #202718 05:58 PM, 04 Feb 2021
    Да, в SQL трудно с control flow, сложную логику не напишешь...
  • @milovidov_an #202719 05:58 PM, 04 Feb 2021
    Ещё сложнее, когда функции имеют не только логику, но и зависят от своих данных-справочников.
  • @milovidov_an #202720 05:58 PM, 04 Feb 2021
    Под это идеально подойдёт пункт 2.
  • @milovidov_an #202721 05:58 PM, 04 Feb 2021
    Пример: функция для перевода hostname в IP-адрес. То есть, она медленная, ходит по сети куда-то... Но значения можно кэшировать. Кстати, это реализуемо уже с помощью executable словарей.
  • @milovidov_an #202722 05:58 PM, 04 Feb 2021
    Или более простой пример - по номеру банковской карты определить тип карты, банк, проверить корректность... там простая функция должна быть, но на SQL неудобно.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202705 #202723 06:16 PM, 04 Feb 2021
    Ну так он же пишет ошибку - джойны не умеют в неравенства.
    Вместо этого делайте from table1 a, table2 b where a.val = b.val.
  • https://t.me/clickhouse_ru
    @MakeReady #202724 06:16 PM, 04 Feb 2021
    да, уже в процессе, спасибо!
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #202723 #202725 06:17 PM, 04 Feb 2021
    В смысле a.val > b.val. Ну вы поняли)
  • https://t.me/clickhouse_ru
    @den_crane #202726 06:24 PM, 04 Feb 2021
    это кстати будет cartesian product тормозной
  • https://t.me/clickhouse_ru
    @den_crane #202727 06:24 PM, 04 Feb 2021
    берите словарь range_hashed
  • https://t.me/clickhouse_ru
    это нереальная задача, скорее можно реализовать конретные функции которые нужны
  • https://t.me/clickhouse_ru
    @greenwo1f #202729 06:35 PM, 04 Feb 2021
    Привет! Есть табличка с кликами на айтемы, хочу считать агрегаты по item_id в materialized view и периодически выгребать изменения из нее сторонним сервисом. Для этого нужно еще хранить время последнего изменения для каждого айтема. AggregatingMergeTree решает задачу, но агрегатную функцию нельзя поставить в условие фильтрации, а делать вложенный запрос кажется накладный, т.к. будет вычисляться агрегат по всей таблице. Какие есть пути решения?
  • https://t.me/clickhouse_ru
    что-что?

    типа вычислять item_id max(updated_at) и потом max(updated_at) >= today - 7 ?
  • https://t.me/clickhouse_ru
    @den_crane #202731 06:47 PM, 04 Feb 2021
    проблема не в аггрегатной функции, а в несмерженных строках

    в общем-то для max можно использовать simpleAggragateFunction
    или делать finalizeAggregation для AggragateFunction
  • @Artyom_Zavrin #202732 07:18 PM, 04 Feb 2021
    Joined.
  • @beebeeep #202733 08:47 PM, 04 Feb 2021
    а есть какой-то хитрый способ выбрать все значения LowCardinality столбца?
    у меня самое быстрое получилось через select col from table group by col, но оно все равно сканирует всю табличку, может как-то можно доступиться к самому dictionary, который хранит значения?
  • @beebeeep #202734 08:50 PM, 04 Feb 2021
    ах, вопрос снимается https://github.com/ClickHouse/ClickHouse/issues/4670
    Faster distinct query query of low cardinality columns · Issue #4670 · ClickHouse/ClickHouse

    In our scenario, we have some columns defined as low cardinality string type. The total number of the distinct values are no more than 10K. The values cannot be predicted. When query the distinct v...

  • https://t.me/clickhouse_ru
    нету , хотели сделать отдельную функцию которая только словари смотрит но не сделали
  • https://t.me/clickhouse_ru
    @den_crane #202736 09:48 PM, 04 Feb 2021
    т.е. проблема в том что
    select col from table group by col
    читает словари dict -- очень маленькие файлы и .bin -- очень большие
    select col from table group by col
    под капотом возможно выполняется более сложный код который проверяет есть права на строку или нет, поэтому заходит в bin
  • https://t.me/clickhouse_ru
    @1236463047 #202737 09:48 PM, 04 Feb 2021
    Денни, добрый... что там у вас... день... Не проконсультируете по Hetzner...
    пачка серверов, пишет в енж буфер, который сливается в null, оттуда МатВью в часов суммариМерж, оттуда матвью дневной суммариМерж. В часовом пара миллиардов за день.
    Сейчас стоит VPS 9-ти ядерный. И вроде как все хорошо, но иногда что-то с сеткой в ДЦ или что-то еще. И я начинаю видеть вставки в буфер табл висящую минуту... две...
    Вот подкмал сменить VPS на реал серв. Есть какие-то советы по выбору? ПРосто обидно будет взять AX61-NVMe который будет все время спать
  • https://t.me/clickhouse_ru
    @1236463047 #202738 09:49 PM, 04 Feb 2021
    КХ сервер один
  • https://t.me/clickhouse_ru
    VPS не проверял, с железками нет проблем.
    Там конечно с сетью чудеса бывают, и сыплются ошибки зукипера, но ничего особо страшного

    да он стоит 100 евро , я бы взял , это же копейки по сравнению с вашей зарплатой
    сколько VPS стоит?
  • https://t.me/clickhouse_ru
    @1236463047 #202740 09:54 PM, 04 Feb 2021
    один
  • https://t.me/clickhouse_ru
    цена какая? 1 евро?
  • https://t.me/clickhouse_ru
    @1236463047 #202742 09:55 PM, 04 Feb 2021
    Один VPS, но мы сейчас в Contabo
  • https://t.me/clickhouse_ru
    @1236463047 #202743 09:55 PM, 04 Feb 2021
    стоит 30 евро, чтоли
  • https://t.me/clickhouse_ru
    @1236463047 #202744 09:56 PM, 04 Feb 2021
    уже неск лет работает, но тут видать достигли лимита
  • https://t.me/clickhouse_ru
    @1236463047 #202745 09:57 PM, 04 Feb 2021
    ЗК не ставил пока, пока резерв просто на друг сервер
  • https://t.me/clickhouse_ru
    @den_crane #202746 09:59 PM, 04 Feb 2021
    а памяти сколько у VPS ?
  • https://t.me/clickhouse_ru
    @1236463047 #202747 10:00 PM, 04 Feb 2021
    64Г
  • https://t.me/clickhouse_ru
    @den_crane #202748 10:01 PM, 04 Feb 2021
    мне нравятся
    ax61-nvme 128 GB DDR4 ECC / 2 x 1.92 TB NVMe за 100 евро это даром
    я использую
  • https://t.me/clickhouse_ru
    @1236463047 #202749 10:01 PM, 04 Feb 2021
    а по поводу "сетью чудеса бывают" - вот у меня сегодня такое чудо в Contabo. Так я аналог не получу у Hetz?
  • https://t.me/clickhouse_ru
    @1236463047 #202750 10:02 PM, 04 Feb 2021
    да,я его уже в корзину сунул... потом решил спросить
  • https://t.me/clickhouse_ru
    @unamedrus #202751 10:05 PM, 04 Feb 2021
    Ну всякое бывает, у меня в хетцере однажды свитч сгорел к моему серверу, ну полчаса-час его меняли.
  • https://t.me/clickhouse_ru
    @den_crane #202752 10:07 PM, 04 Feb 2021
    >чудеса бывают
    вы не заметите скорее всего.

    там просто летенси иногда вырастает, и пакеты дропаются, это критично для ZK, у него особые требования.
    ничего страшного в общем-то, все работает годами
  • https://t.me/clickhouse_ru
    @1236463047 #202753 10:10 PM, 04 Feb 2021
    А ну ок, спасибо. Пакет дропнется - я перешлю. ДЦ любой можно - что Финка что Германия? Илии всеже немцев?
  • https://t.me/clickhouse_ru
    все равно, что ближе по пингу / расстоянию
  • https://t.me/clickhouse_ru
    @1236463047 #202755 10:37 PM, 04 Feb 2021
    Спасибо
  • https://t.me/clickhouse_ru
    у вас поля у AggregatingMergeTree неправильные в order by
    и _date вам не нужен

    ДОЛЖНО БЫТЬ ТАК AggregatingMergeTree partition by toYYYYMM(time) order by (importance, time)
  • 05 February 2021 (105 messages)
  • https://t.me/clickhouse_ru
    @Kerigan #202757 12:09 AM, 05 Feb 2021
    Коллеги, привет.
    Пробую эксперементальную фичу MaterializeMySQL
    Пока clickhouse вычитывает данные с Mysql все работает, как только заканчивает, доступ к таблицам пропадает
    DB::Exception: Access denied for user reader (version 21.1.3.32 (official build)) (from [::1]:60458) (in query: select count(*) from test_database.test_table;), Stack trace (when copying this message, always include the lines below):

    Подскажите, кто пробовал, у кого получилось? Может для Мускуля какие-то особые права нужны (хотя выставил все что можно)
  • https://t.me/clickhouse_ru
    @den_crane #202758 04:12 AM, 05 Feb 2021
    MaterializeMySQL -- Вот так, с помощью нехитрых приспособлений буханку белого (или черного) хлеба можно превратить в троллейбус.
  • https://t.me/clickhouse_ru
    нет
    Матвьюшка сама по себе ничего не хранит
    это AFTER INSERT TRIGGER
    либо в .inner таблицу *MergeTree
    либо в отдельную *MergeTree таблицу если указан CREATE MATERIALIZED VIEW ... TO db.table

    пересчет делается удалением данных из TO или .inner таблицы и повторной вставкой через INSERT INTO ... SELECT .. GROUP BY ...
  • https://t.me/clickhouse_ru
    а что значит "заканчивает вычитывать"? связь с MySQL сервером рвется?
  • https://t.me/clickhouse_ru
    В Mysql есть данные.
    После создания БД с движком MaterializeMySQL - данные перекачиваются в CH.
    В процессе (через несколько минут) вылетает ошибка MaterializeMySQLSyncThread: Code: 100, e.displayText() = DB::Exception: Access denied for user
    И далее все запросы к данным вылетают с подобной ошибкой.
  • https://t.me/clickhouse_ru
    ну там в логах то наверное выше должно быть еще какие то ошибки со стороны MaterializedMySQL что у него какие то ошибки репликации

    SHOW SLAVES
    на MySQL
    что показывает?
    есть там коннект от clickhouse сервера и активен ли он?
  • https://t.me/clickhouse_ru
    @Kerigan #202763 04:53 AM, 05 Feb 2021
    В PROCESSLIST висит
    | 24 | reader | adm-test-ch1.partner.ru:41276 | test | Sleep | 14337 | | NULL
  • https://t.me/clickhouse_ru
    @zholmyrza_t #202764 05:44 AM, 05 Feb 2021
    Всем привет, подскажите пожалуйста за что отвечает ОСный процесс clickhouse-watchdog рядом с /usr/bin/clickhouse-server?
  • https://t.me/clickhouse_ru
    @nice_fella #202765 07:14 AM, 05 Feb 2021
    Joined.
  • @iBubnov #202766 07:20 AM, 05 Feb 2021
    Всем привет. Делал тут инсерт 10к записей раз пару секунд и словил такую ошибку
    "Too many partitions for single INSERT block". Партиция у меня на дату по дням стоит и очевидно что в пачке из 10к будет куча одинаковых дат, так как пишу события по дням.
    Нормально ли будет увеличить max_partitions_per_insert_block до 10к или это как-то скажется на скорости/ресурсах и так вообще неользя делать?
  • https://t.me/clickhouse_ru
    Ошибка про то, что ваш инсерт вставляет во много партиции разом, а не про много записей в одну
  • а, хм. Тость наоборот там разные даты?
  • https://t.me/clickhouse_ru
    Да
  • https://t.me/clickhouse_ru
    Скорость инсерта снизится, тк ваш батч затрагиваетт слишком много партиций -> больше файлов. Так же в будущем будут замедлятся селекты, которые имеют(в вашем примере) выборку больше дня, тк читать много файликов приходится. Так же это генерит невероятное количество партов. Сам сталкивался с такой проблемой - пришлоись репартиционировать таблицу.
  • А как? По месяцам?
  • https://t.me/clickhouse_ru
    Да, я пришел к выводу что это самое оптимальное значение.
    Ну я переодически чатик читаю, многие приходят к такому выводу. Так же туторах для кх тоже советуют использовать именно так.
    Конечно же, все депендс от вашей специфики и конкретных кейсов.
  • А если у меня таблица с примерно 300кк записями, как-то запросом можно определить, каких данных уникальных больше, чтобы например сделать репартицию например по какому-то типу. Например у меня есть тип события, там их всего штук 5 на все записи, а месцов очевидно больше и каждый раз будет больше. Имеет такое смысл? Или так же надо смотреть систему, какие вообще запросы и какие фильтры используются?
  • https://t.me/clickhouse_ru
    count() и group by. Можно ещё uniq()
  • https://t.me/clickhouse_ru
    Посчитайте количество уникальных значений, что бы найти коррелирующее значение, которое будет оптимально балансировать паратиции в рамках вашей специфики.
  • Да, точно. Но у меня например в системе поумолчанию фильтр по датам стоит с большим промежутком, однако фильтр на тип стоит всегда поумолчанию 1. Тоесть мы можем смотреть данные одного типа по разным датам. Однако можно поставить фильтр на дргой тип и надо будет делать join. Мб имеет смысл репартицию сделать на тип все же?
  • https://t.me/clickhouse_ru
    Партиции больше для удобства, так что оставьте по дате. А в индекс на первое место поставьте тип.
  • https://t.me/clickhouse_ru
    Так сделайте партиции по месяцу и в ключ оред бай поставьте колонку в начало с наибольшей кардинальностью - тип, в вашем примере.
  • @iBubnov #202779 07:34 AM, 05 Feb 2021
    Понял, спасибо. А как делать репартицию?
  • https://t.me/clickhouse_ru
    Только перевставлять данные
  • https://t.me/clickhouse_ru
    Создайте новоую таблицу и сделайте insert select
    Потом можете посмотреть количество партов на примере двух этих таблиц и увидите колоссальную разницу
  • @iBubnov #202782 07:35 AM, 05 Feb 2021
    Понял, хорошая идея, спасибо!
  • https://t.me/clickhouse_ru
    @378906216 #202783 08:11 AM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    ну тогда видимо автору китайцу пишите issue на github
  • https://t.me/clickhouse_ru
    у нас уже есть нечто похожее - скажите, что здесь не так?

    CREATE MATERIALIZED VIEW foo.events_importance (
    `count` AggregateFunction(count),
    `time` DateTime('UCT'),
    `importance` String,
    `_date` Date
    ) ENGINE = AggregatingMergeTree()
    PARTITION BY toDate(time)
    ORDER BY (toDate(time), importance)
    SETTINGS index_granularity = 8192 AS
    SELECT
    countState() AS count,
    toStartOfMinute(toDateTime(time)) AS time,
    importance,
    toDate(time) AS _date
    FROM foo.events
    GROUP BY time, importance
  • https://t.me/clickhouse_ru
    @rjs45 #202786 08:26 AM, 05 Feb 2021
    доброго времени суток.
    Скажите, можно ли как-то заимпортить данные из CSV, находящиеся на локальной машине в удаленную клику?
  • https://t.me/clickhouse_ru
    @edshaker #202787 08:27 AM, 05 Feb 2021
    на локальной машине поставить клиент и указать хостом сервер
  • https://t.me/clickhouse_ru
    cat file.csv | gzip -c | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://clickhouse-host:8123/?query=INSERT INTO db.table (field1, field2) FORMAT CSV'
  • https://t.me/clickhouse_ru
    @ldviolet #202789 08:32 AM, 05 Feb 2021
    pigz --fast -c file.csv | curl -sS --data-binary @- -H 'Content-Encoding: gzip' 'http://clickhouse-host:8123/?query=INSERT INTO db.table (field1, field2) FORMAT CSV'
  • @1190522888 #202790 09:01 AM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @sosedSatany667 #202791 09:11 AM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @Gulshan5k #202792 09:19 AM, 05 Feb 2021
    Добрый день! Подскажите пожалуйста, как можно вставлять в таблицу с массивом данные через select
    create table test (id UInt8, myArray Array(UInt8)) Engine=Memory;
    create table charges (id UInt8, chname String) Engine=Memory;
    Create table packs(pack_id UInt8, pack_name String, charge_id UInt8) Engine=Memory;

    insert into charges values
    (100,'X')
    (101,'Y')
    (102,'Z')

    insert into packs values
    (1,'A',100)
    (2,'B',100)
    (3,'C',100)
    (1,'A',101)
    (3,'B',101)
    (1,'A',102)
    (2,'B',102);

    select c.id,p.pack_id from charges c left join packs p on c.id=p.charge_id
    100 1
    100 2
    100 3
    101 1
    101 3
    102 1
    102 2

    Как можно вставить в таблицу test, чтоб в итоге данные легли вот таким образом
    100,[1,2,3]
    101,[1,3]
    102,[1,2]
  • https://t.me/clickhouse_ru
    groupArray
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/reference/grouparray/
    groupArray | ClickHouse Documentation

    groupArray Syntax: groupArray(x) or groupArray(max_size)(x) Creates an array of argument values. Values can be added to

  • PARTITION BY toDate(time)
    ORDER BY ( importance, time)
    либо
    ORDER BY ( time, importance)

    в зависимости от запросовъ
  • https://t.me/clickhouse_ru
    @dtrounine #202795 10:05 AM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Спасибо большое!!
  • https://t.me/clickhouse_ru
    Я по неделям делал, тоже неплохо. А по дням это жесть, извините
  • Понял, я просто только начинаю осваивать КХ и пока только разбираюсь в партициях, ключах сортировки и тд
  • у нас и по часам есть. зависит от того:
    - сколько времени храянятся все данные
    - сколько времени в одном запросе запрашивается (минимальные-максимальный разброс)
    - сколько данных итого в ГБ в один день
  • https://t.me/clickhouse_ru
    @zykov1 #202801 12:13 PM, 05 Feb 2021
    Joined.
  • @ramun25 #202802 12:40 PM, 05 Feb 2021
    Всем привет. Про табличную ф-ю numbers() подскажите плиз. Если я декартово множить буду, то кх сначала получит набор чисел, а потом забивать память дублями основной таблицы или он последовательно будет отрабатывать на каждый элемент numbers, т.е. в памяти только одна копия основной таблицы будет?
  • @vialorn #202803 12:43 PM, 05 Feb 2021
    Вопрос знатокам. В партиционированную ReplicatedMergeTree таблицу залились задвойки данных.
    Запустил поочередно по партициям OPTIMIZE DEDUPLICATE, схлопнулись все, кроме одной.
    Куда копать? OPTIMIZE FINAL тоже без эффекта.
    Размер партиции 6 ГБ, в ней 13 партов (active=1).
  • Мы выбрали промежуточный вариант - по неделям.
    PARTITION BY toYYYYMMDD(toMonday(clock))
  • https://t.me/clickhouse_ru
    @Rendalina #202805 01:03 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @lazoreth #202806 01:26 PM, 05 Feb 2021
    Друзья, подскажите ещё пожалуйста, столкнулся с проблемой при даунсемплинге. Есть вот такая вот вьюха CREATE MATERIALIZED VIEW external_ips_daily
    ENGINE = SummingMergeTree(bv) PARTITION BY toYYYYMM(date) ORDER BY (date, uuid)
    AS SELECT
    toDate(sample_time) as date,
    port_id as uuid,
    ip_address,
    count(*) as bv
    FROM external_ips
    GROUP BY date, port_id, ip_address;
    Таблица external_ips - ReplacingMergeTree, соответственно туда данные пишут несколько коллекторов. И во вьюху залетает по несколько записей через count(*), потому что исходная таблица не успевает дубликаты схлопнуть. Существуют может быть какие-то рецепты что бы это обойти? Пока из идей только всё-таки переход на AggregationMergeTree черезу полное дублирование записей во вьюху с аггрегацией
  • https://t.me/clickhouse_ru
    @309249511 #202807 01:26 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @lazoreth #202808 01:33 PM, 05 Feb 2021
    Если логически подумать - можно вообще выкинуть count(*) и просто писать еденицу. По идее работать должно
  • https://t.me/clickhouse_ru
    вы не правильно понимаете что такое VIEW и как оно работает

    это не "исходная таблица не успевает схлопнуть", она их схлапывает но существенно позже вставки

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

    VIEW это AFTER INSERT триггер который вешается на все таблицы из FROM секции
  • https://t.me/clickhouse_ru
    По этому запись еденицы вместо count и должна сработать
  • https://t.me/clickhouse_ru
    @lazoreth #202811 01:35 PM, 05 Feb 2021
    По сути мы просто дублируем запись в таблицу с другим движком же
  • @SergeNedashkovsky #202812 01:35 PM, 05 Feb 2021
    Всем привет!
    У меня есть таблица с одним полем по которой нужно проверять входит поле в этот список или нет.
    Как этот фукционал лучше реализовать?
    Eсть ли Replicated Join Engine?
  • https://t.me/clickhouse_ru
    нет, если прилетит в разных INSERT одинаковый toDate() +port_id
    то у вас будет 2
    а автор хочет чтобы было 1?

    или что?
  • https://t.me/clickhouse_ru
    почитайте про CREATE DICTIONARY и dictGet
  • это уже в проде ))
    список большой не хочется его в память грузить
  • https://t.me/clickhouse_ru
    В исходную таблицу каждую минуту делается запись с datetime штампом. Изза избыточности у нас в исходной таблице на какой-то срок может возникнуть 5 одинаковых записей. Которые потом исходной таблицей сожмутся в одну. Вот мне нужна одна, что бы я в другой таблице просуммировал колличество таких записей после сжатия за сутки
  • https://t.me/clickhouse_ru
    @lazoreth #202817 01:40 PM, 05 Feb 2021
    А, ну да. Колличество инсертов ведь всё равно >1
  • https://t.me/clickhouse_ru
    У вас там в МатВью не должно быть ORDER BY (date, uuid, ip_address) ?
  • https://t.me/clickhouse_ru
    Я команду косо обрезал при копипасте, там по факту полей сильно больше
  • https://t.me/clickhouse_ru
    большой это сколько?
    И какого типа поле...
    словарь на миллион элементов UInt64 в памяти будет занимать 10 мегабайт
  • https://t.me/clickhouse_ru
    Вам только AggregatingMergeTree поможет мне кажется.
  • https://t.me/clickhouse_ru
    Да, очень похоже на то
  • https://t.me/clickhouse_ru
    Вам надо чтобы за день была максимум одна запись?
  • https://t.me/clickhouse_ru
    обычная SummingMergeTree
    без MATVIEW
    и crontab раз в сутки
    в котором будет
    INSERT INTO summing_table ... SELECT ... FROM main_table FINAL WHERE toDate(date)=toDate(now()) GROUP BY ...
  • https://t.me/clickhouse_ru
    Мне нужно колличество записей в исходной таблице за сутки
  • https://t.me/clickhouse_ru
    @lazoreth #202826 01:47 PM, 05 Feb 2021
    Я просто до последнего надеялся избежать запуска каких-то записей по расписанию
  • https://t.me/clickhouse_ru
    @lazoreth #202827 01:47 PM, 05 Feb 2021
    Но видимо никак
  • https://t.me/clickhouse_ru
    Тогда предыдущее сообщение или AggregatingMergeTree
  • https://t.me/clickhouse_ru
    @lazoreth #202829 01:48 PM, 05 Feb 2021
    Ладно. Большое спасибо за помощь
  • Спасибо! сейчас 50M записей
    Такой размер устраивает! попробую словарь из одного поля собрать
  • https://t.me/clickhouse_ru
    ну и фильтровать соответсвенно
    SELECT ... WHERE dictGetOrDefault('db.dict','attribute',tuple(your_field),0) = 0
  • https://t.me/clickhouse_ru
    @vvnik #202833 02:24 PM, 05 Feb 2021
    Всем привет!

    Пытаюсь завести clickhouse-copier для миграции данных на новые ноды.

    Блоки копирует но не получается приаттачить.
    В логе clickhouse-copier такое:
    DB::Exception: Transaction failed (Node exists): Op #4, path: /clickhouse/tables/<table>/v2/blocks/20201217_replace_from_33251BB87614C3254BD357CDDC66D8F0. (version 21.1.3.32 (official build))

    Версия clickhouse 21.1.3.32.

    Что интересно, когда он это писал, мониторил содержимое znode по пути /clickhouse/tables/<table>/v2/blocks. И не увидел, что там что-то появилось.

    Может это известная проблема?
  • https://t.me/clickhouse_ru
    @ivankegor #202834 02:30 PM, 05 Feb 2021
    Добрый день
    Подскажите с запросом

    Есть:
    CREATE MATERIALIZED VIEW test_materialized_view
    ENGINE = MergeTree
    PARTITION BY a ORDER BY (a, b, c, d, e, f, g, h)

    Где a, b - String
    Всего строк ~500M
    Разных значений a около 10
    Разных значений b - 3

    При этом долго выполняется запрос вида:
    SELECT a, b
    FROM test_materialized_view
    GROUP BY a, b
    ORDER BY a, b;

    Можно ли ускорить такой запрос в подобной ситуации
  • https://t.me/clickhouse_ru
    @monashev #202835 02:40 PM, 05 Feb 2021
    Привет.

    я верно понимаю, что вместо UPDATE-ов можно делать INSERT-ы в ReplacingMergeTree c версией больше предыдущей, а при SELECT-е выбирать строчку с максимальной версией и так получать результат последнего "апдейта"?
  • https://t.me/clickhouse_ru
    Да
  • Сделайте виртуальные целые поля (материализованное поле - хеш от строкового поля) , на них постройке таблицу и делайте группировку. Можете попробовать сначала без изменения структуры.
  • https://t.me/clickhouse_ru
    SELECT database, name, formatReadableSize(bytes_allocated) FROM system.dictionaries
    проверьте сначала после загрузки
  • https://t.me/clickhouse_ru
    @scorp_dev_null #202840 03:05 PM, 05 Feb 2021
    Привет
    Кто может подсказать по структуре каталогов

    /data/DATABASE/TABLE/???/COLUMNS
  • @105759339 #202841 03:10 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @surkiz #202842 03:20 PM, 05 Feb 2021
    Привет! Есть кликхаус на нашем сервере с таблицей ~12M строк, хочу перелить данные в кх на Yandex.Cloud что бы покрутить их в DataLens. Подскажите, как это проще/правильнее сделать?
  • https://t.me/clickhouse_ru
    clickhouse-client -h your_server -q "SELECT * FROM db.table FORMAT TSV" | clickhouse-client -h yandex_cloud_server -q "INSERT INTO db.table FORMAT TSV"
  • https://t.me/clickhouse_ru
    @nikitosiusis #202844 03:35 PM, 05 Feb 2021
    а можно также с древнего кх в новый перемахнуть?)
  • https://t.me/clickhouse_ru
    INSERT INTO db.table SELECT * FROM remote('old_server:9000',db.table)
  • https://t.me/clickhouse_ru
    @nikitosiusis #202846 03:38 PM, 05 Feb 2021
    да так небось точно сломается с разными версиями)
  • https://t.me/clickhouse_ru
    @surkiz ↶ Reply to #202845 #202847 03:41 PM, 05 Feb 2021
    спасибо! кажется, вариант с remote предпочтительнее?
  • https://t.me/clickhouse_ru
    протокол совместимый
  • https://t.me/clickhouse_ru
    если у вас доступ до вашего clickhouse сервера из yandex cloud есть
    то в целом да

    еще remoteSecure смотрите
  • https://t.me/clickhouse_ru
    @surkiz #202850 03:44 PM, 05 Feb 2021
    ок, понял 👍
  • https://t.me/clickhouse_ru
    @vgdrchk #202851 04:18 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @tafarberg #202852 05:47 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @grave1986 #202853 06:57 PM, 05 Feb 2021
    Привет. А если для distributed таблицы добавить буферную, проблем каких-то быть не должно при вставке через нее?
    db.table_buffer
    ENGINE = Buffer('db', 'table', .. )

    db.table
    ENGINE = Distributed('{cluster}', 'db', 'table_replicated', ..)

    db.table_replicated
    ENGINE = ReplicatedMergeTree('{path}/{shard}/db/table_replicated', '{replica}')
  • https://t.me/clickhouse_ru
    @zkelo #202854 07:19 PM, 05 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    так и задумано

    ENGINE = Distributed('{cluster}', 'db', 'table_buffer', ..)
  • https://t.me/clickhouse_ru
    не, а если не перед replicated, а именно для distributed?
  • https://t.me/clickhouse_ru
    такое не знаю
  • https://t.me/clickhouse_ru
    Понятно, ладно будем тестить )
  • https://t.me/clickhouse_ru
    что значит долго?
    Вы ожидаете что ORDER BY (a, b поможет? или о что?

    optimize_aggregation_in_order выклечено по дефолту

    --optimize_aggregation_in_order arg Enable GROUP BY optimization for aggregating data in corresponding order in MergeTree tables
  • https://t.me/clickhouse_ru
    ??? - парт
  • https://t.me/clickhouse_ru
    SELECT
    GROUP BY time, importance -- гранулярность секунда

    PARTITION BY toDate(time)
    ORDER BY (toDate(time), importance) -- гранулярность день

    что бессмысленно, логичнее либо там день либо тут секунда
    AggregatingMergeTree схлапывает по своему ORDER BY , оно вообще не в курсе что есть MV, AggregatingMergeTree живет отдельной жизнью

    а `_date` Date зачем вообще ?

    https://youtu.be/1LVJ_WcLgF8?t=7596

    https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
  • https://t.me/clickhouse_ru
    Хмм
    Интересно почему их больше сотни тысяч
  • https://t.me/clickhouse_ru
    ну так сто тысяч инсертов и пожалуйста

    там наверное большинство неактивные, они удаляются через 8 минут.

    проще смортеть

    select round(sum(bytes)/1024/1024) size, round((sum(data_uncompressed_bytes))/1024/1024) ub , sum(rows),count() part_count, database,table,partition
    from system.parts
    where active = 1 and table like '%' and database like '%'
    group by database,table,partition
    order by part_count desc
  • 06 February 2021 (29 messages)
  • https://t.me/clickhouse_ru
    ой простите херню вам посоветовал

    у вас же MV SummingMergeTree?
    тогда просто из него через SELECT sum(k) FROM mv GROUP BY выбирайте и все будет ОК
    потому что SummingMergeTree означает что суммирование по одинаковым значнеия ORDER BY будет в фоне производится при слиянии кусков из system.parts
  • https://habr.com/ru/company/solarsecurity/blog/540368/#comment_22629566

    >> min_insert_block_size_rows, min_insert_block_size_bytes не влияют на атомарность, тут Denny Crane ошибся.

    @milovidov_an все мои предыдущие эксперименты говорят что это не похоже на правду, min-ы влияют в зависимости от вставляемых данных, например native
    для ТСВ input_format_parallel_parsing влиял

    короче МИН настройки нужны именно для ГАРАНТИИ атомарности, так как макс сам по себе не гарантирует этого...

    https://t.me/clickhouse_ru/195294
  • min влияют на склеивание блоков в более крупные при INSERT SELECT или в Native протоколе, если отправляются мелкие блоки. Каждый такой склеенный блок в каждую партицию будет вставлен атомарно.
  • ну я про это и говорю. именно МИН дает гарантию атомарности независимо от того что на входе. а МАКС это просто ограничение сверху.
  • https://t.me/clickhouse_ru
    Хмм

    Они там инсертся встроенным Кафка консюмером
    Я думал они там батчами вставляются
  • @1431205369 #202870 07:29 AM, 06 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Привет. Начали тестить и поняли что такой способ апдейтит только словарь целиком, инкрементальный апдейт же не поддерживается. Ту в любом случае придется гонять вс таблицу целиком. Те инкрменеталки строк поupdate_field нет. Или я что то непонимаю в доке?
  • https://t.me/clickhouse_ru
    @combot #202873 b o t 11:40 AM, 06 Feb 2021
    Total messages: 202872
  • https://t.me/clickhouse_ru
    @gayanovalexey #202874 01:07 PM, 06 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    update_field не документирован, забили докумантировать.
    Partial update словарей работают с марта 2018.
  • ДДЛ словаря киньте
  • https://t.me/clickhouse_ru
    @mvikharev #202877 02:02 PM, 06 Feb 2021
    Проверим еще раз, спасибо
  • https://t.me/clickhouse_ru
    а что в partition by у таблицы ? возможно батчи режутся на множество партов по partition by

    select round(sum(bytes)/1024/1024) size, round((sum(data_uncompressed_bytes))/1024/1024) ub , sum(rows),count() part_count, database,table,partition
    from system.parts
    where active = 1 and table like '%' and database like '%'
    group by database,table,partition
    order by part_count desc
  • https://t.me/clickhouse_ru
    ржачная статья.

    Оптимизатор запросов в ClickHouse пока далек от того, что есть в других базах (например, PostgreSQL и Oraсle). Он не понимает зависимости данных между столбцами.
  • да, статья - самолюбование, её можно не читать...
    Моя претензия к Алексею в том, что его комментарий как минимум "misleading".
  • ну а теперь и ваш отредактированный им коммент на ГХ тоже misleading
    https://github.com/ClickHouse/ClickHouse/issues/9195#issuecomment-587500824
  • @133452245 #202882 03:03 PM, 06 Feb 2021
    странная статья... тип чел поработал с CH и решил поведать об этом миру?
  • статьи разные нужны статьи разные важны... =)
  • это верно
  • https://t.me/clickhouse_ru
    @den_crane #202885 03:27 PM, 06 Feb 2021
    Непонятно каким образом там у них проблема с пакетами КХ яндекс-альтинити нарисовалась и необходимость собственной сборки.
    Потому что вообще-то пакеты от яндекса были всегда, может конечно речь про rpm, был краткий период когда rpm не было от яндекса.

    Альтинити конечно зарубежная компания с headquarter в жуковском (а вообще щаз посчитал, Альтинити канадская компания, больше всего народу в Канаде, правда на русском почти все шпарят).
  • https://t.me/clickhouse_ru
    ну дъявол в деталях, через годы только начинаешь понимать что block_size задан в native файле при создании.
  • ну вот ещё при запуске инсерт селект тоже не атомарно, не говоря уж про магический флаг ТСВ парсера. все таки правильно писать
    max_insert_block_size ограничение куска сверху но не гарантия
    min_insert* - склеивание данных на входе до этого минимального размера
    и нужны оба
  • https://t.me/clickhouse_ru
    @den_crane #202888 05:04 PM, 06 Feb 2021
    Я думаю Яндекс живёт в другой реальности и мыслит другими категориями. Они просто не понимают что кто-то может захотеть делать инсерты которые затрагивают несколько партиций.
  • https://t.me/clickhouse_ru
    @den_crane #202889 05:08 PM, 06 Feb 2021
    И дефолтные настройки сделаны под широкие таблицы с килобайтными строками, конечно надо разбираться как вставлять аьтомарно миллионы строк узких и тестить. Наверное я напишу статью с примерами. Мы в альтинити решили попробовать на конфлюенсе поднять knowledge base
  • да, по инсертам там столько комбинаций... по любому надо
  • https://t.me/clickhouse_ru
    ClickHouse не гарантирует сохранность всех данных на все 100%. " почему ? как можно потерять данные ?
  • Нет транзакций. Вы вставили а во время вставки кх поймал сегфолт. Данные вставились или нет? Вы не узнаете.
  • https://t.me/clickhouse_ru
    нету D из ACID (не было / нету по дефолту).
    КХ может потерять последние инсерты https://stackoverflow.com/a/60172559/11644308
  • https://t.me/clickhouse_ru
    @ufaweb #202894 09:19 PM, 06 Feb 2021
    Joined.
  • 07 February 2021 (48 messages)
  • https://t.me/clickhouse_ru
    @Artemii_154 #202895 07:06 AM, 07 Feb 2021
    Joined.
  • @1495083870 #202896 08:43 AM, 07 Feb 2021
    Joined.
  • @Alexander2it #202897 11:06 AM, 07 Feb 2021
    Joined.
  • @1367507090 #202898 12:02 PM, 07 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1236463047 #202899 12:44 PM, 07 Feb 2021
    Братцы, напомните, если go-софтинка, которая буферит инсерты к КХ... забыл название. Помнит кто-то?
  • https://t.me/clickhouse_ru
    clickhouse-bulk
  • https://t.me/clickhouse_ru
    @1236463047 #202901 12:46 PM, 07 Feb 2021
    я так понимаю - ставлю ее на сервак, куча инсертеров отправляет на него, а он сам периодичски в КХ, да?
  • https://t.me/clickhouse_ru
    @1236463047 #202902 12:52 PM, 07 Feb 2021
    ну вроде да, спасибо
  • https://t.me/clickhouse_ru
    @akrisanov777 #202903 01:33 PM, 07 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @akrisanov777 #202904 01:35 PM, 07 Feb 2021
    Ребят, а не подскажите как в клике использовать WITH вместо подзапроса?

    Хочу сделать вот так:
    with t1 as (select * from my_table)
    select * from t1
  • https://t.me/clickhouse_ru
    какая версия clickhouse?
    https://clickhouse.tech/docs/en/sql-reference/statements/select/with/
    должно работать как вы показываете
    WITH | ClickHouse Documentation

    WITH Clause ClickHouse supports Common Table Expressions (CTE), that is provides to use results of WITH clause in the re

  • https://t.me/clickhouse_ru
    какую ошибку говорит?
  • @ViacheslavNefedov #202907 01:47 PM, 07 Feb 2021
    и самое интересное - какая версия КХ
  • https://t.me/clickhouse_ru
    [2021-02-07 16:47:56] Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 12 ('(') (line 1, col 12): (select * from my_table)
    [2021-02-07 16:47:56] FORMAT TabSeparatedWithNamesAndTypes;. Expected identifier (version 20.9.3.45 (official build))
  • https://t.me/clickhouse_ru
    @akrisanov777 #202909 01:48 PM, 07 Feb 2021
    То есть на скобку открывающую ругается как будто синтаксис не понимает
  • https://t.me/clickhouse_ru
    ClickHouse server version 20.9.3.45 (official build).
  • https://t.me/clickhouse_ru
    Вот этот пример работает
    /* запрос покажет TOP 10 самых больших таблиц */
    WITH
    (
    SELECT sum(bytes)
    FROM system.parts
    WHERE active
    ) AS total_disk_usage
    SELECT
    (sum(bytes) / total_disk_usage) * 100 AS table_disk_usage,
    table
    FROM system.parts
    GROUP BY table
    ORDER BY table_disk_usage DESC
    LIMIT 10;

    А там где я создаю переменную для подзапроса - нет
  • https://t.me/clickhouse_ru
    судя по https://github.com/ClickHouse/ClickHouse/commit/0f92fe9ad2003b9c091c3a10db0190ff84d9a10d
    оно и не должно
    доку описали только для 20.11
    так что наверное реализовали в 20.10 как минимум если не в 20.11
    DOCSUP-3118: Document the named subqueries WITH AS (#16339) · ClickHouse/ClickHouse@0f92fe9

    * Update WITH desc * Update docs/en/sql-reference/statements/select/with.md Co-authored-by: BayoNet <da-daos@yandex.ru> * Update docs/en/sql-reference/statements/select/with....

  • https://t.me/clickhouse_ru
    О, спасибо большое! А стоит ли переходить на 20.11 или лучше не стоит пока?
  • @githubreleases_bot #202914 b o t 02:20 PM, 07 Feb 2021
    ClickHouse/ClickHouse tagged: v21.2.2.8-stable
    Link: https://github.com/ClickHouse/ClickHouse/releases/tag/v21.2.2.8-stable
    Release notes:
    ClickHouse stable release v21.2.2.8-stable
    Release v21.2.2.8-stable · ClickHouse/ClickHouse

    ClickHouse stable release v21.2.2.8-stable

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

    , сейчас 20.8 является LTS
    у вас уже 20.9

    тут зависит от стадии продукта
    если у вас MVP и вы легко сможете обновляться, то можно сидеть на stable релизах
    а когда будете к продакшену подходить то дождаться LTS и перейти на него

    правда в понимании ClickHouse ;) L это примерно пол года... ну может год...
  • https://t.me/clickhouse_ru
    Я понял, ну, будем ждать))
  • @stas_sl #202917 04:53 PM, 07 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1236463047 #202918 07:03 PM, 07 Feb 2021
    НЕ пойму, как заставить обновляться словари mysql...
    lifetime =1
    у муsql запустил как сказано set global information_schema_stats_expiry=0;
  • https://t.me/clickhouse_ru
    @1236463047 #202919 07:03 PM, 07 Feb 2021
    и ничего
  • https://t.me/clickhouse_ru
    @1236463047 #202920 07:04 PM, 07 Feb 2021
    во файл со словарем меняю - перечитывается
  • https://t.me/clickhouse_ru
    @1236463047 #202921 07:04 PM, 07 Feb 2021
    select * from system.dictionaries; - время загрузки не меняется
  • https://t.me/clickhouse_ru
    @1236463047 #202922 07:05 PM, 07 Feb 2021
    в доке написано lifetime в секундах. В базе - поле в минутах
  • https://t.me/clickhouse_ru
    mysql8 ?
  • https://t.me/clickhouse_ru
    @1236463047 #202924 07:07 PM, 07 Feb 2021
    да
  • https://t.me/clickhouse_ru
    @1236463047 #202925 07:07 PM, 07 Feb 2021
    все распоследнее - КХ, Мускл
  • https://t.me/clickhouse_ru
    SHOW TABLE STATUS -- в mysql
  • https://t.me/clickhouse_ru
    @den_crane #202927 07:08 PM, 07 Feb 2021
    там дата
  • https://t.me/clickhouse_ru
    @den_crane #202928 07:08 PM, 07 Feb 2021
    modification_date
  • https://t.me/clickhouse_ru
    @den_crane #202929 07:08 PM, 07 Feb 2021
    меняется вообще?
  • https://t.me/clickhouse_ru
    @1236463047 #202930 07:08 PM, 07 Feb 2021
    а вот так если добавлю - сработает?
    <invalidate_query>SELECT max(modified) as modified FROM tags2</invalidate_query>
  • https://t.me/clickhouse_ru
    @1236463047 #202931 07:09 PM, 07 Feb 2021
    счас гляну статус
  • https://t.me/clickhouse_ru
    сработает
  • https://t.me/clickhouse_ru
    @1236463047 #202933 07:10 PM, 07 Feb 2021
    а кстати, почем у в примере в доке where id=1 ?
  • https://t.me/clickhouse_ru
    @1236463047 #202934 07:10 PM, 07 Feb 2021
    1 как-то меняется Хаусом или?
  • https://t.me/clickhouse_ru
    @1236463047 #202935 07:11 PM, 07 Feb 2021
    <invalidate_query>SELECT update_time FROM dictionary_source where id = 1</invalidate_query>
  • https://t.me/clickhouse_ru
    просто так , от балды написали
  • https://t.me/clickhouse_ru
    нет
  • https://t.me/clickhouse_ru
    @den_crane #202938 07:12 PM, 07 Feb 2021
    обычно туда запрос к метаданным таблицы из системного каталога пишут, что бы не грузить базу (mysql/pg) запросами типа SELECT max(modified)
  • https://t.me/clickhouse_ru
    @1236463047 #202939 07:16 PM, 07 Feb 2021
    попробовал information_schema.tables - не... не двигается... ну ок, буду max(update)... это срабатывает
  • https://t.me/clickhouse_ru
    @1236463047 #202940 07:16 PM, 07 Feb 2021
    спасибо
  • https://t.me/clickhouse_ru
    @FZambia #202941 07:45 PM, 07 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @GrishaRU #202942 08:12 PM, 07 Feb 2021
    Joined.
  • 08 February 2021 (198 messages)
  • @1245582126 #202943 02:26 AM, 08 Feb 2021
    Joined.
  • @Hitych #202944 03:19 AM, 08 Feb 2021
    Добрый день! Поскажите в чем может быть проблема. Создал кластер из 6-ти узлов, переопределил пользователя для взаимодействия между нодами тэгами <user> и <password>. Пытаюсь с первого узла выполнить команду create table t on cluster dwh (n integer) engine = mergetree() order by n; IDE 30 секунд ждет ответа от сервера, потом выдает timeout. В логе при этом ошибка: <Error> DynamicQueryHandler: Code: 373, e.displayText() = DB::Exception: Session is locked by a concurrent client., Stack trace (when copying this message, always include the lines below):

    0. DB::NamedSessions::acquireSession(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >, bool) @ 0xeadf67d in /usr/bin/clickhouse
    1. DB::Context::acquireNamedSession(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000000000l> >, bool) @ 0xeadeec0 in /usr/bin/clickhouse
    2. DB::HTTPHandler::processQuery(DB::Context&, Poco::Net::HTTPServerRequest&, HTMLForm&, Poco::Net::HTTPServerResponse&, DB::HTTPHandler::Output&, std::__1::optional<DB::CurrentThread::QueryScope>&) @ 0xf82c72a in /usr/bin/clickhouse
    3. DB::HTTPHandler::handleRequest(Poco::Net::HTTPServerRequest&, Poco::Net::HTTPServerResponse&) @ 0xf8325c5 in /usr/bin/clickhouse
    4. Poco::Net::HTTPServerConnection::run() @ 0x11d9fd75 in /usr/bin/clickhouse
    5. Poco::Net::TCPServerConnection::start() @ 0x11dd646f in /usr/bin/clickhouse
    6. Poco::Net::TCPServerDispatcher::run() @ 0x11dd7e81 in /usr/bin/clickhouse
    7. Poco::PooledThread::run() @ 0x11f03809 in /usr/bin/clickhouse
    8. Poco::ThreadImpl::runnableEntry(void*) @ 0x11eff79a in /usr/bin/clickhouse
    9. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    10. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.1.2.15 (official build))
  • https://t.me/clickhouse_ru
    какая IDE?
    DataGrip?

    если запустить соответсвующий запрос из clickhouse-client запущенном на первом узле
    все работает?
  • @Hitych ↶ Reply to #202945 #202946 03:37 AM, 08 Feb 2021
    Все верно datagrip, с клиента сейчас попробую
  • @Hitych ↶ Reply to #202945 #202947 03:51 AM, 08 Feb 2021
    Выполнил клиентом. Суть осталась та же, запрос провисел, потом выдал ошибку: Code: 159. DB::Exception: Received from clickhouse-server:9000. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000000015 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 6 unfinished hosts (0 of them are currently active), they are going to execute the query in background.
  • @Hitych #202948 03:51 AM, 08 Feb 2021
    Надо отметить что в логе ошибка про блокировку не появилась
  • https://t.me/clickhouse_ru
    это другая ошибка
    у вас все реплики online?
    по ошибке выглядит так будто реплики по какойто причине не хотят исполнять запрос на создание таблицы из distributed_ddl очереди ZK

    curl http://clickhouse_ip:8123/replica_status
    или
    SELECT * FROM system.zookeeper WHERE path='/'
    на каждой реплике
  • @Hitych ↶ Reply to #202949 #202950 04:40 AM, 08 Feb 2021
    Все реплики онлайн, по отдельности выполняю запросы на них. Если быть точным это 3 шарда и у каждого по реплике. Тесты сейчас сделаю.
  • https://t.me/clickhouse_ru
    SELECT * FROM system.settings WHERE name = 'allow_distributed_ddl'; ?
  • @Hitych ↶ Reply to #202949 #202952 04:43 AM, 08 Feb 2021
    user@node-01:~$ curl http://<ip>:<port_prefix>{4,5,6,7,8,9}/replicas_status
    Ok.
    Ok.
    Ok.
    Ok.
    Ok.
    Ok.
    user@node-01:~$
  • https://t.me/clickhouse_ru
    @BloodJazMan #202953 04:45 AM, 08 Feb 2021
    grep ddl -r /etc/clickhouse-server/

    настройки точно одинаковые ?

    должно быть что то вроде

    /etc/clickhouse-server/config.xml: <distributed_ddl>
    /etc/clickhouse-server/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /etc/clickhouse-server/config.xml: </distributed_ddl>
  • @Hitych ↶ Reply to #202951 #202954 04:48 AM, 08 Feb 2021
    4c3862c37937 :) SELECT * FROM system.settings WHERE name = 'allow_distributed_ddl';

    SELECT *
    FROM system.settings
    WHERE name = 'allow_distributed_ddl'
    Query id: a0ba3bfd-9e19-46d5-914e-70a95e22fa0b
    ┌─name──────────────────┬─value─┬─changed─┬─description───────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┬─type─┐
    │ allow_distributed_ddl │ 1 │ 0 │ If it is set to true, then a user is allowed to executed distributed DDL queries. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │ Bool │
    └───────────────────────┴───────┴─────────┴───────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┴──────┘
    1 rows in set. Elapsed: 0.006 sec.
    4c3862c37937 :)
  • @Hitych ↶ Reply to #202953 #202955 04:52 AM, 08 Feb 2021
    user@node-01:~$ grep ddl -r /opt/data/clickhouse_node{1,2,3,4,5,6}_dev/*.xml
    /opt/data/clickhouse_node1_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node1_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node1_dev/config.xml: </distributed_ddl>
    /opt/data/clickhouse_node2_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node2_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node2_dev/config.xml: </distributed_ddl>
    /opt/data/clickhouse_node3_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node3_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node3_dev/config.xml: </distributed_ddl>
    /opt/data/clickhouse_node4_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node4_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node4_dev/config.xml: </distributed_ddl>
    /opt/data/clickhouse_node5_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node5_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node5_dev/config.xml: </distributed_ddl>
    /opt/data/clickhouse_node6_dev/config.xml: <distributed_ddl>
    /opt/data/clickhouse_node6_dev/config.xml: <path>/clickhouse/task_queue/ddl</path>
    /opt/data/clickhouse_node6_dev/config.xml: </distributed_ddl>
    user@node-01:~$
  • @Hitych #202956 04:53 AM, 08 Feb 2021
    все 6 узлов это докер контейнеры на одном хосте. Я вот засомневался, что связность сетевая между ними в норме. Хотя данные между репликами реплицируются и распределенные dml нормально работают
  • https://t.me/clickhouse_ru
    @Gulshan5k #202957 04:53 AM, 08 Feb 2021
    Доброе утро! Подскажите пожалуйста, как можно сделать так чтобы groupArray включал и NULL значения.

    create table arrayTab (id UInt8,ch_name String, pidArray Array(UInt8),pnameArray Array(Nullable(String))) Engine=Memory;

    insert into charges values
    (100,'X')
    (101,'Y')
    (102,NULL);

    insert into packs (pack_id,pack_name,charge_id) values
    (4,NULL,100)
    (2,'A',100)
    (3,'C',100)
    (1,'A',101)
    (3,'B',101)
    (1,NULL,102)
    (2,'B',102);

    insert into arrayTab
    select id,max(chname), groupArray(pack_id),groupArray(pack_name) from (
    select * from charges c
    left join packs p on c.id=p.charge_id ) pp group by id;

    Получается вот так:
    select id,ch_name,pidArray,pnameArray from arrayTab;

    100 X [4,2,3] ['A','C']
    101 Y [1,3] ['A','B']
    102 [1,2] B

    но хотелось бы видеть:
    100 X [4,2,3] ['A',NULL,'C']
    101 Y [1,3] ['A','B']
    102 [1,2] ['B',NULL]

    Чтобы при array join не было ошбки: Sizes of ARRAY-JOIN-ed arrays do not match

    select * from arrayTab
    array join pidArray,pnameArray;
  • https://t.me/clickhouse_ru
    в смысле нормально работают распределенные DDL? если у вас CREATE TABLE ... ON CLUSTER не отрабатывает?
  • @Hitych ↶ Reply to #202958 #202959 04:57 AM, 08 Feb 2021
    DML, select из distributed table
  • https://t.me/clickhouse_ru
    ой тьу, распределенные DML ? это в смысле SELECT из Distributed таблицы?
    дак Distributed никак с Replicated не связны это ортогональные понятия
  • @Hitych ↶ Reply to #202960 #202961 04:58 AM, 08 Feb 2021
    Это я к тому что связь между узлами есть
  • @Hitych #202962 05:00 AM, 08 Feb 2021
    Сейчас обратил внимание на странное поведение клиента. Если подключиться клиентом с одной ноды на другую, то клиент виснет на фразе: user@5df50a09a5da:/$ clickhouse-client --host <ip> --port <port> --user default --password <pwd>
    ClickHouse client version 21.1.2.15 (official build).
    Connecting to <ip>:<port> as user default.
  • @Hitych ↶ Reply to #202962 #202963 05:01 AM, 08 Feb 2021
    Это я не тот порт указал. http вместо tcp
  • https://t.me/clickhouse_ru
    скорее всего никак
  • @akaWaster #202965 05:20 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    ну смотрите
    как distributed_ddl работает
    в ZK ноду которая /clickhouse/task_queue/ddl/ просто добавляются child типа task-XXXX с текстом запроса и нодой инициатором

    эту ноду делают watch все все остальные ноды, которые подключены с одному и тому же zookeeper
    и должны вычитывать SQL запросы и после исполнения добавлять свое имя в task-XXXX/finished таким образом рапортовать о том что сделали

    вы SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl'
    на всех нодах делали? нормально работает?

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

    SHOW CREATE DATABASE default
    какой engine показывает ? Atomic?

    у вас случайно не было там таблицы с точно таким же именем раньше?

    если у вас Atomic
    у вас в ReplicatedMergeTree
    в настройках пути {uuid} макрос используется?

    CREATE TABLE IF NOT EXISTS ... ON CLUSTER нормально отрабатывает?

    в логи посмотрите на каждой ноде
    поищите ваш запрос на создание посмотрие что в логах
  • @Hitych ↶ Reply to #202966 #202967 08:09 AM, 08 Feb 2021
    Большое спасибо за пояснения!
  • @Hitych ↶ Reply to #202966 #202968 08:09 AM, 08 Feb 2021
    По порядку:
  • @Hitych ↶ Reply to #202966 #202969 08:09 AM, 08 Feb 2021
    1. Со всех узлов SELECT * FROM system.zookeeper WHERE path='/clickhouse/task_queue/ddl' возвращает некий список запросов.
  • @Hitych #202970 08:10 AM, 08 Feb 2021
    2. 5df50a09a5da :) show create database default;

    SHOW CREATE DATABASE default
    Query id: 119653f7-6b0a-434a-90c5-93926321218c
    ┌─statement──────────────────────────────┐
    │ CREATE DATABASE default
    ENGINE = Atomic │
    └────────────────────────────────────────┘
    1 rows in set. Elapsed: 0.006 sec.
    5df50a09a5da :)
  • @Hitych #202971 08:11 AM, 08 Feb 2021
    3. Я пробовал разные ddl, например create user if not exist или grant
  • https://t.me/clickhouse_ru
    docker-compose?
    какая версия ClickHouse?
    Atomic для не system баз по умолчанию вроде только в 20.9 включили
    откатывали на 20.8?
  • https://t.me/clickhouse_ru
    пункты про UUID пропустили
  • @Hitych #202974 08:14 AM, 08 Feb 2021
    4. Макрос в пути в других таблицах есть {shard}, он определен в конфиге. Но именно в этой макроса нет. Это просто merge tree
  • @Hitych #202975 08:21 AM, 08 Feb 2021
    5. Create table if not exist также не работает
  • https://t.me/clickhouse_ru
    @mikhailberg #202976 08:21 AM, 08 Feb 2021
    а где про atomic можно почитать ?
  • @Hitych ↶ Reply to #202972 #202977 08:22 AM, 08 Feb 2021
    Использую docker в чистом виде, Clickhouse 21.1.2.15
  • https://t.me/clickhouse_ru
    @joerex40 #202978 08:50 AM, 08 Feb 2021
    Привет!
    Подскажите, пожалуйста, что делать если после пересоздания MV в dependencies_table она начинает дублироваться и выглядит это так:
    ['table_mv', 'table_mv', 'table_mv', 'table_mv']?
    Из-за этого вставки в основную таблицу падают с ошибкой:
    Table schema.table_mv doesn't exist.
  • https://t.me/clickhouse_ru
    {uuid} в ReplicatedMergeTree добавлен?
  • @Hitych ↶ Reply to #202979 #202980 08:52 AM, 08 Feb 2021
    Нет, нигде его не использую
  • https://t.me/clickhouse_ru
    @meanmail #202981 08:53 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    а надо
    потому что Atomic

    сделайте DROP TABLE IF EXISTS ... ON CLUSTER
  • @Hitych ↶ Reply to #202982 #202983 08:54 AM, 08 Feb 2021
    ок, сейчас попробую
  • @Hitych ↶ Reply to #202982 #202984 08:58 AM, 08 Feb 2021
    drop также встал в очередь тасков в зукипере
  • https://t.me/clickhouse_ru
    @BloodJazMan #202985 08:58 AM, 08 Feb 2021
    ну рестартуйте clickhouse-server если есть такая возможность

    что-то странное там у вас

    SELECT * FROM system.replicas WHERE max_absolute_delay > 0 FORMAT Vertical
  • https://t.me/clickhouse_ru
    @BloodJazMan #202986 08:59 AM, 08 Feb 2021
    смотрите в общем логи
  • @Hitych #202987 09:01 AM, 08 Feb 2021
    спасибо за помощь, буду копать дальше!
  • https://t.me/clickhouse_ru
    @rjs45 #202988 09:07 AM, 08 Feb 2021
    Доброго времени суток.
    Начали для Kafka engine таблицу ловить «Broker: Unknown member». При этом консюмер группа постоянно в ребалансе. Что может быть? В какую сторону копать
  • https://t.me/clickhouse_ru
    @KopylovDem #202989 09:19 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    тоже неприятно удивился, что groupArray пропускает Null
    я буду пробовать городить костыли типа заменять null на nan

    в целом, мне не нравится это поведение 🙂
  • https://t.me/clickhouse_ru
    @241186216 #202991 09:27 AM, 08 Feb 2021
    Подскажите. Как КХ в графане мониторить ? Через какие экспортёры или плагин к графане ?
  • https://t.me/clickhouse_ru
    feel free to Make Pull Request
  • Конфигурационные параметры сервера | Документация ClickHouse

    Конфигурационные параметры сервера builtin_dictionaries_reload_interval Интервал (в секундах) перезагрузки встроенных сл

  • https://t.me/clickhouse_ru
    Спасибо, а с какой это версии ?
  • @beebeeep #202995 09:33 AM, 08 Feb 2021
    вот уж чего не знаю, того не знаю:)
  • @beebeeep #202996 09:34 AM, 08 Feb 2021
    у меня в 20.3.7 есть, по-крайней мере
  • @ikadyrovR #202997 09:36 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    да, очень неудобно..а чем заменяете числовые значения?
  • https://t.me/clickhouse_ru
    можете уточнить пожалуйста, что за pull request?
  • https://t.me/clickhouse_ru
    Могу
    https://www.google.by/search?q=github+how+to+make+pull+request
  • https://t.me/clickhouse_ru
    какая то такая идея была. я еще не пробовал
    если COLUMN - Nullable(Float) то можно заменить Null на nan, а уже потом схлапывать в массив

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

    groupArray(ifNull( COLUMN, nan))
  • https://t.me/clickhouse_ru
    ну на гитхабе issue когда то заводили. Алексей закрыл 🙂
    судя по всему, в яндексе это всех устраивает

    надо как-то кворум набрать…

    https://github.com/ClickHouse/ClickHouse/issues/1980
  • https://t.me/clickhouse_ru
    дак а чего не спросили "а чего закрыли"?
    получили бы комментарии
  • https://t.me/clickhouse_ru
    тоже верно. написал.
  • https://t.me/clickhouse_ru
    @KopylovDem #203005 10:27 AM, 08 Feb 2021
    Приветствую! В чате поискал, но ответы про победить memory limit не помогают (или что-то делаю не так). Имеется Клик в облаке и 10Гб ограничение по оперативе. Для external_group_by и external_order_by стоит по 5Гб, join_algorithm = auto, max_block_size = 1024,
    Имеется попытка создать таблу mergetree table_result as select * from table1 join table2 using id
    Упирается в лимит. Пробую создать с одной записью (limit 1) = OK, потом insert into table_result [(c1, ...)] select * from table1 join table2 using id = memory limit
    Пытаюсь ввести group by внутри селекта чтобы уйти на диск, всё равно лимит.
    Может есть вариант создавать или вставлять чанками-батчами-кусками освобождая память?
    Драйвер JDBC
  • https://t.me/clickhouse_ru
    @BloodJazMan #203006 10:30 AM, 08 Feb 2021
    дело не в драйвере а в JOIN

    у вас сам по себе SELECT
    без INSERT скорее всего в memory limit упирается
    JOIN в памяти происходит

    у вас меньшая таблица table2 в память помещаются те столбцы по которым JOIN идет и те столбцы которые в итоге в result вставляются?
  • https://t.me/clickhouse_ru
    отдельно джоин отрабатывает, сам по себе. В том и затык
  • https://t.me/clickhouse_ru
    INSERT INTO... (SELECT ... FROM table 1 WHERE ) .. JOIN (SELECT table2.. WHERE GROUD BY)

    ?
  • https://t.me/clickhouse_ru
    Ну чанками вставлять можно. Например, используя связку SAMPLE и OFFSET
  • https://t.me/clickhouse_ru
    сколько колонок вставляете в _result?
  • https://t.me/clickhouse_ru
    сотню... если оставить 50 - в лимит не упирается, да. Но тогда другая проблема нарисовывается
  • https://t.me/clickhouse_ru
    100 колонок, это 2 мегабайта на колонку, 200 мегабайт только на буфера минимум
  • https://t.me/clickhouse_ru
    вставляйте чанками чанк выбирайте в память через sub query
    https://t.me/clickhouse_ru/203008
    Slach in ClickHouse не тормозит

    INSERT INTO... (SELECT ... FROM table 1 WHERE ) .. JOIN (SELECT table2.. WHERE GROUD BY) ?

  • https://t.me/clickhouse_ru
    продумываю этот вариант как раз. Так а разве чанк не из результата джойна надо брать? или именно такие же ключи выбирать из обоих сначала?
  • https://t.me/clickhouse_ru
    если у вас JOIN между двумя sub-query
    то сначала результат sub query в память
    потом по нему JOIN
  • https://t.me/clickhouse_ru
    про подзапросы и механику, да, помню. Здесь другое непонятно. WHERE в подзапросах что должно выбирать?
  • https://t.me/clickhouse_ru
    ЧАНК оно должно выбирать, ну по дате там например ограничивать, GROUP BY делать если надо
    короче должно делать так чтобы данные для JOIN в память умещались
  • https://t.me/clickhouse_ru
    тут сильно зависит от условий JOIN
    получается ли их соблюдать в рамках одного chunk или нет
  • https://t.me/clickhouse_ru
    тогда картина чанк1 из табла1 по дате - там рандомный набор c id1 по id10000 (например) и чанк1 из табла2 по дате и там рандомный набор из id5000 по id15000. Джойном чанки пересеклись в 4321 случае (например), таким образом результирующий чанк оставляет часть данных за бортом?
  • https://t.me/clickhouse_ru
    я же выше писал. просто по ключу id в обоих таблицах
  • @Nikolay_samsonov #203021 11:08 AM, 08 Feb 2021
    Joined.
  • @Nikolay_samsonov #203022 11:10 AM, 08 Feb 2021
    Привет. Не подскажите?
    Делаю снапшот ec2 инстанса в aws(EBS Volume snapshot) на котором крутится clickhouse.
    Достаточно ли делать только снапшот инстанса. Смогу ли я всегда в случае чего восстановить бд на последний инстанс? или может быть ситуация что не смогу никак восстановить из снапшота(потерять немного данных на момент пока делается снапшот не страшно). Или без бэкапа никак не обойтись? Есть опасность, что бд вообще не поднимется?
  • https://t.me/clickhouse_ru
    можно сделать сначала бекап при помощи alexakulov/clickhouse-backup
    он создаст хардлинки на все парты и потом можно будет смело снимать снапшот, тогда точно проблем не будет
  • Спасибо. Уточняющий вопрос. То есть если сделаю перед снапшотов clickhouse-backup местно на инстансе не увелится? верно понимаю?
  • https://t.me/clickhouse_ru
    верно
  • https://t.me/clickhouse_ru
    если получится сравнить скорость восстановления EBS Snapshot и clickhouse-backup из S3
    было бы хорошо
    там кажется это все от типов инстанса должно зависеть
  • Спасибо большое!
  • https://t.me/clickhouse_ru
    @KiLEXst #203028 11:33 AM, 08 Feb 2021
    но есть нюансы хардлинков - если их хранить дальше - место они занимают со временем всё больше. тотже транкейт/дроп если сделать для таблицы - место не высвободится тк останется бекап
  • вот как раз хотелось только snapshot делать из-за некоторых особенностей.
  • А если так делать: clickhouse-backup; ebs snapshot; delete backup на инстансе. или перед началом следующего бэкапа сначала предыдущий удалить на инстансе. пото все проделать снова. что-то такое
  • https://t.me/clickhouse_ru
    @KiLEXst #203031 11:37 AM, 08 Feb 2021
    я думаю да, должно работать
  • на этом же инстансе еще постгря крутится(( но проблем и опасней больше кликхаус вызывает
  • Спасибо за помощь!
  • https://t.me/clickhouse_ru
    @nyoroon #203034 11:40 AM, 08 Feb 2021
    подскажите, есть ли какой-нибудь способ держать колонки в схеме, но данные никуда не записывать? типа ENGINE=Null для отдельных колонок
  • https://t.me/clickhouse_ru
    пока по моему опыту аварийного восстановления после крешей - кликхаус самый живучий.
  • https://t.me/clickhouse_ru
    @KiLEXst #203036 11:40 AM, 08 Feb 2021
    (ну может у меня аварий просто нормальных не было)
  • ну из снапшота постгрю было проще поднять. с кликхаусом чуть больше мороки было. но подробностей не помню.
  • https://t.me/clickhouse_ru
    @LawYard #203038 11:42 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    проще тогда уже сделать FREEZE
    потом EBS snapshot
    потом удалить hardlinks в /var/lib/clickhouse/shadow
  • https://t.me/clickhouse_ru
    а это alexakulov/clickhouse-backup по сути тоже самое, но запакованное в контейнер)
  • https://t.me/clickhouse_ru
    @LawYard #203041 11:44 AM, 08 Feb 2021
    Всем привет!
    Ребят, а есть некий COUNT_IF? Или как в CH решить проблему подсчета строк по разным условиям?
  • он так и называется - CountIf
  • https://t.me/clickhouse_ru
    оно делает файловый бекап
    это не тоже самое что EBS snapshot
  • https://t.me/clickhouse_ru
    @andrewk0077 #203044 11:45 AM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    есть countIf
    на аггрегирующие фунции есть модификаторы
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/
    Combinators | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @LawYard #203046 11:47 AM, 08 Feb 2021
    Ах вот оно как работает 🤔 Спасибо!
  • https://t.me/clickhouse_ru
    @andrewk0077 #203047 11:50 AM, 08 Feb 2021
    Добрый день, коллеги.

    Подскажите, пожалуйста, добавляем http-словарь, где в source используется https...который сделан с помощью cloudflare ssl-сертификата.
    Курлом проверяю всё ок. А когда делаю system reload dictionary, то получаю: "SSL Exception: error:14000410:SSL routines::sslv3 alert handshake failure, Stack trace"
  • https://t.me/clickhouse_ru
    @andrewk0077 #203048 11:50 AM, 08 Feb 2021
    куда смотреть ? что читать ?
  • https://t.me/clickhouse_ru
    нене, это тоже самое что «сделать FREEZE»
    он как раз создает хардлинки в /var/lib/clickhouse/shadow
  • https://t.me/clickhouse_ru
    я в курсе что clickhouse-backup создает hardlinks
    я пытаюсь донести до вас, что после этого он делает копирование на S3 или в "локальную папку"
    а это вообще не тоже самое что сделать EBS Snapshot
    который делается на уровне блочного устройства

    хардлинки нужны чтобы данные во время бекапа никто не удалил изнутри clickhouse типа при background merge или mutations
  • https://t.me/clickhouse_ru
    я понимаю. просто создание этих хардлинков как раз обеспечивают консистентность именно этих файлов для снепшота. и если вдруг из снепшота основной стейт не поднимается эти хардлинки как раз помогут консистентно запсутить клик «из бекапа» который сохранился в снепшоте и при этом не занимает места
  • https://t.me/clickhouse_ru
    @rvkggwp #203052 12:29 PM, 08 Feb 2021
    добрый день, подскажите как работает эта настройка, strict_insert_defaults=1. В плане как ее установить, ch пишет что нет такой настройки
  • https://t.me/clickhouse_ru
    нашел что данную настройку удалили, хотя из офф документации не убрали( вопрос новый, как сделать чтобы не вставлялись какие-то дефолтные данные, если на вставку не передаются данные для полей, которые должны быть
  • https://t.me/clickhouse_ru
    создать поля с типом Nullable и без DEFAULT выражения
  • https://t.me/clickhouse_ru
    так а если эти поля не должны быть Nullable, просто ошибка вставки нужна, как быть?
  • https://t.me/clickhouse_ru
    и default не указан при создании таблицы
  • https://t.me/clickhouse_ru
    Removed the strict_insert_defaults setting. If you were using this functionality, write to clickhouse-feedback@yandex-team.com.

    думаю стоит написать или завести ISSUE на github
    как минимум документацию поправят
  • Привет. А что за MV и версия сервера?
  • Можно в личку чтобы не переписывать MV
  • https://t.me/clickhouse_ru
    Версия: 20.12.4.5
    MV - Material View, которая агрегирует статистики для основной таблицы в которую не вставляются данные из-за ошибки описанной выше.
    Возможно я не верно понял вопрос.
  • Меня текст MV интересовал.
  • https://t.me/clickhouse_ru
    ок, пришлю в личку!
  • https://t.me/clickhouse_ru
    @suxxoi #203063 12:59 PM, 08 Feb 2021
    Всем привет, есть таблица с такими данными:
    uuid payout is_upsell
    ccc991c1-5dcf-41ca-801c-f9f519761c25 8 0
    ccc991c1-5dcf-41ca-801c-f9f519761c25 10 1
    ccc991c1-5dcf-41ca-801c-f9f519761c25 8 0
    ccc991c1-5dcf-41ca-801c-f9f519761c25 10 0
    ccc991c1-5dcf-41ca-801c-f9f519761c25 12 1

    Как можно посчитать сумму с условиями
    Поясню, логика работы, если последнее значение is_upsell = 1, тогда смотрим предыдущее значение, если значение is_upsell = 1, смотрим еще предыдущее, если оно 0, тогда суммируем payout значения

    Из примера выше в итоге хочется видеть конечный результат:
    ccc991c1-5dcf-41ca-801c-f9f519761c25 22

    Может кто скажет в какую сторону копать или смотреть в доку?
  • https://t.me/clickhouse_ru
    sumIf(выражение, выражение для проверки условия
    https://clickhouse.tech/docs/en/sql-reference/aggregate-functions/combinators/
    Combinators | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @psmcd #203065 01:24 PM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @suxxoi ↶ Reply to #203064 #203066 01:37 PM, 08 Feb 2021
    А разве можно в sumIf множественные кондишены писать и еще в зависимости от предыдущего значения?
    Если переводить на какой нибудь ЯП, это была бы функция в которую приходит коллекцию, коллекцию перебираешь с конца и проверяешь каждый элемент и суммируешь
  • https://t.me/clickhouse_ru
    @suxxoi ↶ Reply to #203064 #203067 01:40 PM, 08 Feb 2021
    Что-то типа такого:
    type Item = {
    is_upsell: boolean;
    payout: number;
    }

    function sum(items: Item[]): number {
    let sum = 0;

    for (const item of items.reverse()) {
    if(!item.is_upsell) {
    return sum + item.payout;
    }

    sum += item.payout;
    }

    return sum;
    }
  • https://t.me/clickhouse_ru
    @kbespalov #203068 01:52 PM, 08 Feb 2021

    deduplicate_blocks_in_dependent_materialized_views

    https://clickhouse.tech/docs/ru/operations/settings/settings/#settings-deduplicate-blocks-in-dependent-materialized-views

    что то я сообразить не могу. верно ли, что если я включу эту опцию, то у меня перестанут вставляться строки, чей group by в materialized view имеет один хеш, при этом вставляемый в основную таблицу блок будет разный по хешу?
    Настройки | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    @kbespalov #203069 01:52 PM, 08 Feb 2021
    почему clickhouse не может использовать хеш от INSERT оригинального? Не materialized view с GROUP BY
  • https://t.me/clickhouse_ru
    @kbespalov #203070 01:56 PM, 08 Feb 2021
    пример - табличка с событиями

    event_id, event_type, event_cost

    materialized view это group by event_type sum(event_cost)

    получается INSERT’ы вида

    INSERT event_id=0 event_type=B, event_cost=1
    INSERT event_id=1 event_type=B, event_cost=1
    INSERT event_id=2 event_type=B, event_cost=1

    не будут триггерить matview так как group by хеш один

    type=B, cost=1
  • @dvmaximov #203071 02:28 PM, 08 Feb 2021
    Коллеги, кто использует DataGrip
    Есть проблема с неверным отображением времени, кто как ее решает?
    https://youtrack.jetbrains.com/issue/DBE-7770
  • https://t.me/clickhouse_ru
    таймзона может быть не та ?
  • @dvmaximov #203074 02:41 PM, 08 Feb 2021
    в клике таймзона UTC
    слева запрос через консоль яндекс, справа через datagrip. Почему-то datagrip дополнительно вычитает 3 часа. В настройках datagrip стоит использовать зону сервера.
  • @dvmaximov #203075 02:44 PM, 08 Feb 2021
    Переустановил data grip, заново создал подключение, стало норм
  • @mi_vadim #203076 02:49 PM, 08 Feb 2021
    Joined.
  • @mi_vadim #203077 02:52 PM, 08 Feb 2021
    Всем привет!
    Вопросик, может кто сталкивался, сделали апдейт (да кх не про это, но всеже) на таблице с 10млн записей, там кластер поднят, в итоге КХ упал и теперь пытается рестартить и сразу же падает
  • @mi_vadim #203078 02:52 PM, 08 Feb 2021
    вот с такой ошибкой
  • @mi_vadim #203079 02:52 PM, 08 Feb 2021
    2021.02.08 14:48:56.301149 [ 54 ] {} <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 173, e.displayText() = DB::ErrnoException: Allocator: Cannot mmap 16.00 EiB., errno: 12, strerror: Cannot allocate memory
  • https://t.me/clickhouse_ru
    кондишены то можно писать, а вот предыдущее значение наверное только через window functions можно было бы попробовать сделать, но их еще не запилили
  • @mi_vadim #203081 02:54 PM, 08 Feb 2021
    такое ощущение, что эта задача у него где-то записана и на каждом старте он пытается ее запустить и падает
  • 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) @ 0x110e3bb0 in /usr/bin/clickhouse
    1. DB::ErrnoException::ErrnoException(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int, std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > const&) @ 0x9988d8b in /usr/bin/clickhouse
    2. DB::throwFromErrno(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, int) @ 0x998871a in /usr/bin/clickhouse
    3. Allocator<false, false>::allocNoTrack(unsigned long, unsigned long) @ 0x99b5231 in /usr/bin/clickhouse
    4. Allocator<false, false>::realloc(void*, unsigned long, unsigned long, unsigned long) @ 0x99c32a6 in /usr/bin/clickhouse
    5. ? @ 0xe28dc6c in /usr/bin/clickhouse
    6. DB::ColumnString::insertFrom(DB::IColumn const&, unsigned long) @ 0xe294fac in /usr/bin/clickhouse
    7. DB::FunctionIf::executeGeneric(DB::ColumnVector<char8_t> const*, DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb14b5a7 in /usr/bin/clickhouse
    8. DB::FunctionIf::executeImpl(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb2630d9 in /usr/bin/clickhouse
    9. DB::FunctionIf::executeForNullableThenElse(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb14c06e in /usr/bin/clickhouse
    10. DB::FunctionIf::executeImpl(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long) @ 0xb262b84 in /usr/bin/clickhouse
    11. DB::ExecutableFunctionAdaptor::execute(DB::Block&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, unsigned long, unsigned long, bool) @ 0x9bdfcf2 in /usr/bin/clickhouse
    12. DB::ExpressionAction::execute(DB::Block&, bool, std::__1::shared_ptr<DB::ExtraBlock>&) const @ 0xde96d32 in /usr/bin/clickhouse
    13. DB::ExpressionActions::execute(DB::Block&, bool) const @ 0xde9b240 in /usr/bin/clickhouse
    14. DB::ExpressionBlockInputStream::readImpl() @ 0xe02dfef in /usr/bin/clickhouse
    15. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
    16. DB::ExpressionBlockInputStream::readImpl() @ 0xe02dfcf in /usr/bin/clickhouse
    17. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
    18. DB::MaterializingBlockInputStream::readImpl() @ 0xde9008f in /usr/bin/clickhouse
    19. DB::IBlockInputStream::read() @ 0xdb0234d in /usr/bin/clickhouse
    20. DB::MergeTreeDataMergerMutator::mutateSomePartColumns(std::__1::shared_ptr<DB::IMergeTreeDataPart const> const&, std::__1::set<std::__1::shared_ptr<DB::IMergeTreeIndex const>, std::__1::less<std::__1::shared_ptr<DB::IMergeTreeIndex const> >, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeIndex const> > > const&, DB::Block const&, std::__1::shared_ptr<DB::IMergeTreeDataPart>, std::__1::shared_ptr<DB::IBlockInputStream>, long, std::__1::shared_ptr<DB::ICompressionCodec> const&, DB::MergeListEntry&, bool) const @ 0xe58cb0c in /usr/bin/clickhouse
  • https://t.me/clickhouse_ru
    судя по стектрейсу валится на мутации (тот самый адейт 10 миллионов записей)
    пытается MATERIALIZED колонку посчитать через If функцию?

    памяти на сервере сколько?

    можно попробовать по одному background таску выполнять background_pool_size, background_schedule_pool_size, background_move_pool_size в 1 поставьте в default профиле

    если не поможет то мутации лежат ваши где то в /var/lib/clickhouse в виде SQL файлов лежат
    можно попробовать их просто грохнуть (предварительно стопнув сервер)
  • @mi_vadim #203085 03:06 PM, 08 Feb 2021
    Сейчас будем пробовать, но, пока, спасибо за идеи!
  • @1426982031 #203086 03:14 PM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @deadeternity666 #203087 03:17 PM, 08 Feb 2021
    Добрый день, подскажите, пожалуйста, как правильно построить кросс-дц сетап кластеров кликхауса. Можно ли использовать несколько кластеров зукипера, по одному в каждом дц. Раскидывать кластер зукипера по нодам в разные дц/держать зукипер лишь в одном дц?
  • https://t.me/clickhouse_ru
    вам кросс-дц репликация нужна (ReplicatedMergeTree)?
    или только кросс-дц вставка и чтение (Distributed)?
  • https://t.me/clickhouse_ru
    Репликация нужна, да.
  • @mi_vadim #203090 03:19 PM, 08 Feb 2021
    Спасибо! Помогло удаление файла с мутацией
  • https://t.me/clickhouse_ru
    тогда кластер ZK один
    и кросс-дц пинг критически важен, 30-60ms между нодами ZK
  • @mi_vadim #203092 03:19 PM, 08 Feb 2021
    хранилось как txt файлик
  • @7699150 #203093 03:19 PM, 08 Feb 2021
    Ребят, всем привет!
    Есть Materialized кололнка, в которой выполняется регулярка, которая экстрактит данные из другой колонки.
    Регулярка обновилась и хотелось бы обновить некоторые исторические данные. КХ ругается что нельзя делать ALTER UPDATE для MATERIALIZED COLUMN.
    Есть вариант как-то все же заапдейтить колонку, или нужно пересоздавать чтобы обновить исторические значения?
  • https://t.me/clickhouse_ru
    ну это. у вас теперь часть партов смутировала, а чать нет
  • https://t.me/clickhouse_ru
    То есть предпочтительнее держать ноды зукипера в разных дц?
  • https://t.me/clickhouse_ru
    несколько кластеров ZK точно не получится для кросс-дц репликации

    потому что все реплики коннектятся к кластеру который в <zookeeper> конфиге прописан, и если ZK в разных ДЦ разные кластера, тогда никакой репликации не будет

    все остальное через <remote_servers>
    сами ноды по ДЦ разным раскидываете это нормально
    и https://clickhouse.tech/docs/en/operations/settings/settings/#settings-load_balancing
    nearest hostname
    https://clickhouse.tech/docs/en/operations/settings/settings/#load_balancing-nearest_hostname

    но пинги у нод ZK между собой должны быть минимальными
    вот тут примеры настроек
    https://clickhouse.tech/docs/en/operations/tips/#zookeeper
    в яндексе есть кросс-дц

    НО, есть ли там кросс-ГЕО-дц (РФ + Штаты) я не знаю
    Settings | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    предпочтительнее в одном, но это плохо для кейса "ДЦ вышел из строя"
  • https://t.me/clickhouse_ru
    ALTER TABLE MODIFY COLUMN
  • https://t.me/clickhouse_ru
    Спасибо!
  • модифай уже сделал
    новые данные записываются правильно, а вот старые остались записанными по старому правилу
  • ничего страшного, там не критичный апдейт был)
  • https://t.me/clickhouse_ru
    ну тогда надо как то старые парты стриггерить Merge
    какую нибудь мутацию чтоли сделайте на ту колонку которая не MATERIALIZED

    что нибудь типа

    SET mutations_sync=2;
    ALTER TABLE db.table UPDATE column=column;
    попробовать
  • https://t.me/clickhouse_ru
    сервер один? если ReplicatedMergeTree то в system.replicas поглядите не встала ли репликация для таблицы
  • https://t.me/clickhouse_ru
    Попробуйте ограничить мутацию партицией или мельче, а потом optimize table... partition...
    Проальтерите другие части данных
  • сработало
    спасибо большое
  • https://t.me/clickhouse_ru
    @s2k2t #203106 03:35 PM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @finio #203107 03:54 PM, 08 Feb 2021
    здравствуйте, подскажите, а есть в кликхаусе возможность ограничить скорость наливки реплики?
    когда новая тачка наливается с других реплик она мешает им выполнять запросы select
    поможет background_schedule_pool_size уменьшить?
  • вряд ли наливка тормозит, скорее всего тормозят мерджи )
  • https://t.me/clickhouse_ru
    @georborodin #203109 03:55 PM, 08 Feb 2021
    Joined.
  • после того как удостоверитесь можете поменять это
    max_replicated_merges_in_queue 16

    ну а если фетчи то вот эти:
    replicated_max_parallel_fetches
    replicated_max_parallel_fetches_for_table
    replicated_max_parallel_fetches_for_host
    replicated_max_parallel_sends
    replicated_max_parallel_sends_for_table
  • https://t.me/clickhouse_ru
    @finio ↶ Reply to #203110 #203111 04:06 PM, 08 Feb 2021
    спасибо, попробуем
  • https://t.me/clickhouse_ru
    @rjs45 #203112 05:22 PM, 08 Feb 2021
    Скажите, а в kafka engine косюмер поднимается и висит постоянно и поллит, или же когда больше нечего читать из топика, освобождает место в backgroundSchedule пуле для других консюмеров? (речь о ситуаци когда консюмеров больше чем background_schedule_size)
    Мы часто стали ловить ошибку при попытке закомитить оффсеты от брокера и консюмер группа постоянно ребалансится.

    Clickhouse Server v 20.4.

    2021.02.08 15:48:57.944984 [ 41516 ] {} <Error> StorageKafka (kafka_table_name): Exception during commit attempt: Broker: Unknown member
    2021.02.08 15:48:57.963076 [ 41516 ] {} <Error> void DB::StorageKafka::threadFunc(): Code: 518, e.displayText() = DB::Exception: All commit attempts failed. Last block was already written to target table(s), but was not commited to Kafka.,
  • https://t.me/clickhouse_ru
    @crazyproger #203113 05:25 PM, 08 Feb 2021
    Подскажите пожалуйста - есть ли какая-то возможность повлиять на то в каком порядке кликхаус читает данные с диска(порядок чтения партиций)?

    Проблема в чем, есть запрос:
    insert select * from <very_big_table> any inner join <medium_table> using id
    Именно в таком варианте оно работает, но нет понимания есть ли гарантия повторяемости результатов - any join при параллельном чтении выдает результаты того потока который первее нашел пару для правой части, верно?
    Нужно получить гарантированное поведение данного запроса, а именно - чтоб к каждому элементу малого множества клеялась либо самая старая запись(самая старая партиция) либо самая новая. Хотя бы какой-то один из этих вариантов.
    Добавляя какую-либо сортировку в very_big_query - сразу вылетаем по памяти( (здесь кстати не понятно почему - если сортируем по ключу партиционирования - все равно вылетает - хотя казалось бы выдавай партици по очереди и ок).

    Срезав кол-во потоков через max_threads=1 можно убрать параллелизм и судя по логам вроде как чтение идет в один поток и в порядке партиций от меньшей к большей. Т.е. выглядит как подходящий вариант, но нигде не могу найти подтверждения этой теории - гарантирован ли в данном варианте повтор результата на одних и тех же данных, может кто-нибудь подсказать?

    Ну и может есть рычаг заставить читать партиции в обратном порядке? тогда при условии того что предыдущий абзац верный - можно было бы получить вариант _join с самым свежим_.
  • гарантий нет никогда, ни в одной нормальной SQL базе.

    с памятью можете попробовать max_bytes_before_external_sort выставить
  • @vmakulov #203115 05:36 PM, 08 Feb 2021
    Ребята, патовая ситуация, добавлили новую (следующую) ноду в кластер, а тут длинна имени папки для бинов уложила его (кластер), срочно вывели.
    при анализе оказалось что имя ее более 255 симовлов.
    Вручную проверили
    mkdir 'replica:xxxxxxxxxx@clickhouse%2Dnode1......node27:9000/statistics' : File name too long
    Как с минимальными потерями сократить есть идеи?
  • https://t.me/clickhouse_ru
    укоротить имена и пароли 🙂
    какая версия КХ?
    В новых есть use_compact_format_in_distributed_parts_names
  • 20.3.19.4 (official build).
  • @valri #203118 06:12 PM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    в этой наверное нету
    поищите в system.settings на всякий случай
  • @vmakulov #203120 06:21 PM, 08 Feb 2021
    есть такое
    │ use_compact_format_in_distributed_parts_names │ 0 │ 0 │ Changes format of directories names for distributed table insert parts. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
    Но есть и такое
    https://github.com/ClickHouse/ClickHouse/issues/14130
    Clickhouse unable to start with unclear error if Distributed table have unexpected folders · Issue #14130 · ClickHouse/ClickHouse

    create table default.DFA(A Int64) Engine=MergeTree order by tuple(); create table default.DFAD as default.DFA Engine=Distributed(test_shard_localhost, default, DFA) mkdir /var/lib/clickhouse/data/d...

  • https://t.me/clickhouse_ru
    @nickola_ru #203121 06:32 PM, 08 Feb 2021
    Подскажите по update_field для словарей:

    - Имеем таблицу в Postgres, в ней поле updated (timestamp with time zone, not null).
    Какой тип updated поля ожидает ClickHouse (timestamp / timestamp with time zone)?
    - Конфиг словаря такой:
    <source>
    <name>test</name>
    <odbc>
    <table>table_name</table>
    <connection_string>DSN=...</connection_string>
    <update_field>updated</update_field>
    </odbc>
    </source>
    <layout>
    <ssd_cache>
    ...
    </ssd_cache>
    </layout>
    <lifetime>
    <min>30</min>
    <max>45</max>
    </lifetime>
    <structure>
    <id>
    <name>id</name>
    <type>UInt64</type>
    </id>
    <attribute>
    <name>status_id</name>
    <type>UInt8</type>
    <null_value />
    </attribute>
    <attribute>
    <name>updated</name>
    <type>UInt64</type>
    <null_value />
    </attribute>
    </structure>
    - Делаем system reload dictionary test; select dictGet('test', 'status_id', toUInt64(1))
    - Видим зарос в Postgres: SELECT "id", "status_id", "updated" FROM "test_table" WHERE "id" IN (1)
    - Повторяем через минуту - снова такой же запрос в Postgres

    Почему нет запроса вида updated >= {$last_check}?
    Словарь наполняется выборками по ID, не сразу все / изменившиеся выгружаются?
  • https://t.me/clickhouse_ru
    остановите инсерты, удалите старые папки, поставьте настройку в 1 в default профиле и рестартаните
  • https://t.me/clickhouse_ru
    @172741727 #203123 06:33 PM, 08 Feb 2021
    Joined.
  • Будем пробовать, но баг-то открыт...
  • @vmakulov #203125 06:34 PM, 08 Feb 2021
    Спасибо Вам в любом случае
  • https://t.me/clickhouse_ru
    много открытых багов
    главное - не наступать 🙂
  • @148928885 #203127 06:46 PM, 08 Feb 2021
    Joined.
  • @148928885 #203128 06:54 PM, 08 Feb 2021
    Коллеги, как правильно считать delta от минимального значения в группе (100500 попытка изобрести window функции)? Есть события (id, node, ts DateTime64), хочется посчитать delta для каждого id, но runningDifference не подходит, ибо он бежит по всем. Попробовал финт с
    min(toUnixTimestamp64Micro(ts)) AS ts_min
    и
    groupArray((node, toUnixTimestamp64Micro(ts))) AS a
    но такая история ацки жрет память и оказалось проблематично это засунуть в materialized view.
  • @148928885 #203129 06:54 PM, 08 Feb 2021
    Такой заход нормальный? SELECT
    id,
    node,
    ts,
    ts - ts_min AS ts_delta,
    date
    FROM
    (
    SELECT
    id,
    min(toUnixTimestamp64Micro(ts)) AS ts_min,
    groupArray((node, toUnixTimestamp64Micro(ts))) AS a,
    date
    FROM msgtime
    WHERE date = '2021-02-06'
    GROUP BY (id, date)
    )
    ARRAY JOIN
    a.1 AS node,
    a.2 AS ts
  • https://t.me/clickhouse_ru
    @tst87 #203130 07:01 PM, 08 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    А сколько разных групп то?
  • https://t.me/clickhouse_ru
    @unamedrus #203132 07:02 PM, 08 Feb 2021
    Может через JOIN лучше будет
  • вы смотрите на запрос который выполняется при промахе в кеш...
    попробуйте сначала выбрать layout hashed/sparse_hashed...
    тогда он выполнит один раз и заберет все, и каждый следующий раз будет выполнять update_field>=<last-updated>
    формат всегда ожидается epoch судя по коду, (т.е. инт)
  • Айдишников 40 миллионов, node десятки, база суммарно 1,5 лярда
  • https://t.me/clickhouse_ru
    40 млн * на сколько дат
  • 14 дней, дальше думаю не будем
  • https://t.me/clickhouse_ru
    @unamedrus #203138 07:28 PM, 08 Feb 2021
    Ну и да, вы же знаете что МВ в кх это инсерт триггер на самом деле и он не читает таблицу
  • https://t.me/clickhouse_ru
    @iusik #203139 08:17 PM, 08 Feb 2021
    Коллеги, подскажите как мне можно сгенерировать dummy данные для вставки в таблицу с шагом по минутам.
    Т.е мне надо вставить данные за всю прошлую неделю с шагом минута и в каждую колонку вставлять рандомную строчку или число ?
  • https://t.me/clickhouse_ru
    now() - INTERVAL number MINUTE FROM numbers(10000)
  • https://t.me/clickhouse_ru
    @iusik ↶ Reply to #203140 #203141 08:25 PM, 08 Feb 2021
    Спасибо!
  • 09 February 2021 (312 messages)
  • @barmalei07 #203143 12:02 AM, 09 Feb 2021
    Joined.
  • ClickHouse/view.md at 3d2788e1b5b622f96fd15dd4636eba30984d39fb · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    (groupArray( tuple(pack_name) )).1
  • https://t.me/clickhouse_ru
    Это специально сделано.
    Агрегирующие функции не учитавают null. О об этом написано в доке.
  • https://t.me/clickhouse_ru
    Нет, это не решает проблему. Точнее надо после бекапа сказать sync, чтобы записать грязный кеш на диск.
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    Для ssd_cache не должно работать. Это бессмысленно.
  • https://t.me/clickhouse_ru
    У вас any join и левую таблицу обрабатывает distinct. Надо либо включить настройку any_join_distinct_right_table_keys

    либо использовать semi join
  • https://t.me/clickhouse_ru
    Так кафка устроена. Необходимо постоянно полить. Иначе брокер думает что консьюмер помер и делает ребаланс и отдает партиции другому консьюмеру
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @a1s_333444 #203153 06:14 AM, 09 Feb 2021
    Ребят привет, а я могу как то реплику запустить без ЗК? Мне только "прочитать" что есть в таблицах, которые были не реплицируемые.
    Или лучший вариант, если я мувну все партиции на другой ЗК и приатачу ?
    Версия CH: 20.10.6
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #203151 #203154 06:16 AM, 09 Feb 2021
    Ну у нас так и получается. Может быть, что после получения из кафки кх слишком долго обрабатывает полученный батч, что брокер кикает консюмер? Очень на это похоже по крайней мере
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Вам бы обновится сначала до 20.6+ там сильно лучше все с кафкой
  • https://t.me/clickhouse_ru
    Кх без зукипера стартует, таблицы просто ro
  • https://t.me/clickhouse_ru
    Чет не хочет, он стартовать. Пытается законнектися и после этого вырубается
  • https://t.me/clickhouse_ru
    не верится что-то. Ну удалите из конфига кусок про зукипер. И покажите лог
  • https://t.me/clickhouse_ru
    забавно, если conf.d/zookeeper.xml будет пустой, то CH не может запуститься, если в сервера ZK запихать localhost, то после попыток подключиться он вырубается.
    А если удалить conf.d/zookeeper.xml и закомментировать <zookeeper incl="zookeeper-servers" optional="true" />, то он стартует
    Но прочитать реплицируемую табличку чет не получается
    2021.02.09 07:28:00.412261 [ 21805 ] {59dcd7bf-da8b-4737-b293-f0efb5b7c2e9} <Debug> executeQuery: (from 127.0.0.1:42870) SELECT count(*) FROM test_backup;
    2021.02.09 07:28:00.416711 [ 21805 ] {59dcd7bf-da8b-4737-b293-f0efb5b7c2e9} <Error> executeQuery: Code: 225, e.displayText() = DB::Exception: Cannot get ZooKeeper (version 20.10.6.27 (official build)) (from 127.0.0.1:42870) (in query: SELECT count(*) FROM test_backup;), Stack trace (when copying this message, always include the lines below):

    0. DB::StorageReplicatedMergeTree::getZooKeeper() const @ 0xe0783bb in /usr/bin/clickhouse
    1. DB::StorageReplicatedMergeTree::getMaxAddedBlocks() const @ 0xe0da8cd in /usr/bin/clickhouse
    2. DB::StorageReplicatedMergeTree::totalRows() const @ 0xe0db63d in /usr/bin/clickhouse
    3. DB::InterpreterSelectQuery::executeFetchColumns(DB::QueryProcessingStage::Enum, DB::QueryPlan&, std::__1::shared_ptr<DB::PrewhereInfo> 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> > > > const&) @ 0xdb543d3 in /usr/bin/clickhouse
    4. DB::InterpreterSelectQuery::executeImpl(DB::QueryPlan&, std::__1::shared_ptr<DB::IBlockInputStream> const&, std::__1::optional<DB::Pipe>) @ 0xdb4c46b in /usr/bin/clickhouse
    5. DB::InterpreterSelectQuery::buildQueryPlan(DB::QueryPlan&) @ 0xdb4b9c6 in /usr/bin/clickhouse
    6. DB::InterpreterSelectWithUnionQuery::execute() @ 0xdcf167d in /usr/bin/clickhouse
    7. ? @ 0xde48568 in /usr/bin/clickhouse
    8. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xde4740d in /usr/bin/clickhouse
    9. DB::TCPHandler::runImpl() @ 0xe4ee3a6 in /usr/bin/clickhouse
    10. DB::TCPHandler::run() @ 0xe4fb1a7 in /usr/bin/clickhouse
    11. Poco::Net::TCPServerConnection::start() @ 0x10cd40df in /usr/bin/clickhouse
    12. Poco::Net::TCPServerDispatcher::run() @ 0x10cd5af1 in /usr/bin/clickhouse
    13. Poco::PooledThread::run() @ 0x10e06c99 in /usr/bin/clickhouse
    14. Poco::ThreadImpl::runnableEntry(void*) @ 0x10e02bca in /usr/bin/clickhouse
    15. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
    16. clone @ 0xfe96d in /usr/lib64/libc-2.17.so
  • https://t.me/clickhouse_ru
    @brbrbr #203161 06:30 AM, 09 Feb 2021
    Подскажите, пожалуйста, что может влиять на скорость выборки из таблицы без фильтров/сортировок?

    Я делаю select * from table1 limit 10 и select * from table2 limit 10. При одинаковом наборе полей в таблицах скорость работы запроса может отличаться в разы.
  • Количество партов
  • https://t.me/clickhouse_ru
    @s_valuev #203163 06:41 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203162 #203164 06:41 AM, 09 Feb 2021
    Спасибо, гляну.

    А можно чуть-чуть теории? Как работает КХ в случае таких запросов и как количество портов влияет на подобные запросы?
  • @dj_mixer #203165 06:42 AM, 09 Feb 2021
    Ну надо 1000 файлов прочесть вс 10 файлов.
  • https://t.me/clickhouse_ru
    Спасибо огромное, попробую!!
  • https://t.me/clickhouse_ru
    @Ilya_viv #203167 06:47 AM, 09 Feb 2021
    Тупой вопрос, но я что то туплю, может кто подскажет
    есть JSON (Netflow V9 с CISCO), который никак не соображу как распарсить, чтобы положить в табличку
    значения из массива
    интересует только массивы из "DataSets"
    {"AgentID":"10.1.1.1",
    "Header":{"Version":9,"Count":1},
    "DataSets":[
    [{"I":2,"V":"0x00000231"},{"I":1,"V":"0x0009c151"},{"I":8,"V":"109.195.122.130"}],
    [{"I":2,"V":"0x00000341"},{"I":1,"V":"0x0009c221"},{"I":8,"V":"109.195.122.233"}]

    ]}'
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203165 #203168 07:05 AM, 09 Feb 2021
    1000 файлов даже если limit 10?
  • https://t.me/clickhouse_ru
    @monashev #203169 07:31 AM, 09 Feb 2021
    Привет.
    Есть бесплатный довольно удобный гуёвый клиент для мускула, постгреса, etc: HeidiSQL . И его автор начал делать поддержку ClickHouse: https://github.com/HeidiSQL/HeidiSQL/issues/135#issuecomment-775711225 . У него возникают вопросы, как делать разные системные запросы по аналогии с MySQL и PG. Требуется Ваша профессиональная помощь, ибо я сам не настолько большой профессионал, чтобы правильно написать все запросы, специфичные для ClickHouse-а.
    Clickhouse support · Issue #135 · HeidiSQL/HeidiSQL

    https://clickhouse.yandex/ https://github.com/yandex/clickhouse-odbc

  • https://t.me/clickhouse_ru
    @vgdrchk #203170 07:34 AM, 09 Feb 2021
    Привет. Подскажите дилетанту. Как можно по синтаксису изменить настройку join_use_nulls. SET join_use_nulls = 1 не работает.
  • @Whiteler #203171 07:49 AM, 09 Feb 2021
    Joined.
  • вы берете специфичный кейс, который не оптимизирован (пока).
    если взять select * from xxx where aaa=4 limit 10.
    то КХ не знает когда эти 10 попадутся и будет лопатить все подряд.
    также на таблице может висеть ROW POLICY что тоже обязывает фильтровать.

    обычно когда у вас много партов причины две:
    - у вас высокая гранулярность партиций, тогда лучше просто зафорсить использование partitionkey во всех запросах (force_index_by_date=1)
    - у вас не работают мерджи, это надо чинить.

    ну и можно сделать ФР на оптимизацию таких селектов. но это в реальной жизни не так уж и нужно учитывая все эти workaroundы
  • ^^
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203172 #203174 08:16 AM, 09 Feb 2021
    Если добавить условие, то логика чтения всех партиций понятна, а вот без условий и сортировок - нет. :/

    Кстати, посмотрел - там 74 партиции всего, но 63 млрд записей на 1.2тб таблицу.
  • https://t.me/clickhouse_ru
    @brbrbr #203175 08:22 AM, 09 Feb 2021
    Ещё вопрос - есть ReplicatedMergeTree, partition by (ts), ttl ts + toIntervalDay(2).

    Смотрю партиции - висят полные активные партиции за 7 дней, хотя ожидаю видеть там только за 3. В какую сторону копать?
  • @fantast38 #203176 08:23 AM, 09 Feb 2021
    Коллеги , всех приветствую!
    Подскажите с кейсом : хочу удалить старые данные (partitions) из кластера , собсна хочется понять - это надо сделать на каждом узле или как ?
  • @fantast38 #203177 08:24 AM, 09 Feb 2021
    (я не гуру в КХ, сильно не ругайте за может быть глупый вопрос)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    on cluster можно добавить и удалится на всем кластере
  • @fantast38 #203180 08:29 AM, 09 Feb 2021
    Благодарю , коллеги!
  • ну а сколько партов? сколько колонок?
  • скорее всего, ttl не успевал отрабатывать, в старой версии он дропал один парт и больше ничего не делал, раз в день. можете попробовать уменьшить интервал отработки merge_with_ttl_timeout если у вас ttl_only_drop_parts=1,
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203175 #203183 08:32 AM, 09 Feb 2021
    Пардон, не туда посмотрел.
    Вопрос снимается.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203181 #203184 08:32 AM, 09 Feb 2021
    67 столбцов, 347 партов
  • @dj_mixer #203185 08:34 AM, 09 Feb 2021
    ну вот у вас (67+2~3) x 347 файла
  • @barmalei07 #203186 08:39 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203185 #203187 08:41 AM, 09 Feb 2021
    Воистину. Пойду думать, спасибо. :)
  • https://t.me/clickhouse_ru
    @StadnikD #203188 08:44 AM, 09 Feb 2021
    Поясните как работает ASOF JOIN. Каждому элементу левой таблицы вернется 1 элемент правой?
  • https://t.me/clickhouse_ru
    Лучше расскажите, какую задачу решаете. Если вам декартово произведение нужно отрубить, то используйте any join
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203190 08:51 AM, 09 Feb 2021
    Простите за глупый вопрос. В доках написано, что КХ использует сжатие. Если у нас дефолтные настройки, будет ли сжатие данных на диске?
    <compression incl="clickhouse_compression">
    <case>
    <min_part_size>10000000000</min_part_size>
    <min_part_size_ratio>0.01</min_part_size_ratio>
    <method>zstd</method>
    </case>
    </compression>
    Вообще возможно как то "упаковать" данные на диске, чтобы они меньше места занимали?
  • https://t.me/clickhouse_ru
    нет, я просто хочу понять как работает ASOF JOIN под капотом
  • Будет
  • Правильный order by +encoding иногда может зарешать. Надо знать данные
  • https://t.me/clickhouse_ru
    там тупо логи лежат
  • https://t.me/clickhouse_ru
    по умолчанию пакует LZ4
    https://clickhouse.tech/docs/ru/sql-reference/statements/create/table/#codecs
    вот тут можно почитать про кодаки сжатия, иногда можно ооооочень эффективно пожать поигравшись кодаками индивидуально для столбцов
    Таблица | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    а эффективность текущего сжатия какая?
  • Текстовые? Тогда только увеличить степень компрессии zstd
  • https://t.me/clickhouse_ru
    как узнать?
  • https://t.me/clickhouse_ru
    SELECT database, table, name, compression_codec,
    round(sum(data_compressed_bytes) / 1024/1024/1024, 2) as size_gb,
    round(sum(data_uncompressed_bytes) / 1024/1024/1024, 2) as size_uncompressed_gb,
    round(size_gb/size_uncompressed_gb*100,2) perc
    FROM system.columns
    GROUP BY database,table, name, compression_codec
    HAVING size_gb>0.1
    ORDER BY name ASC,table ASC
  • https://t.me/clickhouse_ru
    Можно уже к существующим таблицам менять кодек?
  • https://t.me/clickhouse_ru
    можно к существующим полям
  • https://t.me/clickhouse_ru
    ALTER TABLE.. MODIFY COLUMN
    смотрите в доке
  • https://t.me/clickhouse_ru
    сук, По факту не работает у меня вот так
  • https://t.me/clickhouse_ru
    А все условия из доки выполнены?
  • не помогут вам кодеки особо на лог-текстовых полях
  • https://t.me/clickhouse_ru
    Syntax error: failed at position 1 ('round'):
  • https://t.me/clickhouse_ru
    можно попробовать какой нить LZ4HC(9+), ну и логи бывают очень кардинальными )
  • @567555063 #203210 08:59 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    да. Соединяю по id пользователя и data в левой таблице должна быть меньше чем в правой
  • https://t.me/clickhouse_ru
    У меня точно такая же нога и она не болит)
  • LZ4HC - это не кодек, это компрессия, и то лучше как я сказал zstd>10... короче надо взять набор данных и делать бенчмарк
  • https://t.me/clickhouse_ru
    ну да, в любом случае надо пробовать
  • https://t.me/clickhouse_ru
    и вроде условия соблюдены, но они же никак не близкие
  • https://t.me/clickhouse_ru
    а можно скриншот?
  • https://t.me/clickhouse_ru
    В доке указано, что должно быть несколько полей для джоина — как минимум, одно жёсткое, и вот какое-нибудь для asof. Мб, из-за «жёстких» полей это максимально близкий вариант для джоина?
  • @globgor #203219 09:37 AM, 09 Feb 2021
    всем привет, подскажите пожалуйста есть ли оптимальный способ схлопнуть 100 млрд строк по двум колонкам?
  • что значит "схлопнуть"?
    select aggfn(col1), aggfn(col2) from tbl?
  • @globgor #203221 09:39 AM, 09 Feb 2021
    в идеале group by (col1, col2)
  • select col1, col2, aggfn(col3), aggfn(col4) from tbl?
  • @globgor #203223 09:41 AM, 09 Feb 2021
    только 2 колонки в 100 млрд записей, хочу выдернуть уникальные пары
  • @globgor #203224 09:42 AM, 09 Feb 2021
    в память не влезает, пробовал спилить на диск, отработало, но почему то только по 4 уникальные записи по одному id но должно быть больше
  • вы все правильно делаете, если не влезает - спилите на диск.
    если результат неправильный - это баг
  • @globgor #203226 09:48 AM, 09 Feb 2021
    попробовать обновиться?
  • я не знаю какая у вас сейчас версия, поэтому воздержусь от совета... вообще этот функционал врядли забагован, скорее всего у вас данные такие и там все правильно возвращается...
  • https://t.me/clickhouse_ru
    ну или не баг... а просто данные такие
  • https://t.me/clickhouse_ru
    @LawYard #203229 09:50 AM, 09 Feb 2021
    Ребят, а как алиасы запросам давать?
    Ну вот мне нужно два селекта сделать - в одном использовать результаты другого, вида:

    user_id in (select ... from ...)

    Можно ли сделать что-то вида

    $users = (select ... from ...)

    user_id in $users...

    что-то такое
  • @globgor #203230 09:51 AM, 09 Feb 2021
    в материнской таблице больше значений по этому id
  • @globgor #203231 09:51 AM, 09 Feb 2021
    это точно
  • https://t.me/clickhouse_ru
    SELECT uniqExact(col2) FROM table WHERE id=XX
    тоже 4 показывает?
  • @globgor #203233 09:51 AM, 09 Feb 2021
    по всем id возвращает только 4 строки
  • @globgor #203234 09:51 AM, 09 Feb 2021
    да
  • https://t.me/clickhouse_ru
    WITH | ClickHouse Documentation

    WITH Clause ClickHouse supports Common Table Expressions (CTE), that is provides to use results of WITH clause in the re

  • @globgor #203236 09:52 AM, 09 Feb 2021
    попробую обновиться, спасибо
  • https://t.me/clickhouse_ru
    покажите структуру таблицы и SQL запрос
    и как проверяли потом
    100 миллиардов или триллион, роли не играет
  • https://t.me/clickhouse_ru
    Спасибо!
  • @globgor #203239 09:58 AM, 09 Feb 2021
    create materialized view schema1.agg_id engine=AggregatingMergeTree() order by id populate as select id, idto from schema1.id_all group by id, idto
  • @n1ght_f0x #203240 10:00 AM, 09 Feb 2021
    Всем привет
    Как узнать сколько еще будет выполняться запрос, если по трейс логам он занимается переименованием tmp партов
  • https://t.me/clickhouse_ru
    Что-то не работает :(

    Делаю так:

    WITH users_logins as (
    SELECT
    login
    FROM events
    WHERE
    date BETWEEN (toDate('2021-02-08') and toDate('2021-02-08'))
    and event_id = 111
    )
    select
    count(*)
    from
    users_logins

    Пишет:
    DB::Exception: Syntax error: failed at position 24 ('(') (line 3, col 22): (
    SELECT
    login
    FROM events
    WHERE
    EventDate BETWEEN (toDate('2021-02-08') and toDate('2021-02-08'))
    and event_id = 1. Expected identifier
  • https://t.me/clickhouse_ru
    @LawYard #203242 10:02 AM, 09 Feb 2021
    Это просто запрос для примера, я уже решил прям такой простой сделать с каунтом
  • вот также и проверял, в материнской таблице 479 а в производной 4 (версия 20.6.4)
  • https://t.me/clickhouse_ru
    clickhouse какой версии?
    CTE через WITH недавно подвезли
  • https://t.me/clickhouse_ru
    20.8.11.17
  • https://t.me/clickhouse_ru
    @LawYard #203246 10:10 AM, 09 Feb 2021
    на страничке про with не написано с какой версии должно работать и что вообще есть ограничение(
  • https://t.me/clickhouse_ru
    @LawYard #203247 10:12 AM, 09 Feb 2021
    21.2 насколько я вижу
  • оно то ли в 20.10 то ли в 20.11 приехало.
    раньше был выбор версии в хелпе, сейчас куда то пропал...
  • https://t.me/clickhouse_ru
    @fykapu #203249 10:14 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @fykapu #203250 10:14 AM, 09 Feb 2021
    Приветствую, что посоветуете как простую, лёгкую и оптимизированную базу?
  • https://t.me/clickhouse_ru
    @KiLEXst #203251 10:16 AM, 09 Feb 2021
    SQLite
  • https://t.me/clickhouse_ru
    @fykapu #203252 10:17 AM, 09 Feb 2021
    Тоже думаю, материала для изучения достаточно?
  • https://t.me/clickhouse_ru
    @fykapu #203253 10:17 AM, 09 Feb 2021
    Просто варианты по типу монго понимаю для проектов побольше и мне такие объёмы не нужны
  • https://t.me/clickhouse_ru
    @TheN0rd #203254 10:26 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @TheN0rd #203255 10:29 AM, 09 Feb 2021
    Всем привет. Никто не сталкивался с тем, что с указанием пода (kubectl) не дает подключиться по http интерфейсу?

    Запрос вида
    echo 'SELECT 1' | curl 'http://clickhouse-simple-01.db-test:8123/' -d @-
    Падает с ошибкой
    DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name (version 20.12.4.5 (official build))

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

    Запрос вида
    echo 'SELECT 1' | curl 'http://localhost:8123/' -d @-
    Отрабатывает внутри пода

    Пробовал менять типы авторизации, устанавливал пароль, ошибка сохраняется
  • https://t.me/clickhouse_ru
    покажите вывод с curl -vvv
    echo 'SELECT 1' | curl -vvv 'http://clickhouse-simple-01.db-test:8123/' -d @-
  • https://t.me/clickhouse_ru
    как clickhouse в kubernetes ставили? clickhouse-operator? или helm какой нибудь?
  • https://t.me/clickhouse_ru
    helm
  • https://t.me/clickhouse_ru
    * Trying 172.20.144.86...
    * TCP_NODELAY set
    * Connected to clickhouse-simple-01.crm-test (172.20.144.86) port 8123 (#0)
    > POST / HTTP/1.1
    > Host: clickhouse-simple-01.crm-test:8123
    > User-Agent: curl/7.58.0
    > Accept: */*
    > Content-Length: 8
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 8 out of 8 bytes
    < HTTP/1.1 500 Internal Server Error
    < Date: Tue, 09 Feb 2021 10:32:14 GMT
    < Connection: Keep-Alive
    < Content-Type: text/plain; charset=UTF-8
    < X-ClickHouse-Server-Display-Name: chi-simple-01-cluster-0-0-0.chi-simple-01-cluster-0-0.crm-test.svc.dev.cluster.local
    < Transfer-Encoding: chunked
    < X-ClickHouse-Exception-Code: 516
    <
    Code: 516, e.displayText() = DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name (version 20.12.4.5 (official build))
    * Connection #0 to host clickhouse-simple-01.crm-test left intact
  • mongo ни разу не про объёмы... скорее про неструктурированные данные
  • https://t.me/clickhouse_ru
    @fykapu ↶ Reply to #203260 #203261 10:33 AM, 09 Feb 2021
    А про что
  • @dj_mixer #203262 10:33 AM, 09 Feb 2021
    выше дописал
  • https://t.me/clickhouse_ru
    @fykapu #203263 10:33 AM, 09 Feb 2021
    То есть не оч😂
  • смотря какие данные
  • https://t.me/clickhouse_ru
    @fykapu #203265 10:33 AM, 09 Feb 2021
    Мне просто нужна небольшая довольно быстрая бд, данные просто строки, тысячу значений максимум
  • https://t.me/clickhouse_ru
    @fykapu #203266 10:33 AM, 09 Feb 2021
    Но часто запись перезапись будет
  • https://t.me/clickhouse_ru
    тогда это максимально неподходящий чат
  • https://t.me/clickhouse_ru
    @fykapu #203268 10:34 AM, 09 Feb 2021
    Да первый который нашёл😂
  • https://t.me/clickhouse_ru
    @fykapu #203269 10:34 AM, 09 Feb 2021
    Сори
  • sqlite
  • excel, access...
  • https://t.me/clickhouse_ru
    @fykapu ↶ Reply to #203270 #203272 10:34 AM, 09 Feb 2021
    Ну вот я тоже думаю, пойду тогда смотреть, а там уже разберусь
  • https://t.me/clickhouse_ru
    @fykapu ↶ Reply to #203271 #203273 10:34 AM, 09 Feb 2021
    Не
  • foxpro, dbase
  • https://t.me/clickhouse_ru
    @fykapu #203275 10:34 AM, 09 Feb 2021
    В чем разница
  • берите sqlite, и не заморачивайтесь
  • https://t.me/clickhouse_ru
    @fykapu ↶ Reply to #203276 #203277 10:35 AM, 09 Feb 2021
    Ок, спасибо
  • @567555063 #203278 10:39 AM, 09 Feb 2021
    Вопрос по Kafka Engine (version 21.2.2.8). Пытаемся ускорить импорт из кафки, но не можем добиться больше 500 сообщений в секунду. Как понять в чем проблема и куда смотреть? Пробовали различные комбинации с kafka settings, создавали параллельно 3 консьюмера (отдельными таблицами с общей группой) так же игрались с kafka_num_consumers, но ничего не помогает.
    Топик на три партиции, размер сообщения ~1.5кб, сейчас методом проб и ошибок вышли на такие значения, kafka_num_consumers = 3, kafka_max_block_size = 2000000, kafka_commit_every_batch = 1, kafka_thread_per_consumer = 1
    Куда копать, что еще попробовать?
  • https://t.me/clickhouse_ru
    Кол-во консюмеров увеличить
  • https://t.me/clickhouse_ru
    @sabirjun #203280 10:40 AM, 09 Feb 2021
    Joined.
  • в конфиге пользователя default добавьте,
    <networks incl="networks" replace="replace">
    <ip>::/0</ip>
    </networks>
    либо используйте другого пользователя
  • https://t.me/clickhouse_ru
    @brbrbr #203282 10:41 AM, 09 Feb 2021
    Заметил, что count() читает в разы больше полей, чем простой их вывод.

    Делаю раз:

    select field1, field2, field3
    from table1
    where field1 in (select field5 from table5)

    1.5 секунды, читает 2.5 млн строк

    Делаю два:

    select count()
    from table1
    where field1 in (select field5 from table5)

    8 секунд, читает 420 млн строк

    Почему так?
  • https://t.me/clickhouse_ru
    @Makasinov #203283 10:41 AM, 09 Feb 2021
    Интересный случай произошёл, опишу, ибо вдруг кто по истории чата будет искать. Была частая проблема при вставках аля
    DB::Exception: Memory limit (total) exceeded: would use 56.60 GiB (attempt to allocate chunk of 67108896 bytes), maximum: 56.59 GiB
    Складывалось полное впечатление, что кх (внезапно) перестало хватать памяти, хотя ничего не обновлялось и не выкатывалось. Смотрю в htop - занято всего 20Гб, по приборам в графане тоже самое. Смотрю MemoryTracking - поднимается до 50+ Гб и потом падает. В итоге поставил в два раза больше использование памяти и всё пошло как по маслу. Отчего такое аномальное поведение началось - для меня неизвестно. Версия кх 21.1.2.15
    <max_server_memory_usage_to_ram_ratio>2</max_server_memory_usage_to_ram_ratio>
  • но у нас топик на 3 партиции, и 3 кафка брокера
  • вы сравниваете запросы с помощью Format Null?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203285 #203286 10:42 AM, 09 Feb 2021
    Format TabSeparatedWithNamesAndTypes
  • https://t.me/clickhouse_ru
    Уже есть этот блок
  • https://t.me/clickhouse_ru
    А что мешает увеличить?
  • у вас скорее всего останавливается клиент...
  • перепроверьте в preprocessed_configs/users.xml
  • из документации "The total number of consumers should not exceed the number of partitions in the topic, since only one consumer can be assigned per partition." Или вы имеете ввиду увеличить количество партицый на брокере тоже?
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203289 #203292 10:44 AM, 09 Feb 2021
    Про FORMAT Null не знал, спасибо. Сейчас попробую.

    Правильно понимаю, что в таком случае фактор клиента должен исключаться?
  • https://t.me/clickhouse_ru
    Конечно с начало на брокере нужно увеличить, толку не будет, если только на кафка энджин увеличить
  • https://t.me/clickhouse_ru
    Там отличивается, да
  • https://t.me/clickhouse_ru
    host_regexp смотрите в настройках default profile
  • https://t.me/clickhouse_ru
    <host_regexp>(chi-simple-01-[^.]+\d+-\d+|clickhouse\-simple-01)\.crm-test\.svc\.cluster\.local$</host_regexp>
  • https://t.me/clickhouse_ru
    <networks incl="networks" replace="replace">
    <ip>::1</ip>
    <host_regexp>(chi-simple-01-[^.]+\d+-\d+|clickhouse\-simple-01)\.crm-test\.svc\.cluster\.local$</host_regexp>
    <ip>127.0.0.1</ip>
    </networks>
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203285 #203298 10:46 AM, 09 Feb 2021
    Ругается синтаксической ошибкой, КХ 20.8.3.18. :/
    Этот формат недавно завезли?
  • может на вставляемых таблицах навешан МВ?
    либо слишком большой кусок вставляете... КХ сортирует их в памяти, т.е. он должен влезать. https://t.me/clickhouse_ru/199500
    в очень новой версии есть флажок чтобы сортировать на клиенте
    https://t.me/clickhouse_ru/201922
  • да
  • он давно там
  • https://t.me/clickhouse_ru
    Его нужно как-то заменить?
  • case sensitive: Format Null
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203303 #203304 10:50 AM, 09 Feb 2021
    Не хочет. Остальные форматы принимает.

    Syntax error: failed at position 536 ('FORMAT') (line 21, col 13): FORMAT TabSeparatedWithNamesAndTypes;. Expected SETTINGS (version 20.8.3.18 (official build))
  • https://t.me/clickhouse_ru
    На вставляемую таблицу действительно навешаны MV, но уже достаточно давно и никогда с этим проблем не возникало. А вот по поводу клиента спасибо за подсказу, потому что сам вставщик clickhouse-client уже давно не обновлялся (аж 20.1.3.7). Быть может дело в клиенте
  • https://t.me/clickhouse_ru
    когда вы конектитесь к
    Connected to clickhouse-simple-01.crm-test (172.20.144.86) port 8123

    clickhouse при наличии host_regexp
    будет делать DNS запрос c типом PTR на ваш source ip
    c которого будет идти коннект

    и это видимо будет какой то другой hostname не попадающий под ваш host-regpexp
    судя по всему вы конектитесь не в под а в сервис ? или точно по имени именно ПОДа?
  • нет, дело не в клиенте одного обновления клиента не хватит думаю, просто у вас не хватает памяти, придется вставлять кусками меньше... либо убить пару МВ
  • https://t.me/clickhouse_ru
    Если бы имя было не корректным то выдало ошибку хоста, поэтому скорее всего подключаюсь я к самому поду, возможно конечно я и ошибаюсь
  • https://t.me/clickhouse_ru
    судя по названию хостов, у вас все таки менеджмент clickhouse идет через clickhouse-operator

    который установлен через самописный helm chart
  • select * from system.parts Format Null;

    SELECT *
    FROM system.parts
    FORMAT Null

    Ok.

    0 rows in set. Elapsed: 0.241 sec. Processed 5.38 thousand rows, 2.82 MB (22.39 thousand rows/s., 11.72 MB/s.)
  • https://t.me/clickhouse_ru
    нет. имя некорректное и авторизация валится с ошибкой авторизации
  • https://t.me/clickhouse_ru
    А, в этом плане. Мейби, попробую действительно сделать батч поменьше
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203310 #203313 10:54 AM, 09 Feb 2021
    Видимо, дело в клиенте (DBeaver). :(

    Оба запроса ругаются такой же синтаксической ошибкой.
  • dbeaver И не должен работать. проверять надо родным клиентом
  • @Drosalevan #203315 11:40 AM, 09 Feb 2021
    Joined.
  • @vasilushechka #203316 11:40 AM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    У вас AggregaringMergeTree с order by id.
    Он не склеивает записи с разными idto?
  • @globgor #203318 11:48 AM, 09 Feb 2021
    похоже на то
  • @globgor #203319 11:48 AM, 09 Feb 2021
    сделал обычный create table as select group by
  • https://t.me/clickhouse_ru
    По описанию движка звучит логично
  • @globgor #203321 11:48 AM, 09 Feb 2021
    но на будущее хотелось бы чтобы новые записи аггрегировались
  • https://t.me/clickhouse_ru
    @hoha_ftf #203322 11:49 AM, 09 Feb 2021
    Они в фоне и агрегируются по id, потому что ключ такой
  • @globgor #203323 11:50 AM, 09 Feb 2021
    а как сделать aggmergetree по 2 столбцам?
  • @globgor #203324 11:51 AM, 09 Feb 2021
    в доке не совсем понятно как это работает
  • https://t.me/clickhouse_ru
    @hoha_ftf #203325 11:51 AM, 09 Feb 2021
    Order by id, idto
  • @globgor #203326 11:52 AM, 09 Feb 2021
    order by задает ключ, поэтому они не будут склеиваться?
  • https://t.me/clickhouse_ru
    @hoha_ftf #203327 11:53 AM, 09 Feb 2021
    Да, в доке так и написано, что группируется по ключу сортировки
  • @globgor #203328 11:53 AM, 09 Feb 2021
    спасибо, стало намного понятнее
  • @globgor #203329 11:53 AM, 09 Feb 2021
    плохо читал
  • https://t.me/clickhouse_ru
    А как до этого люди делали запросы, в которых надо было провязать данные из двух селектов по сути? Никак?)
  • https://t.me/clickhouse_ru
    что значит привязать данные из двух селектов?

    в смысле сдалть JOIN по результатам двух sub query ?
  • https://t.me/clickhouse_ru
    У меня есть табличка с событиями. Я хочу посчитать воронку вида "какой процент пользователей, которые до этого тыкнули в определенную кнопку, сделали потом что-то".

    То есть в обычном мире я бы либо поселектил в переменную пользователей, которые тыкнули в кнопку, а потом поселектил всех пользователей, сделавших что-то и входящих в этот список (переменную), либо сделал в where условие вида user in (select from)
  • https://t.me/clickhouse_ru
    @lazoreth #203334 12:46 PM, 09 Feb 2021
    Подскажите пожалуйста. По какой причине SummingMergeTree может не суммироватся? Сделал запись около получаса назад, таблица так и не просуммирована
    CREATE TABLE IF NOT EXISTS lbas_daily
    (
    date Date,
    uuid UUID,
    created_at DateTime,
    type_name String,
    bv Int64
    ) ENGINE = SummingMergeTree(bv)
    PARTITION BY toYYYYMM(date)
    ORDER BY (date, uuid);

    INSERT INTO lbas_daily
    SELECT toDate(sample_time) as date,
    uuid,
    created_at,
    type_name,
    1 as bv
    FROM lbas
    WHERE toDate(sample_time) == yesterday();
  • https://t.me/clickhouse_ru
    @lazoreth #203335 12:47 PM, 09 Feb 2021
    Вот такой запрос делаешь, там цифры одинаковые SELECT (SELECT count(*)
    FROM lbas
    WHERE toDate(sample_time) == yesterday()) as orig_table_cnt,
    (SELECT count(*) FROM as_daily) as daily_table_cnt;
  • https://t.me/clickhouse_ru
    @lazoreth #203336 12:47 PM, 09 Feb 2021
    Хотя мат. вьюхи суммировались в течении нескольких минут
  • https://t.me/clickhouse_ru
    возможно, мой комментарий вряд ли пригодится, но емнип, тут или 1) действительно вам сделать join по подзапросу, 2) как вариант, то что вы указали в своем оригинальном сообщении, сделать на базе tmp по таблице тыкнувших пользователей. (изумдриться, но такой себе вывод)
    Но JOIN или WITH звучит как-то разумнее, как сказал @BloodJazMan , ИМХО. 😅
  • https://t.me/clickhouse_ru
    @sergeyakiselev #203338 12:53 PM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @LawYard #203339 12:55 PM, 09 Feb 2021
    Да вот WITH у меня еще нет в моей версии :(
    JOIN попробовать можно, наверно 🤔
  • https://t.me/clickhouse_ru
    @LawYard #203340 12:55 PM, 09 Feb 2021
    энивей, спасибо
  • https://t.me/clickhouse_ru
    @ployd #203341 12:57 PM, 09 Feb 2021
    Привет, кто знает, в каком месте в сорцах ch трансформацию Float64 -> Decimal64 посмотреть можно?

    UPD: https://github.com/ClickHouse/ClickHouse/blob/6fc3ca8b7b42879d36a9dfd1756b9eb772128814/src/DataTypes/DataTypesDecimal.h#L193
    ClickHouse/ClickHouse

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

  • создалась табличка, но опять разница в 2 раза, делаю select uniqExact(idto) from schema1.id_all where id = xxxxxx
    выдает 479 записей, делаю тот же запрос на производной таблице, выдает 249 записей
    производная таблица создавалась create table schema1.agg_id engine = MergeTree order by id as select id, idto from schema1.id_all group by id, idto
  • https://t.me/clickhouse_ru
    Parametric | ClickHouse Documentation

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

  • есть идеи в чем может быть проблема?
  • не все вставилось... так бывает... сделайте select count() сравнение табличек
  • @globgor #203346 01:08 PM, 09 Feb 2021
    count по любому же будет меньше, так как производная табличка это сагрегированные данные?
  • @lenden #203347 01:10 PM, 09 Feb 2021
    добрый день, столкнулись с проблемой зависания таблицы (engine mysql), любая операция drop/rename/select вызывает бесконечное зависание. в логах запросов можно увидеть следующую ошибку:

    Code: 473, e.displayText() = DB::Exception: WRITE locking attempt on "database.tablename" has timed out! (120000ms) Possible deadlock avoided. Client should retry. (version 20.4.4.18 (official build))

    погуглили после этого, вроде пишут, что это баг, связанный с возникновением дедлока при alter таблицы и он был починен в 20.6 обновились до 21, но сама проблема никуда не исчезает, таблица залочена намертво. убиваем вручную запросы, которые с ней как либо связаны, но запрос на убийство запроса тоже зависает зачастую. кто-то сталкивался с таким поведением?
  • @n1ght_f0x #203348 01:11 PM, 09 Feb 2021
    Всем привет
    Уже сутки выполняется insert запрос запущенный через clickhouse client
    Как узнать его прогресс, если на текущий момент в trace log он переименовывает tmp партиции
  • да, не заметил group by.
    там у вас ещё aggregatedmt...
  • @globgor #203350 01:13 PM, 09 Feb 2021
    я после этого создал без aggmt, все равно не бьет
  • так может вы МВ создали позже чем начали наполнять сырую таблицу? зачем там вообще aggregating MT? я вообще потерял нить и в чем была проблема у вас...

    select distinct [keys] from raw
    select distinct [keys] from mv
    дают разные значения?
  • @globgor #203352 01:20 PM, 09 Feb 2021
    сначала создал aggmt потом мне тут подсказали что не правильно, создал create table as select group by id, idto без aggmt
    табличка создалась но разница при запросах примерно 2 раза с главной таблицей
    249 против 479
  • Ну сделайте
    Select from main where (id, idto) not in (select from new)

    Возьмите первую попавшуюся строку.

    И select from new where id=a and idto=b;
  • @globgor #203354 01:29 PM, 09 Feb 2021
    в err логах attempt to read after eof
  • @globgor #203355 01:29 PM, 09 Feb 2021
    ок сча попробую
  • да, данных нет в производной таблице
  • ну у вас не все вставилось тогда, инсерт умер не дойдя до конца
  • @globgor #203358 01:42 PM, 09 Feb 2021
    получается нет решения для high cardinality group by?
  • select id, idto from rawtable group by id, idto;
    select distinct id,idto from rawtable;

    оба должны работать без проблем
  • @globgor #203360 01:47 PM, 09 Feb 2021
    всего 700 ГБ памяти, max_memory_usage выставлен 600 max_memory_usage_before_external_group_by 300GB, данные спиллятся на диск, но вылетает по ООМ, что может быть не так?
  • @globgor #203361 01:52 PM, 09 Feb 2021
    в dmesg ругается 'clickhouse-serv' uses 32-bit capabilities
  • https://t.me/clickhouse_ru
    @ajIeks #203362 02:05 PM, 09 Feb 2021
    Привет всем, настраивал кто-нибудь уже с 21.2.2.8 LDAP с мапингом ролей? Вроде все сделал как написано в конфигах, настроил фильтры и тд. Пытаюсь войти, CH дергает LDAP, там все успешно, но дальше выдает что не пущу, а за ролями даже не идет (смотрю в wireshark) 😕
  • https://t.me/clickhouse_ru
    @tron_wai #203363 02:07 PM, 09 Feb 2021
    На стороне сервера какие сообщения прямо перед тем как написать что аутентификация не удалась?
  • https://t.me/clickhouse_ru
    @ajIeks #203364 02:10 PM, 09 Feb 2021
    @tron_wai вот как-то так, не очень содержательно конечно
    2021.02.09 14:02:51.012144 [ 54 ] {} <Error> Access(user directories): test_user: Authentication failed: Code: 192, e.displayText() = DB::Exception: There is no user `test_user` in user directories, Stack trace (when copying this message, always include the lines below):
  • https://t.me/clickhouse_ru
    @ajIeks #203365 02:11 PM, 09 Feb 2021
    локально этого юзера нет в CH, но в том же и суть, чтобы не заводить, а использовать из LDAP, или что-то не так понял? И вот так в конфиге https://gist.github.com/fuCtor/bebfd81cd8d232ceacc1b15c4b72d6a1
    gist:bebfd81cd8d232ceacc1b15c4b72d6a1

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

  • @1349292690 #203366 02:17 PM, 09 Feb 2021
    Добрый день.
    Переключились на ZK c защищенным подключением, в query_log самые долгие запросы с ошибкой от юзера repl_stats, который указан в конфигах реплик:

    Code: 999, e.displayText() = DB::Exception: Cannot allocate block number in ZooKeeper: Coordination::Exception: Session expired (Session expired) (version 21.2.2.8 (official build))

    Вдобавок запросы редко проходят, потому что этот самый repl_stats:

    DB::Exception: Too many simultaneous queries for user repl_stats. Current: 50, maximum: 50. (version 21.2.2.8 (official build))
  • @lenden ↶ Reply to #203347 #203367 02:21 PM, 09 Feb 2021
    может кто-то из свежезашедших знает?)
  • https://t.me/clickhouse_ru
    ldapsearch / ldapwhoami работают?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203368 #203369 02:26 PM, 09 Feb 2021
    да, проверил через другие ldap клиенты, так в логах wireshark он пишет что bind success. Потом unbind и все, ошибка входа.
  • https://t.me/clickhouse_ru
    А если мапинг ролей убрать, то аутентифицируется пользователь?
  • https://t.me/clickhouse_ru
    @ajIeks #203371 02:27 PM, 09 Feb 2021
    сейчас попробую
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203370 #203372 02:30 PM, 09 Feb 2021
    да, без мапинга все завелось
  • https://t.me/clickhouse_ru
    @ajIeks #203373 02:30 PM, 09 Feb 2021
    Но так не интересно )
  • https://t.me/clickhouse_ru
    @tron_wai #203374 02:30 PM, 09 Feb 2021
    Ну само собой ) наверно какая-то синтаксическая ошибка в фильтре
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203374 #203375 02:34 PM, 09 Feb 2021
    еще бы в лог выкидывал 🙁 пойду курить, еще конечно сырки можно посмотреть с этой фичей )
  • https://t.me/clickhouse_ru
    что выдает эквивалентный ldapsearch?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203376 #203377 02:39 PM, 09 Feb 2021
    проблема в том что там подстановка, и вот во что она разворачивается не совсем очевидно
  • https://t.me/clickhouse_ru
    @tron_wai #203378 02:40 PM, 09 Feb 2021
    ldapsearch -H "ldap://localhost:10389" -D 'uid=my_ldap_user,dc=ldap,dc=example,dc=com' -w my_password -b "ou=groups,dc=example,dc=com" "(&(objectClass=groupOfNames)(member=uid=my_ldap_user,dc=ldap,dc=example,dc=com))"
  • https://t.me/clickhouse_ru
    @ajIeks #203379 02:40 PM, 09 Feb 2021
    при входе используется просто логин/пароль, не DN, а в поиске bind_dn подстановка и видать он подставляет то что было в bind, а оно не парсится. Там в формате AD DOMAIN/user
  • https://t.me/clickhouse_ru
    @tron_wai #203380 02:41 PM, 09 Feb 2021
    -b searchbase
  • https://t.me/clickhouse_ru
    @tron_wai #203381 02:41 PM, 09 Feb 2021
    -D binddn
  • https://t.me/clickhouse_ru
    @tron_wai #203382 02:41 PM, 09 Feb 2021
    последний позиционный аргумент - search filter
  • https://t.me/clickhouse_ru
    это из настроек в секции <ldap_servers>
  • https://t.me/clickhouse_ru
    @ajIeks #203384 02:42 PM, 09 Feb 2021
    -D 'uid=my_ldap_user,dc=ldap,dc=example,dc=com' -w my_password
    у меня не такой формат, а
    -D 'AD_DOMAIN\my_ldap_user' -w my_password
  • https://t.me/clickhouse_ru
    @ajIeks #203385 02:43 PM, 09 Feb 2021
    похоже в этом проблема
  • https://t.me/clickhouse_ru
    @tron_wai #203386 02:43 PM, 09 Feb 2021
    ну содержимое этих полей не важно - ставьте ваши
  • https://t.me/clickhouse_ru
    @ajIeks #203387 02:43 PM, 09 Feb 2021
    а в CN вообще кирилица, а не то что в user_name )
  • https://t.me/clickhouse_ru
    @tron_wai #203388 02:44 PM, 09 Feb 2021
    если получить эквивалентный ldapsearch, то станет ясно что не работает
  • https://t.me/clickhouse_ru
    @ajIeks #203389 02:48 PM, 09 Feb 2021
    если эквивалентный, то будет: (&(objectClass=group)(member=DOMAIN\user_name))]
  • https://t.me/clickhouse_ru
    @ajIeks #203390 02:48 PM, 09 Feb 2021
    такой не парсится
  • https://t.me/clickhouse_ru
    @tron_wai #203391 02:48 PM, 09 Feb 2021
    всю команду и ее аутпут можно?
  • https://t.me/clickhouse_ru
    @ajIeks #203392 02:49 PM, 09 Feb 2021
    Mac и проверяю на продовом ldap, не оценят )
  • https://t.me/clickhouse_ru
    @tron_wai #203393 02:49 PM, 09 Feb 2021
    Я и не предполагал, что винда. Замените все секретное на что-нибудь веселое чтоли.
  • https://t.me/clickhouse_ru
    @tron_wai #203394 02:50 PM, 09 Feb 2021
    просто без этого ничего подсказать не смогу
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203393 #203395 02:51 PM, 09 Feb 2021
    сорян, не думал что под маком есть, сейчас соберу
  • https://t.me/clickhouse_ru
    @tron_wai #203396 02:52 PM, 09 Feb 2021
    brew install openldap
  • https://t.me/clickhouse_ru
    @ajIeks #203397 02:55 PM, 09 Feb 2021
    ldapsearch -H "ldap://ldap.domain.tld:389" -D 'DOMAIN\test_user' -w password -b "OU=Security Groups,dc=domain,dc=tld" "(&(objectClass=group)(member=DOMAIN\test_user))"
    # extended LDIF
    #
    # LDAPv3
    # base <OU=Security Groups,dc=domain,dc=tld> with scope subtree
    # filter: (&(objectClass=group)(member=DOMAIN\test_user))
    # requesting: ALL
    #

    ldap_search_ext: Bad search filter (-7)
    ну собсвенно как и ожидалось 🙁
    хз как это склеивать
  • https://t.me/clickhouse_ru
    @ajIeks #203398 02:56 PM, 09 Feb 2021
    попробую с другими фильтрами поиграться, спасибо )
  • https://t.me/clickhouse_ru
    @tron_wai #203399 02:56 PM, 09 Feb 2021
    “ на ‘ лучше заменить, там бэкслеш
  • https://t.me/clickhouse_ru
    @ajIeks #203400 02:58 PM, 09 Feb 2021
    не, этот фильтр нигде не работает, уже проверял
  • https://t.me/clickhouse_ru
    @ajIeks #203401 02:59 PM, 09 Feb 2021
    тут только пробовать иначе составить его, без использования bind_dn
  • https://t.me/clickhouse_ru
    @tron_wai #203402 03:00 PM, 09 Feb 2021
    Ну вот пока не заставили его работать через vanilla ldapsearch, в кликхаусе и пытаться не стоит.
  • https://t.me/clickhouse_ru
    @ajIeks #203403 03:01 PM, 09 Feb 2021
    спасибо, направление раскопок ясно )
  • https://t.me/clickhouse_ru
    @tron_wai #203404 03:02 PM, 09 Feb 2021
    👍
  • @plompus #203405 03:05 PM, 09 Feb 2021
    Добрый вечер!

    У меня вопрос по GLOBAL IN:

    Есть запрос:
    SELECT *
    FROM distributed_table
    WHERE name IN (1, 2, 3)

    И вопрос: что-то вообще изменится, если я IN заменю на GLOBAL IN?
    Получится:
    SELECT *
    FROM distributed_table
    WHERE name GLOBAL IN (1, 2, 3)

    Заранее благодарю за ответ
  • https://t.me/clickhouse_ru
    в вашем варианте нет
  • https://t.me/clickhouse_ru
    таблицы потянутся полностью на ноду инициатор без фильтрации
    не стоит так делать
    https://clickhouse.tech/docs/en/sql-reference/operators/in/#select-distributed-subqueries
    IN Operators | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @mikhailberg #203408 03:09 PM, 09 Feb 2021
    если вы в ин передадите другой селект из дистрибутед таблицы, то первый вариант не отработает. Второй - да, только вы будете клеить, фильтровать результаты двух таблиц на одной машине
    если вы в ин передидте локальную другую таблицу, то субвыборка будет распределена по шардам.
  • Про подзапрос да, в курсе. Вот хотел узнать, не повысится ли нагрузка, если за GLOBAL IN будет константный кортеж
  • Все-равно все таблицы потянутся?
  • https://t.me/clickhouse_ru
    по возможности кх попробует обработать ваше условие на удаленных серваках
  • Понял, спасибо!
    Резюмирую: если после IN стоит константный кортеж (не подзапрос), то IN можно заменить на GLOBAL IN без потери быстродействия
  • https://t.me/clickhouse_ru
    в доке как то так выглядит

    When using GLOBAL IN / GLOBAL JOINs, first all the subqueries are run for GLOBAL IN / GLOBAL JOINs, and the results are collected in temporary tables. Then the temporary tables are sent to each remote server, where the queries are run using this temporary data.
  • Да, это тоже прочитал. Но я прям сильно надеюсь, что разработчики такой случай предусмотрели и не станут посылать в таблицы запросы почем зря
  • @attaattaatta #203416 03:38 PM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    остается сделать
    в clickhouse-client
    SET send_logs_level='trace';
    выполнить запрос
    и посмотреть что выдаваться будет
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203418 04:21 PM, 09 Feb 2021
    Добрый вечер. У нас проблема возникла при попытке TTL уменьшить на базе(реплика 2 ноды, zookeper на 5). Как пофиксить? Перезапустить репликацию?
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE ...
  • https://t.me/clickhouse_ru
    @graid2030 #203420 04:23 PM, 09 Feb 2021
    ALTER же ON CLUSTER должен быть
  • https://t.me/clickhouse_ru
    Row 1:
    ──────
    statement: CREATE TABLE logs.log
    (
    srv Int32,
    port Int32,
    t DateTime,
    ms UInt64,
    user_id Int32 DEFAULT 0,
    proj String,
    module Nullable(String),
    proc String,
    type Enum8('info' = 0, 'debug' = 1, 'trace' = 2, 'warn' = 3, 'error' = 4, 'fatal' = 5, 'panic' = 6, 'success' = 7, 'syslog' = 8),
    mes Nullable(String),
    pack Nullable(String),
    market Nullable(String),
    pair Nullable(String),
    mail Nullable(String),
    id Nullable(String),
    sub_id Nullable(String),
    event_id Nullable(String)
    )
    ENGINE = ReplicatedMergeTree('clickhouse/tables/1/log', '1')
    ORDER BY (t, ms, user_id, proj, proc)
    TTL t + toIntervalMonth(1)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Мы только учимся, не подскажите как правильно? Но ошибка то мне кажется не об этом
  • https://t.me/clickhouse_ru
    SELECT * FROM system.zookeeper WHERE path = '/clickhouse/tables/1/log/replicas/1' AND name IN ('metadata','columns')

    SELECT * FROM system.zookeeper WHERE path = '/clickhouse/tables/1/log/' AND name IN ('metadata','columns')
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Вообще с первого взгляда выглядят идентичными.

    Какое значение TTL было раньше?
  • https://t.me/clickhouse_ru
    вроде 1,5 месяца
  • https://t.me/clickhouse_ru
    что интересно, похоже 1месяц применилась настройка. Места на диске прибавилось. Как узнать нормально ли сейчас работает репликация и не отстает ли она от зоокипера?
  • покажите show create table на реплике
  • https://t.me/clickhouse_ru
    выше давал
  • https://t.me/clickhouse_ru
    SELECT * FROM system.replicas;
    SELECT * FROM system.replication_queue;
  • https://t.me/clickhouse_ru
    Row 1:
    ──────
    statement: CREATE TABLE logs.log
    (
    srv Int32,
    port Int32,
    t DateTime,
    ms UInt64,
    user_id Int32 DEFAULT 0,
    proj String,
    module Nullable(String),
    proc String,
    type Enum8('info' = 0, 'debug' = 1, 'trace' = 2, 'warn' = 3, 'error' = 4, 'fatal' = 5, 'panic' = 6, 'success' = 7, 'syslog' = 8),
    mes Nullable(String),
    pack Nullable(String),
    market Nullable(String),
    pair Nullable(String),
    mail Nullable(String),
    id Nullable(String),
    sub_id Nullable(String),
    event_id Nullable(String)
    )
    ENGINE = ReplicatedMergeTree('clickhouse/tables/1/log', '1')
    ORDER BY (t, ms, user_id, proj, proc)
    TTL t + toIntervalMonth(1)
    SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    SELECT * FROM system.replication_queue;
    SELECT *
    FROM system.replication_queue

    Query id: 9d805bfe-a0ff-49da-b711-e4c306d70577

    Ok.

    0 rows in set. Elapsed: 0.002 sec.
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203435 05:13 PM, 09 Feb 2021
    на второй ноде тоже пустой выхлоп
    SELECT * FROM system.replication_queue;
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203436 05:13 PM, 09 Feb 2021
    Я так понимаю это хорошо?
  • @dj_mixer #203437 05:14 PM, 09 Feb 2021
    это плохо, можно было бы списать на незаконченный ДДЛ...
  • https://t.me/clickhouse_ru
    так и задумано
  • https://t.me/clickhouse_ru
    в разы? типа 6мс и 16 мс?
  • https://t.me/clickhouse_ru
    КХ вообще все делает кусками по 65к строк, выделяя память заранее
  • https://t.me/clickhouse_ru
    @chagin_mv #203441 05:23 PM, 09 Feb 2021
    Всем привет!

    Имеется конфигурация:
    <storage_configuration>
    <disks>
    <hdd>
    <path>/mnt/hdd/clickhouse/</path>
    </hdd>
    </disks>
    <policies>
    <hdd_policy>
    <volumes>
    <hdd_volume>
    <disk>hdd</disk>
    </hdd_volume>
    </volumes>
    </hdd_policy>
    </policies>
    </storage_configuration>

    При создании такой таблицы:
    CREATE TABLE test.t1
    (
    EventDate Date,
    Value Int32
    )
    ENGINE = MergeTree
    PARTITION BY toYYYYMM(EventDate)
    ORDER BY EventDate
    TTL EventDate + INTERVAL 1 MONTH TO DISK 'hdd'
    SETTINGS storage_policy='hdd_policy'

    Данные пишутся на hdd, как настроить конфиг, что бы новые данные писались на ssd, а спустя месяц по TTL переносились на hdd?

    Конфигурация должна быть такая или нет?
    <storage_configuration>
    <disks>
    <ssd>
    <path>/mnt/ssd/clickhouse/</path>
    </ssd>
    <hdd>
    <path>/mnt/hdd/clickhouse/</path>
    </hdd>
    </disks>
    <policies>
    <hdd_policy>
    <volumes>
    <ssd_volume>
    <disk>ssd</disk>
    </ssd_volume>
    <hdd_volume>
    <disk>hdd</disk>
    </hdd_volume>
    </volumes>
    </hdd_policy>
    </policies>
    </storage_configuration>
  • проверьте метадату для каждой реплики этим запросом и сравните
    SELECT * FROM system.zookeeper WHERE path =
    '/clickhouse/tables/1/log/replicas/1' AND name IN ('metadata','columns')

    SELECT * FROM system.zookeeper WHERE path =
    '/clickhouse/tables/1/log/replicas/2' AND name IN ('metadata','columns')
    ...
  • https://t.me/clickhouse_ru
    вроде идентично
  • https://t.me/clickhouse_ru
    @monashev #203444 06:04 PM, 09 Feb 2021
    Посоветуйте, какой нынче самый православный клиент для Golang-а ?
  • https://t.me/clickhouse_ru
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

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

  • с виду ок
  • https://t.me/clickhouse_ru
    его ранее @kshvakov разрабатывал?
  • https://t.me/clickhouse_ru
    Да
  • а это?
    SELECT * FROM system.zookeeper WHERE path =
    '/clickhouse/tables/1/log/replicas/1' AND name IN ('metadata_version');
    ...
    SELECT * FROM system.zookeeper WHERE path =
    '/clickhouse/tables/1/log/replicas/2' AND name IN ('metadata_version');
  • https://t.me/clickhouse_ru
    тоже одинаково.
    czxid mzxid ctime mtime
    совпадают
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203451 06:40 PM, 09 Feb 2021
    похоже сейчас с репликой все нормально
  • https://t.me/clickhouse_ru
    @ipsus_cy #203452 07:13 PM, 09 Feb 2021
    Joined.
  • @bard356 #203454 07:58 PM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @yurytrostin #203455 08:59 PM, 09 Feb 2021
    всем привет, нужна помощь
    есть столбец string, в каждой string - произвольное количество json, минимум 1
    я хочу строку распарсить, разбить в массив и работать с каждым элементом массива как с ValidJSON
    план такой, что хочу заменить в каждой строке ", " на скажем "|" при условии, что до ", " идёт "}", а после идёт "{", и затем splitByChar
    соответственно пытаюсь написать регулярное выражение, чтобы это сматчить, но ничего не работает
    replaceRegexpAll(some_string, '(?<=\\}), (?>=\\{)', '|')
    что я делаю не так и как сделать правильно ?
  • https://t.me/clickhouse_ru
    @wikatoria #203456 09:15 PM, 09 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    есть такая штука JSONAsString оно json-ы в разные строки раскладывает
  • https://t.me/clickhouse_ru
    Круто, спасибо, попробую
  • @351480959 #203459 10:45 PM, 09 Feb 2021
    Joined.
  • @dmytro_dz #203460 10:48 PM, 09 Feb 2021
    Joined.
  • 10 February 2021 (333 messages)
  • https://t.me/clickhouse_ru
    @blkmrkt #203462 12:16 AM, 10 Feb 2021
    Ребят, а КХ подходит для хранения и кверинга sorted sets во времени? Лучше всего наверное подходит аналогия с отслеживанием хитов веб-реквестов с примерно миллиардом уникальных посетителей, но мне требуется делать запросы вроде topN пользователей по количеству реквестов за последний месяц, а так же всего уникальных пользоватеоей в месяц.

    Насколько жирная машина потребуется для КХ, если всего пользователей 1млрд, а хитов около 500млн в месяц?
  • https://t.me/clickhouse_ru
    У нас сервак на 12 HDD, 32 потока ЦПУ, 64 ОЗУ посчитал uniqExact(uuid-строка) из 260кк записей(уников 230кк) за 50 секунд без кеша. Памяти съело 12ГБ.
    По месту на HDD - зависит от payload записей... берете 100кк записей в файл, жмете, считаете. КХ сожмет их лучше)
  • https://t.me/clickhouse_ru
    точное число до копейки ведь не нужно ? Можно хранить агрегаты по часу / дню, uniqHLL12State и считать за миллисекунды
  • https://t.me/clickhouse_ru
    Угу, вот спасибо, погуглю что это
  • https://t.me/clickhouse_ru
    @violin_admin #203467 04:14 AM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @TotNekto #203470 05:51 AM, 10 Feb 2021
    Joined.
  • @richydata #203471 06:58 AM, 10 Feb 2021
    Всем привет!
    Подскажите пожалуйста, почему в мат вью с движком ReplacingMergeTree могут не записываться данные?
    Уже долгое время пытаюсь отловить этот shadow bug.
    Когда ручками пересоздаю мат вью, то данные подтягиваются, а если её оставить на недельку, то некоторые строки не долетают.

    @den_crane 🙏
  • @1237950041 #203472 07:57 AM, 10 Feb 2021
    Joined.
  • @weduser #203474 08:09 AM, 10 Feb 2021
    Всем привет!
    Есть данные статистики netflow в кликхаусе.
    ┌─evtDate ─┬─────────time─┬──srcaddr─┬─srcport─┬─dstaddr─┬─dstport─┬evt─┬─proto┐
    │ 2019-02-01 │ 2019-02-01 00:00:00 │ 3706411294 │ 14918 │ 3285434422 │ 6889 │ 129 │ 17 │
    │ 2019-02-01 │ 2019-02-01 00:00:01 │ 34643719 │ 0 │ 3285434645 │ 2048 │ 80 │ 1 │
    Хранится в виде реальных записей netflow.
    Хочется свернуть по метке time до 1 минутных интервалов.
    То есть при совпадении всех остальных данных нужно в рамках 1ой минуты просуммировать значение evt.
    Как это можно сделать?
  • https://t.me/clickhouse_ru
    SummingMergeTree
    https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/summingmergetree/
    SummingMergeTree | Документация ClickHouse

    SummingMergeTree Движок наследует функциональность MergeTree. Отличие заключается в том, что для таблиц SummingMergeTree

  • https://t.me/clickhouse_ru
    + добавить поле с DEFAULT toStartOfMinute и ORDER BY с его учетом
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203477 08:33 AM, 10 Feb 2021
    В логах на одной из нод реплики сыпятся ошибки:
    <Trace> HTTPCommon: Failed communicating with x.x.x.x with error 'Invalid HTTP status code' will try to reconnect session
    На второй ноде с виду все нормально - идет вставка
    Куда смотреть?
  • https://t.me/clickhouse_ru
    @anonymous_d_777 #203478 08:43 AM, 10 Feb 2021
    Если curl-ом запрос пробросить, то вот это выводит:
    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: compress (version 20.11.3.3 (official build))
  • Разобрался - спасибо Денису на вот этой минуте - https://youtu.be/1LVJ_WcLgF8?t=7623
    Может кому-то будет полезным, объясню в чем был мой мажорный баг:
    Не используйте другие мат вью при формировании селекта для основного мат вью. Все дело в стриминге данных и может получиться рассинхрон данных в основном мат вью и тех, что используются в селекте. В таком случае не соблюдается комплиментарность данных.
  • @1599960288 #203480 09:16 AM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @tempik #203481 09:19 AM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @possumdude #203482 09:22 AM, 10 Feb 2021
    Joined.
  • @1599960288 #203483 09:22 AM, 10 Feb 2021
    Joined.
  • @anastasia_992 #203484 09:24 AM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @possumdude #203485 09:27 AM, 10 Feb 2021
    Приветствую всех. Появилась вот такая проблемка. Я хочу выполнить фун-ю multiSearchAnyCaseInsensitiveдля URL, но получаю ошибку, что первый аргумент должен быть константой.
    Как можно преобразовать url в константу (надеюсь я достаточно грамотно написал ) 😶
  • https://t.me/clickhouse_ru
    @soloduev #203486 09:46 AM, 10 Feb 2021
    Joined.
  • второй аргумент должен быть константой, не первый (0 индексед)
  • https://t.me/clickhouse_ru
    что значит не долетают ?
  • https://t.me/clickhouse_ru
    Разве в функциях индексация начинается с нуля? Это же не массив
  • ну это вы так думаете, а кто-то может думать что аргументы функции это массив с динамическими типами...
  • https://t.me/clickhouse_ru
    Можешь, если не сложно, скинуть доку для ознакомления, буду премного благодарен
  • https://t.me/clickhouse_ru
    @soloduev #203492 09:57 AM, 10 Feb 2021
    Добрый день!
    Нужно сопоставить строки из одной таблицы по регулярке(или обычному like) с другой таблицей.
    Обычный JOIN требует строгое сравнение.
    А если применить CROSS JOIN, то КХ ругается, что функции сравнения строк (like, match) требуют вторым аргументом константу.
    Есть ли какая-нибудь возможность осуществить задуманное?
    Пример, на который ругается КХ:

    SELECT
    id AS InternalId,
    name AS Name,
    round(cost / 100,2) AS Price,
    sum(amt) AS Quantity,
    round(sum(tot / 100), 2) AS Sum
    FROM
    db.goods r,
    (select '%text%' as Filter, 1 as CompaignId) as pt
    WHERE
    date >= today()
    AND Name like pt.Filter -- Argument at index 1 for function like must be constant
    GROUP BY InternalId, Name, Price
    LIMIT 10
  • ничего не понял, но короче ваша проблема решается так:
    multiSearchAnyCaseInsensitive(url, 'substring_to_find');
  • https://t.me/clickhouse_ru
    @lazoreth #203494 10:05 AM, 10 Feb 2021
    Подскажите пожалуйста. По какой причине SummingMergeTree может не суммироватся? Сделал запись около получаса назад, таблица так и не просуммирована. Не могу чёт отдуплить совсем, гугл тоже не помогает. Хотя в мат. вьюхе всё суммировалось быстро
    ```CREATE TABLE IF NOT EXISTS lbas_daily
    (
    date Date,
    uuid UUID,
    created_at DateTime,
    type_name String,
    bv Int64
    ) ENGINE = SummingMergeTree(bv)
    PARTITION BY toYYYYMM(date)
    ORDER BY (date, uuid);

    INSERT INTO lbas_daily
    SELECT toDate(sample_time) as date,
    uuid,
    created_at,
    type_name,
    1 as bv
    FROM lbas
    WHERE toDate(sample_time) == yesterday();```
  • https://t.me/clickhouse_ru
    @lazoreth #203495 10:05 AM, 10 Feb 2021
    Вот такой запрос делаешь, там цифры одинаковые
    SELECT (SELECT count(*)
    FROM lbas
    WHERE toDate(sample_time) == yesterday()) as orig_table_cnt,
    (SELECT count(*) FROM as_daily) as daily_table_cnt;
  • если во второй таблице (pt) мало строк, можно их вернуть как массив в with и использовать. иначе вроде никак

    with (select groupArray(flt) from (/* your filter table */select arrayJoin(['ing1', 'ing3', 'ing4']) as flt)) as fltArr
    select * from (/* your goods table */select arrayJoin(['String1','String2','String3']) as name) as goods
    where multiSearchAny(name, fltArr);
  • https://t.me/clickhouse_ru
    Спасибо.
  • @7699150 #203498 10:17 AM, 10 Feb 2021
    Всем привет!
    Вопрос по движку Kafka.
    Периодически ловлю такие сообщения:

    2021.02.10 10:08:29.829926 [ 22125 ] {} <Warning> StorageKafka (my_kafka_table): Parsing of message (topic: my_topic, partition: 4, offset: 76719) return no rows.

    Проверяю сам месседж в кафке, смотрю в кликхаус и вижу что данные из этого месседжа записались в таблицу.
    Может ли кто-то подсказать из-за чего такие ворнинги могут быть?
  • https://t.me/clickhouse_ru
    Если Вы читали документацию, то там написано, что оно суммирует в неизвестный момент времени, а так же ClickHouse может не полностью просуммировать все строки, для этого нужно использовать агрегатную функцию sum и секцию GROUP BY
  • 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
    Тогда посмотрите на свой Primary Key, он суммирует если одинаковый первичный ключ
  • https://t.me/clickhouse_ru
    @lazoreth #203505 10:22 AM, 10 Feb 2021
    Ладно, придётся всё-таки в ручную писать да и всё
  • https://t.me/clickhouse_ru
    Что вы пытаетесь доказать ? Движок работает вот так. Когда-то данные просуммируются, а может и нет.
  • https://t.me/clickhouse_ru
    Я пытаюсь понять, почему мат вьюха суммировала каждые несколько минут, а обчная таблица не суммирует в течении более чем суток уже
  • а почему в такоом случае warning падает?
  • https://t.me/clickhouse_ru
    Вы делаете count(*) - это вообще невалидно для summing таблиц
    Вы сделали два инсерта по 1 записи - они смержились в одну - каунт вернёт единицу
  • https://t.me/clickhouse_ru
    count(*) показывает как раз таки то, что записи не смерджились в данном случае
  • https://t.me/clickhouse_ru
    Вам же написали, что они могут и не смержиться
  • https://t.me/clickhouse_ru
    Не переживайте, все нормально.
  • https://t.me/clickhouse_ru
    Если Вам нужно гарантированно получить сумму в том или ином случае, то ни один движок Вам эту гарантию не даст
  • https://t.me/clickhouse_ru
    Можете написать select * from ... final
  • ну ок ))
    спасибо
  • https://t.me/clickhouse_ru
    А так чтобы в случае как с JOIN каждому 'ing1' фильтру был сопоставлен id уже получается не выйдет сделать?
  • https://t.me/clickhouse_ru
    Внезапно final помог. Спасибо
  • https://t.me/clickhouse_ru
    Почитайте про final и optimize
    Сейчас просто налету мержится. В таблице все равно остались те строки
  • https://t.me/clickhouse_ru
    @madm1ke #203519 11:01 AM, 10 Feb 2021
    Привет.
    Внезапно столкнулся с проблемой: если в таблице в default expression использовать словари - при перезагрузке clickhouse-server не стартует с ошибкой -

    Application: Caught exception while loading metadata: Code: 36, e.displayText() = DB::Exception: external dictionary 'currencies' not found: default expression and column type are incompatible.: Cannot attach table

    Хотя в дефолте используется dictGetOrDefault().

    получается, что нужно стартовать сервер без таблицы, и потом сделать ее attach. Есть ли способ избавиться от такого костыля? 🙁
  • https://t.me/clickhouse_ru
    Fix starting the server with tables having default expressions containing dictGet() by vitlibar · Pull Request #19805 · ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    магия! значит недельку подождать до релиза…
  • нет
  • @dj_mixer #203523 11:15 AM, 10 Feb 2021
    Доброго всем дня, кто то использует distributed с подзапросами? ни у кого нет магической палочки как эту проблему обойти и заставить КХ слать запрос с группировками на шарды?
    https://github.com/ClickHouse/ClickHouse/issues/20254
    Optimize (select * from table [where clause]) subqueries usage for distributed engine · Issue #20254 · ClickHouse/ClickHouse

    (you don't have to strictly follow this form) Use case Many of BI engines and tools generate query syntax as select sum(col1) as xxx, sum(col2) as yyy from (select * from table) where dim1=...

  • https://t.me/clickhouse_ru
    @egorpopov94 #203524 11:32 AM, 10 Feb 2021
    всем привет! создал таблицу с движком HDFS (‘hdfs://<host>:<port>/apps/hive/warehouse/<db_name>.db/<table_name>/*’, ‘ORC’). при селекте из нее получаю ошибку DB::Exception: Unable to connect to HDFS: Operation category READ is not supported in state standby. Может кто подсказать, куда копать?
  • @vlad_kim #203525 11:44 AM, 10 Feb 2021
    Joined.
  • @1599960288 #203526 12:02 PM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @m1kc_telegram #203527 12:04 PM, 10 Feb 2021
    Joined.
  • @milovidov_an #203528 12:15 PM, 10 Feb 2021
    https://yandex.ru/jobs/vacancies/maintenance/clickhouse_engineer/

    Внимание: на картинке справа совсем другие люди.
    Инженер ClickHouse в Yandex.Cloud

    Яндекс — одна из ведущих ИТ-компаний с офисами в 21 городе России. Создаёт сервисы для прямых пользователей и бизнеса. В команду ищет профессионалов, которые ценят открытость и свободу и стремятся менять мир к лучшему. Вам это близко? Откликайтесь на вакансии.

  • None
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #203530 12:17 PM, 10 Feb 2021
    Алексей, вот про людей справа, прямо заинтриговали
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #203531 12:17 PM, 10 Feb 2021
    в мобильном варианте картинка вверху и там 1 человек
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #203532 12:18 PM, 10 Feb 2021
    а так - замечательная картинка - прямо видно - человек спрашивает - а не видел ли ты где <текст вакансии> 🙂
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #203533 12:18 PM, 10 Feb 2021
    а если найду
  • @dj_mixer #203534 12:32 PM, 10 Feb 2021
    https://avatars.mds.yandex.net/get-bunker/128809/81bd5371a3028d71a6644d81ed5f0b2ef78875c1/orig
    когда запустил alter table modify ttl, и все остановилось =)
  • https://t.me/clickhouse_ru
    Скорее когда запустил

    ALTER TABLE ON CLUSTER MODIFY COLUMN col new_type
  • https://t.me/clickhouse_ru
    @majorovms #203536 12:46 PM, 10 Feb 2021
    Не могу переехать с версии 20.4 на 21.2.2.8
    На 20.4 мог бесплатно сколько хочу вызывать вот этот скрипт

    ```create database if not exists replica_test;
    drop table if exists replica_test.replica_table;
    create table if not exists replica_test.replica_table
    (
    timestamp DateTime64(3) default now64()
    ) engine = ReplicatedMergeTree('/clickhouse/local/tables/shard_0/replica_table', 'replica_0')
    order by timestamp;```

    А на 21.2.2.8 при повторном запуске ловлю ошибку Replica /clickhouse/local/tables/shard_0/replica_table/replicas/replica_0 already exists. (version 21.2.2.8 (official build))

    Такое чувство, что старая версия Clickhouse все подчищала в Zookeeper при удалении последней реплики, а новая нет, ну или с большой задержкой.
    Кто-то сталкивался? Как чинится? Таблицы пересоздаю в автотестах, clickhouse + zookeeper в docker'е поднимаются для них.
  • Так и есть, это сделано для неблокирующих и атомарных DDL запросов. Можно по-старому, добавив NO DELAY:

    drop table if exists replica_test.replica_table no delay
  • https://t.me/clickhouse_ru
    @majorovms #203538 12:49 PM, 10 Feb 2021
    вау))) а я уж часа три ковыряюсь)) Спасибо!
  • а это когда джуны из альтинити пояснили за МВ https://avatars.mds.yandex.net/get-bunker/50064/f723c24f0736640a29b8751ced7566d898a43e52/orig
    =)
  • @milovidov_an #203540 01:00 PM, 10 Feb 2021
    Можно использовать макрос {uuid} в пути к реплике. Ещё можно не указывать путь и имя реплики в аргументах движка, тогда будут использоваться /clickhouse/tables/{uuid}/{shard} и {replica} по умолчанию (или default_replica_path и default_replica_name из конфига)
  • @Hitych #203541 01:00 PM, 10 Feb 2021
    Добрый день, коллеги! Подскажите как решить такую задачу с помощью клика: есть временной ряд (изменение метрики по времени), сэмплы по минуте, но ряд не непрерывный, в нем есть пропуски. Надо сделать так чтобы ряд был строго непрерывным, а пропущенные значения заполнялись ближайшими к пропуску из предыдущих. Пропуски я заполнил, сджойнив текущий временной ряд со сгенерированным функцией timeSlots, теперь на месте пропусков у меня Null. А вот как заполнить их теперь ближайшими не могу придумать. Пробовал использовать neighbor(-1) но она срабатывает только если пропущено одно значение. Может быть кто-то даст наводку на подход или функцию которая сможет помочь. Подозреваю что можно сделать через группировку в массивы, но не понимаю как сделать нужную группировку чтобы в нее попало одно реальное значение и все следующие за ним Nulls.
  • https://t.me/clickhouse_ru
    примерно такую же задачу нам помог решить ASOF JOIN https://clickhouse.tech/docs/en/sql-reference/statements/select/join/#asof-join-usage
    JOIN | ClickHouse Documentation

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

  • @Hitych ↶ Reply to #203542 #203543 01:04 PM, 10 Feb 2021
    Спасибо, покурю документацию!
  • Публичные клики (и система "ClickHouse over YT") - это часть Яндекса.
  • @SBulatitskiy #203546 01:10 PM, 10 Feb 2021
    упс
  • @user93 #203547 01:16 PM, 10 Feb 2021
    Joined.
  • @al_g_egorov #203548 01:18 PM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203402 #203549 01:33 PM, 10 Feb 2021
    После консультации с админами диагноз, что имеющуюся схему AD не натянуть на глобус текущей схемы работы LDAP с ролями/группами в clickhouse )
  • @user93 #203550 01:34 PM, 10 Feb 2021
    Помогите пожалуйста с схемой таблиц

    Проект под NDA, поэтому рассказываю на похожем примере,

    Есть куча станций (больше 400 миллионов), у каждый станции есть несколько датчиков, суммарно станция может измерять до 10 параметров. Измерения снимаются раз в месяц. Данные измерений приходят в виде трех csv файлов ( в разные дни месяца)

    CSV №1 - формат <ID станции>,Параметр №1, Параметр №2, Параметр 3 (приходит 10 числа)
    CSV №2 - формат <ID станции>,Параметр №4, Параметр №5, Параметр 6 (приходит 20 числа)
    CSV №3 - формат <ID станции>,Параметр №7, Параметр №8, Параметр 9 (приходит 30 числа)

    Необходимо для каждой станции по запросу показывать последние доступные данные с фильтрацией. Параметры могут (int) а могут быть (string).

    Какой движок таблиц лучше использовать для этого случая? Одна таблица которую апдейтить или три таблицы?
  • https://t.me/clickhouse_ru
    @ajIeks #203551 01:36 PM, 10 Feb 2021
    В любом случае заведите таблицу под сырые данные и может статья https://m.habr.com/ru/company/oleg-bunin/blog/328784/ поможет в выборе схемы поверх сырых
    Переезжаем на ClickHouse: 3 года спустя

    Три года назад Виктор Тарнавский и Алексей Миловидов из Яндекса на сцене HighLoad++ рассказывали, какой ClickHouse хороший, и как он не тормозит. А на соседней сцене был Александр Зайцев с докладом...

  • https://t.me/clickhouse_ru
    Смотрите, в итоге история такая:
    1. Нам нужно подгружать измерения SCD в кликхаус. Размером сотни ГБ
    2. Вы посоветовали словарь с движком ssd_cache,
    3. мы увидели проблему в том что словари по доке не уме/т подкачивать инкрементально обновления (по строкам)
    4. Вы написали что есть недокументированная фича update_field
    5. В итоге мой коллега Николая подрубился сюда в чат и мы выяснили что update_field для ssd_cache не работает в приницпе.

    В итоге получается что словарь не подходит как способ из коробки подтягивать SCD в КХ инкрементально, Правильно мы понимаем?
  • #5 неверный вывод вообще. Я просто сказал сначала проверить инкрементальные обновления на hashed/sparse_hashed словаре (можно ограничить строки саб-сетом).
    а потом уже разобраться с ССД кешем.
  • ну и тип UPDATED- int / epoch
  • https://t.me/clickhouse_ru
    @dj_mixer сори, не вы. А вот уважаемый коллега сформулировал
  • хотя если сам Денни сказал то наверно так оно и есть.
    придется велосипедить либо фича-рекуэст (
  • тогда вам велосипедить с CollapsingMergeTree и слать все обновления в КХ... на mysql уже есть engine под это (materializemysql). Для ПГ пока нет.
  • https://t.me/clickhouse_ru
    Вообще, натянуть можно даже на основании той информации, которую вы предоставили. Просто для каждой OU можно создать свой ldap_server. Но мне кажется, если вы ответите на мои вопросы в issue, то еще есть шанс прямого решения.
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203558 #203559 02:04 PM, 10 Feb 2021
    вроде ответил, либо не совсем понял вопросы 🙂
    Вариант с сервером под каждую OU принципиально ничего не изменит, так как не могу использовать логин для bind_dn кроме как в формате Домен/логин. Так как DN для юзера кирилический, собственно в issue это указал.
  • https://t.me/clickhouse_ru
    @ajIeks #203560 02:05 PM, 10 Feb 2021
    Ну и OU этих сильно уж много ) сотрудников тысячи, юнитов сотни )
  • https://t.me/clickhouse_ru
    @tron_wai #203561 02:06 PM, 10 Feb 2021
    Кириллица в DN - не проблема.
    Последним пообщением я просил аутпут этих:

    dsquery user -name s.v.petrov
    dsquery group -name users_l0.2
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203561 #203562 02:08 PM, 10 Feb 2021
    а какие именно поля интересуют? там длинная портянка, маскировать всю не хочется )
  • https://t.me/clickhouse_ru
    @tron_wai #203563 02:09 PM, 10 Feb 2021
    DN?
  • [In reply to Denis Glazachev]
    кстати я тут упустил. Отдельный поиск ролей по ЛДАП тоже вообще не надо делать. вы просто должны взять из объекта пользователя атрибуты memberOf (configurable)
    теперь я вспомнил почему у нас есть поддержка атрибута "memberOf" =)
  • https://t.me/clickhouse_ru
    Ну так memberOf указывается в search filter.
  • не, если есть memberOfAttributeName ="memberOf"
    можно без search filter, вообще не искать группы
  • https://t.me/clickhouse_ru
    да, и это будет частный случай
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203561 #203568 02:13 PM, 10 Feb 2021
    distinguishedName=CN=Петров Сергей Владимирович,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld
    distinguishedName=OU=users_l0.2,OU=users_l0,DC=domain,DC=tld

    вроде оно
  • https://t.me/clickhouse_ru
    @tron_wai #203569 02:15 PM, 10 Feb 2021
    Тут такая тема: в OU указана ссылка на DN пользователя (в той или иной форме, member, memberOf, и т.п.) Если по ней восстановить истинный DN где записан пользователь(ли), и его указать как bind_dn, то потом можно делать search по дереву груп с member=uid={user_name}
  • да, как раз на такие.. но в данном случае можно просто сделать улучшение с поддеркой placholder, {binddn:attr} / {fullbinddn}
  • https://t.me/clickhouse_ru
    несовсем понял
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203569 #203572 02:17 PM, 10 Feb 2021
    Это я понимаю, вопрос лишь как по логину восстановить DN, собственно в issue про это и написано. Либо в документации не все указано и есть еще какое-то место для дополнительного фильтра, который поможет сконвертировать логин в DN
  • https://t.me/clickhouse_ru
    судя по тому что я читаю, dsquery user -name s.v.petrov должен вернуть именно эту строку DN
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203573 #203574 02:22 PM, 10 Feb 2021
    это ручками из LDAP вытищил значение DN, прям выполнить dsquery нет возможности 🙁
  • https://t.me/clickhouse_ru
    @kiling #203575 02:25 PM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    т.е. вместо bind_dn: “uid={user_name},CN=x,CN=y” иметь возможность указывать
    bind_dn_base: “CN=x,CN=y”, bind_db attr: “uid”
    и потом
    search base_dn “member=CN={bind_dn_base:CN},OU=a,OU=b,CN=x,CN=y” ?
  • https://t.me/clickhouse_ru
    Вот спросите админов под каким DN они создают пользователя первым шагом, перед тем, как в группы его добавить.
  • https://t.me/clickhouse_ru
    @kiling #203578 02:27 PM, 10 Feb 2021
    Всем привет!
    Я могу сделать селект из таблицы одной базы и потом инсертить результат в таблицу другой базы:
    INSERT INTO db_output.table (*)
    SELECT (*)
    FROM db_orig.table
    А можно сделать так же, но если базы в разных кластерах?
  • https://t.me/clickhouse_ru
    cluster | Документация ClickHouse

    cluster, clusterAllReplicas Позволяет обратиться ко всем шардам существующего кластера, который сконфигурирован в секции

  • https://t.me/clickhouse_ru
    @kiling ↶ Reply to #203579 #203580 02:37 PM, 10 Feb 2021
    Я правильно понимаю что мне нужно сначала прописать параметры соединения, а потом запрос будет выглядеть как SELECT * FROM cluster('cluster_name', db.table)?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203577 #203581 02:38 PM, 10 Feb 2021
    Уже спрашивал, это была первая идея, плоская структура, тогда можно сформировать единый шаблон. Но сказали будет иерархическая и каждый в своем OU. Они везже в таком виде и отображаются, в группах (member=) и тд.
  • https://t.me/clickhouse_ru
    remote | ClickHouse Documentation

    remote, remoteSecure Allows to access remote servers without creating a Distributed table. remoteSecure - same as remote

  • https://t.me/clickhouse_ru
    так где фром - указываете этот сорс. insert … select … from cluster(‘cluster_name’, db, table)
    или clusterallreplicas в зависимости от ваших нужд
  • https://t.me/clickhouse_ru
    @mikhailberg #203584 02:39 PM, 10 Feb 2021
    если кластер вообще никак не связан с другим, то сверху скинули ремоут
  • https://t.me/clickhouse_ru
    @kiling ↶ Reply to #203584 #203585 02:39 PM, 10 Feb 2021
    Спасибо большое!
  • https://t.me/clickhouse_ru
    “в группах (member=)” - это ссылка на реальный DN, туда, где записаны все аттрибуты про конкретного поьзователя.
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203586 #203587 02:45 PM, 10 Feb 2021
    он и имеет вид как приводил ранее: CN=Петров Сергей Владимирович,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld
  • https://t.me/clickhouse_ru
    там есть. uid? типа `uid=s.v.petrov,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld`
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203588 #203589 02:50 PM, 10 Feb 2021
    неа, такое тоже пробовал, это значение только в sAMAccountName, mail, mailNickname и userPrincipalName есть
  • https://t.me/clickhouse_ru
    т.е. `sAMAccountName=s.v.petrov,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld` ?
  • да типа этого
  • https://t.me/clickhouse_ru
    @f_mihail #203592 02:52 PM, 10 Feb 2021
    Здравствуйте!
    Подскажите пожалуйста, можно ли при создании словаря одним из полей указать array? И если да, то в каком виде заполнять тег null_value в XML для Array(UUID), ARRAY(String)?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203590 #203593 02:52 PM, 10 Feb 2021
    вроде пробовал, но сейчас еще раз проверю
  • https://t.me/clickhouse_ru
    а просто <null_value>[]</null_value> не подойдет ?
  • https://t.me/clickhouse_ru
    @uranium_235 #203595 03:02 PM, 10 Feb 2021
    Joined.
  • не совсем, bind_dn может не совпадать с именем пользователя. имя скорее всего будет в одном из полей (userPrincipalName, samAccountName, etc), на самом деле имею ввиду такое
    <bind_username>DOMAIN\{user_name}</bind_username>
    or
    <bind_username>user_name@mydomain.dj</bind_username>
    (bind_dn КХ должен сам получить после bind)

    и разрешить подобное
    <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_dn}))</search_filter>
    or
    <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_username}))</search_filter>

    это будет правильней + решит проблемы подобного рода как у Алексея
  • т.е. человек ввел
    myUser в КХ.
    КХ забиндился используя DOMAIN\myUser
    получил полный DN
    и использовал его в фильтре уже (если надо)
  • https://t.me/clickhouse_ru
    @tron_wai #203598 03:09 PM, 10 Feb 2021
    > (bind_dn КХ должен сам получить после bind)

    Как? Как его создание отличается принципиально от bind_username?
    Ну, вон Алексей не может получить его, как кликхаус будет его получать? )
    Проблема Алексея еще не well-defined для меня.
  • https://t.me/clickhouse_ru
    Есть подозрение, что прокатило. Спасибо!
  • https://t.me/clickhouse_ru
    А, показалось
  • https://t.me/clickhouse_ru
    если на это будет полочжительный ответ, то все решается элементарно:
    bind_dn - как раньше
    search base_dn: DC=domain,DC=tld
    search filter: <all nodes that have sAMAccountName={user_name} nested inside>
    attribute: OU
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @double_di #203603 03:13 PM, 10 Feb 2021
    Всем привет! Есть широкая таблица с несколькмим колонками String в которую уже неколько лет пишутся данные. Данные - разные, но значения в этих колонках из ограниченного множества.
    Насколько больно преобразовывать из обычной колонки в LowCardinality и стоит ли оно того?

    ALTER TABLE table
    MODIFY COLUMN column LowCardinality(String),
  • https://t.me/clickhouse_ru
    @uranium_235 #203604 03:14 PM, 10 Feb 2021
    Салют! Как можно быстро и безболезненно перенести кликхаус из гугла в aws? Кликхаус весит +/- 100 гигов. Можно просто парты скопировать?
  • https://t.me/clickhouse_ru
    100 гб еще можно через INSERT INTO remote() SELECT * FROM table передать.

    А можно и парты скопировть
  • вы правы, в принципе никак, вопрос кому что интуитивней =)
    проблема Алексея и так решается вашим фильтром...
  • https://t.me/clickhouse_ru
    @explodero #203607 03:21 PM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    или clickhouse-copier вместо insert into, да?
  • https://t.me/clickhouse_ru
    а у вас array(string) нормально работает ? без нул вэлью
  • хотя нет, ваш не решает. смотрите,, у меня member=Firstname Lastname, OU=DOMAIN, OU=GROUP

    а samAccountName уже атрибут пользователя... а не группы
  • https://t.me/clickhouse_ru
    @explodero #203611 03:23 PM, 10 Feb 2021
    Привет!

    как проверить значение столбца на несколько паттернов чтобы не писать много условий в стиле:

    select
    field
    where
    field not like '%pattern1%'
    and field not like '%pattern2%'
    .....
    and field not like '%pattern3%'
  • https://t.me/clickhouse_ru
    Для 100гб и одного сервера слишком много геммора бдует
  • https://t.me/clickhouse_ru
    Не в словаре замечательно, а вот со словарем уже проблемы пошли
  • у меня точно такая же структура в АД, нельзя построить фильтр который идет по референсам
  • https://t.me/clickhouse_ru
    Ну да, тогда только имеет смысл {bind_dn_base:CN} и т.п. Но я не вижу, что это именно то, что у Алексея.
  • https://t.me/clickhouse_ru
    кстати, можно
  • https://t.me/clickhouse_ru
    достаточно больно, но это того стоит. выигрыш может быть весьма значительный особенно если кардинальность в пределах блоках действительно небольшая
    сколько у вас там данных в байтах на диске по колонкам из system.columns?
    фактически у вас по объему чтения \ записи на диск это будет равносильно OPTIMIZE TABLE FINAL
  • https://t.me/clickhouse_ru
    👍
  • https://t.me/clickhouse_ru
    Может не в нашей текущей имплементации, но это вопрос флага в API.
  • https://t.me/clickhouse_ru
    я так понял чатик с вопросами это не этот чатик?
  • можете пример фильтра?
    userdn: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL
    имя пользователя: firstname.lastname (from samAccountName of user)

    GroupDN: CN=DevelopmentOnTestServers,OU=GROUPS,OU=DOMAIN,DC=LOCAL
    member: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL
  • https://t.me/clickhouse_ru
    На одном шарде так
    compressed 485,166,083,254
    uncomressed 5,669,734,195,840

    Ну сжатие ориентировочно на порядок идет
  • 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
    То есть пол терабайта на шард
    диски сколько последовательное чтение выдают?
    место есть свободное?

    как вариант можно попробовать протестировать
    INSERT INTO table_with_low_cardinality_schema SELECT FROM table WHERE ...
    и сравнить что будет на выходе и как влияет

    в общем достаточно больно будет, но прососать должно
    можно поиграться с background_schedule_pool_size чтобы оно не сильно много потоков одновременно запустило. но это замедлит конвертацию...
    по идее чтение при этом не должно прерываться...
    и таблица вроде бы не блокируется
  • https://t.me/clickhouse_ru
    Спасибо большое! Будем тестить
  • @7699150 #203629 03:43 PM, 10 Feb 2021
    Ребят, привет!
    Подвисла одна нода в кластере. Перезагрузил ее. Теперь начало валить куча ошибок и растет system.replication_queue

    ошибки типа:

    2021.02.10 15:42:48.196712 [ 6355 ] {} <Warning> db_name.user_device_id_shard (ReplicatedMergeTreePartCheckThread): Found parts with the same min block and with the same max block as the missing part 202102_228260_228514_39. Hoping that it will eventually appear as a result of a merge.

    куда копать, как исправить?
  • @7699150 #203630 03:43 PM, 10 Feb 2021
    клиент к этой ноде не подключается
  • https://t.me/clickhouse_ru
    нет, походу, это было про Referrals и не одним флагом а спец. хендлингом
  • аха, вам по любому надо отделить юзернейм, и получать DN для него отдельно

    https://t.me/clickhouse_ru/203596

    # returns DN of a user
    ldapsearch -H "ldap://ldapserver:389" -D 'PW\firstname.lastname' -w 'password' -b 'OU=USERS,DC=DOMAIN,DC=LOCAL' '(&(objectClass=person)(samAccountName=firstname.lastname))' dn

    # finds group of user
    ldapsearch -H "ldap://ldapserver:389" -D 'PW\firstname.lastname' -w 'password' -b 'OU=GROUPS,DC=DOMAIN,DC=LOCAL' '(&(objectClass=group)(member=CN=Firstname Lastname,OU=RU-Users,OU=USERS,DC=DOMAIN,DC=LOCAL))' name
    【D】【J】 in ClickHouse не тормозит

    не совсем, bind_dn может не совпадать с именем пользователя. имя скорее всего будет в одном из полей (userPrincipalName, samAccountName, etc), на самом деле имею ввиду такое <bind_username>DOMAIN\{user_name}</bind_username> or <bind_username>user_name@mydomain.dj</bind_username> (bind_dn КХ должен сам получить после bind) и разрешить подобное <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_dn}))</search_filter> or <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_username}))</search_filter> это будет правильней + решит проблемы подобного рода как у Алексея

  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203601 #203633 03:48 PM, 10 Feb 2021
    так не работает, нужно только с CN=
  • https://t.me/clickhouse_ru
    Итого для инкрементальной заливки измерений SCD из постгреса выбрали ODBC вытаскивание по updated + Collapsing Merge Tree. Если все таки есть более правильный и/или простой спасибо - дайте знать)
  • т.е. вместо bind_dn лучше иметь
    <username>DOMAIN\{user_name}</username>
    <userdn_filter>(&(objectClass=person)(samAccountName={user_name}))</>
  • https://t.me/clickhouse_ru
    Ну опять таки, все сводится к поддержке подстановок с заданием аттрибута из под bind_dn
  • у вас сводится к тому что bind_dn можно сконструировать используя username.
    это не так
  • https://t.me/clickhouse_ru
    @tron_wai #203638 03:51 PM, 10 Feb 2021
    т.е.
    либо bind_dn (как сейчас)
    либо bind_dn_base + bind_dn_attribute
  • https://t.me/clickhouse_ru
    @tron_wai #203639 03:51 PM, 10 Feb 2021
    и поддержку подстановок {bind_dn:attr}
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203637 #203640 03:52 PM, 10 Feb 2021
    +1 именно в этом проблема, нет возможности его сконструировать, от слова совсем. https://github.com/ClickHouse/ClickHouse/issues/20253 вот тут собственно прописал по сути схожее с тем, что предложили тут https://t.me/clickhouse_ru/203635
    Use service account for LDAP · Issue #20253 · ClickHouse/ClickHouse

    Use case In some organisations are using AD with hierarchical structure (nested organisation unit) and DN follow this structure. As result we can not use permanent build_dn for users with different...

  • юзер может логинится в LDAP используя
    bind_dn, userPrincipalName, samAccountName, и что угодно что можно наконфигурить...
    т.е.
    username=ivanov3443
    bind_dn =CN=IVAN IVANOVICH IVANOV, OU=USERS, DC=ALTINITY, DC=COM
  • https://t.me/clickhouse_ru
    Там другое описано.
  • поддержка подстановок не нужна уже вроде
  • достаточно отделить logonname/username от bind_dn
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203642 #203645 03:53 PM, 10 Feb 2021
    ну да, там через сервисного юзера, если взять вариант предложеный DJ, то отпадает лишь этап проверки пароля пользователя, остальное остается
  • https://t.me/clickhouse_ru
    нужна вроде, мы же хотим s.v.petrov в кликхаусе а не `Петров Сергей Владимирович`-а
  • @dj_mixer #203648 03:54 PM, 10 Feb 2021
    а мы в КХ же создаем пользователей, да? тогда да, нужно userNameAttribute добавить
  • https://t.me/clickhouse_ru
    нет, юзер нейм фиксированный, и тот, который указали при инициации сессии в кликхаусе. Менять его не надо. А вот под какое поле подставить при создании bind_dn - это да, нужно указать. Вот декомпозицию bind_dn может не стоит делать, т.е. только {bind_dn:attr} должно хватить
  • тогда фильтр не нужен, КХ может сам генерить

    <username>DOMAIN\{user_name}</username>
    <usernameAttribute>samAccountName</usernameAttribute>
  • https://t.me/clickhouse_ru
    @tron_wai #203651 03:58 PM, 10 Feb 2021
    фильтр поиска нужен по-любому
  • ну если не хардкодить то:
    <username>DOMAIN\{user_name}</username>
    <usernameAttribute>samAccountName</usernameAttribute>
    <user_filter>(&(objectClass=person)(samAccountName={user_name}))</user_filter>
  • https://t.me/clickhouse_ru
    несовсем:

    <bind_dn>DOMAIN\{user_name}</bind_dn>

    ….

    <base_dn>dc=domain,dc=tld</base_dn>
    <search_filter>(&amp;(objectClass=groupOfNames)(member=CN={bind_dn:CN}))<search_filter>
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203653 #203654 04:03 PM, 10 Feb 2021
    <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_dn:DN}))<search_filter>
    тоже валидно?
  • а как вы DN пользователя вернете?
  • https://t.me/clickhouse_ru
    ну наверно да, если DN от DOMAIN\{user_name} будет реальный DN который мы сегодня так и не увидели 🙂
  • https://t.me/clickhouse_ru
    > # returns DN of a user
    ldapsearch -H "ldap://ldapserver:389" -D 'PW\firstname.lastname' -w 'password' -b 'OU=USERS,DC=DOMAIN,DC=LOCAL' '(&(objectClass=person)(samAccountName=firstname.lastname))' dn

    будет как аттрибут?
  • https://t.me/clickhouse_ru
    только у вас там CN достаточно
  • а как вы узнали что надо писать samAccountName в фильтр? =)
  • https://t.me/clickhouse_ru
    @tron_wai #203660 04:06 PM, 10 Feb 2021
    а это уже задача админа
  • и где в вашем конфиге это писать?
    https://t.me/clickhouse_ru/203653
    Denis Glazachev in ClickHouse не тормозит

    несовсем: <bind_dn>DOMAIN\{user_name}</bind_dn> …. <base_dn>dc=domain,dc=tld</base_dn> <search_filter>(&amp;(objectClass=groupOfNames)(member=CN={bind_dn:CN}))<search_filter>

  • https://t.me/clickhouse_ru
    например, вместо member=CN= написать member=samAccountName=
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203656 #203663 04:07 PM, 10 Feb 2021
    надеюсь, главное иметь возможность достать атрибут )
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203662 #203664 04:08 PM, 10 Feb 2021
    а так разве работает, там же вроде требуется именно dn?
  • https://t.me/clickhouse_ru
    я все еще думаю, что для вашего случая может и текущего функционала хватить.
    Есть ли запись uid=s.v.petrov,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld у вас?
  • не втупил, можете полноценный конфиг написать на это?
    https://t.me/clickhouse_ru/203621
    【D】【J】 in ClickHouse не тормозит

    можете пример фильтра? userdn: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL имя пользователя: firstname.lastname (from samAccountName of user) GroupDN: CN=DevelopmentOnTestServers,OU=GROUPS,OU=DOMAIN,DC=LOCAL member: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL

  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203665 #203667 04:11 PM, 10 Feb 2021
    в списке атрибутов uid нету
  • https://t.me/clickhouse_ru
    <bind_dn>samAccountName={user_name},OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL</bind_dn>

    <base_dn>OU=GROUPS,OU=DOMAIN,DC=LOCAL</base_dn>
    <attribute>CN</attribute>
    <scope>subtree</scope>
    <search_filter>(&amp;(objectClass=group)(member=CN={bind_dn:CN},OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL))</search_filter>
  • https://t.me/clickhouse_ru
    можно весь список аттрибутов?
  • https://t.me/clickhouse_ru
    @tron_wai #203671 04:13 PM, 10 Feb 2021
    точнее
  • https://t.me/clickhouse_ru
    @tron_wai #203672 04:13 PM, 10 Feb 2021
    те, у которых значение равно s.v.petrov
  • <bind_dn>samAccountName={user_name},OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL</bind_dn>
    так нельзя. он не залогинится/не забиндится.
  • https://t.me/clickhouse_ru
    @tron_wai #203674 04:16 PM, 10 Feb 2021
    тогда uid или то, куда должно пойти user_name и чтоб забиндилось
  • https://t.me/clickhouse_ru
    @tron_wai #203675 04:16 PM, 10 Feb 2021
    у нас в наличии только user_name
  • смотрите:
    в КХ - firstname.lastname
    в LDAPbind надо отправить DOMAIN\firstname.lastname
    в группах надо искать по user-DN
  • https://t.me/clickhouse_ru
    @tron_wai #203677 04:18 PM, 10 Feb 2021
    ок, если байндюсь к DOMAIN\firstname.lastname и могу получить DN оттуда реальный, то bind_dn:DN будет ссылаться именно на него
  • вы не можете получить DN в результате bind-a (на самом деле LDAP должен вернуть matched Dn , но это так себе предположение), вам надо пользователя искать.
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203670 #203679 04:24 PM, 10 Feb 2021
    mailNickname
    sAMAccountName
    userPrincipalName
    mail
  • https://t.me/clickhouse_ru
    @ajIeks #203680 04:24 PM, 10 Feb 2021
    проверил DN, да имеет нужный вид
  • https://t.me/clickhouse_ru
    я могу искать по месту байнда аттрибут DN?
  • https://t.me/clickhouse_ru
    значит записано как:
    sAMAccountName=s.v.petrov,OU=users_l0.2,OU=users_l0,DC=domain,DC=tld
    ?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203682 #203683 04:26 PM, 10 Feb 2021
    вот так там: sAMAccountName=s.v.petrov
  • https://t.me/clickhouse_ru
    Значит это должно сработать с текущим кодом.
  • из того что я знаю, нет
    For certain result codes (typically, but not restricted to
    noSuchObject, aliasProblem, invalidDNSyntax, and
    aliasDereferencingProblem), the matchedDN field is set (subject to
    access controls) to the name of the last entry (object or alias) used
    in finding the target (or base) object. This will be a truncated
    form of the provided name or, if an alias was dereferenced while
    attempting to locate the entry, of the resulting name. Otherwise,
    the matchedDN field is empty.
  • да не будет оно работать в АД, а судя по всему у Алексея АД, просто что-то не то проверяется...
  • https://t.me/clickhouse_ru
    @tron_wai #203687 04:34 PM, 10 Feb 2021
    У меня нет идей о том, как кратко и гибко задавать параметры поиска пользовательского DN. Для этого изначально предназначен bind_dn. Если админу по каким-то причинам не хочется туда указвать настоящий DN, зачем кликхаусу напрягаться?
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203686 #203688 04:34 PM, 10 Feb 2021
    да, AD
  • https://t.me/clickhouse_ru
    почему не будет работать?
  • https://t.me/clickhouse_ru
    @tron_wai #203690 04:35 PM, 10 Feb 2021
    надо только попробовать
  • куда что админу указать?
    дайте конфиг на этот пример https://t.me/clickhouse_ru/203621
    【D】【J】 in ClickHouse не тормозит

    можете пример фильтра? userdn: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL имя пользователя: firstname.lastname (from samAccountName of user) GroupDN: CN=DevelopmentOnTestServers,OU=GROUPS,OU=DOMAIN,DC=LOCAL member: CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL

  • https://t.me/clickhouse_ru
    @tron_wai #203692 04:36 PM, 10 Feb 2021
    Байндится у него все нормально, search filter не правильный.
  • https://t.me/clickhouse_ru
    <bind_dn>attr={user_name},a=b,c=d</bind_dn>

    ….

    <base_dn>dc=domain,dc=tld</base_dn>
    <search_filter>(&amp;(objectClass=groupOfNames)(member=CN={bind_dn:CN}))<search_filter>
  • конечно нормально, он в bind_dn написал
    DOMAIN\{user_name}

    но он не сможет написать нормальный фильтр не имея возможность использовать {user_dn}
  • https://t.me/clickhouse_ru
    @tron_wai #203695 04:38 PM, 10 Feb 2021
    он должен заменить DOMAIN\{user_name} на DN
  • https://t.me/clickhouse_ru
    @tron_wai #203696 04:39 PM, 10 Feb 2021
    > но он не сможет написать нормальный фильтр не имея возможность использовать {user_dn}
    нет, ему это не нужно
  • не байндится с таким DN =) можно bindится одним из нижеследующих методов:
    #1 DOMAIN\{user_name}
    #2 {user_name}@domain.com
    #3 CN=FirstName LastName,OU=RU-Users,OU=USERS,OU=DOMAIN,DC=LOCAL
  • нельзя bind делать атрибутом, не умеет ЛДАП так
  • https://t.me/clickhouse_ru
    @tron_wai #203699 04:40 PM, 10 Feb 2021
    ок, давайте забудим то как байндится, и оставим то что работает: DOMAIN\{user_name}
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203695 #203700 04:40 PM, 10 Feb 2021
    а если сотни различных OU, писать сотни конфигов выглядит как что-то не правильное.
    Даже у меня в команде наберется сходу человек 10, у кого OU будут разные
  • https://t.me/clickhouse_ru
    и попробуем это
  • ок, и как конфигурировать фильтр?
  • https://t.me/clickhouse_ru
    @tron_wai #203703 04:41 PM, 10 Feb 2021
    search filter: <all nodes that have sAMAccountName={user_name} nested inside>
  • https://t.me/clickhouse_ru
    @ajIeks ↶ Reply to #203698 #203704 04:41 PM, 10 Feb 2021
    если указать полный DN то срабатывает, но это подходит для плоских структур
  • у меня в списке есть полный ДН, нельзя атрибутом ДНа
  • https://t.me/clickhouse_ru
    @tron_wai #203706 04:41 PM, 10 Feb 2021
    при
    search base_dn: DC=domain,DC=tld
    attribute: OU
  • https://t.me/clickhouse_ru
    @tron_wai #203707 04:42 PM, 10 Feb 2021
    забудьте полный DN пожалуйста
  • в группах НЕТ sAMAccountName
  • https://t.me/clickhouse_ru
    ^
  • https://t.me/clickhouse_ru
    @ajIeks #203710 04:42 PM, 10 Feb 2021
    это у юзера
  • это имя группы ) там пользователь рядом не валяется
  • https://t.me/clickhouse_ru
    @tron_wai #203712 04:43 PM, 10 Feb 2021
    вы определитесь, какие имена вам нужны
  • @dj_mixer #203713 04:43 PM, 10 Feb 2021
    в группе есть куча атрибутов "member=CN=..."
  • search_filter должен найти все группы куда входит пользователь... т.е. мы должны иметь возможность найти по атрибуту member.
    в атрибуте member нет {user_name}
  • https://t.me/clickhouse_ru
    @tron_wai #203715 04:44 PM, 10 Feb 2021
    а какой DN у групп?
  • https://t.me/clickhouse_ru
    @tron_wai #203716 04:45 PM, 10 Feb 2021
    @ajIeks
  • group:
    DN: CN=GroupName,OU=Support,OU=GROUPS,DC=DOMAIN,DC=LOCAL

    member: CN=Ivan Ivanov,OU=RU-Users,OU=USERS,DC=DOMAIN,DC=LOCAL
  • https://t.me/clickhouse_ru
    @ajIeks #203718 04:46 PM, 10 Feb 2021
    ага, как-то так
  • https://t.me/clickhouse_ru
    @tron_wai #203719 04:48 PM, 10 Feb 2021
    ок, короче говоря, единственное, чего не хватает, это возможность ссылаться на конкретные аттрибуты внутри DN пользователя (который только в идеальном случае как строка совпадает с bind_dn)
  • 🥳
  • https://t.me/clickhouse_ru
    @tron_wai #203721 04:49 PM, 10 Feb 2021
    если научится после удачного байнда извлекать аттрибуты из DN пользователя (?=bind_dn) и ссылаться на них в подстоновках, то все заработает
  • https://t.me/clickhouse_ru
    @tron_wai #203722 04:49 PM, 10 Feb 2021
    как бы вернулись к тому, с чего начинали
  • https://t.me/clickhouse_ru
    @tron_wai #203723 04:50 PM, 10 Feb 2021
    с единственной поправкой, что DOMAIN\{user_name} - не дает тот DN который нужно
  • Да, т.е. нужно искать пользователя по любому...
  • принять что
    bind_dn != user_dn

    и искать пользователя
  • ссылатся на атрибуты в group-searchfilter не надо.
    member: userdn - всегда
  • @dj_mixer #203727 04:51 PM, 10 Feb 2021
    вам только нужно найти userdn
  • https://t.me/clickhouse_ru
    @tron_wai #203728 04:52 PM, 10 Feb 2021
    ок.. иметь сконфигурированный admin account - это самое последнее, на что мы пойдем, скажу сразу )
  • в вашем случае он не нужен, такое нужно когда пользователи синхронизируются автоматом по расписанию даже ни разу не залогинившись... у нас это 0.1%
  • https://t.me/clickhouse_ru
    @tron_wai #203730 04:54 PM, 10 Feb 2021
    если узнать used DN можно без админа, то кул
  • можно (userDn)
  • @dj_mixer #203732 04:55 PM, 10 Feb 2021
    я сейчас ещё заметил, что вам надо groupNameAttribute (откуда вытаскивать имя группы для матчинга на локальную роль). оно тоже может быть в разных атрибутах в зависимости от упоротости IT
  • https://t.me/clickhouse_ru
    @tron_wai #203733 04:56 PM, 10 Feb 2021
    есть это
  • https://t.me/clickhouse_ru
    @tron_wai #203734 04:56 PM, 10 Feb 2021
    <attribute>
  • https://t.me/clickhouse_ru
    @tron_wai #203735 04:56 PM, 10 Feb 2021
    это именно это
  • а да, по диагонали прочёл
  • как-то так (bind_dn=username ):
    <username>DOMAIN\{user_name}</username>
    <user_filter>(&(objectClass=person)(samAccountName={user_name}))</user_filter>
  • https://t.me/clickhouse_ru
    @tron_wai #203738 04:58 PM, 10 Feb 2021
    ага
  • @dj_mixer #203739 04:59 PM, 10 Feb 2021
    т.е. просто добавить user_filter
  • https://t.me/clickhouse_ru
    @tron_wai #203740 04:59 PM, 10 Feb 2021
    отдельный search нужно делать...
  • и переименовать placeholder {binddn} в {userdn} во избежание confusion
  • https://t.me/clickhouse_ru
    @tron_wai #203742 05:00 PM, 10 Feb 2021
    типа если не указан <user_dn_filter> подставлять вместо {user_dn} то же, что и для {bind_dn}, в противном случае DN из дополнительного поиска
  • аха, я про это место заменить тут bind_dn на user_dn
    <search_filter>(&amp;(objectClass=groupOfNames)(member={bind_dn}))</search_filter>
  • https://t.me/clickhouse_ru
    @tron_wai #203744 05:02 PM, 10 Feb 2021
    ага
  • вернемся к нашим помидорам.
    @den_crane у вас нет "рецептов" на такое?
    можно ли вообще хоть как то заставить выполнятся на шарде запрос не-первого уровня?
    https://t.me/clickhouse_ru/203523
    【D】【J】 in ClickHouse не тормозит

    Доброго всем дня, кто то использует distributed с подзапросами? ни у кого нет магической палочки как эту проблему обойти и заставить КХ слать запрос с группировками на шарды? https://github.com/ClickHouse/ClickHouse/issues/20254

  • https://t.me/clickhouse_ru
    функция view() есть, для remote и cluster команд, но вы хотите с обычной distributed.
  • это понятно, но вот эти группировки BI автоматом же накладывает
  • @dj_mixer #203748 05:11 PM, 10 Feb 2021
    я могу указать только "подзапрос"
  • https://t.me/clickhouse_ru
    ну view на шардах и позапрос внутри вью, тут в чате был тред из 200 сообщений про это
    дистрибьютид смотрит на вью
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #203750 06:13 PM, 10 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @illia_slobozhanin #203751 06:16 PM, 10 Feb 2021
    Всем привет. Кх 2 шарда (по 1 реплике на каждом)
    После запуска
    ALTER TABLE ... MODIFY COLUMN name Float64
    С Инта на флоат модифай.
    Очень долго работала мутация (на 1 Шарде) после того, как убили мутацию, то на все операции alter пишет
    *Metadata on replica is not up to date with common metadata in zookeeper*
    Можно ли как-то восстановить метадату из мастера? Или подправить в самом зукипере
  • мне нужно динамические груп бай пробрасывать в шарды сквозь дистрибютед когда дистрибютед завернут в подзапрос.
    напрямую
    select sum(c) from distributed работает
    select sum(c) from (select * from distributed) отправляет 'select c from shardtable' на шард

    куда сюда вью можно прикрутить?
  • https://t.me/clickhouse_ru
    а откуда взялся (select * from distributed) ? генератор SQL так пишет?
  • https://t.me/clickhouse_ru
    >после того, как убили мутацию
    замечательный выстрел в ногу
  • https://t.me/clickhouse_ru
    @den_crane #203758 07:12 PM, 10 Feb 2021
    >Можно ли как-то восстановить метадату из мастера? Или подправить в самом зукипере
    detach table ...
    attach table ..
  • внутренности скобок мы сами пишем.
    потом генератор в зависимости от того что там юзер на drag-and-dropает генерит типа
    select col1, sum(col2) from (select * from distributed) where col3=aaa group by col1
    пользователь может колонками как хочет играться естесственно.
    собственно у БИ есть режим клиента - но это скачать все и умереть...

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

    + ну и ОРМы всякие есть они тоже любят баловатся подзапросами
  • https://t.me/clickhouse_ru
    ну нету этого, на придется орм этому учить
  • ну тогда ФР валидный )
  • https://t.me/clickhouse_ru
    @den_crane #203764 08:33 PM, 10 Feb 2021
    опа опа

    https://www.hetzner.com/dedicated-rootserver/sx133

    128 GB DDR4 ECC RAM
    Hard drive: 10 x 16 TB Enterprise HDD 7200 rpm, 2 x 960 GB datacenter NVMe SSD
    from € 159.00
  • https://t.me/clickhouse_ru
    @den_crane #203765 08:34 PM, 10 Feb 2021
    вот куда логи которые никто не читает будем писать
  • https://t.me/clickhouse_ru
    Что-то от 190 евриков
  • https://t.me/clickhouse_ru
    у меня страна us (ндс 0)
  • https://t.me/clickhouse_ru
    @graid2030 #203768 08:52 PM, 10 Feb 2021
    У меня тоже us, правда незалогинен
  • https://t.me/clickhouse_ru
    @1236463047 #203769 08:55 PM, 10 Feb 2021
    А есть смысл поставить clickhouse-bulk на тот же сервер где и хаус?
    Просто попробовал соседним сервером - как-то не очень в КХ пишет - периодически валится, оставляет файлы.
    15 мин поработал, потом пришлось запускать без нагрузки - еще мин 15 доливал их в базу
  • https://t.me/clickhouse_ru
    @1236463047 #203770 08:55 PM, 10 Feb 2021
    или все от лукавого и если трафик большой - ставить кафку?
  • https://t.me/clickhouse_ru
    @1236463047 #203771 08:57 PM, 10 Feb 2021
    Задача - десяток серваков пишут в одну базу
  • https://t.me/clickhouse_ru
    А в чем подвох ? Почему так дёшево ?
  • https://t.me/clickhouse_ru
    нет подвоха, у нас 500 серверов в хецнере (не КХ, просто всякое разное, например кластера кассандры на NVME 2TB*2 из сотен тачек)
  • https://t.me/clickhouse_ru
    не совсем сервер грейд материнки(вроде supermicro), те возможно с защитой питания не так все хорошо, но другой вопрос что не всегда это надо
  • https://t.me/clickhouse_ru
    @den_crane #203775 09:01 PM, 10 Feb 2021
    ну там CPU еще дешевые (в серверах с большими дисками)
  • https://t.me/clickhouse_ru
    @unamedrus #203776 09:01 PM, 10 Feb 2021
    А, и еще хетцер обещает флат цену, те вроде бы не дают скидку большим покупателям
  • https://t.me/clickhouse_ru
    @den_crane #203777 09:02 PM, 10 Feb 2021
    там зато гигабитные интерфейсы за $0 с любым трафиком
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203778 09:03 PM, 10 Feb 2021
    А, это 10 дисков с суммарным объемом в 16тб ?
    Я подумал, что по 16тб каждый
  • https://t.me/clickhouse_ru
    нет, каждый по 16 конечно
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203780 09:04 PM, 10 Feb 2021
    Как-то прям слишком дёшево
  • https://t.me/clickhouse_ru
    @unamedrus #203781 09:04 PM, 10 Feb 2021
    Да в целом они раньше за туже цену предлагали 10 по 10.
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203782 09:05 PM, 10 Feb 2021
    В AWS такого нету
  • https://t.me/clickhouse_ru
    В AWS больше гарантий
  • https://t.me/clickhouse_ru
    @1236463047 #203784 09:08 PM, 10 Feb 2021
    Хетц счас забит заказами - мне предложили подождать пару недель пока серв запустят
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203785 09:14 PM, 10 Feb 2021
    Ещё бы, такие сервера за копейки раздают
  • https://t.me/clickhouse_ru
    @den_crane #203786 09:16 PM, 10 Feb 2021
    все время такая дешевизна, уже 3 года это тут мусолим
  • https://t.me/clickhouse_ru
    @den_crane #203787 09:18 PM, 10 Feb 2021
    https://www.hetzner.com/dedicated-rootserver/sx293
    256 GB DDR4 ECC
    14 x 16 TB Enterprise HDD 7200 rpm, 2 x 1.92 TB Datacenter NVMe SSD
    (software RAID ; Level optional)
  • https://t.me/clickhouse_ru
    @den_crane #203788 09:18 PM, 10 Feb 2021
    from € 259.00
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203789 09:22 PM, 10 Feb 2021
    Ходят слухи, что там с надёжностью всё грустно. Это действительно так, или попросту стереотип ?
  • https://t.me/clickhouse_ru
    @nikitosiusis #203790 09:23 PM, 10 Feb 2021
    хетзнер учит резервировать хосты смолоду)
  • https://t.me/clickhouse_ru
    Нормально в целом, репликация вам еще на что?)
    А так даже в амазоне могут потерять твой EBS и сказать, что извините
  • https://t.me/clickhouse_ru
    @sudo_apt_get #203792 09:24 PM, 10 Feb 2021
    Резервирование - да, но ничего не даст, если например провайдер площадки начнёт работать не адекватно, или кого-то DDoSить начнут серьезно..
  • https://t.me/clickhouse_ru
    @nikitosiusis #203793 09:24 PM, 10 Feb 2021
    просто в хетзнере ты сразу это закладываешь, а в амазоне когда уже поел)
  • https://t.me/clickhouse_ru
    @nikitosiusis #203794 09:25 PM, 10 Feb 2021
    в хетзнере много очередей, есть дц в германии и финке и антиддос они научились
  • https://t.me/clickhouse_ru
    @nikitosiusis #203795 09:26 PM, 10 Feb 2021
    но проблема что дешевле заказать новый сервер, чем починить свой осталась)
  • https://t.me/clickhouse_ru
    @nikitosiusis #203796 09:28 PM, 10 Feb 2021
    ребут по апи есть, квм дают, рескуе годный, можно пользовать в общем)
  • https://t.me/clickhouse_ru
    @den_crane #203797 09:29 PM, 10 Feb 2021
    да, либо хецнер либо в 10 раз дороже, причем там где дороже будут месяц сервера собирать
  • https://t.me/clickhouse_ru
    сколько в день зависают?)
  • https://t.me/clickhouse_ru
    @andrey_romanov #203799 09:33 PM, 10 Feb 2021
    Goodbye XML, hello SQL! ClickHouse User Management Goes Pro

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

  • https://t.me/clickhouse_ru
    зависают? не знаю, такой же процент пример как в OVH / LeaseWeb / INAP (там у меня железо есть)

    небольшой кластер из КХ

    21:33:36 up 104 days, 17:44, 0 users, load average: 5.13, 5.00, 4.43

    21:33:36 up 104 days, 15:11, 0 users, load average: 4.80, 4.56, 4.00

    21:33:36 up 226 days, 1:08, 2 users, load average: 8.12, 6.11, 5.09

    21:33:37 up 225 days, 6:35, 0 users, load average: 1.65, 2.44, 2.87

    21:33:37 up 225 days, 6:25, 0 users, load average: 2.62, 2.12, 1.71

    21:33:37 up 225 days, 6:20, 0 users, load average: 2.97, 2.82, 3.18

    21:33:37 up 225 days, 6:13, 0 users, load average: 3.91, 3.35, 3.71

    21:33:38 up 225 days, 6:09, 0 users, load average: 2.95, 2.79, 2.81

    zK
    21:36:27 up 483 days, 7:27, 1 user, load average: 0.68, 0.71, 0.79
    21:37:05 up 483 days, 7:27, 1 user, load average: 0.84, 0.97, 1.01
    21:37:23 up 483 days, 5:34, 1 user, load average: 1.23, 1.13, 1.14
  • https://t.me/clickhouse_ru
    Неплохо так буква R прибавляет 20%
  • https://t.me/clickhouse_ru
    эм Starting in late 2019
  • https://t.me/clickhouse_ru
    хорошо) я даж ребуталку написал) наши старые ex частенько повисают)
  • https://t.me/clickhouse_ru
    там переключалка вверху
  • https://t.me/clickhouse_ru
    Да, и в панельке сразу видно праильную цену
  • https://t.me/clickhouse_ru
    @nikitosiusis #203806 10:58 PM, 10 Feb 2021
    можно прикинуться украинцем и не платить ндс
  • 11 February 2021 (153 messages)
  • @Hitych ↶ Reply to #203542 #203807 03:48 AM, 11 Feb 2021
    Похоже это именно то что надо! Огромное спасибо!
  • @IvStrk #203808 04:32 AM, 11 Feb 2021
    Добрый день!
    Подскажите пожалуйста, может ли Кликхаус генерить случайные числа из классических распределений: нормальное, пуассона, …?

    В доке говорится только про равномерное распределение, но в коде вроде используется сторонняя библиотека, которая умеет и другие: https://clickhouse.tech/codebrowser/html_report/ClickHouse/contrib/abseil-cpp/absl/random/gaussian_distribution.h.html
  • https://t.me/clickhouse_ru
    библиотека может умеет
    но в SQL это не прокинуто
    https://clickhouse.tech/docs/en/sql-reference/functions/random-functions/

    fell free make pull request
    Pseudo-Random Numbers | ClickHouse Documentation

    Functions for Generating Pseudo-Random Numbers All the functions accept zero arguments or one argument. If an argument i

  • @IvStrk #203810 06:27 AM, 11 Feb 2021
    Понял, спасибо
  • https://t.me/clickhouse_ru
    @mekluho #203811 06:42 AM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1675646290 #203812 07:48 AM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @yurytrostin #203813 08:55 AM, 11 Feb 2021
    всем привет ! можно ли в КХ сделать вычисляемый столбец на основе значения в другом столбце ? что хочется: у меня есть odbc словарь, я хочу его отобразить в виде таблицы с помощью движка Dictionary. допустим в этом словаре есть ключ id UInt64, и значение value String. я хочу сделать так, чтобы в третьем столбце calculated_value UInt8 было значение if(value='some_value', 1, 0)
  • https://t.me/clickhouse_ru
    @AxelrodDanil #203814 08:56 AM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    select dictGet(‘dict', 'column’, tuple(your_column)) as your_value, if(your_value = 1, ‘true’, ‘false’) from table
  • https://t.me/clickhouse_ru
    это да, но здесь ты пользуешься dictGet, а я хочу словарь отобразить как таблицу, чтобы сразу из нее селектить и можно было посмотреть в случае чего все пары ключ-значение
  • https://t.me/clickhouse_ru
    можете таблицу создать с Engine = Dictionary и делать select *
  • https://t.me/clickhouse_ru
    @yurytrostin #203818 09:04 AM, 11 Feb 2021
    да
    а можно ли в эту таблицу ещё как-то добавить вычисляемое поле по примеру выше ?
  • https://t.me/clickhouse_ru
    ну вообще я не пробовал, но предполагаю что так, если я вас правильно понял

    create table my_table_dict (col1 int, col2 str, col3 int) engine = Dictionary(dict_name)
    select *, if(col_1 = 1, ‘a’, ‘b’) as my_calc_value from my_table_dict
  • https://t.me/clickhouse_ru
    @yurytrostin #203820 09:14 AM, 11 Feb 2021
    хочется не применять if на этапе селекта, а чтобы это поле было уже посчитано при селекте
  • https://t.me/clickhouse_ru
    dictGet
    в DEFAULT выражение пропишите

    но есть бага связаная с тем что clickhouse Не умеет словари грузить ДО того как загружает определение таблиц
    поэтому при выведении типов во время startup может валиться
    https://github.com/ClickHouse/ClickHouse/issues/13613
    ClickHouse server fail after restart, Can't load table with `field String DEFAULT dictGet(...)` in table definition · Issue #13613 · ClickHouse/ClickHouse

    Describe the bug Create table which have field_name String DEFAULT dictGet(...) can't attach after server restart How to reproduce git clone https://gist.github.com/2d6ced1980689703b033ab19...

  • https://t.me/clickhouse_ru
    @mikhailberg #203822 09:22 AM, 11 Feb 2021
    А можно ли при описании словаря указать для поля не просто type, а какое-то выражение, типа parseDateTimeBestEffort ?
  • https://t.me/clickhouse_ru
    нет
    а что мешает toDateTime( dictGetOrDefault() ) выполнить?
  • https://t.me/clickhouse_ru
    не понимаю пока что вы имеете в виду)
  • https://t.me/clickhouse_ru
    ну храните просто строку в словаре
    LowCardinality(String)
    потом вытаскивайте ее через dictGet в select
    и делайте toDateTime( от строки)
  • https://t.me/clickhouse_ru
    да, я навреное так и сделаю. просто думал на этом инициализации скастить по возможности и иметь нужный тип
    спасибо
  • https://t.me/clickhouse_ru
    @BloodJazMan #203827 09:31 AM, 11 Feb 2021
    а почему у вас дата в источнике словаря не формализована вообще?
  • https://t.me/clickhouse_ru
    какой source у словаря?
  • https://t.me/clickhouse_ru
    так сложилось исторически) csv обновляемый
  • https://t.me/clickhouse_ru
    @ZoMeR_LBF #203830 09:41 AM, 11 Feb 2021
    Добрый день.
    Подскажите, пожалуйста, возможно ли осуществлять вставку смешанных данных с JSON?
    Примерно такого формата:
    create table json_with_others (
    dt datetime,
    str String,
    a UInt8,
    b String
    ) engine = Memory

    insert into json_with_others values (now(), 'text', {"a":1, "b":"b_text"})
  • https://t.me/clickhouse_ru
    JSON вставляйте как строку
    пока в clickhouse Нет аналогов PostgeSQL JSONB

    INSERT INTO json_with_others values (now(), 'text', '{"a":1, "b":"b_text"}')
  • https://t.me/clickhouse_ru
    читать так
    https://clickhouse.tech/docs/en/sql-reference/functions/json-functions/
    JSON | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
    @foxermen #203833 09:53 AM, 11 Feb 2021
    Всем привет, возникает проблема с падением DDLWorkera. Есть ли какой нибудь способ отслеживать, что он в рабочем состоянии? Какого либо прцесса с похожим названием не увидели
  • https://t.me/clickhouse_ru
    это не процесс это тред
    в clickhouse все на ThreadPool сделано

    а конкретно что за ошибка то?
  • https://t.me/clickhouse_ru
    Ошибки нет, в 20.3 писал, что упал в логи. Сейчас 20.8 пишет только 2021.02.10 17:07:36.088961 [ 8880 ] {3b6494c9-d7a0-43e1-b832-51bf38a3fdea} <Error> DynamicQueryHandler: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000523861 is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 4 unfinished hosts (0 of them are currently active), they are going to execute the query in background. Пока не понимаем, либо в версии что то поменялось, либо возможно конкретно сейчас это deadlock, пока разбираемся
  • https://t.me/clickhouse_ru
    @ilganas #203836 11:08 AM, 11 Feb 2021
    Добрый день,
    подскажите как данные в xml сконвертировать и загрузить в clickhouse
    Возможно в промежуточный формат. ПО какому пути копать?
  • https://t.me/clickhouse_ru
    Попробуйте использовать формат TSV, зачем xml?
  • @iglon360 #203838 11:31 AM, 11 Feb 2021
    Joined.
  • @komdmitrii #203839 11:34 AM, 11 Feb 2021
    WITH 'name' AS col_name
    SELECT 1, 2, 3 AS col_name

    Привет, подскажите, есть варианты как динамически задавать название столбца? спасибо!
  • @iglon360 #203841 11:36 AM, 11 Feb 2021
    Помогите пжл по clickhouse
    есть
    arrayJoin([{$b}] as src) as b
    $b = '1', '0', '-1'
    There is no supertype for types String, Int16 because some of them are String\/FixedString and some of them are not
    я понимаю что тип нельзя совмещать
    как можно это обойти?
  • https://t.me/clickhouse_ru
    У меня исходные данные в xml
  • https://t.me/clickhouse_ru
    Если можно этот xml разделить на строки как в таблице, тогда можно взять формат JSONAsString и залить каждую строку в таблицу в КХ. А дальше перелить запросом уже в нормальную таблицу, регулярками выбирая значения для столбцов
  • https://t.me/clickhouse_ru
    @ilganas #203844 11:49 AM, 11 Feb 2021
    Коллеги, у меня есть исходные данные в xml
    чеки продаж.
    Мне необходимо написать выгрузку в clickhouse что-бы потом можно было отдать эти данные аналитикам и они уже в powerbi строили свою отчетность.
    SQL обычный не справляется с такой нагрузкой 50 тыс чеков в день

    Если кто может помочь напишите в личку
  • @RomanUrukov #203845 11:54 AM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @RT_1_98 #203846 12:28 PM, 11 Feb 2021
    Joined.
  • может парсить xml до загрузки в бд?
  • @133452245 #203848 12:30 PM, 11 Feb 2021
    просто пид..расить xml кажется не самой лучшей идеей
  • https://t.me/clickhouse_ru
    @dzeck #203849 12:39 PM, 11 Feb 2021
    Привет. Помогите пожалуйста разобраться в проблеме, насколько я понимаю она как то связанно с сетью.

    версия 21.1.2.15,
    на 21.2 тоже воспроизводится

    Делаю 10 последовательных селектов с увеличением offset по 100000 записаей из destributed таблицы (~ 1 миллион записей), подобных этому
    SELECT date, id, volume
    FROM v1_keywords.keywords
    WHERE date = '2021-02-09'
    ORDER BY id LIMIT ?,?

    В произвольный момоент времени во время выполения запроса соеденение с сервером рвётся по причине падения сервера к которому подключен клиент.

    Судя про трейсу где то недалеко от этого места вызвавется исключение
    https://github.com/ClickHouse/ClickHouse/blob/21.1/src/Client/MultiplexedConnections.cpp#L240

    Таблицы:
    CREATE TABLE IF NOT EXISTS v1_keywords.local_keywords
    ON CLUSTER cluster
    (
    date Date,
    id UInt64,
    volume String,
    )
    ENGINE = ReplicatedMergeTree(
    '/clickhouse/tables/{shard}/v1_keywords/local_keywords',
    '{replica}')
    PARTITION BY date
    ORDER BY (date, id, volume)
    SETTINGS index_granularity = 8192;

    CREATE TABLE IF NOT EXISTS v1_keywords.keywords
    ON CLUSTER cluster
    (
    date Date,
    id UInt64,
    volume UInt32
    )
    ENGINE Distributed(cluster, v1_keywords, local_keywords,
    id);

    clickhouse-server.log
    ...
    2021.02.11 09:27:41.851524 [ 108 ] {20fa50e4-08d9-41a0-84fa-8537f8a56a67} <Trace> StorageDistributed (keywords): (ch-sub-4:9000) Cancelling query because enough data has been read

    clickhouse-server.err.log
    ...
    2021.02.11 09:27:41.855597 [ 44 ] {} <Trace> BaseDaemon: Received signal 11
    2021.02.11 09:27:41.856436 [ 115 ] {} <Fatal> BaseDaemon: ########################################
    2021.02.11 09:27:41.856816 [ 115 ] {} <Fatal> BaseDaemon: (version 21.1.2.15 (official build), build id: E40526A12E9A8F3819A18694F6B798F10C624D5C) (from thread 108) (query_id: 20fa50e4-08d9-41a0-84fa-8537f8a56a67) Received signal Segmentation fault (11)
    2021.02.11 09:27:41.859238 [ 115 ] {} <Fatal> BaseDaemon: Address: 0xa0 Access: read. Address not mapped to object.
    2021.02.11 09:27:41.859267 [ 115 ] {} <Fatal> BaseDaemon: Stack trace: 0xf7e3e31 0xf7f3053 0xf7f3787 0xe9a0847 0xf91077c 0xf910f49 0xf91081c 0xf910f49 0xf914500 0xf919005 0x86415ed 0x86451a3 0x7fc06de4a609 0x7fc06dd6b293
    2021.02.11 09:27:41.861343 [ 115 ] {} <Fatal> BaseDaemon: 2. DB::Connection::receivePacket(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf7e3e31 in /usr/bin/clickhouse
    2021.02.11 09:27:41.861739 [ 115 ] {} <Fatal> BaseDaemon: 3. DB::MultiplexedConnections::receivePacketUnlocked(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf7f3053 in /usr/bin/clickhouse
    2021.02.11 09:27:41.861756 [ 115 ] {} <Fatal> BaseDaemon: 4. DB::MultiplexedConnections::drain() @ 0xf7f3787 in /usr/bin/clickhouse
    2021.02.11 09:27:41.861774 [ 115 ] {} <Fatal> BaseDaemon: 5. DB::RemoteQueryExecutor::finish(std::__1::unique_ptr<DB::RemoteQueryExecutorReadContext, std::__1::default_delete<DB::RemoteQueryExecutorReadContext> >*) @ 0xe9a0847 in /usr/bin/clickhouse
    2021.02.11 09:27:41.862187 [ 115 ] {} <Fatal> BaseDaemon: 6. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf91077c in /usr/bin/clickhouse
    2021.02.11 09:27:41.862205 [ 115 ] {} <Fatal> BaseDaemon: 7. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf910f49 in /usr/bin/clickhouse
    2021.02.11 09:27:41.862218 [ 115 ] {} <Fatal> BaseDaemon: 8. DB::PipelineExecutor::tryAddProcessorToStackIfU
    ClickHouse/ClickHouse

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

  • https://t.me/clickhouse_ru
    @dzeck #203850 12:39 PM, 11 Feb 2021
    pdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf91081c in /usr/bin/clickhouse
    2021.02.11 09:27:41.862231 [ 115 ] {} <Fatal> BaseDaemon: 9. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf910f49 in /usr/bin/clickhouse
    2021.02.11 09:27:41.862242 [ 115 ] {} <Fatal> BaseDaemon: 10. DB::PipelineExecutor::executeStepImpl(unsigned long, unsigned long, std::__1::atomic<bool>*) @ 0xf914500 in /usr/bin/clickhouse
    2021.02.11 09:27:41.862511 [ 115 ] {} <Fatal> BaseDaemon: 11. ? @ 0xf919005 in /usr/bin/clickhouse
    2021.02.11 09:27:41.862838 [ 115 ] {} <Fatal> BaseDaemon: 12. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    2021.02.11 09:27:41.862850 [ 115 ] {} <Fatal> BaseDaemon: 13. ? @ 0x86451a3 in /usr/bin/clickhouse
    2021.02.11 09:27:41.863118 [ 115 ] {} <Fatal> BaseDaemon: 14. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    2021.02.11 09:27:41.863757 [ 115 ] {} <Fatal> BaseDaemon: 15. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    2021.02.11 09:27:42.246363 [ 115 ] {} <Fatal> BaseDaemon: Checksum of the binary: F6479E166DD7E8ABFA19525726186F71, integrity check passed.
  • https://t.me/clickhouse_ru
    OOM Killer пришел наверное
    ?
  • https://t.me/clickhouse_ru
    Возможно. Пока лучше не нашел ничего
  • https://t.me/clickhouse_ru
    @dzeck ↶ Reply to #203851 #203853 12:59 PM, 11 Feb 2021
    Увы, памяти ему достаточно.
    Сервер падает вместе с контейнером если он в докере локально.
    На витруалках в GCP с 8 гб каждая памяти аналогичная беда. Запрос кушает немного.
    Вот аналогичный запрос который прошел и не упал
    2021.02.11 09:27:41.694732 [ 46 ] {042c5fac-3490-40c2-9dff-8b59a0ff9c24} <Debug> MemoryTracker: Peak memory usage (for query): 50.52 MiB.
  • https://t.me/clickhouse_ru
    @biblio68 #203854 12:59 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Что вы такое делаете, что БД не справляется с 50к в день??
  • https://t.me/clickhouse_ru
    @dzeck ↶ Reply to #203851 #203856 01:08 PM, 11 Feb 2021
    Может поможет, трейс с сервака который не отдал данные

    2021.02.11 11:20:43.692816 [ 89 ] {} <Error> void Coordination::ZooKeeper::receiveThread(): Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4., Stack trace (when copying this message, always include the lines below):

    0. DB::ReadBuffer::readStrict(char*, unsigned long) @ 0x863c5b5 in /usr/bin/clickhouse
    1. Coordination::ZooKeeper::receiveEvent() @ 0xfb9f62a in /usr/bin/clickhouse
    2. Coordination::ZooKeeper::receiveThread() @ 0xfb9ef81 in /usr/bin/clickhouse
    3. ? @ 0xfba4c61 in /usr/bin/clickhouse
    4. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    5. ? @ 0x86451a3 in /usr/bin/clickhouse
    6. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    7. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.1.2.15 (official build))
    2021.02.11 11:20:43.696040 [ 89 ] {} <Error> void Coordination::ZooKeeper::finalize(bool, bool): Poco::Exception. Code: 1000, e.code() = 107, e.displayText() = Net Exception: Socket is not connected, Stack trace (when copying this message, always include the lines below):

    0. ? @ 0x11dcf5be in /usr/bin/clickhouse
    1. Poco::Net::SocketImpl::shutdown() @ 0x11dd051c in /usr/bin/clickhouse
    2. Coordination::ZooKeeper::finalize(bool, bool) @ 0xfb9b0ef in /usr/bin/clickhouse
    3. Coordination::ZooKeeper::receiveThread() @ 0xfb9f5ac in /usr/bin/clickhouse
    4. ? @ 0xfba4c61 in /usr/bin/clickhouse
    5. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    6. ? @ 0x86451a3 in /usr/bin/clickhouse
    7. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    8. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.1.2.15 (official build))
    2021.02.11 11:20:43.692990 [ 78 ] {} <Error> void Coordination::ZooKeeper::receiveThread(): Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4., Stack trace (when copying this message, always include the lines below):

    0. DB::ReadBuffer::readStrict(char*, unsigned long) @ 0x863c5b5 in /usr/bin/clickhouse
    1. Coordination::ZooKeeper::receiveEvent() @ 0xfb9f62a in /usr/bin/clickhouse
    2. Coordination::ZooKeeper::receiveThread() @ 0xfb9ef81 in /usr/bin/clickhouse
    3. ? @ 0xfba4c61 in /usr/bin/clickhouse
    4. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x86415ed in /usr/bin/clickhouse
    5. ? @ 0x86451a3 in /usr/bin/clickhouse
    6. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
    7. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
    (version 21.1.2.15 (official build))
  • https://t.me/clickhouse_ru
    @Alexpricker #203857 01:11 PM, 11 Feb 2021
    Добрый день есть ли информация по восстановлению distibuted таблиц . На офф сайте вообще мало информации. Кто восстанавливал данные когда зукипер умер раздел. Не можем восстановит даннве в readonly mode. Flag force restore не помогает. Конфиг такой 2 шарда в каждом по 2 реплики. 2й шард работает. На первом не дает вставку. На обоих при попытке подсчетаизаписей выдает session expire
  • кладут сырой ХМЛ в реляционную базу и парсят его каждый раз...
  • https://t.me/clickhouse_ru
    Ну если каждый, то да:)
  • https://t.me/clickhouse_ru
    Мне надо не погружать, а например потом делать анализ например за пол года по товару из каждого чека. Стандартный анализ
  • https://t.me/clickhouse_ru
    @a_yakushev #203861 01:37 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @brbrbr #203862 01:49 PM, 11 Feb 2021
    Никогда не работал с массивами в КХ, пните в нужном направлении, пожалуйста.

    CREATE TABLE TestTable
    (
    id Int32
    , params Nested(
    name LowCardinality(String)
    , value String
    )
    )
    ENGINE = Memory()
    ;

    INSERT INTO TestTable(id, params.name, params.value)
    VALUES (1, ['param1', 'param2'], ['val1', 'val2']), (2, ['param1', 'param2'], ['val1', 'val3']), (3, ['param1', 'param2', 'param3'], ['val1', 'val2', 'val4']), (4, ['param1', 'param2'], ['val1', 'val3'])
    ;

    Как с учётом такой структуры выбрать, например, айдишники записей, у которых param1=val1 и param2=val2 (в данном примере 1 и 3)?
    Или выбрать айдишники, набор параметров и значений которых не уникален (в данном примере 2 и 4)?
  • https://t.me/clickhouse_ru
    WHERE params.name='param1' AND params.value='val1' ?
  • https://t.me/clickhouse_ru
    @ievgenpro #203864 01:52 PM, 11 Feb 2021
    коллеги, подскажите плз, как посмотреть, что именно может крепко нагружать базу, какой запрос
  • https://t.me/clickhouse_ru
    @burov4j #203865 01:53 PM, 11 Feb 2021
    show processlist;
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203863 #203866 01:56 PM, 11 Feb 2021
    Это для одного параметра, а для нескольких?

    В лоб у меня получился вот такой монстр:
    select
    id
    from
    TestTable
    array join params
    where
    (params.name, params.value) in (('param1', 'val1'), ('params2', 'val2'))
    group by
    id
    having
    count() > 1

    Второй пример я сделал так:
    select
    (params.name, params.value) as p
    , groupArray(id)
    from
    TestTable
    group by
    p
    having
    uniq(id) > 0

    Но мне оба решения не нравятся, наверняка это можно сделать проще и быстрее.
  • https://t.me/clickhouse_ru
    SELECT groupArray(arraySort((x) -> x.1, arrayZip(params.name,params.value))) AS uniq_params, count() AS ids_count
    FROM TestTable
    GROUP BY uniq_params
    HAVING ids_count > 1

    попробуйте почитать
  • https://t.me/clickhouse_ru
    SELECT * FROM system.processes;
    SELECT * FROM system.merges;
    SELECT * FROM system.parts_log;
    SELECT * FROM system.mutations;
  • https://t.me/clickhouse_ru
    @ievgenpro #203869 01:58 PM, 11 Feb 2021
    дякую
  • https://t.me/clickhouse_ru
    SELECT * FROM system.query_log;
  • https://t.me/clickhouse_ru
    @mikeryazan #203871 02:02 PM, 11 Feb 2021
    Всем привет!
    Подскажите плз, как и можно ли вообще сделать аналог SUM(col) Over()
    без разворота массивов ( в выборке много столбцов и для нескольких из них придётся разворачивать )
    И без джойнов (таблицы жирные)
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203867 #203872 02:08 PM, 11 Feb 2021
    groupArray - это очепятка и там должен быть arrayDistinct?
  • https://t.me/clickhouse_ru
    Вы можете в словарь добавить еще один атрибут и прописать ему expression.
    Expression будет отправляться в запросе на источник
  • https://t.me/clickhouse_ru
    @sssuhanov #203874 02:13 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @gtkuler #203875 02:14 PM, 11 Feb 2021
    Как правильнее сделать мат. вьюху для подсчета количества встречаемого Hash (хэш сумма) и списка Path, которые соотвествуют этому хэшу в таблице logs.
    Сейчас сделал так:

    CREATE MATERIALIZED VIEW hashes
    (
    `Hash` String,
    `Paths` Array(String),
    `Occurrence` Int32,
    `CreatedAt` DateTime,
    `UpdatedAt` DateTime
    )
    ENGINE = SummingMergeTree(Occurrence)
    PARTITION BY toYYYYMM(CreatedAt)
    ORDER BY Hash POPULATE AS
    SELECT
    PathHash AS Hash,
    groupUniqArray(Path) AS Paths,
    count() AS Occurrence,
    min(EventDate) AS CreatedAt,
    max(EventDate) AS UpdatedAt
    FROM logs
    GROUP BY Hash

    Будут запросы вида

    SELECT *
    FROM hashes
    ORDER BY CreatedAt DESC
    LIMIT 10

    SELECT *
    FROM hashes
    ORDER BY Occurrence DESC
    LIMIT 10
  • https://t.me/clickhouse_ru
    ждать и молиться
    https://github.com/ClickHouse/ClickHouse/issues/18097
    window functions: a prototype · Issue #18097 · ClickHouse/ClickHouse

    Some thoughts for internal discussion. The main task is here: #1469 What we need for a meaningful prototype: single-threaded, partitioning via sort the only supported frame is ROWS BETWEEN UNBOUNDE...

  • https://t.me/clickhouse_ru
    @lnuynxa #203877 02:25 PM, 11 Feb 2021
    Простенький Sum уже должен считатся нормально емнип
  • https://t.me/clickhouse_ru
  • @1599960288 #203879 02:37 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Первое можно вот так, например
    where arrayElement(params.value, indexOf(params.name, 'param1')) = 'val1'
  • https://t.me/clickhouse_ru
    @brbrbr ↶ Reply to #203880 #203881 02:56 PM, 11 Feb 2021
    Спасибо, попробую.

    Я ещё вот такой вариант придумал:
    where hasAll(arrayZip(param.name, param.value), [('param1', 'val1'), ('param2', 'val2')]) = 1
  • @1599960288 #203882 03:01 PM, 11 Feb 2021
    Joined.
  • @RedHat01 #203883 03:05 PM, 11 Feb 2021
    Code: 537. DB::Exception: Received from localhost:9000. DB::Exception: Illegal MySQL variables, the MaterializeMySQL engine requires default_authentication_plugin='mysql_native_password'.
  • @RedHat01 #203884 03:06 PM, 11 Feb 2021
    добрый вечер! как можно исправить это ошибку
  • @RedHat01 #203885 03:06 PM, 11 Feb 2021
    ?
  • @RedHat01 #203886 03:06 PM, 11 Feb 2021
    можете подсказать
  • https://t.me/clickhouse_ru
    @pic_Nick77 #203887 03:18 PM, 11 Feb 2021
    А подскажите, пожалуйста, может есть в КХ какая-то функция, что-то типа arrayForEach, в которую можно передать лямбду и массив и что-то там сделать с элементами массива?
  • https://t.me/clickhouse_ru
    лямбды есть =) для многих array фукнций
    https://clickhouse.tech/docs/en/sql-reference/functions/#higher-order-functions
    Introduction | ClickHouse Documentation

    Functions There are at least* two types of functions - regular functions (they are just called “functions”) and aggregat

  • https://t.me/clickhouse_ru
    Массивы | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    Да, что-то я не подумал про arrayMap. Спасибо.
  • https://t.me/clickhouse_ru
    @MakeReady #203891 03:42 PM, 11 Feb 2021
    почему конструкция FROM table a, table b ест на порядки больше памяти чем в таблицах данных?
  • https://t.me/clickhouse_ru
    @MakeReady #203892 03:43 PM, 11 Feb 2021
    по условиям сравнения там всего х3 должно быть
  • https://t.me/clickhouse_ru
    CROSS JOIN же
    a*b
  • https://t.me/clickhouse_ru
    @unamedrus #203894 03:44 PM, 11 Feb 2021
    А какие конкретно условия?
    кх в некоторых случаях не может оптимизировать это в INNER JOIN
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    CROSS JOIN using unexpectedly large amount of memory · Issue #12571 · ClickHouse/ClickHouse

    I've been having issues trying to find prefix relationships between strings in a table, using startsWith on top of a cross join. Although the dataset is about 20GiB uncompressed, ClickHouse...

  • https://t.me/clickhouse_ru
    @MakeReady #203897 03:46 PM, 11 Feb 2021
    да надо дельты считать, так что id = id and date = date - toIntervalMonth(1)
  • https://t.me/clickhouse_ru
    Какая версия кх?
  • https://t.me/clickhouse_ru
    @MakeReady #203899 03:47 PM, 11 Feb 2021
    20.12.3 revision 54442
  • https://t.me/clickhouse_ru
    @unamedrus #203900 03:47 PM, 11 Feb 2021
    EXPLAIN SYNTAX SELECT ....
  • https://t.me/clickhouse_ru
    @C1rcleYNWA #203901 03:48 PM, 11 Feb 2021
    Коллеги, всем привет!
    Подскажите плиз по 2 вопросам:
    1. Почему не ставится драйвер на бобра?
    2. В КХ рили не работают оконные функции?
  • https://t.me/clickhouse_ru
    @MakeReady #203902 03:48 PM, 11 Feb 2021
    ALL INNER JOIN ExternalData AS a ON (a.Client = Client) AND (a.StoreNo = StoreNo) AND (a.Brand = Brand) AND (a.XCode = XCode) │
    │ WHERE (a.Client = Client) AND (a.StoreNo = StoreNo) AND (a.Brand = Brand) AND (a.XCode = XCode) AND (a.Date = (Date - toIntervalMonth(1)))
  • https://t.me/clickhouse_ru
    Есть прототип оконок в 21.1 и 21.2
  • https://t.me/clickhouse_ru
    это selfjoin?
  • https://t.me/clickhouse_ru
    @MakeReady #203905 03:50 PM, 11 Feb 2021
    lf
  • https://t.me/clickhouse_ru
    можно сделать через GROUP BY тогда
    сформировать 2 массива и потом через лямбду посчитать
  • https://t.me/clickhouse_ru
    @MakeReady #203907 03:51 PM, 11 Feb 2021
    сходу не очень понимаю как
  • https://t.me/clickhouse_ru
    @MakeReady #203908 04:00 PM, 11 Feb 2021
    в принципе если вторую копию взять в виде подзапроса с суммой по интересующему полю, вроде отрабатывает. Но неизвестно до какого роста объема данных
  • https://t.me/clickhouse_ru
    @MakeReady #203909 04:14 PM, 11 Feb 2021
    ,будет LEFT JOIN на порядок меньше памяти
  • https://t.me/clickhouse_ru
    @scorp_dev_null #203910 04:19 PM, 11 Feb 2021
    Привет
    Кто ни будь знает, tabbix ещё живой?
    Там в репо последний комит 3года назад?

    Или может есть какая альтернатива?
  • https://t.me/clickhouse_ru
    поставить опен сорс apache superset)) или редаш) а чтоб сразу работало без прилолжения усилий хз, но таббикс около 3 месяцев назад ипользовал - вроде норм
  • https://t.me/clickhouse_ru
    В суперсет нужно ещё кастомный Кликхаус провайдер ставить, место того, что идёт в офф докер образе (там приколы с low cardinality, как минимум)
  • https://t.me/clickhouse_ru
    ну у меня не сразу подкючился (там приколы с паролем при подключении бд были)- я чз докер ставил и мне пришлось в requirements-local.txt прописать infi.clickhouse_orm==1.0.4, а что насчет low cardinality - это как на работе сказывается?
  • https://t.me/clickhouse_ru
    емнип как то так выглядит

    WITH [Date, Date + INTERVAL 1 MONTH] as arr SELECT Client, StoreNo, Brand, sumIf(value, date2=Date) - sumIf(value, date2=Date + INTERVAL 1 MONTH) as diff ARRAY JOIN arr as date2 GROUP BY Client, StoreNo, Brand, date2
  • https://t.me/clickhouse_ru
    @MakeReady #203915 04:29 PM, 11 Feb 2021
    :) спасибо!
  • https://t.me/clickhouse_ru
    Там дефолтный провайдер даже селект не хочет делать, если есть low cardinality колонки.
  • не живой, но работает ок, удобно в свете того что он полностью на JS и его не надо ставить
  • @921563121 #203918 05:15 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @1236463047 #203919 06:07 PM, 11 Feb 2021
    Парни, никто не "дорабатывал напильником" часом mailru/go-clickhouse ?
  • https://t.me/clickhouse_ru
    @Rendalina #203922 06:39 PM, 11 Feb 2021
    Привет! Мы тут боролись с ошибкой 1002, обновились до jdbc 0.2.5. Вроде стало лучше и тут опять вылезло без кода ошибки:
    r.y.clickhouse.ClickHouseStatementImpl : Error during connection to ru.yandex.clickhouse.settings.ClickHouseProperties@31e4c6f4, reporting failure to data source, message: 1.1.1.111:8123 failed to respond
    2021-02-11 20:05:45.179 INFO 1 --- [ task-4] r.y.clickhouse.ClickHouseStatementImpl : Error sql: select * from test.policy where policy_id = 123 and quotation_date = '2020-01-01' order by created_at desc limit 1
    FORMAT TabSeparatedWithNamesAndTypes;
  • https://t.me/clickhouse_ru
    @Rendalina #203923 06:40 PM, 11 Feb 2021
    Это же то же самое и оно никуда не делось? Как с ней можно ещё побороться кроме обновления на jdbc-0.2.5?
  • https://t.me/clickhouse_ru
    @zorrozoroff #203924 07:37 PM, 11 Feb 2021
    Добрый день, коллеги. У меня есть массив в колонке arr, у меня в таблице выбрана одна строка, и таким образом есть конкретный arr. И я хочу сделать на него other_table.other_column in arr. Я вот вижу что можно сделать has(arr, other_column), у вижу что там линейный поиск, очень ТОРМОЗИТ. Не нашел как превратить массив в таблицу шобы сделать обычный join. Что делать?
  • https://t.me/clickhouse_ru
    IN (SELECT arrayJoin(arr) FROM table)
  • https://t.me/clickhouse_ru
    @zorrozoroff #203926 07:38 PM, 11 Feb 2021
    о, прозевал, ща
  • https://t.me/clickhouse_ru
    @zorrozoroff #203927 07:41 PM, 11 Feb 2021
    офигенчик, спасибо за наводку!
  • @dj_mixer #203928 07:48 PM, 11 Feb 2021
    Добрый вечер, вопрос про использование кх в нетрадиционных позах )
    Надо хранить файлы в чем то реплицируемом а кроме кх ничего нет, считывать по индексу. Если выставить гранулярность в 1, и хранить ЛОБ размерами 15-20 ГБ. КХ это ничем не грозит?
  • @dj_mixer #203929 07:49 PM, 11 Feb 2021
    Типа файловая система на кх )
  • https://t.me/clickhouse_ru
    зачем? он будет при мержах их двигать и падать по oom
  • https://t.me/clickhouse_ru
    нет, не починено это 0.2.5

    оно даже не вмержено https://github.com/ClickHouse/clickhouse-jdbc/pull/540
    и плюс это фикс для селектов
  • Хм всю строку читает в память при мердже или только индекс колонки а остальное стримит?

    Зачем - другие альтернативы требуют доп велосипедов
  • https://t.me/clickhouse_ru
    8192 строк(из колонки или из всей таблицы) в память
  • Даже если выставить размер гранулы в 1?
  • https://t.me/clickhouse_ru
    @den_crane #203935 07:54 PM, 11 Feb 2021
    какой смысл по одной строке писать и читать
  • https://t.me/clickhouse_ru
    не заработает, берите hdfs
  • Говорю же, бинарные файлы хранить
  • https://t.me/clickhouse_ru
    я имел в виду что мерж работает с кучей строк, я не проверял на гранулах в 1
    но в общем-то есть настройка merge_tree
  • Альтернативы то ясны, Ну только ради этого хдфс/s3 сложно воротить...
  • Спасибо. Собссно вопрос будет ли эту колонку читать в память при мердже или стримить из файла в файл на лету при грануле в 1 строку.

    Есть альтернатива в виде лог таблиц, но там надо самим грузитб в реплики... А можно дистрибютед на лог таблицы с internalreplication false сделать?
  • @dj_mixer #203941 07:59 PM, 11 Feb 2021
    А, в лог таблицах индекса ж нет
  • https://t.me/clickhouse_ru
    я сомневаюсь что с 15-20 ГБ это заработает
    ну и сохранность Log не гарантируется с рестартом и даже инсерт может сломать log таблицу
    я за hdfs
  • Да, ладно. Спасибо. В крайнем случае всегда можно кидать файлами на два сервера )
  • @dj_mixer #203945 08:17 PM, 11 Feb 2021
    Вопрос про optimize on inserr который тормозит инсерты из англ чата. Он же только на collapsing/replacing влияет?
    А на зависимые мв влияет?
  • https://t.me/clickhouse_ru
    @k0st1an #203946 08:18 PM, 11 Feb 2021
    А подскажите почему могут не выполняться запросы из папки ZK /clickhouse/task_queue/ddl? При этом репликация работает без проблем. Подвисло около 9 заданий разной направленности.
  • https://t.me/clickhouse_ru
    там селект тормозит
  • В system.replication_queue причина есть обычно
  • https://t.me/clickhouse_ru
    потому что это два разных не связанных механизма
  • https://t.me/clickhouse_ru
    @k0st1an #203950 08:20 PM, 11 Feb 2021
    ясно, завтра значит буду смотреть
  • Спасибо продолжение пропустил.
    А как насчет mv/chained mv? Эта настройка пробросится?
  • https://t.me/clickhouse_ru
    сервер на котором вы выполняете on cluster ZZZ читает описание кластера ZZZ и видит два хоста AA и BB
    и пишет задания в task_queue/ddl для АА и BB

    сервер АА берет свой hostname -f и оказывается что у него hostname = localhost, идет в очередь task_queue и ищет задание для localhost, там пусто.
  • https://t.me/clickhouse_ru
    да 🙂
    https://github.com/ClickHouse/ClickHouse/issues/20304
    optimize_on_insert creates empty parts · Issue #20304 · ClickHouse/ClickHouse

    It would be great if optimize_on_insert was smart enough to discard empty blocks create table empty (num Int8) engine=Memory; CREATE MATERIALIZED VIEW empty_mv ( `num` Int8 ) ENGINE = SummingMergeT...

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

    # ps -eL|grep DDL
    18829 18876 ? 00:00:00 DDLWorkerClnr
    18829 18879 ? 00:00:00 DDLWorker

    # ps -ef|grep 18829|grep -v grep
    clickho+ 18829 18828 1 Feb09 ? 00:55:00 /usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid --daemon
  • https://t.me/clickhouse_ru
    @Julia_jjjjj #203958 08:37 PM, 11 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @JackRussell77 #203959 08:57 PM, 11 Feb 2021
    Над хадупом какие форматы файлов поддерживаются ? CSV ?
    http://clickhouse.tech/docs/en/engines/table-engines/integrations/hdfs/amp/#hdfs
  • https://t.me/clickhouse_ru
    @DenisTsvetkov #203960 09:11 PM, 11 Feb 2021
    вроде должен быть любой формат из этих, нет?
    https://clickhouse.tech/docs/en/interfaces/formats/#formats
    Input and Output Formats | ClickHouse Documentation

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

  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @den_crane #203962 09:50 PM, 11 Feb 2021
    там еще и csv.gz должен работать автоматом
  • https://t.me/clickhouse_ru
    @xyxxyyxy #203963 10:24 PM, 11 Feb 2021
    Joined.
  • 12 February 2021 (325 messages)
  • https://t.me/clickhouse_ru
    Все это работает только на простых типах ? Или CH , например, умеет разбирать json в колонках ? Вообще насколько хорошая это идея отказаться от impala в пользу CH ?
  • https://t.me/clickhouse_ru
    вы можете хранить строку как джсон, но это повлияет на производительность

    для работы со строкой как с джсоном есть вот такие функции:
    https://clickhouse.tech/docs/ru/sql-reference/functions/json-functions/

    другой вариант - использовать вместо джсона тип данных Nested:
    https://clickhouse.tech/docs/ru/sql-reference/data-types/nested-data-structures/nested/
    JSON | Документация ClickHouse

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

  • https://t.me/clickhouse_ru
    вот здесь есть сравнение статистики исполнения запросов по кликхаусу и импале
    https://habr.com/ru/company/tinkoff/blog/310620/

    вообще их на первой странице гугла много, можете там посмотреть
    Сравнение аналитических in-memory баз данных

    В последние два месяца лета в управлении хранилищ данных (Data Warehouse, DWH) Тинькофф Банка появилась новая тема для кухонных споров. Всё это время мы проводили масштабное тестирование...

  • https://t.me/clickhouse_ru
    @JackRussell77 #203968 04:58 AM, 12 Feb 2021
    Хм. Impala хороша тем , что работает поверх hdfs . Если в таком же ключе использовать CH он так же будет быстр как и с нативным движком хранения ?
  • https://t.me/clickhouse_ru
    вы и через интерфейс хайва можете запросы к hdfs делать
  • https://t.me/clickhouse_ru
    @andrey_romanov #203970 05:02 AM, 12 Feb 2021
    (судя по тому, что вы говорите про импалу, то и хайв в коробке у вас есть)
  • https://t.me/clickhouse_ru
    @andrey_romanov #203971 05:03 AM, 12 Feb 2021
    попробуйте лучше сделать анализ того функционала, который потребуется

    может, вам достаточно запросов через хайв?

    скорее всего, понять вам это поможет анализ функционала
  • https://t.me/clickhouse_ru
    @winner_by_life #203972 05:27 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @winner_by_life #203973 05:35 AM, 12 Feb 2021
    Всем привет ! Вопрос есть.Есть такие теги в сфинке Москва*ORКоронавирус* подскажите пожалуйста как этот запрос переделать в кликхаус чтобы он заработал как надо.Я не могу понять какую функцию поиска текста юзать чтобы искать одновременно два тега.Я понял как найти именно одно определенное слово таким запросом select * from items where ilike(text, '%москва%') LIMIT 195 а как мне сделать так чтобы как бы искались два тега.

    Основной вопрос: как передать в кликхаус больше одного тега ?
  • @ViacheslavNefedov #203975 06:34 AM, 12 Feb 2021
    select * from items where multiSearchAnyCaseInsensitive(text, ['москва','питер']) LIMIT 195
  • @ViacheslavNefedov #203976 06:35 AM, 12 Feb 2021
    как пример
  • @subotic0 #203977 06:49 AM, 12 Feb 2021
    Добрый день, при выполнении запроса
    insert into table select * from mysql(...)
    начала появлятся ошибка
    Error writing file '/tmp/MYITC4ml' (Errcode: 28 - No space left on device)
    в чем может быть проблема и как можно ее пофиксить?
  • https://t.me/clickhouse_ru
    Пишет что нет места
  • https://t.me/clickhouse_ru
    увеличить раздел /tmp в ramfs? выбирать более малую часть данных?
  • Места хватает)
  • https://t.me/clickhouse_ru
    (Errcode: 28 - No space left on device)
    это говорит об обратном
  • https://t.me/clickhouse_ru
    @KiLEXst #203982 06:53 AM, 12 Feb 2021
    df -h /tmp
  • https://t.me/clickhouse_ru
    @KiLEXst #203983 06:53 AM, 12 Feb 2021
    что говорит?
  • https://t.me/clickhouse_ru
    Сообщение да, говорит другое.
  • https://t.me/clickhouse_ru
    @KiLEXst #203986 06:57 AM, 12 Feb 2021
    это не похоже на точку монтирования /tmp
  • https://t.me/clickhouse_ru
    @KiLEXst #203988 06:59 AM, 12 Feb 2021
    ну вот возможно скушивается в процессе запроса имено эти 25 гигов
  • https://t.me/clickhouse_ru
    @KiLEXst #203989 07:00 AM, 12 Feb 2021
    в процессе выполнения запроса понаблюдайте за местом внутри докер-композ контейнера (если я правильно понял клик запущен именно в нём)
  • @sergei_b17 #203990 07:44 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Итак. Версия 21.2.2.8. Посмотрел в select * from system.replication_queue \G там висят пару заданий, но они не относятся к делу, как я понимаю. Забыл изначально описать что я делал - create table ... on cluster ZZZ. При этом запрос был сделан с хоста с самого кластера. Зависло еще в процессе выполнения. В select * from system.zookeeper where path = '/clickhouse/task_queue/ddl' \G задача все еще висит. При этом первая задача была с ошибкой синтаксиса и она так же зависла в процессе выполнения и она так же висит. На каких то репликах таблица была создана, на каких то нет. Посмотрел что лежит в /clickhouse/ZZZ/3/logs/system/replicas - одна реплика, второй нет. Тут была идея про веркер DDL, кажется все впорядке:

    $ ps -eL|grep DDL
    1889 3177 ? 00:17:10 DDLWorkerExec
    1889 3181 ? 00:00:00 DDLWorkerClnr
    1889 9469 ? 00:00:00 DDLWorker

    Я не очень понимаю как можно "протолкнуть" выполнения задачи.
  • https://t.me/clickhouse_ru
    @Gizzard_1957 #203992 08:06 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Посмотрел про имена хостов, там все как обычно. hostname -f отдает тож самое что используется в работе КХ и в ЗК
  • https://t.me/clickhouse_ru
    @k0st1an #203994 08:36 AM, 12 Feb 2021
    Похоже я нашел проблему. Помог перезапуск КХ. DDL запросы отработали. Видимо проблема подключения с ЗК. Но это не точно. Тут вопрос как этом можно понять и сделать переподключение к ЗК? Если это вообще проблема с этим, так как я же без проблем делаю select * from system.zookeeper where path = '/clickhouse/task_queue/ddl' \G на проблемных хостах.
  • https://t.me/clickhouse_ru
    @k0st1an #203995 08:40 AM, 12 Feb 2021
    И еще вопрос - когда уйдет задача по создания таблицы из /clickhouse/task_queue/ddl ? сама таблица уже появилась везде
  • https://t.me/clickhouse_ru
    @violin_admin #203996 08:51 AM, 12 Feb 2021
    Всем привет!
    Можете подсказать, кто-нибудь сталкивался с таким:
    curl http://192.168.10.21:8124/ping
    There is no handle /ping

    Use / or /ping for health checks.
    Or /replicas_status for more sophisticated health checks.

    Send queries from your program with POST method or GET /?query=...

    Use clickhouse-client:

    For interactive data analysis:
    clickhouse-client

    For batch query processing:
    clickhouse-client --query='SELECT 1' > result
    clickhouse-client < query > result

    Просто дичь какая-то на соседнем сервер с стакой же версией ch и конфигурацией точь в точь http API нормально работает.
    А здесь два инстанса кликхауса на разных портах - и на обоих вот такой ответ и на ping и на /.
  • https://t.me/clickhouse_ru
    @k0st1an #203997 08:51 AM, 12 Feb 2021
    8123 ?
  • https://t.me/clickhouse_ru
    @violin_admin #203998 08:52 AM, 12 Feb 2021
    да, там один на 8123, другой на 8124, оба не работают
  • https://t.me/clickhouse_ru
    @violin_admin #203999 08:52 AM, 12 Feb 2021
    разница только в ОС, у одного 18, У другого 20 убунта
  • https://t.me/clickhouse_ru
    @miDandTima #204000 08:53 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @violin_admin #204001 08:53 AM, 12 Feb 2021
    бинарник clickhouse тот же самый
  • https://t.me/clickhouse_ru
    @k0st1an #204002 08:53 AM, 12 Feb 2021
    возможно файвол или посмотреть что пишет в логах
  • https://t.me/clickhouse_ru
  • наверно STOP REPLICA/START REPLICA
  • https://t.me/clickhouse_ru
    curl http://192.168.10.21:8124?query=select%201
    There is no handle /?query=select%201

    Use / or /ping for health checks.
    Or /replicas_status for more sophisticated health checks.

    Send queries from your program with POST method or GET /?query=...

    Use clickhouse-client:

    For interactive data analysis:
    clickhouse-client

    For batch query processing:
    clickhouse-client --query='SELECT 1' > result
    clickhouse-client < query > result
  • https://t.me/clickhouse_ru
    @violin_admin #204006 08:55 AM, 12 Feb 2021
    кликхаус-клиент работает норм
  • @alex13dgh #204007 08:55 AM, 12 Feb 2021
    Проблема не в кликхаусе, а в курле. Включите вывод дебага курла и посмотрите что он выдает.
  • https://t.me/clickhouse_ru
    В браузере ?)
  • https://t.me/clickhouse_ru
    фаервол там стоит calico, но его вырубали тот же эффект
    по лгам посмотрю
  • https://t.me/clickhouse_ru
    Я смотрела, он отдает 404, на другом сервере та же версия HTTP, но отдает Ок.
    curl -v http://192.168.10.21:8123/ping
    * Trying 192.168.10.21:8123...
    * TCP_NODELAY set
    * Connected to 192.168.10.21 (192.168.10.21) port 8123 (#0)
    > GET /ping HTTP/1.1
    > Host: 192.168.10.21:8123
    > User-Agent: curl/7.68.0
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    < HTTP/1.1 404 Not Found
    < Date: Fri, 12 Feb 2021 08:41:07 GMT
    < Connection: Close
    <
    There is no handle /ping

    Use / or /ping for health checks.
    Or /replicas_status for more sophisticated health checks.

    Send queries from your program with POST method or GET /?query=...

    Use clickhouse-client:

    For interactive data analysis:
    clickhouse-client

    For batch query processing:
    clickhouse-client --query='SELECT 1' > result
    clickhouse-client < query > result
    * Closing connection 0
  • https://t.me/clickhouse_ru
    вероятно вы про RESTART REPLICA. в след раз попробую
  • https://t.me/clickhouse_ru
    просто с соседних серверов, где курл работает норм такая же фигня
    то есть на один экземпляр он отдает Ок, а на другой - 404 с того же сервера
  • RESTART=STOP+START...
  • пробовали на правильном порту запускать? может баг в КХ (хотя маловероятно)
  • https://t.me/clickhouse_ru
    ну это понятно :) в доке только рестарт
  • https://t.me/clickhouse_ru
    на этом сервере ещё оин инстанс CH работает на 8123, аналогичная ситуация
  • а да, сорри
  • т.е. на
    curl 'http://localhost:8123/'
    и на curl 'http://localhost:8124/'
    он выдаёт 404 и говорит что ему прислали неверные гет параметры?
  • может вы игрались с хендлерами и выключили дефолтс

    что у вас в секции http_handlers в processed_configs?
  • https://t.me/clickhouse_ru
    да, это два разных инстанса на одном сервер и у обоих такая фигня
  • https://t.me/clickhouse_ru
    Да ничего вроде, все по дефолту
  • https://t.me/clickhouse_ru
    @violin_admin #204022 09:10 AM, 12 Feb 2021
    сейчас буду тестировать на сервере с другой 20 убунтой
  • а вы точно на локалхост пробовали или как выше писали на IP сразу?
    судя по дебагу вот *Mark bundle as not supporting multiuse HTTP/2
    я не знаю, завозили в кликхаус HTTP/2 или нет. либо у вас nginx где-то стоит перед ним и вы неправильно проксируете запросы
  • https://t.me/clickhouse_ru
    @edyya #204024 09:18 AM, 12 Feb 2021
    Коллеги, привет! Какой сейчас самый быстрый и простой способ скопировать стендалон инстанс кликхауса на другой хост? Нужно переехать с одного хоста на другой
  • https://t.me/clickhouse_ru
    точно пытались на локалхос, никаких прокси до CH нету.
    Если бы проблема была в curl, то нельзя было бы этим curl получить нормальный ответ от другого CH.
    А на этом сервере запрос до другого CH работает Ок., а к локальному не работает.
    И с других серверов такая же ситуация, на проблмном сервере запрос фейлится, на другом сервере запрос(ping) выполняется.
  • это прямо мистика какая-то. но тут могу посоветовать только tcpdump и смотреть пакеты с заголовками и что прилетает в clickhouse.
    а попробуйте вместо curl, например wget
  • https://t.me/clickhouse_ru
    wget пробовала, там он просто 404 отдает, в принуипе, то же, что и курл
  • если можно остановить то можно перенести папки data/metadata + users sql файлики
  • @nik0la1 #204029 09:36 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @106936600 #204030 09:41 AM, 12 Feb 2021
    Добрый день, делаю запрос по типу:
    SELECT UserID, COUNT(*) as c FROM Statistic GROUP BY UserID ORDER BY c DESC LIMIT 100;
    Выдает Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 93.14 GiB (attempt to allocate chunk of 8323568 bytes), maximum: 93.13 GiB: While executing AggregatingTransform.
    Есть ли варианты, как это можно пофиксить?
  • ну проверьте в preprocessed_configs/config.xml
    по умолчанию секция закомментирована полностью должна быть
  • попробуйте спиллить на диск

    SELECT UserID, COUNT(*) as c FROM Statistic GROUP BY UserID ORDER BY c DESC LIMIT 100
    SETTINGS max_bytes_before_external_group_by=10000000000;
  • https://t.me/clickhouse_ru
    Сработало, спасибо, а можете подсказать, как правильно сделать MATERIALIZED VIEW, так как эта информация желательно, что бы обновлялась сама
  • https://t.me/clickhouse_ru
    @106936600 #204035 10:03 AM, 12 Feb 2021
    Thnx
  • @nk27sss #204036 10:20 AM, 12 Feb 2021
    Joined.
  • @Sergey_BNKV #204037 10:30 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @mikhailberg #204038 10:31 AM, 12 Feb 2021
    Здравствуйте! Подскажите, пожаулйста.

    Есть такие конструкции

    create view my_view as select…. которая возвращает одно число, create view calc_view as select col * my_view from some_table - будет ли во втором случае my_view вычисляться каждый раз для каждой строки, либо же лучше просто обернуть в with ? create view calc_view as with my_view as some_value select col * some_value from some_table
  • @mobydi #204039 10:34 AM, 12 Feb 2021
    Подскажите как понять сколько ресурсов потребляет Materialised view?
  • https://t.me/clickhouse_ru
    @nadirius #204040 10:50 AM, 12 Feb 2021
    query_thread_log - сожрал 120GB как можно ограничить логирование
  • https://t.me/clickhouse_ru
    SELECT * FROM system.query_log

    MATERIALIZED VIEW это триггер который работает с блоком данных который вставляется в таблицу которая в SELECT .. FROM указана
  • типа этого
    https://t.me/clickhouse_ru/201620
    Denny Crane [Junior support specialist at Altinity (NB,Canada)] in ClickHouse не тормозит

    и я бы конечно делал дневные партиции и ttl_only_drop_parts <query_log> <database>system</database> <table>query_log</table> <engine>ENGINE = MergeTree PARTITION BY (event_date) ORDER BY (event_time) TTL event_date + 1 day SETTINGS ttl_only_drop_parts=1 </engine> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log>

  • https://t.me/clickhouse_ru
    ENGINE переопределите
    /etc/clickhouse-server/config.d/query_thread_log.xml

    <yandex>
    <query_thread_log>
    <database>system</database>
    <table>query_thread_log</table>
    <partition_by>toMonday(event_date)</partition_by>
    <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 7 DAY</engine>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
    </query_thread_log>
    </yandex>
    после этого отредактируйте
    /var/lib/clickhouse/medata/system/query_thread_log.sql
    и добавьте TTL там
    после этого рестартуйте сервер
  • https://t.me/clickhouse_ru
    @nadirius #204044 10:55 AM, 12 Feb 2021
    А таблицу то как почистить ) ?
  • @l_dar #204045 10:56 AM, 12 Feb 2021
    Всем привет. Почему не работает агрегатная функция groupArray(DISTINCT x), в доке написано, в кликхаусе говорит нет такого
  • https://t.me/clickhouse_ru
    ALTER TABLE ... DELETE WHERE ...
    или
    TRUNCATE TABLE
    если вы этими данными не пользуетесь
  • https://t.me/clickhouse_ru
    Так вот выдает ошыбку не дает почистить
  • https://t.me/clickhouse_ru
    @aksel_oleg #204048 10:57 AM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @nadirius #204049 11:00 AM, 12 Feb 2021
    Если через катсоль дропнуть файл таблицы ничего не сломаеться ?
  • https://t.me/clickhouse_ru
    Ну вам же сообщение говорит, что мешает.
    Поправьте настройку или файл
  • https://t.me/clickhouse_ru
    ну так прочитайте что в ошибке написано

    чтобы не грохнули данные важные случайно

    TRUNCATE TABLE system.query_thread_log SETINGS max_table_size_to_drop=0
    сделайте если не пользуетесь данными
  • https://t.me/clickhouse_ru
    @aksel_oleg #204052 11:03 AM, 12 Feb 2021
    Всем привет, новичок в кх пока,нужна помощь посчитать дельту(разность).
    Есть таблица, в которой есть id продукта, окно предположим 7. есть некое значение shap_value, есть название фичи, их 38 различных и есть дата прогноза. Задача проста, посчитать дельту между определенным днем например 12 числом и 11 числом, притом, что forecast_window == 7
    AND product_id == 837 будут одинаковы, а фичей за конкретный день при таком фильтре всегда 38.
    То есть посчитать тупо разность 38 значений одного дня - 38 значений другого.
    Вообще не нахожу в КХ методов чтобы это сделать, хоть задача и простая вроде
  • https://t.me/clickhouse_ru
    Прочие функции | Документация ClickHouse

    Прочие функции hostName() Возвращает строку - имя хоста, на котором эта функция была выполнена. При распределённой обраб

  • https://t.me/clickhouse_ru
    Не думаю, что подойдут офсеты, за день данных 62000*4, такой огромный оффсет делать не очень наверно. Тем более вообще следующая задача посчитать дельту 38 значений сегодняшнего дня - 38 значений среднего за 7 предыдущих дней. Тут наверно через что-то другое надо, но не хватает знаний как это сделать
  • @mobydi ↶ Reply to #204041 #204055 11:31 AM, 12 Feb 2021
    Вроде в query_log нет insert ?
  • https://t.me/clickhouse_ru
    там все есть
    только INSERT там без данных которые вы вставляете... а так, память покажет... и байты ... и кажется кол-во строк... (но это не точно)
  • https://t.me/clickhouse_ru
    @goldmorphin #204057 11:42 AM, 12 Feb 2021
    Joined.
  • @myoldloverock #204058 12:02 PM, 12 Feb 2021
    Коллеги подскажите пожалуйста ловлю ошибку уже пару часов бьюсь ```DB::Exception: Table columns structure in ZooKeeper is different from local table structure: Cannot attach table```
    Используется 2 сервера кх 1 шард и 1 зукипер.
    Как можно пофиксить?
  • @253072124 #204059 12:13 PM, 12 Feb 2021
    добрый день всем. Подскажите, пожалуйста, возможно кто-то сталкивался с вопросом загрузки данных из существующей таблицы Clickhouse на движке MergeTree() в существующую на том же движке, но с другим ключом сортировки данных. Исходная таблица содержит порядка 14 миллиардов строк (1 строка - это некий 1 ивент). Есть ли проблемы, связанные с выполнением такого запроса insert select? И насколько это ресурсозатратная операция в плане потребления оперативной памяти?
  • https://t.me/clickhouse_ru
    @gtkuler #204060 12:18 PM, 12 Feb 2021
    Скажите, имеет ли смысл юзать КХ для хранения пользовательских логов, которые при этом иногда нужно обновлять.
  • https://t.me/clickhouse_ru
    логи которые "нужно обновлять" нельзя называть логами

    или имеются ввиду логи которые прилетают старым периодом?

    ну можно ReplacingMergeTree использовать, если знаете по каким параметрам будете сравнивать что с чем надо обновить
    https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replacingmergetree/
    ReplacingMergeTree | ClickHouse Documentation

    ReplacingMergeTree The engine differs from MergeTree in that it removes duplicate entries with the same sorting key valu

  • @133452245 #204062 12:21 PM, 12 Feb 2021
    а можно просто в селекте эт оучитывать и ничего обновлять не придется
  • https://t.me/clickhouse_ru
    она вроде как стриминговая, по частям данные отправляются
  • https://t.me/clickhouse_ru
    проблем особых быть не должно по памяти
    только по диску и CPU для сортировки

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

    ORDER BY в SELECT добавлять не надо
    селект должен получиться steamable
    тоже какую то память жрет, на буфера для чтения...

    возможно придется добавить в запрос что нибудь типа
    SETTING max_partitions_per_insert_block=XXX

    для пробы можно сделать
    INSERT INTO ... SELECT ... FROM WHERE date BETWEEN ... SETTINGS ...
    и проверить какие выходные данные получатся сравнить через system.parts
    размеры в исходной и конечной таблице
  • https://t.me/clickhouse_ru
    а какая вам нужда менять ORDER BY?
    вы туда что-то добавить хотите?
    что? низкокардинальное надеюсь?
  • да, низкокардинальное, связано с оптимизацией под несколько основных запросов
  • спасибо огромное за информацию) сейчас попробую
  • https://t.me/clickhouse_ru
    низкокардинальное лучше поближе к началу ORDER BY добавлять
  • ок, об этом знаю, спасибо)
  • https://t.me/clickhouse_ru
    @zl0ng #204070 01:01 PM, 12 Feb 2021
    Друзья, кто-то подключался к клику через Табло на Mac OS?
  • @Sergey_BNKV #204071 01:09 PM, 12 Feb 2021
    В западную страховую компанию требуется программист 1С, с опытом работы в страховых компаниях, некредитных финансовых организациях, консалтинга.

    Условия:
    -Оплата: 180 000-200 000 Гросс;
    -Оформление согласно ТК РФ;
    -Доплата по больничному листу, ДМС, страхование от НС, страхование жизни, подарок на день рождения.
    Требования:
    -Высшее профильное образование.
    -Опыт работы разработчиком на платформе 1С от 3 лет.
    -Уверенные навыки разработки на 1С 8.3.
    -Понимание принципов работы современных технологий интеграции и обмена данными (веб-сервисы, soap, json, xml).
    -Опыт администрирования систем на платформе 1С: Аксиома, Аванкор, Финансист, Sintegro.
    -Опыт работы с продуктами Atlassian Jira, Confluence.
    Обязанности:
    -Доработка существующих типовых и нетиповых конфигураций.
    -Взаимодействие с компаниями-разработчиками бизнес приложений, постановка и контроль выполнения задач, тестирование, передача реализованного функционала пользователям.
    -Поддержка интеграционных механизмов бизнес приложений на платформе 1С.
    -Разработка SQL запросов.
    -Подготовка документации, ведение базы знаний по разрабатываемому и дорабатываемому функционалу.
    -Консультирование и обучение пользователей бизнес приложений. Резюме направлять @Ekaterina_kst
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #204072 01:15 PM, 12 Feb 2021
    блин
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #204073 01:15 PM, 12 Feb 2021
    клик уже с 1с работает?
  • https://t.me/clickhouse_ru
    @nikolai_zubchevskii #204074 01:15 PM, 12 Feb 2021
    вау
  • @mobydi #204075 01:25 PM, 12 Feb 2021
    В system.process для insert запросов memory_usage всегда 0. А как можно посмотреть количество потребляемой памяти для insert в реальном времени?
  • @iglon360 #204076 01:25 PM, 12 Feb 2021
    Подскажите пжл
    есть пакет
    rodger-bavix/laravel-clickhouse
    пагинацию нужно сделать
    ->paginate(1, 2);
    Ошибку выдает
    Method Bavix\\LaravelClickHouse\\Database\\Query\\Builder::getCountForPagination does not exist.
    я не нашел этого метода
  • https://t.me/clickhouse_ru
    имеет смысл наверное issue для этого сделать в github

    как вариант настроить memory profiler
    и через https://github.com/Slach/clickhouse-flamegraph/
    попробовать flamegraph для типа Memory построить...
    GitHub - Slach/clickhouse-flamegraph: CLI utility for build flamegraph based on system.trace_log

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

  • @Drosalevan #204078 01:28 PM, 12 Feb 2021
    Всем привет, в доке по КХ, везде, черным по белому, рекомендуют за управление ролями, квотами, профилями и т.п. через SQL-воркфлоу.

    Кто-то может объяснить с чем это связано?

    Управление КХ планируется реализовать через ansible, и пока не могу представить, что хранение настроек, юзеров и прочего намноо удобнее держать в SQL нежели в xml(где явно и структурировано все описано)

    Поделитесь опытом, в чем плюс SQL-воркфлоу и как вы управляете конфигурацией и ролями в КХ?
  • https://t.me/clickhouse_ru
    ну, я думаю XML еще долго останется

    RBAC через SQL определяется во всех СУБД практически

    в целом же никто не мешает
    CREATE ROLE IF NOT EXISTS сделать
    и потом права раздавать
  • @anuriq #204080 01:46 PM, 12 Feb 2021
    коллеги, КХ сервер начал потреблять много памяти. при этом активных запросов очень мало. как понять, куда уходит память? версия 20.8.4.11
  • https://t.me/clickhouse_ru
    For RBAC i find it useful to have separate tables for users, roles, permissions, role_permissions, and user_roles
  • https://t.me/clickhouse_ru
    @xyxxyyxy #204082 01:49 PM, 12 Feb 2021
    But ideally in SQL like postgres instead of clickhouse, there's no foreign keys in clickhouse right? :/
  • https://t.me/clickhouse_ru
    SELECT * FROM system.merges
  • разве удобно хранить конфигурацию в sql файлах?
  • https://t.me/clickhouse_ru
    ну вы попробуйте =)
    я понимаю что видимо вам конкретно неудобно

    но вообще если подумать SQL определение ролей и прав, компактнее чем XML и тем кто работает с БД просто возможно более читабельно

    конечно самое удобное и читаемое это какой нибудь UI с security matrix
    где столбцы это права
    строки роли
    и на пересечении галочка =)
    но это уже другой подход "накликивания" и вам он не нужен
  • https://t.me/clickhouse_ru
    SELECT * FROM system.query_log
    там тоже есть про память
  • https://t.me/clickhouse_ru
    еще
    посмотрите
    system.metric_log
    там есть метрики по трекингу памяти

    еще
    system.dictionaries
    может у вас словарь какой завелся который память отожрал внезапно?
  • мне тут интересен опыт других) Хотел понять в чем +- разных подходов и кто что использует.
  • https://t.me/clickhouse_ru
    ну SQL более устоявшийся подход

    недостатки у него только то что обычно юзеров с паролями открытыми задают в SQL файлах
    а надо бы через хеши =)
    но это и в XML тоже встречается
  • спасибо
  • @anuriq ↶ Reply to #204087 #204091 01:59 PM, 12 Feb 2021
    спасибо
  • https://t.me/clickhouse_ru
    @CHIP0K #204092 02:50 PM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @CHIP0K #204093 02:53 PM, 12 Feb 2021
    привет всем, может кто знает, кликхаус после 5ти минут работы валится с ошибкой:
    https://pastebin.com/raw/345dEYAt
  • https://t.me/clickhouse_ru
    @CHIP0K #204094 02:55 PM, 12 Feb 2021
    код завершения 11, то есть ошибка при обращении в память
  • https://t.me/clickhouse_ru
    @BloodJazMan #204095 02:55 PM, 12 Feb 2021
    сделайте grep ba3f55d-a04c-48e2-bebb-53f7cd5fead7 -r /var/log/clickhouse/clickhouse-server.log
    что там за запрос?
  • https://t.me/clickhouse_ru
    @BloodJazMan #204096 02:56 PM, 12 Feb 2021
    судя по всему оно какую то query не может составить Pipeline
  • https://t.me/clickhouse_ru
    @BloodJazMan #204097 02:56 PM, 12 Feb 2021
    нужно запрос посмотреть
  • https://t.me/clickhouse_ru
    @CHIP0K #204098 02:56 PM, 12 Feb 2021
    2021.02.12 16:50:06.563929 [ 15664 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Debug> executeQuery: (from 157.230.84.89:41788, using production parser) SELECT * FROM stats708.events6892 WHERE packagename = 'com.managhost.cleanerbestap' AND time > '2021-01-13 16:50:01' LIMIT 1000 OFFSET 2000 FORMAT JSON
    2021.02.12 16:50:06.564460 [ 15664 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> ContextAccess (default): Access granted: SELECT(date, time, msec, value, ip, country, city, region, isp, trackHost, firebasetoken, packagename, deviceid, version, manufacturer, devicemodel, countryCode, type, asn, aso, cohort, AndroidVersion, IsTabletDevice, UserAgent, Rdid, connectionType) ON stats708.events6892
    2021.02.12 16:50:06.564920 [ 15664 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> ContextAccess (default): Access granted: SELECT(date, time, msec, value, ip, country, city, region, isp, trackHost, firebasetoken, packagename, deviceid, version, manufacturer, devicemodel, countryCode, type, asn, aso, cohort, AndroidVersion, IsTabletDevice, UserAgent, Rdid, connectionType) ON stats708.events6892
    2021.02.12 16:50:06.565370 [ 15664 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> InterpreterSelectQuery: WithMergeableState -> Complete
    2021.02.12 16:50:07.041136 [ 15849 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> StorageDistributed (events6892): (162.251.61.228:9020) Cancelling query because enough data has been read
    2021.02.12 16:50:07.056876 [ 16857 ] {} <Fatal> BaseDaemon: (version 21.2.2.8 (official build), build id: 67D2DA03ADA750F18CEB331C65F50D0F56E33713) (from thread 15849) (query_id: 8ba3f55d-a04c-48e2-bebb-53f7cd5fead7) Received signal Segmentation fault (11)
    2021.02.12 16:50:07.061467 [ 15834 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> StorageDistributed (events6892): (162.251.61.11:9020) Cancelling query because enough data has been read
    2021.02.12 16:50:07.132243 [ 15783 ] {8ba3f55d-a04c-48e2-bebb-53f7cd5fead7} <Trace> StorageDistributed (events6892): (38.64.138.77:9020) Cancelling query because enough data has been read
  • https://t.me/clickhouse_ru
    @BloodJazMan #204099 02:57 PM, 12 Feb 2021
    вроде не крамольная query
    stats708.events6892
    это Distributed таблица?
  • https://t.me/clickhouse_ru
    @Felixoid #204100 02:58 PM, 12 Feb 2021
    Отец К’оргий

    Так, ну поставил я Clickhouse. Куда говорить-то?

  • https://t.me/clickhouse_ru
    @BloodJazMan #204101 02:58 PM, 12 Feb 2021
    в общем похоже вы на какой то баг наступили очень неприятный...
    попробуйте вместо SELECT * ...
    столбцы выбирать?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204099 #204102 02:59 PM, 12 Feb 2021
    хз, как глянуть?
  • https://t.me/clickhouse_ru
    @CHIP0K #204103 02:59 PM, 12 Feb 2021
    сори, я в кликхаусе полный 0
  • https://t.me/clickhouse_ru
    @CHIP0K #204104 02:59 PM, 12 Feb 2021
    никогда с ним не работал, попросили разобраться почему демон сваливается
  • https://t.me/clickhouse_ru
    SHOW CREATE TABLE stats708.events6892
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204105 #204106 03:02 PM, 12 Feb 2021
    уже нашли виновника
  • https://t.me/clickhouse_ru
    @CHIP0K #204107 03:02 PM, 12 Feb 2021
    преблагодарен вам)
  • https://t.me/clickhouse_ru
    @BloodJazMan #204108 03:03 PM, 12 Feb 2021
    ну вообще было бы не плохо если бы вы какой то минимально воспроизводимый пример сделали и issue на github завели

    потому что ошибка прямо неприятная с сегфолтом в такой query вроде валиться не должно
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204108 #204109 03:04 PM, 12 Feb 2021
    ща попрошу пример этого запроса
  • https://t.me/clickhouse_ru
    SELECT * FROM stats708.events6892 WHERE packagename = 'com.managhost.cleanerbestap' AND time > '2021-01-13 16:50:01' LIMIT 1000 OFFSET 2000 FORMAT JSON

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

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

    DB::RemoteQueryExecutor::finish

    потом
    DB::MultiplexedConnections::drain()
    потом
    DB::MultiplexedConnections::receivePacketUnlocked
    потом
    DB::Connection::receivePacket

    и в нем уже куда то читает из памяти которая недоступна

    так не должно быть

    там сколько НОД в кластере?
    обновления какие то на все ноды накатили или только на некоторые?

    вот этот удаленный сервер он точно такой же версии или нет?
  • https://t.me/clickhouse_ru
    =))) а почему вас то попросили? ;))))) других кто работал не нашлось чтоли? или убежали в страхе?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204112 #204113 03:09 PM, 12 Feb 2021
    тип того)
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204111 #204114 03:10 PM, 12 Feb 2021
    я хз что они там творили
  • https://t.me/clickhouse_ru
    @CHIP0K #204115 03:10 PM, 12 Feb 2021
    анархия)))
  • https://t.me/clickhouse_ru
    я вопросы перечислил было бы не плохо получить на них ответ
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204116 #204117 03:14 PM, 12 Feb 2021
    я соберу ответ
  • https://t.me/clickhouse_ru
    @resuba #204118 03:20 PM, 12 Feb 2021
    А если я вставляю в таблицу из которой читает MV и MV выдала ошибку, то вся транзакция отменяется?

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

    в clickhouse нет транзакций
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #204119 #204120 03:22 PM, 12 Feb 2021
    А если две MV и одна выдала ошибку? Ладно, это можно проверить(

    Спасибо
  • https://t.me/clickhouse_ru
    тоже самое, первая вставит, вторая нет
    я же сказал транзакций НЕТ

    MV это не транзакционный AFTER INSERT TRIGGER
    который работает с куском данных который поступил в инициирующую таблицу по INSERT

    каскадные MV тоже отдельно работают
  • https://t.me/clickhouse_ru
    @resuba ↶ Reply to #204121 #204122 03:35 PM, 12 Feb 2021
    CREATE TABLE A (
    a String
    ) ENGINE = MergeTree()
    ORDER BY a
    PRIMARY KEY a

    CREATE TABLE B (
    a String
    ) ENGINE = MergeTree()
    ORDER BY a
    PRIMARY KEY a

    CREATE TABLE C (
    a UUID
    ) ENGINE = MergeTree()
    ORDER BY a
    PRIMARY KEY a

    CREATE MATERIALIZED VIEW A2B TO B (
    a String
    ) AS
    SELECT
    a as `a`
    FROM
    A

    CREATE MATERIALIZED VIEW A2C TO C (
    a UUID
    ) AS
    SELECT
    toUUID(a) as `a`
    FROM
    A

    Попробовал вставить INSERT INTO A (a) VALUES ('djskdjsd')

    В A вставилось, в B и C не вставилось
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204111 #204123 03:42 PM, 12 Feb 2021
    - 7 нод
    - о каких обновлениях речь?
    версии везде одинаковы
  • https://t.me/clickhouse_ru
    ну об обновлениях версии clickhouse

    7 нод как то не симметрично
    почему 7?

    сколько шардов? Тоже 7 и в каждом по одной реплике?

    облако или свое железо?
    на своем железе с памятью все впорядке?
  • https://t.me/clickhouse_ru
    @CHIP0K #204125 03:49 PM, 12 Feb 2021
    >>>сколько шардов? Тоже 7 и в каждом по одной реплике?
    всё верно 7 шардорв по одной реплике
    >>> не симметрично почему 7?
    как я со стороны вжу что они их добавляют по мере необходимости
    >>> облако или свое железо?
    Своё
    >>> на своем железе с памятью все впорядке?
    пару раз было ООМ, но не связано с этими 5тиминутными рестартами
  • https://t.me/clickhouse_ru
    возможно я ввел вас в заблуждение, извините
    там может у вас сначала A2C выбрался и упал с ошибкой
    или реально там когда все триггеры MV стартуют
    то если хоть один упал остальные тоже откатываются

    но вроде как планируются улучшения
    https://github.com/ClickHouse/ClickHouse/issues/19352
    Why clickhouse does not support transaction? · Issue #19352 · ClickHouse/ClickHouse

    Clickhouse does not support transaction will lead to duplicated data when we using spark to load data into clickhouse(spark task failed and retry will lead to this). As i know, the reason includes:...

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

    запрос с которого падает
    если его на другом сервере исполнить то все ок работает?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204127 #204129 03:53 PM, 12 Feb 2021
    да тот что выше
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204128 #204130 03:53 PM, 12 Feb 2021
    да, только на одном сервере
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204127 #204131 03:56 PM, 12 Feb 2021
    этот запрос выполнялся в цыкле, как мне говорили
  • https://t.me/clickhouse_ru
    1) SHOW CREATE TABLE stats708.events6892 - для ясности картины

    2) memtest
  • https://t.me/clickhouse_ru
    на других серверах такой запрос проходит ?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204132 #204134 03:59 PM, 12 Feb 2021
    SHOW CREATE TABLE stats708.events6892

    ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ CREATE TABLE stats708.events6892
    (
    `date` Date DEFAULT toDate(time),
    `time` DateTime,
    `msec` UInt64,
    `value` Float32 DEFAULT CAST(1, 'Float32'),
    `ip` String,
    `country` String,
    `city` String,
    `region` String,
    `isp` String,
    `trackHost` String,
    `firebasetoken` String,
    `packagename` String,
    `deviceid` String,
    `version` String,
    `manufacturer` String,
    `devicemodel` String,
    `countryCode` String,
    `type` String,
    `asn` String,
    `aso` String,
    `cohort` String,
    `AndroidVersion` String,
    `IsTabletDevice` String,
    `UserAgent` String,
    `Rdid` String,
    `connectionType` String
    )
    ENGINE = Distributed('events', 'stats708', 'events6892') │
    └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    ↘️ Progress: 1.00 rows, 732.00 B (2.41 rows/s., 1.76 KB/s.)
    1 rows in set. Elapsed: 0.415 sec.
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204133 #204135 03:59 PM, 12 Feb 2021
    его там небыло, они по ходу ток один сервер долбили
  • https://t.me/clickhouse_ru
    понятно ссылка на саму себя в Distributed таблице
    даблица криво определена...

    должно быть что то типа Distributed('events', 'stats708', 'events6892_local')
    и
    events6892_local это должна быть ENGINE = MergeTree
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204136 #204137 04:02 PM, 12 Feb 2021
    лол, спасибо передам
  • https://t.me/clickhouse_ru
    @CHIP0K #204138 04:02 PM, 12 Feb 2021
    )))
  • https://t.me/clickhouse_ru
    @CHIP0K #204139 04:02 PM, 12 Feb 2021
  • https://t.me/clickhouse_ru
    запустите на сервере который не падает
    SELECT hostName(), engine_full FROM clusterAllReplicas('events', system.tables) WHERE database='stats708' AND table='events6892'

    различия в engine_full есть?
  • https://t.me/clickhouse_ru
    @BloodJazMan #204141 04:05 PM, 12 Feb 2021
    ой тьфу
  • https://t.me/clickhouse_ru
    поправил запрос посмотрите выше
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204142 #204143 04:11 PM, 12 Feb 2021
    SELECT
    hostName(),
    engine_full
    FROM clusterAllReplicas('events', system.tables)
    WHERE (database = 'stats708') AND (table = 'events6892')
  • https://t.me/clickhouse_ru
    @CHIP0K #204144 04:11 PM, 12 Feb 2021
    на обох нодах
  • https://t.me/clickhouse_ru
    ? каких "обоих нодах" если там вы сказали 7 шардов?
    bи не очень понятно что вы получили то?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204145 #204146 04:12 PM, 12 Feb 2021
    проверил там где валится и на одной из кластера
  • https://t.me/clickhouse_ru
    @CHIP0K #204147 04:12 PM, 12 Feb 2021
    рандомно
  • https://t.me/clickhouse_ru
    РЕЗУЛЬТАТ ТО КАКОЙ??? engine_full одинаковый везде?
  • https://t.me/clickhouse_ru
    @CHIP0K #204149 04:14 PM, 12 Feb 2021
    да
  • https://t.me/clickhouse_ru
    @CHIP0K #204150 04:14 PM, 12 Feb 2021
    аааа, стоп
  • https://t.me/clickhouse_ru
    @CHIP0K #204151 04:15 PM, 12 Feb 2021
    Code: 47. DB::Exception: Received from 1.1.1.1:9020. DB::Exception: Missing columns: 'table' while processing query: 'SELECT hostName(), engine_full FROM clusterAllReplicas('events', 'system.tables') WHERE (database = 'stats708') AND (table = 'events6892')', required columns: 'engine_full' 'database' 'table', maybe you meant: '['engine_full']' '['database']'.
  • https://t.me/clickhouse_ru
    @CHIP0K #204152 04:15 PM, 12 Feb 2021
    это там где падает
  • https://t.me/clickhouse_ru
    @CHIP0K #204153 04:15 PM, 12 Feb 2021
    Code: 170. DB::Exception: Received from 38.68.134.230:9020. DB::Exception: Requested cluster 'events' not found.
  • https://t.me/clickhouse_ru
    @CHIP0K #204154 04:15 PM, 12 Feb 2021
    это на другой ноде, где не падает
  • SELECT
    hostName(),
    engine_full
    FROM clusterAllReplicas('events', system.tables)
    WHERE (database = 'stats708') AND (name = 'events6892')
  • https://t.me/clickhouse_ru
    @BloodJazMan #204156 04:17 PM, 12 Feb 2021
    1) значит <remote_servers> в конфигах /etc/clickhouse-server/ различается на разных нодах

    2) извините запрос должен выглядеть вот так
    SELECT
    hostName(),
    engine_full
    FROM clusterAllReplicas('events', system.tables)
    WHERE (database = 'stats708') AND (name = 'events6892')
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @andrew_shevch #204159 04:56 PM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @andrew_shevch #204160 04:58 PM, 12 Feb 2021
    привет. при связке clickhouse и rebbitmq как передать vhost при создании таблици на движке RabbitMQ
  • https://t.me/clickhouse_ru
    @andrew_shevch #204161 04:58 PM, 12 Feb 2021
    либо в настройках как указать?
  • https://t.me/clickhouse_ru
    делаю связку с rabbitmq, как vhost указать?
  • https://t.me/clickhouse_ru
    так. странно
    пипец как
    а есть среди выданых hostName
    тот на котором не работает запрос?
  • https://t.me/clickhouse_ru
    @BloodJazMan #204164 05:04 PM, 12 Feb 2021
    SHOW CREATE TABLE stats708.events6892
    все еще показывает Distributed на сервере который валит запрос?
  • https://t.me/clickhouse_ru
    а вы используете ссд кеш какой-то?
  • https://t.me/clickhouse_ru
    @CHIP0K ↶ Reply to #204164 #204166 05:14 PM, 12 Feb 2021
    В дороге, через часик ток гляну
  • https://t.me/clickhouse_ru
    @tephro #204167 05:15 PM, 12 Feb 2021
    Приветствую!

    Запрос:

    SELECT * FROM data WHERE ServiceID = '<UUIDv4>' AND Application = ‘<application>’ AND Timestamp >= <1 января 2021> AND Timestamp <= <30 января 2021> ORDER BY Timestamp DESC LIMIT 250;

    Запрос выполняется на 1 ноде, потребляет 20+ ГБ RAM.

    В таблице data 161 поле. Timestamp - это Primary Key, по нему же сортировка. Всего данных за период внутри Where - примерно 2 ТБ.

    optimize_read_in_order = 1

    Вопрос - откуда такое потребление памяти? Clickhouse не использует heap sort и/или late materialization?

    ClickHouse server version 20.12.3.3 (official build).
  • https://t.me/clickhouse_ru
    нет, у меня предыдущией модели, еще без nvme, эти только появились я еще не успел.
    но я скорее бы использовал встроенные в КХ TTL move
  • https://t.me/clickhouse_ru
    @nikitosiusis #204169 05:20 PM, 12 Feb 2021
    спс
  • order by DESC же
  • https://t.me/clickhouse_ru
    таблица order by ? что ?
  • https://t.me/clickhouse_ru
    @tephro #204172 05:22 PM, 12 Feb 2021
    ORDER BY Timestamp указан в create table
  • https://t.me/clickhouse_ru
    значит из-за SELECT *
    что если одно поле выбирать?

    >Clickhouse не использует heap sort и/или late materialization?
    ахаха, дело вообще не в этом и это параметрами before_external_sort управляется
  • https://t.me/clickhouse_ru
    @tephro #204174 05:26 PM, 12 Feb 2021
    Если выбирать одно поле, то да, потребление памяти падает на порядок. Отсюда вопрос о late materialization
  • https://t.me/clickhouse_ru
    >о late materialization
    дело не в этом, просто select * ... limit 250 без order by работает?
  • https://t.me/clickhouse_ru
    @tephro #204176 05:27 PM, 12 Feb 2021
    Не пробовал, прямо сейчас нет возможности проверить
  • https://t.me/clickhouse_ru
    @den_crane #204177 05:28 PM, 12 Feb 2021
    КХ выделяет память (буфера по несколько мегабайт) в куче потоков на каждую колонку
  • https://t.me/clickhouse_ru
    @tephro #204178 05:29 PM, 12 Feb 2021
    Хм. Но вне зависимости от того, какие колонки указаны в SELECT, ему ведь нужно прочесть только те, что в WHERE + в OrderBY. На этапе фильтрации. Это 3 колонки
  • https://t.me/clickhouse_ru
    @tephro #204179 05:29 PM, 12 Feb 2021
    Не так?
  • https://t.me/clickhouse_ru
    вы просите SELECT *
    чтобы распаковать содержимое 160 .bin файлов, выделяется 160*10 или на *32 (потоков) буферов по 1МБ , получается 160*10МБ
  • https://t.me/clickhouse_ru
    @den_crane #204181 05:31 PM, 12 Feb 2021
    where и order by тут вообще еще не стояли
  • https://t.me/clickhouse_ru
    @tephro #204182 05:33 PM, 12 Feb 2021
    Подождите. Разве фаза извлечения колонок, указанных в SELECT, начинается не после того, как фазы фильтрации и сортировки завершены? Если б это было так, то для извлечения 250 полных записей не нужно 20ГБ RAM 🙂
  • https://t.me/clickhouse_ru
    эм, вы там 1972 как живете? стримы у нас, все одноврерменно
  • https://t.me/clickhouse_ru
    @tephro #204184 05:34 PM, 12 Feb 2021
    Ну и потребление памяти не как в 1972
  • https://t.me/clickhouse_ru
    @tephro #204185 05:34 PM, 12 Feb 2021
    Ок, я понял
  • https://t.me/clickhouse_ru
    max_threads=1, max_block_size=512
  • @dj_mixer #204187 05:37 PM, 12 Feb 2021
    кстати да, было бы неплохо добавить фичу типа prewhere в order by при наличии лимит и отсутствии group by
    т.е. пайплайн типа prewhere cols -> where + orderby cols -> select cols
  • @dj_mixer #204188 05:37 PM, 12 Feb 2021
    все таки частый случай с этой вашей пагинацией
  • https://t.me/clickhouse_ru
    есть уже 2 FR о том что найти сначала марки order by limit а потом в них заходить
  • https://t.me/clickhouse_ru
    @den_crane #204190 05:41 PM, 12 Feb 2021
    просто КХ не для этого, удивительно что optimize_in_order вообще сделали
  • https://t.me/clickhouse_ru
    как / чем вы проверяете? обновитесь до нормальной 20.8.12 ... что-то
  • https://t.me/clickhouse_ru
    @tephro ↶ Reply to #204180 #204192 05:48 PM, 12 Feb 2021
    Окей. 160 МБ * 32 потока = 5 ГБ. Запрос потребляет порядка 20 ГБ. Для чего остальные 15?
  • https://t.me/clickhouse_ru
    это на чай
  • https://t.me/clickhouse_ru
    @den_crane #204194 05:49 PM, 12 Feb 2021
    set send_logs_level = 'trace'; в студию
  • https://t.me/clickhouse_ru
    зависит от кол-ва колонок (ширины строки) , если 5 полей UIn64 то 14млрд это фигня, если 700 полей общей шириной 5 кб, то это часов 12 может переливаться
  • https://t.me/clickhouse_ru
    сначала нужно понять почему не подходят просто файлы. Т.е. КХ не для хранения хлама.
  • https://t.me/clickhouse_ru
  • @viphunter_real #204198 06:07 PM, 12 Feb 2021
    Добрый вечер коллеги. Задача со звездочкой: есть колонка типа массива куча линий. Есть секция where. Хотелось бы посчитать метрику по всем выбранным линиям и получить скалярное значение метрики. Идея использовать суффиксы State и Merge не работает. Пробовал на первом уровне делать arrayMap(x -> avgState(x)) as lvl1 кх ругается, что не знает колонку х от ламбда функции. Попробывал arrayMap(x -> avgState(clm[x]), arrayEnumerate(clm)) AS lvl1 - кх ругается: Unknown identifier: x there are columns: clm. avgForEach не позволяет потом собрать в скаляр... Функция то не линейная... Есть идеи?
  • https://t.me/clickhouse_ru
    боюсь никто не ответит, я прочитал 3 раза, ничено не понятно. Вы слишком далеко улетели, я например не знаю что такое "скалярное значение метрики"
  • https://t.me/clickhouse_ru
    что такое "типа массива куча линий"
  • Ну в математике скаляр - это вещественное число (размерность = 0) потом идет вектор (размерность 1) потом матрица (размерность 2) и далее тензоры. Ну в общем я хотел бы посчитать например avg([1, 2, 3], [3, 4, 5])
  • https://t.me/clickhouse_ru
    arrayReduce('avg', flatten([[1],[2]])
  • https://t.me/clickhouse_ru
    @den_crane #204203 06:20 PM, 12 Feb 2021
    select arrayReduce('avg', groupArrayArray(a)) from (select [1,2] a union all select [3,4])
  • куча линий в таблице в которой выбирается только некотрые. В таблице есть колонка у, которая есть массив вещественных чисел одной длины. Так вот хотелось бы посчитать одно число которое явлется метрикой по всем значениям в этом выбраных линиях массива.
  • https://t.me/clickhouse_ru
    @den_crane #204205 06:21 PM, 12 Feb 2021
    мы не используем слово линия, пишите уже сразу на англ.
  • спасибо попробую агрегитировать массив в матрицу
  • @viphunter_real #204207 06:22 PM, 12 Feb 2021
    :) а как же чистота языка :)
  • https://t.me/clickhouse_ru
    похоже что нужен avgMap, пример давайте что на входе что нужно на выходе
  • https://t.me/clickhouse_ru
    я в двуязычной провинции живу, мне можно
  • @viphunter_real #204210 06:27 PM, 12 Feb 2021
    есть такой avgMap? в доке не нашел в комбинаторах агрегатных функций...
  • https://t.me/clickhouse_ru
    @124379287 #204211 06:27 PM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    Нету, но можно через суммап попробовать
  • https://t.me/clickhouse_ru
    такое надо по логам КХ смотреть. Что-то странное вы говорите.
  • https://t.me/clickhouse_ru
    это не поможет, это вообще не про репликацию

    тут скорее detach table / attach
  • https://t.me/clickhouse_ru
    вообще, rsync диф несколько раз на ходу , потом остановить КХ и финальный rsync
  • https://t.me/clickhouse_ru
    Подробные логи не были включены. Странно, не странно. А факт на лицо )) дитач/аттач чего? Я же создавал таблицу, как ее дитачить если ее нет?
  • https://t.me/clickhouse_ru
    а в чем ошибка create была ?
  • https://t.me/clickhouse_ru
    @k0st1an #204218 06:44 PM, 12 Feb 2021
    Ее не было. Просто зависло на некоторых репликах при on cluster.
  • https://t.me/clickhouse_ru
    "При этом первая задача была с ошибкой синтаксиса и она так же зависла в процессе выполнения и она так же висит"
  • https://t.me/clickhouse_ru
    @den_crane #204220 06:46 PM, 12 Feb 2021
    или в смысле некоторые ноды ответили с ошибкой, а некоторые НЕ ответили?
  • https://t.me/clickhouse_ru
    @den_crane #204221 06:47 PM, 12 Feb 2021
    есть таблица system.distributed_ddl_queue там может что видно
  • https://t.me/clickhouse_ru
    @den_crane #204222 06:47 PM, 12 Feb 2021
    но если все так то это просто зависание DDLWorker
  • https://t.me/clickhouse_ru
    @den_crane #204223 06:48 PM, 12 Feb 2021
    я вчера накидал кстати небольшую статью https://altinity.atlassian.net/wiki/spaces/CHKB/pages/8486920/DDLWorker
    надо дописать про system.distributed_ddl_queue
  • Работаете на Altinity?
  • https://t.me/clickhouse_ru
    @den_crane #204225 06:52 PM, 12 Feb 2021
    а что в имени не заметно ? "Junior support specialist at Altinity"
  • у какой крутой конфюенс, скорее FAQ, спасибо =)
  • https://t.me/clickhouse_ru
    @kbespalov #204227 06:54 PM, 12 Feb 2021
    Привет.

    Есть условно большая табличка и простой VIEW

    select user_id, count(*) from users group by user_id

    Если я буду выполнять поверх такого VIEW запросы вида

    select from view where user_id = A

    то предикат user_id = A судя по explain syntax будет выполнен на шаге having. то есть сначала выполнится group by, затем уже только фильтр.

    можно ли как-то повлиять на такое поведение?
  • https://t.me/clickhouse_ru
    @kbespalov #204228 06:54 PM, 12 Feb 2021
    В двух словах - хочу спрятать все кишки aggregation merge tree с sumMerge во view
  • https://t.me/clickhouse_ru
    @kbespalov #204229 06:54 PM, 12 Feb 2021
    и дать пользователям простой доступ к таблице
  • микроскоп может и не для этого, но он очень хорош в забивании гвоздей )
  • https://t.me/clickhouse_ru
    это все равно плохо из-за избыточных полей в group by. Что за aggregateFunction
  • https://t.me/clickhouse_ru
    телескоп
  • https://t.me/clickhouse_ru
    @kbespalov #204233 06:56 PM, 12 Feb 2021
    sumState
    anyState
  • 150+ полей с полным набором всего: строки, целые числа, вещественные числа. Все для типо расширенной аналитики
  • @viphunter_real #204235 06:57 PM, 12 Feb 2021
    Ну тогда мы ваши клиенты :)
  • https://t.me/clickhouse_ru
    есть доклад "Забиваем телескопом гвозди, или Нестандартные способы использования ClickHouse."
  • https://t.me/clickhouse_ru
    можно использовать simpleAggregateFunction, там не нужен -Merge
  • да видел даже вроде, но у нас ЕАВ на нем есть... =) так что у нас не хуже
  • https://altinity.atlassian.net/wiki/spaces/CHKB/pages/196980/A+list+of+videos+Russian+lang а сюда не добавили, ай-яй-яй... можно и премии лишить
  • https://t.me/clickhouse_ru
    так все работает, и уже года полтора

    create table test(A Int64, B Float) Engine=MergeTree order by A;
    insert into test select number, 0 from numbers(10000000)
    create view test_view as select A, sum(B) sb from test group by A;

    select * from test_view where A = 42
    Processed 8.19 thousand rows

    select * from test_view where identity(A) = 42;
    Processed 10.00 million rows,
  • https://t.me/clickhouse_ru
    неуспел, той вике 3 дня от роду
  • https://t.me/clickhouse_ru
    @den_crane #204242 07:07 PM, 12 Feb 2021
    Короче я не советую накрывать AggregatingMT вьюхой потому что получаются лишние группировки и чтения лишних колонок
    в случаях

    select a, sum () from
    ( select a,b,c,d, sumMerge() from group by a,b,c,d )
    group a

    это не оптимизировано. Будут прочитаны b,c,d и отгруппированы.
  • из моего списка для коллег можете накинуть дельту
    https://controlc.com/29662a67
  • @vvvjhaq #204244 07:09 PM, 12 Feb 2021
    Добрый вечер. Подскажите плз, для конфига трех ЗК, нужно 3 машины? Нашел статью, разворачивают 3 ЗК на одной машине. Как лушче сделать?
  • https://t.me/clickhouse_ru
    три ЗуКипера нужно для HighAvialabilty

    КХ-зу все равно один зукипер или 7
  • https://t.me/clickhouse_ru
    1. была ошибка синтаксиса и некоторые ноды так и ответили, другие не отвечали и потом запрос отвалился по времени
    2. system.distributed_ddl_queue не очень понял. там есть мой запрос. инициатор тот хост где выполнял, а host_name и host_address почему адреса хоста из другого кластера. кластер тот что нужно. статус Unknown. exception_code: ZOK
    3. за статью спасибо ))
  • https://t.me/clickhouse_ru
    @rjs45 ↶ Reply to #203333 #204248 07:28 PM, 12 Feb 2021
    А чем плох select where userId in (select ...)?
  • @dj_mixer #204251 08:28 PM, 12 Feb 2021
    https://github.com/ClickHouse/ClickHouse/issues/20451 в общем я тут накатал во имя всех пострадавших =)
    Skip parts when materializing TTL for TTL-expressions that are monotonic functions of columns · Issue #20451 · ClickHouse/ClickHouse

    Problem description There is some fundamental problem with current TTL methodology that prevents from using it in production-grade non-cloud environment (when quick elastic resource allocation is n...

  • Проверьте, помогает ли выставление настройки

    async_socket_for_remote = 0
  • https://t.me/clickhouse_ru
    @dzeck ↶ Reply to #204252 #204253 08:36 PM, 12 Feb 2021
    Спасибо, проверю. Откатился пока на двадцатую версию. Там этих проблем нет.
  • @1586623693 #204254 09:46 PM, 12 Feb 2021
    Joined.
  • https://t.me/clickhouse_ru
    @AnKochem #204255 09:48 PM, 12 Feb 2021
    Помогите, пожалуйста. Обновляю КХ с 19.17 на 20.8

    Были таблицы

    CREATE TABLE source
    (
    a Int32,
    b Int32,
    c Nullable(Int32)
    )
    ENGINE = MergeTree
    ORDER BY a

    и

    CREATE TABLE destination
    (
    a UInt64,
    st AggregateFunction(argMax, Int32, Int32)
    )
    ENGINE = AggregatingMergeTree
    ORDER BY a

    и МВ от первой ко второй

    CREATE MATERIALIZED VIEW mv TO destination AS
    SELECT
    a,
    argMaxState(c, b) AS st
    FROM source
    GROUP BY a

    На 19.17 вставка в source работала, но на 20.8 перестала:

    Conversion from AggregateFunction(argMax, Nullable(Int32), Int32) to AggregateFunction(argMax, Int32, Int32) is not supported: while converting source column st to destination column st: while pushing to view default.mv.

    чтобы поправить это попробовал заменить mv на следующую

    CREATE MATERIALIZED VIEW mv TO destination AS
    SELECT
    a,
    argMaxState(coalesce(c, 0), b) AS st
    FROM source
    GROUP BY a

    Теперь если сделать такую вставку в source:

    insert into source values (1,1,1), (1,2,null)

    то в destination логично попадают следующая строка:

    SELECT
    a,
    argMaxMerge(st)
    FROM destination
    GROUP BY a

    ┌─a─┬─argMaxMerge(st)─┐
    │ 1 │ 0 │
    └───┴─────────────────┘

    Однако старая схема в 19.17 дала бы результат

    ┌─a─┬─argMaxMerge(st)─┐
    │ 1 │ 1 │
    └───┴─────────────────┘

    Я нисколько не утверждаю, что поведение в какой-то из версий является багом, просто я что-то не придумал как мне написать Materialized View , чтобы точно сохранить поведение старой схемы в 19.17 ?
  • >argMaxState(c, a) AS st

    >argMaxState(coalesce(c, 0), b) AS st

    а почему a на b поменялось?
  • https://t.me/clickhouse_ru
    @unamedrus #204257 10:01 PM, 12 Feb 2021
    SELECT
    argMax(assumeNotNull(x), y),
    argMax(x, y)
    FROM
    (
    SELECT
    1 AS x,
    1 AS y
    UNION ALL
    SELECT
    NULL AS x,
    2 AS y
    )

    Query id: f33b7565-5d19-40c1-b02c-960728e4e932

    ┌─argMax(assumeNotNull(x), y)─┬─argMax(x, y)─┐
    │ 0 │ 1 │
    └─────────────────────────────┴──────────────┘
  • https://t.me/clickhouse_ru
    Должно было быть изначально b. Прошу прощения, исправил
  • https://t.me/clickhouse_ru
    @unamedrus #204259 10:01 PM, 12 Feb 2021
    Так наоборот должно быть же?
  • https://t.me/clickhouse_ru
    @AnKochem #204260 10:02 PM, 12 Feb 2021
    Вроде бы нет
  • https://t.me/clickhouse_ru
    @unamedrus #204261 10:03 PM, 12 Feb 2021
    Точнее, такой вопрос, "версией" является столбец b?
  • https://t.me/clickhouse_ru
    @AnKochem #204262 10:04 PM, 12 Feb 2021
    Версией? не понял вопрос
    Мы выбираем по значению максимального b - значение из c
  • Т.е. в старой версии вернулось бы 0 же
  • https://t.me/clickhouse_ru
    @unamedrus #204264 10:06 PM, 12 Feb 2021
    Но при этом, хотите скипать Null значения?
  • https://t.me/clickhouse_ru
    @AnKochem #204265 10:06 PM, 12 Feb 2021
    Как раз старая версия скипала бы Null значения
  • https://t.me/clickhouse_ru
    @AnKochem #204266 10:06 PM, 12 Feb 2021
    а при использовании coalsce в новой - Null не скипается
  • https://t.me/clickhouse_ru
    нет, в старой версии Null значение c пропускается..
  • https://t.me/clickhouse_ru
    Ну вы их заменяете честным нулем, вот и не скипает

    SELECT finalizeAggregation(argMaxStateIf(assumeNotNull(x), y, isNotNull(x)))
    FROM
    (
    SELECT
    1 AS x,
    1 AS y
    UNION ALL
    SELECT
    NULL AS x,
    2 AS y
    )

    Грубое решение, но работает (если вам нужно сохранить старый тип данных в таблице агрегаций, иначе лучше пересоздать как DJ показал)
  • а если так создать?
    CREATE TABLE destination
    (
    a UInt64,
    st AggregateFunction(argMax, Nullable(Int32), Int32)
    )
    ENGINE = AggregatingMergeTree
    ORDER BY a;
  • https://t.me/clickhouse_ru
    Ну тогда же туда будут падать нулы? А мне не хочется этого...
  • https://t.me/clickhouse_ru
    Немного не понял, это такое запрос должен быть в Materialized View ?