
Konstantin
27.09.2017
09:18:37
<dictionaries>
<dictionary>
<name>testPSQL</name>
<source>
<odbc>
<connection_string>DSN=myconnection</connection_string>
<table>s**************c</table>
</odbc>
</source>
<lifetime>
<min>300</min>
<max>360</max>
</lifetime>
<layout>
<complex_key_hashed />
</layout>
<structure>
<key>
<attribute>
<name>id</name>
<type>String</type>
</attribute>
</key>
<attribute>
<name>dt</name>
<type>String</type>
<null_value>null</null_value>
</attribute>
</structure>
</dictionary>
</dictionaries>

Vladimir
27.09.2017
09:27:16

Google

Konstantin
27.09.2017
09:27:26
т.е. все заработало?)

Vladimir
27.09.2017
09:27:30
Но этот тип словаря поддерживает такое количество
не-а=)
А какой тип данных у вас используется в постгре для строк?
varchar?
И вы пробовали получить сами значения? Не возвращает ли функция забора всегда значения по умолчанию?

Konstantin
27.09.2017
09:29:43

Vladimir
27.09.2017
09:37:08
Оказывается, словарь нормально подключился. Видимо в запросе я что-то делаю не так.
Спасибо

Konstantin
27.09.2017
09:37:45

Alexey
27.09.2017
09:39:48

Stas
27.09.2017
10:26:15
Господа, а max_memory_usage можно ли как-то задать при работе из веба? а не через родной клиент (там понятно как и все работает)

Igor
27.09.2017
10:30:27
?max_memory_usage=x

Vladimir
27.09.2017
11:54:27
Коллеги, а нет ли у кого-нибудь ссылочки на мануал о том, как из 2х компов собрать кластер для кх? так чтобы аналитик, а не сисадмин справился..

Google

Andrey
27.09.2017
12:05:40

Vladimir
27.09.2017
12:06:39
Репликация не нужна, пока что основная причина расширения - закончилась память на первой машине и добавить нет откуда, зато есть вторая машина

Kirill
27.09.2017
12:06:50

Vladimir
27.09.2017
12:07:55
У меня непонимание на уровне "как заставить 2 машины видеть друг друга, потом поставить на обе по кх и заставить их подружиться

Tima
27.09.2017
12:09:51

Kirill
27.09.2017
12:10:49
И еще
В /etc/clickhouse-server/users.xml прописать для пользователя которым ходите max_memory_usage, max_bytes_before_external_sort/max_bytes_before_external_group_by (меньше чем max_memory_usage) и distributed_aggregation_memory_efficient = 1
пример
<user>
<log_queries>1</log_queries>
<max_memory_usage>45000000000</max_memory_usage>
<max_bytes_before_external_sort>15000000000</max_bytes_before_external_sort>
<max_bytes_before_external_group_by>15000000000</max_bytes_before_external_group_by>
<distributed_aggregation_memory_efficient>1</distributed_aggregation_memory_efficient>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</user>

Vladimir
27.09.2017
12:12:33

Kirill
27.09.2017
12:18:07

Symstriker
27.09.2017
12:22:19
чтобы машины друг друга видели достаточно того что на обеих будет стоять КХ наружу ))
все остальное по списку

Vladimir
27.09.2017
12:29:40
Я же правильно понимаю, что если на 1 машине у меня уже много данных, то при подключение второй я могу за них не переживать - они никуда не денутся?

Kirill
27.09.2017
12:30:54
да

Vladimir
27.09.2017
13:00:10
Подскажите, пожалуйста по внешним словарям.
Допусти у меня есть табличка в Postgresql, в которой есть поля с несовместимыми типами.
Например, UID, MONEY и т.п.
Для того чтобы мне можно было её использовать в качестве внешнего словаря я должен обернуть её во вьюху, в которой я приведу типы к совместимым? Например, UID в String.

Konstantin
27.09.2017
13:02:42
а просто String их не проглатывает?

Nikolai
27.09.2017
13:03:02

Vladimir
27.09.2017
13:05:52
Ок, сейчас попробую.

Konstantin
27.09.2017
13:06:35

Vladimir
27.09.2017
13:07:34
Такой ещё вопрос:
В таблице PostgreSQL 20 столбцов. Я хочу как словарь использовать только 5 из них.
В этом случае достаточно в конфиге перечислить интересующие меня поля или нужно оборачивать во view?

Konstantin
27.09.2017
13:08:25
в mysql достаточно перечислить в словаре названия нужных стобцов
не бойтесь пробовать, словарь легко прощает ошибки =)

Google

Nikolai
27.09.2017
13:22:13

N
27.09.2017
13:24:12

Vitaliy
27.09.2017
13:42:58

Vladimir
27.09.2017
14:10:41
Подскажите пожалуйста, как оптимизировать запрос? Постоянно упираюсь в Memory limit (for query) exceeded:
Нужно понять переходы по сайту для конкретного визита
SELECT
visit_id,
pageviews,
watch_id AS url,
referer
FROM visits
ARRAY JOIN watch_ids AS watch_id
ANY INNER JOIN hits USING (watch_id)
WHERE (date = '2017-09-26') AND (visit_id = 5648523026255061741)

papa
27.09.2017
14:13:02
фильтр по дате на правую сторону есть?

