@clickhouse_ru

Страница 284 из 723
Vladimir
11.10.2017
15:51:33
типа runningSum? не помню есть ли такое. Народ давно ждет

Nikolai
11.10.2017
15:53:12
пока не вполне очевидно, как такого добиться

Vladimir
11.10.2017
15:55:17
Можно попробовать домножить колонку на -1 и сделать runningDifference(x)

Alex
11.10.2017
15:55:43
есть недокументированный runningAccumulate

Google
Alex
11.10.2017
15:56:29
примеры использования можно найти поиском по чату

Nikolai
11.10.2017
15:59:01
это же все равно фулскан потребует, если надо считать сумму от начала времен?

Alex
11.10.2017
16:00:07
ага

Саша
11.10.2017
16:02:39
Спасибо, попробую

Nikolai
11.10.2017
16:06:59
Все же хочется верить что это просто ошибка в документации.
Да, документация в этом месте устарела. default не нужен

Stas
11.10.2017
16:07:06
А от куда вы о не докумментированных функциях узнаёте?

(тоже хочу)

Michal
11.10.2017
16:09:31
А от куда вы о не докумментированных функциях узнаёте?
Github - там можно не только следить за всеми "новинками", но и самому парочку новых функций придумать и закоммитить - нужно только C++ уметь :)

Mike
11.10.2017
16:13:32
он собирается и видится пентахой. а вот на стадии запросов они не дружились пару месяцев назад. может быть что-то поменялось, как раз интересуюсь

подозреваю, нужно ждать до реализации "SELECT db.table.column", так как падало на этом.

Google
Michal
11.10.2017
16:18:16
Да, документация в этом месте устарела. default не нужен
Николай, спасибо. Кто-то у вас поправит документацию, или пулл-реквекст вам выслать?

Mike
11.10.2017
16:18:25
https://github.com/yandex/clickhouse-odbc/releases последний билд 8 дней назад
Так они и по jdbc дружились нормально. Они на уровне реализации sql языка не дружились, кажется.

Nikolai
11.10.2017
16:20:53
Николай, спасибо. Кто-то у вас поправит документацию, или пулл-реквекст вам выслать?
пулл-реквест, конечно, было-бы идеально :) дукоментация сейчас несколько отстает от действительности

Konstantin
11.10.2017
16:55:52
а как можно реализовать группировку по произвольным интервалам времени? например по 5 минут?

Nikolai
11.10.2017
17:01:43
возможно, group by toUInt32(date_time) // (5 * 60) ?

Павел Максимов
11.10.2017
17:19:11
Ребят, подскажите есть у меня 2 таблицы. Они каждый день пополняются данными. Я их хочу соединить, через ключевые столбцы. И при запросе получать актуальные данные на каждый день. Какой движок таблицы использовать?

Nikolai
11.10.2017
17:42:38
По умолчанию - MergeTree. Остальные для более узкоспециализированных задач.

Stas
11.10.2017
17:56:50
По умолчанию - MergeTree. Остальные для более узкоспециализированных задач.
А нет ли где то best practice по ReplacingMergeTree в частности использования OPTIMIZE VS Final

Igor
11.10.2017
18:34:02
Не использовать его)

Позиция офф. доки

Stas
11.10.2017
18:37:54
Это отлично, но по другому не выйдет или придётся очень сильно усложнять логику...

Nikolai
11.10.2017
18:40:07
Не знаю ничего кроме документации. Если кратко, то ReplacingMergeTree стоит использовать, если есть проблемы со слишком большим размером таблицы. А OPTIMIZE или FINAL лучше не использовать. :)

Stas
11.10.2017
18:49:23
Но тогда что бы мне выбрать только последнее значение (из дублирующихся) мне придётся делать подзапрос и join так?

Igor
11.10.2017
19:12:47
Значений много ?

2-4М ?

Использую в проде историческую таблицу МеrgeTree- по 5М каждую минуту складирую записей -> достаю так FROM model.last_state WHERE key_date=( SELECT max(key_date) FROM model.last_state_marker_model WHERE event_date = today() ) AND event_time=( SELECT max(event_time) FROM model.last_state_marker_model WHERE event_date = today() ) - достать последнии записи Может не совсем красивый путь - но путь решения хранения обновляемой истории

Alex
11.10.2017
19:26:29
Коллеги а в каких случаех при репликации нужно юзать zookeeper ?

или можно вообще без него

Michal
11.10.2017
19:53:56
Если вы используете движок Distributed и все инсерты идут через него - тогда он может сразу во все реплики отправлять данные без зоокипера, но никаких гарантий при этом что реплики 100% синхронизированы не будет. С зоокипером и internal_replication - всё намного надежнее.

Google
Alex
11.10.2017
19:54:45
как минимум изза гарантии доставки надо юзать

?\

Michal
11.10.2017
19:59:22
Из документации:

