@clickhouse_ru

Страница 279 из 723
Dasha
09.10.2017
14:20:21
Привет! Подскажите пожалуйста, как подключить Tableau к CLickHouse. Я видела, что кому-то удалось. В Tableau есть Connection->More->ODBC, но дальше не совсем понятно, что делать. В строке Driver прописать путь до clickhouse-odbc.so?

Navern
09.10.2017
15:22:15
Привет=) тоже возник вопрос. Кликхаус сервер упал с сегфолтом, после чего запрос к вьюшке отваливается: DB::Exception: Unknown identifier (in GROUP BY): seller. причем точно такая же пересозданная вьюшка работает нормально, и сам запрос из вьюшки корректно отрабатывается. Где найти вьюшку на диске и как такое вообще можно подебажить?

на диске нашел только SQL файл

Google
Navern
09.10.2017
15:30:40
он это в памяти как то делает?

Artem
09.10.2017
15:32:33
Коллеги, раз вопрос пошел про BI может кто-то уже подсоеденял Qlik Sense или Qlik View к ClickHouse. Есть опыт, кейсы?

Bulat
09.10.2017
15:59:26
подскажите пожалуйста, а как в след запросе выставить условие на оригинальную дату: SELECT toStartOfMonth(date) AS date FROM target.events_local WHERE date>'2017-10-09'

при такой записи date получается уже после применения функции

Bulat
09.10.2017
16:01:53
вроде никак. Только если в подзапрос обернуть

Tima
09.10.2017
16:01:57
подскажите пожалуйста, а как в след запросе выставить условие на оригинальную дату: SELECT toStartOfMonth(date) AS date FROM target.events_local WHERE date>'2017-10-09'
Так дайте название алиасу столбца date другое SELECT date, toStartOfMonth(date) AS date1 FROM target.events_local WHERE date>'2017-10-09'

Bulat
09.10.2017
16:02:07
не могу

Bulat
09.10.2017
16:02:46
having после группировки

Bulat
09.10.2017
16:03:21
SELECT toStartOfMonth(date) AS date FROM ( select * from target.events_local WHERE date>'2017-10-09')

Bulat
09.10.2017
16:06:17
в документации написанно что where применяется перед всеми остальными преобразованиями, а тут получается не совсем так :(

Google
Edya
09.10.2017
16:07:42
Привет! Подскажите пожалуйста, как подключить Tableau к CLickHouse. Я видела, что кому-то удалось. В Tableau есть Connection->More->ODBC, но дальше не совсем понятно, что делать. В строке Driver прописать путь до clickhouse-odbc.so?
Если под windows, то сначала нужно сделать DSN в администраторе ODBC соединений, а потом просто выбирать его в табло. ODBC драйвер есть здесь https://github.com/yandex/clickhouse-odbc/releases/tag/2017-10-03

Artem
09.10.2017
16:18:50
За ссылку на ODBC спасибо.

Max
09.10.2017
16:25:26
Ребята, подскажите. не совсем понимаю куда копать

есть много табличек с именем name_date

делаю select name from system.tables where database = ‘db’ and name like ‘name_%’

получаю 11348 rows in set

и есть табличка типа merge которая смотрит на ‘^name_’

но select count(distinct(_table)) from merge_table 11,056

и вот не понимаю куда копать

Konstantin
09.10.2017
17:07:08
Добавляйте через вкладку User DSN

Dasha
09.10.2017
17:07:21
спасибо!

Konstantin
09.10.2017
17:27:34
и вот не понимаю куда копать
а такой запрос что нибудь даст? SELECT name FROM system.tables WHERE database='db' AND name LIKE 'name_%' AND name NOT in (SELECT _table FROM merge_table)

Konstantin
09.10.2017
17:44:07
спасибо. все сошлось. они пустые =)
а если просто выгрузить оба списка имен и сравнить их в том же excel?

Max
09.10.2017
17:44:30
не/ я имею ввиду что таблицы оказались пустые

а запрос помог определить их

Konstantin
09.10.2017
17:45:01
а)

я не догнал)

Google
Konstantin
09.10.2017
17:45:16
рад, что помогло =)

Dasha
09.10.2017
18:04:32
В каком формате пишется хост? Например, localhost ? И мне, честно говоря, не совсем понятно, мы же при создании DSN не указываем путь до драйвера

Dasha
09.10.2017
18:06:51
Да

Konstantin
09.10.2017
18:07:57


