• 01 September 2017 (96 messages)
  • А как правильнее (ID) или (Date,ID) ?
  • @Nvarchar495 #24688 06:11 AM, 01 Sep 2017
    Или по Dete по любому есть индекс?
  • @ekalinin #24689 06:25 AM, 01 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #24690 07:27 AM, 01 Sep 2017
    привет. не могу сделать quick start на xenial, как можно вылечить? =/
  • https://t.me/clickhouse_ru
  • @ligich #24692 07:30 AM, 01 Sep 2017
    Konstantin Надо сдлеать:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
    а потом ставить кликхаус
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24692 #24693 07:34 AM, 01 Sep 2017
    вроде бы так и делаю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24695 07:35 AM, 01 Sep 2017
    Вопрос по джоинам, я так понял что это не самая сильная сторона кликхауса и лучше дублировать данные чем делать джоины в больших таблицах?
  • https://t.me/clickhouse_ru
    а ключ кто будет прописывать?
  • https://t.me/clickhouse_ru
    @etkee #24697 07:39 AM, 01 Sep 2017
    не -- recv, а --recv
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24696 #24698 07:48 AM, 01 Sep 2017
    какой именно ключ? разве E056BD4 не ключ? =/
  • https://t.me/clickhouse_ru
    @SLASH_CyberPunk #24699 07:49 AM, 01 Sep 2017
    ключ не прописался, вывод немного намекает на это
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24697 #24700 07:49 AM, 01 Sep 2017
    убрал пробел - лучше не стало =(
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24699 #24702 07:49 AM, 01 Sep 2017
    это я вроде понял, я не знаю как это вылечить
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ключ не верный, внимательнее
  • https://t.me/clickhouse_ru
    @etkee ↶ Reply to #24701 #24705 07:52 AM, 01 Sep 2017
    Семь символов. В ключе восемь.
  • https://t.me/clickhouse_ru
    @Sablast #24706 07:53 AM, 01 Sep 2017
    действительно, глаз замылился уже. Спасибо большое!!!
  • @3334085 #24707 08:33 AM, 01 Sep 2017
    А как CREATE MATERIALIZED VIEW работает с ключом?
    Т.е у родительской таблицы есть колонки которые описаны в ключе для быстрой выборки, а в материализованном вью как будет?
  • @3334085 #24708 08:39 AM, 01 Sep 2017
    И вообще вопрос про этот тип, как лучше - делать его или считать налету?
  • https://t.me/clickhouse_ru
    @vladenisov #24709 09:03 AM, 01 Sep 2017
    подскажите, пожалуйста, с чем может быть связана ошибка:
    Received exception from server:
    Code: 194. DB::Exception: Received from host1, IP. DB::Exception: Received from host2, IP. DB::Exception: Password required for user default.
    Появилась после апдейта CH, таблицы реплицируемые, выполняется альтер. На одной реплике отрабатывает, на другой всегда ругается, что нет пароля.
  • Материлизованное представление наполняется тригеррами. Например есть у вас запрос типа select count() as result, date from table group by date. При вставке данных в таблицу table сработает триггер и на сколько я помню запрос будет применен на поступивший блок данных и результат запроса будет записан в материализованное представление.
  • @danton0v #24711 09:19 AM, 01 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Krashuevina #24712 09:34 AM, 01 Sep 2017
    Приветствую. Хочу понять, будет ли работать придуманная конфигурация.
    Условия задачи:
    1.) Есть два датацентра, в каждом - инсталляция CH
    2.) Хотим _в пределах дц_ репликацию между хостами (ReplicatedReplacingMergeTree)
    3.) Хотим писать данные в каждом дц в Distributed таблицу над реплицированными
    4.) Хотим читать данные с обоих дц через Distributed таблицу

    Конфигурация:
    https://gist.github.com/alex-krash/e33aafa298c6918565618c71cc53e8d7
  • https://t.me/clickhouse_ru
    @Sablast #24713 09:56 AM, 01 Sep 2017
    еще 1 нубский вопрос =) есть таблица - в ней 1 столбец список ip в виде int, пытаюсь сделать select с другой таблицей где есть столбцы начало диапазона (int), конец диапазона(int), город. в mysql получается в CH нет. чтяднт?
  • https://t.me/clickhouse_ru
    @Sablast #24714 09:58 AM, 01 Sep 2017
    SELECT list.ip, geo.city
    FROM list, geo
    WHERE list.ip BETWEEN geo.start AND geo.end
    выдает - Unknown indentifier: geo.start
  • https://t.me/clickhouse_ru
    @AndrewKoml #24715 10:00 AM, 01 Sep 2017
    Приветствую. А подскажите, вот на примере, скажем, Метрики. Есть таблица Визитов и Просмотров. Визиты как-то из Просмотров аггрегируются или пишутся отдельно, собираясь в каком-то менеджере сессий?

    Пробую делать подобную аггрегацию через MATERIALIZED VIEW и AggregatingMergeTree, но из-за того, что нужно делать доаггрегацию, работает все очень медленно.
    Идея в том, чтобы записывать только Просмотры, а представление их сразу в Визиты группировало и сохраняло.
  • https://t.me/clickhouse_ru
    @lexore #24716 11:13 AM, 01 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun #24717 11:13 AM, 01 Sep 2017
    О, я это уже спрашивал 🙂
  • https://t.me/clickhouse_ru
    @umaxfun #24718 11:14 AM, 01 Sep 2017
    В итоге мы храним в редисе кеш визитов
  • https://t.me/clickhouse_ru
    @lexore #24719 11:16 AM, 01 Sep 2017
    Заметил интересную фичу - если для генерации строчки password_sha256_hex использовать "echo pwd | sha256sum | tr -d '-'" (без -n, т.е. с символом новой строки на конце), то пароль в одном случае принимается - если делать GET запрос с basic http авторизацией
  • https://t.me/clickhouse_ru
    @AndrewKoml #24720 11:17 AM, 01 Sep 2017
    ну еще вариант есть использовать SummingMergeTree в представлении, сейчас ковыряем этот вариант, но разработчикам то наверняка виднее как правильно делать.
  • https://t.me/clickhouse_ru
    @lexore #24721 11:18 AM, 01 Sep 2017
    POST запрос уже не проходит авторизацию. ну и при указании логина/пароль в GET параметрах тоже не проходит. Вроде не баг, но с толку сбивает.
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #24720 #24722 11:31 AM, 01 Sep 2017
    у нас были извращенцы другого толка 🙂
  • @36508312 #24723 11:33 AM, 01 Sep 2017
    Joined.
  • SELECT list.ip, geo.city, geo.start, geo.end
    FROM list, geo
    WHERE list.ip BETWEEN geo.start AND geo.end

    такой срабатывает?
  • https://t.me/clickhouse_ru
    @ipnix #24725 11:42 AM, 01 Sep 2017
    Может кто сталкивался с подобной ситуацией. clickhouse-server в лог файле полностью не протоколирует большие SELECT-ы. Возможно данное ограничение отключить? Пробовал с различными настройками <logger><level>trace</level></logger> и <logger><level></level>debug</logger>. Например при размере SELECT-а более 100518 символов, запрос протоколируется и обрезается после 100518 символа.
  • @pookieShmukie #24726 11:59 AM, 01 Sep 2017
    Наткнулся на странное поведение.

    SELECT *
    FROM videoStatements

    ┌─learnerId─┬─videoId─┬─Range─┐
    │ 1 │ test │ [0,3] │
    └───────────┴─────────┴───────┘
    ┌─learnerId─┬─videoId─┬─Range──┐
    │ 1 │ test │ [6,10] │
    └───────────┴─────────┴────────┘

    2 rows in set. Elapsed: 0.002 sec.

    :) select range(Range[1]) as fullRange from videoStatements

    SELECT range(Range[1]) AS fullRange
    FROM videoStatements

    ┌─fullRange─┐
    │ [] │
    └───────────┘
    ┌─fullRange─────┐
    │ [0,1,2,3,4,5] │
    └───────────────┘
  • @pookieShmukie #24727 11:59 AM, 01 Sep 2017
    По идее должно быть две строки с [0,1,2] и [0,1,2,3,4,5]
  • @pookieShmukie #24728 12:00 PM, 01 Sep 2017
    SELECT Range[1]
    FROM videoStatements

    ┌─arrayElement(Range, 1)─┐
    │ 0 │
    └────────────────────────┘
    ┌─arrayElement(Range, 1)─┐
    │ 6 │
    └────────────────────────┘
  • @pookieShmukie #24729 12:00 PM, 01 Sep 2017
    Движок Memory
  • @kochetovnicolai #24730 12:03 PM, 01 Sep 2017
    Почему должно получаться [0,1,2] ?
  • @pookieShmukie #24731 12:05 PM, 01 Sep 2017
    Блин...мой косяк. Array indices is 1-based
  • @pookieShmukie #24732 12:05 PM, 01 Sep 2017
    Не знал про это )
  • https://t.me/clickhouse_ru
    @edyya #24733 12:09 PM, 01 Sep 2017
    Народ, кто-нибудь уже пробовал использовать Clickhouse, как источник данных для Tableau?
  • https://t.me/clickhouse_ru
    @dphil #24734 01:36 PM, 01 Sep 2017
    Да-да, а то у нас заказчик хочет Вертику, так как Tableau не работает с CH, а редаш его по интерфейсу не устроил.
  • @serlex777 #24735 01:38 PM, 01 Sep 2017
    Подскажите пожалуйста как суммировать точно флоаты
    А то каждый раз разный результат
  • @ilyas_pro #24736 01:41 PM, 01 Sep 2017
    суммировать флоаты "точно" - никак, храните интом
  • @ilyas_pro #24737 01:42 PM, 01 Sep 2017
    >> А то каждый раз разный результат
    а вот это подозрительно
  • @kochetovnicolai #24738 01:44 PM, 01 Sep 2017
    это нормально. при разном порядке суммирования может получаться разный результат
  • https://t.me/clickhouse_ru
    @count0ru #24739 02:07 PM, 01 Sep 2017
    кто-то проверял, работает ли кластер кх, когда узлы за натом?
  • @AndrewFoma #24740 02:17 PM, 01 Sep 2017
    Joined.
  • @pavel_maksimow #24741 02:24 PM, 01 Sep 2017
    Всем привет. Я новичок в sql. Не создается таблица в бд, подскажите, что не так я указываю в запросе?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #24742 02:26 PM, 01 Sep 2017
    Date DEFAULT "ЗНАЧЕНИЕ"
    https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=default
  • как его правильно указать, ошибка выходит, если так: Date DEFAULT toDate(Date)
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #24744 02:30 PM, 01 Sep 2017
    Date DEFAULT today()
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #24745 02:31 PM, 01 Sep 2017
    Хотя возможно и без скобок сработает
  • @pavel_maksimow #24746 02:33 PM, 01 Sep 2017
    а сейчас, что не так, подскажите пожалуйста
  • https://t.me/clickhouse_ru
    Добавить скобочки
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #24748 02:35 PM, 01 Sep 2017
    Вот пример
    https://github.com/yandex/ClickHouse/blob/1d836b2bf8fef378d47258957ff74ed3a4aff136/dbms/tests/queries/0_stateless/00158_buffer_and_nonexistent_table.sql
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • спасибо
  • @kvachii #24750 03:40 PM, 01 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @captainDino95 #24751 03:48 PM, 01 Sep 2017
    Всем привет, не подскажите, как через tabix csv-файл вставить в таблицу? Пробовала INSERT INTO ads.gender_urls FORMAT CSV gender_urls_result.csv предварительно загрузив файл, пишет
    DB::Exception: Cannot parse input: expected , at end of stream.: (at row 1)
  • https://t.me/clickhouse_ru
    @koset #24752 04:03 PM, 01 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #24714 #24753 05:44 PM, 01 Sep 2017
    ClickHouse не поддерживает такой синтаксис
    https://clickhouse.yandex/docs/ru/query_language/queries.html#select
  • С недавних пор мы поддерживаем DATE как алиас для Date для совместимости.
  • Должен нормально работать. Но я бы не рекомендовал использовать такое сложное решение ради простой задачи.
  • Если писать напрямую в шарды, то проблем нет - данные сразу попадают куда надо.
  • Та самая штука, которую мы сейчас делаем - это и есть point in polygon :)
  • По Date нет полноценного индекса - только min/max значения для отсечения целых кусков данных. Если в запросах будут условия на Date, то надо иметь её в первичном ключе, если нет - то бесполезно. Порядок тоже важен. (ID, Date) лучше, когда выбираете один ID и диапазон Date. Наоборот (Date, ID) лучше, когда выбираете одну Date и множество/диапазон ID.
  • Если нет проблем с производительностью при подсчёте налету,
    или если иначе вам пришлось бы создавать очень много разных MAT. VIEW,
    то лучше считать налету.
  • Работает с ключом ровно так, как вы пропишите в движке таблицы для MAT. VIEW.
    (Для MAT. VIEW можно прописать произвольный движок таблицы.)
  • @3334085 ↶ Reply to #24760 #24761 07:56 PM, 01 Sep 2017
    Хм, у меня исходная таблица - узкая, а конечная - широкая, вот я и думаю как лучше ...
  • https://t.me/clickhouse_ru
    @count0ru ↶ Reply to #24755 #24762 07:59 PM, 01 Sep 2017
    Спасибо за ответ. Все муки из за попытки заставить работать отказоустойчивый кластер clickhouse в kubernetes
  • Если эта ошибка появилась после апдейта ClickHouse, то это значит, что при апдейте были изменены конфиги пользователей (users.xml) и в них как-то изменились права доступа. Хотя конфиг по-умолчанию из пакета разрешает доступ пользователю default без пароля. Можно посмотреть на конкретном сервере, откуда приходит ошибка, почему он не разрешает пользователю default соединиться.

    Кстати, для удобства обновлений, можно держать оригинальные конфиги из пакета без изменений, а все изменения прописывать в отдельных файлах в conf.d, users.d директориях. Так ещё и проще следить за множеством изменений.
  • У нас в следующем релизе будет команда для сброса DNS кэшей
    (Запрос SYSTEM DROP DNS CACHE).
    (По SIGHUP пока не предусмотрено.)
  • Да, такая конфигурация возможна. Я только не понял, вы хотите чтобы разные ДЦ содержали разные данные (были "шардами") или одинаковые (были "репликами"). В зависимости от этого, нужно прописать конфигурацию в remote_servers для "unioned" кластера (в примере прописано как два шарда - это значит, что Distrbuted таблица при SELECT пойдёт в оба ДЦ, выберет в каждом по одной реплике, и объединит разные данные).
  • @shinebell #24766 08:06 PM, 01 Sep 2017
    Алексей, подскажите, а как дела с фичей, которая позволит запрашивать внешние таблицы (из других бд), как таблицы кх, аля fdw ? Вы говорили, что вроде кто-то у вас такое пытается сделать. Возможно, что в ближ перспективе появится ?
  • Да, такой JOIN сделать не получится. Но можно по-другому.
    Специально для работы с диапазонами IP адресов есть словарь ip_trie:
    https://clickhouse.yandex/docs/en/dicts/external_dicts.html#ip-trie
  • Визиты в Метрике вычисляются не из данных в ClickHouse, а с использованием отдельной структуры данных (базы), которая для этого сделана. В ClickHouse пишется результат - лог изменений визитов.

    Это всё потому что считать визиты сложно.
  • Это весьма необычно. Даже трудно предположить - неужели клиент пробует отправить пароль с добавленным символом перевода строки на конце. Разбираться пока не буду.
  • Так и есть. Настройка
    log_queries_cut_to_length

    по-умолчанию, 100000.
    Влияет как на логгирование в текстовый лог сервера, так и на query_log.

    Сделано, чтобы query_log не был слишком уж большим.

    Вы можете увеличить эту настройку по своему усмотрению. users.xml
  • Да, эту фичу ради эксперимента пробует делать сотрудник из другого отдела.
    Пока ничего нет.
  • @Nvarchar495 #24772 08:20 PM, 01 Sep 2017
    Коллеги! Есть много csv файлов какой оптимальный способ загрузки? Неужели clickhouse-client --query=???
  • @milovidov_an #24773 08:25 PM, 01 Sep 2017
    clickhouse-client --query="INSERT INTO table FORMAT CSV"
    весьма оптимально загружает данные, если рассматривать загрузку в один поток.
    Можно быстрее, если запустить несколько таких загрузок параллельно.

    Если файлы маленькие, то можно склеить с помощью cat.
  • Спасибо, Алексей!
  • @Nvarchar495 #24775 08:31 PM, 01 Sep 2017
    А уже выбрали инструмент, где можно выкладывать, такие вот советы и рекомендации. В чате их набралось уже достаточно
  • @milovidov_an #24776 08:32 PM, 01 Sep 2017
    Нет, так и не выбрали.
  • @Nvarchar495 #24777 08:34 PM, 01 Sep 2017
    А что нужно? Мне бы очень хотелось хоть чем то помочь )
  • @Nvarchar495 #24778 08:35 PM, 01 Sep 2017
    Я могу развернуть на pythonanywhere )
  • @milovidov_an #24779 08:37 PM, 01 Sep 2017
    Пока ещё не знаю. Главное - максимальное простое добавление новых Q&A, буквально парой кликов. Поэтому GitHub отпадает.

    Сейчас создал задачу

    Выбрать способ держать на официальном сайте базу вопросов и ответов.

    Требования:
    - максимальное простой способ добавления записи, буквально парой кликов (copy-paste из чата).

    Во вторую очередь:
    - возможность добавления записи пользователями;
    - теги, рейтинг и упорядочивание.
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #24712 #24781 09:35 PM, 01 Sep 2017
    #faq
  • https://t.me/clickhouse_ru
    @umaxfun #24782 09:35 PM, 01 Sep 2017
    Для истории :)
  • https://t.me/clickhouse_ru
    Спасибо за ответ!
    Каждый дц - сам себе шард. Ожидаемое поведение - как вы описали (мёрж результатов выборки из 2 дц)
  • 02 September 2017 (22 messages)
  • https://t.me/clickhouse_ru
    @ipnix ↶ Reply to #24770 #24784 02:16 AM, 02 Sep 2017
    Алексей, спасибо! После добавления опции select-ы начали помещаются в log.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24767 #24785 04:44 AM, 02 Sep 2017
    Алексей, спасибо за объяснение!
  • https://t.me/clickhouse_ru
    @Sablast #24786 05:52 AM, 02 Sep 2017
    подскажите, пожалуйста, (со словарями еще не работал) такая структура правильная?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Sablast #24788 05:53 AM, 02 Sep 2017
    и должен ли тогда словарь сразу появится в КХ по запросу SELECT * FROM system.dictionaries?
  • https://t.me/clickhouse_ru
    @maxlapshin #24789 06:29 AM, 02 Sep 2017
    да, почти сразу появится
  • https://t.me/clickhouse_ru
    @maxlapshin #24790 06:29 AM, 02 Sep 2017
    если будет ошибка в конфиге, кликхаус напишет тебе в лог
  • https://t.me/clickhouse_ru
    @maxlapshin #24791 06:29 AM, 02 Sep 2017
    так что пиши, не стесняйся, ничего не сломаешь
  • https://t.me/clickhouse_ru
    @Sablast #24792 06:54 AM, 02 Sep 2017
    Ошибок нет. Но словарь не появляется =(
  • @milovidov_an #24793 02:20 PM, 02 Sep 2017
    Привет. А можно ли как-то управлять лидер-репликами? Если лидер уходит в "медленный" датацентр, все встаёт колом.
  • @milovidov_an #24794 02:20 PM, 02 Sep 2017
    Привет. Да, недавно сделали.

    https://github.com/yandex/ClickHouse/blob/master/CHANGELOG.md
    ...
    Added new settings for MergeTree engines (the merge_tree section in config.xml):
    ...
    replicated_can_become_leader can prevent a replica from becoming the leader (and assigning merges).
    ClickHouse/ClickHouse

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

  • Можно проверить соответствие пути к файлу и параметру dictionaries_config в config.xml
  • @milovidov_an #24796 05:40 PM, 02 Sep 2017
    То есть надо поставить replicated_can_become_leader в 0 на конкретной реплике, правильно я понял?
  • @milovidov_an #24797 05:40 PM, 02 Sep 2017
    Да. config.xml, в <merge_tree>.
  • https://t.me/clickhouse_ru
    @freeseacher #24798 07:57 PM, 02 Sep 2017
    Господа, 9ый дебиан мимо да ?
  • https://t.me/clickhouse_ru
    @freeseacher #24799 07:57 PM, 02 Sep 2017
    clickhouse-server-base : Depends: libc6 (< 2.24) but 2.24-11+deb9u1 is to be installed
  • https://t.me/clickhouse_ru
    @Sablast #24800 08:05 PM, 02 Sep 2017
    такая ошибка, это неправильно составлен конфиг словаря или сама структура словаря нарушена?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Sablast #24802 08:24 PM, 02 Sep 2017
    ^^ Все победил, проблема была в структуре конфига словаря =)
  • https://t.me/clickhouse_ru
    @Sablast #24803 08:48 PM, 02 Sep 2017
    все таки до конца не выходит разобраться, может кто подсказать как правильно составить запрос к словарю? в идеале на примере ip_trie
  • https://t.me/clickhouse_ru
    @Sablast #24804 09:18 PM, 02 Sep 2017
    как должен выглядить 3 параметр для dictGetString если я хочу в него передать ip адрес?
  • https://t.me/clickhouse_ru
    @Sablast #24805 09:21 PM, 02 Sep 2017
    select ip, dictGetString('geo_dict', 'geoname_id', ip(или что тут дожно быть чтобы заработало)) from list
  • 03 September 2017 (44 messages)
  • https://t.me/clickhouse_ru
    @Har01d ↶ Reply to #24799 #24806 02:14 AM, 03 Sep 2017
    Можно скачать вручную deb-пакеты, распаковать их, и отредактировать зависимость (поставить 2.25 например), запаковать назад, и установить
  • https://t.me/clickhouse_ru
    @Sablast #24807 04:24 AM, 03 Sep 2017
    ура, разобрался со словарями до конца =)
  • https://t.me/clickhouse_ru
    Мне в плейбук... Там так низя.
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24809 11:24 AM, 03 Sep 2017
    Добрый день!
    У меня есть огромная таблица, на 3.5 млрд строк. Но мне нужны данные например только за последний месяц, а там данных на 3-4 месяца. Как мне удалить часть таблицы? Проблема в том что запросы по этой таблице очень медленные и иногда не хватает памяти
  • https://t.me/clickhouse_ru
    @maxlapshin #24810 11:26 AM, 03 Sep 2017
    а почему бы не ограничивать запрос в where created_at_date >
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24811 11:29 AM, 03 Sep 2017
    SELECT
    ad_tag_publisher_id,
    ad_tag_id,
    publisher_id,
    advertiser_id,
    toUInt32(count()),
    toDate('2017-09-02'),
    toDateTime('2017-09-02 12:59:59'),
    geo_country,
    device_type,
    request_type
    FROM statistics.daily_statistics
    WHERE (date_time >= toDateTime('2017-09-02 12:55:00')) AND (date_time <= toDateTime('2017-09-02 12:59:59'))
    GROUP BY
    ad_tag_publisher_id,
    ad_tag_id,
    publisher_id,
    advertiser_id,
    geo_country,
    device_type,
    request_type
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24812 11:29 AM, 03 Sep 2017
    я делаю вот такой вот запрос
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24813 11:29 AM, 03 Sep 2017
    наверное его тормозит group by?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24814 11:33 AM, 03 Sep 2017
    973 rows in set. Elapsed: 438.956 sec. Processed 3.44 billion rows, 222.69 GB (7.83 million rows/s., 507.31 MB/s.)
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24815 11:33 AM, 03 Sep 2017
    вот результат
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24816 11:33 AM, 03 Sep 2017
    вечность)
  • https://t.me/clickhouse_ru
    @maxlapshin #24817 11:34 AM, 03 Sep 2017
    hdd?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24818 11:34 AM, 03 Sep 2017
    да
  • https://t.me/clickhouse_ru
    @maxlapshin #24819 11:34 AM, 03 Sep 2017
    покажи create table
  • https://t.me/clickhouse_ru
    @frisbeeman #24820 11:34 AM, 03 Sep 2017
    А какой индекс?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24821 11:34 AM, 03 Sep 2017
    CREATE TABLE statistics.daily_statistics ( request_id String, ad_tag_publisher_id String, ad_tag_id UInt32, publisher_id UInt32, advertiser_id UInt32, date Date, date_time DateTime, request_type String, geo_country String, device_type String) ENGINE = Distributed(datalayer, \'statistics\', \'daily_statistics_replicated\', rand())
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24822 11:34 AM, 03 Sep 2017
    а, это вьюха
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24823 11:35 AM, 03 Sep 2017
    CREATE TABLE statistics.daily_statistics_replicated ( request_id String, ad_tag_publisher_id String, ad_tag_id UInt32, publisher_id UInt32, advertiser_id UInt32, date Date, date_time DateTime, request_type String, geo_country String, device_type String) ENGINE = ReplicatedMergeTree(\'/clickhouse/tables/{shard}/daily_statistics_replicated\', \'{replica}\', date, request_id, (request_id, ad_tag_publisher_id, ad_tag_id, publisher_id, advertiser_id, date, date_time), 8192)
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24824 11:35 AM, 03 Sep 2017
    вот таблица сама
  • https://t.me/clickhouse_ru
    @frisbeeman #24825 11:35 AM, 03 Sep 2017
    А, если выборка по времени, то date_time дожен быть впереди в индексе
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24826 11:37 AM, 03 Sep 2017
    я понял в чем дело
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24827 11:37 AM, 03 Sep 2017
    если я сделаю
    WHERE (date_time >= toDateTime('2017-09-02 12:55:00')) AND (date_time <= toDateTime('2017-09-02 12:59:59')) >>>AND date = toDate('2017-09-02')<<<
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24828 11:37 AM, 03 Sep 2017
    то выполняется быстро
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24829 11:37 AM, 03 Sep 2017
    за 40 секунд
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24830 11:39 AM, 03 Sep 2017
    получается что если я четко задаю date оно ищет только в рамках того дня
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24831 11:39 AM, 03 Sep 2017
    спасибо!
  • https://t.me/clickhouse_ru
    @maxlapshin #24832 12:06 PM, 03 Sep 2017
    да
  • https://t.me/clickhouse_ru
    @maxlapshin #24833 12:06 PM, 03 Sep 2017
    я поэтому выше написал про created_at_date
  • https://t.me/clickhouse_ru
    @maxlapshin #24834 12:06 PM, 03 Sep 2017
    это кластеризующий индекс
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24835 12:12 PM, 03 Sep 2017
    да, я понял. Спасибо
  • https://t.me/clickhouse_ru
    @maxlapshin #24836 12:40 PM, 03 Sep 2017
    У нас тоже сейчас 3,5 млрд но стирать не собираемся
  • https://t.me/clickhouse_ru
    @maxlapshin #24837 12:41 PM, 03 Sep 2017
    И ssd
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24838 02:15 PM, 03 Sep 2017
    У нас каждый день сейчас добавляется до 500 млн строк
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24839 02:16 PM, 03 Sep 2017
    Но как бы скорость вообще не важна, главное возможность делать запросы
  • А если запрос будет работать две недели? )) Скорость не важна? )
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24841 02:21 PM, 03 Sep 2017
    Ну всеравно пока запрос по 500 млн записей работает меньше минуты и это ок
  • https://t.me/clickhouse_ru
    @maxlapshin #24842 04:00 PM, 03 Sep 2017
    вы неделю работаете что ли? =)
  • https://t.me/clickhouse_ru
    @maxlapshin #24843 04:01 PM, 03 Sep 2017
    блин, вам конечно SSD нужен, но дорого будет
  • https://t.me/clickhouse_ru
    @kirill_butin #24844 04:57 PM, 03 Sep 2017
    а есть какое нибудь элегантное решение для

    bitOr([1,2,3,...]) = 1 | 2 | 3 | ...

    что нибудь типа мапредюса?
  • https://t.me/clickhouse_ru
    @nodermann #24845 06:17 PM, 03 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @nodermann #24846 06:22 PM, 03 Sep 2017
    Привет, у меня миллионы чисел с разным кол-вом знаков после запятой от 0 до 8 знаков, как лучше хранить их в clickhouse? UInt64 с умножением на 100000000? или есть какие то специальные типы которые уже умеют делать умножение/деление при вводе/выводе
    75652477291.04
    11.00046342
    1.01
  • https://t.me/clickhouse_ru
    @feriat #24847 06:24 PM, 03 Sep 2017
    чем Float64 не подойдет?
  • https://t.me/clickhouse_ru
    @nodermann #24848 06:25 PM, 03 Sep 2017
    в документации написано: Не рекомендуется хранить числа с плавающей запятой в таблицах.
  • https://t.me/clickhouse_ru
    @orantius #24849 07:14 PM, 03 Sep 2017
    если вам нужна арифметика без внезапного округления - то лучше велосипед фиксированной точности в целом типе. если это не принципиально - можно хранить float как есть.
  • 04 September 2017 (144 messages)
  • https://t.me/clickhouse_ru
    @388240071 #24850 07:04 AM, 04 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #24851 07:45 AM, 04 Sep 2017
    всем привет! подскажите, при создании словаря появляется ошибка: element dictionary.layout should have exactly one child element
  • https://t.me/clickhouse_ru
    @Sablast #24852 07:45 AM, 04 Sep 2017
    я так понимаю он ругается на разедл <key>
  • https://t.me/clickhouse_ru
    @Sablast #24853 07:46 AM, 04 Sep 2017
    но в key у меня всего 1 атрибут
  • https://t.me/clickhouse_ru
    @maxlapshin #24854 08:26 AM, 04 Sep 2017
    смотри, вот так у меня выглядит словарь, который генерируется внешней системой:
  • https://t.me/clickhouse_ru
    @maxlapshin #24855 08:26 AM, 04 Sep 2017
    <dictionaries>
    <dictionary>
    <name>hostnames</name>
    <source>
    <file>
    <path>/opt/retroview/priv/hostnames.csv</path>
    <format>CSV</format>
    </file>
    </source>
    <lifetime>
    <min>300</min>
    <max>360</max>
    </lifetime>
    <layout><complex_key_hashed/></layout>
    <structure>
    <key>
    <attribute>
    <name>server_id</name>
    <type>String</type>
    </attribute>
    </key>
    <attribute>
    <name>hostname</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    </structure>
    </dictionary>
    </dictionaries>
  • https://t.me/clickhouse_ru
    @maxlapshin #24856 08:27 AM, 04 Sep 2017
    это мапит UUID сервера на хостнейм
  • https://t.me/clickhouse_ru
    @maxlapshin #24857 08:28 AM, 04 Sep 2017
    а у тебя какой словарь?
  • https://t.me/clickhouse_ru
    @Sablast #24858 08:30 AM, 04 Sep 2017
    <dictionaries>
    <dictionary>
    <name>geoip</name>
    <source>
    <file>
    <path>/etc/clickhouse-server/GeoIP2-City-Blocks-IPv4.csv</path>
    <format>CSVWithNames</format>
    </file>
    </source>
    <layout>
    <ip_trie />
    </layout>
    <structure>
    <key>
    <attribute>
    <name>network</name>
    <type>String</type>
    </attribute>
    </key>
    <attribute>
    <name>geoname_id</name>
    <type>UInt64</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>registered_country_geoname_id</name>
    <type>UInt64</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>represented_country_geoname_id</name>
    <type>UInt64</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>is_anonymous_proxy</name>
    <type>UInt8</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>is_satellite_provider</name>
    <type>UInt8</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>postal_code</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>latitude</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>longitude</name>
    <type>String</type>
    <null_value></null_value>
    </attribute>
    <attribute>
    <name>accuracy_radius</name>
    <type>UInt8</type>
    <null_value></null_value>
    </attribute>
    </structure>
    <lifetime>
    <!— Lifetime of dictionary in memory —>
    300
    </lifetime>
    </dictionary>

    </dictionaries>
  • https://t.me/clickhouse_ru
    @Sablast #24859 08:31 AM, 04 Sep 2017
    у меня закралось подозрение, что возможно в моем билд еще нет layout = ip_trie
  • https://t.me/clickhouse_ru
    А в таком случае запрос должен идти от дефолтного юзера или от того, который указан в <remote_servers>?
  • https://t.me/clickhouse_ru
    вполне возможно
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24861 #24862 08:43 AM, 04 Sep 2017
    а где можно найти полный changelog не подскажите?)
  • https://t.me/clickhouse_ru
    @Sablast #24863 09:08 AM, 04 Sep 2017
    если кто может, подскажите, в версии 1.1.54140 уже был ip_trie?
  • @fsite #24864 10:53 AM, 04 Sep 2017
    Joined.
  • @alex_zet #24869 11:09 AM, 04 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @samoylovfp #24871 11:36 AM, 04 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24872 11:41 AM, 04 Sep 2017
    Иногда во время вставки 100к строчек в кликхаус происходит таймаут
    clickhouse error: [999] zkutil::KeeperException: operation timeout, path: /clickhouse/tables/02/daily_statistics_replicated/temp/abandonable_lock-

    INSERT INTO statistics.daily_statistics (request_id,ad_tag_publisher_id,ad_tag_id,publisher_id,advertiser_id,date,date_time,request_type,geo_country,device_type) VALUES (?,?,?,?,?,?,?,?,?,?), ...

    У вас бывают такие проблемы? Как вы их решаете?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #24873 11:42 AM, 04 Sep 2017
    или просто делать ретрай пока не запишется?
  • https://t.me/clickhouse_ru
    @samoylovfp #24874 11:44 AM, 04 Sep 2017
    Добрый день. Имею кликхаус с таблицей ReplicatedMergeTree. С некоторого момента кликхаус на запросы в http-интерфейс стал отвечать
    zkutil::KeeperException: connection loss, path: /clickhouse/tables/sent_notifications/temp/abandonable_lock
    в логах зукипера куча ошибок
    NoNode for /clickhouse/tables/check_state/temp/abandonable_lock-0001360070
    NoNode for /clickhouse/tables/check_state/block_numbers/201708/block-0001211086
    ClickHouse client version 1.1.54226.
    zookeeper version 3.4.6
    Подскажите пожалуйста, куда смотреть и что нажимать, чтобы заработало
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #24863 #24875 11:59 AM, 04 Sep 2017
    нет, примерно в 1.1.54241 появился
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #24798 #24876 12:06 PM, 04 Sep 2017
    официальные пакеты собраны для убунты, и ставить их в дебиан - не самая лучшая идея. Лучше собрать руками.
    Кстати совсем недавно появилась возможность собирать через pbuilder для почти любых дебиантов-убунт.
    https://github.com/yandex/ClickHouse/blob/master/debian/.pbuilderrc
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @freeseacher #24877 12:07 PM, 04 Sep 2017
    да, просто для 8-ки таки работает.
  • https://t.me/clickhouse_ru
    @freeseacher #24878 12:07 PM, 04 Sep 2017
    собрать руками в плейбук не положишь :(
  • https://t.me/clickhouse_ru
    а зачем там sudo ?:)
  • https://t.me/clickhouse_ru
    @proller #24880 12:09 PM, 04 Sep 2017
    потому что pbuilder работает от рута
  • @danton0v #24881 12:11 PM, 04 Sep 2017
    Продолжаем скрещивать Табло с КХ. C CAST разобрались, теперь возникла проблема с подстановкой параметров-дат.
    Есть запрос

    SELECT
    site, date, toString(date) as date1, uniqExact(uid) as uv, uniq(uid) as uv0, count() as vv
    from
    groot3.content_watch
    where
    date>= <Parameters.date_from> and date< <Parameters.date_to>
    group by site, date, toString(date)

    Табло подставляет вместо <Parameters.date_from> дату в виде {d '2017-07-01'} и скармливает получившийся запрос драйверу. Драйвер это не переваривает и кадает в КХ запрос в неизменном виде:

    SELECT
    site, date, toString(date) as date1, uniqExact(uid) as uv, uniq(uid) as uv0, count() as vv
    from
    groot3.content_watch
    where
    date>= {d '2017-07-01'} and date< {d '2017-07-02'}
    group by site, date, toString(date)

    Вот что сами Табло пишут

    For example, the ODBC specification details that dates should be specified in SQL statements by using the syntax: {d 'yyyy-mm-dd'}. This format is then translated by the driver to the proper date syntax of the actual database.
  • https://t.me/clickhouse_ru
    @freeseacher #24882 12:12 PM, 04 Sep 2017
    @alexanderzaitsev можно вас попрсить собирать пакеты и для debian 8/9 в туже репу альтинити ?
  • @fsite #24883 12:20 PM, 04 Sep 2017
    Всем привет! Подскажите с баянистым вопросом, про дубли при репликации. Хочу попробовать на тесте завестись с двумя нодами. Но после инсерта одной записи в Distibuted таблицу получаю две при селекте.
    Конфиг вот такой https://pastebin.com/E1YAypgm
    При этом на нодах меняется только секция macros, а сама таблица создается так:
    CREATE TABLE tesd (...) ENGINE ReplicatedMergeTree('/clickhouse/tables/{slicer_shard}/default/tesd', '{replica}', date, (siteId, date, docUuid), 8192);
  • @3334085 #24884 12:39 PM, 04 Sep 2017
    А в кейсах нельзя агрегировать? т.е если у меня в then есть что-то и это что-то я хочу сделать sum() ?
  • интересно. обычно такая ошибка происходит, если есть несколько тегов <layout> или несколько тегов внутри <layout> ... </layout>. Скопировал конфиг себе, распарсился без ошибок.

    Возможно, в файле конфигурации есть еще что-то? Не дублируется ли конфигурация для словаря?
  • https://t.me/clickhouse_ru
    @Sablast #24886 12:43 PM, 04 Sep 2017
    словарь 1 был, судя по всем проблема в старой версии сервера, буду пробовать на более свежем
  • Можно сделать sumIf вместо case
  • @pookieShmukie #24888 12:45 PM, 04 Sep 2017
    Либо сделать запрос с кейсом, а поверх него уже сделать запрос на агрегацию нужных данных
  • @3334085 ↶ Reply to #24888 #24889 12:46 PM, 04 Sep 2017
    у меня запрос с кейсом делает из узкой таблицы широкую, по сути генерируя столбцы тут по идее sumif не подойдет же?
  • @pookieShmukie #24890 12:47 PM, 04 Sep 2017
    Если вы собираетесь агрегировать по значениям которые определяются в кейсе, то вполне подойдет
  • если бы не умел ip_trie, была бы ошибка "unknown dictionary layout type"
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24891 #24892 12:48 PM, 04 Sep 2017
    странно, сейчас у меня вообще КХ падает при попытке обработать словарь
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #24884 #24893 12:49 PM, 04 Sep 2017
    можно делать case sum() можно делать sum(case ). главное чтобы на пути из select в листья агрегатные функции были один раз. в первом случае case будет работать меньшее число раз.
  • @3334085 ↶ Reply to #24890 #24894 12:49 PM, 04 Sep 2017
    так это мне делать уже в новом запросе? где кейс подзапрос или вместо кейсам?
  • https://t.me/clickhouse_ru
  • Делается типа так select sumIf(...), column from (select с кейсом) group by column
  • на том же конфиге?
  • https://t.me/clickhouse_ru
    @Sablast #24898 12:50 PM, 04 Sep 2017
    да
  • https://t.me/clickhouse_ru
    @Relevance_17 #24899 12:50 PM, 04 Sep 2017
    Joined.
  • @3334085 ↶ Reply to #24893 #24900 12:50 PM, 04 Sep 2017
    Кейсов у меня не один, а много вариант оборачивать его sum'ами я пробовал в разных местах, почему то не получается =(
  • @pookieShmukie #24901 12:51 PM, 04 Sep 2017
    Ну самый простой вариант сделать агрегацию сверху. Скажем так без эспейна :) Хотя с данными поверх запроса с кейсом sumIf не нужен :) Там просто sum и группировка по колонке
  • @pookieShmukie #24902 12:52 PM, 04 Sep 2017
    Что-то я запарил
  • @3334085 ↶ Reply to #24896 #24903 12:52 PM, 04 Sep 2017
    не подойдет, тк у меня узкая таблица в которой есть \название счетчика\ его значение \ устройство\ а мне надо это перевести в вид :
    \устройство\ счетчик 1\счетчик 2\счетчик3\
  • @kochetovnicolai #24904 12:52 PM, 04 Sep 2017
    а, это уже внутри btrie. Значит, конфигурация прочиталась :)
  • @3334085 #24905 12:53 PM, 04 Sep 2017
    Вот такой кейс у меня работает, далее мне нужно сделать sum(r) group by mts
  • @pookieShmukie #24907 12:53 PM, 04 Sep 2017
    Ну тогда sumIf и три разных агрегата через sumIf, типа sumIf(counter = 'counter1...), sumIf(counter = 'counter2...)
  • @3334085 #24908 12:53 PM, 04 Sep 2017
    буду очень благодарен если кто-то поможет =)
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24904 #24909 12:53 PM, 04 Sep 2017
    а куда дальше копать чтобы это взлетело теперь?)
  • @pookieShmukie #24910 12:53 PM, 04 Sep 2017
    И с группировкой по устройству
  • Я бы все-таки попробовал поставить новую версию CH.
    Если можете прислать сам csv словаря, и он не очень большой, я попробую воспроизвести у себя.
  • @3334085 ↶ Reply to #24907 #24912 12:56 PM, 04 Sep 2017
    пытался скормить ему следующую конструкцию - не взял =(

    sumIf(r, "mt like 'pmNoOutgoingPsStreamHsHhoSuccess'")
  • Мне кажется в like нужно добавить по сторонам %
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24911 #24914 12:57 PM, 04 Sep 2017
    словарь ~500mb (база maxmind)
  • @3334085 ↶ Reply to #24913 #24915 12:59 PM, 04 Sep 2017
    неа, ничего из этого не помогает,
    Code: 10, e.displayText() = DB::Exception: Not found column mt like 'pmAborteds' in block. There are only columns: mts, mt, r, e.what() = DB::Exception

    хотя в столбце mt у меня есть это значение...
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #24912 #24916 12:59 PM, 04 Sep 2017
    а зачем у вас кавычки вокруг второго аргумента?
  • @3334085 ↶ Reply to #24916 #24917 01:00 PM, 04 Sep 2017
    Без них

    ode: 43, e.displayText() = DB::Exception: Illegal type String of argument for aggregate function sum, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @orantius #24918 01:01 PM, 04 Sep 2017
    а какой у вас тип у r?
  • sumIf(r, mt like '%pmNoOutgoingPsStreamHsHhoSuccess%')
  • @pookieShmukie #24920 01:02 PM, 04 Sep 2017
    Вот так попробуйте. Я так не делал, но может сработает )
  • @3334085 ↶ Reply to #24918 #24921 01:02 PM, 04 Sep 2017
    тааак, кажется я облажался, там стринг, я на лету могу же его попросить конвертнуть тип да?
  • https://t.me/clickhouse_ru
    @orantius #24922 01:03 PM, 04 Sep 2017
    насчет sum внутри case я немного обманул, вот такой запрос не работает
    SELECT
    caseWithExpression(y, 1, sum(x), count()),
    sum(caseWithExpression(x, 1, 2, 3))
    FROM
    (
    SELECT
    2 AS x,
    1 AS y
    )
    GROUP BY yно вот такая штука работает
    if(y = 1, sum(x), count()),
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #24921 #24923 01:03 PM, 04 Sep 2017
    toInt64(r)
  • https://t.me/clickhouse_ru
    @orantius #24924 01:03 PM, 04 Sep 2017
    у вас там всегда числа?
  • а можете ссылко поделиться, откуда оно скачивается?
    500 mb - это в сжатом виде?
  • @3334085 ↶ Reply to #24924 #24926 01:05 PM, 04 Sep 2017
    да! Ура, работает, спасибо огромное!
  • https://t.me/clickhouse_ru
    @orantius #24927 01:05 PM, 04 Sep 2017
    если у вас там всегда числа, лучше хранить их сразу в виде чисел.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24925 #24928 01:06 PM, 04 Sep 2017
    500 несжатое, сейчас сожму и выложу куда нибудь вместе с конфигом словаря
  • @kochetovnicolai #24929 01:06 PM, 04 Sep 2017
    здорово
  • @3334085 ↶ Reply to #24927 #24930 01:07 PM, 04 Sep 2017
    Это я догадываюсь, но для теста пока и так подойдет я думаю
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #24929 #24931 01:21 PM, 04 Sep 2017
    кинул в личку
  • @Safronau #24932 01:29 PM, 04 Sep 2017
    А вот в целом, будет ли кликхаус без обязательной колонки даты, или ради этой колонки вся база писалась ?
  • https://t.me/clickhouse_ru
    @Sablast #24933 01:29 PM, 04 Sep 2017
    можно взять engine = Log
  • @Safronau #24934 01:30 PM, 04 Sep 2017
    А хочется то merge
  • https://t.me/clickhouse_ru
    @miptgirl #24935 01:32 PM, 04 Sep 2017
    Можно добавить поле DummyDate и писать туда константу "0000-00-00" и использовать движок MergeTree.
  • @ztlpn #24936 01:33 PM, 04 Sep 2017
    Да, будет. Возможно, даже скоро 🙂
  • https://t.me/clickhouse_ru
    @graywolfxxx #24937 02:11 PM, 04 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @ddpechkin #24938 02:37 PM, 04 Sep 2017
  • https://t.me/clickhouse_ru
    @umaxfun #24939 03:10 PM, 04 Sep 2017
  • @zigmundkz #24940 03:36 PM, 04 Sep 2017
    Joined.
  • @zigmundkz #24941 03:38 PM, 04 Sep 2017
    добре вам
  • https://t.me/clickhouse_ru
    @mikhail_bazhenov #24942 03:38 PM, 04 Sep 2017
    Хэй! :)
  • @zigmundkz #24943 03:39 PM, 04 Sep 2017
    есть вопрос
    <clickhouse_remote_servers>
    <kolesa-cluster1>
    <shard>
    <internal_replication>false</internal_replication>
    <replica>
    <host>s1r1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>s1r2</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <internal_replication>false</internal_replication>
    <replica>
    <host>s2r1</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>s2r2</host>
    <port>9000</port>
    </replica>
    </shard>
    </kolesa-cluster1>
    </clickhouse_remote_servers>
  • @zigmundkz #24944 03:39 PM, 04 Sep 2017
    дистребьютед таблица, смотри на мержтри
  • @zigmundkz #24945 03:40 PM, 04 Sep 2017
    хочу добавить еще один шард с репликой, чтобы снизить нагрузку на существующие серваки
  • @zigmundkz #24946 03:40 PM, 04 Sep 2017
    шардится по rand()
  • @zigmundkz #24947 03:41 PM, 04 Sep 2017
    могу просто довешать серваки в конфигах? перешардить не принципиально, главное - нагрузку распределить на запись
  • @emptyname #24948 03:42 PM, 04 Sep 2017
    Добрый день.
    Что-то у меня не работает arrayJoin, после применения к массиву, полученному из splitByChar

    Тип поля по toTypeName Nullable(Array(String))

    в чем может быть проблема?
  • @emptyname #24949 03:42 PM, 04 Sep 2017
    "ARRAY JOIN requires array argument"
  • @emptyname #24950 03:50 PM, 04 Sep 2017
    При попытке скастить в not-nullable массив Cannot convert data from a nullable type to a non-nullable type

    Есть какой-нибудь по-любому workaround?
  • В случае использования реплицированных таблиц, есть возможность перешардировать данные - смотрите раздел “Перешардирование”. Но во многих случаях лучше обойтись без этого. Запросы SELECT отправляются на все шарды, и работают независимо от того, каким образом данные распределены по шардам (они могут быть распределены полностью случайно).

    Правильно ли понимаю, что достаточно дописать новые серваки в конфиг и на этом все?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #24951 #24952 04:19 PM, 04 Sep 2017
    Да. И изменение веса старых
  • Нагрузка при чтении в данный момент не важна, значит можно и весы не менять? Или же лучше уравнять временными весами объем данных по шардам?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #24953 #24954 04:22 PM, 04 Sep 2017
    Это скорее чтоб запись на старые шарды не шла
  • @zigmundkz #24955 04:24 PM, 04 Sep 2017
    Дык нагрузка на отдельный существующий шард на запись снизится с 1/2 общей нагрузки до 1/3. Это то, что я и пытаюсь получить в данный момент.
  • @zigmundkz #24956 04:25 PM, 04 Sep 2017
    Нагрузка на чтение будет на старые шарды существенно выше, это я понимаю.
  • В общем, ясно. Спасибо за коммент.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #24957 #24958 04:28 PM, 04 Sep 2017
    Короче предлагаемый способ расширения это перестать писать на старые шарды и поставить новые
  • https://t.me/clickhouse_ru
    @Civiloid #24959 04:28 PM, 04 Sep 2017
    Читать по прежнему со всех
  • @zigmundkz #24960 04:30 PM, 04 Sep 2017
    Новый шард не справится со всей нагрузкой.
    Думаю на старые два поставить вес по 1, на новый шард вес 2. Через какое-то время, когда примерно объем данных уравняется, выставить одинаковый вес на все шарды.
  • @milovidov_an #24961 06:03 PM, 04 Sep 2017
    Следующий ClickHouse Meetup состоится в Берлине, 5 октября.

    https://www.meetup.com/ClickHouse-Meetup-Berlin/

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

    Участие бесплатно. Необходимо зарегистрироваться:
    https://events.yandex.com/events/meetings/05-10-2017/register/
    ClickHouse Meetup Berlin (Berlin, Germany)

    ClickHouse (https://clickhouse.yandex/) is an open source column-oriented database management system capable of real time generation of analytical data reports using SQL queries.ClickHouse (https://cl

  • None
  • @Nvarchar495 #24963 06:22 PM, 04 Sep 2017
    Коллеги! У меня в таблице куча полей с типом string . учавствуют в условии where. Это сильно бьет по перфомансу?
  • https://t.me/clickhouse_ru
    @rheinx #24964 06:29 PM, 04 Sep 2017
    А where по like? или просто сравнение?
  • @Nvarchar495 #24965 06:31 PM, 04 Sep 2017
    просто where Field ='Word'
  • @garikanet #24966 06:31 PM, 04 Sep 2017
    event_date - используется т/е ключь ?
  • @garikanet #24967 06:33 PM, 04 Sep 2017
    Мы чтобы уйти от строк используем и храним CityHash() - там где можно, типа OS и т/д
  • @Nvarchar495 #24968 06:33 PM, 04 Sep 2017
    Таблица ок 4 яров . date есть, но люди хотят за весь период. я просто думаю надо ли переделывать на словари. или и так норм?
  • @garikanet #24969 06:34 PM, 04 Sep 2017
    Можете словари лучше словари - имхо int лучше чем string
  • @garikanet #24970 06:35 PM, 04 Sep 2017
    Весь периуд - full scan получается )
  • Roman, [04.09.17 18:42]
    "ARRAY JOIN requires array argument"

    Roman, [04.09.17 18:50]
    При попытке скастить в not-nullable массив Cannot convert data from a nullable type to a non-nullable type

    Есть какой-нибудь по-любому workaround?

    Алексей, посоветуете какой-нибудь work around?
  • @Nvarchar495 #24972 06:35 PM, 04 Sep 2017
    А чем лучше то ) быстрее? или место экономится?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #24972 #24973 06:38 PM, 04 Sep 2017
    быстрее. ну и если данные можно уложить в тот же int, то лечше это сделать. как минимум для экономии места
  • Сравнение строк в ClickHouse реализовано достаточно эффективно. Но в любом случае, работа со строками будет менее эффективна, чем с соответствующими Enum-ами или числами. По причине того, что строки надо разжать, десерализовать, пройтись по ним в оперативке при вычислениях. Насколько именно будет разница - трудно заранее сказать. Обычно до нескольких раз в худшем случае.
  • Можно arrayMap(x -> ifNull(x, 0), arr)
  • @emptyname #24976 06:41 PM, 04 Sep 2017
    Через map пробовал , то же ARRAY JOIN requires array argument
  • @emptyname #24977 06:43 PM, 04 Sep 2017
    SELECT arrayJoin(arrayMap(x -> ifNull(x, 0), spl)) FROM (
    select splitByChar(',', splitByChar('|', answers)[5]) spl from Events WHERE ...
    )
  • @milovidov_an #24978 06:46 PM, 04 Sep 2017
    Попробуйте вместо ifNull(x, 0) написать assumeNotNull(x)
  • @emptyname #24979 06:48 PM, 04 Sep 2017
    Не помогает. Вероятно потому что массив, получающийся в результате все равно типа Nullable(Array(String))
  • @kochetovnicolai #24980 06:48 PM, 04 Sep 2017
    возможно,
    SELECT arrayMap(x -> ifNull(x, 0), arrayJoin(spl)) FROM (
    select splitByChar(',', splitByChar('|', answers)[5]) spl from Events WHERE ...
    )
    ?
  • @emptyname #24981 06:49 PM, 04 Sep 2017
    а он тогда разве применит не до arrayMap? Не помогает, в arrayJoin вероятно нельзя отправить Nullable(Array(String))
  • @emptyname #24982 06:49 PM, 04 Sep 2017
    И надо его как-то превратить в не nullable, при том что у меня там всегда значения есть (
  • @kochetovnicolai #24983 06:50 PM, 04 Sep 2017
    да, неправильно сказал
  • @kochetovnicolai #24984 06:57 PM, 04 Sep 2017
    SELECT arrayJoin(spl) FROM (
    select arrayMap(x -> assumeNotNullable(x), splitByChar(',', splitByChar('|', answers)[5])) spl from Events WHERE ...
    )
    ?
  • @emptyname #24985 06:57 PM, 04 Sep 2017
    arrayMap вернет nullable array, так тоже пробовал
  • @kochetovnicolai #24986 07:02 PM, 04 Sep 2017
    а вот такой запрос работает?
    select arrayJoin(vals) from (select ['a', 'b', Null] as vals)
  • @emptyname #24987 07:03 PM, 04 Sep 2017
    ага
  • @kochetovnicolai #24988 07:07 PM, 04 Sep 2017
    а такой ?
    SELECT splitByChar(',', toNullable('1,2,3'))
  • @kochetovnicolai #24989 07:07 PM, 04 Sep 2017
    кстати, какая версия CH?
  • @emptyname #24990 07:08 PM, 04 Sep 2017
    ага, а arrayJoin на него уже не работает
  • @kochetovnicolai #24991 07:08 PM, 04 Sep 2017
    в последней версии не должен :)
  • @emptyname #24992 07:09 PM, 04 Sep 2017
    не, у нас не последняя (
  • @kochetovnicolai #24993 07:09 PM, 04 Sep 2017
    наверное, answers - это nullable строка, и можно попробовать снять с нее каст
  • @kochetovnicolai #24994 07:11 PM, 04 Sep 2017
    SELECT arrayJoin(spl) FROM (
    select splitByChar(',', splitByChar('|', assumeNotNullable(answers))[5]) spl from Events WHERE ...
    )
    ?
  • @emptyname #24995 07:34 PM, 04 Sep 2017
    ооо, точно, не догадался

    Спасибо :)
  • @kochetovnicolai #24996 07:35 PM, 04 Sep 2017
    отлично :)
  • https://t.me/clickhouse_ru
    @Sablast #24997 08:19 PM, 04 Sep 2017
    @kochetovnicolai Спасибо вам еще раз за помощь со словарем, пришлось самому научится собирать пакет под centos, и закончил только сейччас, но оно того стоило, IP-гео парсятся просто чудесно =)
  • @kochetovnicolai #24998 09:38 PM, 04 Sep 2017
    вам спасибо, помогли найти баг
  • 05 September 2017 (165 messages)
  • https://t.me/clickhouse_ru
    @Sablast #24999 06:23 AM, 05 Sep 2017
    а можно както из лога узнать где проблема если КХ ругается при загрузке словаря: Error parsing null_value ?
  • https://t.me/clickhouse_ru
    @natamya #25000 08:05 AM, 05 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @arzonus #25001 08:12 AM, 05 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    Посмотрели – конфиги не менялись, с последними темплейтами они совпадают. В логах на конкретном сервере нет ничего кроме этого:
    2017.09.05 08:24:50.142653 [ 139 ] <Debug> TCPHandler: Connected ClickHouse ClickHouse replica version 1.1.54245, database: local, user: default.
    2017.09.05 08:24:50.164299 [ 139 ] <Error> ServerErrorHandler: Code: 194, e.displayText() = DB::Exception: Password required for user default, e.what() = DB::Exception, Stack trace:
    Не могу понять, правильно ли, что запрос идет от default-юзера, а не от того, что указан в параметрах репликации?
  • @mrmnightt #25003 08:48 AM, 05 Sep 2017
    Конфиг users-preprocessed.xml одинаковый на серверах? Есть подозрение, что они у вас разошлись
  • https://t.me/clickhouse_ru
    у нас только users.xml, и файлы одинаковые, потому что накатываются ансиблом. проверил диффом для уверенности – совпадают.
  • @mrmnightt #25005 09:03 AM, 05 Sep 2017
    Ну *-preprocessed же вроде генерится кликхаусом при применении конфига users.xml или config.xml, их надёжнее сравнивать
  • https://t.me/clickhouse_ru
    а лежать они должны там же, где и обычные конфиги или отдельно?
  • @mrmnightt #25007 09:17 AM, 05 Sep 2017
    я не знаю по каким правилам кладутся эти файлы, но у нас их кликхаус кладет всегда в папку с конфигами users.xml и config.xml, рядом
  • @mrmnightt #25008 09:18 AM, 05 Sep 2017
    про них вот тут можно почитать https://clickhouse.yandex/docs/ru/single/#configuration-files
  • https://t.me/clickhouse_ru
    @vladenisov #25009 09:27 AM, 05 Sep 2017
    спасибо, сейчас буду смотреть, почему файл не создался
  • на данный момент нельзя. разве что закомментировать все null_value в структуре словаря и пробовать добавлять по одному.

    пробдемы с числами менее вероянты, чем со строками. возможно, надо добавить или убавить escape символов
  • https://t.me/clickhouse_ru
    @Sablast #25011 10:05 AM, 05 Sep 2017
    Ясно. Спасибо
  • https://t.me/clickhouse_ru
    разницы нет
  • @3334085 #25013 11:05 AM, 05 Sep 2017
    Подскажите, какой тип данных стоит выбрать, если планируется хранить как числовые данные, так и NULL или массив, т.е возможные варианты данных:
    1) 1636
    2) NULL
    3) 1,3,6,3,7
  • https://t.me/clickhouse_ru
    @rgen3 #25014 11:08 AM, 05 Sep 2017
    Добрый день, подскажите, пожалуйста, в чем может быть ошибка при создании реплицируемой таблицы?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @rgen3 #25016 11:09 AM, 05 Sep 2017
    по идее данные должны сами перекинуться через zk кластер или нужно запускать какую-либо комманду?
  • https://t.me/clickhouse_ru
    @vasya_toropov #25017 11:11 AM, 05 Sep 2017
    Судя по описанию таблиц тут два шарда. Без репликации. Стало быть сами данные никуда не перекинутся.
  • https://t.me/clickhouse_ru
    @vasya_toropov #25019 11:13 AM, 05 Sep 2017
    Если хочется репликации, то должны быть одинаковые первые аргументы и разные вторые.
  • https://t.me/clickhouse_ru
    @rgen3 #25020 11:14 AM, 05 Sep 2017
    а, т.е. указываем {shard1} и clickMaster (на мастере) и {shard2} clickSlave (на слейве)
  • https://t.me/clickhouse_ru
    @rgen3 #25021 11:14 AM, 05 Sep 2017
    типа такого?
  • https://t.me/clickhouse_ru
    @vasya_toropov #25022 11:14 AM, 05 Sep 2017
    Нет. Шард должен быть одинаковый.
  • https://t.me/clickhouse_ru
    @vasya_toropov #25023 11:15 AM, 05 Sep 2017
    Ну и кажется что у вас неправильное использование макросов для подстановки. Так наверное тоже будет работать, но идея вообще другая.
  • https://t.me/clickhouse_ru
    @vasya_toropov #25024 11:16 AM, 05 Sep 2017
    Там суть в том чтобы везде написать {shard} и {replica} а уже в конфигах на конкретных машинах прописать нужные значения.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25013 #25025 11:16 AM, 05 Sep 2017
    а у вас есть разница между числом из первого варианта и массивом длиной в один элемент из третьего?
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25024 #25026 11:17 AM, 05 Sep 2017
    спасибо, сейчас попробую
  • @3334085 ↶ Reply to #25025 #25027 11:19 AM, 05 Sep 2017
    Не понял вопроса =(
  • нужно ли уметь отличать Null от [] и 1636 от [1636] ? если нет, то обычный массив. Иначе, вероятно, придется разбить на 2 колонки.
  • @3334085 ↶ Reply to #25028 #25029 11:20 AM, 05 Sep 2017
    NULL от 0 нужно отличать, если же данных нет и там пустота, то хотелось бы интерпритировать этот как NULL а не 0
  • @kochetovnicolai #25030 11:22 AM, 05 Sep 2017
    в качестве Null можно использовать пустой массив
  • @kochetovnicolai #25031 11:23 AM, 05 Sep 2017
    а в качестве числа - массив из 1 элемента. разумеется, если не неужно различать эти случаи
  • @3334085 ↶ Reply to #25031 #25032 11:24 AM, 05 Sep 2017
    хм, спасибо буду пробовать
  • https://t.me/clickhouse_ru
    @kshvakov #25033 11:29 AM, 05 Sep 2017
    После DETACH/ATTACH partition ClickHouse упал с сегфолтом

    2017.09.05 11:00:53.485950 [ 6 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 246, e.displayText() = DB::Exception: bad size of marks file `/var/lib/clickhouse/data/reports/tmp_reports_advertiser_full/20170903_20170903_30_30_0/raw_clicks.mrk':1803, must be: 2240: (while reading column raw_clicks): (while reading from part /var/lib/clickhouse/data/reports/tmp_reports_advertiser_full/20170903_20170903_30_30_0/ from mark 0 with max_rows_to_read = 8192), e.what() = DB::Exception, Stack trace:

    2017.09.05 11:03:44.809514 [ 28 ] <Error> BaseDaemon: ########################################
    2017.09.05 11:03:44.809557 [ 28 ] <Error> BaseDaemon: (from thread 27) Received signal Segmentation fault (11).
    2017.09.05 11:03:44.809568 [ 28 ] <Error> BaseDaemon: Address: NULL pointer.
    2017.09.05 11:03:44.864195 [ 28 ] <Error> BaseDaemon: 0. clickhouse-server(tc_new+0x80) [0x39b6650]
    2017.09.05 11:03:44.864269 [ 28 ] <Error> BaseDaemon: 1. clickhouse-server(std::_MakeUniq<DB::IMergedBlockOutputStream::ColumnStream>::__single_object std::make_unique<DB::IMergedBlockOutputStream::ColumnStream, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const* const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const* const&, unsigned long&, DB::CompressionMethod&, unsigned long&, unsigned long&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const* const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, char const* const&, unsigned long&, DB::CompressionMethod&, unsigned long&, unsigned long&)+0xed) [0x2dff16d]
    2017.09.05 11:03:44.864294 [ 28 ] <Error> BaseDaemon: 2. clickhouse-server(DB::IMergedBlockOutputStream::addStream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::IDataType const&, unsigned long, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)+0x5ea) [0x2dfc5ba]

    лог https://gist.github.com/kshvakov/5954f73e88b51e314e11938a7d31d783
  • https://t.me/clickhouse_ru
    @Shegloff #25034 11:34 AM, 05 Sep 2017
    привет, может кто в курсе - еще не поправили баг, когда после drop partiton, в реплицированную таблицу заливаешь данные, а они отбрасываются как дубли?
  • @pookieShmukie #25035 12:05 PM, 05 Sep 2017
    Ребят в таблицу типа Buffer писать в 100 потоков по 1 строке за запрос норм? )
  • https://t.me/clickhouse_ru
    @Tanatos #25036 12:10 PM, 05 Sep 2017
    Ребята у меня такая беда, есть шард с 2мя репликами, если реплика перезапускается то у нее меняется айпишник, реплика которая не перезапускалась продолжает стучать в старый айпи, приходится опускать обе реплики для восстановления кто то сталкивался? как победить?
  • Алексей писал, что КХ на пожизненно кеширует DNS. Надо сервер КХ рестартить
  • https://t.me/clickhouse_ru
    обращаться не по ip?
  • @pookieShmukie #25039 12:13 PM, 05 Sep 2017
    На всем кластере
  • Даже если hostname прописан и у hostname сменился айпишник, надо рестартить сервера на кластере, которые работают с этим hostname
  • https://t.me/clickhouse_ru
    @Tanatos #25041 12:14 PM, 05 Sep 2017
    ну писец, прихали
  • @pookieShmukie #25043 12:16 PM, 05 Sep 2017
    Вот собственно ответ на похожий вопрос
  • https://t.me/clickhouse_ru
    @Tanatos #25044 12:23 PM, 05 Sep 2017
    Спасибо, Мде, плохая идея у предыдущего Девапса была CH в контейнерах держать)
  • Хыыы ) Поэтому его уволили :D
  • @emptyname #25046 12:26 PM, 05 Sep 2017
    Добрый день. Подскажите, как к массиву pushнуть значение из колонки такого же типа, что и элементы в массиве? Что-то ничего похожего на push не могу найти
  • @kochetovnicolai #25047 12:31 PM, 05 Sep 2017
    arrayPushBack/arrayPushFront уже лежат в мастере, но в билдах хорошего способа пока нет
  • @kochetovnicolai #25048 12:32 PM, 05 Sep 2017
    вот такой раньше предлагали:
    SELECT
    [1, 2] AS x,
    [3, 4] AS y,
    arrayReduce('groupArrayArray', [x, y]) AS xy
  • @kochetovnicolai #25049 12:34 PM, 05 Sep 2017
    или
    SELECT
    [1, 2] AS x,
    3 AS y,
    arrayReduce('groupArrayArray', [x, [y]]) AS xy
    в данном случае
  • Нормально, так как таблица лежит в памяти. Но может тормозить.
  • Просто у меня много обработчиков выполняют задачи и мне нужно в реальном времени без задержек видеть что творится в обработчиках и хранить собственно историю.
  • @kochetovnicolai #25052 12:41 PM, 05 Sep 2017
    без тестирования сложно сказать. возможно, придется предобрабатывать данные вне CH
  • @TanVD #25053 01:06 PM, 05 Sep 2017
    Только что словил вот этот issue: https://github.com/yandex/ClickHouse/issues/827 Не предполагается update-ов на эту тему?
    Cannot Insert data into ReplicatedMergeTree #827

    (Replicated OutputStream): Block with ID 9125361514582012557_14309323673096342990 already exists; ignoring it (removing part 20170506_20170506_265_265_0) I would like to know if this is normal, and in what scenario will happen?

  • @danton0v ↶ Reply to #24881 #25054 01:12 PM, 05 Sep 2017
    мне написать issue на гитхабе ODBC-драйвера?
  • @fsite #25055 01:14 PM, 05 Sep 2017
    Подскажите плиз, если я заливаю данные в ReplicatedMergeTree таблицу с названием Х, то zk будет распихивать данные по репликам в таблицы с точно таким же названием? и можно ли как-то сделать чтобы на репликах таблицы были названы иначе?
  • https://t.me/clickhouse_ru
    @Felixoid #25056 01:16 PM, 05 Sep 2017
    Наверное, уже видели? @milovidov_an https://habrahabr.ru/company/pvs-studio/blog/337182
    Передаю привет разработчикам компании Yandex

    Приблизительно раз в полгода нам пишет кто-то из сотрудников компании Yandex, интересуется лицензированием PVS-Studio, качает триал и пропадает. Это нормально,...

  • нет, еще не поправили. но задача в процессе
  • прошу прощения, пропустил Ваш прошлый вопрос. ответил в группе
  • @fsite #25059 01:47 PM, 05 Sep 2017
    спасибо большое!
  • https://t.me/clickhouse_ru
    @rgen3 #25060 02:02 PM, 05 Sep 2017
    Подскажите, а для создания простой реплики на 2-х разных серверах также необходимо создавать Distributed таблицу?
  • @kochetovnicolai #25061 02:04 PM, 05 Sep 2017
    ReplecatedMergeTree должно быть достаточно
  • https://t.me/clickhouse_ru
    @rgen3 #25062 02:04 PM, 05 Sep 2017
    Просто я совсем запутался, куда копать:
    Создаю таблицу на мастере
    CREATE TABLE partner.click () ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard1}/_click', 'clickMaster', click_date, id, 8192)
  • https://t.me/clickhouse_ru
    @rgen3 #25063 02:05 PM, 05 Sep 2017
    Создаю таблицу с точно таким же названием на слейве (той же строкой) ожидается, что будет ошибка, что в zk уже существует данный путь, но нет, таблица создается
  • https://t.me/clickhouse_ru
    @rgen3 #25064 02:06 PM, 05 Sep 2017
    при этом, при включении и отключении сервисов zk и мастер и слейв реагируют друг на друга

    Если же я пытаюсь создать CREATE TABLE partner.click () ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard1}/_click', 'clickSlave', click_date, id, 8192), то никакого реплицирования не происходит

    Уже существующие данные должны подтянуться или их нужно залить еще раз?
  • https://t.me/clickhouse_ru
    @fabura #25065 02:08 PM, 05 Sep 2017
    Вместо 'clickSlave' поставьте макрос
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25065 #25066 02:09 PM, 05 Sep 2017
    И на мастере и на слейве соответственно?
  • @kochetovnicolai #25067 02:10 PM, 05 Sep 2017
    должно работать и без макроса. и данные должны сами подтянуться. кластер с зукипиром нормально работает?
  • https://t.me/clickhouse_ru
    @rgen3 #25068 02:13 PM, 05 Sep 2017
    в кластер входит только два сервера один из них должен быть простой репликой

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

    в самом zkCli (на слейве) при ls /clickhouse/tables/01 не выводятся таблицы, которые должны быть там с мастера
  • @kochetovnicolai #25069 02:15 PM, 05 Sep 2017
    а если создать какую-нибудь ноду в зукипере в мастере (/test), это видно на слейве?
  • https://t.me/clickhouse_ru
    @rgen3 #25070 02:18 PM, 05 Sep 2017
    нет, не появилась
  • https://t.me/clickhouse_ru
    @rgen3 #25071 02:20 PM, 05 Sep 2017
    при sync /
    ответом приходит Sync returned 0
  • @kochetovnicolai #25072 02:20 PM, 05 Sep 2017
    ну, наверное, у Вас нету кластера, и зукиперы работают сами по себе
  • https://t.me/clickhouse_ru
    @rgen3 #25073 02:21 PM, 05 Sep 2017
    подскажите, пожалуйста, как создать или где почитать об этом
  • https://t.me/clickhouse_ru
    @rgen3 #25074 02:23 PM, 05 Sep 2017
    Или кластер это вот эти настройки в clickhouse config?
  • @kochetovnicolai #25075 02:24 PM, 05 Sep 2017
    нет, зукипер должен работать независимо от CH
  • https://t.me/clickhouse_ru
    @rgen3 #25076 02:24 PM, 05 Sep 2017
    т.е. настройки кластера должны быть в конфиге zookeepera?
  • @kochetovnicolai #25077 02:25 PM, 05 Sep 2017
    да. наверное, эта статья может помочь: http://zookeeper.apache.org/doc/r3.4.6/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
  • @pookieShmukie #25078 02:26 PM, 05 Sep 2017
    Ребят. В таблице 53к строк, делаю limit 1 и получаю rows_before_limit_at_least = 8192
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25077 #25079 02:27 PM, 05 Sep 2017
    ааа, при указании серверов в zoo.cfg он требует 3-й сервер, у меня только 2, можно ли указать один и тот же сервер дважды в конфигурации?
  • @pookieShmukie #25080 02:28 PM, 05 Sep 2017
    Я так понял КХ считает кол-во оставшихся строк в блоке данных?
  • @pookieShmukie #25081 02:28 PM, 05 Sep 2017
    А не целиком которые под условие попадают
  • @pookieShmukie #25082 02:30 PM, 05 Sep 2017
    В доке сказало "rows_before_limit_at_least - точное число строк, которое получилось бы, если бы не было LIMIT-а", но на деле это не так )
  • можно указать только 2, но смысла будет ровно столько же, сколько и при 1-м
  • @pookieShmukie #25084 02:31 PM, 05 Sep 2017
    Хм...а если добавить with totals, тогда все ок показывает
  • @kochetovnicolai #25085 02:31 PM, 05 Sep 2017
    а group by в запросе есть ? :)
  • @pookieShmukie #25086 02:32 PM, 05 Sep 2017
    Неа, нету
  • @pookieShmukie #25087 02:32 PM, 05 Sep 2017
    Да я просто тестирую эту штуку и делаю запрос из серии select column from table limit 10, 10 format JSON
  • @pookieShmukie #25088 02:32 PM, 05 Sep 2017
    И получаю максимум 8192
  • @kochetovnicolai #25089 02:33 PM, 05 Sep 2017
    в доке написано, что точное будет, если есть group by
  • @pookieShmukie #25090 02:33 PM, 05 Sep 2017
    А если делаю with totals, то получаю корректное значение в виде общего кол-ва строк
  • @pookieShmukie #25091 02:33 PM, 05 Sep 2017
    Аааа, сори, пропустил этот кусок (( Хотел увидеть то, что хотел - увидел ))
  • @pookieShmukie #25092 02:33 PM, 05 Sep 2017
    А остальное пропустил )
  • @kochetovnicolai #25093 02:33 PM, 05 Sep 2017
    with totals, видимо, включает group by по всему
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25083 #25094 02:34 PM, 05 Sep 2017
    Уазал в конфигах адреса серверов, в кластер подтянулась данные, но при создании таблицы на слейве данных нет
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25083 #25095 02:36 PM, 05 Sep 2017
    Все разобрался, большое спасибо! :)
  • @kochetovnicolai #25096 02:36 PM, 05 Sep 2017
    появились? отлично!
  • если я правильно помню, задача в процессе работы, но еще не готова
  • https://t.me/clickhouse_ru
    @rgen3 ↶ Reply to #25096 #25098 02:42 PM, 05 Sep 2017
    да, кластер в zookeeper должен быть обязательно, а warning'и которые zk выкидывает при 2-х серверах, можно игнорировать (хотя странно как-то)
  • @kochetovnicolai #25099 02:43 PM, 05 Sep 2017
    просто, в 2-х серверах зукипера нету смысла. отказоустойчивость для 3-х или 5-и
  • https://t.me/clickhouse_ru
    @rgen3 #25100 02:44 PM, 05 Sep 2017
    А при программном переключении, если вдруг один сервер просто упал, также нет смысла?
  • https://t.me/clickhouse_ru
    @rgen3 #25101 02:44 PM, 05 Sep 2017
    лучше приобрести еще один сервер и работать с кластером из 3?
  • @kochetovnicolai #25102 02:45 PM, 05 Sep 2017
    3, разумеется, лучше :)
  • https://t.me/clickhouse_ru
    @rgen3 #25103 02:46 PM, 05 Sep 2017
    Понял, спасибо))
  • https://t.me/clickhouse_ru
    @ojowoo #25104 02:54 PM, 05 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @maxlapshin #25105 03:49 PM, 05 Sep 2017
    подскажите пожалуйста, каким лучше способом пройтись по длинному списку сессий (есть started_at и closed_at) и получить скажем с получасовой точностью количество онлайн сессий?
  • https://t.me/clickhouse_ru
    @maxlapshin #25106 03:49 PM, 05 Sep 2017
    сделать сначала список из интервалов времени и потом к ним приджойнить список сессий?
  • https://t.me/clickhouse_ru
    @maxlapshin #25107 03:50 PM, 05 Sep 2017
    или есть что-то поумнее?
  • https://t.me/clickhouse_ru
    @orantius #25108 03:50 PM, 05 Sep 2017
    array join timeslots()
  • https://t.me/clickhouse_ru
    @maxlapshin #25109 03:51 PM, 05 Sep 2017
    хорошо пользоваться тем, что делали люди, которым нужно то же самое
  • https://t.me/clickhouse_ru
    @vladimirmyuge #25110 03:53 PM, 05 Sep 2017
    Коллеги, добрый день. Я собираю данные из метрики в хайве и думаю о переходе на кликхаус. Сейчас простая операция select count(*) from занимает 17 минут (1 миллиард строк). Стоит ли ожидать сильного увеличения производительности?
  • @emptyname #25111 03:55 PM, 05 Sep 2017
    в 4 порядка)
  • https://t.me/clickhouse_ru
    @orantius #25112 03:55 PM, 05 Sep 2017
    SELECT count()
    FROM hits_all
    WHERE EventDate = today()

    1 rows in set. Elapsed: 0.359 sec. Processed 11.17 billion rows, 22.34 GB (31.13 billion rows/s., 62.26 GB/s.)
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25113 03:56 PM, 05 Sep 2017
    SELECT count()
    FROM daily_statistics

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

    1 rows in set. Elapsed: 6.660 sec. Processed 4.24 billion rows, 8.48 GB (636.28 million rows/s., 1.27 GB/s.)
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25114 03:57 PM, 05 Sep 2017
    это на hdd
  • https://t.me/clickhouse_ru
    я боюсь, что никак не могу сообразить
  • https://t.me/clickhouse_ru
    @maxlapshin #25116 04:04 PM, 05 Sep 2017
    вот у меня есть sessions: (id, created_at, closed_at)
  • https://t.me/clickhouse_ru
    @maxlapshin #25117 04:05 PM, 05 Sep 2017
    select uniq(id) as count, timeSlots(somedate,7200) as period from sessions array join period where created_at < period and deleted_at > period
  • https://t.me/clickhouse_ru
    @maxlapshin #25118 04:05 PM, 05 Sep 2017
    мне показалось, что нужен такой запрос, но он невалидный
  • https://t.me/clickhouse_ru
    @vladimirmyuge #25119 04:09 PM, 05 Sep 2017
    @orantius @OlehBahinskyi Спасибо!
  • https://t.me/clickhouse_ru
    @vladimirmyuge #25120 04:13 PM, 05 Sep 2017
    @OlehBahinskyi а сколько оперативки у вас?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25121 04:14 PM, 05 Sep 2017
    @vladimirmyuge 32, но занято меньше 2х
  • https://t.me/clickhouse_ru
    @vladimirmyuge #25122 04:16 PM, 05 Sep 2017
    Я в какой-то параллельной реальности... можете посоветовать облако, где наиболее просто развернуть это добро, залить гигов 200 и покрутить? навыков линукса у меня почти 0
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25123 04:18 PM, 05 Sep 2017
    можешь у себя в докере покрутить на локальной машине
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25116 #25124 04:31 PM, 05 Sep 2017
    я имел в виду что-то такое
    SELECT
    ts,
    count()
    FROM
    (
    SELECT
    number AS id,
    toDateTime('2017-09-05 01:02:03') + (id * 1000) AS begin,
    toDateTime('2017-09-05 01:02:03') + (id * 2000) AS end
    FROM system.numbers
    LIMIT 10
    )
    ARRAY JOIN timeSlots(begin, toUInt32(end - begin)) AS ts
    GROUP BY ts
    ORDER BY ts ASC хотя возможно это не совсем то что нужно.
  • https://t.me/clickhouse_ru
    @orantius #25125 04:38 PM, 05 Sep 2017
    через range + arrayMap можно написать то же самое, эта функция была до появления range()
  • https://t.me/clickhouse_ru
    @maxlapshin #25126 04:53 PM, 05 Sep 2017
    Насколько я понимаю, надо нагенерить точек раз в полчаса и к ним приджойнить весь список сессий. Верно?
  • https://t.me/clickhouse_ru
    @catless #25127 05:36 PM, 05 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #25128 05:53 PM, 05 Sep 2017
    привет! подскажите, как к словарю complex_key_hashed обратится по 2 ключам одновременно?
  • @kochetovnicolai #25129 05:55 PM, 05 Sep 2017
    в качестве ключа надо использовать tuple. в словаре 1 ключ, но составной
  • https://t.me/clickhouse_ru
    @Sablast #25130 05:56 PM, 05 Sep 2017
    понял, сейчас поискал еще в русском мануале - там понятнее написано
  • https://t.me/clickhouse_ru
    @Sablast #25131 05:56 PM, 05 Sep 2017
    When using such dictionary, use a Tuple of field values as a key in dictGet* functions. Example: dictGetString('dict_name', 'attr_name', tuple('field1_value', 123)).
  • https://t.me/clickhouse_ru
    @Sablast #25132 05:56 PM, 05 Sep 2017
    При запросе в функции dictGet* в качестве ключа передаётся кортеж. Пример: dictGetString('dict_name', 'attr_name', tuple('string for field1', num_for_field2)).
  • @kochetovnicolai #25133 05:56 PM, 05 Sep 2017
    например:
    select dictGetString('dict', 'attr', (1, 'abcd'))
  • https://t.me/clickhouse_ru
    @Sablast #25134 05:57 PM, 05 Sep 2017
    и соотвтетсвенно можно также ссылаться внутри словаря на словарь, так?
  • @kochetovnicolai #25135 06:02 PM, 05 Sep 2017
    первые 2 аргумента у dictGetT должны быть константными строками. так что не получится, если я правильно понял
  • https://t.me/clickhouse_ru
    @Sablast #25136 06:07 PM, 05 Sep 2017
    я про кортеж, можно вот так сделать:
    select dictGetString('dict', 'attr', tuple(dictGetString('dict2','attr, value), 'abcd')) ?
  • @kochetovnicolai #25137 06:09 PM, 05 Sep 2017
    да, так должно работать
  • https://t.me/clickhouse_ru
    @Sablast #25138 06:12 PM, 05 Sep 2017
    DB::Exception: Key type at position 1 does not match, expected UInt64, found UInt8.
    такая вот ошибка появляется, хотя у меня ни в одном словаре нет UInt8 =|
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25139 06:13 PM, 05 Sep 2017
    сделай toUInt64
  • https://t.me/clickhouse_ru
    @orantius #25140 06:13 PM, 05 Sep 2017
    1 имеет тип uint8
  • https://t.me/clickhouse_ru
    @Sablast #25141 06:27 PM, 05 Sep 2017
    toUint64 помог, я его и раньше пробовал но не на тот ключ, оказалось что обычное число тоже надо обернуть. например: toUInt64(14)
  • https://t.me/clickhouse_ru
    В доке написано что числа вида 1-9 парсятся сначала в UInt8, а потом уже в UInt16 и так далее
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #25142 #25143 06:33 PM, 05 Sep 2017
    к сожалению про это не читал еще
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25144 06:34 PM, 05 Sep 2017
    Советую прочесть всю документацию, это не долго, интересно и много узнаешь про ClickHouse
  • https://t.me/clickhouse_ru
    @Sablast #25145 06:37 PM, 05 Sep 2017
    пытаюсь по мере сил
  • https://t.me/clickhouse_ru
    @Sablast #25146 06:48 PM, 05 Sep 2017
    подскажите еще плз, как такую конструкцию перенести в КХ:
    Select clip.meganame, mark.name
    from clip join clip_mark on clip.id=clip_mark.clip_id
    join mark on clip_mark.mark_id=mark.id
    where mark.mark_type_id = 14
    order by clip.meganame
  • https://t.me/clickhouse_ru
    @Sablast #25147 06:48 PM, 05 Sep 2017
    как не бьюсь со словарям пока не вышло ничего путного =(
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25148 06:51 PM, 05 Sep 2017
    наверное почитай доку сначала
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25149 06:52 PM, 05 Sep 2017
    Уточните структуру талбиц, словарей и пример неработающего запроса
  • https://t.me/clickhouse_ru
    @Sablast #25150 06:59 PM, 05 Sep 2017
    есть таблица stream, в ней поле resource связана со словарем clip по resource, в словаре clip есть аттрибут clip_id связан со словарем clip_mark, в clip_mark есть аттрибут mark_id связан со словарем mark в котором есть аттрибут name
  • https://t.me/clickhouse_ru
    @orantius #25151 06:59 PM, 05 Sep 2017
    в словаре вы можете mark_id в name/type_id расшифровать, но у вас многие ко многим, если считать что mark-clip не меняется, то можно сложить в массив в clip и тогда уже делать запрос.
  • https://t.me/clickhouse_ru
    @Sablast #25152 07:00 PM, 05 Sep 2017
    на выходе надо получить таблицу вида:
    resource | name | count одному resource может соответствовать множество name
  • https://t.me/clickhouse_ru
    @Sablast #25153 07:02 PM, 05 Sep 2017
    пока получилось такое:
    SELECT
    dictGetString('clip', 'meganame', tuple(resource)) AS film,
    tuple(dictGetUInt64('clip_mark', 'mark_id', tuple(dictGetUInt64('clip', 'id', tuple(resource))))) AS Genre
    FROM stream_log
    WHERE date >= '2017-09-01'
    GROUP BY
    film,
    Genre
    LIMIT 50
  • https://t.me/clickhouse_ru
    @Sablast #25154 07:02 PM, 05 Sep 2017
    но он берет для film первое значение Genre а нужно все
  • https://t.me/clickhouse_ru
    @orantius #25155 07:03 PM, 05 Sep 2017
    словарь это такой маппинг по ключу в [одно] значение. а вам нужен джойн
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25156 07:03 PM, 05 Sep 2017
    Создайте БД типа Dirctionary и попробуйте заджойнить словать как таблицу
  • https://t.me/clickhouse_ru
    @Sablast #25157 07:04 PM, 05 Sep 2017
    т.е. все 3 словаря перенести в таблицы?
  • https://t.me/clickhouse_ru
    @Sablast #25158 07:05 PM, 05 Sep 2017
    просто я от этого и ушел т.к. КХ ругался на неизвестный тип join
  • https://t.me/clickhouse_ru
    @orantius #25159 07:06 PM, 05 Sep 2017
    сделайте известный тип
  • https://t.me/clickhouse_ru
    @orantius #25160 07:06 PM, 05 Sep 2017
    в словари уходят когда нужны апдейты/иерархия итд.
  • https://t.me/clickhouse_ru
    @orantius #25161 07:07 PM, 05 Sep 2017
    на обычный sql похож all inner join
  • https://t.me/clickhouse_ru
    @Sablast #25162 07:07 PM, 05 Sep 2017
    ну все 3 словаря посотянно обновляются
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25162 #25164 07:15 PM, 05 Sep 2017
    тогда вам видимо нужен словарь, который работает как multimap.
  • 06 September 2017 (144 messages)
  • https://t.me/clickhouse_ru
    @valikotut #25165 02:09 AM, 06 Sep 2017
    Joined.
  • @tema567 #25166 03:59 AM, 06 Sep 2017
    Joined.
  • @ghostkit #25167 07:46 AM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast #25168 08:41 AM, 06 Sep 2017
    /stat@combot
  • https://t.me/clickhouse_ru
    @osipovnikita #25171 09:31 AM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @ssemiokhin #25172 10:53 AM, 06 Sep 2017
    Всем привет!
    Столкнулся со странной проблемой, сценарий:
    1) есть несколько ReplicatedMergeTree таблиц на кластере из 6 машин,
    2) Подключаюсь к одной из тачек
    3) Выполняю подряд несколько раз select count(*) из распределенной таблицы
    4) Получаю мигающее значение, т.е. если всего, например, 10 записей, то получаю то 10, то 8 записей.

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

    Причем, если я подключаюсь к этой третьей тачке - значение уже не мигает и все ок.

    Я понимаю, что это история про сеть, одна она в принципе стабильна, может какой таймаут увеличить непосредственно в настройках КХ?
  • https://t.me/clickhouse_ru
    @EmperorZark #25173 11:01 AM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @EmperorZark #25174 11:10 AM, 06 Sep 2017
    Привет!
    Столкнулся с неточностью в хелпе. Пришлось по исходникам разбрираться.
    "4. Восстановление в случае потери всех данных:
    ...Создайте в ZooKeeper узел /path_to_table/replica_name/flags/force_restore_data с любым содержимым или выполните команду для восстановления всех реплицируемых таблиц: sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data"

    Было бы хорошо уточнить что это надо делать для каждой из replicated таблиц, указанных в metadata, во вторых путь к узлу не совсем такой - а именно между path_to_table и replica_name есть обязательный узел "/replicas/"
    в итоге путь: /<path_to_table>/replicas/<replica_name>/flags/

    И до копирования metadata пришлось руками вызывать 'create database <db_name>' на все базы, иначе почему-то ничего не виделось.
  • https://t.me/clickhouse_ru
    @iznavi #25175 12:13 PM, 06 Sep 2017
    Joined.
  • @madmanidze #25176 12:34 PM, 06 Sep 2017
    выпал кх с такой ошибкой:
    2017.09.06 12:32:34.870000 [ 1 ] <Error> Application: Resource temporarily unavailable
    2017.09.06 12:32:34.874625 [ 2152 ] <Error> void DB::ReplicatedMergeTreeRestartingThread::run(): std::exception. Code: 1001, type: std::system_error, e.what() = Resource temporarily unavailable

    как понять каких именно ресурсов не хватает?
  • https://t.me/clickhouse_ru
    @maxlapshin #25177 12:41 PM, 06 Sep 2017
    я нашел чудесный пример, который подходит для учета онлайн сессий
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @maxlapshin #25179 12:42 PM, 06 Sep 2017
    наверное надо только поменять range на timeSlots
  • https://t.me/clickhouse_ru
    @maxlapshin #25180 12:44 PM, 06 Sep 2017
    почему-то этот запрос считает явно не то, чего хотелось
  • https://t.me/clickhouse_ru
    @orantius #25181 01:12 PM, 06 Sep 2017
    вроде и так нормально.
  • https://t.me/clickhouse_ru
    @maxlapshin #25182 01:12 PM, 06 Sep 2017
    да, я уже понял
  • https://t.me/clickhouse_ru
    @orantius #25183 01:13 PM, 06 Sep 2017
    просто тут разрешение посекундное, а вы хотели полчаса.
  • https://t.me/clickhouse_ru
    @maxlapshin #25184 01:13 PM, 06 Sep 2017
    нельзя ставить timeSlots, потому что получается нерабочий вывод с сессиями у которых deleted_at - created_at меньше получаса
  • https://t.me/clickhouse_ru
    @maxlapshin #25185 01:13 PM, 06 Sep 2017
    и в итоге получаются бессмысленные цифры типа 140 тыс онлайн
  • https://t.me/clickhouse_ru
    @maxlapshin #25186 01:15 PM, 06 Sep 2017
    поэтому надо брать запрос, который выложил Алексей, брать посекундную точность
  • https://t.me/clickhouse_ru
    @maxlapshin #25187 01:15 PM, 06 Sep 2017
    а потом уже округлять до получаса вторым, внешним запросом
  • https://t.me/clickhouse_ru
    @maxlapshin #25188 01:27 PM, 06 Sep 2017
    черт
  • https://t.me/clickhouse_ru
    @maxlapshin #25189 01:27 PM, 06 Sep 2017
    Code: 69, e.displayText() = DB::Exception: A call to function range would produce 235817246 array elements, which is greater than the allowed maximum of 100000000, e.what() = DB::Exception
  • https://t.me/clickhouse_ru
    @maxlapshin #25190 01:28 PM, 06 Sep 2017
    надо менять подход
  • https://t.me/clickhouse_ru
    @ElenaWie #25191 01:39 PM, 06 Sep 2017
    Можно ли как-то узнать приходили ли новые данные сегодня в таблицу именно со стороны clickhouse ?
  • @kochetovnicolai #25192 01:45 PM, 06 Sep 2017
    можно посмотреть в табличку system.query_log
  • https://t.me/clickhouse_ru
    @ElenaWie #25193 01:47 PM, 06 Sep 2017
    Это в последней версии clickhouse ?
  • https://t.me/clickhouse_ru
    @ElenaWie #25194 01:48 PM, 06 Sep 2017
    У меня такая таблица не существует
  • @kochetovnicolai #25195 01:50 PM, 06 Sep 2017
    ее, оказывается, надо заранее отдельно включить
  • @kochetovnicolai #25196 01:51 PM, 06 Sep 2017
    тогда посмотреть на наличие кусков в system.parts
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #25197 01:52 PM, 06 Sep 2017
    Падает кликхаус в ответ на команду "show tables" :
    1) запускаю сервер docker run —rm -d —name my-clickhouse-server —ulimit nofile=262144:262144 yandex/clickhouse-server
    2) запускаю клиент sudo docker run -it —rm —link my-clickhouse-server:clickhouse-server yandex/clickhouse-client —host clickhouse-server
    3) Получаю:
    ClickHouse client version 1.1.54284.
    Connecting to clickhouse-server:9000.
    Connected to ClickHouse server version 1.1.54284.

    :) show tables

    SHOW TABLES

    Exception on client:
    Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from clickhouse-server:9000, 172.17.0.2

    Connecting to clickhouse-server:9000.
    Code: 210. DB::NetException: Connection refused: (clickhouse-server:9000, 172.17.0.2)
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #25198 01:54 PM, 06 Sep 2017
    кажется нашел ответ
    It means that your CPU doesn't support required instruction set.
    For Yandex pre-built packages, minimal instruction set is SSE 4.2.
    To show supported instruction sets, run cat /proc/cpuinfo.

    You may build ClickHouse by yourself (either on target machine or with explicitly limited instruction set during build) and it will work even on older CPUs.
  • https://t.me/clickhouse_ru
    @Civiloid #25199 01:55 PM, 06 Sep 2017
    @ckcnik ошибка в логах сервера должна быть, но в таком случаи сервер должен умереть с SIGILL
  • примерно так:
    select * from system.parts where toDate(modification_time) = today() and level = 0 and table = ...
  • https://t.me/clickhouse_ru
    @Civiloid #25201 01:55 PM, 06 Sep 2017
    если это какой-нибудь vps/vds - возможно иногда, что провайдер не экспортирует SSE4.2, хотя процессор его поддерживает
  • https://t.me/clickhouse_ru
    @Civiloid #25202 01:56 PM, 06 Sep 2017
    обычно решается вопросом в саппорт
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #25203 01:56 PM, 06 Sep 2017
    хотя всеравно же из контейнера запускаю
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25203 #25204 01:57 PM, 06 Sep 2017
    докер не лимитирует набор инструкций
  • https://t.me/clickhouse_ru
    @Civiloid #25205 01:57 PM, 06 Sep 2017
    он передает ровно то что сказал host
  • https://t.me/clickhouse_ru
    @Civiloid #25206 01:57 PM, 06 Sep 2017
    а вот qemu/kvm/xen могут
  • https://t.me/clickhouse_ru
    @Civiloid #25207 01:57 PM, 06 Sep 2017
    и даже больше - по умолчанию kvm экспортирует только базовый набор инструкций
  • @3334085 #25208 01:58 PM, 06 Sep 2017
    А как лучше хранить вложенные массивы в CH? документация говорит что основном типе таблиц работать не будет
  • https://t.me/clickhouse_ru
    @orantius #25209 02:05 PM, 06 Sep 2017
    хранить в виде массива.
  • https://t.me/clickhouse_ru
    @orantius #25210 02:05 PM, 06 Sep 2017
    а что именно не будет работать по мнению документации?
  • https://t.me/clickhouse_ru
    @kshvakov #25211 02:15 PM, 06 Sep 2017
    дословно вот так
    Массив из элементов типа T. Типом T может быть любой тип, в том числе, массив. Многомерные массивы не рекомендуется использовать, так как их поддержка довольно слабая (например, многомерные массивы нельзя сохранить в таблицы с движком семейства MergeTree).
  • https://t.me/clickhouse_ru
    @orantius #25212 02:25 PM, 06 Sep 2017
    а, то есть вы хотите массивы массивов. да, есть такая проблема.
  • https://t.me/clickhouse_ru
    @122870188 #25213 02:54 PM, 06 Sep 2017
    Господа, подскажите что можно сделать, если хочется результат типа runningDifferrence с группировкой?
  • https://t.me/clickhouse_ru
    @fabura ↶ Reply to #25191 #25214 03:10 PM, 06 Sep 2017
    мы добавляем в таблицу столбец sys_created DateTime DEFAULT now()
  • https://t.me/clickhouse_ru
    @fabura #25215 03:11 PM, 06 Sep 2017
    в нем хранится время попадания записи в кликхаус.
  • https://t.me/clickhouse_ru
    @evikbook #25216 03:18 PM, 06 Sep 2017
    Joined.
  • @3334085 ↶ Reply to #25210 #25217 03:18 PM, 06 Sep 2017
    Массив внутри массива мне нужно...
  • https://t.me/clickhouse_ru
    @sklight #25218 04:48 PM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @sklight #25219 04:48 PM, 06 Sep 2017
    Доброго времени суток
    Кто-нибудь работал с регулярками?
    select match('11 11 11', '[0-9]') возвращает 1, несмотря на пробелы
    Нужна регулярка вида [0-9+-\(\)\s]+
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25219 #25220 05:03 PM, 06 Sep 2017
    Якоря начала конца строки?
  • https://t.me/clickhouse_ru
    @Civiloid #25221 05:03 PM, 06 Sep 2017
    Раз нужно не вхождение, а соответствие
  • https://t.me/clickhouse_ru
    @Civiloid #25222 05:03 PM, 06 Sep 2017
    Вроде в кх re2
  • https://t.me/clickhouse_ru
    @Civiloid #25223 05:03 PM, 06 Sep 2017
    Или я не прав?
  • https://t.me/clickhouse_ru
    @freeseacher #25224 05:09 PM, 06 Sep 2017
    re2 это go же
  • https://t.me/clickhouse_ru
    @sklight #25225 05:10 PM, 06 Sep 2017
    Да, re2. Не приходилось раньше с ними работать.
    Якоря помогли, спасибо)
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25224 #25226 05:11 PM, 06 Sep 2017
    Это библиотека в первую очередь
  • https://t.me/clickhouse_ru
    @Civiloid #25227 05:12 PM, 06 Sep 2017
    Просто в го реализация как в ре2
  • Генерировать range-и посекундно - это тяжело. Лучше поделить время до получаса, затем применить range, а затем домножить обратно.

    Что с timeSlots посмотрю через некоторое время...
  • https://t.me/clickhouse_ru
    @Civiloid #25230 05:13 PM, 06 Sep 2017
    RE2 was designed and implemented with an explicit goal of being able to handle regular expressions from untrusted users without risk. One of its primary guarantees is that the match time is linear in the length of the input string.
  • https://t.me/clickhouse_ru
    @Civiloid #25231 05:13 PM, 06 Sep 2017
    WhyRE2

    RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library. - google/re2

  • https://t.me/clickhouse_ru
    Если сессия открылась и через минуту закрылась а вместо нее новая, то при посекундном рассчете это одна онлайн, а вот при округлении до получаса это две онлайн
  • https://t.me/clickhouse_ru
    @maxlapshin #25233 05:14 PM, 06 Sep 2017
    Нужна одна
  • '^[0-9+-\\(\\)\\s]+$'
  • Да, действительно. Жаль, с посекундными получается тяжёло. Но можно попробовать уменьшить размер блока: SET max_block_size = 8192. А также ограничить максимальную длину сессии: range(least(86400, x))
  • @milovidov_an #25236 05:16 PM, 06 Sep 2017
    Или округли хотя бы до минуты.
  • https://t.me/clickhouse_ru
    @maxlapshin #25237 05:21 PM, 06 Sep 2017
    Я думаю что мне нужна предагрегация и отдельно складывать кол-во онлайн в каждую секунду
  • https://t.me/clickhouse_ru
    @orantius #25238 05:27 PM, 06 Sep 2017
    а читать вы это значение тоже будете каждую секунду?
  • https://t.me/clickhouse_ru
    @arzonus #25239 06:19 PM, 06 Sep 2017
    Добрый день!
    Скажите пожалуйста, можно ли создать такую цепочку таблиц и представлений?
    T(MergeTree) -> MV(AggregateMergeTree) -> V(MergeTreee) -> MV(MergeTree).
  • Так попробуйте :)
  • https://t.me/clickhouse_ru
    @arzonus #25241 06:20 PM, 06 Sep 2017
    Попробовал, в последнем MV не обновляются записи (
  • @milovidov_an #25242 06:22 PM, 06 Sep 2017
    Обновление MV через View не поддерживается.
  • https://t.me/clickhouse_ru
    @arzonus #25243 06:27 PM, 06 Sep 2017
    А MV через MV?
  • https://t.me/clickhouse_ru
    Непонятно как обойтись без посекундной агрегации
  • Должно.
  • MV это по сути таблица, которая наполняется тригерами
  • @pookieShmukie #25247 06:34 PM, 06 Sep 2017
    У меня работало
  • @pookieShmukie #25248 06:34 PM, 06 Sep 2017
    Я травил MV на MV и работало
  • https://t.me/clickhouse_ru
    @maxlapshin #25249 06:34 PM, 06 Sep 2017
    У меня сессии видеопросмотра и когда человек листает каналы, у него идут сессии одна за одной
  • https://t.me/clickhouse_ru
    @maxlapshin #25250 06:34 PM, 06 Sep 2017
    Но при этом онлайн только одна
  • Мы подобную задачу реализуем, только данные в разрезе видео по просмотру. Например пики внимания по таймлауну видео.
  • @milovidov_an #25252 06:35 PM, 06 Sep 2017
    Можно попробовать записывать в базу по одному событию каждую секунду просмотра видео. Потом считать с помощью GROUP BY. Это если не слишком много одновременных просмотров. Хотя кажется, что это не лучше, чем размножать налету с помощью range.
  • Мы сделали по другому. У нас есть эвенты во время просмотра видео: запуск, пауза, сик, завершение просмотра. На каждый эвент у нас кумулятивно собираются промежутки просмотра видео.

    Пример. Видео длительностью в 60 секунд.

    Состояние на момент загрузки страницы
    var currentRange = [];
    var ranges = [];

    Запуск видео.
    var currentRange = [0];
    var ranges = [];

    Пауза на 10 секунде.
    var currentRange = [];
    var ranges = [[0, 10]];

    Сик на остановленном видео с 10 секунды на 30.
    var currentRange = [];
    var ranges = [[0, 10]];

    Запуск видео с паузы на 30 секунде после сика.
    var currentRange = [30];
    var ranges = [[0, 10]];

    Сик на играющем видео с 36 секунды до 50.
    var currentRange = [50];
    var ranges = [[0, 10], [30, 36]];

    Просмотр видео завершен на 60 секунде.
    var currentRange = [];
    var ranges = [[0, 10], [30, 36], [50, 60]];

    Таким образом получаем информацию о том, что обучающимся были просмотрены промежутки видео
    0-10, 30-36, 50-60 секунды.
  • @pookieShmukie #25254 06:39 PM, 06 Sep 2017
    Потом достаточно просто разбираем данные и считаем например количество уникальных пользователей посмотревших кажду секунду видео, сколько раз вообще была просмотрена каждая секунда видео и пр., где точки отказов и пр.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25249 #25255 06:39 PM, 06 Sep 2017
    а может тогда считать не count() а uniq(user_id)?
  • https://t.me/clickhouse_ru
    @orantius #25256 06:40 PM, 06 Sep 2017
    если в таблице сессий есть юзер.
  • https://t.me/clickhouse_ru
    @orantius #25257 06:41 PM, 06 Sep 2017
    тогда подряд идущие сессии сплющит в единицу.
  • https://t.me/clickhouse_ru
    У нас не всегда есть userid и бывает ситуация когда один юзер легитимно смотрит много каналов
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #25245 #25259 06:52 PM, 06 Sep 2017
    Спасибо. Сейчас попробую.
  • https://t.me/clickhouse_ru
    @maxlapshin #25260 06:52 PM, 06 Sep 2017
    Например мозаика
  • https://t.me/clickhouse_ru
    @orantius #25261 06:58 PM, 06 Sep 2017
    да, получается что округление искажает статистику, хоть и непонятно насколько.
  • https://t.me/clickhouse_ru
    @vladenisov #25263 07:11 PM, 06 Sep 2017
    а что произойдет, если удалить одну из папок в data/dbname/tablename у реплицируемой таблицы? недостающие данные подтянутся от другой реплики?
  • Да.
  • @milovidov_an #25265 07:12 PM, 06 Sep 2017
    Это произойдёт при первой попытке что-то прочитать из испорченных/удалённых данных, или, если данные никто не читает - при следующем запуске сервера.
  • https://t.me/clickhouse_ru
    Спасибо.
  • https://t.me/clickhouse_ru
    @vladenisov #25267 07:17 PM, 06 Sep 2017
    Недавно спрашивал про OPTIMIZE TABLE – как-то странно он работает:
    - иногда сразу отвечает OK (меньше секунды задержка), но по графане видно, что процесс оптимизации идет
    - иногда выполняется только на одной из двух реплик (видимо, из-за недостатка места на одной)
    - долгий ответ, пока не закончится процесс оптимизации. Это, я так понимаю, самый нормальный случай
  • @milovidov_an #25268 07:19 PM, 06 Sep 2017
    > - иногда сразу отвечает OK (меньше секунды задержка), но по графане видно, что процесс оптимизации идет

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

    > - иногда выполняется только на одной из двух реплик (видимо, из-за недостатка места на одной)

    Возможно.

    > - долгий ответ, пока не закончится процесс оптимизации. Это, я так понимаю, самый нормальный случай

    Да, это самое ожидаемое для крупного мержа.
  • https://t.me/clickhouse_ru
    @vladenisov #25269 07:21 PM, 06 Sep 2017
    Спасибо.
  • https://t.me/clickhouse_ru
    @kshvakov #25270 07:23 PM, 06 Sep 2017
    Всем привет, у нас есть кейс когда мы делаем detach в одной таблице и перекладываем партиции в другую после чего делаем attach, т.к. в detached складываются не только "отцепленные" партиции, но и битые куски, мы иногда напарываемя на то что мы их синкаем и attach непроходит. Как можно прочекать партиции в detached чтоб синхронизировать только валидные или как можно обезопасить себя от подобного поведения ?
  • @milovidov_an #25271 07:24 PM, 06 Sep 2017
    Битые должны быть под именем broken_*, ignored_*, unexpected_*...
  • https://t.me/clickhouse_ru
    @kshvakov #25272 07:30 PM, 06 Sep 2017
    Спасибо, с этим понятно, еще мы вот такую ошибку словили
    2017.09.05 11:01:39.052615 [ 26 ] <Error> executeQuery: Code: 228, e.displayText() = DB::Exception: /var/lib/clickhouse/data/reports/advertiser_full/detached/20170903_20170903_30_30_0/raw_clicks.mrk has unexpected size: 1803 instead of 2240, e.what() = DB::Exception (from 192.168.199.21:56144) (in query: ALTER TABLE "reports"."advertiser_full" ATTACH PARTITION 201709), Stack trace:
    полный лог
    https://gist.githubusercontent.com/kshvakov/5954f73e88b51e314e11938a7d31d783/raw/3e8402d30a035123813cb09ee741559e95663f4c/ch_segfault.log
  • @milovidov_an #25273 07:33 PM, 06 Sep 2017
    В логе всё плохо. А версия сервера какая?
  • https://t.me/clickhouse_ru
    @kshvakov #25274 07:33 PM, 06 Sep 2017
    v1.1.54284
  • @milovidov_an #25275 07:35 PM, 06 Sep 2017
    Мы пока что думаем, что это хорошая версия. Но что-то не так. В логе две проблемы: 1. Откуда-то появился кусок с неправильными данными. 2. sefgault.
    По трейсу источник проблемы не удаётся понять. Насколько это воспроизводимо?
  • https://t.me/clickhouse_ru
    @kshvakov #25276 07:37 PM, 06 Sep 2017
    Такая ошибка 1 раз была, операция detach/attach достаточно частая
  • https://t.me/clickhouse_ru
    @kshvakov #25277 07:41 PM, 06 Sep 2017
    Сделаю логирование чексум того что мы отцепили и пытаемся прицепить, чтоб если еще раз выпадет было понятно - либо при перемещении что-то сломалось, либо действительно сам кусок с неправильными данными был
  • https://t.me/clickhouse_ru
    @kotchuprik #25278 07:46 PM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kotchuprik #25280 08:00 PM, 06 Sep 2017
    Ребят, всем привет, есть вопрос. Не знаю, как решить средствами КХ.

    Есть таблица для ивентов вида:

    (
    ID UInt32
    Event String
    GUID String
    Path String
    IP UInt32
    UserID UInt32
    TrackedDate Date
    )

    GUID — идентификатор юзера в браузере (кука), Event — что произошло (page или image), Path — урл события, UserID — некий параметр для группы.

    У меня есть задача — получить все ивенты с Path = %success% с Event = page` для которых есть другой Event = image. собственно это решается достаточно легко:

    SELECT *
    FROM analytics.EventTrack
    WHERE (UserID = 92) AND (Event = 'page') and (Path like '%onepage/success%') AND (TrackedDate >= toDate('2017-09-01')) AND GUID IN (
    SELECT GUID
    FROM analytics.EventTrack
    WHERE (UserID = 92) AND (Event = 'image') AND (TrackedDate >= toDate('2017-09-01'))
    )

    Есть ситуация, когда пользователь сменил браузер, то есть у него может быть два GUID, но одинаковый IP. В реляционной БД я бы сделал алиас для таблицы и в сабквери бы сверял IP и дату (допустим, не больше суток, потому что динамический айпи, все дела).

    Как сделать в КХ, понятия не имею. Были мысли пробовать собирать IP адреса с датами в Memory таблицу (не работал ранее). Но правильно ли это?
  • https://t.me/clickhouse_ru
    @kotchuprik #25281 08:01 PM, 06 Sep 2017
    так, сорри про подсветку кода, получилось так себе, но лучше, чем просто плейном
  • У нас сейчас похожая история со списком пользователей имеется. Есть определенная бизнес-логика по которой собирается конечный список пользователей по которым агрегировать данные. Мы собираем список, в TSV файлик и вместе с select запросом на сервер в виде временной таблицы. Работает замечательно.
  • @pookieShmukie #25283 08:10 PM, 06 Sep 2017
    Но в вашем случае я полагаю таблица может быть огромная
  • @pookieShmukie #25284 08:10 PM, 06 Sep 2017
    Я бы попробовал подключить словарь и сделать его таблицей
  • https://t.me/clickhouse_ru
    @kotchuprik #25285 08:11 PM, 06 Sep 2017
    не, не сильно )
  • @pookieShmukie #25286 08:11 PM, 06 Sep 2017
    Не уверен на счет производительности, т.к. у меня на таких экспериментах при наличии > 2кк строк был лаг примерно в секунду
  • https://t.me/clickhouse_ru
    @kotchuprik #25287 08:11 PM, 06 Sep 2017
    1 секунда для меня допустимо )
  • https://t.me/clickhouse_ru
    @kotchuprik #25288 08:11 PM, 06 Sep 2017
    там в среднем будет порядка 1000-2000 ip, потому что фильтр идет по типу ивента (он достаточно редкий) и юзеру + дата )
  • @pookieShmukie #25289 08:12 PM, 06 Sep 2017
    Ну тогда можете попробовать подключить внешнюю таблицу в виде словаря и сделать create table dates_ips engine = Dictionary(dict_name)
  • @pookieShmukie #25290 08:12 PM, 06 Sep 2017
    Ну либо как вариант слать файлик в виде временной таблицы на каждый запрос
  • https://t.me/clickhouse_ru
    @kotchuprik #25291 08:12 PM, 06 Sep 2017
    ага, спасиб. сейчас почитаю
  • https://t.me/clickhouse_ru
    @kotchuprik #25292 08:12 PM, 06 Sep 2017
    временную таблицу в памяти из КХ разве нельзя создать?
  • @pookieShmukie #25293 08:12 PM, 06 Sep 2017
    У меня даже 50к строк с идентификаторами достаточно быстро доставляются и запросы отрабатывают очень быстро
  • @pookieShmukie #25294 08:13 PM, 06 Sep 2017
    Она создается автоматически при получении файла при select запросе
  • @pookieShmukie #25295 08:13 PM, 06 Sep 2017
    Сейчас дам ссылку на доку
  • https://t.me/clickhouse_ru
    @kotchuprik #25296 08:13 PM, 06 Sep 2017
    ааа
  • https://t.me/clickhouse_ru
    @kotchuprik #25297 08:13 PM, 06 Sep 2017
    спасибо, буду благодарен!
  • @pookieShmukie #25298 08:13 PM, 06 Sep 2017
    Можно временную таблицу создать и писать туда данные, но есть вероятность их потерять при падении сервера
  • @pookieShmukie #25299 08:13 PM, 06 Sep 2017
    И придется откуда то наполнять при включении сервера
  • https://t.me/clickhouse_ru
    @kotchuprik #25300 08:14 PM, 06 Sep 2017
    эти данные нужны только на момент выборки (отправки запроса по API)
  • https://t.me/clickhouse_ru
    @kotchuprik #25301 08:14 PM, 06 Sep 2017
    то есть я генерирую отчетики на основе таблицы
  • https://t.me/clickhouse_ru
    @kotchuprik #25302 08:14 PM, 06 Sep 2017
    ничего криминального )
  • @pookieShmukie #25304 08:16 PM, 06 Sep 2017
    Ну у нас похожая ситуация. Когда например из 10к пользователей данные нужно выдать только по 200 пользователям в силу того, что к другим данным пользователь делающий запрос доступа не имеет. Приходится делать кучи проверок, вываливать список в файл и слать на сервер.
  • https://t.me/clickhouse_ru
    @kotchuprik #25305 08:17 PM, 06 Sep 2017
    ага-ага
  • https://t.me/clickhouse_ru
    @kotchuprik #25306 08:17 PM, 06 Sep 2017
    пошел копать )
  • https://t.me/clickhouse_ru
    @kotchuprik #25307 08:17 PM, 06 Sep 2017
    благодарю
  • https://t.me/clickhouse_ru
    @r1000ru #25308 08:18 PM, 06 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25280 #25309 09:47 PM, 06 Sep 2017
    я бы делал внешний словарь, который содержит текущую проклейку пользователей в виде guid-> id связной компоненты склейки, и отдельным процессом лопатил эти же логи на предмет одинаковых ip или еще какая логика вам в голову придет. словарь потом можно использовать двумя способами, 1. при вставке данных забирать в события текущее состояние склейки 2. при чтении забирать последнее наиболее актуальное состояние.

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

    дальше, если вы будете шардировать хранение, вам желательно организовать данные так, чтобы объединение результатов на шардах происходило как можно позже, например чтобы джойн был локальным на шарде. это значит что данные должны шардироваться так, чтобы история одного человека попадала в одну машину. это вряд ли получится, если например у вас для guid динамическое объединение в одного человека. это не значит что так не надо делать, просто надо понимать последствия. хотя если у вас id события int32, то возможно вам это не нужно. и ip только v4.

    в целом задача про последовательности событий в реляцинном случае обычно включает в себя джойн большой таблицы на саму себя по ключу с большой кардинальностью, и нормально не работает. но возможно у вас все не так плохо.
  • https://t.me/clickhouse_ru
    @kotchuprik #25311 10:13 PM, 06 Sep 2017
    > в целом задача про последовательности событий в реляцинном случае обычно включает в себя джойн большой таблицы на саму себя по ключу с большой кардинальностью, и нормально не работает. но возможно у вас все не так плохо.

    именно так сейчас и почти доделал 😄
  • https://t.me/clickhouse_ru
    @kotchuprik #25312 10:13 PM, 06 Sep 2017
    а за словарь спасибо, я его тоже хочу пощупать
  • https://t.me/clickhouse_ru
    @kotchuprik #25313 10:13 PM, 06 Sep 2017
    пока шардирования нет. отчет генерируется, все ок )
  • https://t.me/clickhouse_ru
    @kotchuprik #25314 10:14 PM, 06 Sep 2017
    спасибо за столь развернутый ответ! очень интересное решение, попробую
  • 07 September 2017 (62 messages)
  • @lexa_work #25317 04:26 AM, 07 Sep 2017
    Коллеги, доброго времени суток.
    Мне кажется, где-то тут проскакивала информация, что при определенных обстоятельствах в ClickHouse, начинает разрастаться размер ZK snapshort. Можете скинуть ссылку на обсуждение/детали?
  • @lexa_work #25318 04:26 AM, 07 Sep 2017
    похоже у меня это случилось
  • @lexa_work #25319 04:26 AM, 07 Sep 2017
    сегодня ZK навернулся и потянул за собой другие сервисы (кроме CH)
  • https://t.me/clickhouse_ru
    @kshvakov #25320 04:49 AM, 07 Sep 2017
    поломали в 1.1.54276 поправили в 1.1.54284 https://github.com/yandex/ClickHouse/blob/master/CHANGELOG.md
    ClickHouse/ClickHouse

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

  • @lexa_work #25321 05:22 AM, 07 Sep 2017
    хм... у меня 1.1.54245
    значит не то
  • @lexa_work #25322 05:23 AM, 07 Sep 2017
    снапшет ZK ~2G, кто-то знает, как найти основного "потребителя" места?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #25322 #25323 06:03 AM, 07 Sep 2017
    du -hcs ./* | sort -h
  • @lexa_work #25324 06:03 AM, 07 Sep 2017
    я не про файловую систему
  • @lexa_work #25325 06:03 AM, 07 Sep 2017
    я про znode
  • @lexa_work #25326 06:04 AM, 07 Sep 2017
    какие ветки в ZK делают в клад в этот снапшет
  • @lexa_work #25327 06:04 AM, 07 Sep 2017
    или эта командя для zkcli?
  • https://t.me/clickhouse_ru
    @rheinx #25328 06:05 AM, 07 Sep 2017
    Ааа, типо внутри ZK, ок понял.
  • @430134182 #25329 08:27 AM, 07 Sep 2017
    Всем добрый день! Я правильно понимаю, что чтобы сменить тип одной колонки с Int32 на UInt32, например, необходимо создать новую таблицу с измененным типом этой колонки и INSERT'ить в нее данные ?
  • https://t.me/clickhouse_ru
  • @430134182 #25331 08:39 AM, 07 Sep 2017
    ok, спасибо
  • https://t.me/clickhouse_ru
    @peerclick #25332 08:56 AM, 07 Sep 2017
    Добрый день всем . Есть новости по возможности обновления данных и удалении ? Или может в тестовых сборках что есть ?
  • @garikanet #25333 09:01 AM, 07 Sep 2017
    Конец года - начало 18, вроде в roadmap
  • DB::Exception: ALTER of key column column_name must be metadata-only.
  • @430134182 #25335 09:08 AM, 07 Sep 2017
    нет возможности модифицировать первичный ключ...
  • @garikanet #25336 09:14 AM, 07 Sep 2017
    Подскажите по AggregateState

    Задача: выгрузить из CH пользователей который - сделали то-то и показывать им что-то.
    Идея: если взять AggregateState : uniqHLL12State или uniqCombinedState или что-то другое на фильтре Блума, передать это значение в рекламную сеть на Java - тогда если повторить алгоритм hhl12/... на java - можно быстро отвечать входит пользователь в множеcтво или нет ( с погрешностью)

    Как думаете эта идея будет работать или в каком направлении копать?
    Может кто то партировал CH алгоритмы вхождение уников на Java ?
  • https://t.me/clickhouse_ru
    @pulyavin #25337 09:18 AM, 07 Sep 2017
    Joined.
  • @pookieShmukie #25338 09:26 AM, 07 Sep 2017
    А зачем в java это обрабатывать? оО Стейт все равно может жирный получить, либо можно поверх запроса который стейт собирает просто сделать каунт с фильтром по конкретному пользователю
  • @pookieShmukie #25339 09:26 AM, 07 Sep 2017
    И портируй не портируй стейт куда либ, данных меньше читаться не будет
  • @pookieShmukie #25340 09:27 AM, 07 Sep 2017
    А просто по хэш таблице проверить в Java вхождение я не вижу смысла ) можно запросов поверх проверить...быстрее будет (в плане не надо будет ничего портировать и пилить костыли)
  • @garikanet #25341 09:42 AM, 07 Sep 2017
    У нас рекламные сервера на Java - которые знать не знают про CH и что в нем хранится ( т/е они не читают из него данные) работаю с ооочень маленьким набором данных.

    Есть внешний тулл выполняет запрос в CH - получает +-300М UUID, далее получаем uniqHLL12State - и сохраняет только этот State - т/е пару килобайт и передает их рекл. серверам
    Идея-
    Далее когда поступает запрос от uuid1 или uuid2 мы проверяем входит пользователь в этот State или нет

    Проверить можно через добавление в элемента в hhlState - если cout изменился то да... или нет...
  • @garikanet #25342 09:43 AM, 07 Sep 2017
    Сейчас используем фильтры Блума - но хочется совместить с CH
  • https://t.me/clickhouse_ru
    @snowlimur #25344 10:15 AM, 07 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #25275 #25345 10:20 AM, 07 Sep 2017
    Сегодня опять упали с сегфолтом, но тут дело до перемещения партиций вообще не дошло, все что есть в логах

    2017.09.07 10:08:17.258574 [ 28 ] <Error> BaseDaemon: ########################################
    2017.09.07 10:08:17.272317 [ 28 ] <Error> BaseDaemon: (from thread 27) Received signal Segmentation fault (11).
    2017.09.07 10:08:17.272364 [ 28 ] <Error> BaseDaemon: Address: 0x3f7237783
    2017.09.07 10:08:18.965770 [ 28 ] <Error> BaseDaemon: 0. clickhouse-server(DB::ColumnVector<unsigned int>::insertData(char const*, unsigned long)+0x16) [0x15b4a26]
    2017.09.07 10:08:18.965913 [ 28 ] <Error> BaseDaemon: 1. clickhouse-server(void DB::Aggregator::convertToBlockImplNotFinal<DB::AggregationMethodConcat<TwoLevelHashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> > >, HashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> > >(DB::AggregationMethodConcat<TwoLevelHashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> > >&, HashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> >&, std::vector<DB::IColumn*, std::allocator<DB::IColumn*> >&, std::vector<DB::PODArray<char*, 4096ul, Allocator<false>, 15ul>*, std::allocator<DB::PODArray<char*, 4096ul, Allocator<false>, 15ul>*> >&, std::vector<unsigned long, std::allocator<unsigned long> > const&) const+0x99) [0x3132d29]
    2017.09.07 10:08:18.965963 [ 28 ] <Error> BaseDaemon: 2. clickhouse-server(void DB::Aggregator::writeToTemporaryFileImpl<DB::AggregationMethodConcat<TwoLevelHashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> > > >(DB::AggregatedDataVariants&, DB::AggregationMethodConcat<TwoLevelHashMapTable<StringRef, HashMapCellWithSavedHash<StringRef, char*, DefaultHash<StringRef>, HashTableNoState>, DefaultHash<StringRef>, TwoLevelHashTableGrower<8ul>, Allocator<true> > >&, DB::IBlockOutputStream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x965) [0x313f075]
    2017.09.07 10:08:18.965994 [ 28 ] <Error> BaseDaemon: 3. clickhouse-server(DB::Aggregator::writeToTemporaryFile(DB::AggregatedDataVariants&)+0x179a) [0x30f4d1a]
    2017.09.07 10:08:18.995048 [ 28 ] <Error> BaseDaemon: 4. clickhouse-server(DB::Aggregator::executeOnBlock(DB::Block&, DB::AggregatedDataVariants&, std::vector<DB::IColumn const*, std::allocator<DB::IColumn const*> >&, std::vector<std::vector<DB::IColumn const*, std::allocator<DB::IColumn const*> >, std::allocator<std::vector<DB::IColumn const*, std::allocator<DB::IColumn const*> > > >&, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<StringRef, std::allocator<StringRef> >&, bool&)+0x978) [0x30f5898]
    2017.09.07 10:08:18.995075 [ 28 ] <Error> BaseDaemon: 5. clickhouse-server(DB::ParallelInputsProcessor<DB::ParallelAggregatingBlockInputStream::Handler, (DB::StreamUnionMode)0>::thread(MemoryTracker*, unsigned long)+0x2c8) [0x305abf8]
    2017.09.07 10:08:18.995084 [ 28 ] <Error> BaseDaemon: 6. clickhouse-server() [0x399d05f]
    2017.09.07 10:08:18.995113 [ 28 ] <Error> BaseDaemon: 7. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fe36b7676ba]
  • @3334085 #25346 12:33 PM, 07 Sep 2017
    Что-то у меня жалуется на нехватку места, хотя алоцировать он пытается намного меньше чем лимит: DB::Exception: Memory limit (for query) exceeded: would use 9.41 GiB (attempt to allocate chunk of 134217728 bytes), maximum: 9.31 GiB
  • @kochetovnicolai #25347 12:36 PM, 07 Sep 2017
    логично предположить, что 134217728 bytes - размер очередной аллокации, а лимит певысило суммарное потребление
  • @3334085 ↶ Reply to #25347 #25348 12:38 PM, 07 Sep 2017
    хм, логично
  • @maddlux #25349 12:54 PM, 07 Sep 2017
    Joined.
  • @maddlux #25350 01:00 PM, 07 Sep 2017
    Добрый день. Подскажите, пожалуйста, почему через определенное время строка может перестать участвовать в схлопывании. Может ли быть так, что возникла ошибка ранее с этой строкой и она навсегда выбрасывается из строк, участвующих в схлопывании, что бы не возникало ошибок в дальнейшем?
  • @pookieShmukie #25351 01:03 PM, 07 Sep 2017
    Это про CollapsingMergeTree?
  • @maddlux #25352 01:09 PM, 07 Sep 2017
    Да
  • @pookieShmukie #25353 01:13 PM, 07 Sep 2017
    Из документации.

    Если количество положительных и отрицательных строк совпадает - то пишет первую отрицательную и последнюю положительную строку. Если положительных на 1 больше, чем отрицательных - то пишет только последнюю положительную строку. Если отрицательных на 1 больше, чем положительных - то пишет только первую отрицательную строку. Иначе - логическая ошибка, и ни одна из таких строк не пишется. (Логическая ошибка может возникать, если случайно один кусок лога был вставлен более одного раза. Поэтому, об ошибке всего лишь пишется в лог сервера, и слияние продолжает работать.)
  • https://t.me/clickhouse_ru
    @Shegloff #25354 01:15 PM, 07 Sep 2017
    можно ли из материализованной вьюхи дропнуть партицию?
  • https://t.me/clickhouse_ru
    @kshvakov #25355 01:28 PM, 07 Sep 2017
    да, для materialize view создается обычная таблица вида .inner.название вью``
  • @pookieShmukie #25356 01:40 PM, 07 Sep 2017
    Ребят. Есть Nested колонка например с тремя колонками внутри. Если я делаю например sumArray(nested.column1), то фактически данные с остальных двух колонок будут читаться или нет?
  • @pookieShmukie #25357 01:40 PM, 07 Sep 2017
    И можно ли как то приджоинить только одну колонку из nested колонки, а не три сразу?
  • @pookieShmukie #25358 01:42 PM, 07 Sep 2017
    Т.е. делаю я например select nested.column1 from table array join nested. Или остальные колонки и так не читаются из nested?
  • @kochetovnicolai #25359 01:47 PM, 07 Sep 2017
    остальные колонки не читаются и так
  • @pookieShmukie #25360 01:48 PM, 07 Sep 2017
    Супер, это то, что надо
  • @pookieShmukie #25361 01:48 PM, 07 Sep 2017
    Спасибо!
  • @kochetovnicolai #25362 01:49 PM, 07 Sep 2017
    не уверен, что array join nested сработает. кажется, должно быть array join nested.column1
  • @3334085 #25363 01:50 PM, 07 Sep 2017
    Я тут выше про нехватку памяти писал, вот в этом виео годно Алексей рассказывает что да как https://events.yandex.ru/lib/talks/4556/
    Link

    Приглашаем всех, кто анализирует большие объёмы данных, на встречу, посвящённую СУБД ClickHouse. СУБД ClickHouse, разработанная в Яндексе для нужд Яндекс.Метрики, почти сразу стала использоваться для решения самых разных аналитических задач. ClickHouse работает быстрее всех известных нам СУБД и легко обрабатывает петабайты данных. Это делает СУБД незаменимым инструментом в руках аналитика. Сейчас ClickHouse стала открытым программным обеспечением, так что её могут свободно использовать все. На встрече будет два доклада. Аналитик Яндекса Мария Рыжова покажет типичные задачи, которые легко решаются с помощью этой СУБД, а технический директор проекта СМИ2 Игорь Стрыхарь расскажет о созданном командой СМИ2 Tabix — графическом интерфейсе для работы с ClickHouse. После докладов пройдёт сессия вопросов и ответов. С собравшимися пообщаются аналитики Яндекса, использующие ClickHouse в самых разных сферах. Их можно будет расспросить, как эффективнее всего применять эту СУБД к конкретным задачам. Участие бесплатно…

  • Оно именно так и работает в данный момент
  • @3334085 #25365 02:01 PM, 07 Sep 2017
    интересное поведение встретил функции sumif() - если там прописать ограничение, оно не транслируется выше для уменьшения выборки т.е прописав только sumif я имею ошибку по памяти, а если добавляю в where - все ок
  • @kochetovnicolai #25366 02:05 PM, 07 Sep 2017
    во втором случае оптимизатор может пробросить условие из where в prewhere, и прочитается меньше кусков
  • @kochetovnicolai #25367 02:06 PM, 07 Sep 2017
    также могут сработать ограничения, если столбец находится в первичном ключе
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25365 #25368 02:23 PM, 07 Sep 2017
    да, наибольшее общее условие всех агрегатов запроса можно выносить оптимизатором и применять на более ранних стадиях.
  • @alexander_sabaev #25369 03:28 PM, 07 Sep 2017
    пробую удалить партицию
    Received exception from server:
    Code: 248. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Invalid partition format: 20170801_20170821_0_20882_333. Partition should consist of 6 digits: YYYYMM.
  • @alexander_sabaev #25370 03:28 PM, 07 Sep 2017
    alter table site_stat_cache DROP PARTITION '20170801_20170821_0_20882_333';
  • @alexander_sabaev #25371 03:29 PM, 07 Sep 2017
    при этом
    SELECT concat('alter table site_stat_cache DROP PARTITION ''',name,''';') FROM system.parts WHERE /*active and*/ table = 'site_stat_cache' and min_date>='2017-08-01';
    ┌─concat(\'alter table site_stat_cache DROP PARTITION \\\'\', name, \'\\\';\')────────┐
    │ alter table site_stat_cache DROP PARTITION \'20170801_20170821_0_20882_333\'; │
    │ alter table site_stat_cache DROP PARTITION \'20170821_20170825_20883_93538_1857\'; │
  • @pookieShmukie #25372 03:30 PM, 07 Sep 2017
    А Nested вообще как под капотом устроено? Просто есть у меня например некоторое количество строк в Nested для каждой строки в основной таблице. И мне по этим Nested строкам нужно будет проводить фильтрации и пр., если смысл вынести уже отфильтрованные данные в соседнюю колонку или особой разницы не будет?
  • @kochetovnicolai #25373 03:54 PM, 07 Sep 2017
    устроено как несколько массивов с общим значением offset. Насчет смысле не уверен.
  • @alexander_sabaev #25375 03:57 PM, 07 Sep 2017
    спасибо. Я уже удалил просто месяц
  • @kochetovnicolai #25376 03:57 PM, 07 Sep 2017
    да, неверно написал. alter table drop partition '201708' тогда
  • https://t.me/clickhouse_ru
    @nikitosiusis #25377 04:44 PM, 07 Sep 2017
    Joined.
  • @firej #25378 04:45 PM, 07 Sep 2017
    превед
  • @firej #25379 04:45 PM, 07 Sep 2017
    скажите, для DDL запросов обязательно zookeeper нужен?
  • @kochetovnicolai #25380 04:47 PM, 07 Sep 2017
    да
  • 08 September 2017 (121 messages)
  • @milovidov_an #25383 04:02 AM, 08 Sep 2017
    Привет, а можешь мне подсказать как лучше всего перекинуть данные, с одно сервера, на группу шардов?
  • @milovidov_an #25384 04:02 AM, 08 Sep 2017
    Привет.
    Есть три варианта:

    1. С помощью INSERT ... SELECT ... FROM remote(...)
    Просто, неэффективно.

    2. Если у таблиц совпадает структура - перенести разные партиции на новые серверы. Для ReplicatedMergeTree см. ALTER ... FETCH PARTITION, для обычного MergeTree перенести файлы.
    Более сложно, эффективно.

    3. Если старые серверы будут присутствовать в кластере в виде шардов, то данные с них можно никуда не переносить. Новые данные писать на другие шарды.
    Очень просто, быстро, недостаток - неравномерность нагрузки на кластере.
  • @rv256 #25386 09:06 AM, 08 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @igorBalashov #25387 09:10 AM, 08 Sep 2017
    Есть ли какие то конфиги, которые влияют на параллельность обработки запросов? Столкнулся с ситуацией, что 200-300 запросов в сек уже ложат довольно мощный сервак. Сами запросы в одиночку выполняются в среднем за 0,3 с
  • Ох ) Жестко ) Я такой объем запросов размазываю на кластер ) Для КХ многовато будет 200-300 запросов на один сервер
  • @rv256 #25389 09:14 AM, 08 Sep 2017
    Добрый день.
    Нужна помощь)
    Пытаюсь создать времменую таблицу через jdbc драйвер соеденение. Выкидывается exception Code: 113, e.displayText() = DB::Exception: There is no session, e.what() = DB::Exception. Вообще jdbc драйвер поддерживает сессии?
  • https://t.me/clickhouse_ru
    @igorBalashov #25390 09:14 AM, 08 Sep 2017
    как-то странно, мускул справлялся с такой ситуацией вообще легко
  • https://t.me/clickhouse_ru
    @igorBalashov #25391 09:15 AM, 08 Sep 2017
    ожидалось что будет ускорение, а тут совсем сервак ложится
  • @pookieShmukie #25392 09:15 AM, 08 Sep 2017
    Они работают совершенно по разному. КХ предназначен для обработки маленького количества больших запросов
  • @pookieShmukie #25393 09:16 AM, 08 Sep 2017
    Все еще зависит от данных и самих запросов. Мы например агрегируем некоторые данные по данным из КХ. Агрегаторов от 5 до 10 штук. Они делают асинхронные запросы с concurrency 5 и таких процессов висит 25 штук. Но запросы у нас крайне простые. Отдать например значения трех колонок для конкретного пользователя.
  • @pookieShmukie #25394 09:17 AM, 08 Sep 2017
    С такой нагрузкой КХ вполне себе справляется и не было случаев когда запросы убивали сервер. Все запросы валятся в один сервер, но данные размазаны по кластеру.
  • https://t.me/clickhouse_ru
    @uMagistr ↶ Reply to #25387 #25395 09:30 AM, 08 Sep 2017
    а какого типа данные в базе ?
  • https://t.me/clickhouse_ru
    @igorBalashov #25396 09:31 AM, 08 Sep 2017
    параметры сессии, страница входа, реферер, ip, временные параметры
  • https://t.me/clickhouse_ru
    @uMagistr #25397 09:33 AM, 08 Sep 2017
    и нужно в ближайшем риалтайме их отдавать ?
  • https://t.me/clickhouse_ru
    @uMagistr ↶ Reply to #25396 #25398 09:36 AM, 08 Sep 2017
    ^
  • https://t.me/clickhouse_ru
    @igorBalashov #25399 09:37 AM, 08 Sep 2017
    для аналитики идет анализ всех сессий за период, а их мноого)
  • https://t.me/clickhouse_ru
    @kshvakov #25400 09:38 AM, 08 Sep 2017
    Аналитиков много ?
  • https://t.me/clickhouse_ru
    @igorBalashov #25401 09:38 AM, 08 Sep 2017
    да
  • @pookieShmukie #25402 09:38 AM, 08 Sep 2017
    Тут несколько вариантов )

    1. Уменьшить количество запросов на один сервер КХ;
    2. Сделать кеширующую прослойку;
    3. Сделать несколько реплик и балансировать запросы на реплики.
  • @pookieShmukie #25403 09:39 AM, 08 Sep 2017
    Я бы выбрал третий вариант в любом случае и размазывал запрос по репликам. Только нужно учитывать replication lag.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #25401 #25404 09:40 AM, 08 Sep 2017
    зачем все делают одно и тоже ?
  • @pookieShmukie #25405 09:40 AM, 08 Sep 2017
    Т.е. может получиться так, что два одновременных запроса на две разные реплики вернут разный результат, а спустя секунду одинаковый - это нормально. Но если это критично, то делать не асинхронную, а синхронную репликацию.
  • https://t.me/clickhouse_ru
    @maxlapshin #25406 09:40 AM, 08 Sep 2017
    Есть еще мысль что лучше сгруппировать похожие запросы и сделать один
  • https://t.me/clickhouse_ru
    @maxlapshin #25407 09:40 AM, 08 Sep 2017
    Потому что много делается фулскана
  • https://t.me/clickhouse_ru
    есть какой-нибудь пример?)
  • У нас запросы для аналитики получаются примерно по 300 строк в высоту ) Например на один запрос в API может делаться n+m запросов ) где n - кол-во строк в выборке, m - кол-во метрик на каждую строку из выборки.
  • https://t.me/clickhouse_ru
    пока начали 1 и 2 пути
  • Если у вас один шард, то поднимите несколько реплик и можно обычным round robin'om зарулить запросы
  • @pookieShmukie #25412 09:43 AM, 08 Sep 2017
    Я не уверен, но мне кажется, что у нас слишком жирные сервера в кластере, а данных на них не много, поэтому ничего не ложится...пока что :)
  • https://t.me/clickhouse_ru
    Например делать не по одному запросу на каждый аккаунт, а сгруппировать их
  • https://t.me/clickhouse_ru
    @maxlapshin #25414 09:56 AM, 08 Sep 2017
    Вместо where accountId= сделать accountId in () и group by accountId
  • У нас кстати так и работает. Причем можно еще указывать конкретные accountId, например если страница с пагинацией и заранее известны идентификаторы accountId.
  • @pookieShmukie #25416 09:59 AM, 08 Sep 2017
    У меня запросы отрабатывают вот как то так. https://img.facedsid.ru/bbv7f.jpg
  • https://t.me/clickhouse_ru
    @igorBalashov #25417 10:20 AM, 08 Sep 2017
    Круто, спасибо, попробуем что то такое применить!)
  • https://t.me/clickhouse_ru
    @vladenisov #25418 10:20 AM, 08 Sep 2017
    кто-нибудь гугловый DataStudio использует? они открыли доступ к написанию любых коннекторов. я бы мог написать для КХ, но нам DataStudio не нужен.
  • Только у меня судя по запросу не передаются конкретные айдишки, конкретные айдишки кладудтся во временную таблицу и к ним джойнятся данные, этотна случай если по какому то идентификатору вообще нет данных в кх и строка не вылетала из выдачи
  • https://t.me/clickhouse_ru
    @ssemiokhin #25420 10:44 AM, 08 Sep 2017
    Всем привет!
    Есть n хостов с реплицируемыми табликами, на одной из реплик данных нет и в логах ошибка:

    <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, e.what() = Connection reset by peer

    и все, что это может быть? Не подскажите?

    Проблема очень рандомная, на тесте ошибка есть, на проде нет. Конфиги одинаковые
  • https://t.me/clickhouse_ru
    @raspavel #25421 10:46 AM, 08 Sep 2017
    Привет! Подскажите, пожалуйста, как из пандаса получить csv с null значениями, пригодными для clickhouse.
    df.fillna('\N', inplace=True)
    df.to_csv()
    выдает мне \\N, что не парсится ch =(
  • Обработать их,заполнив условными дефотлными значениями нельзя ?
  • https://t.me/clickhouse_ru
    @373677243 #25424 11:40 AM, 08 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @373677243 #25427 11:44 AM, 08 Sep 2017
    Добрый день!
    Подскажите, почему не срабатывает функция arrayJoin?
    Выполняю такой запрос:
    select a.*, arrayJoin(splitByString(',',moid)) as mas_moid from table1 a
    Ошибка:
    ARRAY JOIN requires array argument
    Приводила явно к типу Array - та же ошибка.
    К конкретному элементу массива могу обратиться, а применить любую функцию, которая обрабатыет массив - нет.
  • @pookieShmukie #25428 11:47 AM, 08 Sep 2017
    Возможно нужно завернуть в подзапрос
  • https://t.me/clickhouse_ru
    Попробуйте выполнить запрос без arrayJoin и посчитать кол-во элементов получившегося после splitByString массиов. Может для некоторых строк splitByString возвращает не массив?
  • https://t.me/clickhouse_ru
    Зачем. Вот пример из документации
    https://clickhouse.yandex/docs/en/functions/array_join.html?highlight=arrayjoin
  • https://t.me/clickhouse_ru
    @373677243 #25431 11:48 AM, 08 Sep 2017
    Пробовала посчитать количество элементов - подсчитывает правильно
  • @pookieShmukie #25432 11:48 AM, 08 Sep 2017
    Мало ли оптимизатор глючит или еще чего )
  • https://t.me/clickhouse_ru
    @373677243 #25433 11:49 AM, 08 Sep 2017
    В подзапрос тоже пробовала ввернуть, аналогичная ошибка
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25434 11:57 AM, 08 Sep 2017
    Я бы посоветовал убрать лишние колонки, алисы для таблиц и оставить только arrayJoin(splitByString(',',moid))
  • https://t.me/clickhouse_ru
    @orantius #25435 11:59 AM, 08 Sep 2017
    а что выдает вот такая штука
    SELECT
    moid,
    toTypeName(splitByString(',', moid)) AS tn
    FROM ...
    WHERE tn != 'Array(String)'
    limit 1
  • https://t.me/clickhouse_ru
    @373677243 #25436 12:00 PM, 08 Sep 2017
    в столбце tn такое значение: Nullable(Array(String))
  • https://t.me/clickhouse_ru
    @orantius #25437 12:01 PM, 08 Sep 2017
    ага. а может у вас и moid бывает null?
  • https://t.me/clickhouse_ru
    @373677243 #25438 12:02 PM, 08 Sep 2017
    moid Nullable(String)
  • Имеется ввиду что в таблице есть строки у которых moid = NULL
  • https://t.me/clickhouse_ru
    @orantius #25440 12:04 PM, 08 Sep 2017
    splitByString(_, null) = null, и этот null не массив, поэтому array join-у плохеет.
  • https://t.me/clickhouse_ru
    @373677243 #25441 12:04 PM, 08 Sep 2017
    нет, у меня сейчас нет таких строк. все moid не пустые
  • https://t.me/clickhouse_ru
    @orantius #25442 12:07 PM, 08 Sep 2017
    а каая у вас версия сервера, у меня другая ошибка отдается
    SELECT splitByString(',', moid)
    FROM
    ( SELECT CAST('a' AS Nullable(String)) AS moid)

    Received exception from server:
    Code: 43. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Nested type Array(String) cannot be inside Nullable type.
  • https://t.me/clickhouse_ru
    @orantius #25443 12:08 PM, 08 Sep 2017
    впрочем, в обоих случаях это выглядит как баг.
  • https://t.me/clickhouse_ru
    @373677243 #25444 12:12 PM, 08 Sep 2017
    может, у кого-нибудь есть идеи, как выкрутиться? пробовала привести к массиву с помощью CAST (может, конечно, сути это не меняет), ошибка та же
  • @3334085 #25445 12:12 PM, 08 Sep 2017
    А через sql из tabix мы не можем посмотреть версию sql? (Всегда интересовало)
  • Убрать Nullable, писать пустые массивы и предварительно фильтровать пустые массивы нафиг )
  • @3334085 ↶ Reply to #25443 #25447 12:12 PM, 08 Sep 2017
    Интересный баг, это надо @milovidov_an звать или пилить issue на гитхаб?
  • https://t.me/clickhouse_ru
    @orantius #25448 12:12 PM, 08 Sep 2017
    select version() ?
  • https://t.me/clickhouse_ru
    да, так можно посмотреть. у меня, например, вернул 1.1.54245
  • @3334085 #25450 12:14 PM, 08 Sep 2017
    Логично...
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25444 #25451 12:14 PM, 08 Sep 2017
    с использованием cast(moid as String) работает?
  • Metrics->Overview
  • https://t.me/clickhouse_ru
    Cannot convert data from a nullable type to a non-nullable type
  • https://t.me/clickhouse_ru
    @orantius #25454 12:17 PM, 08 Sep 2017
    что у нас там еще есть, assumeNotNull(moid) ?
  • https://t.me/clickhouse_ru
    @373677243 #25455 12:19 PM, 08 Sep 2017
    с assumeNotNull заработало
  • https://t.me/clickhouse_ru
    @373677243 #25456 12:19 PM, 08 Sep 2017
    спасибо!
  • https://t.me/clickhouse_ru
    @orantius #25457 12:22 PM, 08 Sep 2017
    но надо понимать что с таким же успехом вы могли проальтерить колонку в не-Nullable тип, это даже в каком-то смысле безопаснее, т.к. сейчас ваш запрос будет работать до тех пор пока вы внезапно не вставите в moid null.
  • https://t.me/clickhouse_ru
    @373677243 #25458 12:26 PM, 08 Sep 2017
    а что будет, если в moid попадется Null? assumeNotNull вернут ошибку и все отвалится или он просто пропустит эту строку?
  • https://t.me/clickhouse_ru
    @orantius #25459 12:28 PM, 08 Sep 2017
    кажется, вот такой вариант должен подойти
    SELECT
    moid,
    if(isNull(moid), emptyArrayString(), splitByString(',', assumeNotNull(moid))) AS x
    FROM
    (
    SELECT CAST('' AS Nullable(String)) AS moid
    UNION ALL
    SELECT CAST(NULL AS Nullable(String))
    )

    ┌─moid─┬─x────┐
    │ │ [''] │
    └──────┴──────┘
    ┌─moid─┬─x──┐
    │ \N │ [] │
    └──────┴────┘
  • https://t.me/clickhouse_ru
    @373677243 #25460 12:30 PM, 08 Sep 2017
    спасибо!
  • @firej #25461 01:00 PM, 08 Sep 2017
    Почему при попытке создания таблички на второй реплике получаю такое сообщение - Will not execute task query-0000000068 : There is no a local address in host list.

    на первой машинке создается все нормально, на второй нет и получаю отлуп - is executing too long (121 sec.)....
  • @firej #25462 01:02 PM, 08 Sep 2017
    я так понимаю кривой конфиг, но где я не прав не пойму
  • @pookieShmukie #25463 01:53 PM, 08 Sep 2017
    А в limit by нельзя больше одной колонки передать?
  • @pookieShmukie #25464 01:56 PM, 08 Sep 2017
    Разобрался ) Можно )
  • https://t.me/clickhouse_ru
    @iGusev #25466 02:49 PM, 08 Sep 2017
    @milovidov_an 😒☝️
  • @430134182 #25467 03:01 PM, 08 Sep 2017
    😆 Что это было ?
  • @pookieShmukie #25468 03:46 PM, 08 Sep 2017
    А как можно выкинуть из результата строки у которых идет несколько одинаковых значений подряд?

    Например. Есть таблица с эвентами и идентификаторами сущности и пользователя.
    userId entityId action
    1 1 enter
    1 1 success
    1 1 exit
    1 1 success
    1 1 success
    1 1 success
    1 2 enter
    1 2 exit
    1 2 exit
    1 2 exit
    2 1 enter
    2 1 success
    2 1 exit

    Что бы в результате осталось

    1 1 enter
    1 1 success
    1 1 exit
    1 2 enter
    1 2 exit
    2 1 enter
    2 1 success
    2 1 exit
  • @pookieShmukie #25469 03:46 PM, 08 Sep 2017
    sequenceMatch не подходит т.к. нужно выбирать колонку с временем, а по ней group by естественно не сделаешь
  • https://t.me/clickhouse_ru
    @orantius #25470 03:47 PM, 08 Sep 2017
    distinct ?
  • @pookieShmukie #25471 03:47 PM, 08 Sep 2017
    Задача немного сложнее :) Есть перед userId колонка с eventTime типа DateTime
  • @pookieShmukie #25472 03:48 PM, 08 Sep 2017
    Да и distinct оставит только один эвент, у меня например у пользователя 1 может быть несколько последовательностей типа enter, success, exit на одну сущность
  • @pookieShmukie #25473 03:48 PM, 08 Sep 2017
    Я так понял, что никак :)
  • https://t.me/clickhouse_ru
    @arzonus #25474 03:49 PM, 08 Sep 2017
    group by user_id, entity_id, action? :)
  • @pookieShmukie #25475 03:49 PM, 08 Sep 2017
    Не получится, есть колонка с временем по которой group by не сделаешь
  • https://t.me/clickhouse_ru
    @arzonus #25476 03:49 PM, 08 Sep 2017
    any(time)
  • @pookieShmukie #25477 03:50 PM, 08 Sep 2017
    результат получиться идентичен результату без group by
  • https://t.me/clickhouse_ru
    @arzonus #25478 03:50 PM, 08 Sep 2017
    или max или min
  • @pookieShmukie #25479 03:50 PM, 08 Sep 2017
    any(time) тоже не подойдет, т.е. будет случайное число, а мне нужно точное время
  • https://t.me/clickhouse_ru
    @arzonus #25480 03:50 PM, 08 Sep 2017
    avg?
  • @pookieShmukie #25481 03:50 PM, 08 Sep 2017
    Просто есть последовательность событий и из них нужно строить например сессии
  • @pookieShmukie #25482 03:51 PM, 08 Sep 2017
    И логика такая, что сессия - это наличие enter + (success || exit)
  • @pookieShmukie #25483 03:51 PM, 08 Sep 2017
    И так, то бы между ними не было дырки больше чем 30 минут
  • @pookieShmukie #25484 03:51 PM, 08 Sep 2017
    И исключать например 30 подряд идущих enter событий
  • @pookieShmukie #25485 03:51 PM, 08 Sep 2017
    Помимо времени выбирается еще несколько колонок )
  • https://t.me/clickhouse_ru
    @arzonus #25486 03:52 PM, 08 Sep 2017
    join с самой собой, фильтрация по разнице не более 30 минут + группировка
  • @pookieShmukie #25487 03:52 PM, 08 Sep 2017
    Вобщем то я понял, что лучше на клиенте это дело обработать и выкинуть лишние данные
  • @pookieShmukie #25488 03:54 PM, 08 Sep 2017
    Тут вопрос именно в том, что бы выкидывать битые последовательности. Например часть данных не поступила и у пользователя идет 100 enter в сущность подряд. Такие вещи нужно выкидывать. Сессия считается полной только в случае наличия двух событий из возможных трех событий.
  • @pookieShmukie #25489 03:54 PM, 08 Sep 2017
    Тут получается окно, а с окнами в CH пока никак
  • https://t.me/clickhouse_ru
    @arzonus #25490 03:54 PM, 08 Sep 2017
    Окна решаются с помощью джоина таблицы с самой собой)
  • @pookieShmukie #25491 03:55 PM, 08 Sep 2017
    Блин ) Таблица так то 850кк )
  • https://t.me/clickhouse_ru
    @arzonus #25492 03:55 PM, 08 Sep 2017
    У меня только что была такая задача как вычисление среднего значения между событиями с интервалом не более определенного времени
  • https://t.me/clickhouse_ru
    @arzonus #25493 03:55 PM, 08 Sep 2017
    Я с 5 млн работаю и все ок
  • @pookieShmukie #25494 03:56 PM, 08 Sep 2017
    Ладно, попробую сейчас джоин, предварительно фильтруя по какому либо признаку )
  • https://t.me/clickhouse_ru
    @arzonus #25495 03:56 PM, 08 Sep 2017
    Делайте максимальную фильтрацию перед джоинами таблицы
  • https://t.me/clickhouse_ru
    @arzonus #25496 03:56 PM, 08 Sep 2017
    Думаю все получится)
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25487 #25497 03:57 PM, 08 Sep 2017
    выглядит как groupArray(time),groupArray(action) и потом некоторые (вероятно не поддерживаемые CH) пляски на массивах.
  • https://t.me/clickhouse_ru
    @miptgirl #25498 03:59 PM, 08 Sep 2017
    Я такое считала, выглядит примерно так:
    SELECT
    groupArray(EventName) as events,
    groupArray(Time) as times,
    arrayEnumerate(events) as events_index,
    arrayFilter(name, index -> (index = 1) OR (events[index] != events[index - 1]), events, events_index) as events_filt,
    arrayFilter(time, index -> (index = 1) OR (events[index] != events[index - 1]), times, events_index) as times_filt
    FROM (
    SELECT * FROM mytable ORDER BY time
    )
  • @pookieShmukie #25499 03:59 PM, 08 Sep 2017
    Вот вобщем то пример
  • @pookieShmukie #25501 03:59 PM, 08 Sep 2017
    Это вот данные по одной сущности
  • @pookieShmukie #25502 04:00 PM, 08 Sep 2017
    И нужно оставить то, что в прямоугольниках, остальное выкинуть, т.к. не соблюдается последовательность
  • https://t.me/clickhouse_ru
    @orantius #25503 04:04 PM, 08 Sep 2017
    в вашем случае правила несколько более сложные, чем просто выбрасывание подряд идущих дубликатов.
  • @pookieShmukie #25504 04:04 PM, 08 Sep 2017
    Эх ) Досадный баг с limit n by )
  • @pookieShmukie #25505 04:04 PM, 08 Sep 2017
    Я Алексею уже писал про него
  • @pookieShmukie #25506 04:04 PM, 08 Sep 2017
    Придется чуть больше данных джоинить
  • @milovidov_an #25507 05:03 PM, 08 Sep 2017
    #faq
  • @milovidov_an #25508 05:03 PM, 08 Sep 2017
    force_index_by_date - проверяет, есть ли в запросе условие на ключ даты, которое может использоваться для отсечения партиций.

    force_primary_key - проверяет, есть ли в запросе условие на первичный ключ, которое может использоваться для отсечения диапазонов первичного ключа.

    Если соответствующая настройка выставлена в 1, а подходящего условия нет - кидается исключение.

    При этом не проверяется, действительно ли условие уменьшает объём данных для чтения. Например, условие на дату Date != '2000-01-01' считается подходящим при выставленной настройке force_index_by_date, даже когда в таблице все данные подходят под это условие и для выполнения запроса требуется full scan.
  • 09 September 2017 (37 messages)
  • https://t.me/clickhouse_ru
    @Sunsh1ne #25513 06:55 AM, 09 Sep 2017
    У меня тут такая проблема, помогите понять в чем причина.
    Права на папку detached 777 рекурсивно.
    Выполняю такой запрос:
    ALTER TABLE bd.table
    ATTACH PARTITION '201709'

    Received exception from server:
    Code: 1000. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Access to file denied: insufficient permissions: /var/lib/clickhouse/data/db/table/detached/20170902_20170906_1_154781_12691.
  • https://t.me/clickhouse_ru
    @Sunsh1ne #25514 06:58 AM, 09 Sep 2017
    2017.09.09 09:42:48.662898 [ 3 ] <Error> db.table (Data): ~DataPart() should remove part /var/lib/clickhouse/data/db/table/detached/20170902_20170906_1_154781_12691/ but its name doesn't start with tmp. Too suspicious, keeping the part.
  • https://t.me/clickhouse_ru
    @geebv #25516 12:18 PM, 09 Sep 2017
    Привет, клиент go. В таблице 10м значений. Код то выполняется то нет (будто нет данных). Без ошибок

    iter := clickhouse.NewQuery(
    sql, args...,
    ).Iter(clickHoustClient)

    for iter.Scan(&ip, &dateAt) {
    // agg
    }

    return iter.Error()

    Запрос тупо селект по всем данным в таблице
    Проблема в том что запрос то выполняется, то не выполняется если вызвать его. То есть код отрабатывает мгновенно и без ошибок будто таблица пустая. А бывает что все в порядке возвращает данные и итератор бежит по всем данным. На транспорте стоит timeoyt=60sec

    В чем может быть проблема?
  • https://t.me/clickhouse_ru
    @kotchuprik #25517 12:20 PM, 09 Sep 2017
    клиент го это в другую сторону )
  • https://t.me/clickhouse_ru
    @kotchuprik #25518 12:20 PM, 09 Sep 2017
    я юзаю тот же клиент, в данный момент
  • https://t.me/clickhouse_ru
    @xsikor #25519 12:20 PM, 09 Sep 2017
    Error вернет только ошибку бд, скорее всего проблема где-то в коннекте если код выполняется моментально
  • https://t.me/clickhouse_ru
    @geebv #25520 12:22 PM, 09 Sep 2017
    Так что я делаю не так, понять не могу
    Явно что то в клиенте дело или коннекте
  • https://t.me/clickhouse_ru
    @geebv #25521 12:22 PM, 09 Sep 2017
    Баг даже завести не могу ибо воспроизвести не знаю как
  • https://t.me/clickhouse_ru
    @geebv ↶ Reply to #25517 #25522 12:22 PM, 09 Sep 2017
    не понял?
  • https://t.me/clickhouse_ru
    @kotchuprik #25523 12:23 PM, 09 Sep 2017
    я про то, что здесь не гошный чат ) если запрос выполняется — значит все ок, не к кликхаусу вопрос 😄
  • https://t.me/clickhouse_ru
    @kotchuprik #25524 12:23 PM, 09 Sep 2017
    имхо
  • https://t.me/clickhouse_ru
    @kotchuprik #25525 12:23 PM, 09 Sep 2017
    как выше верно подметили, это какая-то проблема с транспортом. попробуй спросить у гоферов
  • https://t.me/clickhouse_ru
    @geebv #25526 12:25 PM, 09 Sep 2017
    А ну это понятно
    Вопрос с большего аудитории этой группы был адресован
  • https://t.me/clickhouse_ru
    @geebv #25527 12:25 PM, 09 Sep 2017
    Окей, буду копать
  • https://t.me/clickhouse_ru
    @kotchuprik #25528 12:25 PM, 09 Sep 2017
    у меня подобных проблем не было, во всяком случае )
  • https://t.me/clickhouse_ru
    @xsikor #25529 12:29 PM, 09 Sep 2017
    👍
  • https://t.me/clickhouse_ru
    @geebv #25530 12:40 PM, 09 Sep 2017
    Блин, так этот клиент через http хреначит. Мда уж
  • https://t.me/clickhouse_ru
    @orantius #25531 12:42 PM, 09 Sep 2017
    посмотрите в логах сервера запросы, попробуйте воспроизвести без клиента.
  • @roman_kolchin #25532 12:59 PM, 09 Sep 2017
    Подскажите плиз по дизайну витрин. Что эффективнее — одна мега-широкая таблица в которой вперемешку лежат метрики и атрибуты или же относительно узкая таблица фактов с метриками и ключами, окруженная словарями?
  • @roman_kolchin #25533 01:01 PM, 09 Sep 2017
    Аналитикам понятное дело удобнее читать данные из одной широкой таблицы.
  • https://t.me/clickhouse_ru
    @feriat #25534 01:28 PM, 09 Sep 2017
    В словари обычно кладутся то, что может меняться. Например, можно создать широкую таблицу с айдишниками каких-то сущностей, а в словаре хранить мапинг "id -> человеческое имя"
  • https://t.me/clickhouse_ru
    @feriat #25535 01:28 PM, 09 Sep 2017
    Так и аналитикам будет удобно помнить, что, например, мне нужно id=831, потому что я помню, и форматировать изменяющиеся сущности со словарями будет удобн
  • https://t.me/clickhouse_ru
    @geebv ↶ Reply to #25531 #25536 01:31 PM, 09 Sep 2017
    Да вот именно посмотрел и в ужас пришел
    Сменил клиента и порядок
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25532 #25537 01:33 PM, 09 Sep 2017
    а чем метрики и атрибуты отличаются от метрик и ключей?
  • ключи — маленькие целые, а атрибуты — длинные текстовые
  • согласен, для изменяющихся атрибутов лучше использовать словари, а если атрибуты не меняются?
  • https://t.me/clickhouse_ru
    @orantius #25540 01:39 PM, 09 Sep 2017
    с ключи обычно занимают меньше места, поэтому запрос работает быстрее, и, как уже сказали, данные в словаре можно апдейтить.
    но при этом запрос становится а) непонятнее (id=7500) б) длиннее (select id,getDictString(...id)), если писать их руками это менее удобно.
  • https://t.me/clickhouse_ru
    @maxlapshin #25541 02:00 PM, 09 Sep 2017
    Мне подозревается что тут у каждого второго написан конструктор запросов
  • Это точно. Запросы в 300 строк в высоту руками писать как то тяжеловато
  • @pookieShmukie #25543 02:01 PM, 09 Sep 2017
    А есть там выбор данных из словаря или нет вообще не усложняет запрос )
  • https://t.me/clickhouse_ru
    @maxlapshin #25545 02:05 PM, 09 Sep 2017
    Нет никакой проблемы в широкую таблицу положить огромную строку
  • https://t.me/clickhouse_ru
    @maxlapshin #25546 02:06 PM, 09 Sep 2017
    Но если хочется с ними что-то делать, то рядом со строкой обязательно класть хеш типа cityhash
  • https://t.me/clickhouse_ru
    @maxlapshin #25547 02:06 PM, 09 Sep 2017
    Это может на порядок ускорить запрос
  • @396692579 #25548 02:25 PM, 09 Sep 2017
    Joined.
  • спасибо
  • https://t.me/clickhouse_ru
    @Sunsh1ne #25550 05:44 PM, 09 Sep 2017
    У меня тут такая проблема, помогите понять в чем причина.
    Права на папку detached 777 рекурсивно.
    Выполняю такой запрос:
    ALTER TABLE bd.table
    ATTACH PARTITION '201709'

    Received exception from server:
    Code: 1000. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Access to file denied: insufficient permissions: /var/lib/clickhouse/data/db/table/detached/20170902_20170906_1_154781_12691.
  • https://t.me/clickhouse_ru
    @Sunsh1ne #25551 05:44 PM, 09 Sep 2017
    2017.09.09 09:42:48.662898 [ 3 ] <Error> db.table (Data): ~DataPart() should remove part /var/lib/clickhouse/data/db/table/detached/20170902_20170906_1_154781_12691/ but its name doesn't start with tmp. Too suspicious, keeping the part.
  • 10 September 2017 (54 messages)
  • https://t.me/clickhouse_ru
    Проверте владедьца папок, это должен быть clickhouse
  • https://t.me/clickhouse_ru
    @umaxfun #25560 08:27 AM, 10 Sep 2017
    Поставил КХ на виртуалку Ubuntu 16.04 в ажуре, и обнаружил странный эффект:
    umaxfun@policy:~$ clickhouse-client
    Illegal instruction (core dumped)
  • https://t.me/clickhouse_ru
    @umaxfun #25561 08:28 AM, 10 Sep 2017
    umaxfun@policy:~$ clickhouse-server
    Illegal instruction (core dumped)
  • https://t.me/clickhouse_ru
    @umaxfun #25562 08:28 AM, 10 Sep 2017
    Что бы это могло значить?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25560 #25563 08:28 AM, 10 Sep 2017
    Описанный эффект, значит цпу который ажура даёт не поддерживает sse4.2
  • https://t.me/clickhouse_ru
    @umaxfun #25564 08:28 AM, 10 Sep 2017
    В рут мне логи, что теперь делать? Один вариант -- не использовать ажуру?
  • https://t.me/clickhouse_ru
    @Civiloid #25565 08:28 AM, 10 Sep 2017
    Надо либо пересобирать кх самому без поддержки ссе4, либо бодаться с поддержкой чтобы они у себя это поправили
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25564 #25566 08:30 AM, 10 Sep 2017
    С мелкими хостерами на квмах помогает бодаться с поддержкой.
  • https://t.me/clickhouse_ru
    @umaxfun #25567 08:30 AM, 10 Sep 2017
    А с мелкими не было проблем 🙂
  • https://t.me/clickhouse_ru
    @Civiloid #25568 08:30 AM, 10 Sep 2017
    Там такое тоже сплошь и рядом, что наборы поддерживаемых инструкций они зачем то ограничивают
  • https://t.me/clickhouse_ru
    @oZZyTOP #25569 08:30 AM, 10 Sep 2017
    Ну они там тупо кпу тайп делают хост
  • https://t.me/clickhouse_ru
    @umaxfun #25570 08:31 AM, 10 Sep 2017
    У того же селектела всегда было ок, и на вискейле даже
  • https://t.me/clickhouse_ru
    @oZZyTOP #25571 08:31 AM, 10 Sep 2017
    Да они там по дефолту юзают какой-то кему виртуальный кпу
  • https://t.me/clickhouse_ru
    @oZZyTOP #25572 08:31 AM, 10 Sep 2017
    Потому такие проблемы
  • https://t.me/clickhouse_ru
    @oZZyTOP #25573 08:31 AM, 10 Sep 2017
    А шо там у ажура хз
  • https://t.me/clickhouse_ru
    @oZZyTOP #25574 08:31 AM, 10 Sep 2017
    Навряд они чёт под одного чела будут менять
  • https://t.me/clickhouse_ru
    @umaxfun #25575 08:33 AM, 10 Sep 2017
    Тупо получается
  • https://t.me/clickhouse_ru
    @umaxfun #25576 08:35 AM, 10 Sep 2017
    Ну написал в супорт, конечно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25573 #25577 08:48 AM, 10 Sep 2017
    Хипер-в же
  • https://t.me/clickhouse_ru
    @oZZyTOP #25578 08:49 AM, 10 Sep 2017
    Ну то шо Хайперв то понятно, вопрос как он там настроени
  • https://t.me/clickhouse_ru
    @oZZyTOP #25579 08:49 AM, 10 Sep 2017
    Я просто хайпер 1 раз в жизни трогал
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #25560 #25580 08:52 AM, 10 Sep 2017
    Выберите другую машину. У меня в Azure поднят КХ и все ок.
  • https://t.me/clickhouse_ru
    @erzentd ↶ Reply to #25577 #25581 08:53 AM, 10 Sep 2017
    вот интересно, как они пофиксили 10к коннектов на hyper-v для ажура
  • https://t.me/clickhouse_ru
    @erzentd #25582 08:53 AM, 10 Sep 2017
    и почему в обычный вин сервер ещё не завезли
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #25580 #25583 08:53 AM, 10 Sep 2017
    А какая у тебя модель?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25581 #25584 08:54 AM, 10 Sep 2017
    Спроси у саппорта :)
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #25583 #25585 08:54 AM, 10 Sep 2017
    Ща спрошу, сам не знаю точно)
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25582 #25586 08:54 AM, 10 Sep 2017
    Он там изначально как опция
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #25585 #25587 08:55 AM, 10 Sep 2017
    Буду признателен, там их 100500 видов :)
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #25587 #25588 09:01 AM, 10 Sep 2017
    Админ спит, так что сказать не могу точно. По характеристикам это 4 ядра и 8 гигов и Debian.
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #25587 #25589 09:13 AM, 10 Sep 2017
    Более точно :)
    Standard F4s (4 vcpus, 8 GB memory)
  • https://t.me/clickhouse_ru
    @umaxfun #25590 09:13 AM, 10 Sep 2017
    Спасибочки!
  • @dr_gavrikov #25592 12:43 PM, 10 Sep 2017
    Всем привет, а есть в КХ функция, которые объединяет два массива в один?

    что-то типо union, например для

    SELECT arrayUnion([1, 2, 3], [4, 5, 6]) AS res

    вернула бы [1, 2, 3, 4, 5, 6]
  • @dr_gavrikov #25594 12:45 PM, 10 Sep 2017
    такого
  • @dr_gavrikov #25595 01:23 PM, 10 Sep 2017
    SELECT arrayReduce('groupArrayArray', [[1, 2, 3], [10, 20, 30]])

    сработало

    вопрос закрыт
  • @388099909 #25596 02:45 PM, 10 Sep 2017
    Joined.
  • @400013922 #25597 02:57 PM, 10 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #25595 #25598 05:21 PM, 10 Sep 2017
    Как заклинание прозвучало :)
  • https://t.me/clickhouse_ru
    @lipkinin #25599 05:22 PM, 10 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25598 #25600 05:22 PM, 10 Sep 2017
    пока что так и есть, скоро будет менее хакерская функция.
  • https://t.me/clickhouse_ru
    @kshvakov #25602 05:39 PM, 10 Sep 2017
    А есть ли способ сгруппировать не только одинаковые массивы, но группировать массив и с теми что полностью в него входят, например:

    action | categories
    1 | [1,2,3,4,5]
    1 | [2,3]
    2 | [1,2]
    2 | [2,3]

    сгруппировать

    SELECT action, fn(categories) AS cat, COUNT() AS cnt FROM t GROUP BY action, cat

    и получить

    1, [1,2,3,4,5], 2
    2, [1,2], 1
    2, [2,3], 1

    ?
  • https://t.me/clickhouse_ru
    @orantius #25603 05:42 PM, 10 Sep 2017
    а вы это хотя бы на каком-то языке программирования можете написать?
  • https://t.me/clickhouse_ru
    @orantius #25604 05:44 PM, 10 Sep 2017
    например если у вас есть A, B, A and B, куда должна попасть третья строка, в первую группу или во вторую?
  • https://t.me/clickhouse_ru
    @kshvakov #25605 05:50 PM, 10 Sep 2017
    да, могу, 3-й никуда не должен попасть, вобщем если по проще то, для группировки нужно чтоб дольшие массивы включали в себя меньшие, т.е. если есть [A],[B] и [A,B] то останется [A,B]
  • https://t.me/clickhouse_ru
    @orantius #25606 05:52 PM, 10 Sep 2017
    если я правильно вас понял, то вы хотите примерно вот что. у вас есть некоторое подмножество X какого-то powerset P, и вы хотите найти в нем Xmax = {x \in X| !\E a: x \subset a }, т.е. множество "максимальных" элементов X, и потом каждый элемент округлять до максимального. во-первых у вас проблема с неоднозначностью, а во-вторых, на уровне исполнения запроса это преобразование не функция отдельной строки.
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25605 #25607 05:52 PM, 10 Sep 2017
    а если есть [A], [B] и [] ?
  • https://t.me/clickhouse_ru
    @kshvakov #25608 05:53 PM, 10 Sep 2017
    ok, пустые не группируем
  • https://t.me/clickhouse_ru
    @orantius #25609 05:54 PM, 10 Sep 2017
    я могу непустой пример придумать.
  • https://t.me/clickhouse_ru
    @orantius #25610 05:55 PM, 10 Sep 2017
    в кх можно написать выражение включения одного массива в другой, поэтому можно просто определение которое я написал выше переписать в виде запроса, и потом на это множество еще раз поджойнить таблицу и посмотреть кто куда попадает.
  • @365454578 #25611 06:45 PM, 10 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @optician_owl #25614 07:37 PM, 10 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    Здравствуйте ,как победили баг? у меня абсолютно аналогичная ситуация, понять не могу откуда ноги растут Code: 49, e.displayText() = DB::Exception: Unknown element 'umts' for type Enum8('noservice' = 1, 'gsm' = 2, 'umts' = 3, 'lte_fdd' = 4, 'lte_tdd' = 5), e.what() = DB::Exception
  • В ближайшем релизе появится нормальная операция конкатенации массивов и не только.
  • 11 September 2017 (66 messages)
  • https://t.me/clickhouse_ru
    Можете уточнить, когда ожидается и в какой мере более полная поддержка JOIN? Тут https://clickhouse.yandex/docs/en/roadmap.html достаточно размыто написано
  • @igorl86 #25619 07:11 AM, 11 Sep 2017
    @ckcnik У меня в коде, который создавал таблицы, затесался какой-то непечатный символ, пробел нулевой ширины или что то вроде. Он все и портил.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25620 08:39 AM, 11 Sep 2017
    Вот запрос из доки
    http://joxi.ru/RmzNOePtWOkvPm
    (примерно тут https://clickhouse.yandex/docs/ru/query_language/queries.html#id9)
    Что он делает, прям по UserId агрегирует что ли?
  • @pookieShmukie #25621 08:55 AM, 11 Sep 2017
    Я так полагаю, что это было бы аналогично, если было бы написано avgIf или where userId IN
  • https://t.me/clickhouse_ru
    Похоже, но вопрос в том, а по какому полю считается avg?
  • @pookieShmukie #25624 09:10 AM, 11 Sep 2017
    А, видимо считается доля строк по каждому userId, хотя могу ошибаться
  • @pookieShmukie #25625 09:10 AM, 11 Sep 2017
    Хотя avg все таки считает среднее
  • @pookieShmukie #25626 09:11 AM, 11 Sep 2017
    Ну да ) Там написано "за каждый день после 17 марта считаем долю хитов, сделанных посетителями, которые заходили на сайт 17 марта"
  • https://t.me/clickhouse_ru
    @123334038 #25627 10:52 AM, 11 Sep 2017
    Добрый день. Помогите советом. Есть задача "обновлять" имеющиеся записи в КХ (да, знаю, что апдейтов нет)

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

    Есть работающее решение - просто инсертить новые записи, а каждый атрибут вычислять через argMax (у каждой записи есть таймстемп) группируя по user_id. Оно работает, но не очень быстро. Пользователей не очень много (сейчас около 3 миллионов, но число будет расти). Нужны они в КХ т.к. хотим по атрибутом пользователя фильтровать события (джоинить таблицы юзером в ивентов).

    Есть ли варианты лучше?
    Еще были мысли сделать "юзеров" сделать через словарь (в mysql например) не будет ли их количество проблемой?
  • https://t.me/clickhouse_ru
    @arzonus #25628 11:03 AM, 11 Sep 2017
    Попробуйте вынести агрегацию в материализированное представление и оттуда с доагрегирующим запросом вытаскивать
  • https://t.me/clickhouse_ru
    @arzonus #25629 11:05 AM, 11 Sep 2017
    Данное решение сократит количество строк, так как КХ потихоньку будет их схлопывать
  • https://t.me/clickhouse_ru
    @miptgirl #25630 11:11 AM, 11 Sep 2017
    Можно попробовать инкрементальный лог и CollapsingMergeTree - https://clickhouse.yandex/docs/en/table_engines/collapsingmergetree.html
  • У нас похожая схема используется. Только мы используем ReplacingMergeTree и пишем данные сразу по всем колонкам. Они пересчитываются после получения новых эвентов о пользователе (посчитать, сагрегировать и пр. в КХ невозможно из-за особенностей бизнес-логики). Через словарь в КХ пробовал, но проблема словаря в том, что например на 250к строк есть определенный лаг, т.к. КХ почему то на каждый запрос лезет в MySQL и проверяет актуальность ключей (возможно я ошибаюсь и он берет из кеша, но все равно как то долго), поэтому вариант с MySQL у нас отвалился.
  • @pookieShmukie #25632 11:14 AM, 11 Sep 2017
    Лучше хранить где то старое состояние, например в redis, после вычисления новых данные, брать старое состояние, обновлять его и писать в КХ
  • @pookieShmukie #25633 11:15 AM, 11 Sep 2017
    Это будет куда быстрее, чем считать argMax
  • @firej #25634 11:30 AM, 11 Sep 2017
    Привет! скажите всетаки, как победить такую ошибку - DDLWorker: Will not execute task query-0000000066 : There is no a local address in host list
  • @firej #25635 12:13 PM, 11 Sep 2017
    я так понимаю от зукипера приходит задание с неправильным хостом и CH-сервер не находит себя в списке хостов. А где посмотреть эти задания сами. в консоли зукипера все как будто нормально отображается
  • @e11it #25636 12:35 PM, 11 Sep 2017
    У вас на всех узлах кластера настроен кластер?
  • @firej #25637 12:50 PM, 11 Sep 2017
    ну да
  • @firej #25638 12:50 PM, 11 Sep 2017
    <remote_servers>
    <replicator>
    <shard>
    ...
  • @andreyvaslv #25639 01:00 PM, 11 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @qweran #25640 01:00 PM, 11 Sep 2017
    Добрый день!

    Я ведь правильно понимаю, что при выполнении запроса:
    SELECT
    a,
    any(b),
    any(c)
    FROM table
    GROUP BY a
    нет гарантии что b и c будут из одной записи?
  • @pookieShmukie #25641 01:00 PM, 11 Sep 2017
    все верно
  • https://t.me/clickhouse_ru
    @orantius #25642 01:01 PM, 11 Sep 2017
    насколько я помню, any((b,c)) = (any(b),any(c))
  • https://t.me/clickhouse_ru
    @orantius #25643 01:01 PM, 11 Sep 2017
    так что второй вариант можно использовать.
  • https://t.me/clickhouse_ru
    @qweran #25644 01:03 PM, 11 Sep 2017
    Спасибо
  • @andreyvaslv #25645 01:05 PM, 11 Sep 2017
    Добрый день. Настраиваю работу 2 шардов по 2 реплики. Странное поведение: делаю вставки в distributed таблицу на 1-ом сервере, часть данных уходит на 4-ый (шардирование работает нормально), но не все данные попдают на сервер 3 с 4-го (реплики) и ничего не пишется на 2-ой (реплика первого)
  • @andreyvaslv #25646 01:05 PM, 11 Sep 2017
    в логах ReshardingWorker: no node, path: /clickhouse/task_queue/resharding/clickhouse1
  • @andreyvaslv #25647 01:07 PM, 11 Sep 2017
    CREATE TABLE video
    (
    ...
    ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/video', '{replica}', EventDate, cityHash64(URL), 8192);

    CREATE TABLE video_distributed AS video ENGINE = Distributed(statistics, default, video, cityHash64(domainWithoutWWW(URL)));
  • @andreyvaslv #25648 01:10 PM, 11 Sep 2017
    в конфигах

    <macros incl="macros">
    <shard>1</shard>
    <replica>clickhouse1-1</replica>
    </macros>

    <macros incl="macros">
    <shard>1</shard>
    <replica>clickhouse1-2</replica>
    </macros>

    <macros incl="macros">
    <shard>2</shard>
    <replica>clickhouse2-1</replica>
    </macros>

    <macros incl="macros">
    <shard>2</shard>
    <replica>clickhouse2-2</replica>
    </macros>
  • В Q4. Можно будет делать JOIN-ы без необходимости оборачивания всего в подзапросы и с обычным синтаксисом.
  • https://t.me/clickhouse_ru
    @hulponot #25650 01:17 PM, 11 Sep 2017
    Joined.
  • @430134182 #25651 01:17 PM, 11 Sep 2017
    Минимальной датой в DateTime тоже является 1970-01-01 как в Date ?
  • https://t.me/clickhouse_ru
    @hulponot #25652 01:23 PM, 11 Sep 2017
    Добрый день, подскажите пожалуйста по внешнему словарю.
    complex_key_cache смотрит в постгрес. Когда не находит записи по ключу, то кидает "RecordSet contains 0 columns while 5 expected", а в постгресе вижу висит запрост PREPARE ... с этим ключем.
    Вопрос примерно: почему иногда он умеет доставать несуществующую запись и заполнять дефолтными значениями, а иногда отваливается?
  • https://t.me/clickhouse_ru
    Спасибо за ответ. А стоит ожидать появление этого функционала до конца года? Или Q4 - дата начала разработки?
  • https://t.me/clickhouse_ru
    @hulponot #25654 01:39 PM, 11 Sep 2017
    >Результат у этого запроса непустой?
    Если с постгреса приходит пустой ответ (0 rows) на простой dictGetString('xxx', 'attr', tuple(guid,id)), так будет работать?
  • @pookieShmukie #25655 01:58 PM, 11 Sep 2017
    Есть дата и время, например 2017-09-11 14:44:01, ее как то функциями для работы с датами можно преобразовать в 2017-09-11 23:59:59? )
  • https://t.me/clickhouse_ru
    А зачем преобразовывать? Что хотите дальше с такой датой делать?
  • @pookieShmukie #25657 02:01 PM, 11 Sep 2017
    Мне нужно собрать общую продолжительность эвентов с группировкой по дням. Есть дата начала эвента и дата завершения эвента. Если эвент растянулся на пару дней, то нужно за эти несколько дней на каждый день посчитать продолжительность.
  • @pookieShmukie #25658 02:03 PM, 11 Sep 2017
    Можно проецировать на визиты. Есть время визита, например визит длился 15 минут. Начался визит 2017-09-10 23:55:00 а кончился 2017-09-11 00:10:00. И вот результат запроса должен быть типа

    2017-09-10 - 300
    2017-09-11 - 600
  • @pookieShmukie #25659 02:03 PM, 11 Sep 2017
    Хм, хотя я могу использовать timeSlots
  • @387449289 #25660 02:03 PM, 11 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25661 02:04 PM, 11 Sep 2017
    Округлить до даты можно так:
    1. toDate(date)
    2. substring(date, 1, 10)

    А что такое 300 и 600 в примере? Продолжительнось в секундах?
  • @pookieShmukie #25662 02:04 PM, 11 Sep 2017
    Да
  • @pookieShmukie #25663 02:05 PM, 11 Sep 2017
    Мне не округлить до даты нужно ) Мне нужно зная дату поставить ей время в 23.59.59 )
  • https://t.me/clickhouse_ru
    @orantius #25664 02:05 PM, 11 Sep 2017
    toStartOfDay()
  • @pookieShmukie #25665 02:05 PM, 11 Sep 2017
    Хотя это костыль. Сейчас попробую через timeSolts попробовать
  • @pookieShmukie #25666 02:05 PM, 11 Sep 2017
    Блин, точно....забыл про них совсем! Сори, что дернул глупым вопросом!
  • https://t.me/clickhouse_ru
    @vladenisov #25667 02:27 PM, 11 Sep 2017
    А нормально делать представление у реплицируемой таблицы тоже реплицированным? Синхронизация от этого не поломается?
  • @Cadovvl #25668 02:41 PM, 11 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov #25669 02:42 PM, 11 Sep 2017
    Нет, не поломается
  • @pookieShmukie #25670 02:43 PM, 11 Sep 2017
    Вобщем разобрался )
    Если кому будет интересно как например растянуть эвент и посчитать время эвента по дням, учитывая время начала и время окончания эвента, то можно вот так)

    SELECT toDate(started) + days as date,
    if (started > toStartOfDay(toDateTime(date)), started, toStartOfDay(toDateTime(date))) as dateStarted,
    if (toStartOfDay(toDateTime(date)) + 86399 > ended, ended, toStartOfDay(toDateTime(date)) + 86399) as dateEnded,
    started as oStarted,
    ended as oEnded,
    if (toDate(oStarted) != toDate(dateEnded), dateEnded - dateStarted + 1, dateEnded - dateStarted) as dateDuration
    FROM
    (
    SELECT
    toDateTime('2017-09-09 23:55:00') AS started,
    toDateTime('2017-09-12 14:00:00') AS ended,
    range(toUInt8(if(toDate(started) != toDate(ended), (toDate(ended) - toDate(started)) + 1, 1))) AS days,
    223500 as duration

    )
    ARRAY JOIN days
  • @pookieShmukie #25671 02:44 PM, 11 Sep 2017
    В финале должно получиться что-то вроде https://img.facedsid.ru/f2brp.jpg
  • @394410515 #25672 03:57 PM, 11 Sep 2017
    Joined.
  • @firej #25673 03:58 PM, 11 Sep 2017
    разобрались - в конфиге реплик был не правильный порт указан. Нужен 9000, а я обычный http порт прописал
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #25634 #25674 03:58 PM, 11 Sep 2017
    Для истории - в конфиге были напутаны номера портов в <replica>
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25678 06:24 PM, 11 Sep 2017
    Привет всем, как импортитровать пустую строку из csv? Там в таком виде data,,,data, как бы два столбца пустые
  • https://t.me/clickhouse_ru
    А как вы пробуете импортировать?
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25680 06:31 PM, 11 Sep 2017
    cat file.csv | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25681 06:41 PM, 11 Sep 2017
    И что пишет, когда выполняете эту команду?
  • https://t.me/clickhouse_ru
    Все нормально, со структроро не совпадало, спасибо
  • @lexasa #25683 07:08 PM, 11 Sep 2017
    Добрый вечер. Наткнулся на непонятное поведение Enum.
    :) select * from Order where Rebill='yes';

    SELECT *
    FROM Order
    WHERE Rebill = 'yes'

    Received exception from server:
    Code: 49. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Unknown element 'yes' for type Enum8('no' = 0, 'yes' = 1).

    0 rows in set. Elapsed: 0.068 sec.

    :) select Rebill,Count(*) from Order group by Rebill;

    SELECT
    Rebill,
    Count(*)
    FROM Order
    GROUP BY Rebill

    ┌─Rebill─┬─Count()─┐
    │ no │ 390136 │
    │ yes │ 302973 │
    └────────┴─────────┘

    2 rows in set. Elapsed: 0.011 sec. Processed 693.11 thousand rows, 693.11 KB (61.00 million rows/s., 61.00 MB/s.)

    Что может быть?
  • https://t.me/clickhouse_ru
    @Felixoid ↶ Reply to #25683 #25685 07:30 PM, 11 Sep 2017
    Уже были предложения не так давно про непечатные символы
  • @lexasa #25686 07:32 PM, 11 Sep 2017
    при описании таблицы задаются значения enum. они при группировке присутсвуют. но при выборке вылетает эта ошибка. поменял поле в таблице на строку и запрос работает.
  • https://t.me/clickhouse_ru
    @Felixoid #25687 08:04 PM, 11 Sep 2017
    ну, таки интересно
    https://pastebin.com/TEu0pu42
    @milovidov_an эмм, там прямо хеши разные
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #25688 08:04 PM, 11 Sep 2017
    у меня подобная проблема и она не решилась, у меня эта бага вылетает во время инсерта через infi.clickhouse_orm, причем баг мигающий какой-то
  • 12 September 2017 (207 messages)
  • https://t.me/clickhouse_ru
    @Sablast #25693 07:08 AM, 12 Sep 2017
    Всем привет! Если есть народ использующий в работе Microsoft PowerBI - создал голосвание на добавление коннектора к КХ: https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/31355041-add-connector-to-clickhouse
    p.s. если сами не используете, но знаете аналитиков которые используют - тоже киньте им ссылочку на голосование =)
    Add connector to ClickHouse

    ClickHouse is an open source column-oriented database management system capable of real time generation of analytical data reports using SQL queries. https://clickhouse.yandex/

  • https://t.me/clickhouse_ru
    @vyorkin #25694 08:26 AM, 12 Sep 2017
    Joined.
  • @Safronau #25695 08:56 AM, 12 Sep 2017
    Интересует по опыту, допустим, нет агрегаций в запросах и не планируется. Имеет ли смысл для репликации во избежание проблем со статическим dns использовать кафку а у подписчика будет простой инстанс КХ уже без репликаций. ( если рассмотреть для начала схему совсем утрированно, то льем данные на 2 сервера, а забираем с одного )
  • https://t.me/clickhouse_ru
    @k0tb9g9m0t #25696 09:51 AM, 12 Sep 2017
    @milovidov_an спасибо за odbc драйвер
  • @Nikqwag #25697 10:00 AM, 12 Sep 2017
    Доброго дня!
    Подскажите, пожалуйста, "testdb.test1 20170701_20170731_698330_700900_322" - первое и второе число понятно что, а остальные?
  • https://t.me/clickhouse_ru
    @hulponot #25698 10:03 AM, 12 Sep 2017
    Рассмотрим по порядку имя первого куска: 20140317_20140323_2_2_0.

    20140317 - минимальная дата данных куска
    20140323 - максимальная дата данных куска
    2 - минимальный номер блока данных
    2 - максимальный номер блока данных
    0 - уровень куска - глубина дерева слияний, которыми он образован

    (из доки)
  • @pookieShmukie #25699 10:03 AM, 12 Sep 2017
    А как clickhouse-client хранит историю запросов? Мне нужно из истории выдрать запрос :) Есть возможность как то локально прошерстить историю?
  • @Nikqwag ↶ Reply to #25698 #25700 10:04 AM, 12 Sep 2017
    просмотрел, спасибо!
  • @ztlpn ↶ Reply to #25699 #25701 10:04 AM, 12 Sep 2017
    В файле ~/.clickhouse-client-history
  • Супер! Спасибо! Пойду шерстить
  • Нашел все что нужно! Спасибо еще раз
  • @Safronau #25704 10:43 AM, 12 Sep 2017
    Представим, что есть select ... where <условие1>. Мне нужно выполнить сразу 500 подобных запросов. Что кликхаусу не рекомендуется. Но в целом select ... where <условие1> or <условие2> ... <условие 500> меня устроит. Только я вот думаю, так нормально или этим способом КХ не обмануть.
  • https://t.me/clickhouse_ru
    @Shegloff #25705 10:45 AM, 12 Sep 2017
    не могу из ReplicatedMergeTree дропнуть партицию, на drop partition и detach partition не реагирует, партиция остается на месте, никто с таким не сталкивался?
  • https://t.me/clickhouse_ru
    @Shegloff #25706 10:46 AM, 12 Sep 2017
    на обеих репликах несколько раз вчера и сегодня дропал, нифига
  • https://t.me/clickhouse_ru
    @Shegloff #25707 10:46 AM, 12 Sep 2017
    1.1.54236
  • @Safronau #25708 10:48 AM, 12 Sep 2017
    Алексей, вот и думаю, почитав этот чат, может заврапить репликацию через кафку, правда, пока мыслями не делятся.
  • Смотря какие условия. Если там условия из серии where userId = 1 or userId = 2 or userId = 3, то можно временную таблицу использовать
  • https://t.me/clickhouse_ru
    @Shegloff #25710 10:51 AM, 12 Sep 2017
    почему-то помогло выполнить команду drop partition 5-6 раз подряд, дропнулась :\
  • @Safronau ↶ Reply to #25709 #25711 10:51 AM, 12 Sep 2017
    Не понял для чего временная таблица то нужна?
  • @pookieShmukie #25712 10:51 AM, 12 Sep 2017
    Что бы в запрос не толкать 500 where userId = N
  • @pookieShmukie #25713 10:52 AM, 12 Sep 2017
    А сделать where user id in temp_table
  • @Safronau ↶ Reply to #25713 #25714 10:52 AM, 12 Sep 2017
    Не. У меня <= в основном.
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #25683 #25715 10:57 AM, 12 Sep 2017
    из документации:

    Большинство операций с числами и со строками не имеет смысла и не работают для Enum-ов: например, к Enum-у нельзя прибавить число. Для Enum-а естественным образом определяется функция toString, которая возвращает его строковое значение.

    кажется, что все верно, и нужно использовать toString
  • https://t.me/clickhouse_ru
    А зачем делать 500 запросов за раз?
  • @Safronau ↶ Reply to #25716 #25717 11:37 AM, 12 Sep 2017
    Вопрос больше не в том зачем ( мне 500 or условий даже лучше ), а как с точки зрения разработчиков субд это может повлиять на производительность, ибо для сотен запросов в секунду база не предназначена, а ситуация с or условиями весьма похожа на отдельные запросы.
  • https://t.me/clickhouse_ru
    Я делал один запрос с достаточно большим WHERE, порядка нескольких тысяч условий (OR и AND). Работало медлено, но всё равно сильно быстрее чем несколько сотен отдельных запросов
  • https://t.me/clickhouse_ru
    @kthx000 #25719 12:03 PM, 12 Sep 2017
    Всем привет, если я делаю запрос select a,b,c from t where .. таблица t имеет первичный ключ (a,b). то данные гаранированно буду отсортированы по a,b? т.е. смысла дописывать order by a,b нет?
  • Не факт. Смотря сколько блоков данных прочитается. Они всегда могут быть в случайном порядке, но внутри блока должны быть отсортированы по ключу, да.
  • @pookieShmukie #25721 12:06 PM, 12 Sep 2017
    Я с таким сталкивался уже
  • @pookieShmukie #25722 12:06 PM, 12 Sep 2017
    Когда из большой таблицы выбирал данные и например КХ читал несколько блоков данных и данные всегда были вперемешку
  • @pookieShmukie #25723 12:06 PM, 12 Sep 2017
    Возможно это применительно только к чтению из Distributed таблиц
  • @pookieShmukie #25724 12:06 PM, 12 Sep 2017
    На локальных таблицах не проверял
  • @Nikqwag #25725 12:08 PM, 12 Sep 2017
    Подскажите, пожалуйста, два шарда по две реплики. Очень редко, но бывает "part *** is lost forever". Посмотрел комментарии в исходниках. Сеть не падала, сервер не выключался и тому подобное.
    Интересует дальнейший механизм. Скажем, сервер написал "lost forever", допустим part-данных удалилась с реплики. Происходит какая-то проверка в дальнейшем, которая автоматически (средствами КХ) определит расхождение в данных на репликах шарда и восстановит "утраченное"? Или нужно что-то придумывать после того, как увидел подобную ошибку в логах?
  • @Nikqwag ↶ Reply to #25726 #25727 12:15 PM, 12 Sep 2017
    Да, спасибо, еще раз посмотрел, но сервер продолжает работать штатно, проблем в зукипере не наблюдается, detached - пустая.
    Можно ли считать обнадеживающим в этом случае (циатата из мана) "Если имеются небольшие несоответствия, то система устраняет их, синхронизируя данные с реплик" ?
  • Вообще должно работать автоматически, да. Где то в чатике поднимали вопрос о том как принудительно синхронизироваться с другой репликой. Нужно поискать
  • @Nikqwag ↶ Reply to #25728 #25729 12:17 PM, 12 Sep 2017
    еще раз спасибо, поищу
  • https://t.me/clickhouse_ru
    @kthx000 ↶ Reply to #25720 #25730 12:25 PM, 12 Sep 2017
    опытным путем установил что на локальных тоже так. спасибо
  • @tem19 #25731 12:28 PM, 12 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25732 01:10 PM, 12 Sep 2017
    Что за ошибка Expected end of line это в конце файла не хватает _eof или в конце строки?
  • @aprudaev #25733 01:12 PM, 12 Sep 2017
    не хватает '\n'
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25734 01:14 PM, 12 Sep 2017
    через head вывел первые строки, переносятся строки
  • https://t.me/clickhouse_ru
    @hulponot #25735 01:15 PM, 12 Sep 2017
    у меня так curl ругался, пока —data-binary не указал
  • @61322181 #25736 01:17 PM, 12 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25737 01:17 PM, 12 Sep 2017
    ну —data-binary это curl'a фишка
  • https://t.me/clickhouse_ru
    @nordluf #25738 01:26 PM, 12 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @StepanPodkin #25739 01:33 PM, 12 Sep 2017
    Joined.
  • @lexasa ↶ Reply to #25715 #25740 02:07 PM, 12 Sep 2017
    Я согласен что операции не имеют смысла, речь идет о сравнении на идентичность. Тут обратная операция - из строки приводится в число соответстующее значению Enum.
  • У меня такое было когда я пихал на инсерт зажатый файл, а заголовок о том, что он зажат не передавал
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25742 02:23 PM, 12 Sep 2017
    Да не у меня просто csv
  • А формат входных данных точно указан как CSV?
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25744 02:23 PM, 12 Sep 2017
    Да
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #25745 02:24 PM, 12 Sep 2017
    Я через head 1 строку заимпортил нормально
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @umaxfun #25747 02:25 PM, 12 Sep 2017
    Получилось вылечить 🙂
    vi /usr/local/lib/python2.7/site-packages/sql/run.py
    изменить как на скриншоте и
    rm /usr/local/lib/python2.7/site-packages/sql/run.pyc
    потом перезапустить ipython
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @feriat #25749 02:57 PM, 12 Sep 2017
    ВАУ! Спасибо, это решило проблему!! Давайте предложим тем ребятам pull request
    if 'mssql' not in str(conn.dialect) and 'clickhouse' not in str(conn.dialect):
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #25749 #25750 03:18 PM, 12 Sep 2017
    Я питон толком не знаю, так что если сделаете -- отлично 🙂
  • https://t.me/clickhouse_ru
    @Krashuevina #25753 04:07 PM, 12 Sep 2017
    День добрый!
    Мощно инсертим в клик, и наблюдаем следующую картину:
    Load average высокий, а общее потребление не очень высокое.
    В htop вижу попеременно BackgrProcPool и ParalInputProc.
    С какими настройками поиграться, чтобы LA отбросить? Тюнятся размеры этих пулов?
  • https://t.me/clickhouse_ru
  • @vstakhov #25755 04:09 PM, 12 Sep 2017
    в LA входит IO
  • @vstakhov #25756 04:09 PM, 12 Sep 2017
    (если это линукс, конечно)
  • https://t.me/clickhouse_ru
    Линукс, iowait меньше процента
  • https://t.me/clickhouse_ru
    @Krashuevina #25758 04:16 PM, 12 Sep 2017
    В iops тоже не упираемся (ssd)
  • https://t.me/clickhouse_ru
    @nikitosiusis #25759 04:19 PM, 12 Sep 2017
    а сеть ?)
  • Да, 500 условий лучше, чем 500 запросов.
    Будет работать быстрее хотя бы потому, что данные читаются за один проход.
  • https://t.me/clickhouse_ru
    5 mb/s )
  • Хорошо, что сейчас удаётся пользоваться. Последние несколько месяцев разработкой драйвера целиком занимается Павел https://github.com/artpaul
    artpaul - Overview

    artpaul has 6 repositories available. Follow their code on GitHub.

  • На Hyper-Threading CPU, загрузка половины логических процессорных ядер (отображается в вашем инструменте как 50%) фактически обозначает полное использование CPU.
  • Расхождения между репликами устраняются. Но part is lost forever говорит о том, что некоторого куска не будет на всех репликах и достать его неоткуда.
  • @Nikqwag ↶ Reply to #25764 #25765 04:34 PM, 12 Sep 2017
    оу, вот это печально, но благодаю за пояснение
  • Это говорит о том, что вернулся не пустой resultset, а что вообще ничего не вернулось. Я недостаточно знаю Postgres, чтобы понять, почему так происходит.
  • DROP PARTITION удаляет партицию из рабочего набора. Но в течение 8 минут она остаётся на файловой системе и в списке не active parts. После этого времени удаляется окончательно.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25753 #25768 04:37 PM, 12 Sep 2017
    В Ла входит много чего. Процессы в D state например. Вообще не надо только на Ла ориентироваться
  • https://t.me/clickhouse_ru
    @nordluf ↶ Reply to #24961 #25769 04:37 PM, 12 Sep 2017
    А язык будет английский или немецкий?
  • На английском.
  • @milovidov_an #25771 04:38 PM, 12 Sep 2017
    Так что приходите и приглашайте коллег, кому будет удобно!
  • @vstakhov #25772 04:40 PM, 12 Sep 2017
    было бы в UK...
  • А там ведь недалеко и должны быть дешёвые билеты.
  • https://t.me/clickhouse_ru
    @b0ch4r0v #25774 04:41 PM, 12 Sep 2017
    +1 за UK, но может заглянем и в Берлин
  • И конечно имеет смысл пригласить коллег. Можно хотя бы одного человека отправить вместо делегации :)
  • @vstakhov #25776 04:42 PM, 12 Sep 2017
    недалеко, но виза кончилась недавно
  • Как правило за неделю можно сделать.
  • @vstakhov #25778 04:42 PM, 12 Sep 2017
    а вы подаваетесь на фосдем в этом году, кстати?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25775 #25779 04:42 PM, 12 Sep 2017
    В UK нужна виза если ты по работе в ЕС и наоборот, нужен Шенген если ты работаешь в UK. Только гражданам ес хорошо
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25778 #25780 04:42 PM, 12 Sep 2017
    Рано ж еще
  • @vstakhov #25781 04:43 PM, 12 Sep 2017
    уже CFP
  • @vstakhov #25782 04:43 PM, 12 Sep 2017
    я сам думаю, но не знаю пока, об чем бы таком интересном расказать :)
  • https://t.me/clickhouse_ru
    @Civiloid #25783 04:43 PM, 12 Sep 2017
    Там в прошлом году был отдельный на keynote и track
  • У меня стоит пункт, что надо податься. Ещё ничего не продумал и не смотрел. Спасибо, что напомнили про CFP. А то в прошлый раз было довольно грустно - огромная толпа народа, а возможности по-нормальному рассказать нет.
  • https://t.me/clickhouse_ru
    @Civiloid #25785 04:44 PM, 12 Sep 2017
    @milovidov_an а ещё на монитораму в eu открыт cfp
  • @vstakhov #25786 04:44 PM, 12 Sep 2017
    да, есть там такая фигня
  • @vstakhov #25787 04:44 PM, 12 Sep 2017
    но фосдем еще ценен кулуарным общением, как и любая конференция, впрочем
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25784 #25788 04:44 PM, 12 Sep 2017
    Fosdem - 13 October deadline
  • https://t.me/clickhouse_ru
    @Civiloid #25789 04:45 PM, 12 Sep 2017
    Первый
  • https://t.me/clickhouse_ru
    @Civiloid #25790 04:45 PM, 12 Sep 2017
    И 3 ноября строгий
  • https://t.me/clickhouse_ru
    @Civiloid #25791 04:45 PM, 12 Sep 2017
    Для деврумов - 16 октября анонс какие будут и там будут пропозалы у каждого свои
  • @milovidov_an #25792 04:46 PM, 12 Sep 2017
    20 сентября - это что? Чтобы сказать - я буду делать свой devroom или чтобы вписаться в существующий?
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25792 #25793 04:46 PM, 12 Sep 2017
    До 20 сентября можно организовать деврум
  • https://t.me/clickhouse_ru
    @Civiloid #25794 04:46 PM, 12 Sep 2017
    16 октября они объявят какие деврумы будут
  • Скорее всего это не вариант для нас.
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25795 #25796 04:47 PM, 12 Sep 2017
    Вы я думаю в традиционный db devroom впишитесь
  • https://t.me/clickhouse_ru
    @Civiloid #25797 04:47 PM, 12 Sep 2017
    Впрочем может будет что то прям совсем тематическое
  • @vstakhov #25798 04:47 PM, 12 Sep 2017
    я бы подался на main track
  • @milovidov_an #25799 04:47 PM, 12 Sep 2017
    Надо посмотреть. А это сейчас надо делать или подождать?
  • @vstakhov #25800 04:47 PM, 12 Sep 2017
    деврумы говно
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25799 #25801 04:48 PM, 12 Sep 2017
    Лучше подайтесь в мейн, да
  • @vstakhov #25802 04:48 PM, 12 Sep 2017
    или надо делать свой деврум, с преферансом и прелестницами
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25800 #25803 04:48 PM, 12 Sep 2017
    Мониторинг мне в прошлом году поправился
  • @vstakhov #25804 04:48 PM, 12 Sep 2017
    я в том плане, что там очень трудно общаться - нет места
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25804 #25805 04:48 PM, 12 Sep 2017
    Там как повезет, да
  • https://t.me/clickhouse_ru
    @Civiloid #25806 04:49 PM, 12 Sep 2017
    Иногда запихивают в семинарскую аудиторию
  • https://t.me/clickhouse_ru
    @Civiloid #25807 04:49 PM, 12 Sep 2017
    И народ толпится снаружи
  • @vstakhov #25808 04:50 PM, 12 Sep 2017
    ну я не смог впихнуться ни на один интересный мне доклад в прошлом году
  • @vstakhov #25809 04:50 PM, 12 Sep 2017
    или слушал стоя, что не слишком приятно
  • https://t.me/clickhouse_ru
    @Civiloid #25810 04:53 PM, 12 Sep 2017
    Да, верно
  • https://t.me/clickhouse_ru
    @erzentd #25811 04:55 PM, 12 Sep 2017
    у многих периприятий космические цены
  • @vstakhov #25812 04:55 PM, 12 Sep 2017
    fosdem бесплатный
  • @vstakhov #25813 04:55 PM, 12 Sep 2017
    и очень клевый в плане тусовки
  • https://t.me/clickhouse_ru
    @erzentd #25814 04:55 PM, 12 Sep 2017
    у меня знакомый поехал на конфу по вмтвари в барселону, 9к евро был билет
  • @vstakhov #25815 04:56 PM, 12 Sep 2017
    а это не развод ли какой, случаем? :)
  • https://t.me/clickhouse_ru
    @erzentd #25816 04:57 PM, 12 Sep 2017
    нет, это хрень для тех кто является их партнёрами и имеет их сертификаты на внедрение и тп
  • https://t.me/clickhouse_ru
    @erzentd #25817 04:57 PM, 12 Sep 2017
    интеграторы ездят на такое
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25815 #25818 04:58 PM, 12 Sep 2017
    Это такая взятка обычно
  • https://t.me/clickhouse_ru
    @Civiloid #25819 04:58 PM, 12 Sep 2017
    У крупных вендоров есть вендорские конфы
  • https://t.me/clickhouse_ru
    @Civiloid #25820 04:58 PM, 12 Sep 2017
    С конским ценником
  • @vstakhov #25821 04:58 PM, 12 Sep 2017
    ну то есть, прайс за всякие странные конференции баксов в 500 я понимаю
  • https://t.me/clickhouse_ru
    @Civiloid #25822 04:59 PM, 12 Sep 2017
    Иногда очень клевым партнёрам дарят на них билеты
  • @vstakhov #25823 04:59 PM, 12 Sep 2017
    вон, наша email конфочка примерно такая
  • https://t.me/clickhouse_ru
    @Civiloid #25824 04:59 PM, 12 Sep 2017
    Типа вы купили у нас на 5 лямов евро? Билет на конфу на 1 сотрудника в подарок
  • @vstakhov #25825 04:59 PM, 12 Sep 2017
    раньше была техническая, а сейчас сплошные менеджеры катаются
  • https://t.me/clickhouse_ru
    @Civiloid #25826 04:59 PM, 12 Sep 2017
    Желательно того кто уговорил вас сделать эту глупость
  • @vstakhov #25827 04:59 PM, 12 Sep 2017
    ваши (из яндекса), кстати, тоже
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25827 #25828 05:00 PM, 12 Sep 2017
    Я не в Яндексе
  • @vstakhov #25829 05:00 PM, 12 Sep 2017
    ну, значит, других "ваши"
  • https://t.me/clickhouse_ru
    @erzentd ↶ Reply to #25825 #25830 05:00 PM, 12 Sep 2017
    эт да
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25814 #25831 05:00 PM, 12 Sep 2017
    Конфа дороже 800 за билет - очень вероятно развод
  • https://t.me/clickhouse_ru
    @Civiloid #25832 05:01 PM, 12 Sep 2017
    И вот хороших конф по пальцам одной руки
  • https://t.me/clickhouse_ru
    @erzentd ↶ Reply to #25831 #25833 05:01 PM, 12 Sep 2017
    для того чтобы поддерживать статус партнёра обязаловка на них бывать
  • https://t.me/clickhouse_ru
    @Civiloid #25834 05:01 PM, 12 Sep 2017
    Все что usenixовое норм (srecon, Lisa и пр)
  • https://t.me/clickhouse_ru
    @Civiloid #25835 05:01 PM, 12 Sep 2017
    Monitorama
  • https://t.me/clickhouse_ru
    @Civiloid #25836 05:01 PM, 12 Sep 2017
    Fosdem
  • https://t.me/clickhouse_ru
    @Civiloid #25837 05:01 PM, 12 Sep 2017
    И кажется все
  • @vstakhov #25838 05:02 PM, 12 Sep 2017
    usenix больше научные конференции
  • @vstakhov #25839 05:02 PM, 12 Sep 2017
    тоже там трешака хватает
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25838 #25840 05:02 PM, 12 Sep 2017
    Там разные. Srecon вот нет
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25839 #25841 05:02 PM, 12 Sep 2017
    Он в целом выше уровнем
  • https://t.me/clickhouse_ru
    @Civiloid #25842 05:02 PM, 12 Sep 2017
    На фосдеме тоже
  • @vstakhov #25843 05:02 PM, 12 Sep 2017
    ну да, но он не практический
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25843 #25844 05:03 PM, 12 Sep 2017
    Фосдем? Он разный
  • @vstakhov #25845 05:03 PM, 12 Sep 2017
    с фосдемом тоже не очень все понятно - вон, Саша Крижановский из темпесты рассказывал про парсинг http на avx2
  • @vstakhov #25846 05:03 PM, 12 Sep 2017
    так ни одного вопроса даже не задали
  • https://t.me/clickhouse_ru
    @Civiloid #25847 05:03 PM, 12 Sep 2017
    Там может в один день рассказать Твиттер про свою инфраструктуру и чувак про то как он метрики собирал на saltstack
  • @vstakhov #25848 05:03 PM, 12 Sep 2017
    уровень аудитории не тот
  • https://t.me/clickhouse_ru
    @Civiloid #25849 05:03 PM, 12 Sep 2017
    В одной комнате, подряд
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25845 #25850 05:04 PM, 12 Sep 2017
    Угу мой доклад про графит пока там лучше всего зашел
  • https://t.me/clickhouse_ru
    @Civiloid #25851 05:04 PM, 12 Sep 2017
    Из 4х конференций
  • @vstakhov #25852 05:05 PM, 12 Sep 2017
    ну, я там про Rspamd рассказывал. не надо было сильно в детали углубляться, а надо было побольше картинок показать :)
  • @vstakhov #25853 05:05 PM, 12 Sep 2017
    аудиторию надо всегда оценивать трезво
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #25853 #25854 05:06 PM, 12 Sep 2017
    Да вот фиг ты ее узнаешь заранее
  • https://t.me/clickhouse_ru
    А запись есть?
  • @vstakhov #25856 05:09 PM, 12 Sep 2017
    там всего есть запись AFAIK
  • @vstakhov #25857 05:09 PM, 12 Sep 2017
    или почти всего
  • https://t.me/clickhouse_ru
    @Unkledolan #25858 05:10 PM, 12 Sep 2017
    Да, нашел
  • https://t.me/clickhouse_ru
    @Civiloid #25859 05:10 PM, 12 Sep 2017
    Они традиционно продалбывают каждый год 1-10% записей
  • https://t.me/clickhouse_ru
    @Unkledolan #25860 05:10 PM, 12 Sep 2017
    Интересно, что они в ядре с этим работают
  • @vstakhov #25861 05:12 PM, 12 Sep 2017
    с avx2?
  • @vstakhov #25862 05:12 PM, 12 Sep 2017
    так-то в ядре это даже проще
  • @vstakhov #25863 05:13 PM, 12 Sep 2017
    прибил нитку к ядру, и не паришься, если в юзерспейсе это никто не трогает
  • https://t.me/clickhouse_ru
    @Civiloid #25864 05:13 PM, 12 Sep 2017
    Так то асм и в Африке асм
  • @vstakhov #25865 05:13 PM, 12 Sep 2017
    нет, там основная сложность в context switch
  • @vstakhov #25866 05:13 PM, 12 Sep 2017
    в плане avx2 он очень дорогой
  • @vstakhov #25867 05:13 PM, 12 Sep 2017
    потому что нужно сохранять кучу огромных регистров
  • https://t.me/clickhouse_ru
    @Civiloid #25868 05:17 PM, 12 Sep 2017
    А, это да
  • https://t.me/clickhouse_ru
    Скорее обработка трафика и около ddos
  • https://t.me/clickhouse_ru
    @archimed_shaman #25870 05:19 PM, 12 Sep 2017
    привет, а можно без сильных исхищрений получить порядковый номер строки в резалтсете с учетом агрегаций и лимитов? чтобы, например, запрос
    select rank(), report_date, domain, sum(visits) as visits from dbreports.rank_all group by domain,report_date order by visits desc limit 5,5
    содержал столбец rank со значениями 5..10?
  • @Safronau ↶ Reply to #25760 #25871 05:22 PM, 12 Sep 2017
    Спасибо. Но тогда ещё вопрос. Если я в where с оптимизирую or / and / скобочки, можно ли предплагать, что для or если первое выражение true, то дальше считать не будет ( и тоже самое для and/false) , не нашел в доке.
  • https://t.me/clickhouse_ru
    @orantius #25872 05:22 PM, 12 Sep 2017
    дальше считать будет.
  • @Safronau ↶ Reply to #25872 #25873 05:23 PM, 12 Sep 2017
    То есть оптимизировать и не стоит
  • Да, можно. SELECT rowNumberInAllBlocks(), * FROM (your query)
  • https://t.me/clickhouse_ru
    @orantius ↶ Reply to #25873 #25875 05:25 PM, 12 Sep 2017
    смотря что вы имеете в виду. если вы статически можете упростить выражение перед отправлением его в запрос, так что оно станет меньше и будет выполняться быстрее, то почему бы и нет.
  • https://t.me/clickhouse_ru
    да, похоже, что работает, спасибо, только пришлось вынести limit за скобки
    SELECT rowNumberInAllBlocks(), * FROM (select domain from dbreports.rank_all where report_date='2017-07-01' group by domain,report_date order by sum(visits) desc) limit 5,5
  • @Safronau ↶ Reply to #25875 #25877 05:37 PM, 12 Sep 2017
    Ясно. Было бы здорово конечно иметь возможность забиндить свою сишную функцию для where. Она никогда не пригодится остальному миру, а форкать и пересобирать КХ не охота.
  • @andrewkovalyov #25878 05:45 PM, 12 Sep 2017
    а планируется http://repo.yandex.ru/clickhouse/ для yaketty/zesty? на убунту 17.04 не ставится из репозитория
  • https://t.me/clickhouse_ru
    @kotchuprik #25879 05:48 PM, 12 Sep 2017
    через докер запускай ))
  • https://t.me/clickhouse_ru
    @proller #25881 06:13 PM, 12 Sep 2017
    yaketty кончилась летом.
    а для zesty можно через pbuilder собрать
  • да, меня просто насторожило что для нее пакетов и не появилось
  • @andrewkovalyov #25883 06:25 PM, 12 Sep 2017
    LTS наше все?
  • https://t.me/clickhouse_ru
    @proller #25884 06:27 PM, 12 Sep 2017
    есть идея собирать один универсальный пакет для всех
  • https://t.me/clickhouse_ru
    @proller #25885 06:28 PM, 12 Sep 2017
    на самом деле сейчас пакеты почти универссальные, но у них зависимость от версии libc6 не очень нужная
  • 👍🏻
  • @vstakhov #25887 06:38 PM, 12 Sep 2017
    больше собирать статиком - больше эффект от lto
  • https://t.me/clickhouse_ru
    @proller #25888 06:42 PM, 12 Sep 2017
    оно уже совсем статическое в пакете, но дебиан вствляет жесткие зависимости Depends: libc6 (>> 2.19), libc6 (<< 2.20)
  • https://t.me/clickhouse_ru
    @nordluf #25889 07:22 PM, 12 Sep 2017
    Скажите плиз, а где дока более актуальна - в русской или английской версии?
  • @milovidov_an #25890 07:35 PM, 12 Sep 2017
    В русской более актуальна.
  • https://t.me/clickhouse_ru
    @nordluf #25891 07:37 PM, 12 Sep 2017
    Спасибо
    А вообще тут допустимо глупые вопросы задавать?
    Я слышал в одном из видео с митапа что готовы пакеты для центоса и рхел, в доке об этом нету. Это дока устарела?
  • Да, можно любые вопросы задавать.

    Про пакеты для RHEL - мы говорили, что они сделаны внешними людьми.
    Находятся здесь: https://github.com/Altinity/clickhouse-rpm-install

    А в документацию забыли добавить.
    GitHub - Altinity/clickhouse-rpm-install: How to install clickhouse RPM packages

    How to install clickhouse RPM packages. Contribute to Altinity/clickhouse-rpm-install development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #25885 #25896 07:54 PM, 12 Sep 2017
    дико плюсану этот моментище. Из-за этого на сыром метале невозможно поставить R и clickhouse-client на одной машинке
  • https://t.me/clickhouse_ru
    @qweran #25897 08:41 PM, 12 Sep 2017
    Кто-нибудь сталкивался с проблемой:
    Clickhouse не подхватывает прописанный макрос до перезагрузки, при этом в config-preprocessed.xml все макросы отображаются?
  • @milovidov_an #25898 08:56 PM, 12 Sep 2017
    Насколько я помню, макросы просто не обновляются без перезагрузки.
  • @milovidov_an #25899 08:56 PM, 12 Sep 2017
    Очень мало частей конфигурации вступает в силу без перезагрузки: всё что в users.xml, все dictionaries и remote_servers.
  • @430134182 #25900 09:01 PM, 12 Sep 2017
    Прошу прощения за глупый вопрос. Кто использовал infi.clickhouse_orm для импорта данных в CH, как наиболее эффективно заполнять поля для сконфигурированных классов таблиц ? Я формирую pandas DataFrame размером один батч с данными из имеющейся базы, заполняю где был null стандартными значениями, проверяю приведение и начинаю формировать объекты для каждой строки через .setattr(x, value). занимает это порядка 3с на 1000 объектов с 122 полями. Мб возможно оптимизировать работу через другие коннекторы ? Спасибо.
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #25899 #25901 09:05 PM, 12 Sep 2017
    Понял, спасибо!
  • Я могу только заметить, что это действительно очень медленно. Но я сам не пользовался этим драйвером и не могу сказать, что тормозит - драйвер или Pandas.
  • Pandas выполняет все свои проверки быстро и над всеми полями. Меня в силу недостатка знаний смущает конструкция последовательного прохода по всем 122 параметрам для каждого из 1000 объектов.
  • @asolodkov #25904 10:13 PM, 12 Sep 2017
    Доброй ночи. Ребят подскадите есть ли чат по API отчетов v1 для AppMetrica? Интересует, можно ли группировать не только по трекерам, но и по меткам, которые используются в этих трекерах.
  • @ashwets ↶ Reply to #25900 #25905 10:40 PM, 12 Sep 2017
    Попробуйте наш нативный драйвер https://github.com/mymarilyn/clickhouse-driver
    Есть обёртка для sqlalchemy https://github.com/xzkostyan/clickhouse-sqlalchemy
    GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

    ClickHouse Python Driver with native interface support - GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

  • 13 September 2017 (83 messages)
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #25905 #25911 07:48 AM, 13 Sep 2017
    GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

    ClickHouse Python Driver with native interface support - GitHub - mymarilyn/clickhouse-driver: ClickHouse Python Driver with native interface support

  • https://t.me/clickhouse_ru
    @edyya #25912 07:48 AM, 13 Sep 2017
    Начал его использовать. Работает хорошо
  • А в вашей обертке для алхимии есть поддержка функций с лямбдами?
  • @ashwets #25914 08:30 AM, 13 Sep 2017
    Это лучше ответит сам автор @tkostyan
  • https://t.me/clickhouse_ru
    @tkostyan ↶ Reply to #25913 #25915 08:31 AM, 13 Sep 2017
    Функций в плане прокси в виде func.do_smth()? Можно пример того что хочется?
  • например, я хочу использовать какую-нибудь функцию работы с массивами, где есть лямбда:
    SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res
  • https://t.me/clickhouse_ru
    @tkostyan #25917 08:49 AM, 13 Sep 2017
    В виде оператора этого пока нет. Можете попробовать это сделать в виде вызова функции func.lambda(x, expr)
  • спасибо, посмотрю
  • https://t.me/clickhouse_ru
    @tkostyan #25919 08:54 AM, 13 Sep 2017
    Хотя, это тоже не выйдет из-за зарезервированности "lambda" в питоне.
  • @34849834 #25920 09:20 AM, 13 Sep 2017
    Joined.
  • @Santttal #25921 09:28 AM, 13 Sep 2017
    Joined.
  • @pookieShmukie #25922 09:43 AM, 13 Sep 2017
    А почему при записи 1970-01-01 в колонку типа Date я получаю 0000-00-00 вместо 1970-01-01? )
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25923 10:12 AM, 13 Sep 2017
    а зачем вообще писать такую дату?
  • Зачем вообще писать дату? )
  • @pookieShmukie #25925 10:13 AM, 13 Sep 2017
    Есть например справочник всех войн и там куча показателей
  • @pookieShmukie #25926 10:13 AM, 13 Sep 2017
    И например дата войны до юниксовой эпохи
  • @pookieShmukie #25927 10:14 AM, 13 Sep 2017
    Это просто как пример привязки даты к событию
  • @pookieShmukie #25928 10:14 AM, 13 Sep 2017
    Таких кейсов может быть много
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #25929 10:14 AM, 13 Sep 2017
    тогда пиши строку, а не дату
  • https://t.me/clickhouse_ru
    @negashev #25930 10:15 AM, 13 Sep 2017
    превращать в timestamp? и пилить в int?
  • https://t.me/clickhouse_ru
    @arzonus #25931 10:15 AM, 13 Sep 2017
    Формат date же хранится в unix time если я не ошибаюсь
  • @pookieShmukie #25932 10:15 AM, 13 Sep 2017
    ...
  • https://t.me/clickhouse_ru
    да, верно
  • https://t.me/clickhouse_ru
    @arzonus #25934 10:16 AM, 13 Sep 2017
    Нам к примеру нужны милли или микросекунды. К сожалению приходится хранить 3 поля
    local_date, local_time, local_time_ns
  • Как вариант, только никакие операции не произведешь. Например среднюю продолжительность мирного времени не посчитаешь ) бред сумасшедшего, но все же )
  • https://t.me/clickhouse_ru
    @negashev #25936 10:19 AM, 13 Sep 2017
    почему? вычесть из int-int и перемножить до дней-недель-месяцев, у меня вроде в компании ребята все время пилят в timestamp и места меньше и проще вроде в коде работать
  • https://t.me/clickhouse_ru
    @negashev #25937 10:19 AM, 13 Sep 2017
    Как вариант, только никакие операции не произведешь. Например среднюю продолжительность мирного времени не посчитаешь ) бред сумасшедшего, но все же )
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #25926 #25938 10:21 AM, 13 Sep 2017
    работайте со сдвигом на 2000 лет )
  • @pookieShmukie #25939 10:24 AM, 13 Sep 2017
    Инт без сдвига нет смысла использовать. 0 значение будет первое января 1970 года, а мне надо раньше ) вот и получается, что нужно двигать, да
  • @pookieShmukie #25940 10:25 AM, 13 Sep 2017
    Причем сдвиг в 2000 лет должен учитывать високосные года )
  • https://t.me/clickhouse_ru
    @negashev #25941 10:26 AM, 13 Sep 2017
    блин, тоже верно
  • @danton0v #25942 11:52 AM, 13 Sep 2017
    Есть такой запрос (из Табло)
    SELECT Custom_SQL_Query.date AS date, SUM((CASE WHEN Custom_SQL_Query.uv = 0 THEN NULL ELSE CAST(Custom_SQL_Query.vv AS FLOAT) / Custom_SQL_Query.uv END)) AS sum_vv__copy__ok FROM ( SELECT subsite_id, subsite, date, percent_view ) Custom_SQL_Query WHERE (Custom_SQL_Query.subsite IN ('Gambit', 'Gambit-html5-android', 'Gambit-html5-ios')) GROUP BY date
    КХ возвращает Internal error

    вот кусок лога https://pastebin.com/78ShXb0J
  • @danton0v #25944 12:08 PM, 13 Sep 2017
    так работает
    case when uniqExact(uid)=0 then 0 else cast(count() as Float) / uniqExact(uid) end
    а так нет
    case when uniqExact(uid)=0 then NULL else cast(count() as Float) / uniqExact(uid) end
  • https://t.me/clickhouse_ru
    А зачем в CASE выполнять преобразование cast(count() as Float?
  • @danton0v #25946 12:10 PM, 13 Sep 2017
    я не знаю как в КХ, но где-то деление целого на целое будет в результате целое, а надо вещественное
  • @danton0v #25947 12:10 PM, 13 Sep 2017
    и Табло генерит каст по умолчанию
  • @danton0v #25948 12:10 PM, 13 Sep 2017
    да и не в касте мне кажется дело, а в операция с участием NULL
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25949 12:13 PM, 13 Sep 2017
    Возможно дело в том, что в КХ NULL добавлен относительно недавно, и что-то ещё не до конца поддерживает NULL.
    На это указывает, что замена на явное указание 0 работает
  • https://t.me/clickhouse_ru
    @umaxfun #25950 12:26 PM, 13 Sep 2017
    а есть ли функция типа
    URLPathHierarchy('https://example.com/browse/CONV-6788') =
    [
    '/browse/',
    '/browse/CONV-6788'
    ]
    но чтобы вернула
    URLPathHierarchy2('https://example.com/browse/CONV-6788') =
    [
    'browse',
    'CONV-6788'
    ]
    ?
  • @emptyname #25951 12:28 PM, 13 Sep 2017
    splitByChar не пйодет?
  • https://t.me/clickhouse_ru
    @umaxfun #25952 12:31 PM, 13 Sep 2017
    О, и точно 🙂
  • https://t.me/clickhouse_ru
    @umaxfun #25953 12:32 PM, 13 Sep 2017
    select splitByChar('/', path(URL))[2] from qwe
  • @igorl86 ↶ Reply to #25683 #25954 01:19 PM, 13 Sep 2017
    Ну кстати у меня вот снова проблема повторилась и снова с отрицательным Enum-ом. Не понимаю пока в чем дело и как лечить.
    Есть две таблицы, в них объявлен один и тот же Enum, но одна позволяет селектить по условию EnumName='UNKNOWN' а другая не повзоляет, требуется кастовать.
  • https://t.me/clickhouse_ru
    Схему таблиц укажите
  • @igorl86 #25956 01:23 PM, 13 Sep 2017
    причем, что еще интереснее, в Enum'е 3 значения: Enum8('UNKNOWN' = -1, 'FALSE' = 0, 'TRUE' = 1)
    Вот эти два валятся с ошибками:
    select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='UNKNOWN' limit 1
    select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='TRUE' limit 1

    А вот этот отрабатывает:
    select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='FALSE' limit 1
  • @igorl86 ↶ Reply to #25955 #25957 01:24 PM, 13 Sep 2017
    В смысле показать здесь структуру проблемных таблиц?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25958 01:25 PM, 13 Sep 2017
    Да
  • @igorl86 #25959 01:29 PM, 13 Sep 2017
    Field1 String
    Field2 Enum8(\'UNKNOWN\' = 0, \'WINDOWS\' = 1, \'ANDROID\' = 2)
    Field3 DateTime
    Field4 FixedString(16)
    Field5 Nullable(String)
    Field6 Nullable(String)
    Field7 Nullable(String)
    Field8 DateTime
    Field9 Enum8(\'V1\' = 1, \'V2\' = 2, \'V3\' = 3, \'V4\' = 4, \'V5\' = 5)
    Field10 Nullable(String)
    Field11 UInt32
    Field12 FixedString(2)
    Field13 UInt32
    Field14 String
    Field15 Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1)
    SendAnonStats Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1)
    ParentalControlEnabled Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1)
    Field16 Enum8(\'UNKNOWN\' = 0, \'EXPIRED\' = 1)
    Field17 Nullable(UInt32)
    Field18 Array(String)
    Field19 Array(String)
    Field20 Array(UInt32)
    Field21 Enum8(\'UNKNOWN\' = 0, \'EXPIRED\' = 1, \'FREE\' = 2)
  • @igorl86 #25960 01:30 PM, 13 Sep 2017
    соответственно проблема на полях Field15, SendAnonStats, ParentalControlEnabled
  • @igorl86 #25961 01:30 PM, 13 Sep 2017
    как и в прошлый раз, на полях с отрицательными значениями
  • @igorl86 #25962 01:31 PM, 13 Sep 2017
    причем значения енума UNKNOWN и TRUE фейлятся на всех трех филдах, значение FALSE на всех трех филдах работает нормально
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25963 01:35 PM, 13 Sep 2017
    А для поля Field2 работает нормально? Может дело в том, что в проблемных полях есть значения с -1?
  • @igorl86 #25964 01:35 PM, 13 Sep 2017
    да, проблема в отрицательных значениях
  • @igorl86 #25965 01:36 PM, 13 Sep 2017
    я второй раз замечаю эту проблему, и второй раз на енумах с отрицательным значением
  • @igorl86 #25966 01:36 PM, 13 Sep 2017
    но при этом проблема плавающая
  • @igorl86 #25967 01:36 PM, 13 Sep 2017
    то есть у меня рядом есть таблица где тот же самый енум работает нормально
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #25969 01:38 PM, 13 Sep 2017
    Судя по описанию доки
    https://clickhouse.yandex/docs/ru/data_types/enum.html?highlight=enum
    лично у меня сомнение, что если указать отрицательное значение, оно в какой-то ситуации может пытаться кастоваться как Int8. Что и проводит к ошибке
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #25964 #25970 01:40 PM, 13 Sep 2017
    а можете приготовить готовый минимальный тест в котором будет видно что падает ?
  • https://t.me/clickhouse_ru
    @proller #25971 01:40 PM, 13 Sep 2017
    просто sql c create .. insert .. select...
  • @igorl86 ↶ Reply to #25969 #25972 01:42 PM, 13 Sep 2017
    То есть вместо Enum'a оно где то кастуется как Int8?
  • https://t.me/clickhouse_ru
    Это предположение
  • @igorl86 #25974 01:43 PM, 13 Sep 2017
    угу, я понял. минимальный тест сейчас пытаюсь сделать, оно не всегда повторяется.
  • @igorl86 #25975 02:19 PM, 13 Sep 2017
    в общем вот это сообщение выскакивает тогда, когда таблица создается через http интерфейс и имеет неправильный порядок (отрицательных?) значений, например вот такой TRUE(1), FALSE(0), UNKNOWN(-1)
  • @igorl86 #25976 02:20 PM, 13 Sep 2017
    Поменял порядок на возрастающий и попустило. Причем при создании таблицы через родной клиент кликхауза - проблемы нет
  • @igorl86 #25977 02:20 PM, 13 Sep 2017
    еще поиграюсь и формализую на гитхабе
  • https://t.me/clickhouse_ru
    @v9lijj #25978 02:50 PM, 13 Sep 2017
    Всем привет!
    Сегодня столкнулся с очень неприятной ситуацией.

    Есть кластер из 4 шардов и у каждого шарда по реплике.
    Внезапно на одном из шардов во всех запросах к таблице с ограничением по дате (например WHERE d_event_date=today()) сервер начал процессить все строки за все дни в партиции за текущий месяц. В итоге получилось, что на трех шардах запрос для обработки использует 50 миллионов строк, а на одно четвертом 1,2 миллиарда (что составляем количество строк за весь сентябрь). Та же ситуация и на реплике этого шарда.

    Единственный вариант - пересоздавать таблицы и перегонять данные, но это очень больно (

    Никто не сталкивался с такой проблемой у себя?
  • https://t.me/clickhouse_ru
    @v9lijj #25979 02:51 PM, 13 Sep 2017
    Нашел в доке крутую команду OPTIMIZE, которая
    Просит движок таблицы сделать что-нибудь, что может привести к более оптимальной работе.
    но чет толку мало.
  • @andreyvaslv #25980 02:52 PM, 13 Sep 2017
    Друзья, как очистить таблицу с репликацией?
  • @igorl86 #25981 03:34 PM, 13 Sep 2017
    подскажите плиз, а подзапросы с условиями в КХ работают?
    хочется написать что-то вроде:
    SELECT DateAdded, (SELECT count() FROM t2 WHERE t2.DateAdded=t1.DateAdded) as Count FROM t1
  • https://t.me/clickhouse_ru
    @orantius #25982 03:39 PM, 13 Sep 2017
    коррелированные подзапросы не работают, джойны работают.
  • @igorl86 #25983 03:40 PM, 13 Sep 2017
    спасибо
  • @445895556 #25984 04:13 PM, 13 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #25982 #25985 04:17 PM, 13 Sep 2017
    А будут? Вроде бы дело запланировано
  • @pookieShmukie #25986 04:32 PM, 13 Sep 2017
    Джоины начали поддерживать условия? оО
  • @pookieShmukie #25987 04:32 PM, 13 Sep 2017
    Или там только равенство?
  • https://t.me/clickhouse_ru
    @Mike_Er #25988 04:33 PM, 13 Sep 2017
    Добрый день,
    подскажите плиз, работает ли в данный момент решардинг?
    Как только не пытался его завести, получаю
    Code: 325. DB::Exception: Received from localhost:9000, ::1. DB::Exception: This host is not allowed to subscribe to coordinator coordinator-0000000008.

    Задача - расширить кластер новыми шардами. Может быть есть еще какой-то способ. Сдампить, расширить, залить в новое не подойдет, объем данных уже большой.
  • https://t.me/clickhouse_ru
    Только равенство, причем колонки должны называться одинаково
  • https://t.me/clickhouse_ru
    @tourtechannel #25990 04:53 PM, 13 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @tourtechannel #25991 04:55 PM, 13 Sep 2017
    Коллеги, привет!
    На RIW 2017 ищу рекламодателя, который может поделиться опытом использования clickhouse.
  • https://t.me/clickhouse_ru
    @tourtechannel #25992 04:55 PM, 13 Sep 2017
    Есть тут такие?)
  • @pookieShmukie #25993 04:55 PM, 13 Sep 2017
    А, тогда ничего нового ) думал пропустил что-то важное )
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #25988 #25994 06:23 PM, 13 Sep 2017
    Решардинг сейчас не поддерживается.
  • @442961156 #25995 07:25 PM, 13 Sep 2017
    Joined.
  • 14 September 2017 (99 messages)
  • @vkudrik ↶ Reply to #25991 #26000 07:29 AM, 14 Sep 2017
    Есть, но из Украины:)
  • https://t.me/clickhouse_ru
    А что за клиент?
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #25994 #26002 08:03 AM, 14 Sep 2017
    А не подкажете какой-нибудь способ _на живую_ увеличить количество шардов в кластере? Хотелось бы конечно еще и данные не протерять при этом :)
  • @sordes_pilosus #26003 09:30 AM, 14 Sep 2017
    Вопрос не про КХ, а про табикс. Может быть, у кого-то есть опыт
  • @sordes_pilosus #26004 09:30 AM, 14 Sep 2017
    Кто-нибудь знает, с чем связано ограничение tabix на Not readonly CH user? И можно ли это как-то обойти?
    Конечно, там поддерживается readonly = 2, но это позволяет сделать SET profile = 'blah-blah' и обойти ограничения, которые хотелось поставить на юзеров табикса
  • https://t.me/clickhouse_ru
    Мы делали по-простому: создавали аналогичные таблицы заново на всех шардах, меняли distributed-таблицу, куда инсертили данные. старые данные перелили через insert into ... select * from ... Можно по партициям это делать, если с местом плохо.
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #26005 #26006 09:40 AM, 14 Sep 2017
    Спасибо, я думаю создать новый кластер поверх дополнительного оборудования и также копией таблиц.
  • При каждом запросе я посылаю add_http_cors_header=1&log_queries=1
  • а что это дает? в дев тулз браузера я тоже вижу у нас эти параметры при запросах
  • @garikanet #26009 09:52 AM, 14 Sep 2017
    add_http_cors_header - без этого не работает tabix - это подставляет доп заголовки CORS

    log_queries - всегда логировать запросы в system.querys
  • https://t.me/clickhouse_ru
    @serg_borodin #26010 09:53 AM, 14 Sep 2017
    после обновления clickhouse-client падает с
    Poco::Exception: Exception: Cannot load time zone W-SU

    где править конфиг?
    Ubuntu 12.04.5 LTS
  • Я хотел сделать настройку user_is_readonly - типа галка при подключении

    Но возможно в будующих версиях эти параметры изменяться, уже есть такие
    - send_progress_in_http_headers
    - http_headers_progress_interval_ms

    Но реализовать их у меня не получилось

    И поведение Tabix будет не предсказуемо с этой галкой (
  • @garikanet #26012 09:56 AM, 14 Sep 2017
    Для упрощения -> Requirements: Not readonly CH user )))
  • понятно, спасибо
  • @mmmike777 #26014 10:20 AM, 14 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @osipovnikita #26015 10:22 AM, 14 Sep 2017
    Всем привет. Кто нибудь знает функцию для обработки URL, которая отрезает у урла все slug'и, GET-параметры и фрагменты, оставляя только <protocol>://<domain> ?
    Первое что приходит в голову использовать URLHierarchy(...)[1] , но возможно кто нибудь знает варианты лучше?
  • https://t.me/clickhouse_ru
    посмотри
    /etc/clickhouse-client/config.xml
    или ты ищешь какой-то особый конфиг?
  • Может, так?
    protocol(page) || '://' || domain(page) AS path
  • https://t.me/clickhouse_ru
    @osipovnikita #26018 10:33 AM, 14 Sep 2017
    Такую красоту хотел оставить навариант Z :) если больше вариантов не будет, то сегодня вечером сравню эффективность обоих подходов
  • https://t.me/clickhouse_ru
    и что мне туда добавить, чтобы нормально загрузить таймзону?
  • https://t.me/clickhouse_ru
    @373677243 #26020 10:48 AM, 14 Sep 2017
    Подскажите, в ClickHouse есть какой-нибудь аналог PIVOT?
  • https://t.me/clickhouse_ru
    /etc/clickhouse-server/config.xml
    Обычно тут есть секция <timezone>Europe/Moscow</timezone>
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26022 10:53 AM, 14 Sep 2017
    посмотрите какое у вас там значение
  • https://t.me/clickhouse_ru
    @serg_borodin #26023 10:54 AM, 14 Sep 2017
    это же для сервера. или клиент использует эту информацию?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26024 10:58 AM, 14 Sep 2017
    ну у клиента есть свой конфиг, у вас же там как-то появилась таймзона W-SU
  • В запросе или визуализация ?
  • https://t.me/clickhouse_ru
    в запросе
  • @garikanet #26027 11:33 AM, 14 Sep 2017
    имхо близкое sumIf,countIf...
  • https://t.me/clickhouse_ru
    @Shegloff #26028 11:39 AM, 14 Sep 2017
    После RENAME реплицированной таблицы, не могу сделать drop partition на ней, ругается что на другой реплике отсутствует таблица со старым именем
  • https://t.me/clickhouse_ru
    @Shegloff #26029 11:39 AM, 14 Sep 2017
    хотя на обеих репликах имя новое, и сама репликация работает, данные реплицируются
  • https://t.me/clickhouse_ru
    @Shegloff #26030 11:41 AM, 14 Sep 2017
    о, если дропнуть на другой реплике, то все ок, и по репликации приехало
  • https://t.me/clickhouse_ru
    @Shegloff #26031 11:41 AM, 14 Sep 2017
    вопрос снят
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26032 11:46 AM, 14 Sep 2017
    Всем привет, а есть у кого-нибудь опыт подружить CH и Talend?
  • https://t.me/clickhouse_ru
    @pulyavin #26033 12:44 PM, 14 Sep 2017
    Друзья, а вот такой вопрос. Как себя поведёт клик хаус, если у меня будет 3000 таблиц по 10млн. записей. Раздение по таблицам необходимо по причине постоянно ротации этих таблиц. Вот не будет ли у него проблема с производительностью с таким количеством таблиц?
  • https://t.me/clickhouse_ru
    @greevex #26034 12:46 PM, 14 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @umaxfun ↶ Reply to #26032 #26035 12:48 PM, 14 Sep 2017
    У нас есть, обсуждали в этом чате пол года назад 🙂
  • https://t.me/clickhouse_ru
    @yuyugame #26036 01:10 PM, 14 Sep 2017
    Не могу понять в чём ошибка: пробую засунуть в поле ipv6 адрес как FixedString(16) - получаю не то, что на входе.
    Делаю таким тестовым скриптом:

    #!/bin/bash
    DB=proba
    DATATABLE=iptest

    # for debug: start from scratch
    clickhouse-client —echo —database=$DB —query="DROP TABLE IF EXISTS $DB.$DATATABLE"

    echo Creating table $DB.$DATATABLE if needed

    clickhouse-client —echo —database=$DB —multiline —query="CREATE TABLE IF NOT EXISTS $DB.$DATATABLE ("\
    "d Date,
    ip_prefix String,
    ip6 FixedString(16) default toFixedString('',16),
    ip6str String,
    prefix_len UInt8
    ) ENGINE = MergeTree(d, (d, ip6), 8192)"

    echo '{"timestamp": "2017-09-14", "ip_prefix": "2a0b:aa80::/29"}' \
    | clickhouse-local —table=TMP \
    —input-format=JSONEachRow \
    —verbose \
    —structure='timestamp String,ip_prefix String' \
    —query=\
    "SELECT
    timestamp,
    ip_prefix,
    (position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum('0') as ip6,
    (position(ip_prefix,':') > 0) ? extract(ip_prefix,'^(.+)/') : '' as ip6str,
    (position(ip_prefix,'/') > 0) ? toUInt8(extract(ip_prefix,'/([0-9]+)')) : 0 as prefix_len
    FROM TMP FORMAT CSV" \
    | clickhouse-client —database=$DB —query="INSERT INTO $DB.$DATATABLE FORMAT CSV" —progress

    clickhouse-client —database=$DB —query="SELECT *, IPv6NumToString(ip6) as ip6fromNum, IPv6NumToString(IPv6StringToNum('2a0b:aa80::')) FROM $DB.$DATATABLE FORMAT Vertical"

    В результатет получаю такое:DROP TABLE IF EXISTS proba.iptest
    Creating table proba.iptest if needed
    CREATE TABLE IF NOT EXISTS proba.iptest (d Date,
    ip_prefix String,
    ip6 FixedString(16) default toFixedString('',16),
    ip6str String,
    prefix_len UInt8
    ) ENGINE = MergeTree(d, (d, ip6), 8192)
    Executing query: CREATE TABLE TMP (timestamp String,ip_prefix String) ENGINE = File(JSONEachRow, stdin)
    Executing query: SELECT
    timestamp,
    ip_prefix,
    (position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum('0') as ip6,
    (position(ip_prefix,':') > 0) ? extract(ip_prefix,'^(.+)/') : '' as ip6str,
    (position(ip_prefix,'/') > 0) ? toUInt8(extract(ip_prefix,'/([0-9]+)')) : 0 as prefix_len
    FROM TMP FORMAT CSV
    Read 1 rows, 42.00 B in 0.005 sec., 190 rows/sec., 7.82 KiB/sec.
    Row 1:
    ──────
    d: 2017-09-14
    ip_prefix: 2a0b:aa80::/29
    ip6: \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
    ip6str: 2a0b:aa80::
    prefix_len: 29
    ip6fromNum: 1100:: <------— откуда здесь такое значение вместо 2a0b:aa80:: ?
    IPv6NumToString(IPv6StringToNum(\'2a0b:aa80::\')): 2a0b:aa80::
  • @DigDiver #26037 02:10 PM, 14 Sep 2017
    Добрый день, а можно ли этот запрос выполнить оптимальней, чтобы не делать двойной проход:

    SELECT 'soft' as type, userId, uniq(Email) as counts from table where date >= '2017-09-01' and level = 2 group by userId
    union all
    SELECT 'other' as type, userId, count() as counts from table where date >= '2017-09-01' and level <> 2 group by userId
  • https://t.me/clickhouse_ru
    @123334038 #26038 02:13 PM, 14 Sep 2017
    select multiIf(level=2, 'soft', 'other') as type ...
  • @434618754 #26039 03:02 PM, 14 Sep 2017
    Joined.
  • @Nikqwag ↶ Reply to #25764 #26040 03:20 PM, 14 Sep 2017
    А кроме причин "lost forever" описанных вот тут: https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/StorageReplicatedMergeTree.cpp

    Могут быть еще какие-то? или хотя бы в какую сторону посмотреть? Непонятно почему куски теряются. Редко, но бывает. Причем иногда в тех таблицах, по которым нет активности около месяца.
    yandex/ClickHouse

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

  • https://t.me/clickhouse_ru
    @aleksartaman #26041 03:24 PM, 14 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @blackjack495 #26043 03:37 PM, 14 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @kmarenov #26044 03:45 PM, 14 Sep 2017
    Всем привет. Когда достигается лимит выделенной памяти, кликхаус перестает реагировать на запросы и просто кушает память, пока его не вырубишь. Подскажите, это нормальное поведение или нет?
    Поднят в докере, конфиги из родного репозитория.
  • https://t.me/clickhouse_ru
    @vifrolov #26045 03:52 PM, 14 Sep 2017
    Joined.
  • @pookieShmukie #26046 04:54 PM, 14 Sep 2017
    А в функцию timeSlot не планируется добавить возможность менять размер слота?
  • @pookieShmukie #26047 04:54 PM, 14 Sep 2017
    Например не 30 минут, а 5 секунд?
  • https://t.me/clickhouse_ru
    @orantius #26048 05:01 PM, 14 Sep 2017
    а чем range + arrayMap не устраивает?
  • https://t.me/clickhouse_ru
    @orantius #26049 05:02 PM, 14 Sep 2017
    а, timeslot просто округление делает, и вам надо произвольную гранулярность?
  • @pookieShmukie #26050 05:03 PM, 14 Sep 2017
    Да. Есть например время в 23 секунды и надо округлить до 20
  • @pookieShmukie #26051 05:05 PM, 14 Sep 2017
    Можно с делением поиграться на самом деле
  • https://t.me/clickhouse_ru
    @orantius #26052 05:05 PM, 14 Sep 2017
    да, intDiv multiply
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #26044 #26053 05:43 PM, 14 Sep 2017
    Up. Хелп плиз. Куда копать? При достижении лимита памяти кликхаус намертво виснет, отжирая память.
  • https://t.me/clickhouse_ru
    Уточните общий размер оперативной памяти, доступной и настройки КХ по лимитам по памяти
  • https://t.me/clickhouse_ru
    @yuyugame ↶ Reply to #26036 #26055 05:50 PM, 14 Sep 2017
    Неужто никто не ткнёт пальцем в чём косяк? Кладу в базу одно значение, а вынимаю другое. Вроде простая штука и всё по букварю делаю...
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #26053 #26056 06:02 PM, 14 Sep 2017
    и что значит "отжирая" ? размер занимаемой памяти увеличивается? и что в логах ?
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #26036 #26057 06:13 PM, 14 Sep 2017
    http://paste.org.ru/?6izk35 - похоже что норм, а какая версия?
  • https://t.me/clickhouse_ru
    @yuyugame ↶ Reply to #26057 #26058 06:16 PM, 14 Sep 2017
    v1.1.54231
    Вот и я дивлюсь. Начал уже багу на ровном месте подозревать...

    Проверил - в 1.1.54236 та же фигня.
    Может дело в сборке? У меня они на CentOS 7 крутятся.
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #26054 #26059 06:21 PM, 14 Sep 2017
    max_memory_usage у КХ дефолтный - 10000000000, в docker-compose.yml задан лимит 10 Гб для clickhouse-server
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #26056 #26060 06:23 PM, 14 Sep 2017
    потребляет максимум доступной памяти, пока не вырубишь.
    в контейнере каталог /var/log/clickhouse-server пустой почему-то
  • @githubreleases_bot #26061 b o t 06:30 PM, 14 Sep 2017
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • https://t.me/clickhouse_ru
    @not_logan #26062 06:36 PM, 14 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @not_logan #26063 06:38 PM, 14 Sep 2017
    доброго дня, коллеги! Кинье пжлст ссылку в документацию по апгрейду базы
  • https://t.me/clickhouse_ru
    @not_logan #26064 06:42 PM, 14 Sep 2017
    есть ли там какие-то серьезные сложности, подводные камни?
  • https://t.me/clickhouse_ru
    @fabura #26065 06:43 PM, 14 Sep 2017
    надо читать чейнжлог и обязательно тестировать
  • https://t.me/clickhouse_ru
    @fabura #26066 06:43 PM, 14 Sep 2017
    ну и не торопиться с обновлениями сразу ,как они выходят. Порой бывают регрессии, которые хотфиксятся
  • https://t.me/clickhouse_ru
    @not_logan #26067 07:16 PM, 14 Sep 2017
    нет, у меня тяжелый случай - база 0-какая-то, надо до 1.1 хотя бы дотянуть. Вот и возникает вопрос - есть ли какая-то процедура апгрейда базы?
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #26058 #26068 07:21 PM, 14 Sep 2017
    Нет, дело в старой версии. собрал 1.1.54236 - и в ней плохо.
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #26067 #26069 07:27 PM, 14 Sep 2017
    Есть 99% уверенность, что оно нормально проапгрейдится, если просто поставить новую версию на всех репликах.

    1% остаётся. Ради этого неплохо было бы сделать бэкап. Бэкап можно путём снапшота диркетории ClickHouse.
  • https://t.me/clickhouse_ru
    @not_logan #26070 07:27 PM, 14 Sep 2017
    спасибо!
  • https://t.me/clickhouse_ru
    @yuyugame ↶ Reply to #26068 #26071 07:27 PM, 14 Sep 2017
    Спасибо! Значит буду обновлять. Хотя странно, конечно, что такое незамеченным было.
  • https://t.me/clickhouse_ru
    @imzhukov #26072 07:34 PM, 14 Sep 2017
    Joined.
  • В одном из прошлых релизов мы сделали так, что настройки можно передавать и в режиме readonly, но только если их значения не отличаются от уже выставленных. То есть, если в профиле по-умолчанию уже указано send_progress_in_http_headers=1, то при передаче по HTTP такой же настройки, сервер не будет ругаться в режиме readonly.
  • Решардинг (перебалансировка данных) не поддерживается. Но ничто не мешает добавлять новые шарды в кластер, даже налету. Просто в этом случае данные не перебалансируются - будут более заполненные и менее заполненные шарды, нагрузка по шардам будет неравномерной. Это вполне нормальное решение для расширения кластера.
  • https://t.me/clickhouse_ru
    Не поддерживается вообще?
  • Попробуйте установить последний пакет tzdata. Если не поможет - пропишите в config.xml в секции timezone значение Europe/Moscow. Если и это не поможет, то найдите подходящую таймзону в /usr/share/zoneinfo и пропишите её в конфиге.
  • Да, мы сейчас не поддерживаем это. Было реализовано до стадии "бета", а потом заброшено. Там были нерешённые проблемы. Есть ещё шанс доделать.
  • URLHierarchy - довольно тяжёлая функция. Для этой задачи конкатенация протокола и хоста будет лучше. Надо будет отдельную функцию сделать.
  • @3334085 #26079 07:53 PM, 14 Sep 2017
    @milovidov_an а насчёт пивота вопрос был, не будет ли поддержки? Было бы круто если бы она была с ограничением если колонка входит в ключ например
  • Сервер присылает клиенту свою таймзону, а клиент пытается её загрузить для использования.
  • Да, есть такое ограничение. Фактически DROP PARTITION выполняется на реплике-лидере. Если задать запрос на другой реплике, то запрос проксируется. Причём, это проксирование делается неаккуратно - не учитывает тот факт, что имя таблицы на реплике может отличаться.
  • @pookieShmukie #26082 07:56 PM, 14 Sep 2017
    @milovidov_an Алексей, а по последнему стейблу нет еще changelog'a? В гите не нашел (
  • В целом плохо. Если использовать ReplicatedMergeTree с большим количеством таблиц - будет много проблем. Если обычные MergeTree, то будет более-менее работать.

    Есть два варианта:
    1. Всё-таки сделать более грубую ротацию данных. Скажем, не так уж часто бывает, что каждые сутки данными заполняется весь дисковый массив и данные необходимо ротировать чаще.
    2. Дождаться реализации партиционирования по произвольному ключу (сейчас в разработке).
  • Можно проследить историю куска по логу сервера (просто grep по его имени). Также есть возможно включить системную таблицу part_log - см. в config.xml - там будет сохраняться история действий со всеми кусками.
  • @milovidov_an #26085 08:06 PM, 14 Sep 2017
    Время выполнения не должно отличаться от FORMAT TabSeparated. Но конечно, в случае большого результата, будет медленнее, чем с форматами RowBinary или Native.

    Увеличение времени может быть случайностью. Если воспроизводится, то хотелось бы пример.
  • Это бывает, если ограничения на потребление оперативки запросами (max_memory_usage, max_memory_usage_for_user, max_memory_usage_for_all_queries) или размеры кэшей, превышают то количество оперативки, которое доступно на сервере.

    Значения по-умолчанию (например, max_memory_usage - 10 GB) рассчитаны на полноценный сервер.
  • У нас есть внутри таск - адаптировать (уменьшать) параметры по-умолчанию под сервер, на котором запущен ClickHouse.
  • Мы даже не думали об этом, так как эта функция была почти ненужной. Можно добавить, но я не могу сказать, что это планируется.
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #26086 #26089 08:12 PM, 14 Sep 2017
    спасибо
  • Надо бы для Docker образа подложить изменённый конфиг с уменьшенным лимитом.
  • Если баг исправлен - значит мы его заметили и не зря делали релизы :)
  • На уровне языка запросов пока не рассматривали. То есть, прямо сейчас не планируем это добавить.
  • Changelog скоро будет.
  • Спасибо, задокументирую в табикс
  • Это не критично :) Прикидываю разные варианты как все это дело считать. Считаем пики внимания в видео. И было бы не плохо считать перемотку с одного слота в 5 секунд в другой слот в 5 секунд, из-за длины видео, размер слота может меняться. Вроде как эту проблему можно решить путем использования intDiv )

    select intDiv(23, 5) * 5, например
  • Да, это естественное решение. Просто округлять время.
  • @pookieShmukie #26098 08:44 PM, 14 Sep 2017
    У меня все еще проще ) Нет времени, есть просто какой то момент в рамках видео, например 14-я секунда видео.
  • @ivandyachenko #26100 11:36 PM, 14 Sep 2017
    Joined.
  • 15 September 2017 (78 messages)
  • @mrmnightt #26101 12:16 AM, 15 Sep 2017
    а receive_timeout не работает на запросах типа clickhouse-client --query="INSERT INTO ... FORMAT TSV" --receive_timeout=3600 ? Прост поймали когда 5 минут не слать данные в stdin клиенту ничего, а потом опять слать, то сервер рвет соединение с эксепшеном по таймауту https://github.com/yandex/ClickHouse/blob/dc5eca0bebf41bf91b88ec3bcc24e664e5d22f3d/dbms/src/Server/TCPHandler.cpp#L267 и есть подозрение что настройка в 3600 не работает и юзается дефолтная 300
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data.

  • @mrmnightt #26102 12:18 AM, 15 Sep 2017
    помогло только выставить ее в users.xml в 3600
  • @milovidov_an #26103 12:31 AM, 15 Sep 2017
    Возможно, что такие настройки не вступают в силу, если соединение уже установлено. То есть, они должны быть выставлены до установления соединения.

    Хотя ничто не мешало бы смотреть на настройки и соответствующем образом менять параметры соединения. Но это не сделано.

    То есть, такое поведение неудобно, но объяснимо.
  • Спасибо за changelog!
  • https://t.me/clickhouse_ru
    Спасибо за changelog
  • https://t.me/clickhouse_ru
    @Sablast #26106 06:29 AM, 15 Sep 2017
    привет! подскажите как правильно добавить несколько часов к DateTime?
  • https://t.me/clickhouse_ru
    @Sablast #26107 06:30 AM, 15 Sep 2017
    нужно что то вроде: SELECT NOW(), NOW() + INTERVAL 6 HOUR
  • @pookieShmukie #26108 06:31 AM, 15 Sep 2017
    EventTime + 3600 * 6
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26108 #26109 06:33 AM, 15 Sep 2017
    спасибо))) не догадался что надо просто секундами добавлять, думал мб функция есть
  • @pookieShmukie #26110 06:42 AM, 15 Sep 2017
    Все просто ) под капотом datetime это обычный unix timestamp
  • https://t.me/clickhouse_ru
    @kshvakov #26111 06:49 AM, 15 Sep 2017
    По воводу 1.1.54289 релиза, там исправлена ошибка ALTER на ReplicatedMergeTree после выполнения ALTER MODIFY элемента Nested структуры,
    мы вчера 1.1.54284 словили ошибку с битыми данными на ALTER Enum (начало жаловаться на то что типы не соответствуют).
    Еще мы вчера словили n-e количество сегфолтов на ровном, казалось бы, месте. Нужно было заинсталировать кластер с нуля, но часть таблиц у нас недоехала,
    к ним шло обращение и сервер отдавал станратно что таблици нет, после этого вкатили CREATE TABLE ... ON CLUSTER и ноды стали вываливаться одна за другой

    Кусок лога https://gist.githubusercontent.com/kshvakov/0b27e91074533f5549ec89e881a645e2/raw/b219c2405f14890f4eb83a4700d4f8fed766e00e/gistfile1.txt

    Плюс еще что-то пошло нетак с создание MATVIEW и при вставке в целевую таблицу ругалось что таблици от VIEW нет,
    создать ее нельзя т.к. ругалось на то что реплика уже существует (VIEW - реплицируемая)

    Короче, вчера у нас была маленькая пятница )
  • У меня была похожая проблема с ddl запросами. Ноды рандомно зависали, причем всегда две и из разных шардов. Вылечил обновлением.
  • @pookieShmukie #26113 06:52 AM, 15 Sep 2017
    Но после обновления появилась проблема с limit by )
  • https://t.me/clickhouse_ru
    @kshvakov #26114 06:52 AM, 15 Sep 2017
    А с ним что не так и в какой версии ?
  • @pookieShmukie #26115 06:54 AM, 15 Sep 2017
    Могу чуть позже сказать версию, еще в дороге, не помню точно какая у нас сейчас. Проблему сейчас в логе найду, мы с Алексеем ее обсуждали
  • https://t.me/clickhouse_ru
    @kshvakov #26116 06:55 AM, 15 Sep 2017
    ОК
  • @pookieShmukie #26117 06:58 AM, 15 Sep 2017
    Отправил в личку, т.к. там 18 сообщений
  • https://t.me/clickhouse_ru
    @Sablast #26118 07:00 AM, 15 Sep 2017
    а в новой версии убрали лимит на размер словаря?
  • @pookieShmukie #26119 07:46 AM, 15 Sep 2017
    Там же лимит вроде как прописывался изначально? Т.е. сколько максимум словарь может сожрать оперативки
  • https://t.me/clickhouse_ru
    @Sablast #26120 07:52 AM, 15 Sep 2017
    там был лимит на количество строк около 2млн
  • @VladimirKoptev #26121 08:02 AM, 15 Sep 2017
    всем привет. есть необходимость перераспределить данные - добавили в кластер новый шард, хочется не заливать новые данные только на него, а перераспределить старые.
    решардинг, насколько я понимаю, до сих пор в бетте.
    есть идея сделать через detach/attach partition, но не уверен, что кликхаус нормально на такое отреагирует.
    никто не пробовал? или может есть другие идеи, как такое сделать?
  • https://t.me/clickhouse_ru
    @kshvakov #26122 08:04 AM, 15 Sep 2017
    Отлично отреагирует на DETACH/ATTACH
  • https://t.me/clickhouse_ru
    Посмотрите в документации, там описано как указать вес шарда
  • https://t.me/clickhouse_ru
  • @VladimirKoptev #26125 08:05 AM, 15 Sep 2017
    вес шарда - это хорошо. но заливаться будет только на него (а потом и выборка будет только с него). не очень хочется такого перекоса по нагрузке.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26126 08:06 AM, 15 Sep 2017
    Так сначала укажите новому шардру сильно больший вес. А когда данные выровняются - уберите перекос
  • https://t.me/clickhouse_ru
    @kshvakov #26127 08:08 AM, 15 Sep 2017
    Часто всем более нужны новые данные, поэтому в какой-то момент можно остаться с 1-м сервером если так веса крутить
  • @VladimirKoptev #26128 08:10 AM, 15 Sep 2017
    вот я тоже об этом подумал. что в какой-то момент большая часть запросов будет валиться на него
  • https://t.me/clickhouse_ru
    @mikhail_bazhenov #26129 08:13 AM, 15 Sep 2017
    Привет!
    Подскажите, пожалуйста, а если какая-нибудь настройка для ограничения времени выполнения запроса?
  • а ключ шардирования? он только на вставку влияет? т.е. в данных его нет и т.п. ведь при переносе мы, по сути, его принудительно меняем для тех данных, что были ранее вставлены
  • https://t.me/clickhouse_ru
    @kshvakov #26131 08:24 AM, 15 Sep 2017
    Да, только на вставу в distributed
  • @VladimirKoptev #26132 08:24 AM, 15 Sep 2017
    не нашёл информации об этом в доке...
    отлично. спасибо!
  • https://t.me/clickhouse_ru
    @Sablast #26133 09:17 AM, 15 Sep 2017
    а сколько времени может выполняться rename table?)
  • https://t.me/clickhouse_ru
    @Sablast #26134 09:21 AM, 15 Sep 2017
    уже минут 10 висит rename что может быть не так?
  • @milovidov_an #26135 09:22 AM, 15 Sep 2017
    RENAME ждёт выполнения всех остальных запросов. Если запросы идут непрерывно, то будет ждать вечно.
  • https://t.me/clickhouse_ru
    @Sablast #26136 09:24 AM, 15 Sep 2017
    Алексей, а у нас нет ддругих запросов, это локальный тест, движок replacingMergeTree и судя по логу чтото мержится в это время
  • @milovidov_an #26137 09:31 AM, 15 Sep 2017
    Мержится всё это время?
  • https://t.me/clickhouse_ru
    @Sablast #26138 09:32 AM, 15 Sep 2017
    ага
  • @milovidov_an #26139 09:32 AM, 15 Sep 2017
    Мержи тоже блокируют rename.
  • https://t.me/clickhouse_ru
    @Sablast #26140 09:34 AM, 15 Sep 2017
    хм, т.е. пока движок сам не закончит мерж то rename не случится?
  • https://t.me/clickhouse_ru
    @Sablast #26141 09:34 AM, 15 Sep 2017
    а прервать тогда можно rename?
  • @milovidov_an #26142 09:35 AM, 15 Sep 2017
    Нет, он не прерывается. Если совсем плохо, то можно сделать forcerestart сервера.
  • https://t.me/clickhouse_ru
    @Sablast #26143 09:35 AM, 15 Sep 2017
    ок, понятно. Спасибо!
  • https://t.me/clickhouse_ru
    @Sablast #26144 11:03 AM, 15 Sep 2017
    вопрос от коллеги - а можно индексы расположить отдельно? чтобы они были на ssd а основные данные на рейде?
  • @milovidov_an #26145 11:05 AM, 15 Sep 2017
    Такой возможности нет. Но вряд ли это требуется для ClickHouse, потому что индексы занимают очень мало места и кэшируются в оперативке.

    Проверьте:
    find /opt/clickhouse -name '*.idx' -or -name '*.mrk' | xargs wc -c
  • https://t.me/clickhouse_ru
    @Sablast #26146 11:07 AM, 15 Sep 2017
    ок, спасибо =)
  • @186323677 #26147 11:41 AM, 15 Sep 2017
    Joined.
  • @186323677 #26148 11:42 AM, 15 Sep 2017
    Joined.
  • @186323677 #26149 11:42 AM, 15 Sep 2017
    Joined.
  • @pavlov_m #26150 12:35 PM, 15 Sep 2017
    Добрый день, подскажите секция With в Select умеет только скалярные значения возвращать?

    Есть желание сделать следующе:

    WITH (SELECT id FROM dictionaries.dic) AS dic_items SELECT f1 FROM table WHERE f2 in dic_items

    Но это только генерит ошибоньку DB::Exception: Scalar subquery returned more than one row...
  • @pavlov_m #26151 12:35 PM, 15 Sep 2017
    Сделать один подзапрос в словарь по условию, и потом эти значения использовать в селекте
  • @milovidov_an #26152 12:35 PM, 15 Sep 2017
    Да, только скалярные.
  • @pavlov_m #26153 12:36 PM, 15 Sep 2017
    Спасибо
  • https://t.me/clickhouse_ru
    @kshvakov #26154 12:38 PM, 15 Sep 2017
    Да, местами очень не хватает CTE
  • @madmanidze #26155 01:26 PM, 15 Sep 2017
    Здравствуйте!
    Падаем с ошибками:
    2017.09.15 13:25:41.593455 [ 2003 ] <Error> void DB::ReplicatedMergeTreeRestartingThread::run(): std::exception. Code: 1001, type: std::system_error, e.what() = Resource temporarily unavailable
    2017.09.15 13:25:41.593922 [ 2002 ] <Error> void DB::ReplicatedMergeTreeRestartingThread::run(): std::exception. Code: 1001, type: std::system_error, e.what() = Resource temporarily unavailable
    2017.09.15 13:25:41.600634 [ 2004 ] <Error> void DB::ReplicatedMergeTreeRestartingThread::run(): std::exception. Code: 1001, type: std::system_error, e.what() = Resource temporarily unavailable

    что может быть?
  • @milovidov_an #26156 01:30 PM, 15 Sep 2017
    Используется очень большое количество мелких таблиц - создаётся много потоков - следующий поток невозможно создать.
  • https://t.me/clickhouse_ru
    @not_logan #26157 01:37 PM, 15 Sep 2017
    коллеги, а где-то существует репозиторий с пакетами clickhouse для debian?
  • @milovidov_an #26158 01:44 PM, 15 Sep 2017
    Не видел. Часто можно выбрать "соответствующую" Ubuntu и взять пакет для ней.
  • https://t.me/clickhouse_ru
    @not_logan #26159 01:45 PM, 15 Sep 2017
    а какая убунта соответсвует debian jessie?
  • @milovidov_an #26160 01:46 PM, 15 Sep 2017
    Не знаю. Надеюсь, кто-нибудь другой в этом чате подскажет.
  • https://t.me/clickhouse_ru
    @taroff #26161 01:46 PM, 15 Sep 2017
    14-15
  • https://t.me/clickhouse_ru
    @taroff #26162 01:46 PM, 15 Sep 2017
    15.10 wily jessie / sid
    15.04 vivid jessie / sid
    14.10 utopic jessie / sid
    14.04 trusty jessie / sid
  • https://t.me/clickhouse_ru
    @not_logan #26163 01:47 PM, 15 Sep 2017
    спасибо!
  • https://t.me/clickhouse_ru
    @Sablast #26164 01:49 PM, 15 Sep 2017
    а можно выполнить sql запрос из файла конфигурации словаря?
  • https://t.me/clickhouse_ru
    @orantius #26165 01:50 PM, 15 Sep 2017
    в общем случае у словаря нет запроса, который можно выполнить в CH. а что вы хотите получить?
  • https://t.me/clickhouse_ru
    @Sablast #26166 01:56 PM, 15 Sep 2017
    скажаем так хотели сделать в mysql view но не получается из-за вложенности select'ов если select разбивать на разные view то почемуто нарушается структура выходных данных, поэтому хотели налету делать как обычный запрос
  • https://t.me/clickhouse_ru
    @umaxfun #26167 01:57 PM, 15 Sep 2017
    Помогите раступить обратно? КХ слушает только локалосты, а пользователю можно коннектиться с других хостов. Что-бы могло быть?
    ➜ ~ netstat -nlp | grep clic
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 8584/clickhouse-ser
    tcp 0 0 127.0.0.1:9009 0.0.0.0:* LISTEN 8584/clickhouse-ser
    tcp 0 0 127.0.0.1:8123 0.0.0.0:* LISTEN 8584/clickhouse-ser
    tcp6 0 0 ::1:9000 :::* LISTEN 8584/clickhouse-ser
    tcp6 0 0 ::1:9009 :::* LISTEN 8584/clickhouse-ser
    tcp6 0 0 ::1:8123 :::* LISTEN 8584/clickhouse-ser

    а в users.xml

    68 <networks incl="networks" replace="replace">
    69 <ip>::/0</ip>
    70 </networks>
  • https://t.me/clickhouse_ru
    @umaxfun #26168 01:58 PM, 15 Sep 2017
    Рестарт делал даже
  • @milovidov_an #26169 01:58 PM, 15 Sep 2017
    listen_host в config.xml
  • https://t.me/clickhouse_ru
    @umaxfun #26170 02:00 PM, 15 Sep 2017
    Ой, это с апдейтом, наверное прилетело? Я не менял и работало
  • https://t.me/clickhouse_ru
    @umaxfun #26171 02:00 PM, 15 Sep 2017
    Алексей, спасибо, заработало!
  • @milovidov_an #26172 02:00 PM, 15 Sep 2017
    Довольно давно (не меньше полугода назад) было изменение, что сервер слушает по-умолчанию только localhost.
  • https://t.me/clickhouse_ru
    @umaxfun #26173 02:01 PM, 15 Sep 2017
    Это один из самых старых инстансов 🙂
  • https://t.me/clickhouse_ru
    @yuyugame ↶ Reply to #26068 #26174 02:59 PM, 15 Sep 2017
    Интересно: нашёл способ как заставить тестовый пример заработать в этой старой версии.
    Если вместо
    (position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum('0') as ip6
    написать
    (position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum(ip_prefix) as ip6
    то всё отрабатывает нормально без вылета по эксепшн.
    PS: и, по-хорошему, надо было бы заменить формат в последнем pipe на FORMAT Native, но и с CSV прокатило (повезло).
  • @345228264 #26175 04:51 PM, 15 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @imzhukov #26178 07:26 PM, 15 Sep 2017
    Товарищи, не подскажите c++ либу для работы с clickhouse? Насколько жив проект clickhouse-cpp? Спасибо.
  • https://t.me/clickhouse_ru
    @proller #26179 07:38 PM, 15 Sep 2017
    если не пугает размер и время сборки - весь clickhouse можно собрать как so и использовать что надо
  • https://t.me/clickhouse_ru
    @imzhukov ↶ Reply to #26179 #26180 07:40 PM, 15 Sep 2017
    Спасибо, рассмотрим этот вариант)
  • 16 September 2017 (15 messages)
  • @madmanidze #26181 07:29 AM, 16 Sep 2017
    Здравствуйте!
    А как наверняка выяснить лидера из двух реплик одного шарда?
  • https://t.me/clickhouse_ru
    Select from system.replicas
  • https://t.me/clickhouse_ru
    @343206394 #26185 07:53 PM, 16 Sep 2017
    Маленькии вопросик по drop partition
    Если запустить на распределенной таблице можно надеятся что выполнится на всех нижележащих MetgeTree ?
  • https://t.me/clickhouse_ru
    @imzhukov #26186 08:36 PM, 16 Sep 2017
    Можно узнать о методах компрессии чисел с плавающей точкой? Можно ли использовать КХ для задачи записи в реальном времени и хранения измерений 1,5 млн. аналоговых сигналов? Какой движок таблиц посоветуете для такой задачи? Спасибо.
  • Можно сделать ALTER TABLE table ON CLUSTER cluster DROP PARTITION ...
  • @pookieShmukie #26188 09:04 PM, 16 Sep 2017
    Запрос должен полететь по кластеру
  • @pookieShmukie #26189 09:04 PM, 16 Sep 2017
    Или речь не об этом?
  • https://t.me/clickhouse_ru
    @343206394 #26190 09:04 PM, 16 Sep 2017
    Спасибо
  • https://t.me/clickhouse_ru
    @343206394 #26191 09:04 PM, 16 Sep 2017
    Об этом
  • https://t.me/clickhouse_ru
    @343206394 #26192 09:04 PM, 16 Sep 2017
    наверное
  • @pookieShmukie #26193 09:05 PM, 16 Sep 2017
    Ну я так понял, что есть кластер и нужно дропнуть партицию с таблицы на всем кластере. Если речь об этом, то ON CLUSTER должен решить эту проблему
  • https://t.me/clickhouse_ru
    @343206394 #26194 09:05 PM, 16 Sep 2017
    да об этом, спсб
  • @pookieShmukie #26195 09:06 PM, 16 Sep 2017
    Пожалуйста :)
  • Не знаю на счет чисел с плавающей точкой, но у меня есть БД собранная из файлов, которые в сжатом виде весят 400 Gb. Таблица с нагенерированными данными соразмерная количеству строк в файлах, а их примерно 3ккк, весит в сжатом виде всего 22 Gb. Все данные - строки, в таблице всего 4 колонки. Так что сжатие очень хорошее, даже на строках.
  • Про float 0.1+0.1 != 0.2 рекомендуется int
  • 17 September 2017 (17 messages)
  • @vladislavadv #26198 06:23 PM, 17 Sep 2017
    Всем привет.

    Подскажите, плиз, пытаемся внедрить графану, попробовали datasource от vertamedia, но он какой-то кривой(Графики при группировки по дате странно выглядят, таблицы по датам в принципе чушь показывают).
    Есть ли какой-то аналог datasource?(на сайте графаны не нашел)
    Или может посоветуете аналогичную тулзу с конструктором отчетов\графиков?
  • @f1yegor #26199 06:28 PM, 17 Sep 2017
    я бы посоветовал разобраться с этим плагином, потому что мы его используем и проблем я не видел
  • @f1yegor #26200 06:29 PM, 17 Sep 2017
    вы можете посмотреть какие query генерируются и понять в чем проблема. возможно не нужна группировка по date вручную, потому что это делается самим плагином?
  • @vladislavadv #26202 06:35 PM, 17 Sep 2017
    Вот пример. Таблчика создана через конструктор запросов
  • @vladislavadv #26203 06:35 PM, 17 Sep 2017
    Выбрано показывать последние 2 дня.
  • @vladislavadv #26204 06:36 PM, 17 Sep 2017
    Запросы смотрел. У первой колонки
    date >= toDate(1504981022)

    у второй
    date >= toDate(1504721822)
  • @vladislavadv #26205 06:36 PM, 17 Sep 2017
    + еще бок с таймзонами
    Цифры не сходятся по дням, похоже какой-то сдвиг timestamp применяется
  • @vladislavadv #26206 06:37 PM, 17 Sep 2017
    Еще по таблицу забавная штука
    Если показываю всего одну колонку, то выводится 4 даты, если две колонки, то уже 5 строк
  • @vladislavadv #26210 06:39 PM, 17 Sep 2017
    Перекопали все настройки\конфиги, ничего такого не нашли. Версии везде последние=(
  • https://t.me/clickhouse_ru
    @NickBlade #26211 07:00 PM, 17 Sep 2017
    Joined.
  • @vladislavadv #26212 07:01 PM, 17 Sep 2017
    Таблица выше создавалась при графане 4.4.1 и плагине 0.1 версии.

    Сейчас обновились на актуальное - Настройка interval вообще пропала...
  • @vladislavadv #26213 08:03 PM, 17 Sep 2017
    Проблема решилась обновлением vertamedia-clickhouse-datasource до версии 0.0.2

    Оказалось, что первая версия будет установлена не через grafana-cli plugins install vertamedia-clickhouse-datasource

    а через копирования модуля в папку plugins.
    Поэтому обновление через
    grafana-cli plugins update vertamedia-clickhouse-datasource
    не прошло
  • @vladislavadv #26214 08:22 PM, 17 Sep 2017
    с timezone все тоже решили проблему, правда, как мне кажется, немного костыльно.

    Как оказалось, группировка идет по округленному timestamp.

    Итого пришлось $timeSeries заменить на (intDiv(toUInt32(dateTime)+3*60*60, $interval) * $interval) * 1000

    наверное надо фича реквест создать на проброс таймзоны внутрь $timeSeries
  • 18 September 2017 (112 messages)
  • https://t.me/clickhouse_ru
    @masterdizer #26215 05:15 AM, 18 Sep 2017
    С таймзонами в кх вообще беда :(
  • @TanVD ↶ Reply to #26215 #26216 05:44 AM, 18 Sep 2017
    Например используется старый формат именования (не UTC, а Zulu и т.д.) :)
  • https://t.me/clickhouse_ru
    @mrphelko ↶ Reply to #26215 #26217 06:56 AM, 18 Sep 2017
    Время с таймзоной используете для ключа?
  • https://t.me/clickhouse_ru
    @masterdizer #26218 07:01 AM, 18 Sep 2017
    да нет, ввод/вывод. Приходится на стороне приложения все манипуляции проводить.
  • https://t.me/clickhouse_ru
    @ewgeniyk #26219 07:08 AM, 18 Sep 2017
    День добрый Подскажите как максимально просто из консоли скопировать materialized view на другой сервер в виде отдельной физической таблицы ? через дамп или можно как-то минуя файловые операции ?
  • https://t.me/clickhouse_ru
    @mrphelko ↶ Reply to #26218 #26220 07:10 AM, 18 Sep 2017
    а как хроните? в каком формате?
  • https://t.me/clickhouse_ru
    @masterdizer #26221 07:10 AM, 18 Sep 2017
    В utc все переводим для хранения
  • https://t.me/clickhouse_ru
    @masterdizer #26222 07:11 AM, 18 Sep 2017
    всегда есть DateTime и его обрубок в ключе
  • https://t.me/clickhouse_ru
    @sdjufh #26223 08:05 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @bearded_coder_official #26224 08:09 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @drimd #26225 08:10 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @tinker_1987 #26226 08:10 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @rjs45 #26227 08:10 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @symstriker #26228 08:11 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @shcherbakan #26229 08:11 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @vitaliipuhach #26230 08:12 AM, 18 Sep 2017
    Joined.
  • @pavel_maksimow #26231 08:37 AM, 18 Sep 2017
    Всем привет. Подскажите пожалуйста, почему я получаю формат JSON втаком виде? спасибо
  • https://t.me/clickhouse_ru
    @greevex #26232 08:39 AM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    Уточните, что вас не устраивает в JSON ответе?
  • формат у него NoneType
  • https://t.me/clickhouse_ru
    Где NoneType? В первом запросе
    http://joxi.ru/MAjZVGPtvEgkWA
    явно указано что отдавать ответ в виде JSON
  • @pavel_maksimow #26236 08:53 AM, 18 Sep 2017
    тоже понять не могу, раньше не было такого
  • нашел в чем причина, спасибо
  • https://t.me/clickhouse_ru
    @bezyury #26238 08:56 AM, 18 Sep 2017
    и в чем же?
  • https://t.me/clickhouse_ru
    И в чем же?
    В nodejs такой же запрос отрабатывает
    http://joxi.ru/1A5veylcKvRwYr
  • @pavel_maksimow #26240 08:58 AM, 18 Sep 2017
    я функцию обработки ответа неправильно написал, я новичок в программировании
  • @pavel_maksimow #26241 08:59 AM, 18 Sep 2017
    вот, что я сделал))
  • @3334085 #26242 11:17 AM, 18 Sep 2017
    Господа, а в sumif нельзя ли как-то сделать поддержку NULL, что бы если попадается NULL и числа - шла их сумма, а если только NULL - результат - NULL
  • https://t.me/clickhouse_ru
    @bgaifullin #26243 11:20 AM, 18 Sep 2017
    а через условие нельзя сделать фильтрацию NULL значений?
  • @61322181 #26244 11:39 AM, 18 Sep 2017
    доброго времени суток! никто не замерял разницу в производительности между JSONEachRow и CSV при загрузке данных?
  • @3334085 ↶ Reply to #26243 #26245 11:40 AM, 18 Sep 2017
    в смысле? мне их не нужно фильтровать, мне нужно выводить NULL где NULL при агрегации
  • https://t.me/clickhouse_ru
    @cleverfox #26246 12:01 PM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #26244 #26247 12:06 PM, 18 Sep 2017
    у меня JSONEachRow работал значительно быстрее, относительно второго варианта (файл ~800 мб)
  • @61322181 ↶ Reply to #26247 #26248 12:06 PM, 18 Sep 2017
    сколько полей/запись?
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #26248 #26249 12:08 PM, 18 Sep 2017
    10 полей/запись
  • @61322181 ↶ Reply to #26249 #26250 12:08 PM, 18 Sep 2017
    спасибо
  • @3334085 #26251 12:29 PM, 18 Sep 2017
    хм при попытке применения toInt64() к колонке где есть null (она - string) получаю Attempt to read after eof: Cannot parse Int64 from String, because value is too short
    грустно
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #26252 12:54 PM, 18 Sep 2017
    привет, такая проблема: как воспользоваться groupArray совместно с distinct ?
    мой нерабочий запрос
    SELECT technology, groupArray( DISTINCT tuple(latitude,longitude))
    FROM celmes
    WHERE project_id = 10 AND time >= '1464739200' AND time <= '1474070400' AND mcc = 401 AND mnc = 7
    GROUP BY technology
  • https://t.me/clickhouse_ru
    @orantius #26253 12:55 PM, 18 Sep 2017
    groupUniqArray
  • https://t.me/clickhouse_ru
    @denis_sukhoverkhov #26254 12:58 PM, 18 Sep 2017
    спасибо, это мне и нужно
  • toInt64OrZero
  • https://t.me/clickhouse_ru
    @andrey_konyaev #26256 01:04 PM, 18 Sep 2017
    Всем привет!
  • https://t.me/clickhouse_ru
    @andrey_konyaev #26257 01:05 PM, 18 Sep 2017
    Настраивается ли колличество процессов отведённых для мёржа кусков для MergeTree или эта операция не параллелится?
  • @3334085 ↶ Reply to #26255 #26258 01:11 PM, 18 Sep 2017
    а мне не нужен 0 мне именно NULL нужен, тк по логике у меня:
    0 - трафика передано 0
    NULL - данные не получены
  • @vstakhov #26260 01:38 PM, 18 Sep 2017
    плохая логика, негодная. null для int64 типа нельзя сделать, уместившись в 8 байт
  • @vstakhov #26261 01:38 PM, 18 Sep 2017
    обычно делают всякие вещи, типа (uint64_t)-1
  • @vstakhov #26262 01:38 PM, 18 Sep 2017
    что тоже теряет бит информации, конечно
  • @3334085 ↶ Reply to #26262 #26263 01:39 PM, 18 Sep 2017
    хранить мне это все равно в string - тк там еще и массив может быть
  • https://t.me/clickhouse_ru
    @osipovnikita #26264 01:43 PM, 18 Sep 2017
    Кто нибудь знает, есль ли функция обрезания завершающего слеша в URL ? Например https://example.com/ - > https://example.com
  • https://t.me/clickhouse_ru
    @orantius #26265 01:45 PM, 18 Sep 2017
    есть функция добавления слеша
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26264 #26266 02:07 PM, 18 Sep 2017
    а что в итоге нужно получить? может быть substring подойдет?
  • @3334085 #26267 02:09 PM, 18 Sep 2017
    Посмотрел и понял, что мне бы в идеале иметь функцию что бы:
    1. при приведении к числу сохранялся был NULL
    2. При sumif в который попадает число+null - на выходе был был null...
  • https://t.me/clickhouse_ru
    Унифицировать строки вида https://example.com и https://example.com/ . Совет выше в принципе помог, есть функция appendTrailingCharIfAbsent
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26268 #26269 02:25 PM, 18 Sep 2017
    понятно, тогда substring тоже мог бы сойти:
    substring('https://example.com/',1,19)
  • https://t.me/clickhouse_ru
    @osipovnikita #26270 02:25 PM, 18 Sep 2017
    Адреса соответственно могут быть разные и мы не знаем позицию последнего символа)
  • https://t.me/clickhouse_ru
    @Sablast #26271 02:26 PM, 18 Sep 2017
    важное уточнение =)
  • @3334085 #26272 02:26 PM, 18 Sep 2017
    Обещали же запилить substring с аргументом «-N»
  • @3334085 #26273 02:26 PM, 18 Sep 2017
    Либо можно сначала считать длину и потом делать -1
  • https://t.me/clickhouse_ru
    @orantius #26274 02:28 PM, 18 Sep 2017
    substring('http://example.com/', 1, -2)
  • https://t.me/clickhouse_ru
    @arzonus #26275 02:29 PM, 18 Sep 2017
    Добрый день!
    Наблюдаю периодически ошибку при вставке данных
    Logical error: part spans more than one month
    Однако, в документации указано, что рекомендовано группировать по месяцам при вставке данных, однако это не является обязательным условием.
    С чем может быть связано и как решить ее?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26274 #26276 02:29 PM, 18 Sep 2017
    в моей версии кх такой запрос выдает пустое значение
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26270 #26277 02:40 PM, 18 Sep 2017
    replaceRegexpOne('https://example.com/','(htt(p|ps)://.*)/$','\\1') вроде так еще работает
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26278 02:40 PM, 18 Sep 2017
    Коллеги, добрый день, подскажите, пожалуйста, а где можно взять jar-ник со всеми dependencies для jdbc? Никак не получаетя подружить Talend и ClickHouse
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26278 #26279 02:43 PM, 18 Sep 2017
    Попробуйте на базе этой статьи скомпилить jar
    http://blog.magazov.com/clickhouse-intellij-idea/
    Clickhouse + Intellij Idea

    Чтобы подключить clickhouse к вашему любимому продукту от JetBrains, выкачаем репозиторий с jdbc клиентом: ➜ git clone https://github.com/yandex/clickhouse-jdbc.git соберем драйвер: ➜ cd clickhouse-jdbc ➜ mvn package assembly:single -DskipTests=true В директори target/ получим наш jar ➜ clickhouse-jdbc git:(master) ls target/*dependencies.jar target/clickhouse-jdbc-0.1-SNAPSHOT-jar-with-dependencies.jar Открываем

  • https://t.me/clickhouse_ru
    Могу скинуть скомпиленый драйвер 0.1.26
  • https://t.me/clickhouse_ru
    Будьте добры, пожалуйста
  • https://t.me/clickhouse_ru
    Я с убунтой почти не знаком. Компиляция заглохла на нехватки JAVA_HOME и дальше я не раскопал..
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26282 #26283 02:46 PM, 18 Sep 2017
    я компил в контейнере докер образа с мавеном :)
  • https://t.me/clickhouse_ru
    Вот версия 0.1.27 https://yadi.sk/d/N2EetXom3MzRPQ (собрана под Ubuntu 17.04)
    clickhouse-jdbc-0.1.27-jar-with-dependencies.jar

    View and download from Yandex.Disk

  • https://t.me/clickhouse_ru
    @NataMakarova #26285 02:49 PM, 18 Sep 2017
    открылось, кажется
  • https://t.me/clickhouse_ru
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". вот так(
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26287 02:53 PM, 18 Sep 2017
    Сейчас попробую пересобрать
  • https://t.me/clickhouse_ru
    Такого нет в зависимостях этого драйвера. Скорее всег ругается на что-то другое. А разве Talend не на джаве написан?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26289 02:56 PM, 18 Sep 2017
    Как вы вообще что-то можете запустить без установленой JAVA_HOME?
  • @ztlpn ↶ Reply to #26275 #26290 02:57 PM, 18 Sep 2017
    А какая у вас версия?
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26290 #26291 02:58 PM, 18 Sep 2017
    1.1.54289 - судя по последней версии в докере
  • https://t.me/clickhouse_ru
    @tourtechannel #26292 02:59 PM, 18 Sep 2017
    Коллеги, привет. Попробую ещё раз кинуть клич. Очень нужен на RIW рекламодатель, который использует технологию clickhouse и может поделиться своим опытом.
  • https://t.me/clickhouse_ru
    На джаве, просто таленд на винде, а кх на виртуальной убунте
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26290 #26294 03:03 PM, 18 Sep 2017
    На 1.1.54284 такого не наблюдаю. Работа с различными месяцами корректная
  • https://t.me/clickhouse_ru
    И вы указываете драйвер где? В таленде на винде?
  • https://t.me/clickhouse_ru
    Да, победил проблему! Видимо этой компоненте (tJDBCConnection) не хватало ещё 1 джарника. Добавил как на картинке и заработало.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26298 03:12 PM, 18 Sep 2017
    Спасибо вам большое!
  • @3334085 #26299 03:22 PM, 18 Sep 2017
    в документации не указана функция assumeNotNull хотя она есть в примерах. не подскажите что она делает
  • @milovidov_an #26300 03:23 PM, 18 Sep 2017
    Функция позволяет преобразовать Nullable значение в не Nullable. Работает следующим образом: если значение не NULL, то возвращает его. Если значение NULL, то возвращает некоторый не специфицированный результат.
  • @3334085 ↶ Reply to #26300 #26301 03:38 PM, 18 Sep 2017
    Спасибо, но мне же это не позволит засунуть Null в числовой тип?
  • @milovidov_an #26302 03:40 PM, 18 Sep 2017
    Попробуйте toInt64OrZero от Nullable строки. Эта функция должна вернуть NULL, если аргумент NULL (и ноль, если аргумент не NULL, но не парсится как число).
  • @3334085 ↶ Reply to #26302 #26303 03:44 PM, 18 Sep 2017
    Спасибо, кажется работает, не мог подумать что эта функция может не преобразовывать NUll.

    Ранее я тут спрашивал но повторюсь, вдруг тоже поможете - если у меня есть строки типа string и внутри как цифры так и нули, я бы хотел их агрегировать sum() и что бы при попадении NULL - результатом агрегации был бы NULL
  • @3334085 #26304 03:45 PM, 18 Sep 2017
    так я получаю: DB::Exception: Illegal type Int64 of argument of function toInt64OrZero. Only String argument is accepted for try-conversion function. For other arguments, use function without 'try'.
  • @milovidov_an #26305 03:47 PM, 18 Sep 2017
    Сейчас все агрегатные функции возвращают не NULL, агрегируя только не NULL-значения.
  • @3334085 #26306 03:51 PM, 18 Sep 2017
    это я уже понял, но в рамках полной поддержки NULL - это не планируется? к великому сожелнию вынужден работать с такой структурой данных =(
  • @milovidov_an #26307 03:54 PM, 18 Sep 2017
    Можно какой-нибудь комбинатор реализовать. Например, -OrNull: sumOrNull и т. п.
  • @3334085 #26308 03:56 PM, 18 Sep 2017
    вот это было бы очень круто тк статистика которую я обрабатываю часто имеет NULL значения а конечный KPI имеет смысл только если все счетчики включенные в расчет не имеют NULL в заданном промежутке времени
  • @milovidov_an #26309 05:05 PM, 18 Sep 2017
    Маленькая просьба.

    https://news.ycombinator.com/newest

    Надо на этой странице найти нашу статью "Evolution of Data Structures in Yandex.Metrica" и нажать слева треугольник "вверх".

    Перед этим придётся зарегистрироваться. Но не стоит беспокоиться - на этом сайта самая лучшая регистрация из всех, что я видел :)
  • done
  • @emptyname #26311 05:07 PM, 18 Sep 2017
    To the moon 🚀
  • @vstakhov #26312 05:11 PM, 18 Sep 2017
    там, кстати, довольно суровая защита от накруток, в том числе и от накруток через чатики :)
  • https://t.me/clickhouse_ru
    @vladenisov #26313 07:02 PM, 18 Sep 2017
    подскажите, пожалуйста, что может быть не так: есть распределенная таблица
    CREATE TABLE postgres.user_subscribes_new ( site String, ctime DateTime DEFAULT now(), blog_id UInt32, post_id Nullable(UInt32), user_id UInt64, event UInt8, chour DateTime MATERIALIZED toStartOfHour(ctime), cdate Date MATERIALIZED toDate(ctime)) ENGINE = Distributed(sports, \'local\', \'user_subscribes_new\', blog_id)
    есть локальные таблицы на 6 шардах (3x2):
    CREATE TABLE local.user_subscribes_new ( site String, ctime DateTime DEFAULT now(), blog_id UInt32, post_id Nullable(UInt32), user_id UInt64, event UInt8, chour DateTime DEFAULT toStartOfHour(ctime), cdate Date DEFAULT toDate(ctime)) ENGINE = ReplicatedMergeTree(\'/clickhouse/tables/{shard}/subscribes\', \'{replica}\', cdate, (site, blog_id, event, chour, cdate), 8192)
    вставляю в рапсределенную три раза:
    INSERT INTO postgres.user_subscribes_new( site, blog_id, user_id, event, ctime, post_id ) VALUES ('RU', 43590, 23607725, 1, 1, 1406479)
    в таблице видна только одна запись, независимо от того, соклько было инсертов. куда посмотреть?
  • https://t.me/clickhouse_ru
    @taroff #26314 07:03 PM, 18 Sep 2017
    это случаем не "дедупликация данных"?
  • https://t.me/clickhouse_ru
    @taroff #26315 07:05 PM, 18 Sep 2017
    Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. То есть, обеспечивается идемпотентность INSERT-ов. Это работает только для последних 100 вставленных в таблицу блоков.
  • https://t.me/clickhouse_ru
    @vladenisov #26316 07:05 PM, 18 Sep 2017
    блин, дедупликация, точно. я дошел к этому от другой проблемы, а про дедупликацию в mergetree забыл совершенно
  • https://t.me/clickhouse_ru
    @taroff #26317 07:05 PM, 18 Sep 2017
    это имею ввиду
  • https://t.me/clickhouse_ru
    @vladenisov #26318 07:06 PM, 18 Sep 2017
    ага, понял. спасибо, вылетело из головы.
  • https://t.me/clickhouse_ru
    @vladenisov #26319 07:06 PM, 18 Sep 2017
    сейчас осталось понять, решил ли я изначальную проблему )
  • https://t.me/clickhouse_ru
    @Shikhragimov #26320 07:20 PM, 18 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Shikhragimov #26321 07:23 PM, 18 Sep 2017
    Господа привет!
    меня интересует то, как вставлять rowdata?

    вернее как их представлять. в документации это не сказано.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26321 #26322 07:29 PM, 18 Sep 2017
    а как выглядит ваша rawdata?
  • https://t.me/clickhouse_ru
    @Shikhragimov #26323 07:30 PM, 18 Sep 2017
    сейчас я тестирую, поэтому допустим
    json бы выглядел так
    {"date": "01-02-2017", "name": "Marat}
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26323 #26324 07:33 PM, 18 Sep 2017
    INSERT INTO table.name FORMAT JSONEachRow подойдет?
  • https://t.me/clickhouse_ru
    @Shikhragimov #26325 07:35 PM, 18 Sep 2017
    конечно так подойдет, просто мне интересна именно работа с бинарными данными. Т.к. хочу попробовать сделать все из эрланга, а он с бинарными данными отлично работает
  • https://t.me/clickhouse_ru
    @Shikhragimov #26326 07:35 PM, 18 Sep 2017
    Для меня это ПОКА вопрос любопытства, и если я не получу ответ на него, ничего критического не произойдет;)
  • https://t.me/clickhouse_ru
    мы обычным lhttpc клиентом ходим к кликхаусу
  • 19 September 2017 (91 messages)
  • @Nvarchar495 #26328 06:03 AM, 19 Sep 2017
    Господа ) Что-то мы давно не собирались)
  • https://t.me/clickhouse_ru
    @kshvakov #26329 06:10 AM, 19 Sep 2017
    Думаю, можем на Кипре место предоставить, если вдруг кому интересно )
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Civiloid ↶ Reply to #26321 #26331 06:37 AM, 19 Sep 2017
    Вроде ж сказано все
  • @KonanVarVar #26332 06:50 AM, 19 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @cleverfox #26333 06:57 AM, 19 Sep 2017
    Всем доброго врменеи суток. Подскажите, как вставить в поле NULL, желательно в TabSeparated или RowBinary формате. В доке не нашёл.
  • @f1yegor ↶ Reply to #26309 #26334 07:27 AM, 19 Sep 2017
    А прямой ссылки нет? Уже не могу найти на первых 4х страницах
  • https://t.me/clickhouse_ru
  • @f1yegor #26336 07:51 AM, 19 Sep 2017
    done
  • https://t.me/clickhouse_ru
    в TabSeparated – \N
  • https://t.me/clickhouse_ru
    @count0ru #26338 10:07 AM, 19 Sep 2017
    подскажите, кто как бекапит кх
  • https://t.me/clickhouse_ru
    @count0ru #26339 10:07 AM, 19 Sep 2017
    нашел вот такое
    https://github.com/resure/scpnet/wiki/ClickHouse-backup
    resure/scpnet

    scpnet - SCP-RU Web Services

  • https://t.me/clickhouse_ru
    @count0ru #26340 10:08 AM, 19 Sep 2017
    есть какое-то более цельное решение?
  • https://t.me/clickhouse_ru
    @Mblpz0r ↶ Reply to #26340 #26341 10:08 AM, 19 Sep 2017
    да
    ALTER TABLE FREEZE PARTITION
    и rsyncom забирать папку КХ
  • @vludv ↶ Reply to #26333 #26342 10:32 AM, 19 Sep 2017
    В RowBinary - просто бинарная единица. Это флаг того, что значение NULL. Если это флаг нулевой, то после него идет само значние. Пример:
    echo -ne "\x01\x00\xFF" | clickhouse-local --structure "i Nullable(UInt8)" --input-format RowBinary --query "SELECT * FROM table" 2>/dev/null
  • @IgnisDivine #26343 10:51 AM, 19 Sep 2017
    Joined.
  • @IgnisDivine #26344 10:52 AM, 19 Sep 2017
    ребят кто-нибудь сталкивался с тем что после перезапуска кликхауса он не отвечает ни на какие запросы и подключения, а в логах пишет что удаляет что-то постоянно
  • @IgnisDivine #26345 10:52 AM, 19 Sep 2017
    2017.09.19 13:51:01.567860 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428120_3428120_0
    2017.09.19 13:51:01.573137 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428121_3428121_0
    2017.09.19 13:51:01.574949 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428122_3428122_0
    2017.09.19 13:51:01.576726 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428123_3428123_0
    2017.09.19 13:51:01.578542 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428124_3428124_0
    2017.09.19 13:51:01.580526 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428125_3428125_0
    2017.09.19 13:51:01.582195 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428126_3428126_0
    2017.09.19 13:51:01.583956 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428127_3428127_0
    2017.09.19 13:51:01.585541 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428128_3428128_0
    2017.09.19 13:51:01.587274 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428129_3428129_0
  • @IgnisDivine #26346 10:52 AM, 19 Sep 2017
    Как-то так в логах
  • @IgnisDivine #26347 10:52 AM, 19 Sep 2017
    Просто даже не знаю что делать
  • https://t.me/clickhouse_ru
    Такое у меня было, когда я насоздавайл много (больше 2к) мелких таблиц и заливал туда данные малыми пачками (<1к). Минут через 10-20 оно пишет подобное в лог и запускается
  • @IgnisDivine #26349 10:56 AM, 19 Sep 2017
    Ну у нас одна большая таблица и где-то 6 мелких. Т.е. немного не та ситуация. единственное что перед перезапуском был дроп большой базы. Может быть в этом проблема?
  • @IgnisDivine #26350 10:56 AM, 19 Sep 2017
    Оно просто чистит перед запуском?
  • https://t.me/clickhouse_ru
    При дропе данные сразу не удаляются. Так что в вашем случае всё нормально, это идёт непосредственное удаление. В недавних релизах добавили опцию в конфиг, что можно заблокировать таблицу на удаление, если в ней больше указаного кол-ва строк
  • @IgnisDivine #26352 11:00 AM, 19 Sep 2017
    Спасибо боьлшое :)
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26353 11:33 AM, 19 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26354 11:33 AM, 19 Sep 2017
    Всем привет! А есть ли либы для CH, которые могут общаться с сервером по https искаропки?
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26355 11:35 AM, 19 Sep 2017
    попробовал либу от mail.ru - не хочет https 😕
  • https://t.me/clickhouse_ru
    @finio #26356 11:40 AM, 19 Sep 2017
    а что за либа от mail.ru?
  • https://t.me/clickhouse_ru
    @finio #26357 11:41 AM, 19 Sep 2017
    и для какого она языка?
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26358 11:41 AM, 19 Sep 2017
    ой, Go =)
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26359 11:41 AM, 19 Sep 2017
    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.

  • https://t.me/clickhouse_ru
    @pavel_odintsov #26360 11:41 AM, 19 Sep 2017
    вот эта
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26361 11:42 AM, 19 Sep 2017
    сейчас мучаю https://github.com/roistat/go-clickhouse вроде https появился в ней
    GitHub - roistat/go-clickhouse: Golang ClickHouse connector

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

  • https://t.me/clickhouse_ru
    @BloodJazMan #26362 11:45 AM, 19 Sep 2017
    есть два протокола http и native
    https это только если перед clickhouse стоит nginx
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26363 11:46 AM, 19 Sep 2017
    именно так и стоит по соображениям безопасности
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26364 11:46 AM, 19 Sep 2017
    roistat вроде https умеет, сейчас попробую подсунуть нужные хидеры авторизации OAUTH
  • @ztlpn #26365 11:46 AM, 19 Sep 2017
    > https это только если перед clickhouse стоит nginx

    Необязательно - см. настройку https_port в конфиге.
  • https://t.me/clickhouse_ru
    опа =) спасибо
  • @pavel_maksimow #26367 12:09 PM, 19 Sep 2017
    Ребятя подскажите, начинающему, это нормально, что ошибка выходит MemoryError, при добавление 1гб текста в CH, надо поменьше кусками добавлять или я что-то не то делаю?
  • https://t.me/clickhouse_ru
    ну вот я бы попытался сначала уменьшить размер вставки
  • https://t.me/clickhouse_ru
    @not_logan #26369 12:10 PM, 19 Sep 2017
    у вас, похоже, питон падает. Не кликхауз
  • @pavel_maksimow #26370 12:12 PM, 19 Sep 2017
    ладно, попробую поменьше кусками, спасибо
  • https://t.me/clickhouse_ru
    @rboyko #26371 12:14 PM, 19 Sep 2017
    Ребят, чет туплю, подскажите пожалуйста есть ли способ через jdbc используя RowBinaryStream инсертить null значения?
  • @igorl86 #26372 12:16 PM, 19 Sep 2017
    if (string == null) {
    stream.writeInt8(1);
    } else {
    stream.writeInt8(0);
    stream.writeString(string);
    }
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26367 #26373 12:17 PM, 19 Sep 2017
    судя по трейсу вы делаете копию данных, храните в памяти две копии одних и тех же данных. Да, стоит уменьшить на порядки размер файлов, либо загружать через clickhouse-client. Из привычного вам Jupyter это можно сделать через ! в начале ячейки
  • https://t.me/clickhouse_ru
    @rboyko ↶ Reply to #26372 #26374 12:19 PM, 19 Sep 2017
    Спасибо!
  • https://t.me/clickhouse_ru
    @qweran ↶ Reply to #26367 #26375 12:19 PM, 19 Sep 2017
    А что в логах кликхауса?
  • о спасибо, хороший совет.
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26377 12:24 PM, 19 Sep 2017
    угу, roistat заработал как требуется
  • https://t.me/clickhouse_ru
    @arzonus #26378 12:25 PM, 19 Sep 2017
    Добрый день!
    Скажите пожалуйста, в чем может быть причина в том, что не происходит заполнение материализированного представления? В docker версии происходит, в нативной установке под ubuntu 16.04 не происходит. Версия 1.1.54284 и там и там, схема одна и та же. Данные схожие. Запрос из которого формируется представление выдает схожие данные как и в MV в docker, а в нативной установке расходятся. Какие логи отвечают за это?
    Вижу только, что в докер версии происходит мерж частей в MV, а в нативном нет.
  • @VitalVas #26379 12:32 PM, 19 Sep 2017
    Что скажете на счет этого поделия http://www.proxysql.com/blog/proxysql-143-clickhouse ?
  • @vludv ↶ Reply to #26345 #26380 12:32 PM, 19 Sep 2017
    Это нормально. Просто пред рестартом сервер помержил эти куски, но не успел удалить куски-исходники (они только через 8 минут удаляются). При рестарте он все приводит в согласованное состояние, проверяет и удаляет ненужные куски, ставит задачу в очередь на скачивание недостающх.
  • @IgnisDivine #26381 12:32 PM, 19 Sep 2017
    Понял, спасибо :)
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26382 12:36 PM, 19 Sep 2017
    In today's release, ProxySQL 1.4.3, the most important feature is surely the support for ClickHouse as a backend!
    Clients can still connect to ProxySQL using the MySQL Protocol, and ProxySQL will query ClickHouse.
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26383 12:36 PM, 19 Sep 2017
    Nice idea!
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26384 12:37 PM, 19 Sep 2017
    итого, roistat единственные кто сумел подключиться по https без проблем =)
  • https://t.me/clickhouse_ru
    Спасибо. То, что надо!
  • https://t.me/clickhouse_ru
    А какая проблема с HTTPS?
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26387 01:38 PM, 19 Sep 2017
    ну другим плагинам указываешь, а им не нравится "https" как протокол
  • https://t.me/clickhouse_ru
    @pavel_odintsov #26388 01:38 PM, 19 Sep 2017
    вот вся и проблема
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26378 #26389 01:53 PM, 19 Sep 2017
    Нашел интересное поведение КХ.

    Если формировать из запроса содержащий JOIN, то нельзя указывать в качестве таблиц данных запросы, даже если они требуются только для алиасов. Иначе не обновляется. В таблицах есть схожие колонки, поэтому из за использования алиасов не происходила "подписка" на изменения в таблице А. А данные приходили в таблицу А позже, чем в таблицу Б, из-за этого данные в MV и не объединялись.
    Нам повезло, что есть возможность "подписаться" на 2 таблицы сразу же, однако из за отсутствия алиасов в join, можно также наткнуться на эту проблему.
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26390 02:09 PM, 19 Sep 2017
    Добрый день, подскажите, в чем может быть проблема
    clickhouse error: [242] DB::Exception: Table is in readonly mode" query":{"Stmt":"INSERT INTO statistics.daily_statistics_events
  • https://t.me/clickhouse_ru
    @symstriker #26391 02:10 PM, 19 Sep 2017
    Ну собсно там понятно в чем проблема. Вопрос в том какой барашек ридонли поставил
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26392 02:11 PM, 19 Sep 2017
    можно как-то убрать ридонли?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26393 02:17 PM, 19 Sep 2017
    у меня на слейве повторяется такая ошибки 2017.09.19 14:16:33.699771 [ 9 ] <Error> ReshardingWorker: no node, path: /clickhouse/task_queue/resharding/localhost.localdomain
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26394 02:25 PM, 19 Sep 2017
    на слейве повис кликхаус, я его перегрузил, вроде бы отпустило
  • @298556551 #26395 02:42 PM, 19 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @amuzeev #26396 04:32 PM, 19 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @amuzeev #26397 04:33 PM, 19 Sep 2017
    В PG есть запрос:
    select array(select id from table)

    Как сделать аналогичное?
  • https://t.me/clickhouse_ru
    @ksukjjiohoh8789 #26398 04:35 PM, 19 Sep 2017
    Добрый вечер
    кто-нибудь в курсе, можно ли выделять определенное кол-во ядер на запрос?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26399 04:38 PM, 19 Sep 2017
    кто знает что за ошибка
    <Error> ReshardingWorker: no node, path: /clickhouse/task_queue/resharding/localhost.localdomain ?
  • https://t.me/clickhouse_ru
    @AlexeyBazhenov #26400 04:59 PM, 19 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @edyya ↶ Reply to #26397 #26401 05:41 PM, 19 Sep 2017
    select arrayElement(groupArray(a),2) from ( select 1 a union all select 2)
  • https://t.me/clickhouse_ru
    @vladenisov #26402 06:04 PM, 19 Sep 2017
    а можно в кх из json'а вытащить keys и values? в документации не нашел, но аппметрика как-то строит отчеты.
  • https://t.me/clickhouse_ru
    @orantius #26403 06:07 PM, 19 Sep 2017
    аппметрика не хранит жсон в виде жсона
  • https://t.me/clickhouse_ru
    а можете подсказать, как это устроено в аппметрике? отдаем туда жсон, чтобы было удобное дерево ивентов, в логс-апи тоже получаем жсон.
  • https://t.me/clickhouse_ru
    @orantius #26405 06:12 PM, 19 Sep 2017
    во-первых есть функции visitParamExtract*
  • https://t.me/clickhouse_ru
    @orantius #26406 06:14 PM, 19 Sep 2017
    во-вторых Nested со строками на некоторое количество уровней в глубину.
  • https://t.me/clickhouse_ru
    @vladenisov #26407 06:23 PM, 19 Sep 2017
    ок, спасибо. видимо, буду использовать Nested
  • Будет митап в Москве, но не очень скоро - скорее всего в ноябре или конце октября.

    А пока ближайший вариант - митап в Берлине 5 октября.
  • У нас в планах есть добавление SSL, в том числе, к нативному протоколу.
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26410 08:15 PM, 19 Sep 2017
    кто-то сталкивался с проблемой DB::NetException: I/O error: Broken pipe: while reading from socket (176....:9000), e.what() = DB::NetException, Stack trace: ?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26411 08:15 PM, 19 Sep 2017
    пробовал делать перезапуск, не помогло
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26412 08:18 PM, 19 Sep 2017
    а, я понял, нужно обновить кликхаус
  • @pomme3 #26413 09:02 PM, 19 Sep 2017
    Joined.
  • @3334085 #26414 09:35 PM, 19 Sep 2017
    Накопал фичу/баг:
    Имеем колонку nullable(string) там числа и NULL, пытаемся сконвертировать в int, получаем вместо NULL - ошибку или 0 (при использовании не строгой функции)

    А собственно почему так? Если в колонка типа int может быть nullable...
  • @milovidov_an #26415 09:40 PM, 19 Sep 2017
    > при использовании не строгой функции

    Это какая?
  • @3334085 ↶ Reply to #26415 #26416 09:43 PM, 19 Sep 2017
    toIntOrZero()
  • @milovidov_an #26417 09:44 PM, 19 Sep 2017
    Напишите пример полного запроса с какими-нибудь данными, чтобы разобраться.
  • @3334085 ↶ Reply to #26417 #26418 09:53 PM, 19 Sep 2017
    Есть данные:
    ┌─r──────┐
    │ 127253 │
    │ 125449 │
    │ 1 │
    │ 125445 │
    │ 272 │
    │ 285 │
    │ 215 │
    └────────┘
    ┌─r─────────┐
    │ 2826 │
    │ 401622 │
    │ 470784040 │
    └───────────┘
    ┌─r──┐
    │ \N │
    │ \N │
    │ \N │
    └────┘

    r - string
    запрос select sum(toInt64(r)) from table; выведет ошибку - Attempt to read after eof: Cannot parse Int64 from String, because value is too short.
    т.е по логике данной функции он не может сконвертировать NULL в типе string в NULL в типе int

    ожидаю я же следующего поведения: есть данные -
    тут тип int
    ─r_int2─┐
    │ \N │
    │ 856 │
    └────────┘
    при запросе select sum(r_int2) from table
    я ожидаемо получаю
    ┌─sum(r_int2)─┐
    │ 856 │
    └─────────────┘
  • 20 September 2017 (113 messages)
  • @DeamonMV #26419 06:57 AM, 20 Sep 2017
    Подскажите что за файлы могут накапливатся в каталоге distributes таблици
    вот к примеру, у нас есть распределенная талица а в ней на сейчас 600К файлов
    events_tv20/default@192%2E168%2E1%2E147:9000# ll |wc -l
    665566
    было больше.
    Мы остановили запись во весь шард, там где вот такая нода. и файлики начали рассасыватся.
    Какое назначение этих файлов и самое главное какие могут быть причины их накопление?
  • https://t.me/clickhouse_ru
    Попробуйте комбинато if для sum: sekect sumIf(...), добавив в условие проверку на null
  • @3334085 ↶ Reply to #26420 #26421 07:04 AM, 20 Sep 2017
    Но если внутри null - мне нужно его оставить как null
  • @3334085 #26422 07:04 AM, 20 Sep 2017
    По этому я и говорю - выглядит как баг тк при конвертации не работает sum() а при нативном типе int - работает
  • @3334085 #26423 07:08 AM, 20 Sep 2017
    Мне главное понять - это баг и он исправится или это фича и нужно смириться...
  • Помнится мне это данные которые были записаны или не записаны по какой то причине. Алексей как то рассказывал, что есть данные, которые не записались по какой то причине, которые хранятся некоторое время
  • @pookieShmukie #26425 07:36 AM, 20 Sep 2017
    У вас в логах нет ошибок на запись?
  • @DeamonMV #26426 07:37 AM, 20 Sep 2017
    а как они могут выглядить?
  • @pookieShmukie #26427 07:38 AM, 20 Sep 2017
    Просто tail -n 100 /var/log/clickhouse-server/clickhouse-server.err.log
  • @pookieShmukie #26428 07:38 AM, 20 Sep 2017
    Есть там чего?
  • @pookieShmukie #26429 07:38 AM, 20 Sep 2017
    Причем смотреть надо на шарде в который отправляете запросы на вставку данных
  • @pookieShmukie #26430 07:40 AM, 20 Sep 2017
    Если там нет ничего, то возможно это какая то другая информация хранится в файлах
  • @pookieShmukie #26431 07:40 AM, 20 Sep 2017
    Содержимое файлов не смотрели?
  • @DeamonMV #26432 07:41 AM, 20 Sep 2017
    содержимое файлов не смотрели
    а влоге вот такое сыпится
    2017.09.20 07:40:13.305750 [ 14 ] <Warning> nic.events_local_tv20 (StorageReplicatedMergeTree, CleanupThread): Couldn't remove 20170920_20170920_3230238_3230238_0 from ZooKeeper: no node
    2017.09.20 07:40:13.331131 [ 14 ] <Warning> nic.events_local_tv20 (StorageReplicatedMergeTree, CleanupThread): Couldn't remove 20170917_20170920_3230235_3230235_0 from ZooKeeper: no node
    2017.09.20 07:40:13.350994 [ 14 ] <Warning> nic.events_local_tv20 (StorageReplicatedMergeTree, CleanupThread): Couldn't remove 20170920_20170920_3230233_3230233_0 from ZooKeeper: no node
    2017.09.20 07:40:23.060173 [ 27 ] <Error> events_v2_tv11.Distributed.DirectoryMonitor: Code: 210, e.displayText() = DB::NetException: I/O error: Broken pipe: while reading from socket (192.168.1.145:9000), e.what() = DB::NetException, Stack trace:
  • @DeamonMV #26433 07:44 AM, 20 Sep 2017
    содержимое файлов это инсерты с данными
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26434 07:48 AM, 20 Sep 2017
    какая у тебя версия кликхауса?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26435 07:50 AM, 20 Sep 2017
    у меня вчера была ошибка с DB::NetException: I/O error: Broken pipe: на версии 1.1.54236
  • @DeamonMV ↶ Reply to #26434 #26436 07:53 AM, 20 Sep 2017
    ii clickhouse-client 1.1.54236 amd64 Client binary for clickhouse
    ii clickhouse-server-base 1.1.54236 amd64 Server binary for clickhouse
    ii clickhouse-server-common 1.1.54236 amd64 clickhouse-server-common
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26437 08:00 AM, 20 Sep 2017
    да, я вчера обновился и проблема ушла
  • @d1m1trym #26438 08:16 AM, 20 Sep 2017
    Joined.
  • @DeamonMV #26439 08:17 AM, 20 Sep 2017
    Дмитрий Анатолиевич вы сюда по каким причинам попали?
  • @d1m1trym #26440 08:18 AM, 20 Sep 2017
    Шуточки подъехали
  • @DeamonMV ↶ Reply to #26437 #26441 08:50 AM, 20 Sep 2017
    подскажите, а каким способом обнову КХ делали?
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26442 08:51 AM, 20 Sep 2017
    apt-get install --only-upgrade clickhouse-server-common
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26443 08:52 AM, 20 Sep 2017
    ну и потом перезапуск /etc/init.d/clickhouse-server restart
  • @DeamonMV #26444 08:52 AM, 20 Sep 2017
    спасибо
  • https://t.me/clickhouse_ru
    @arzonus #26445 08:58 AM, 20 Sep 2017
    Доброе утро!
    Скажите пожалуйста, как можно это оптимизировать?
    Если в табличке А и в табличке Б по 10к значений с одинаковым id, то это выльется в 100 млн записей по которым потом происходит фильтрация. Но так как нету join по условиям, я даже не представляю как это сделать.

    SELECT
    id,
    local_time,
    start_time,
    end_time
    FROM A
    ALL INNER JOIN (
    SELECT
    id,
    start_time,
    end_time
    FROM B
    ) USING id
    WHERE local_time >= start_time AND local_time < end_time
  • @pookieShmukie #26446 09:01 AM, 20 Sep 2017
    А писать в одну таблицу не получится?
  • https://t.me/clickhouse_ru
    @arzonus #26447 09:01 AM, 20 Sep 2017
    К сожалению никак не получится
  • @pookieShmukie #26448 09:03 AM, 20 Sep 2017
    Просто в КХ логика выборки данных сильно отличается от того же MySQL например в котором можно делать констрейны на подзапросы и джоины. В случае с констрейнами сначала выбирается правая таблица, потом на каждую строку с констрейнами в запрос делается подзапрос (в случае подзапроса) и выбираются данные, если это джоин, то происходит почти тоже самое что и при подзапросе. Т.е. будь у вас 10к строк и вы джоините еще 10к строк с констрейнами на джоин, то это будет по сути 10к подзапросов в таблицу, что будет крайне не эффективно.
  • @pookieShmukie #26449 09:04 AM, 20 Sep 2017
    Ощутил это на своей шкуре, когда джоинил в одном запросе на 40к строк еще кучу таблиц в которых от 10 до 100к строк на каждую строку из правой таблицы )
  • @pookieShmukie #26450 09:06 AM, 20 Sep 2017
    Перетащил такое добро в КХ...вы не поверите, но даже на двух виртуальных ядрах КХ справляется шустрее чем MySQL на продакшен сервере с 40 ядрами и 190 гигами оперативы и натюненными настройками, причем MySQL отрабатывает за 30 секунд, а КХ за 0.005.
  • https://t.me/clickhouse_ru
    @arzonus #26451 09:09 AM, 20 Sep 2017
    У меня это выполняется не в запросе, а при вставке в MV. И я упераюсь в оперативу, несмотря на выставленные настройки.
  • https://t.me/clickhouse_ru
    @arzonus #26452 09:10 AM, 20 Sep 2017
    У нас специфика такая, что не получится мержить перед КХ, так как данные за временные промежутки приходят с задержкой от 1 минуты до нескольких месяцев
  • https://t.me/clickhouse_ru
    @arzonus #26453 09:12 AM, 20 Sep 2017
    Или придется мержить для каждого id, выбирая данные из КХ, что в 90% случаев будет происходит каждые 15 секунд, а так как возможный rps у КХ не высокий, он не выдержит.
  • @pookieShmukie #26454 09:16 AM, 20 Sep 2017
    Это печально. Пока ничего в голову не приходит
  • https://t.me/clickhouse_ru
    @kshvakov #26455 09:16 AM, 20 Sep 2017
    Что вы хотите всем этим сделать, задача какая ?
  • https://t.me/clickhouse_ru
    @arzonus #26456 09:17 AM, 20 Sep 2017
    Сопоставить данные из таблицы А с данными из таблицы Б по условию что id одинаковы и время события из таблицы A попадает в указанный временной промежуток из таблицы Б
  • https://t.me/clickhouse_ru
    @arzonus #26457 09:18 AM, 20 Sep 2017
    Соответственно вытащив дополнительную информацию из А и Б
  • @igorl86 #26458 09:18 AM, 20 Sep 2017
    можно например представить вторую таблицу словарем, если есть точное условие...
  • https://t.me/clickhouse_ru
    @arzonus ↶ Reply to #26458 #26459 09:21 AM, 20 Sep 2017
    Если бы было точное условие, можно было бы напрямую вытащить из второй таблицы :)
    Вопрос как можно было бы его сформировать :)
  • @igorl86 #26461 09:21 AM, 20 Sep 2017
    а вот это не подходит?
  • https://t.me/clickhouse_ru
    @arzonus #26462 09:24 AM, 20 Sep 2017
    К сожалению, там используется только Date, а не DateTime или Int64. Но больше проблема в том, что результат будет схож с условием ANY JOIN, а требуется ALL JOIN
  • @TonyGogin #26463 09:27 AM, 20 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @smilingnavern #26464 09:31 AM, 20 Sep 2017
    Привет,

    А кто-нибудь использовал эту обертку дял постгерса?https://github.com/Infinidat/infi.clickhouse_fdw/

    задача лезть из постгреса в кликхаус, при импорте схемы не подтягиваются Nullable поля и когда делаешь запросы питон разваливается с KeyError
    Infinidat/infi.clickhouse_fdw

    A PostgreSQL foreign data wrapper for ClickHouse. Contribute to Infinidat/infi.clickhouse_fdw development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @smilingnavern #26465 09:32 AM, 20 Sep 2017
    или может какой-то другой вариант кто посоветует
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26466 10:29 AM, 20 Sep 2017
    мы пробовали, нам не понравилось, очень сырое
    вот это постабильнее работало - fdw_odbc postgres extension, но все равно ограничено и нужно определенные типы преобразовывать в что-то поддерживаемое
  • https://t.me/clickhouse_ru
    @not_logan #26467 10:30 AM, 20 Sep 2017
    коллеги, подскажите решение простейшей задачи, что-то я лбом уперся. Как инсертит в MergeTree в поле date? какой формат? Пишу из python
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26467 #26468 10:31 AM, 20 Sep 2017
    2017-01-01
    Покажите код
  • https://t.me/clickhouse_ru
    а расскажите как odbc настраивали? мне его пришлось подправить под 9.6 иначе не компиллось, а как подключение настроить не понял. Нужно ли дополнительно компилить clickhouse_odbc на хост с постгерсом?
  • https://t.me/clickhouse_ru
    @smilingnavern #26470 10:46 AM, 20 Sep 2017
    я ща посмотрел питоновский fdw не поддерживает даже енамы=(
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26471 10:53 AM, 20 Sep 2017
    pg odbc fdw тоже не поддерживает enum, но можно конвертировать toString и тогда работает
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26472 10:53 AM, 20 Sep 2017
    CREATE FOREIGN TABLE
    test (
    id integer,
    value text,
    ipv6 char(16)
    )
    SERVER odbc_server
    OPTIONS (
    schema 'default',
    sql_query 'select id, toString(value), ipv6 from default.test',
    sql_count 'select count(*) from default.test'
    );

    CREATE USER MAPPING FOR postgres
    SERVER odbc_server;

    SELECT id FROM test limit 5;
    SELECT * FROM test limit 5;
    SELECT count(*) FROM test;
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26473 10:53 AM, 20 Sep 2017
    что-то вроде такого
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26474 10:54 AM, 20 Sep 2017
    а перед этим еще такое было
    CREATE EXTENSION IF NOT EXISTS odbc_fdw;

    DROP SERVER IF EXISTS odbc_server CASCADE;
    CREATE SERVER odbc_server
    FOREIGN DATA WRAPPER odbc_fdw
    OPTIONS (dsn 'ClickHouse');
  • https://t.me/clickhouse_ru
    @smilingnavern #26475 11:26 AM, 20 Sep 2017
    Йеее пасиб) ток не вижу где урл доступа к кликхаусу настраивается
  • https://t.me/clickhouse_ru
    @smilingnavern #26476 11:27 AM, 20 Sep 2017
    в дсн не прописываете так как локалхост?
  • https://t.me/clickhouse_ru
    @smilingnavern #26477 11:29 AM, 20 Sep 2017
    меня еще смутило, что непонятно к какому порту коннектится в кликхаусе для одбц
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26478 11:30 AM, 20 Sep 2017
    IMPORT FOREIGN SCHEMA "default"
    LIMIT TO (requests)
    FROM SERVER "clickhouse_server"
    INTO "public"
    OPTIONS (
    db_url 'http://localhost:32798',
    db_name 'default'
    );
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26479 11:30 AM, 20 Sep 2017
    по http работало у нас
  • https://t.me/clickhouse_ru
    @smilingnavern #26480 11:31 AM, 20 Sep 2017
    ясно, пасибо огромное!
  • https://t.me/clickhouse_ru
    @smilingnavern #26481 11:32 AM, 20 Sep 2017
    ща буду разбираться
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26482 11:32 AM, 20 Sep 2017
    но мы все же выбрали вариант с ETL Clickhouse -> Postgres на время пока BI переезжает с Citus (тот же postgres) на Clickhouse
  • https://t.me/clickhouse_ru
    @smilingnavern #26483 11:32 AM, 20 Sep 2017
    ETL это что?
  • https://t.me/clickhouse_ru
    @smilingnavern #26484 11:32 AM, 20 Sep 2017
    ну я понял, у вас odbc был временный вариант для миграции. вы его долго в продакшене не гоняли
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26485 11:32 AM, 20 Sep 2017
    основная причина выбора - where условие будет работать локально в случае с fdw, т.е. postgres вначале затянет себе всю таблицу, а только потом фильтрации будет делать
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26486 11:33 AM, 20 Sep 2017
    etl - extraction transform load
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26487 11:33 AM, 20 Sep 2017
    просто преобразование данных с загрузкой
  • https://t.me/clickhouse_ru
    @smilingnavern #26488 11:34 AM, 20 Sep 2017
    если он сначала затягивает всю таблицу, то все преимущество кликхауса вроде как теряется
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26489 11:36 AM, 20 Sep 2017
    смотря как использовать, есть возможность указать sql_where в odbc и тогда будет выполнять только тот запрос что нужно, но если хочется делать произвольные фильтрации, то надо импортить всю таблицу и все where будут локальными
  • https://t.me/clickhouse_ru
    @smilingnavern #26490 11:39 AM, 20 Sep 2017
    выглядит не очень гибко конечно, но в целом примерно принцип понятен. Если хочется чтобы работало на стороне кликхауса, нужно очень конкретно одбц описывать
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26491 11:40 AM, 20 Sep 2017
    верно
  • https://t.me/clickhouse_ru
    @smilingnavern #26492 11:46 AM, 20 Sep 2017
    Так odbc для кликхауса я так понимаю вы компили и подключали отдельно?
  • https://t.me/clickhouse_ru
    @smilingnavern #26493 11:47 AM, 20 Sep 2017
    GitHub - ClickHouse/clickhouse-odbc: ODBC driver for ClickHouse

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

  • https://t.me/clickhouse_ru
    @smilingnavern #26494 11:47 AM, 20 Sep 2017
    вот этот?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @smilingnavern #26499 12:35 PM, 20 Sep 2017
    ну я глянул стрейсом
  • https://t.me/clickhouse_ru
    @smilingnavern #26500 12:35 PM, 20 Sep 2017
    и когда я пишу dsn=ClickHouse он лезет за соовтетствующим драйвером
  • https://t.me/clickhouse_ru
    @smilingnavern #26501 12:35 PM, 20 Sep 2017
    который описан в .odbc.ini
  • https://t.me/clickhouse_ru
    @smilingnavern #26502 12:35 PM, 20 Sep 2017
    для постгреса
  • https://t.me/clickhouse_ru
    @smilingnavern #26503 12:35 PM, 20 Sep 2017
    в общем заработало, спасибо. Я скомпилил одбц драйвер яндекса, добавил так как у вас указано и получается делать запросы.
  • https://t.me/clickhouse_ru
    @smilingnavern #26504 12:36 PM, 20 Sep 2017
    ща покажу как выглядит
  • https://t.me/clickhouse_ru
    @smilingnavern #26505 12:36 PM, 20 Sep 2017
    odbc_fdw тоже пришлось подправить под постгрес 9.6
  • @pavel_maksimow #26506 01:13 PM, 20 Sep 2017
    Ребят. подскажите начинающему, что не нравится при вставке данных кликхаусу? неправильно экранированные кавычки?
  • @pavel_maksimow #26507 01:14 PM, 20 Sep 2017
    предыдущий скрин не тот, вот этот
  • https://t.me/clickhouse_ru
    @OlehBahinskyi #26508 01:15 PM, 20 Sep 2017
    слишком много \, пишет что ему нужен символ ' перед датой
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26509 01:15 PM, 20 Sep 2017
    Тут
    http://joxi.ru/Q2KGdVKi93D6y2
    не должно быть двух слешей
  • @pavel_maksimow #26510 01:17 PM, 20 Sep 2017
    а как их заменить, чтот я не смог догнать как их экранировать
  • https://t.me/clickhouse_ru
    У вас в исходных данных похоже что такое экранирование. Т.е. выход - переделать их
  • @pavel_maksimow #26512 01:20 PM, 20 Sep 2017
    такие данные я из logs api яндекса выгружаю. Всем спасибо большое. буду искать решение
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26513 01:26 PM, 20 Sep 2017
    Попробуйте на данные не питоном посмотреть, может ваш notebook добавляет слеши
  • https://t.me/clickhouse_ru
    @osipovnikita #26514 01:53 PM, 20 Sep 2017
    Вопрос вроде поднимался, но явсного ответа не нашел. Кому нибудь удавалось из Python по HTTPS отправлять запрос на удаленный сервер CH ? Или возможно даже заставить работать какую нибудь ORM (infi, sqlalchemy) по этому протоколу? На сколькопонял на моей машиневсе упирается в паеты OpenSSL. Не из под убунты 16.04 не из под Win10 настроить коннект не удалось, пишет ошибку:

    requests.exceptions.ProxyError: HTTPSConnectionPool(host='xxx.xxx.xxx.xxx', port=9003): Max retries exceeded with url: /?query_id=bf184334-9e0a-11e7-bab7-74d435b3245e&database=default (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden',)))

    Хотя через curl, как описано в доке, спокойно ходит.
  • спасибо, проверю
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26516 02:38 PM, 20 Sep 2017
    Коллеги, добрый день,
    Нашёл незадокументированную фичу Yandex Metrika Logs API - можно скачивать архивы файлов, а значит экономить много времени и трафика.
    Для этого необходимо в хедер запроса на выдачу части логов добавить Accept-Encoding:gzip
    Пользуйтесь)
  • @garikanet #26517 02:55 PM, 20 Sep 2017
    Можно даже сразу этот gz отправить на вход ch )
  • @pookieShmukie #26518 03:24 PM, 20 Sep 2017
    Я думаю, что не зря недокумментированная фича )
  • @pookieShmukie #26519 03:24 PM, 20 Sep 2017
    Все таки упаковать все это дело не дешево для проца
  • @3334085 #26520 03:27 PM, 20 Sep 2017
    пытаюсь сделать:
    ALTER TABLE test_array MODIFY COLUMN r Nullable(Array(Int64));

    и получаю DB::Exception: Cannot parse input: expected [ before: 2826.

    изначально r - nullable(string)
  • https://t.me/clickhouse_ru
    @orantius #26521 03:33 PM, 20 Sep 2017
    видимо ожидается что строка имеет вид [1,2,3]
  • @3334085 ↶ Reply to #26521 #26522 03:35 PM, 20 Sep 2017
    именно со скобками? я думал он по умолчанию стандартный делиметр подхватит (запятую)
  • https://t.me/clickhouse_ru
    @orantius #26523 03:35 PM, 20 Sep 2017
    toString() от массива возвращает строку в этом формате, обратный разбор ожидает ее же.
  • @3334085 #26524 03:37 PM, 20 Sep 2017
    что то int он мне array не переводит а если в string лежат просто голые значения я ожадаю что бы он мне их сделал все новыми массивами - тоже не хочет
  • @3334085 #26525 03:38 PM, 20 Sep 2017
    то, что int в array не может грустно конечно =(
  • https://t.me/clickhouse_ru
    @165386325 #26526 03:40 PM, 20 Sep 2017
    @SomeoneBehindYou , классная аватарка
  • @60242961 #26527 08:43 PM, 20 Sep 2017
    Joined.
  • @60242961 #26528 08:45 PM, 20 Sep 2017
    всем привет, а подскажите можно ли как то скормить json в http api и как правильно это сделать?
  • https://t.me/clickhouse_ru
    Прочитать документацию, особено с использованиеи поиска
  • @60242961 ↶ Reply to #26529 #26530 09:20 PM, 20 Sep 2017
    там не понятен момент с указанием инпут сорса тайпа, можно как то сказать к примеру в конфиги, что все данные в эту таблицу всегда будут приходить в виде json через http api?
  • https://t.me/clickhouse_ru
    Нет,так нельзя. Только передавать FORMAT на каждый запрос
  • @60242961 ↶ Reply to #26531 #26532 09:22 PM, 20 Sep 2017
    жаль, было бы здорово если такой функционал появится
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26533 09:50 PM, 20 Sep 2017
    Напишите прокси, например на nodejs, который будет так делать
  • @60242961 #26534 09:53 PM, 20 Sep 2017
    смысл в том что бы не писать прокси)
  • 21 September 2017 (83 messages)
  • https://t.me/clickhouse_ru
    @Sablast #26535 05:30 AM, 21 Sep 2017
    подскажите, есть таблица у которой неправильно заполнили поле DATE, переписываю ее в другую таблицу где поле DATE является вычисляемым, есть способы сделать это быстро? сейчас скриптом делается SELECT посуточно и INSERT. на обработку 4 месяцев ушло>20 часов =(
  • в исходных данных экранирование нормальное \' , но при добавление файла через консоль или при чтение через python, это превращается в \\' подскажите в чем может быть причина?
  • разобрался
  • https://t.me/clickhouse_ru
    @Sablast #26538 06:54 AM, 21 Sep 2017
    глупый вопрос: если я знаю количество строк которое должно быть вставлено в таблицу и по SHOW PROCESSLIST вижу, что это количество записано, а до окончания запроса еще 86% можно ли прервать выполнение запроса? =)
  • https://t.me/clickhouse_ru
    Поделитесь решением
  • replace все решил))
  • @TanVD #26541 08:09 AM, 21 Sep 2017
    Всем привет) Ни у кого не возникает такого, при скане таблицы:
    Exception on client:
    Code: 32. DB::Exception: Attempt to read after eof:
    Code: 210. DB::NetException: Connection refused:
  • @TanVD #26542 08:20 AM, 21 Sep 2017
    С чем это может быть связано? ALB или всё же CH тоже может такое отдавать.
  • https://t.me/clickhouse_ru
    Очевидно он экранировал символы, а там все 8bit safe и экранировать их было не нужно.
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26544 08:47 AM, 21 Sep 2017
    Коллеги, добрый день, подскажите, пожалуйста, есть ли возможность оптимизации запроса.
    SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17'
    обрабатывает только небольшую часть таблицы
    SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17' AND domain(url) = 'domain.com'
    обрабатывает всю таблицу с начала до конца

    Поведение выглядит странным, можно как-то подсказать кликхаусу, что всю таблицу обрабатывать не нужно?
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26544 #26545 08:48 AM, 21 Sep 2017
    покажите схему таблицы hits. Непонятно, что значит "обрабатывает всю таблицу с начала до конца: если date в индексе, то нет, не должен
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26547 08:49 AM, 21 Sep 2017
    Индексов нет, тип таблицы -Log
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26547 #26550 09:17 AM, 21 Sep 2017
    Попробуйте движок MergeTree, в движке Log всегда читаются все данные.
    https://clickhouse.yandex/docs/ru/single/#mergetree
    Положите дату-счетчик в первичный индекс, client_id хорошо подойдет для семплирования (возьмите intHash32),
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26551 09:17 AM, 21 Sep 2017
    Да, уже прочитал про него, сделал вот так MergeTree(date, watch_id, watch_id, 8192) жду когда перельются данные
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26552 09:20 AM, 21 Sep 2017
    Да, перестал проходиться по всей таблице, спасибо!
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26551 #26553 09:21 AM, 21 Sep 2017
    с моей колокольни лучше будет работать
    MergeTree(date, intHash32(watch_id), (date, counter_id, intHash32(watch_id)), 8192)
    в вашей конфигурации он всё равно будет ходить по всей таблице, потому что вы не делаете фильтр по watch_id
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26554 09:24 AM, 21 Sep 2017
    У меня только 1 counter_id, так что решил его не включать, дата, на сколько я понял по документации, тоже всегда в индексе. А зачем нужен intHash32 - я не понял
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26555 09:25 AM, 21 Sep 2017
    Вот кусок про дату
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26556 09:25 AM, 21 Sep 2017
    И судя по моим экспериментам оно так и работает
  • https://t.me/clickhouse_ru
    @feriat #26557 09:28 AM, 21 Sep 2017
    intHash32 нужен чтобы быть уверенным в равномерном распределении ключей: вдруг idшники будут неслучайными по какой-то причине, или, например, последовательными?
    Про дату пусть лучше подскажут знающие, в доке везде советуют дублировать и в дате, и в индексе: но, вероятно, вы правы
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26558 09:30 AM, 21 Sep 2017
    на сколько я понимаю watch_id последователен, тогда, видимо, хэширование для сэмплирования оправдано, но хачем хэшировать в индексе пока не понятно..
  • @ilyas_pro #26559 09:30 AM, 21 Sep 2017
    по идее если даты нет в индексе, то при запросах с условием по дате будет фулскан "кусочков", а если дата в индексе есть, то фулскана быть не должно
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26560 09:42 AM, 21 Sep 2017
    Вот смотрите, у меня таблица 100 строк с данными с августа
    select count() from hits_new
    обработал 100 строк
    select count() from hits_new where date > '2017-09-10'
    обработал 30 строк
    select count() from hits_new where date > '2017-09-10' and domain(url) = 'bla-bla.ru'
    обработал 30 строк
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26561 09:42 AM, 21 Sep 2017
    При том, что engine=MergeTree(date, watch_id, watch_id, 8192)
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26562 09:43 AM, 21 Sep 2017
    Так что видимо независимо от наличия даты в индексе он индексирует таблицу по дате..
  • https://t.me/clickhouse_ru
    Не индексирует, а партицирует
    https://clickhouse.yandex/docs/ru/query_language/queries.html?highlight=%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D1%86%D0%B8%D1%8F#id5
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26564 09:45 AM, 21 Sep 2017
    Поэтому если есть условие на ключ партиции - читается меньше данных
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26565 09:46 AM, 21 Sep 2017
    Спасибо за поправку! А даст ли что-то добавлние даты в индекс?
  • @ilyas_pro #26566 09:46 AM, 21 Sep 2017
    Попробуйте запрос чтоб он больше месяца затрагивал и прочитайте в интернетах что такое партицирование :)
  • https://t.me/clickhouse_ru
    @Sablast #26567 09:48 AM, 21 Sep 2017
    подскажите а когда в MergeTree делаешь запрос с условием например date='2017-09-21', он всегда пробегается по всей партиции за сентябрь?
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26567 #26568 09:48 AM, 21 Sep 2017
    Нет, если дата есть в индексе
  • https://t.me/clickhouse_ru
    Зависит от типов запросов. Всё основное в документации описано
  • https://t.me/clickhouse_ru
    @Sablast #26570 09:48 AM, 21 Sep 2017
    ENGINE = ReplacingMergeTree(date, (id, timestamp), (id, date, timestamp, resource, platform, userid), 8192)
  • https://t.me/clickhouse_ru
    @Sablast #26571 09:49 AM, 21 Sep 2017
    при запросе по date всегда весь месяц читает
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26570 #26572 09:49 AM, 21 Sep 2017
    если вы не фильтруете по id то всегда пробегается по всей партиции. Если вы указываете фильтр на дату и на id, то будет пробегаться только по тому, что вы хотите
  • https://t.me/clickhouse_ru
    @Sablast #26573 09:50 AM, 21 Sep 2017
    понятно, спасибо
  • @TanVD #26574 09:50 AM, 21 Sep 2017
    Добрый день :) Никто не сталкивался с большим потреблением памяти на Alter Table (Add column)? У нас после него CH съел всё доступную память и отказывается отдавать :(
  • @passatCC #26575 09:57 AM, 21 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @r3nic1e #26576 10:07 AM, 21 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26574 #26577 10:14 AM, 21 Sep 2017
    посмотрите что у вас processlist происходит
  • @TanVD #26578 10:15 AM, 21 Sep 2017
    Ничего
  • @TanVD #26579 10:15 AM, 21 Sep 2017
    Процессов выполняющихся нет
  • https://t.me/clickhouse_ru
    @Sablast #26580 10:16 AM, 21 Sep 2017
    лог?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26572 #26581 10:21 AM, 21 Sep 2017
    т.е. фактически у меня нет других вариантов кроме как ждать скана всей партиции если надо скопировать всю таблицу, а в оперативку больше суток не влезает?
  • https://t.me/clickhouse_ru
    @feriat ↶ Reply to #26581 #26582 10:22 AM, 21 Sep 2017
    при чем тут оперативка?
    Если надо скопировать, то вы в любом случае всё читать будете
  • https://t.me/clickhouse_ru
    @Sablast #26583 10:22 AM, 21 Sep 2017
    просто количество итераций очень большое
  • https://t.me/clickhouse_ru
    @feriat #26584 10:23 AM, 21 Sep 2017
    условный INSERT INTO copy AS SELECT * FROM table не требует хранения всего в оперативке.
  • https://t.me/clickhouse_ru
    @Sablast #26585 10:23 AM, 21 Sep 2017
    я получается вставляю 30 дней по одному и каждая вставка читает всю партицию
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26584 #26586 10:24 AM, 21 Sep 2017
    я писал выше проблема в том что приходится select без столбца DATE брать и пересчитывать его
  • @TanVD ↶ Reply to #26580 #26587 10:26 AM, 21 Sep 2017
    В логе криминала тоже никакого. 3.9гб потрачено на запрос и всё.
  • @TanVD #26588 10:26 AM, 21 Sep 2017
    В принципе CH с OOM не падает, но не понятно, почему процесс не отдаёт память, если её не использует
  • https://t.me/clickhouse_ru
    У нас такое было, не на ALTER, на SELECT. Вылечилось перезапуском
  • @TanVD #26590 10:30 AM, 21 Sep 2017
    А это что-то аффектило у вас?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #26591 10:31 AM, 21 Sep 2017
    Вроде нет, но когда CH без нагрузки отожрал 40% памяти (примерно 30Гб) и не отдает - подозрително
  • https://t.me/clickhouse_ru
    @not_logan #26592 10:35 AM, 21 Sep 2017
    коллеги, дурацкий вопрос: есть таблица, в ней есть ключ. Что будет, если в таблицу вставить строку, у которой ключ совпадет с уже существущей? Она перезапишется? Движок MergeTree
  • @pookieShmukie #26593 10:37 AM, 21 Sep 2017
    Нет, не перезапишется. По крайней мере у меня данные дублируются
  • @TanVD ↶ Reply to #26591 #26594 10:39 AM, 21 Sep 2017
    Более чем. У нас схожий кейс. Надеюсь, @milovidov_an прокомментирует.
  • @k1rk_t #26595 11:07 AM, 21 Sep 2017
    привет. а подскажите, у меня есть gziped tsv я могу его как то лить напрямую? или нужно распаковывать?
  • https://t.me/clickhouse_ru
    @not_logan #26596 11:09 AM, 21 Sep 2017
    можно через zcat как минимум
  • https://t.me/clickhouse_ru
    @not_logan #26597 11:10 AM, 21 Sep 2017
    он на лету распаковывает
  • https://t.me/clickhouse_ru
    Если по http льёте, то можно выставить заголовок Content-Encoding: gzip и лить.
  • https://t.me/clickhouse_ru
    @rboyko #26599 11:57 AM, 21 Sep 2017
    Ребят, подскажите пожалуйста кто знает, а метод ClickHouseStatement.sendRowBinaryStream в jdbc драйвере можно использовать в разных потоках в рамках одной JVM при различных экземплярах ClickHouseStatement? В доке ни слова про потокобезовасность, но потоки явно пересекаются.
  • https://t.me/clickhouse_ru
    @serebrserg #26600 12:32 PM, 21 Sep 2017
    Из разных Statement должно быть можно, иначе - странно.
    По коду проблем не вижу.
  • @k1rk_t ↶ Reply to #26598 #26601 12:56 PM, 21 Sep 2017
    спасибо. попробую
  • @k1rk_t #26602 12:56 PM, 21 Sep 2017
    но выяснился второй нюанс. у меня в файле есть явно NULL который как я понимаю для tabseparated не понимается
  • @k1rk_t #26603 12:56 PM, 21 Sep 2017
    нужно \N
  • https://t.me/clickhouse_ru
    @fneyz #26604 12:57 PM, 21 Sep 2017
    Joined.
  • @3334085 #26605 02:34 PM, 21 Sep 2017
    А никто не знает кейсы когда AggregatingMergeTree оправданы? а то дисклеймер в документации насторожил
    >Заметим, что в большинстве случаев, использование AggregatingMergeTree является неоправданным, так как можно достаточно эффективно выполнять запросы по неагрегированным данных.
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26606 02:42 PM, 21 Sep 2017
    Подскажите пожалуйста, какой функцией отрезать слэш с конца урла если где-то он есть, а где-то нет
  • https://t.me/clickhouse_ru
    Можно такое использовать
    https://clickhouse.yandex/docs/ru/functions/string_functions.html#appendtrailingcharifabsent-s-c
    т.е. не отрезать, а добавить если нет
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26608 02:48 PM, 21 Sep 2017
    Класс, спасибо!
  • https://t.me/clickhouse_ru
    @yuyugame #26609 04:14 PM, 21 Sep 2017
    Поясните, пожалуйста, как будет работать такая цепочка с точки зрения пикового потребления оперативки ( в ${MSGLOG} список файлов общим объёмом 1-10 гиг:, т.е. будет ли оно пропорционально суммарному объёму или поток данных будет разбит на куски поблочно:
    gzip -dc ${MSGLOG} \
    | grep -v dump \
    | clickhouse-local —table=TMP \
    —input-format=JSONEachRow \
    —input_format_skip_unknown_fields=1 \
    —verbose \
    —structure="${logstruct}" \
    —query="${query}" \
    | clickhouse-client —database=$DB —query="INSERT INTO $DB.$DATATABLE FORMAT Native" —progress
  • @serlex777 #26610 04:30 PM, 21 Sep 2017
    Подскажите пожалуйста, а есть такая вероятность, что для SummingMergeTree записи никогда (или очень долго) не смержатся
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26611 04:32 PM, 21 Sep 2017
    Вполне возможно, а если таблица distributed, то данные на разных нодах и в любом случае надо самому доагрегировать с помощью агрегатных функций
  • https://t.me/clickhouse_ru
    @b0ch4r0v #26612 04:34 PM, 21 Sep 2017
    optimize table поможет домержить, но его не вариант юзать в продакшн часто, поэтому group by с соотв. агрегатной функцией лучше вариант
  • https://t.me/clickhouse_ru
    @kiriger #26613 04:58 PM, 21 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @mpechyonkin #26614 04:59 PM, 21 Sep 2017
    Joined.
  • @407303687 #26615 04:59 PM, 21 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @lynxborealis #26616 05:01 PM, 21 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @cafime #26617 05:09 PM, 21 Sep 2017
    Joined.
  • @253467692 #26618 06:37 PM, 21 Sep 2017
    Joined.
  • @181568392 #26619 10:07 PM, 21 Sep 2017
    Joined.
  • 22 September 2017 (80 messages)
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26620 10:10 AM, 22 Sep 2017
    Добрый день, а нет ли в кликхаусе простого способа собрать олап куб?
  • https://t.me/clickhouse_ru
    @fabura #26621 10:35 AM, 22 Sep 2017
    олап куб нинужин!)
  • https://t.me/clickhouse_ru
    @fabura #26622 10:36 AM, 22 Sep 2017
    реально, зачастую можно гонять аналитические запросы по сырым данным и все работает быстро. За то и любим
  • https://t.me/clickhouse_ru
    @not_logan #26623 10:37 AM, 22 Sep 2017
    OLAP - это не про скорость, это про удобство интерфейса
  • https://t.me/clickhouse_ru
    @umaxfun #26624 10:46 AM, 22 Sep 2017
    У кх есть одна мажорная проблема, на мой вкус — нулевой тулинг. То, что есть, с ним толком не работает, а нового не написано. В итоге у нас три аналитических интерфейса к нему: Tabix, Jupiter, Redash, и это нас тормозит сильнее, чем замедление от какого-нибудь постгреса. Любые данные можно вытащить только через sql :(((
  • @serlex777 #26625 10:46 AM, 22 Sep 2017
    Может кто сталкивался с проблемой
    Движок ReplicatedSummingMergeTree
    У меня в том списке, где указаны колонки, по которым нужно проводить суммирование, колонки идут не в том порядке, в каком указаны в таблице. Так вот начиная с той колонки, у которой порядок отличается данные левые. Первые две колонки (их порядок такой же, как и в таблице) все бъется с другим источником, а дальше идет не та колонка, которая идет в описании таблицы (в описании она вообще последняя) и вот после нее в данных полный хаос
  • @serlex777 #26626 10:47 AM, 22 Sep 2017
    версия 1.1.54245
  • @serlex777 #26627 10:48 AM, 22 Sep 2017
    вроде в описании нет, что порядок должен соблюдаться
  • @serlex777 #26628 10:50 AM, 22 Sep 2017
    на репликах описание одинаковое
  • https://t.me/clickhouse_ru
    @ssemiokhin #26629 11:01 AM, 22 Sep 2017
    Ребят, при распределенных запросах КХ сейчас лезет то в реплику, то в лидера, можно ли сделать так, чтобы при DISTRIBUTED-запросе лезли только на лидера и уже в случае его недоступности, в реплику?
  • @pookieShmukie #26630 11:35 AM, 22 Sep 2017
    А кто подскажет, если я выполню два одновременных запроса с использованием временной таблицы из файла через http интерфейс, то никаких конфликтов не будет из-за одинакового названия временной таблицы. Как этот механизм вообще работает?
  • точно не скажу, но кажется что не должно быть. такая временная таблица живет в контексте запроса и ни с кем не пересекается
  • https://t.me/clickhouse_ru
    @kshvakov #26632 11:54 AM, 22 Sep 2017
    Наш CEO впервые увидел ClickHouse в действии

    geoff [1:54 PM]
    I have a boner looking at the new stats
    it's so fucking fast

    )
  • Спасибо! )
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26634 12:15 PM, 22 Sep 2017
    Всем привет, кто нибудь подгружал NULL значения через словари?
    получаю
    Code: 36, e.displayText() = DB::Exception: Error parsing null_value: DB::Exception, e.what() = DB::Exception, Stack trace:
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26636 12:16 PM, 22 Sep 2017
    словарь подгружается через http
  • @pookieShmukie #26637 12:18 PM, 22 Sep 2017
    У меня тут веселее ситуация :)

    Есть таблица, в ней есть nested и есть временная таблица, в ней есть колонка Array(String).

    Я делаю запрос из первой таблицы и array join nested колонки, это все дело джойню к результату подзапроса из второй таблицы где делаю array join колонки с Array(String) и получаю веселую ошибку: Type mismatch of columns to JOIN by: childEntityIri String at left, childEntityIri Array(String) at right

    Хотя "первая" таблица уже развернута и там тип string и "вторая" таблица развернута и там тип string.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26638 12:19 PM, 22 Sep 2017
    Скриншот от комманды
    curl -s localhost:8080/my_dict.tsv | head | less
    + поиск по ^I т.е по табам
  • похоже на ошибку в конфиге словарей. можете его показать?
  • а можете запрос показать?
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26641 12:21 PM, 22 Sep 2017
    <dictionary>
    <name>dim_product</name>
    <source>
    <http>
    <url>http://localhost:8080/my_dict.tsv</url>
    <format>TabSeparated</format>
    </http>
    </source>
    <lifetime>
    <min>300</min>
    <max>360</max>
    </lifetime>
    <layout>
    <hashed/>
    </layout>
    <structure>
    <id>
    <name>id</name>
    </id>
    <attribute>
    <name>f1</name>
    <type>String</type>
    <null_value/>
    </attribute>
    <attribute>
    <name>f2</name>
    <type>String</type>
    <null_value/>
    </attribute>
    <attribute>
    <name>d1</name>
    <type>Date</type>
    <null_value/>
    </attribute>
    <attribute>
    <name>d2</name>
    <type>Date</type>
    <null_value/>
    </attribute>
    </structure>
    </dictionary>
  • попробуйте задать непустые значения по умолчанию для нестроковых типов
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26643 12:23 PM, 22 Sep 2017
    минуту
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26645 12:26 PM, 22 Sep 2017
    Row 1:
    Column 0, name: product_sku_id, type: UInt64, parsed text: "1"
    Column 1, name: dim_product_sku_id, type: String, parsed text: "33000001"
    Column 2, name: product_name, type: String, parsed text: "ANCHOR RECTANGULAR GLAS 1.1L PS0042"
    Column 3, name: list_date, type: Date, parsed text: "2016-03-04"
    Column 4, name: delete_date, type: Date, parsed text: "<BACKSLASH>N<LINE FEED>2<TAB>33000"
    ERROR: garbage after Date: "010<TAB>ANCHOR"
    ERROR: Date must be in YYYY-MM-DD format.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26646 12:28 PM, 22 Sep 2017
    Не остановился после <BACKSLASH>N на <LINE FEED>
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26647 12:29 PM, 22 Sep 2017
    <BACKSLASH>N - это ведь "escaped" null?
  • Ох...сложно, т.к. временная таблица используется, но сейчас напишу.

    SELECT
    count() AS attemptsTotal,
    entityIri,
    learnerId
    FROM
    (
    SELECT
    learnerId,
    entityIri,
    childEntityIri
    FROM entitiesTempTable
    ARRAY JOIN childs AS childEntityIri
    )
    ANY LEFT JOIN
    (
    SELECT
    learnerId,
    entitiesResults.entityIri AS childEntityIri
    FROM learners
    ARRAY JOIN entitiesAttempts
    PREWHERE learnerId IN learnersTempTable
    WHERE childEntityIri IN irisTempTable
    ) USING (learnerId, childEntityIri)
    GROUP BY
    learnerId,
    entityIri
  • @pookieShmukie #26649 12:32 PM, 22 Sep 2017
    По отдельности если подзапросы выполнять, то возвращается string и там и там в колонке childEntityIri
  • @pookieShmukie #26650 12:32 PM, 22 Sep 2017
    А если вот так в кучу собрать, то кидает ошибку (
  • @pookieShmukie #26651 12:32 PM, 22 Sep 2017
    Версия 1.1.54246
  • должен быть
  • https://t.me/clickhouse_ru
    @orantius #26653 12:34 PM, 22 Sep 2017
    entitiesResults.entityIri AS childEntityIri а это разве не массив строк?
  • @pookieShmukie #26654 12:35 PM, 22 Sep 2017
    Кажется я нашел проблему...дело не в этом было )
  • @pookieShmukie #26655 12:35 PM, 22 Sep 2017
    Нет, это не массив строк. entitiesAttempts должно быть вместо entitiesResults. Сейчас проверю теорию )
  • @pookieShmukie #26656 12:36 PM, 22 Sep 2017
    Да, блин...причем КХ даже не ругнулая на select entitiesResults.entityIri as entityIri from learners array join entityAttempts
  • @pookieShmukie #26657 12:36 PM, 22 Sep 2017
    Он реально колонку выбирал как массив
  • https://t.me/clickhouse_ru
    @orantius #26658 12:38 PM, 22 Sep 2017
    это не запрещено
  • @pookieShmukie #26659 12:40 PM, 22 Sep 2017
    Это да )
  • https://t.me/clickhouse_ru
    @vladimirmyuge #26660 12:54 PM, 22 Sep 2017
    Уважаемые пользователи Talend, подскажите, пожалуйста, как увеличть таймаут для jdbc clickhouse?
  • https://t.me/clickhouse_ru
    @alek_si #26661 12:57 PM, 22 Sep 2017
    Привет. Лексер/парсер в ClickHouse руками написан, без yacc/bison/ragel/etc?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26663 12:59 PM, 22 Sep 2017
    Сравнил с
    clickhouse-client --query="SELECT * FROM test FORMAT TabSeparated" > text2
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26664 12:59 PM, 22 Sep 2017
    Все выглядит правильно
  • https://t.me/clickhouse_ru
    По крайней мере, на митапе как-то раз они говорили именно так: ручками написали рекурсивный спуск и успокоились.
  • https://t.me/clickhouse_ru
    @alek_si #26666 01:01 PM, 22 Sep 2017
    Жаль. Спасибо
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26667 01:09 PM, 22 Sep 2017
    А если записывать через формат RowBinary, как записать NULL?
  • @mfilimonov #26668 01:32 PM, 22 Sep 2017
    Глупый вопрос: почему clickhouse-client иногда вместо одной таблицы с результатом, разделяет результат на несколько одинаковых таблиц (повторяя каждый раз заголовок).
  • https://t.me/clickhouse_ru
    Скорее всего каждая таблица - кусок данных, полученных от сервера. Т.е. клиент их стримит
  • Может есть какой-то способ этого избежать? Это эээ... неудобно. Ведь клиент при этом похоже знает когда данные закончились (не повторяет же он каждый раз инфорамацию о статистике выполнения запроса).
  • https://t.me/clickhouse_ru
    @fabura #26671 01:37 PM, 22 Sep 2017
    можно добавить order by в конце, тогда все придет с одного редьюсера и будет в одном батче
  • https://t.me/clickhouse_ru
    @fabura #26672 01:38 PM, 22 Sep 2017
    *или нет
  • @igorl86 ↶ Reply to #26667 #26673 01:39 PM, 22 Sep 2017
    if (string == null) {
    stream.writeInt8(1);
    } else {
    stream.writeInt8(0);
    stream.writeString(string);
    }
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26674 01:40 PM, 22 Sep 2017
    это только для строк?
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26675 01:41 PM, 22 Sep 2017
    если ожидается к примеру Datetime то это UInt64
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26676 01:42 PM, 22 Sep 2017
    или байт 01 просто означает NULL для всех типов?
  • @igorl86 #26677 01:42 PM, 22 Sep 2017
    это для любых Nullable() типов
  • @igorl86 #26678 01:42 PM, 22 Sep 2017
    сначала ноль или единица, потом как обычно
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26679 01:44 PM, 22 Sep 2017
    спасибо
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26680 01:44 PM, 22 Sep 2017
    попробую через RowBinary записать
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26681 01:45 PM, 22 Sep 2017
    если в конфиги словаря указан <null_value/> на некий аттрибут, то так что считается Nullabe, верно?
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26682 01:46 PM, 22 Sep 2017
    без указания значения при null
  • @vludv ↶ Reply to #26538 #26683 01:49 PM, 22 Sep 2017
    Есть KILL QUERY, но он работает только для SELECT'ов
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #26683 #26684 01:50 PM, 22 Sep 2017
    это я знаю, вопрос был - целесообразно ли это?
  • https://t.me/clickhouse_ru
    @rheinx #26685 01:53 PM, 22 Sep 2017
    Ребят, сори за оффтоп, а знает кто-нибудь канал по Apache Spark и попутным технологиям?
  • @vludv ↶ Reply to #26684 #26686 01:55 PM, 22 Sep 2017
    Возможности внешне прервать INSERT нет, а эта цифра в PROCESS LIST'e условная, она не означет что эти строки буквально записаны на диск и закоммичены.
  • Действительно помогло. Спасибо :)
  • @38830983 #26688 02:07 PM, 22 Sep 2017
    Joined.
  • @vludv ↶ Reply to #26681 #26689 02:12 PM, 22 Sep 2017
    null_value не имеет никакого отношения к Nullable типам, это по факту default value для отсутствующих ключей.
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26690 02:16 PM, 22 Sep 2017
    Тогда получается что dictGet функции так же не могут возвращать null
  • @vludv ↶ Reply to #26670 #26691 02:17 PM, 22 Sep 2017
    Еще как вариант использовать FORMAT PrettyCompactMonoBlock
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26692 02:18 PM, 22 Sep 2017
    Тогда что значит <null_value/>?
  • @vludv ↶ Reply to #26690 #26693 02:25 PM, 22 Sep 2017
    Да, dictGet функции пока могут возвращать только не-Nullable атрибуты. Типы атрибутов не могут быть Nullable.
  • @vludv ↶ Reply to #26692 #26694 02:36 PM, 22 Sep 2017
    Такая запись в конфиге эквивалента <null_value></null_value>
  • https://t.me/clickhouse_ru
    @MakhmutovDev #26695 02:45 PM, 22 Sep 2017
    Спасибо за информацию
  • @vludv ↶ Reply to #26692 #26696 02:49 PM, 22 Sep 2017
    Т.е. он из пустой строки попытается распарсить значение типа для default value
  • @vladislavadv #26697 06:33 PM, 22 Sep 2017
    Всем привет. Видел обсуждение про функцию tostartofinterval. Вопрос, ее еще не сделали? или отказались?
  • @serlex777 #26698 07:43 PM, 22 Sep 2017
    Может кто сталкивался с проблемой
    Движок ReplicatedSummingMergeTree
    У меня в том списке, где указаны колонки, по которым нужно проводить суммирование, колонки идут не в том порядке, в каком указаны в таблице. Так вот начиная с той колонки, у которой порядок отличается данные левые. Первые две колонки (их порядок такой же, как и в таблице) все бъется с другим источником, а дальше идет не та колонка, которая идет в описании таблицы (в описании она вообще последняя) и вот после нее в данных полный хаос

    версия 1.1.54245

    вроде в описании нет, что порядок должен соблюдаться

    на репликах описание одинаковое
  • https://t.me/clickhouse_ru
    @antaev #26699 11:25 PM, 22 Sep 2017
    Joined.
  • 23 September 2017 (40 messages)
  • @pavel_maksimow #26700 06:40 AM, 23 Sep 2017
    Привет ребят, объясните пожалуйста начинающему, что произойдет, если в таблицу MergeTree добавить дублирующие данные, которые уже там есть, они перезапишутся или продублируются? В случае перезаписи, они будут сравниваться по ключевым столбцам указанным при создании таблицы? Я допускаю, что скрипт по добавлению данных, может криво сработать и не добавить данные и чтоб не удалять партицию за месяц, я думаю может еще повторно добавить просто?
  • https://t.me/clickhouse_ru
    @taroff #26701 06:41 AM, 23 Sep 2017
    продублируются
  • https://t.me/clickhouse_ru
    @taroff #26702 06:43 AM, 23 Sep 2017
    повторно можно добавлять идентичные блоки данных, тогда CH сам профильтрует дубль (не добавит), но для этого таблица должна быть типа Replicated*
  • https://t.me/clickhouse_ru
    @JackRussell77 #26703 06:44 AM, 23 Sep 2017
    Joined.
  • @61322181 ↶ Reply to #26702 #26704 06:46 AM, 23 Sep 2017
    Привет! можно ли создать таблицу типа Replicated, имея только одну ноду?
  • https://t.me/clickhouse_ru
    @taroff #26705 06:46 AM, 23 Sep 2017
    можно, но необходимо поставить zookeeper
  • @61322181 ↶ Reply to #26705 #26706 06:47 AM, 23 Sep 2017
    спасибо.
  • @61322181 #26707 06:47 AM, 23 Sep 2017
    может кто в курсе, есть ли в планах поддержка consul/etc?
  • https://t.me/clickhouse_ru
    @JackRussell77 #26708 06:55 AM, 23 Sep 2017
    Кто нибудь использует Click в качестве многомерной витрины в DWH ?
  • спасибо всем
  • https://t.me/clickhouse_ru
    @JackRussell77 #26710 07:13 AM, 23 Sep 2017
    Скажите пж. , что нибудь с Join улучшилось с момента презентации ??

    https://clickhouse.yandex/presentations/uwdc/#27
  • @pookieShmukie #26711 07:55 AM, 23 Sep 2017
    Вроде как ничего не изменилось (
  • https://t.me/clickhouse_ru
    +1😔
  • https://t.me/clickhouse_ru
    @vadim07 #26713 10:25 AM, 23 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26714 02:17 PM, 23 Sep 2017
    Привет, как очистить базу не партициями а полностью?
  • @TanVD #26715 02:24 PM, 23 Sep 2017
    Сделать на лидере DROP PARTITION всем партициям. Truncate вроде нет
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26716 02:31 PM, 23 Sep 2017
    Что это значит Сделать на лидере? Я недавно вкатился
  • @TanVD #26717 02:41 PM, 23 Sep 2017
    Если нет шардирования или реплик, то на единственной вашей ноде сделать
  • @TanVD #26718 02:41 PM, 23 Sep 2017
    В общем для случаев одного инстанса это не важно
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26719 02:42 PM, 23 Sep 2017
    ок
  • @pookieShmukie #26720 02:52 PM, 23 Sep 2017
    Я просто делаю дроп тейбл если надо почистить таблицу
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26721 03:30 PM, 23 Sep 2017
    Так потом заново создавать нужно же
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26722 03:34 PM, 23 Sep 2017
    Ребят такая проблемма, выполняю запрос clickhouse-client --query="INSERT INTO storage FORMAT CSV" < text.csv получаю ошибку Code: 117. DB::Exception: Expected end of line. Но если сделать head text.csv -n 10 > text.txt и инсертить получившийся text.txt то все хорошо. В чем проблема?
  • https://t.me/clickhouse_ru
    Последняя пустая строка?
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26724 03:36 PM, 23 Sep 2017
    нет
  • https://t.me/clickhouse_ru
    Ну если head -n 10 отрабатывает, то очевидно ошибка после первых 10и записей 🙂 Играя с параметром -n можно найти где именно...
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26726 03:56 PM, 23 Sep 2017
    Да, вы правы
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26727 03:56 PM, 23 Sep 2017
    Можно как-то игнорировать такие строки?
  • https://t.me/clickhouse_ru
    @kirill_butin #26728 04:02 PM, 23 Sep 2017
    $ clickhouse-client --help | grep allow
    --input_format_allow_errors_num arg Settings.h
    --input_format_allow_errors_ratio arg Settings.h
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26729 04:43 PM, 23 Sep 2017
    Установил в конфиг файле input_format_allow_errors_num=1000 и input_format_allow_errors_ratio=1, в таблице system.settings показано что значения изменены. Умпортирую 2 строки все таже ошибка
  • @vludv ↶ Reply to #26698 #26730 07:15 PM, 23 Sep 2017
    Нет, не сталкивался. Сейчас сделал тест, чтобы еще раз убедиться. Вроде бы все правильно работает https://dpaste.de/iEJR
  • https://t.me/clickhouse_ru
    @deniszh #26731 08:05 PM, 23 Sep 2017
    А кто может подсказать что за ошибка "2017.09.23 22:03:40.825975 [ 13 ] <Error> void DB::BackgroundProcessingPool::threadFunction(): Code: 10, e.displayText() = DB::Exception: Not found column metric in block. There are only columns: Path, Value, Time, Date, Timestamp, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x330d636]
    1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x1424d8f]
    2. clickhouse-server(DB::Block::getPositionByName(std::string const&) const+0x93) [0x2bf8e63]
    3. clickhouse-server(DB::GraphiteRollupSortedBlockInputStream::readImpl()+0x4ba) [0x357a6ca]
    4. clickhouse-server(DB::IProfilingBlockInputStream::read()+0x1e6) [0x2c17e56]
    5. clickhouse-server(DB::MergeTreeDataMerger::mergePartsToTemporaryPart(DB::MergeTreeDataMerger::FuturePart const&, DB::MergeListEntry&, unsigned long, long, DB::DiskSpaceMonitor::Reservation*, bool)+0x293f) [0x34692bf]
    6. clickhouse-server(DB::StorageMergeTree::merge(unsigned long, bool, std::string const&, bool, bool)+0x4c7) [0x33b3877]
    7. clickhouse-server(DB::StorageMergeTree::mergeTask()+0x14b) [0x33b41eb]
    8. clickhouse-server(DB::BackgroundProcessingPool::threadFunction()+0x40e) [0x3492c8e]
    9. clickhouse-server() [0x3fca62f]
    10. /lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a) [0x7f09b241de9a]
    11. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f09b1a4336d]"
    ?
  • https://t.me/clickhouse_ru
    @deniszh #26732 08:06 PM, 23 Sep 2017
    CH 1.1.54292
  • @pookieShmukie #26733 08:13 PM, 23 Sep 2017
    А как запрос выглядит?
  • @garikanet #26734 08:43 PM, 23 Sep 2017
    Подскажите,
    SELECT toUInt64(number) as n FROM system.numbers LIMIT 50 FORMAT JSON
    Возращает n как строку в json, что то мне кажется был параметр что бы изменить поведение ... а то tabix плохо рисует при _Int64
  • А надо что бы как число возвращал?
  • @pookieShmukie #26737 08:55 PM, 23 Sep 2017
    Вот эта опция
  • @garikanet #26738 08:55 PM, 23 Sep 2017
    Точно, спасибо! Помню было в чате)
  • Не за что )
  • 24 September 2017 (12 messages)
  • @409548278 #26741 11:19 AM, 24 Sep 2017
    Joined.
  • @vludv ↶ Reply to #26731 #26742 11:37 AM, 24 Sep 2017
    А какой запрос?
  • https://t.me/clickhouse_ru
    Может переименовали дефолтные поля для graphitemergetree? Тогда старые значения через rollup xml можно задать
  • https://t.me/clickhouse_ru
    @rlomonosov #26744 01:16 PM, 24 Sep 2017
    В исходниках по старому, скорее всего ты у себя переименовал. Грепни path_column_name в конфигах
  • https://t.me/clickhouse_ru
    @deniszh #26745 01:50 PM, 24 Sep 2017
    @rlomonosov : хмммм... спасибо, проверю
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26746 06:09 PM, 24 Sep 2017
    Гайз, перерыл настройки выставил допустимые ошибки при иморте, но кликхаус просто их игнорирует. В чем проблема может быть? В таблице settings показано что значения изменены
  • https://t.me/clickhouse_ru
    @kirill_butin #26747 06:16 PM, 24 Sep 2017
    а это точно настройки севера? я думал это настройки клиента... что то типа того: clickhouse-client --input_format_allow_errors_num 20 --query "insert into table format CSVWithNames" < input.csv
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #26748 06:38 PM, 24 Sep 2017
    Ну я через user.xml сделал, это по сути настроки клиента
  • https://t.me/clickhouse_ru
    так тоже пробовал
  • https://t.me/clickhouse_ru
    @KirillK90 #26750 07:12 PM, 24 Sep 2017
    Joined.
  • https://t.me/clickhouse_ru
    @deniszh ↶ Reply to #26744 #26751 08:31 PM, 24 Sep 2017
    Не то чтоб переименовал - просто заюзал старый rollup.xml от graphouse 🤦‍♂️
    Закомментировал секцию с путями - все побежало, мержится
  • @vladislavadv #26752 08:58 PM, 24 Sep 2017
    Всем привет.

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

    Табличка формата

    |date|dateTime|userId|visitTime|

    Номера показа не хранится. Идея держать счетчики в другой БД и указывать при инсерте - не катит, так как отчет нужно по старым данным.

    Чувствую что нужно использовать что-то вроде runningAccumulate или rowNumberInAllBlocks, но как пока не понимаю.
  • 25 September 2017 (141 messages)
  • https://t.me/clickhouse_ru
    @kirill_butin #26753 04:07 AM, 25 Sep 2017
    P R
    А версия какая? Эти опции кажется в 254 ввели или где то там. Не так что бы совсем давно.
  • @3334085 #26754 06:40 AM, 25 Sep 2017
    Коллеги, а никто не видел/не делает плагин ClickHouse для Atom.io? Было бы супер круто тк tabix течёт жутко
  • https://t.me/clickhouse_ru
    @negashev #26755 06:45 AM, 25 Sep 2017
    tabix в докер, и ограничить по памяти)
  • https://t.me/clickhouse_ru
    @negashev #26756 06:46 AM, 25 Sep 2017
    scale 3 и пусть перезапускаются
  • @pookieShmukie #26757 06:50 AM, 25 Sep 2017
    Эм...табикс жрет опкративку на клиенте
  • @pookieShmukie #26758 06:50 AM, 25 Sep 2017
    И жутко лагает на клиенте
  • @pookieShmukie #26759 06:50 AM, 25 Sep 2017
    А не в докере
  • @3334085 ↶ Reply to #26757 #26760 06:52 AM, 25 Sep 2017
    дададада

    Я от безисходности смотрю в сторону связки CH+ProxySQL+Atom.io (MYSQL API)
  • @pookieShmukie #26761 06:53 AM, 25 Sep 2017
    Я мониторю табикс, но пока сижу на нативном клиенте
  • @pookieShmukie #26762 06:54 AM, 25 Sep 2017
    Все круто, но лаги капец как напрягают (
  • https://t.me/clickhouse_ru
    @alanbondarchuk #26763 06:54 AM, 25 Sep 2017
    может оперативки купить?)
  • https://t.me/clickhouse_ru
    @alanbondarchuk #26764 06:54 AM, 25 Sep 2017
    у кого то и продукты jetbrains тормозят
  • @3334085 ↶ Reply to #26763 #26765 06:55 AM, 25 Sep 2017
    если вкладку не закрывать через 24 часа выжирает 8+ гигов
  • @3334085 ↶ Reply to #26761 #26766 06:55 AM, 25 Sep 2017
    нативный клиент крут и удобен, но хотелось бы IDE
  • https://t.me/clickhouse_ru
    @alanbondarchuk #26767 06:55 AM, 25 Sep 2017
    а что за задача такая что важно не закрывать ее так долго?)