
Alexey
20.06.2018
10:16:04

Jen
20.06.2018
10:16:41
чтение+запись же

Дима
20.06.2018
10:16:50

Jen
20.06.2018
10:17:24
не проще ли будет партиции скопировать?

Google

Jen
20.06.2018
10:17:34
чем select'ом вставлять
и приатачить их к другой таблице потом

Alexey
20.06.2018
10:18:22
да, так быстрее всегда, селектом проще =)

Дима
20.06.2018
10:18:41
Есть токсичные данные в партициях, приходится фильтровать в селекте малость

Kirill
20.06.2018
10:19:35
Не от хорошей жизни решили перекидывать ?
Но фильтрация по партиции и первичному ключу ?

Алексей
20.06.2018
10:30:28
@proller а есть какой то способ узнать версию сервера в докерном имидже помеченом latest ?
в целом я хочу утащить к себе к приватный регистри и потегировать версией.

prll
20.06.2018
10:46:22
запущенном или нет?

Алексей
20.06.2018
10:46:42
на незапущенном
$ clickhouse-server -v
Unknown option specified: v
$ clickhouse-server --version
Unknown option specified: version

Дмитрий
20.06.2018
11:10:36
Ктонибудь сталкивался с таким? Я выполняю инсерт в distributed таблицу, то данные в таблицах и репликах верные, а во view которые к ним на шарде не плюсуются. Если же я выполню инсерт на прямую в таблицу на шарде, то вьюха отрабатывает, но только та которая находится на нем же, а та которая на реплике не отрабатывает. Как буд-то ттригеры "2 уровня" не отрабатывают. Можно это как-то зафиксить, настройкой какой-то или мой вариант только инсертить в шарды?

Алексей
20.06.2018
11:11:57
коллеги, добрый день!
я правильно понимаю, что функция assumeNotNull эквивалентна ifNull в который подставляется дефолтное значение для соотв. типа данных?

Google

Alexey
20.06.2018
11:13:06

Дмитрий
20.06.2018
11:13:45

Alexey
20.06.2018
11:14:12
с Distributed то же самое кажется, если вьюха будет реплицированная, то куда бы не отправил Distributed данные, они вставятся в местную вьюху, а в другие приедут по репликации
да, так и есть, у меня есть такая схема - демон инсертит в Distributed, и есть реплицированные вьюхи, смотрящие на локальные таблицы
+ Distributed-таблица для вьюхи
чтобы селектить
т.е. условно, есть Distr - Shows, есть локальные Shows_local, создаем реплицированные вьюхи ShowsAggr_local, смотрящие на Shows_local
и ShowsAggr distr-таблица, смотрящая в ShowsAggr_local

Дмитрий
20.06.2018
11:17:53

Alexey
20.06.2018
11:19:57
при такой схеме, все реплики равнозначны, можно писать в Shows в любую, и везде приедут данные

Дмитрий
20.06.2018
11:20:48

Alexey
20.06.2018
11:22:27
а можно пример создания view?
CREATE MATERIALIZED VIEW hits_view
ENGINE = ReplicatedMergeTree(
event_date,
(event_date),
8192
) какие будут первые 2 параметра для ReplicatedMergeTree?
да точно также, как и для таблиц, например ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/StatsDirect_local', '{replica}', day, (pad_url, stat_id, yadirect_cid, day), 8192)
как для Replicated-таблиц делаете, так и для вьюх, только название свое и все

Дмитрий
20.06.2018
11:23:55

Vlad
20.06.2018
11:40:15
Всем привет!
А почему для MergeTree столбец именно тип Date должен быть?
Если я DateTime укажу, то работать же будет...
С точки зрения производительности/корректность есть обоснования?

Николай
20.06.2018
11:59:52
Как удалить внешний словарь из кликхаус? Удаляю конфиг словаря, рестартую кликхаус - он перестает запускаться вообще

Wolf
20.06.2018
12:02:10
посмотрите логи

Николай
20.06.2018
12:06:24
посмотрите логи
Посмотрел, удалил sql файл из /var/lib/... помогло, спасибо)

Рулон
20.06.2018
12:07:11
Салют! Есть поле с типом стринг 0.54 хочу сделать int
Illegal types String and UInt16 of arguments of function multiply.

Google

Konstantin
20.06.2018
12:09:05

Рулон
20.06.2018
12:10:50
0.54 это же float
С float плохо работать надо к int привести а для этого строку надо умножить на 100

