@clickhouse_ru

Страница 52 из 723
Виктор
23.01.2017
11:33:28
FINAL не используется.

Когда действительно надо, делаем GROUP BY

По таблице визитов или событий

Или используются другие ущихрения.

Google
Valeriy
23.01.2017
11:34:45
Это, конечно, баг. Должен был бы ругаться. Но у меня не получается воспроизвести такое поведение. Если пришлёте схему таблиц, то будет лучше. Кстати, может быть, это проявляется только для пустой таблицы graphite_tree?
Да, только для пустой таблицы воспроизводится. Для таблицы с одной записью пишет про unknown identifier. Схема таблицы graphite_tree как в https://github.com/lomik/carbon-clickhouse : CREATE TABLE graphite_tree ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplacingMergeTree(Date, (Level, Path), 8192, Version);

Abdulla
23.01.2017
11:37:07
Ребята разработчики ch, а вы в курсе что у вас в deb-пакете лежит непострипанный бинарь в 600Мб?

prll
23.01.2017
11:40:09
да, это для более лучшего дебага

Abdulla
23.01.2017
11:40:43
ну так правильнее было бы вынести всё в отдельный deb-пакет dbg ?

https://wiki.debian.org/DebugPackage

Боб
23.01.2017
11:44:44
Посетители у нас нигде не лежат
Виктор, визиты это что-то уже посчитанное или просто access-log в базе данных? у меня при попытке сделать агрегацию через временные запросы (как в примере выше - когда надо посчитать посетителей с двумя кликами) памяти съедается примерно 10Гб/сутки. Т.е. чтобы построить статистику за месяц потребуется около 300Гб памяти. Ощущение что я делаю что-то не так.

Виктор
23.01.2017
11:45:31
Уже посчитанное.

Боб
23.01.2017
11:47:30
А схема того как вы статистику храните внутри кликхауса это секрет или можете рассказать/показать? Т.е. чтобы понять уже работающий эффективный метод - что лучше считать заранее, а что брать из сырых логов.

prll
23.01.2017
11:48:41
ну так правильнее было бы вынести всё в отдельный deb-пакет dbg ?
Скорее всего да. Работа над улучшением пакетов идет, подумаем и про это.

papa
23.01.2017
12:19:09
Ребят, подскажите, у меня есть поля с массивы строк, хочется, что бы мы фильтровали по этим полям с логикой И (как в постгресе есть @> - contains), т е чтобы мы условие возвращало истину ,только если все искомые элементы есть в массиве Когда делаем так select query_id, tags, arrayAll(x -> has(['3rd generation', '5th generation'], x), tags) as has_tags from queries_1 limit 10; мы ограничены количеством элементов массива tags. Если количество элементов массива tags меньше, чем количество запрашиваемых элементов, то мы получим те строки массива tags, которые содержат хотя бы один элемент. А нам нужно обязательно, чтобы в результате выдавались только те строки, которые имееют все запрашиваемые теги (тут мы не фильтруем, а для теста выводим булеву колонку, но не суть)
SELECT tags, arrayAll(x -> has(tags, x), ['a', 'b', 'c']) AS has_tags FROM ( SELECT ['a', 'b', 'c', 'd'] AS tags UNION ALL SELECT ['a', 'b'] ) ┌─tags──────────────┬─has_tags─┐ │ ['a','b','c','d'] │ 1 │ └───────────────────┴──────────┘ ┌─tags──────┬─has_tags─┐ │ ['a','b'] │ 0 │ └───────────┴──────────┘

Nikita
23.01.2017
12:20:40
Вопрос: (u)int64 — это предел? Как можно работать с большими числами в Кликхаусе?

Боб
23.01.2017
12:28:32
как можно привести тип столбца к enum? сделал таблицу с EventType String, а там всего десяток разных значений. Хотелось бы оптимизировать. Сделал новую таблицу с EventType Enum('a' =1, 'b' = 2, ...), все остальные поля оставил теми же. При insert into log2 select * from log получаю ошибку о несовместимости типов поля EventType - стринг и enum. функций вроде toEnum для смены типа данных не нашел.