путь для драйвера не требуется, все уже установилось вам необходимо указать только параметры подключения к КХ

Dasha
09.10.2017
18:11:10
Я вроде так и делала, пока не вышло. Все равно большое спасибо

Konstantin
09.10.2017
18:11:54
убедитесь еще чтобы разрядность odbc драйвера соответствовала разрядности табло, 32-32 или 64-64

Dasha
09.10.2017
18:12:11
соответствует

Konstantin
09.10.2017
18:17:09
соответствует
попробуйте драйвер поменять вы когда создавали источник данных какой выбирали? ANSI или UNICODE?

Dasha
09.10.2017
18:25:17
UNICODE

но мне кажется, он автоматически выбрался

Помогло, спасибо огромное!

Надо было выбрать ANSI

Konstantin
09.10.2017
18:29:48
Max
09.10.2017
22:14:00
еще более интересно что сегодня такой запрос работал

Sergei
09.10.2017
22:55:34
Вот есть пример запроса отличие только в toString но с toString не работает, хотя поидее должно версия с toString немного абсурдна, но все же SELECT site_area_id AS partial_item_id, any(ptz_date), any(timeSlot(event_time)), any(user_id), any(site_id), any(site_area_id), any(geo_id), any(browser_id), any(url), any(total) AS total, visitParamExtractString(bids, 'ds') AS demand_source, uniqExact(session_id, site_area_id, demand_source) AS total_bidded, round((total_bidded / total) * 100, 2) AS total_bidded_rate, uniqExactIf(session_id, site_area_id, demand_source, visitParamExtractFloat(bids, 'cpm') > 0) AS total_non_zero_bidded, round((total_non_zero_bidded / total) * 100, 2) AS total_non_zero_bidded_rate, uniqExactIf(session_id, site_area_id, max_bidder, max_bidder = demand_source) AS total_won, round((total_won / total) * 100, 2) AS total_win_rate FROM hb_sessions_merged AS st ANY LEFT JOIN ( SELECT site_area_id AS partial_item_id, uniqExact(session_id, site_area_id) AS total FROM hb_sessions_merged WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id ) USING (partial_item_id) ARRAY JOIN bids WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id, demand_source HAVING demand_source != '' LIMIT 100000 SELECT toString(site_area_id) AS partial_item_id, any(ptz_date), any(timeSlot(event_time)), any(user_id), any(site_id), any(site_area_id), any(geo_id), any(browser_id), any(url), any(total) AS total, visitParamExtractString(bids, 'ds') AS demand_source, uniqExact(session_id, site_area_id, demand_source) AS total_bidded, round((total_bidded / total) * 100, 2) AS total_bidded_rate, uniqExactIf(session_id, site_area_id, demand_source, visitParamExtractFloat(bids, 'cpm') > 0) AS total_non_zero_bidded, round((total_non_zero_bidded / total) * 100, 2) AS total_non_zero_bidded_rate, uniqExactIf(session_id, site_area_id, max_bidder, max_bidder = demand_source) AS total_won, round((total_won / total) * 100, 2) AS total_win_rate FROM hb_sessions_merged AS st ANY LEFT JOIN ( SELECT toString(site_area_id) AS partial_item_id, uniqExact(session_id, site_area_id) AS total FROM hb_sessions_merged WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id ) USING (partial_item_id) ARRAY JOIN bids WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id, demand_source HAVING demand_source != '' LIMIT 100000

papa
09.10.2017
23:38:02
а что такое "не работает"

Sergei
09.10.2017
23:42:21
а что такое "не работает"
он не видит колонки во внешнем запросе - toString(site_area_id) если убрать toString, то все будет ок либо написать допустим concat(toString(site_area_id), '')

Google
Sergei
09.10.2017
23:44:14
а что такое "не работает"
Code: 10. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Not found column toString(site_area_id) in block. There are only columns: session_id, site_area_id, event_time, site_id, url, geo_id, browser_id, bids, max_bidder, ptz_date, user_id.

