
Max
24.06.2018
20:05:33

Vladimir
25.06.2018
05:42:17
Доброе утро
Повторю вопрос.
Если какое-то проперти выставили как параметер в URL (http запрос)
И запрос к распределенной таблице то проталкивается ли этот параметер на все шарды?
Должен по идее но кто знает наверняка?

Michal
25.06.2018
06:03:44

Google

Kirill
25.06.2018
06:43:32

Eugene
25.06.2018
08:02:20
Коллеги, а для версионирования схем КХ что посоветуете? Хотелось бы что-то вроде flyway по функционалу

Гаврилов
25.06.2018
08:09:52
мы flyway используем

Vasilij
25.06.2018
08:14:05
Возможно ли создать новую колонку и заполнить её какими-то данными из настройки DEFAULT (кроме INSERT ... SELECT ...)?
У меня план был такой:
1. Сделать ALTER TABLE t ADD COLUMN new UInt64 DEFAULT (old=0 ? toUInt64(Date) : old)
2. Сделать SELECT new FROM t: как я понял по документации, чтобы колонка new физически заполнилась данными из DEFAULT, надо их спросить
3. Сделать ALTER TABLE t MODIFY COLUMN new UInt64, чтобы убрать DEFAULT
4. Дропнуть старую колонку old
5. Переименовать новую колонку new в old
Но я обломался на шаге 2. После снятия DEFAULT (3) данные оказались пустыми.

M
25.06.2018
08:19:27
Шаг 5, а rename column разве возможен?

Vasilij
25.06.2018
08:20:45
Хм, да. План должен был обломаться ещё на более вдумчивом чтении документации :))

Михаил
25.06.2018
08:49:22
Подскажите, пожалуйста, есть ли в CH функция которая суммирует значение поля c предыдущим значением?
Чтоб упростить данный запрос:
SELECT n,s FROM (SELECT groupArray(number) as n,arrayCumSum(n) as s FROM numbers(10)) ARRAY JOIN n,s

Kirill
25.06.2018
08:50:54

Михаил
25.06.2018
08:52:00
Нужна сумма с предыдущим.
А runningDifference возвращает разницу между значениями с предыдущей строкой

Kirill
25.06.2018
08:52:48
вот её и суммируйте

Aleksey
25.06.2018
08:52:52
Вычесть эту разницу из текущего?
Ну или прибавить

Михаил
25.06.2018
08:54:59
В данном случае функция отобразит только сумму с предыдущим значением, но не по всем пройденным строкам с промежуточным результатом

Google

Vasilij
25.06.2018
08:55:05

Михаил
25.06.2018
08:56:25
runningAccumulate ?
Как ей пользоваться?
Она требует какого то состояния поля, а в документации про нее нету.

Vasilij
25.06.2018
08:56:57
Надо искать тут, по чатику. Ещё сюда поглядеть: https://github.com/yandex/ClickHouse/issues/1469

Михаил
25.06.2018
08:57:41
При запросе выдает ошибку:
SELECT number, runningAccumulate(number) as x FROM numbers(10)
Code: 43, e.displayText() = DB::Exception: Argument for function runningAccumulate must have type AggregateFunction - state of aggregate function.

Kirill
25.06.2018
09:00:09

Михаил
25.06.2018
09:00:46
Благодарю
Нашел, всех благодарю:
SELECT
number,
runningAccumulate(state)
FROM
(
SELECT
number,
sumState(number) AS state
FROM numbers(10)
GROUP BY number
ORDER BY number ASC
)

Vladimir
25.06.2018
09:59:29

Vladimir
25.06.2018
10:17:40
Добрый день. Возникла задача перезалить все данные с новым первичным ключём в ReplicatedMergeTree таблице. Какая последовательность действий будет оптимальной в этом случае?

M
25.06.2018
10:19:25

Vladimir
25.06.2018
10:19:56

M
25.06.2018
10:21:07
тогда после insert select удалять старую, а новой сделать Rename

Michal
25.06.2018
10:21:12
Ну тогда так же, а в конце RENAME table to old_table, new_table to table.

Wolf
25.06.2018
10:21:25

Alexey
25.06.2018
10:21:29

M
25.06.2018
10:22:57
Мы в этом случае делали название таблиц + номер версии.. аля table_v1 и одно и то же название оставляли только у distributed таблицы. А её направляли на нужную версию

Alexey
25.06.2018
10:23:29
когда таблица не в продакшене, делай как тебе удобнее =) insert select и вперед, если большая табла, то хоть в баше: for i in ...; по дню

Vladimir
25.06.2018
10:24:07

Michal
25.06.2018
10:24:36
Вроде как должно работать ON CLUSTER. Но я не пробовал :)

M
25.06.2018
10:24:52
Запросы CREATE, DROP, ATTACH, DETACH, RENAME выполняются на одном сервере и не реплицируются (из доки)

