
f1yegor
01.12.2016
18:57:40
insert into temp select * from typed_events where date > '2016-11-20'
хотя если считаются разжатые данные, то может столько и будет, т.е. сжатие ~7-8 раз

papa
01.12.2016
19:04:06
а count() сколько, с фильтром и без фильтра?

f1yegor
01.12.2016
19:05:15
с фильтром ~200млн, всего ~900млн

Google

papa
01.12.2016
19:05:43
значит читает с использованием фильтра, а байты китайские.

f1yegor
01.12.2016
19:07:15
я верю что все данные - asci

Юрий
01.12.2016
21:14:51
при большой нагрузке CPU usage 300% максимум.
как заюзать больше ядер?

Виктор
01.12.2016
21:18:49
В диск упирается наверное

Maksim
02.12.2016
04:54:49

Виктор
02.12.2016
07:05:23
max_threads можно увеличить
Какой движок таблицы?

Maksim
02.12.2016
07:05:41
MergedTree

Виктор
02.12.2016
07:05:59
io по нулям по данным чего?
Ну и что за запрос

Maksim
02.12.2016
07:06:07
top, htop
куча запросов в большей массе - select

Виктор
02.12.2016
07:07:34
Ну это понятно. Какой паттерн запроса

Google

Виктор
02.12.2016
07:07:58
И io лучше по iotop, я вообще не припомню чтобы top давал in
Io

Maksim
02.12.2016
07:10:42
iotop тоже нули показывает, write на уровне 100-200K/s

Вася
02.12.2016
08:18:02
Привет. Подскажите пожалуйста, умеет ли кликхаус делать cumulative sum? То есть допустим есть табличка со строками (1,2,3) а хочется получить (1, 3, 6). На каком-нибудь MS SQL я бы сделал джойн таблички с самой собой по t1.id >= t2.id и просуммировал. Но CH так не умеет.

Darafei
02.12.2016
08:27:34
window functions!

Виктор
02.12.2016
08:31:11
Не умеет пока что

Vladislav
02.12.2016
08:31:27
но оконные функции это не отменяет...

Вася
02.12.2016
08:35:34
Понял. Спасибо. Жаль.

Виктор
02.12.2016
08:38:39
Найдите таск на гитхабе и поставьте лайк, например

Mariya
02.12.2016
08:43:56
В принципе, в CH тоже можно посчитать cumulative sum - не очень красиво, но вроде работает
CREATE TABLE test ENGINE = Log AS SELECT arrayJoin([1, 2, 3]) as value
SELECT
value1 as value,
sum(value2) as cumsum
FROM
(SELECT
value as value1,
1 as fake
FROM test
)
ALL INNER JOIN
(SELECT
value as value2,
1 as fake
FROM test
)
USING fake
WHERE value1 >= value2
GROUP BY value1

Vladimir
02.12.2016
10:07:24
а есть какой-нибудь способ ускорить чтение данных? Тестирую опять же на графитной нагрузке
делаю запрос типа:
SELECT Path, Time, Value, Timestamp FROM graphite WHERE (Path IN ({74 метрики})) AND ((Date >='2016-12-02' AND Date <= '2016-12-02' AND Time >= 1480650830 AND Time <= 1480672430)) FORMAT RowBinary
и аналогичный в графит
графит отвечает за 70мс
кликхаус за 120

Igor
02.12.2016
10:09:42
а че если фильтр по Date в WHERE перенести в самое начало? Какие индексы стоят?

Vladimir
02.12.2016
10:10:08
CREATE TABLE default.graphite ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32) ENGINE = Distributed(graphite, 'default', 'graphite_local', sipHash64(Path))
CREATE TABLE default.graphite_local ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32) ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup')

Igor
02.12.2016
10:10:21
или Path IN в PREWHERE запихнуть (но здесь я не уверен, могу фигню сказать, до сих пор не знаю, как он работает, блин)

Dmitry
02.12.2016
10:11:06
Лучше всё условие в prewere

Google

Vladimir
02.12.2016
10:11:10
в смысле становится вместо 120 - 110
можно пример?