Konstantin
20.06.2018
12:12:41

Vladimir
20.06.2018
12:14:38
Господа, а можно как-то выбрать данные из заданной партиции?

Konstantin
20.06.2018
12:15:55

Vladimir
20.06.2018
12:17:53
У меня в system.parts вот такая инфа:
┌─partition─┬─name──────────────────┬───min_date─┬───max_date─┬──────rows─┬─active─┐
│ 201805 │ 201805_88_175_4 │ 0000-00-00 │ 0000-00-00 │ 2621187 │ 1 │
│ 201805 │ 201805_176_231_3 │ 0000-00-00 │ 0000-00-00 │ 3175736 │ 1 │
│ 201805 │ 201805_232_510_3 │ 0000-00-00 │ 0000-00-00 │ 9017253 │ 1 │

Alexey
20.06.2018
12:18:11

Рулон
20.06.2018
12:18:42

Vladimir
20.06.2018
12:19:55
SELECT
min(event_datetime),
max(event_datetime)
FROM logs
WHERE _part = '201806_81310_81310_0'
┌─min(event_datetime)─┬─max(event_datetime)─┐
│ 0000-00-00 00:00:00 │ 0000-00-00 00:00:00 │
└─────────────────────┴─────────────────────┘
что-то ерунда какая-то.
А не, не ерунда. Другие партиции корректно показывает.
select min(event_datetime), max(event_datetime) from logs where _part='201806_54051_79706_25';
SELECT
min(event_datetime),
max(event_datetime)
FROM logs
WHERE _part = '201806_54051_79706_25'
┌─min(event_datetime)─┬─max(event_datetime)─┐
│ 2018-06-18 17:36:01 │ 2018-06-20 13:32:21 │
└─────────────────────┴─────────────────────┘

Alexey
20.06.2018
12:21:04
у вас партиции делятся по дате, а не по event_datetime
значит в этом куске нулевые event_datetime

Konstantin
20.06.2018
12:30:47
Есть два кластера, в двух локациях. В каждой локации по ZK. Кластеры друг друга видят. При попытке выполнить create table XXX on cluster YYY … ReplicatedMergeTree… (из одного кластера в другой кластер) запрос просто подвисает. Как я понимаю проблема в том, что на хостах в локациях прописаны разные ZK. Это как то можно обойти или может это вообще баг?

Vladimir
20.06.2018
12:32:04
А сейчас что не так?
alter table logs drop partition '201806_80056_81079_7';
ALTER TABLE logs
DROP PARTITION '201806_80056_81079_7'
Received exception from server (version 1.1.54385):
Code: 53. DB::Exception: Received from localhost:50003, 127.0.0.1. DB::Exception: Type mismatch in IN or VALUES section. Expected: UInt32. Got: String.

Alexey
20.06.2018
12:32:57
201806_80056_81079_7 - это не партиция
это кусок, part
партиция это 201806

Vladimir
20.06.2018
12:33:37
а part дропнуть можно?

Google

Alexey
20.06.2018
12:34:07
кусок дропнуть нельзя командой, надо сделать detach partition 201806, потом сходить в папку detached этой таблицы, удалить с диска этот кусок 201806_80056_81079_7, и потом attach partition 201806
это все применимо, если у вас стандартное партиционирование по месяцу
а ну да, так и есть

Vladimir
20.06.2018
12:35:32
Вообще, хотелось бы иметь возможность дропать куски.
Из таблицы нужно удалить задублированный файл, а всю партицию пересоздавать не айс.

Alexey
20.06.2018
12:36:56
не сделали такую фичу наверняка из-за фонового слияния кусков, видимо какие-то противопоказания есть

Vladimir
20.06.2018
12:38:12
Ну можно было сделать что-нибудь типа lock/freeze прежде чем давать возможность удалять кусок.
Какие ещё есть варианты удаления данных по критерию кроме как пересоздание партиций?

Alexey
20.06.2018
12:41:16
никаких, но говорят, скоро будет DELETE

Konstantin
20.06.2018
12:41:43
к концу мая обещали

Alexey
20.06.2018
12:42:39

Vladimir
20.06.2018
12:43:34
С этим я уже определился.

Николай
20.06.2018
12:51:06
Подскажите, у меня есть внешний словарь к postgres(postgis), мне надо делать geo-запрос St_within. Это как-то можно сделать в КХ?


