@clickhouse_ru

Страница 496 из 723
antuan
13.04.2018
10:00:37
где-то в этом чате что-то такое уже срашивали, но я чет не осилил найти

Alexey
13.04.2018
10:14:03
select * from db.table where id % (случайное число) = 0 limit 100000

Алексей
13.04.2018
10:14:30
коллеги, добрый день! подскажите, кто знает/сталкивался: 1. есть таблица MergeTree 2. есть MATERIALIZED VIEW от неё SummingMergeTree при этом периодически наблюдается, что значения в суммируемых полях MV отличаются от сумм по полям таблицы с учётом группировок отчего подобное может происходить? версия 1.1.54304

Alexey
13.04.2018
10:15:32
Есть задача - сделать дамп случайных данных из рабочей таблицы. Как это лучше всего делать? Обычный способ select * from table where rand() < 0.1 работать будет, я так понимаю, так себе
select * from db.table where id % (случайное число) = 0 limit 100000 случайное число = select number from (select number from system.numbers limit 1000) order by rand() limit 1

Google
antuan
13.04.2018
10:21:23
Нету айди :(

Так бы да

Было б попроще

Алексей
13.04.2018
10:24:45
эммм... а rand() чего отдаёт? вроде как UInt32 https://clickhouse.yandex/docs/ru/functions/random_functions

select number from (select number from system.numbers limit 100) where (rand() / 4294967295) < 0.1;

?
13.04.2018
10:27:58
ORDER BY cityHash64(rand()) LIMIT 100

antuan
13.04.2018
10:28:52
на 11ккк строк памяти, боюсь, не хватит)

SELECT * FROM traffic_stats ORDER BY cityHash64(rand()) ASC LIMIT 100 Ok. Query was cancelled. 0 rows in set. Elapsed: 7.004 sec. Processed 270.06 million rows, 64.40 GB (38.56 million rows/s., 9.19 GB/s.)

papa
13.04.2018
10:32:18
sample 0.001 ?

antuan
13.04.2018
10:32:53
нет выражения для семплирования, без него же не работает вроде?

угу, не работает

papa
13.04.2018
10:33:35
да, без него не работает

Google
antuan
13.04.2018
10:35:22
ооо, так уже лучше, спасибо SELECT count() FROM traffic_stats WHERE (rand() / 4294967295) < 0.00001 ┌─count()─┐ │ 111618 │ └─────────┘

а в чем фишка? что-то связанное со взаимодействием флоата и инта?

а всё, догнал

:)

спасибо

Алексей
13.04.2018
10:43:27
:О)

Alexey
13.04.2018
10:43:53
??

Nik
13.04.2018
10:45:38
день добрый, после обновления с 54337 до 54342 и выше сломались логи ( больше не пишутся в stdout и лог файлы), проблема наблюдается только при запуске в kubernetes (docker version - 17.03), все версии младше 54342 работают нормально. запускается через bash /entrypoint.sh - образ из докерхаба с кастомным entrypoint. Есть идеи куда посмотреть?

Алексей
13.04.2018
10:49:23
да, в MV данных меньше льём прилично если не успевает — то как с этим бороться?

Andrey
13.04.2018
10:51:15
да, в MV данных меньше льём прилично если не успевает — то как с этим бороться?
для теста, попробуйте остановить наливку и подождать завершения всех мержей. Ну просто чтоб точно понимать оно это или нет. Поскольку я просто предположил.

Алексей
13.04.2018
10:51:49
хотя... 1М в час записей

разницу наблюдаю ещё за март, так что все мержи давно бы должны пройти уже

будем копаться

Andrey
13.04.2018
10:53:58
тогда нужно провалидировать ключи. Не помню в деталях, но там суть в том что если не верно ключи указаны, суммирование работает немного не так как ожидается. Сейчас попробую найти письмо, я когда то писал с подобной проблемой.

