@clickhouse_ru

Страница 172 из 723
Pavel
19.06.2017
09:22:28
как минимум - я бы мог использовать их для IPv6 и манипуляции с ними, FixedString, конечно, работает, но нэтивный да еще и числовой тип с потенциальной возможность увеличения компрессии... мммм! :)

Igor
19.06.2017
09:50:09
Привет! подскажите плиз как правильнее работать с праймари ключами, когда необходимо делать запросы по непересекающимся критериям. например есть большая таблица фактов, там среди прочих есть колонки clientId, applicationId, country. 1/3 запросов будет делать фильтровать по clientId, 1/3 запросов будет делать group by applicationId, 1/3 будет фильтровать/группировать по полю country. Можно создать композитный (clientId, applicationId, country), но вроде как он ускорит только первый тип запросов. Вопроса два: 1. Влияет ли наличие поля в праймари ключе на выполнение запросов с group by? 2. В приведенном выше кейсе, какой из способов создания праймари ключа выбрать?

Igor
19.06.2017
10:04:01
да, вопрос появился как раз после прочтения. т.е. непонятно что делать когда есть 2-3 разных поля, по каждому из которых может производиться фильтрация (которая затраивает лишь это поле и не трогает два других)

Google
Yury
19.06.2017
10:13:33
2-3 таблицы?

Oleg
19.06.2017
10:13:59
или + mat view с другим набором ключей

Igor
19.06.2017
10:18:22
о, спасибо, слона то я и не приметил

Oleg
19.06.2017
10:20:11
решение впрочем не оч удобное, жаль нет вторичных индексов

Aleksandr
19.06.2017
11:01:42
Eсть ли NaN для Int типов? Или NaN есть только для Float?

Igor
19.06.2017
11:07:12
@pavel_odintsov Павел, а как ты сейчас ipv6 айпишки хранишь, просто как String?

Pavel
19.06.2017
11:11:14
FixedString16