Denis
20.06.2018
12:53:04
Если индекс (А, В, С), а селект по условиям на А и С, для поиска по С индекс будет использован?
Будет. Имхо таблица отсортирована по a,b,c, разбита на куски и примерно известно в каких кусках есть эти значения a,b,c.
create table test(a Int64, b Int64, c Int64, d String)
engine=MergeTree partition by tuple() order by (a,b,c);
insert into test select 1, 0, number, toString(number) from numbers(1000000);
insert into test select 2, 2, number, toString(number) from numbers(100);
insert into test select 3, 3, number, toString(number) from numbers(1000000);
select count() from test where a=2 and c=1;
1 rows in set. Elapsed: 0.002 sec.
select count() from test prewhere a=3 and c=1;
1 rows in set. Elapsed: 0.002 sec. Processed 9.44 thousand rows, 151.10 KB (5.03 million rows/s., 80.44 MB/s.)
select count() from test where a=3;
1 rows in set. Elapsed: 0.003 sec. Processed 1.00 million rows, 8.01 MB (378.03 million rows/s., 3.02 GB/s.)
меняем размер куска:
SETTINGS index_granularity = 1024;
select count() from test prewhere a=3 and c=1;
1 rows in set. Elapsed: 0.002 sec. Processed 2.28 thousand rows, 36.42 KB (1.15 million rows/s., 18.43 MB/s.)
и что интересно, можно обратиться к последнему полю
select count() from test prewhere c=1;
1 rows in set. Elapsed: 0.009 sec. Processed 3.30 thousand rows, 26.40 KB (352.25 thousand rows/s., 2.82 MB/s.)


Дмитрий
20.06.2018
13:04:23
да точно также, как и для таблиц, например ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/StatsDirect_local', '{replica}', day, (pad_url, stat_id, yadirect_cid, day), 8192)
Спасибо большое еще раз, проблема с вьюхами решена, однако во воремя проверок, делая инсерты в дистрибьютед таблицу, получается так что срабатывают они 50/50. выполняю инсерт через clickhouse client, не сталкивались с таким?

Kirill
20.06.2018
13:05:02
Да, проще скинуть всё в detached новой таблицы, приатачить, дропнуть сломанную партицию и докачать её правильно
не проще ли будет партиции скопировать?
и приатачить их к другой таблице потом

Alexey
20.06.2018
13:08:17

Google

Дмитрий
20.06.2018
13:09:17

Alexey
20.06.2018
13:10:14

?
20.06.2018
13:49:10

Aleksey
20.06.2018
14:29:55
Привет.
А кто-нибудь знает, как в RowBinary хранится Float64? :)
https://clickhouse.yandex/docs/en/formats/rowbinary/
тут нет примера

Konstantin
20.06.2018
14:36:02

Aleksey
20.06.2018
14:37:23
да КХ даже на 0 ругается)
не говоря уже о более содержательных значениях
Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception

Konstantin
20.06.2018
14:40:15
ну сделайте импорт из КХ в файл и сравните

Aleksey
20.06.2018
14:41:23
А, был не прав. Все сошлось. Вот стоил задать вопрос)

Konstantin
20.06.2018
14:41:58

LeiDruid
20.06.2018
14:42:55
Товарищи, а ЧЯНДТ?
Делаю табличку
) ENGINE = ReplicatedReplacingMergeTree(
'/clickhouse/tables/tbl_201806',
'srv-133',
EVENT_DATE_INDEX,
(VEHICLE_ID, EVENT_DATE),
8192
)
На другом сервере:
) ENGINE = ReplicatedReplacingMergeTree(
'/clickhouse/tables/tbl_201806',
'srv-142',
EVENT_DATE_INDEX,
(VEHICLE_ID, EVENT_DATE),
8192
)
Получаю
Duplicate interserver IO endpoint: DataPartsExchange:/clickhouse/tables/tbl_201806/replicas/srv-142
Пробовал несколько раз. ЗК чистил.

Aleksey
20.06.2018
14:43:21
Да-да, очень полезная на практике методика разработки. Не получается долго решить проблему - напиши ее в публичном чате (и даже не надо читать ответы).

prll
20.06.2018
16:10:16

Алексей
20.06.2018
16:11:56
там толькло
clickhouse clickhouse-clang clickhouse-copier clickhouse-lld clickhouse-report clickhouse-server

Tima
20.06.2018
16:14:38
Попробуйте
clickhouse client -v