У каждого шарда в конфигурационном файле может быть указан параметр internal_replication. Если он выставлен в true, то для записи будет выбираться первая живая реплика и данные будут писаться на неё. Этот вариант следует использовать, если Distributed таблица “смотрит” на реплицируемые таблицы. То есть, если таблица, в которую будут записаны данные, будет сама заниматься их репликацией. Если он выставлен в false (по умолчанию), то данные будут записываться на все реплики. По сути, это означает, что Distributed таблица занимается репликацией данных самостоятельно. Это хуже, чем использование реплицируемых таблиц, так как не контролируется консистентность реплик, и они со временем будут содержать немного разные данные.

см. https://clickhouse.yandex/docs/ru/table_engines/distributed.html

sha-bang
11.10.2017
20:00:00
Приветствую всех Не подскажите ли вот какую вещь. Есть у меня запрос из базы mysql через внешний словарь: select dictGetString('api_keys','descr', number) from system.numbers where number in (1365,1,933,1437,669,1114) limit 5; который работает как нужно и есть еще один запрос: select api_key_id from store where api_key_id = 23 Который тоже хорошо работает. Но вместе они никак не хотят работать. Пробовал вот так: select dictGetString('api_keys','descr', number) from system.numbers where number in (select api_key_id from store where api_key_id = 23) limit 5; ошибку выдает

Michal
11.10.2017
20:01:30
Разные integer типы?

Там вроде бы сообщение об ошибке должно быть информативное.

sha-bang
11.10.2017
20:02:54
Michal минутку

Michal
11.10.2017
20:03:20
select dictGetString('api_keys','descr', toUInt64(number))

так попробуйте

sha-bang
11.10.2017
20:05:37
Michal вот ошибка Code: 53. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Types of column 1 in section IN don't match: UInt32 on the right, UInt64 on the left..

попробую Ваш вариант

Michal
11.10.2017
20:06:46
Угу. Разные целочисленные типы. В кликхаус нужны явные приведения типов в таких случаях.

sha-bang
11.10.2017
20:08:21
Michal сделал, но все равно ту же ошибку дает DB::Exception: Types of column 1 in section IN don't match: UInt32 on the right, UInt64 on the left..

papa
11.10.2017
20:09:30
api_key_id какой тип?

Michal
11.10.2017
20:10:15
Ну в том запросе выше приведение типов нужно в другом месте. number in (select toUInt64(api_key_id) from store where api_key_id = 23)

sha-bang
11.10.2017
20:12:18
papa show create table store говорит api_key_id UInt32 DEFAULT CAST(0 AS UInt32)

Michal и @orantius спасибо!!! получилось я добавил еще и в селект select toUInt64(api_key_id)

Иван
11.10.2017
20:16:18
Гайз, есть идеи, как сделать group by с попарной функцией? Например group by levenshtein_distance(first_name1, first_name2)<2? Джойн таблицы с собой не влезает в память

Google
papa
11.10.2017
20:20:57
сделайте джойн половины таблицы

думаю что левенштейн тут не виноват, можно поменять условие на group by first_name1 = first_name2

Иван
11.10.2017
20:25:46
Расстояние не меньше 1, конечно, опечатка Меньше двух, например

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

Maxim
11.10.2017
22:28:22
К Tableau, к сожалению, не понятно как подключаться. Единственный вариант - это или допиливать ODBC драйвер, или писать WebConnector. WebConnector, насколько мне известно, не умеет в live mode, только в extract.

Alexey
11.10.2017
23:00:00
Maxim
11.10.2017
23:04:14
Ого!

Пошёл искать сообщения выше

Спасибо

Alexey
12.10.2017
01:11:54
Скопировал кусок инструкции: https://gist.github.com/alexey-milovidov/b42380a845d96aaa6e5426c142602277

Павел Максимов
12.10.2017
06:35:24
Подскажите, как переименовать столбцы, в справке не нашел

Рулон
12.10.2017
06:44:23
оно?

https://clickhouse.yandex/docs/ru/query_language/queries.html#rename

Andrey
12.10.2017
06:45:28
https://clickhouse.yandex/docs/ru/query_language/queries.html#rename
это про таблицы, не про столбцы

Михаил
12.10.2017
07:56:31
Подскажите пожалуйста, У меня есть: таблица1 движок MergeTree, 9 милиардов строк, 160GB - неагрегированные данные таблица2 движок SummingMergeTree, 6 милиардов строк, 64GB - теже данные, но по агрегированные по первичному ключу сериями по 5 минут Но почему-то SELECT'ы из таблицы1 на 10-20% быстрее, чем из таблицы2. Кто-нибудь работает с движком SummingMergeTree, сталкивался с подобным? И еще я не могу найти объяснение, почему после агрегации по 5 мин количество строк сократилось на 30%, а занимаемое место а ж на 60%. Из доп данных могу сказать, что в таблице 32 колонки, из которых 29 - первичный ключ.

Vladimir
12.10.2017
08:18:21
Михаил про место, мне кажется, сжатие стало просто эффективнее