Google
Igor
23.01.2017
12:28:59
через CAST

CAST('a' AS Enum('a'=1, 'b'=2, ...))

но так надо было раньше, должен быть проще способ (надеюсь :о)

Yury
23.01.2017
12:49:11
У меня есть каталог с bz2 архивами, внутри файлов колонки с разделителем. Как лучше загрузить их в CH?

Igor
23.01.2017
12:54:06
bz2cat path/to/logfile.bz2 | clickhouse-client -q 'INSERT INTO ...'? (или bzcat, зависит от ОС)

Yury
23.01.2017
12:59:07
А через запрос к внешним данным не будет быстрее? Или неверно когда с CH работаешь?

хотя с stdin красиво выглядит

Andrey
23.01.2017
13:43:09
Добрый вечер. Есть ли возможность переименовать столбец в таблице? В документации нашёл только как тип поменять и выражение по умолчанию.

Igor
23.01.2017
13:43:42
нельзя можно сделать новую таблицу, сделать insert into select, грохнуть старую таблицу

Andrey
23.01.2017
13:44:02
Спасибо

Dmitry
23.01.2017
14:18:56
Добрый вечер. Есть ли возможность переименовать столбец в таблице? В документации нашёл только как тип поменять и выражение по умолчанию.
Есть ещё вариант сделать ALIAS колонку, но в этомслучае сейчас не работают индексы (баг на это есть) https://clickhouse.yandex/reference_ru.html#Значения по умолчанию

Andrey
23.01.2017
14:21:29
@AndreevDm Спасибо. Уже запустил create as select. Вообще странно, что тип у столбца можно поменять, значение по умолчанию - тоже, а вот переименовать - нет.

Боб
23.01.2017
16:49:11
Есть числовые оценки погрешности разных вариантов uniq?

Valeriy
23.01.2017
16:49:22
Меньше процента.

На 15-60 млн уников.

Боб
23.01.2017
16:50:50
Это во всех вариантах меньше процента получается?

Valeriy
23.01.2017
16:51:38
Да. Ну, в моих экспериментах тах. Зачастую сильно меньше процента, 0.1% или даже 0.02%.

Максимум видел 0.75%.

На uniqHLL12

Боб
23.01.2017
16:52:22
Хорошо, спасибо.

Google
Valeriy
23.01.2017
16:52:32
Но мои эксперименты - это всего три датасета, этого мало наверное.

Боб
23.01.2017
16:53:20
Для себя я еще проверю на своих данных, сейчас просто порядок примерности понять хотелось

погонял на разных данных. Щас вот попал что uniqHLL12 дала погрешность 2% на 71 млн. уников на 268 млн.уников: uniq: 0.83% uniqCombined: 3.1% uniqHLL12: 1.27% на 280млн уников: (другой набор данных) ошибки uniq: 0.87% uniqCombined: 3.4% uniqHLL12: 3.83% так что документация ошибается на счет того что uniqCombined в несколько раз точнее uniq

источник данных - результат от sipHash64(строка)

Alexey
23.01.2017
18:57:20
У нас есть всякие графики на этот счёт. Но их много, они непонятные, и я уже забыл про них. В качестве измерения интересует распределение вероятности погрешности в зависимости от количества значений, на некоторых реальных наборах данных. Там получается трёхмерная диаграмма или набор из кучи линий. Функцию uniqCombined мы изначально задумывали, как вариант, который в несколько раз более точный, чем uniq. Может быть, изначальная задумка уже не актуальна.

Провёл несколько измерений. В двух из трёх случаев, uniqCombined оказался точнее uniq. Это мало о чём говорит.