Alexander
13.04.2018
11:04:40
Добрый день, может кто-нибудь подробней рассказать, когда лучше пользоваться PREWHERE, а когда WHERE Судя по документации скорость запроса станет только лучше, если пользоваться PREWHERE

Kirill
13.04.2018
11:07:19
и когда остальные условия не откидывают большую часть данных

Рулон
13.04.2018
11:09:31
Друзья , подскажите куда копать?

Google
Рулон
13.04.2018
11:09:53
Clickhouse-client --host localhost работает

clickhouse-client -host Ip этого сервера -- refused

Alexander
13.04.2018
11:10:43
То есть сначала в PREWHERE указываем колонки, по которым нет индекса, а в WHERE те, которые входят в PK. или же можно все сразу указать в PREWHERE, эффект будет тот же?

Рулон
13.04.2018
11:10:46
порты вроде открыты (8123, 9000,9009)

Alexey
13.04.2018
11:11:16
Друзья , подскажите куда копать?
вам поможет /etc/hosts и netstat -nlpd

prll
13.04.2018
11:11:39
<listen_host>::</listen_host> ?

Alexey
13.04.2018
11:11:49
clickhouse-client -host Ip этого сервера -- refused
По умолчанию слушает только lo, видимо у вас при -host ломится уже не туда

Ребят, всем привет! Похоже я обнаружил issue в HTTP интерфейсе, а именно: 1) Пишу поток данных в HTTP интерфейс подобным образом: 'INSERT INTO table FORMAT RowBinary <binary data>' 2) Если так совпадает, что в <binary data> первый байт = 0x20 (пробел), CH не получается прочитать пачку данных в этом запросе (видимо скипает лишнего) 3) И возвращает Code: 33, e.displayText() = DB::Exception: Cannot read all data, e.what() = DB::Exception version 1.1.54370 Это как-то можно обойти или создавать issue на github'e (поиском по чему-то подобному не нашел)? Фикс видится простым (я надеюсь). Мне он мешает, поэтому скорее всего сделаю себе патч, могу позже сделать и pull request.

Kirill
13.04.2018
11:16:18
То есть сначала в PREWHERE указываем колонки, по которым нет индекса, а в WHERE те, которые входят в PK. или же можно все сразу указать в PREWHERE, эффект будет тот же?
В этом случае эффект быстрее будет если все в WHERE пихнуть, КХ сам пытается соптимизировать и закинуть колонки в PREWHERE. Вообще нужно пробовать на ваших данных и запросе, самый большой эффект когда нет в запросе индексных колонок и все пихаем в PREWHERE

Alexander
13.04.2018
11:18:06
Ок Спасибо

Рулон
13.04.2018
11:19:07
<listen_host>::</listen_host> ?
это в конфиге кликхауса?

prll
13.04.2018
11:19:19
да

Nik
13.04.2018
11:30:58
за уровнем жизни ?
без гражданства то

Nikita
13.04.2018
11:31:21
без гражданства то
в чем проблема?

Алексей
13.04.2018
11:37:48
То есть сначала в PREWHERE указываем колонки, по которым нет индекса, а в WHERE те, которые входят в PK. или же можно все сразу указать в PREWHERE, эффект будет тот же?
в PREWHERE имеет смысл заносить условие по неиндексной колонке, если размер колонки не большой (инт, дата и т.п.), при этом это условие даст хорошую фильтрацию данных в этом случае КХ "быстро" пробежится по этой колонке, оставив для дальнейшего рассмотрения лишь отфильтрованное, а дальше уже будет разбираться с индексами из WHERE

Жека
13.04.2018
13:01:37
Можно ли джоинить по двум параметрам?

papa
13.04.2018
13:02:16
да

Жека
13.04.2018
13:11:53
как?

Kirill
13.04.2018
13:14:42
как?
USING (a, b)

Denis
13.04.2018
13:15:16
select a,b,c,d from (select 1 a, 2 b, 3 c) all left join (select 1 a, 2 b, 4 d) using (a,b)

Google
Жека
13.04.2018
13:16:26
Спасибо