Roman
12.10.2017
08:50:58
Ребят, подскажите пожалуйста в чем прикол такой реакции на вьюху: :) CREATE TABLE test (s String, d Date) ENGINE = MergeTree(d, s, 8192) Ok. :) insert into test select 's', toDate('2017-01-01') Ok. :) create view test_view as select s_s AS s_s_s from (select s AS s_s from default.test) Ok. :) insert into test select 's', toDate('2017-01-01') Received exception from server: Code: 10. DB::Exception: Received from localhost:9000, 10.31.143.240. DB::Exception: Not found column s_s in block. There are only columns: s, d. Версия 1:1:54245

Alexander
12.10.2017
08:54:22
думаю, что как и в mysql, view не поддежживают subqueries

Alex
12.10.2017
09:10:32
ПАрни, а можно использовать такую схему: Есть шардирование. Возьмем 1 шард. Можно ли сделать сервер на запись скажем на амазоне, и сделать репликацию на сервер скажем в хетцнер. в разных датацентрах то есть

то есть на запись это типа мастер - амазон, слейв на хетцнер

Google
Alex
12.10.2017
09:11:14
для чтения

Amelia
12.10.2017
09:13:39
Ребят, туплю, не могу найти: как зафикисровтаь количество знаков после запятой для Float64 ?

Konstantin
12.10.2017
09:16:14
Пропустил предыдущие сообщения, если они были. Мы как раз анонсировали работу ClickHouse с Tableau. Работает с Tableau под Windows.
Алексей, а еще BI-системы рассматриваете для взаимодействия? Если да, то какие в ближайших планах?

Roman
12.10.2017
09:16:33
думаю, что как и в mysql, view не поддежживают subqueries
Да, похоже на то, было бы круто конечно, чтобы при создании view появлялась соответствующая ошибка. А не падала загрузка в исходную таблицу.

Vladimir
12.10.2017
09:39:00
Привет всем! Подскажите как можно результат вывода FORMAT JSON вернуть в select. примерно так select s from (select .... FORMAT JSON) as s;

Aliaksandr
12.10.2017
10:35:50
FYI, добавили поддержку tabix в chproxy ( https://github.com/Vertamedia/chproxy ) . Теперь не нужно устанавливать readonly=2 для юзера, чтобы можно было работать с ним через tabix. Нового бинарника пока нет, поэтому используйте go get -u github.com/Vertamedia/chproxy .

Рулон
12.10.2017
10:40:20
У меня табикс так тормозит, когда в хроме работаю ) select и жду )))

Aleksey
12.10.2017
11:00:13
Привет! Подскажите, пожалуйста, где можно посмотреть статистику, которая используется для load_balancing? Под нагрузкой запросы в distributed отправляются на реплики, не можем понять почему. Используем перекрестную репликацию и для нас это не очень выгодно. load_balancing стоит в in_order

Roman
12.10.2017
11:04:01
Добрый день. Можно каким-либо образом развернуть массив массивов как несколько (или аналог union) arrayJoin, то есть из [[1,[1,2],[2,[3,4]] или аналогичной структуры хочется получить 1 1 1 2 2 3 2 4 Не используя Dictionary :)

Mariya
12.10.2017
11:11:27
Как-то так можно (только структуру нужно немного изменить, так как в массиве должны быть элементы одного типа) SELECT first_elem, arrayJoin(elems) AS sec_elem FROM ( SELECT b[1][1] AS first_elem, b[2] AS elems FROM ( SELECT arrayJoin(a) AS b FROM ( SELECT [[[1], [1, 2]], [[2], [3, 4]]] AS a ) ) ) ┌─first_elem─┬─sec_elem─┐ │ 1 │ 1 │ │ 1 │ 2 │ │ 2 │ 3 │ │ 2 │ 4 │ └────────────┴──────────┘

Roman
12.10.2017
11:16:58
О спасибо. Короче это будет так: SELECT b[1][1] AS first_elem, arrayJoin(b[2]) AS elems FROM ( SELECT arrayJoin([[[1], [1, 2]], [[2], [3, 4]]]) AS b )

Roman
12.10.2017
11:19:34
Недавно набросали вот такую штуку, чтобы лить данные в clickhouse через akka-stream: https://github.com/findify/clickhouse-akka-stream

Roman
12.10.2017
11:24:39
О спасибо. Короче это будет так: SELECT b[1][1] AS first_elem, arrayJoin(b[2]) AS elems FROM ( SELECT arrayJoin([[[1], [1, 2]], [[2], [3, 4]]]) AS b )
Теоретический вопрос. Почему первый элемент в каждом из массивов должен быть массивом и не может быть интом?

papa
12.10.2017
11:25:06
потому что тип у всех элементов массива одинаковый.

Oleh
12.10.2017
12:46:00
подскажите пожалуйста, делаю ANY LEFT JOIN, в первой подзапросе нет данных - во втором есть, результат JOIN - пусто. Как сделать так чтобы был результат из любого подзапроса?

http://take.ms/S0C8h

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