Ilya
09.10.2017
23:55:49
Вот есть пример запроса отличие только в toString но с toString не работает, хотя поидее должно версия с toString немного абсурдна, но все же SELECT site_area_id AS partial_item_id, any(ptz_date), any(timeSlot(event_time)), any(user_id), any(site_id), any(site_area_id), any(geo_id), any(browser_id), any(url), any(total) AS total, visitParamExtractString(bids, 'ds') AS demand_source, uniqExact(session_id, site_area_id, demand_source) AS total_bidded, round((total_bidded / total) * 100, 2) AS total_bidded_rate, uniqExactIf(session_id, site_area_id, demand_source, visitParamExtractFloat(bids, 'cpm') > 0) AS total_non_zero_bidded, round((total_non_zero_bidded / total) * 100, 2) AS total_non_zero_bidded_rate, uniqExactIf(session_id, site_area_id, max_bidder, max_bidder = demand_source) AS total_won, round((total_won / total) * 100, 2) AS total_win_rate FROM hb_sessions_merged AS st ANY LEFT JOIN ( SELECT site_area_id AS partial_item_id, uniqExact(session_id, site_area_id) AS total FROM hb_sessions_merged WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id ) USING (partial_item_id) ARRAY JOIN bids WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id, demand_source HAVING demand_source != '' LIMIT 100000 SELECT toString(site_area_id) AS partial_item_id, any(ptz_date), any(timeSlot(event_time)), any(user_id), any(site_id), any(site_area_id), any(geo_id), any(browser_id), any(url), any(total) AS total, visitParamExtractString(bids, 'ds') AS demand_source, uniqExact(session_id, site_area_id, demand_source) AS total_bidded, round((total_bidded / total) * 100, 2) AS total_bidded_rate, uniqExactIf(session_id, site_area_id, demand_source, visitParamExtractFloat(bids, 'cpm') > 0) AS total_non_zero_bidded, round((total_non_zero_bidded / total) * 100, 2) AS total_non_zero_bidded_rate, uniqExactIf(session_id, site_area_id, max_bidder, max_bidder = demand_source) AS total_won, round((total_won / total) * 100, 2) AS total_win_rate FROM hb_sessions_merged AS st ANY LEFT JOIN ( SELECT toString(site_area_id) AS partial_item_id, uniqExact(session_id, site_area_id) AS total FROM hb_sessions_merged WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id ) USING (partial_item_id) ARRAY JOIN bids WHERE (1 = 1) AND (ptz_date >= '2017-09-25') AND (ptz_date <= '2017-10-02') AND (user_id = 106736) GROUP BY partial_item_id, demand_source HAVING demand_source != '' LIMIT 100000
А у вас структура таблицы не менялась?

papa
10.10.2017
00:27:18
Code: 10. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Not found column toString(site_area_id) in block. There are only columns: session_id, site_area_id, event_time, site_id, url, geo_id, browser_id, bids, max_bidder, ptz_date, user_id.
кажется тут комбинация алиаса + join + group by немного сбивает с толку. надежнее джойнить два подзапроса.

Ilya
10.10.2017
01:17:28
А никто не сталкивался с проблемой: В Merge таблице два столбца _table. Видимо из-за этого не работают некоторые запросы.

Alex
10.10.2017
04:46:04
Доброе утро коллеги.

Подскажите можно ли прямо в запросе указать максимальное число ядер, которое оно может использовать?

или приоритет. Есть задача брать с удаленного сервера по сложному запросу данные в кеш. Но этот запрос не является приоритетным и хочеться его как то ограничить, чтобы не клал все, что только можно.

Eugene
10.10.2017
05:16:48
Доброе утро, у меня есть некая инсталяция CH, средняя суточная нагрузка на CH некое значение предположим Х, в определенное время суток 0.1Х в пиковое время 10х, в современных реалиях провижн и депровижен серверов не большая проблема, коллеги, кто то сталкивался с подобным или может подсказать в каком направлении смотреть?

Eugene
10.10.2017
06:42:54
Да не про железо я, я про то что будет ли эффект от добавления реплик(хотя про чтение понятно конечно что есть а вот про запись), или только шардинг поможет а автошардинга нет и мне не стоит мечтать, или еще что то

Alex
10.10.2017
06:53:35
Спасибо Евгений

Геннадий
10.10.2017
07:05:26
Здравствуйте. А кто нибудь знает как заэскэйпить % в like запросе?

Vlad
10.10.2017
07:08:07
\% же

Здравствуйте. А кто нибудь знает как заэскэйпить % в like запросе?