Боб
24.01.2017
07:07:41
А есть оценки максимальных погрешностей? т.е. например: с вероятностью 0.99999 при количестве разных значений до 1 млрд. ошибка будет укладываться в 5% для такой-то функции, 1% для другой

и для распределений например для осмысленных строк (email, login, ФИО), упорядоченных чисел (id натуральные, которые выдаются более-менее по-порядку) и для бессмысленных хорошо распределенных чисел - хешей sip, md5, md5half

Fike
24.01.2017
07:46:59
Можно просто подсмотреть формулы в спеках по алгоритмам http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf

Боб
24.01.2017
10:15:02
Про индексы, разбиения на куски я правильно понял что если сделать например разбиение по EventDate, в внутри индекса например только Timestamp, то при фильтру по Timestamp кликхаус просто для каждого кусочка посмотрит граничные значения Timestamp и целиком этот столбец для фильтрации доставать уже не будет?

Алексей
24.01.2017
10:18:31
Добрый день! Когда подключаешь внешние данные из словарей на mongodb параметры <lifetime> <min>300</min> <max>360</max></lifetime> влияют на что-то? И в какой момент clickhouse обновляет данные из такого словаря?

Боб
24.01.2017
10:18:45
Альтернативу я вижу задавать индекс по EventDate,Timestamp, но тогда придется писать каждый раз доп. условия на дату и всегда будет доставаться доп. столбец.

f1yegor
24.01.2017
10:20:14
Альтернативу я вижу задавать индекс по EventDate,Timestamp, но тогда придется писать каждый раз доп. условия на дату и всегда будет доставаться доп. столбец.
я помню что экспериментировал, и у меня получалось что дату лучше запихивать в ключ и добавлять условие на фильтр. может у вас что по-другому получится

Igor
24.01.2017
11:01:54
Добрый день! Когда подключаешь внешние данные из словарей на mongodb параметры <lifetime> <min>300</min> <max>360</max></lifetime> влияют на что-то? И в какой момент clickhouse обновляет данные из такого словаря?
судя по документации если указан layout *cache*, то lifetime - это срок жизни кеша для flat/hashed, видимо, lifetime - это диапазон (или константа) времени, через которое все данные запросятся из словаря и будут сохранены в RAM

Алексей
24.01.2017
11:28:05
у нас тоже указано обновлять раз в час, но увы.

Kirill
24.01.2017
12:02:32
Всем привет, если кому-нибудь вдруг понадобится еще один клиент для CH на Go https://github.com/kshvakov/clickhouse из отличий от клиента Roistat (https://github.com/roistat/go-clickhouse): * совместим со стандартным database/sql, т.е. можно использовать как с "сырым" sql.Open("clickhouse", dsn), так и с более удобными "обвязками" вроде sqlх (https://github.com/jmoiron/sqlx) * использует нативный протокол на данный момент поддерживаются типы: * UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64 * Float32, Float64 * String * FixedString(N) * Date * DateTime * Array(T) из планов на будущее: * поддержка нового интерфейса database/sql в Go 1.8 (https://docs.google.com/document/d/1F778e7ZSNiSmbju3jsEWzShcb8lIO4kDyfKDNm4PNd8/edit#) * поддержка сжатия

Igor
24.01.2017
12:17:06
Может кого-то из сообщества заинтересует, идея сделать MySQL Federated->CH, есть проект "Federated mysql compatible proxy to elasticsearch, mongo, kube-apis, big-table, google datastore" , пытался сам сделать но моих знаний GO не хватило ) https://github.com/dataux/dataux

Dmitrii
24.01.2017
12:19:31
Конечно сработает. У пользователя можно написать к каким базам у него будет доступ
Я что-то не нашел в доках, как прописать пользователю базы, не подскажете?

Google
Dmitry
24.01.2017
12:21:44
В секцию с пользователем <allow_databases> <database>DB_NAME</database> </allow_databases>

Dmitrii
24.01.2017
12:29:56
круто, спс!