просто string будет сильно неоптимально AFAIK :(

Vitaliy
19.06.2017
12:09:48
Eсть ли NaN для Int типов? Или NaN есть только для Float?
nan значения есть только в float-типах

Igor
19.06.2017
12:10:55
просто string будет сильно неоптимально AFAIK :(
я уииды пробовал просто в string хранить, да, как раз раза в два-три медленнее запросы и больше оперативки

Александр
19.06.2017
12:38:58
Ребят, через tcp драйвер можно set max_memory_usage ставить?

Kirill
19.06.2017
12:55:47
через гошный можно

Александр
19.06.2017
13:52:34
Я его проставил, но похоже на весь кластер не распространилась настройка

Google
Александр
19.06.2017
13:53:06
Так как при обращении к ditributed таблице другие сервера прекращают выполнение из-за памяти

Александр
19.06.2017
14:05:47
А в КХ как то можно получить значение колонки предыдущей строки в блоке? Например у меня такая логика: если column = 1, то вернуть 0, если нет, то посчитать runningDifference(column2), но при условии что у предыдущей строки column != 2 например

Alexander
19.06.2017
14:06:01
Вопрос: а какие-то энджины с индексами но без даты - планируются или врядли?

Александр
19.06.2017
14:06:47
Хотя я догадываюсь как можно. Применить sequenceMatch с нужными правилами и если match = 1, то делал runningDifference

Нет, не получится так сделать, к сожалению ( Это же блин агрегатная функция (

Roman
19.06.2017
14:10:46
Всем привет! Подскажите, есть ли возможность подсчитать процентное значение столбца от общей суммы?

Александр
19.06.2017
14:13:17
Хорошая мысль, сейчас попробую :)

Roman
19.06.2017
14:13:41
вы же не знаете сумму, пока не дочитаете до конца.
не знаю, но мне хотелось бы ее подсчитать один раз на запрос. Например, вы подсчитываете кол-во событий с каким-то условием. А потом считаете процентное соотношение от общей суммы событий

это можно сделать вроде select countIf(condition) / (select count() from ...) from ... group by...

papa
19.06.2017
14:14:41
это можно сделать как sumIf(x,y)/sum(x)

а, от общей суммы. да, встроенного нормализатора нет.

а в стандартном sql это как выглядит? наверно сработал бы count() / count() over (partition by 42), если бы он был.

Roman
19.06.2017
14:44:40
а в стандартном sql это как выглядит? наверно сработал бы count() / count() over (partition by 42), если бы он был.
там есть cross join https://stackoverflow.com/questions/30509149/get-column-sum-and-use-to-calculate-percent-of-total-mysql не знаю, правда, как быстро он работает

Александр
19.06.2017
14:48:50
Блин, этот баг с оптимизацией запроса просто не дает спокойно жить (

Простой запрос не работает

Alex
19.06.2017
14:57:24
сорри(

Alexander
19.06.2017
15:18:56
Вопрос: в документации часто упоминается пример с userId. Вопрос: как в вашем случае реализован вывод , если нужно имя пользователя?: это словарь или join по другой таблице или может словарь во внешней базе?

Google
Alexander
19.06.2017
15:19:42
Так как отличий от маркет-дата по сути никаких в данном случае.

Александр
19.06.2017
15:19:53
Мы все трём лапки и ждем побольше running функций...
Вот я тоже :) Может быть ребята не знаю что народ хочет? ) Поэтому особо ничего нового в этом направлении не появляется?

papa
19.06.2017
15:20:12
в нашем случае нет имени пользователя.

Alexander
19.06.2017
15:21:56
Vladimir
19.06.2017
15:22:56
Внешняя база?
Да. Так как КХ только только планирует внедрить updateable словари то у нас сделано в Postgres.

Alexander
19.06.2017
15:24:27
Да. Так как КХ только только планирует внедрить updateable словари то у нас сделано в Postgres.
Извините, а можно подробнее? Так как я про такие словари спрашивал месяц наверное назад и я так понял что этого ждать не стоит. Так как это одна из основных фишек кдб, очень удобная, и которой нет в КХ

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

Vladimir
19.06.2017
15:25:33
написал в личку)

Alexander
19.06.2017
15:25:44
А именно: сохраняю строки, но в словарь загружаю из view на основании выборки

Maksim
19.06.2017
16:15:36
у меня быстрый вопрос. Я решил воспользоваться прогрессом возвращаемым в HTTP хедерах

< X-ClickHouse-Progress: {"read_rows":"214418","read_bytes":"25670058","total_rows":"327680"} < X-ClickHouse-Progress: {"read_rows":"222610","read_bytes":"25686442","total_rows":"327680"}

я правильно понимаю, что read_rows*100 / total_rows это примерно процент выполнения запроса?

Igor
19.06.2017
16:16:33
да

Maksim
19.06.2017
16:18:23
спасибо

ща сделаем круто в интерфейсе

Igor
19.06.2017
16:32:31
ща сделаем круто в интерфейсе
Если делаете это на чистом JavaScript, можете сбросить пример попробую в tabix прикрутить)

Maksim
19.06.2017
16:37:55
А как в яваскрипте получить поток хедеров

Александр
19.06.2017
16:40:01
А как в яваскрипте получить поток хедеров
Мне кажется этот вопрос не тут нужно задавать :)

Maksim
19.06.2017
16:46:16
Ну так это вопрос о том как в табиксе получить прогресс

Google
Alexander
19.06.2017
16:49:32
Так, а как отсюда вот правильно руками собрать кликхаус? https://github.com/yandex/ClickHouse

Igor
19.06.2017
16:49:47
там build.md лежит рядом

в docs/, кажется

Alexander
19.06.2017
16:50:49
а, ништяк, спасибо. почитаю. а то я чот сбилдил, а что - сам не понял