Denis
13.04.2018
13:18:48
и "по выражению" select a,b,c,x,d from (select 1 a, 2 b, -5<0 x, 3 c) all left join (select 1 a, 2 b, -55<0 x,4 d) using (a,b,x)

Dmitry
13.04.2018
13:38:28
добрый день, сейчас изучаю кликхаус для нового проекта, подскажите - для mergetree нету опции автоинкрементируемого поля?

Kirill
13.04.2018
13:40:28
Коллеги, добрый день! Пытаюсь создать таблицу в CH получаю такую ошибку: Existing table metadata in ZooKeeper differs in primary key. Stored in ZooKeeper: event_date, cityHash64(event_id), local: time, cityHash64(event_id) раньше такой ключ был, но таблицу я удалил после этого, почему не удалились записи из zk?

их теперь надо вручную удалить?

а я кажется понял... удалил таблицу не со всех реплик

забыл ON CLUSTER

Nikita
13.04.2018
13:55:03
@kshvakov я тут проблему внезапную обнаружил с голанг драйвером. Ошибка в конвертации time.Time в toDate/toDateTime. helpers.go:127 В коде это так: у меня дата — начало месяца 2015-03-01 00:00:00, поле типа DateTime. Но драйвер конвертит эту дату в toDate(кол-во дней) и выборка в итоге некорректная из-за этого. Написал пока воркароунд — +1 наносекунда. Issue на гитхабе вроде по этому поводу нет, я напишу, или может сам придумаю как пофиксить сразу с PR.

Aleksandr
13.04.2018
14:12:19
Здравствуйте. Подскажите пожалуйста, как можно посмотреть какие движки поддерживает кликхауз который уже установлен? Интересует движок MySQL , не уверен что версия которая сейчас установлена, поддерживает этот тип движка. Спасибо.

Aleksandr
13.04.2018
14:27:21
в целом да, буду тогда пробовать

и еще вопрос по поводу MySQL движка, какие права нужны пользователю для правильной работы? или хватит SELECT привилегии?

Александр
13.04.2018
15:06:41
У меня тут веселая история с КХ :)

2018.04.13 18:06:05.903434 [ 15 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete

Вот лог заваливает вот такими строками и запрос может висеть несколько минут

В таблице сего 3 строчки

Версия 54370. Причем на 54343 этот запрос отрабатывает куда шустрей.

Google
Alexey
13.04.2018
15:15:48
поканьте таблицу и запрос, интересно же :)

Daniel
13.04.2018
15:16:57
У меня тут веселая история с КХ :)
Поставьте логгер в Warning, зачем вам Tracę?

Александр
13.04.2018
15:17:27
Поставьте логгер в Warning, зачем вам Tracę?
Дак я его спецом включил, что бы понять че происходит ) Почему запрос висит

поканьте таблицу и запрос, интересно же :)
CREATE TABLE test.video_views ( entityIri String, courseId UInt64, learnerId UInt64, actorId UInt64, duration UInt16, fullWatched UInt8, fullWatchedDate DateTime, fullWatchedDuration UInt16, fullWatchedTime UInt16, fullWatchedViews UInt16, `views.viewId` Array(String), `views.startedAt` Array(DateTime), `views.endedAt` Array(DateTime), `views.viewDuration` Array(UInt16), `views.watchedPart` Array(Float32), `views.fullWatched` Array(UInt8), `views.progress` Array(Float32), `views.reject` Array(UInt8), `views.viewNumber` Array(UInt16), `views.repeatingView` Array(UInt8), `views.ranges` Array(String), version DateTime ) ENGINE = ReplacingMergeTree(version) PARTITION BY entityIri ORDER BY (learnerId, entityIri) SETTINGS index_granularity = 8192

Таблица