Kirill
24.01.2017
12:35:34
Может кого-то из сообщества заинтересует, идея сделать MySQL Federated->CH, есть проект "Federated mysql compatible proxy to elasticsearch, mongo, kube-apis, big-table, google datastore" , пытался сам сделать но моих знаний GO не хватило ) https://github.com/dataux/dataux
интересная штуковина, у автора есть вот такая классная библиотека https://github.com/araddon/qlbridge . У нас вот нет MySql, поэтому, возможно, FDW для Postgres появится )

f1yegor
24.01.2017
13:39:59
делаю

insert into session_promotions ( ts, container_id, promotion_id, visitor_id, session_id, session_ts ) select * from (select promotion_ts, container_id, promotion_id, visitor_id, session_id, ts from sessions ALL LEFT JOIN ( select ts AS promotion_ts, container_id, promotion_id, visitor_id, session_id from promotions ) USING (session_id) WHERE date = '2017-01-20' limit 4);

получаю DB::Exception: There is no column with name promotion_ts.

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

Igor
24.01.2017
13:42:23
INSERT INTO session_promotions (ts, ...) SELECT * FROM (SELECT promotion_ts AS ts, ...)

так не получится?

и ts AS session_ts, соответственно

т.е. имена столбцов совпадать должны тоже недавно на этом напоролся

f1yegor
24.01.2017
13:44:35
ага, спасибо,

вообщем проблема понятно, заведу багу

дальше будет проблема потому что в кликхаусе можно переиспользовать столбец спереди: select promotion_ts AS ts, session_id, ts AS session_ts

т.е. если столбцы будут совпадать в двух таблицах, то очень костыльно

papa
24.01.2017
13:51:50
т.е. если столбцы будут совпадать в двух таблицах, то очень костыльно
например, если таблица источник равна приемнику.

Dmitry
24.01.2017
13:51:59
f1yegor
24.01.2017
13:52:30
дмитрий, а вы из yandex?

Dmitry
24.01.2017
13:52:39
Да, но не из команды КХ

f1yegor
24.01.2017
13:52:54
в смысле я вас услышал, но багу заведу

Google
Igor
24.01.2017
13:53:00
:D

f1yegor
24.01.2017
14:07:05
а еще плохо что нельзя поменять даже выражение у колонки в ключе alter table session_promotions MODIFY COLUMN date Date MATERIALIZED toDate(toDateTime(ts / 1000));

Dmitry
24.01.2017
15:40:05
default_expr менять можно же

Dmitrii
24.01.2017
16:39:46
Кажется странным, что кликхаус возвращает 500 при попытке обратиться через ридонли пользователя с запросом типа insert или к базе, до которой пользователь не допущен. что-то типа 403 было бы логичнее.

*ответчает, а не возвращает

Прочитал Pinned message - захотелось нафлудить ?

prll
24.01.2017
16:47:52
Вопрос: (u)int64 — это предел? Как можно работать с большими числами в Кликхаусе?
А как именно хочется работать? можно попробовать FixedString(16)

Константин
24.01.2017
18:14:15
Добрый вечер! Видел тут мелькал DataSource для Grafana

установил, не могу разобраться как можно переименовать count() во что-нибудь понятное

сейчас все выглядит как-то так:

https://yadi.sk/i/TDqzG-Jq3Ahqx5

пробовол уже в запрос добавлять count() as blablabla

но не помогает....

Vladimir
24.01.2017
19:15:12
пробовол уже в запрос добавлять count() as blablabla
Нужно зайти в редактор запросов и там написать. Пробовал?

Roman
24.01.2017
19:22:50
Константин Митюрин, [Jan 24, 2017, 20:15]: пробовол уже в запрос добавлять count() as blablabla Вам необходимо переключиться в режим редактора запросов и там использовать "as blabla". В режиме конструктора и правда игнорируется ручной ввод.

Страница 52 из 723