Vladimir
27.09.2017
14:13:23
поле date есть в обеих таблицах

papa
27.09.2017
14:14:22
я бы написал подзапрос вместо hits

Vladimir
27.09.2017
14:14:31
Но если добавить hits.date = '2017-09-26' то Exception: Unknown identifier: hits.date.

papa
27.09.2017
14:14:44
и не называл слишком много вещей watch_id
join (select from hits where date)
а еще у вас в левом запросе мало данных - хиты одного визита, лучше его сделать правым.

Александр
27.09.2017
14:18:21

papa
27.09.2017
14:19:43

Vladimir
27.09.2017
14:21:14

papa
27.09.2017
14:21:37
но там есть watch_id

Vladimir
27.09.2017
14:21:40

papa
27.09.2017
14:22:11
это уже с фильтром по дате?

Vladimir
27.09.2017
14:22:12

Google

Vladimir
27.09.2017
14:22:51

papa
27.09.2017
14:26:39
а вот так не работает?
select visit_id, pageviews, url, referer
from (
select watch_id from hits where date = '2017-09-26'
)
ANY INNER JOIN
(
SELECT visit_id, pageviews, watch_id AS url, referer
FROM visits
ARRAY JOIN watch_ids AS watch_id
WHERE (date = '2017-09-26') AND (visit_id = 5648523026255061741)
)
using (watch_id)
а что у вас в индексе есть, может если вы знаете id визита, то вдруг получится что-то подтянуть в запрос чтобы не сканить все. юзера какого-нибудь.

Vladimir
27.09.2017
14:32:49
client_id в обоих индексах
Сейчас попробую на них

Sergei
27.09.2017
14:39:20
Подскажите пожалуйста, есть ли какой-то эффективный способ выгрузить из очень большой таблицы данные, упорядоченные по нескольким полям. Группировок нет. Влоб КХ ругается на лимит по памяти (увеличивать его не хочется). Нет ли у КХ возможности сортировать данные используя диск?
Шардировать и упорядочивать на стороне не предлагать

Tima
27.09.2017
14:42:31

Vladimir
27.09.2017
14:46:11

Kirill
27.09.2017
14:47:12

Sergei
27.09.2017
14:48:14

papa
27.09.2017
14:53:52

Vladimir
27.09.2017
14:54:24
Потому что хиты сегоднящшнего визита могут уходить в завтра

papa
27.09.2017
14:54:55
возьмите даты за сегодня и завтра.

Sergei
27.09.2017
15:01:08
спасибо
Не подскажите, а для вложенных запросов у КХ есть какая-нибудь такая настройка (для сброса на диск)?

Tima
27.09.2017
15:15:31
Насколько я знаю такой настройки нет. Но есть выступление Алексея Миловидова, как с проблемой непомещения запроса в памяти можно бороться. Погуглите "clickhouse meetup"

Vladimir
27.09.2017
15:21:28

Vladimir
27.09.2017
16:36:19
всем привет. может кто-нить уже сталкивался: как подружить ReplacingMergeTree-таблицу с мат.вьюхой на SummingMergeTree или AggregatingMergeTree? агрегация в мат.вьюхе происходит по вставляемому куску, в котором могло произойти изменение версии одного из ранее вставленных PK - никак не могу придумать, как учитывать это в финальной агрегации. т.е. такое изменение не должно влиять на countState/Merge, например

hamper ?
27.09.2017
17:39:13
Привет, а есть какие-нибудь готовые выгребалки из кафки в кх, типа как для вертики?

Maxim
27.09.2017
18:23:22
Напиши сам на flume

Google

Maxim
27.09.2017
18:23:32
Быстро и легко

Kirill
27.09.2017
18:26:17

Roman
27.09.2017
18:49:11
а кто-нибудь использовал это? https://github.com/VerizonDigital/vflow/tree/master/consumers/clickhouse

Paul
27.09.2017
19:54:53

Roman
27.09.2017
19:58:18
@not_logan можно будет поинтересоваться о результатах через недельку?

Paul
27.09.2017
20:00:03
кто такой @why_rebecca_bot ?

Виктор
27.09.2017
20:00:23
спам детектор

Constantine
27.09.2017
20:00:30
там в описании указано ?

Виктор
27.09.2017
20:00:30
у него бывают ошибки, не обращайте внимания

Paul
27.09.2017
20:01:03
а что такого плохого я сделал, если не секрет? :))))

Roman
27.09.2017
20:23:38
> Могу даже статью написать, если интересно будет
супер

Sergei
27.09.2017
21:27:08
Подскажите пажалуйста
вот запрос
SELECT
hash1,
hash2,
url,
domain,
site_id
stat,
id
FROM uri_stat
ANY LEFT JOIN
(
SELECT
hash1,
hash2,
argMax(stat_id, event_date) AS stat
FROM site_stat
PREWHERE status =1
GROUP BY
hash1,
hash2
) USING (hash1, hash2)
WHERE stat > 0
ORDER BY
hash1 ASC,
hash2 ASC,
event_date ASC
вложенный запрос небольшой (6М записей), свободно проигрывается и помещается в память
max_bytes_before_external_group_by
max_bytes_before_external_sort
выставлены
но вылетает ошибка по нехватке памяти
uri_stat - большая
но, вроде как внешние сортировки должны работать