Igor
02.12.2016
10:11:32
да вместо WHERE пишешь PREWHERE и все

Vladimir
02.12.2016
10:11:51
хм, да, так веселее
да, теперь одинаково стало )
интересно, а можно еще лучше?

Igor
02.12.2016
10:12:53
date = '2016-12-02'?

Vladislav
02.12.2016
10:13:34
а почему в Time прописан Timestamp и для чего тогда date?

Igor
02.12.2016
10:13:50
Date для индекса, ибо это MergeTree все-таки

Vladislav
02.12.2016
10:14:12
ппц кастыли

Igor
02.12.2016
10:15:00
а timestamp видимо еще какое-то время из себя представляет

Vladimir
02.12.2016
10:15:02
я за сегодня спрашивал
там нет разницы <= AND >=
или просто =

Igor
02.12.2016
10:15:28
ок(

Vladimir
02.12.2016
10:15:41
Time - свойство данных

Google

Dmitry
02.12.2016
10:16:02
А date, надо думать, оно вообще не хранит

Vladimir
02.12.2016
10:16:07
@SLASH_CyberPunk потому что в графите нужно их уметь обновлять в прошлое, есть еще версия.

Dmitry
02.12.2016
10:16:12
ибо это - метаданные

Vladimir
02.12.2016
10:16:21
а Time это таймстамп который пришел вместе с чиселкой

Vladislav
02.12.2016
10:17:53
я все равно не понял
по условию вижу, что они равнозначны, только типом данных отличаются...
то что дата нужна для индекса - это я понял
получается, если гоняешь данные со временем, то извращайся такой схемой, хотя более логично было бы что-то подобие trunc делать

Dmitry
02.12.2016
10:19:50
Не для индекса. Для партиционирования

Vladislav
02.12.2016
10:20:10
в данном контексте не суть важно

Alexey
02.12.2016
12:36:41

Konstantin
02.12.2016
13:45:43
Привет. Подскажите как можно импортировать данные таблицу с движком MergeTree если отсутствует столбец с датой? (есть только DateTime)

Vladislav
02.12.2016
13:48:00
Сделать еще столбец с датой

Vladimir
02.12.2016
13:49:11

Konstantin
02.12.2016
13:49:51
мм.... пробовал сделать поле date DEFAULT toDate(timestamp), а как тогда вставить в таблицу CSV с меньшим количеством столбцов?

Vladislav
02.12.2016
13:50:51
Сделать свой ETL наверно
Либо лепить через временные

Igor
02.12.2016
13:58:39

Konstantin
02.12.2016
14:00:28

Google

Igor
02.12.2016
14:00:58
В статье описывал
https://habrahabr.ru/company/smi2/blog/314558/

Konstantin
02.12.2016
14:01:35
понял, сейчас перечитаю внимательней, спасибо =)

Igor
02.12.2016
14:02:04
А для консоли INSERT INTO test (col,col2) FORMAT

Vladislav
02.12.2016
14:21:16
Так если при импорте запрос, прям в запросе и сделайте колонку
INSERT INTO test (col,trunk(col2),col2) FORMAT
Или транк в кх не завезли? ?

Виктор
02.12.2016
14:33:57
trunc это функция из oracle, с чего бы ей быть в clickhouse
Для этого есть toDate

Konstantin
02.12.2016
14:45:32

Vladislav
02.12.2016
14:55:11

Slach
04.12.2016
08:28:19
а имена типов а-ля String, Int (строго с большой буквы) это специально так задумано? или случайно получилось? ;)

Alexey
04.12.2016
17:29:54
Так изначально задумано.
Скорее всего, мы сделаем также алиасы для типов из SQL (типа varchar), имена которых будут не регистрозависимыми. Но при этом придётся сохранить некоторые технические отличия в реализации (пример: отсутствие проверки на переполнение для int-ов).

nikoinlove
04.12.2016
17:33:58
хорошо не Stroka

Виктор
04.12.2016
18:09:23
Трололо :)
В коде кликхауса нет Stroka

Igor
04.12.2016
18:10:01
и мата нету :(