Igor
19.06.2017
16:52:16
ну если сбилдил, то где-то в dbms должен валяться теперь бинарник clickhouse, который по умолчанию запускается как сервер

если прокинуть ему опцию --client или сделать симлинк и назвать clickhouse-client - станет клиентом

Alexander
19.06.2017
16:54:01
@iamigor да я даже деб пакет вроде собрал, сейчас попробую развернуть по серверам взамен версии с багой

Alexander
19.06.2017
16:55:56
Оу, оу, это классная идея прикрутить пользователю прогресс-бар.

Правда вроде иногда он сбрасывается если подзапрос.

Maksim
19.06.2017
17:00:56
Ага

Egor
19.06.2017
17:30:27
всем привет. как правильно юзать <remote_servers incl="clickhouse_remote_servers" /> через инклюд?

надо создать clickhouse_remote_servers.xml, и он подхватится7

?

Igor
19.06.2017
17:31:46
файлик создать

да

Egor
19.06.2017
17:33:19
че-то не хочет

2017.06.19 17:33:35.028015 [ 2 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/config.xml' 2017.06.19 17:33:35.029582 [ 2 ] <Warning> ConfigProcessor: Include not found: clickhouse_remote_servers

Igor
19.06.2017
17:35:40
<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file. By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element. Values for substitutions are specified in /yandex/name_of_substitution elements in that file. -->

https://github.com/yandex/ClickHouse/blob/86a3fcaec40521c5c6aa7b7850d96b6ec64b6243/doc/reference/ru/configuration_files.rst

Egor
19.06.2017
17:39:29
к сожалению нифига не понял, даже в русском варианте

Google
Egor
19.06.2017
17:39:57
каким боком здесь /yandex/

papa
19.06.2017
18:07:33
это дефолтное имя корневого элемента xml конфига.

Alexey
19.06.2017
18:20:51
Нужно добавить в документацию пример со структурой директорий и файлами.

Alexander
19.06.2017
21:43:25
А как rowbinary обрабатывает default поля - надо обязательно указать или можно игнорировать?

Alexey
19.06.2017
21:50:50
Также, как и другие форматы. Можно указать меньше столбцов в INSERT INTO table (columns...). Тогда нужно отправлять данные только для указанных столбцов, а значения остальных будут вычислены при вставке.

Alexander
19.06.2017
21:58:11
Не понимаю как он понимает чему binary соответствует. Если только длину блока сравнивать с разными размерами. А если два default ...

Maksim
19.06.2017
22:38:02
@milovidov_an Добрый день, скажите столкнулись с проблемой. как её можно решить



626 млн записей read. 255 сек....

papa
19.06.2017
22:49:48
а сколько должно быть

Maksim
19.06.2017
22:55:05
если сделать select count(*) за даты которые я сканю выходит 300 млн. почему 626 млн сканит не понятно

papa
19.06.2017
22:57:40
у вас за полчаса стало больше на 250М. значит 84Гб это за неделю. значит у вас 1кrps, и события по 130б. вряд ли по этому скриншоту получится наванговать большее.

Maksim
19.06.2017
23:00:05
@orantius ну на основе этих данных строим отчет. но данные приходят за 250 сек и пост обработка еще пару минут. как быть? и я так и не понял почему фулл скан идет. подсчитывает на 300 млн записей. а запросом на sum сканит 600+

select eventDate, toString(country) as country, toString(region) as region, toString(city) as city, toString(gender) as gender, age as group_age, SUM(requests_count) AS requests from `audience_statistic_segments where `eventDate` between '2017-05-21' and '2017-06-19' group by eventDate, `country`, `region`, `city`, `gender`, `group_age order by eventDate asc, `country` asc, `region` asc, `city` asc, `gender` asc, `group_age` asc

papa
19.06.2017
23:04:06
а c count() запрос такой же?

Maksim
19.06.2017
23:05:16
select count(*) from `audience_statistic_segments` where `eventDate` between '2017-05-21' and '2017-06-19'

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