Google

Alexander
25.06.2018
10:27:35
А как тогда можно удобно создать таблицу, например, на 100 нодах?
Или on cluster работает?

Wolf
25.06.2018
10:28:14

Alexey
25.06.2018
10:28:39

Vsevolod
25.06.2018
10:39:42
а что будет с select запросом, если в distributed table несколько нод недоступно?

Alex
25.06.2018
10:41:14

Vsevolod
25.06.2018
10:45:09
реплик никаких нет, просто шардинг

Ruslan
25.06.2018
11:12:29
Всем привет! Такой вопрос - у нас есть набор значений в колонке. Мы строим отчёт, группируем данные в таблицы и по этой колонке делаем avg(x). Возникает такая проблема: допустим в нормальном режиме значения этой колонки врьируются примерно от 100 до 200, т.ч. среднее значение должно быть ~140-160; но, из-за бага в платформе может появится строка где это значение будет равно миллиарду. В таком случае значение avg в отчёте уползает дико вверх, хотя это может быть одна строка из нескольких тысяч. Подскажите, пожалуйста, есть ли вариант функции avg, который как-то "отсекает" такие слишком отличающиеся от среднего значения? Или что-то подобное?

Mariya
25.06.2018
11:14:55

Konstantin
25.06.2018
11:15:47

Ruslan
25.06.2018
11:16:53
вах, @miptgirl, @Sablast, спасибо! ?

Tima
25.06.2018
11:20:40

Alexey
25.06.2018
11:47:11
Выложена презентация с Highload Siberia 2018: https://yandex.github.io/clickhouse-presentations/highload_siberia_2018/

Wolf
25.06.2018
11:55:03
А откуда может взяться такая ошибки при ддл запросе, доступ у всего кластера друг к другу есть, клиент легко подключается к любой реплике
<Error> executeQuery: Code: 159, e.displayText() = DB::Exception: Watching task /clickhouse
/task_queue/ddl/query-0000000011 is executing longer than distributed_ddl_task_timeout (=180) seconds.
кластер два шарда по две реплики , на одном шарде выполнилось а на втором нет, понятно что он не смог достучаться до них, но не понятно почему

Denis
25.06.2018
12:00:37

Max
25.06.2018
12:12:21

Google

Jen
25.06.2018
12:46:02
Сколько строк кх может прожевать в секунду в благоприятных условиях?
На вставку

papa
25.06.2018
12:46:31
на одной машине? шестизначное.

Jen
25.06.2018
12:47:00
Да, на одной, точнее не получиться?
Разнийа между 100к и 999к серьезная :)

Alex
25.06.2018
12:47:50
вот тут есть: https://clickhouse.yandex/docs/ru/introduction/performance/

Jen
25.06.2018
12:48:05
Благодарю

Alex
25.06.2018
12:56:34

Vsevolod
25.06.2018
12:56:56

Michal
25.06.2018
13:08:25
а можно как-то получить состояние агрегатной функции без GROUP BY?

Max
25.06.2018
13:09:16

Vladimir
25.06.2018
13:10:26
...или sumArrayState, если нужно именно состояние

Michal
25.06.2018
13:12:01
т.е. скажем у меня есть поле в котором хранится cnt AggregateFunction(count) могу вытащить значение с помощью countMerge(cnt), но чтобы использовать countMerge мне нужно добавлять к запросу GROUP BY.

papa
25.06.2018
13:14:08
а вы хотите смержить два значения типа AggregateFunction? или вы хотите finalizeAggregation?

Michal
25.06.2018
13:14:18
finalizeAggregation

papa
25.06.2018
13:15:44
это может быть не очевидно из моего комментария, но это название реально существующей функции.

Michal
25.06.2018
13:16:21
Да, я уже понял и как раз проверил. Это то что я искал, спасибо. В доках кстати не находится.

papa
25.06.2018
13:22:32
еще наверное можно arrayReduce('...Merge', [value])

Google

Tima
25.06.2018
13:23:52

Wolf
25.06.2018
13:24:29
А как все таки понять почему ddl запрос выполнился не на всех нодах кластера ? В Логах только инфа что он не прошел на двух нодах из за таймаута .

Michal
25.06.2018
13:26:30

Tima
25.06.2018
13:29:11

Michal
25.06.2018
13:29:21

Max
25.06.2018
13:40:00

Tima
25.06.2018
13:48:53

Kirill
25.06.2018
14:40:47
Подскажите, arrayMap((x, y)-> tuple(x, y), polygon_lat, polygon_lon) Должен же возвращать пригодный для pointInPolygon Array(tuple()) ? Но почему-то при попытке подсунуть его получаю DB::Exception: Argument 2 for function pointInPolygon must be constant array of tuples ?