Геннадий
10.10.2017
07:12:21
проблема с запросом select HostName, ClientIp, count() cnt from metrika.access_log where (UriParam like '%%3c%2fdoc%3e%2f%2f%5b%22%27%60--%3e%5d%5d%3e%5d%3c%2fdiv%3e%' or UriParam like '%<div id="69"><card xmlns="http://www.wapforum.org/2001/wml"><onevent type="ontimer"><go href="javascript:alert(69)"/></onevent><timer value="1"/></card>//["\'-->]]>]</div><div id="70"><div style=width:1px;filter:glow onfilterchange=alert(70)>x</div>//["\'-->]]>]</div><div id="71"><// style=x:expression\\28alert(71)\\29>//["\'-->]]>]</div><div id="72"><form><button formaction="javascript:alert(72)">x</button>//["\'-->]]>]</div><div id="73"><event-source src="event.php" onload="alert(73)">//["\'-->]]>]</div><div id="74"><a href="javascript:alert(74)"><event-source src="data:application/x-dom-event-stream,event:click%0adata:xxx%0a%0a" /></a>//["\'-->]]>]</div>%' ) and Timestamp between '2017-09-18 07:06:24' and '2017-09-20 07:06:24' group by HostName, ClientIp выдаёт ошибку Code: 1000, e.displayText() = DB::Exception: Received from clickhouse8:9000, 192.168.231.102. DB::Exception: Exception: OptimizedRegularExpression: cannot compile re2: <div id="69"><card xmlns="http://www\.wapforum\.org/2001/wml"><onevent type="ontimer"><go href="javascript:alert\(69\)"/></onevent><timer value="1"/></card>//\["'-->]]>]</div><div id="70"><div style=width:1px;filter:glow onfilterchange=alert\(70\)>x</div>//\["'-->]]>]</div><div id="71"><// style=x:expression\28alert\(71\)\29>//\["'-->]]>]</div><div id="72"><form><button formaction="javascript:alert\(72\)">x</button>//\["'-->]]>]</div><div id="73"><event-source src="event\.php" onload="alert\(73\)">//\["'-->]]>]</div><div id="74"><a href="javascript:alert\(74\)"><event-source src="data:application/x-dom-event-stream,event:click.*0adata:xxx.*0a.*0a" /></a>//\["'-->]]>]</div>, error: invalid escape sequence: \2., если убрать \2 или %, то всё норм. Но \% не срабатывает почему то

О, \\% - вот так сработало

спасибо!

Саша
10.10.2017
07:15:58
Подскажите, пожалуйста, как лучше в clickhouse решить следующую задачу. Есть объект у которого могут меняться статусы. Есть лог перевода статусов. ┌─name────────────┬─type──────────┬─default_type─┬─default_expression─┐ │ id │ String │ │ │ │ datetime │ DateTime │ │ │ │ date │ Date │ │ │ │ status │ Int8 │ │ │ │ client_id │ String │ │ │ └─────────────────┴───────────────┴──────────────┴────────────────────┘ Объект может возвращаться в какой-либо статус неогранченное кол-во раз. Пример статусов: initial, active, premium, banned. Необходимо посчитать кол-во клиентов с определенным КОНЕЧНЫМ статусом в периоде с группировкой по периоду (день, неделя). т.е. если за текущий день пользователь менял статус как initial -> active, а на следующий день active -> premium, то за сегодня мы считает кол-во статусов active, а завтра уже premium. Хотел использовать anyLast, но там получается недетерминированный результат. Насколько я понимаю, то мне необходимо использовать argMax(status, datetime) ?

Александр
10.10.2017
07:51:35
Можно через argMax, а можно просто через limit 1 by и order by ... desc попробовать

Google
Александр
10.10.2017
07:52:01
Получить подзапросом список последних статусов на каждый день

Приджоинить это к таблице и сделать count

Bulat
10.10.2017
08:08:35
не работает запрос: SELECT toStartOfMonth(date) AS date FROM ( select * from target.events_local WHERE date>'2017-10-09') говорит unknown identifier 'date', но при этом если написать SELECT toStartOfMonth(date) AS date FROM ( select date from target.events_local WHERE date>'2017-10-09') то все работает. :(

разобрался, поле date - материализованное, и оно по * не выбирается

Alex
10.10.2017
08:30:16
select toStringCutToZero(country) as country from audience_statistic_segments group by country можно ли как то оптимизировать такой запрос?

124 rows in set. Elapsed: 107.657 sec. Processed 6.72 billion rows, 470.42 GB (62.42 million rows/s., 4.37 GB/s.)

можете оценить скорость работы?

хотя тут от железа зависит еще много.

можно ли оптимизировать как-то запрос выше?

Саша
10.10.2017
08:37:45
Alex
10.10.2017
08:38:01
нет

SELECT DISTINCT toStringCutToZero(country) AS country FROM audience_statistic_segments

вот так?

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