Запрос SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count`, `overall-watchers-count`, `overall-full-watched-learners-count`, `views-count`, `time-before-full-watched-average`, if (isNaN((`overall-full-watched-learners-count`/`overall-watchers-count`) * 100), 0, (`overall-full-watched-learners-count`/`overall-watchers-count`) * 100) as `overall-watched-part`, if (isNaN((`full-watched-learners-count`/`watchers-count` * 100)), 0, (`full-watched-learners-count`/`watchers-count` * 100)) as `full-watched-part`, if (isNaN((`rejects-count`/`views-count` * 100)), 0, (`rejects-count`/`views-count` * 100)) as `rejects-part` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count`, `overall-watchers-count`, `overall-full-watched-learners-count`, `views-count`, `time-before-full-watched-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count`, `overall-watchers-count`, `overall-full-watched-learners-count`, `views-count` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count`, `overall-watchers-count`, `overall-full-watched-learners-count` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count`, `overall-watchers-count` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration`, `full-watched-learners-count` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average`, `duration` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average`, `views-count-before-full-watched-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count`, `progress-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average`, `rejects-count` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average`, `watched-part-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average`, `repeating-views-count-average`, `views-duration-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`,

`reject-views-duration-average`, `repeating-views-count-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average`, `reject-views-duration-average` FROM (SELECT `entityIri`, `watchers-count`, `time-repeating-average` FROM (SELECT `entityIri`, `watchers-count` FROM (SELECT `entityIri` FROM `CloM8CwMR2`) ANY LEFT JOIN (SELECT uniq(learnerId) as `watchers-count`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(viewDurationSum) as `time-repeating-average`, `entityIri` FROM (SELECT sum(views.viewDuration) as viewDurationSum, `entityIri`, `learnerId` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `views`.`repeatingView` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `learnerId`, `entityIri`) GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(views.viewDuration) as `reject-views-duration-average`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `views`.`reject` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(viewsCount) as `repeating-views-count-average`, `entityIri` FROM (SELECT count() as viewsCount, `learnerId`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `courseId` = 1 AND `entityIri` IN `CloM8CwMR2` WHERE `views`.`repeatingView` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `learnerId`, `entityIri`) GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(views.viewDuration) as `views-duration-average`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(views.watchedPart) as `watched-part-average`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT count() as `rejects-count`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `views`.`reject` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(progressMax) as `progress-average`, `entityIri` FROM (SELECT max(views.progress) as progressMax, `entityIri`, `learnerId` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `learnerId`, `entityIri`) GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(fullWatchedViews) as `views-count-before-full-watched-average`, `entityIri` FROM `video_views` FINAL PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT any(duration) as `duration`, `entityIri` FROM `video_views` FINAL PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT uniq(learnerId) as `full-watched-learners-count`, `entityIri` FROM `video_views` FINAL PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `fullWatched` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT uniq(learnerId) as `overall-watchers-count`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT uniq(learnerId) as `overall-full-watched-learners-count`,

`entityIri` FROM `video_views` FINAL PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `fullWatched` = 1 AND `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT count() as `views-count`, `entityIri` FROM `video_views` FINAL ARRAY JOIN `views` PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) ANY LEFT JOIN (SELECT avg(fullWatchedTime) as `time-before-full-watched-average`, `entityIri` FROM `video_views` FINAL PREWHERE `entityIri` IN `CloM8CwMR2` AND `courseId` = 1 WHERE `learnerId` IN `tkRpHxGqM1` GROUP BY `entityIri`) USING `entityIri`) FORMAT JSON

Alexey
13.04.2018
15:19:03
?

Александр
13.04.2018
15:19:15
?
Это еще маленький :)

Это из-за того, что можно сделать только один джоин за запрос...приходится городить лестницу из запросов и прокидывать колонки снизу вверх.

Но суть не в этом. Суть в том, что почему то на разных версиях этот запрос отрабатывает по разному. На текущей стабильной он работает капец как долго. Причем он примерно 160 секунд валит в логи вот такую строчку, что я скинул и потом за 1мс выполняет запрос.

prll
13.04.2018
16:01:03
а что такое CloM8CwMR2

и tkRpHxGqM1

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