
Alexey
23.05.2018
09:19:36
Выскочили ошибки в репликации в мониторинге, мониторю селектом из документации. Тупо пересоздал таблицу, данные с другой реплики скачались, ошибки ушли, всем спасибо :)

Дмитрий
23.05.2018
11:11:49
всем привет, у меня тормозит кликхаус))) Посоветуйте, что делать. Если чесно я думал такого не будет т.к. данных у меня не очень много, 0.5 миллиард в месяц. в базе примерно 30 колонок, запросы делается на 10 из них (Uint32, дата, float64). Запросы еденичные выполняются редко. (машинка под кликхаус AMD Ryzen 7 1700X Eight-Core Processor 63 GB). По всем колонкам sum. вот например простой select типа SELECT
SUM(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field),
sum(field)
FROM event
WHERE event_date>=toDate('2018-04-23');
выдает мне вот такой результат
Elapsed: 7.765 sec. Processed 675.90 million rows, 47.31 GB (87.04 million rows/s., 6.09 GB/s.)

Google

Дмитрий
23.05.2018
11:12:45
Это нормально или я делаю что-то не так? Можете посоветовать, что-то кроме горизонтального маштабирования?)

Anton
23.05.2018
11:13:17

Alexey
23.05.2018
11:14:37
там чуть ниже промотать, или CTRL+F "Если этот запрос ничего не возвращает - значит всё хорошо."

Kirill
23.05.2018
11:19:23

Anton
23.05.2018
11:22:19

Дмитрий
23.05.2018
11:25:29
Это нормально, а что вас смущает?
Спасибо за ответ, смущает скорость) Очень нужно быстрее. Видимо больше компьютеров мой вариант? Есть еще возможность агрегировать данные, как вы считает стоит оно того или нет?

Kirill
23.05.2018
11:27:45

Дмитрий
23.05.2018
11:31:42

Kirill
23.05.2018
11:34:01

Alexey
23.05.2018
11:34:55
репликация при этом шла и все было ок

Google

Alexey
23.05.2018
11:35:25
вьюха была мелкая, быстрее было пересоздать ее

Anton
23.05.2018
12:01:48
День добрый, а не планируется ли поддержка битовых операторов, а не отдельных специфичных функций? например & и | как аналог функций bitAnd(A, B), bitOr(A, B). Дело в том, что наша уютная ОРМочка генерирует SQL код с использованием операторов

Kirill
23.05.2018
12:18:49
Здравствуйте! Во всех, найденных мной, гайдах идёт импорт данных из локального csv/tsv. Может ли клик ходить на s3 ?

Kirill
23.05.2018
12:32:32

Kirill
23.05.2018
12:34:53

Sergey
23.05.2018
13:54:33
Добрый день, можете подсказать, как вставить кусок данных в MergeTree если данные относятся к разным месяцам?
Кусок обязательно придется бить на месяца?

Kirill
23.05.2018
13:58:04
Нет, не обязательно

Sergey
23.05.2018
14:00:35
Code: 0, Message: Logical error: part spans more than one month.

Ivan
23.05.2018
14:02:52
max_replica_delay_for_distributed_queries
А как считается это отставание?
По последней записи?

Kirill
23.05.2018
14:03:43

Sergey
23.05.2018
14:03:51
ClickHouse server version 1.1.54380.

Alexey
23.05.2018
14:05:46
как-то вы странно вставляете
покажете запрос? в каком формате?

Kirill
23.05.2018
14:06:48
ClickHouse server version 1.1.54380.
kshvakov :) create table test_logical(date Date, Value String) engine MergeTree partition by date order by date;
CREATE TABLE test_logical
(
date Date,
Value String
)
ENGINE = MergeTree
PARTITION BY date
ORDER BY date
Ok.
0 rows in set. Elapsed: 0.009 sec.
kshvakov :)
kshvakov :) insert into test_logical values ('2018-01-01', 'A'), ('2018-02-02', 'B')
INSERT INTO test_logical VALUES
Ok.
2 rows in set. Elapsed: 0.012 sec.
kshvakov :) select * from test_logical
SELECT *
FROM test_logical
┌───────date─┬─Value─┐
│ 2018-02-02 │ B │
└────────────┴───────┘
┌───────date─┬─Value─┐
│ 2018-01-01 │ A │
└────────────┴───────┘
2 rows in set. Elapsed: 0.006 sec.

Alexey
23.05.2018
14:07:15
может быть в бинарном формате?

M
23.05.2018
14:08:24

Alexey
23.05.2018
14:08:58
и что в одном инсерте нельзя вставить разные месяцы
ерунда, всё вставляется

Kirill
23.05.2018
14:09:42
скорее всего партиция там не по дням, а месяцам
Легко
kshvakov :) create table test_logical(date Date, Value String) engine MergeTree partition by toYYYYMM(date) order by date;
CREATE TABLE test_logical
(
date Date,
Value String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(date)
ORDER BY date
Ok.
0 rows in set. Elapsed: 0.003 sec.
kshvakov :) insert into test_logical values ('2018-01-01', 'A'), ('2018-02-02', 'B')
INSERT INTO test_logical VALUES
Ok.
2 rows in set. Elapsed: 0.007 sec.
kshvakov :) select partition from system.parts where table = 'test_logical' and active
SELECT partition
FROM system.parts
WHERE (table = 'test_logical') AND active
┌─partition─┐
│ 201801 │
│ 201802 │
└───────────┘
2 rows in set. Elapsed: 0.001 sec.

Google

Kirill
23.05.2018
14:10:12
нужен пример для воспроизведения чтоб, если что, можно было пофиксить

Alexey
23.05.2018
14:12:19
такое ощущение, что речь идет про FORMAT Native
кажется, что только тут данные не парсятся построчно

Sergey
23.05.2018
14:26:38
Да, изменил формат и все пошло
Спасибо

Kirill
23.05.2018
14:26:58
@lechie можете пример скинуть чтоб можно было воспроизвести ?

Sergey
23.05.2018
14:28:03
Попробуйте unix timestamp писать в поле date Date

Kirill
23.05.2018
14:32:21

Alexey
23.05.2018
14:41:39
toDate(1527086416) вот так можно вставлять

Sergey
23.05.2018
14:46:12
github.com/mailru/go-clickhouse

Alexey
23.05.2018
14:53:25
так эта ошибка похоже от драйвера, а не от КХ
сам КХ вставляет timestamp в Date, правда получается не очень:
:) insert into test_date values(1527086416)
INSERT INTO test_date VALUES
Ok.
1 rows in set. Elapsed: 0.005 sec.
:) select * from test_date;
SELECT *
FROM test_date
┌───────date─┐
│ 2057-10-31 │
└────────────┘
1 rows in set. Elapsed: 0.480 sec.

Denis
23.05.2018
14:59:06
1527086416 -- это число дней с 1970 года, а не таймштемп.
select toDate (0+365)
┌─toDate(plus(0, 365))─┐
│ 1971-01-01 │
└──────────────────────┘

Sergey
23.05.2018
15:02:13
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/MergeTree/MergeTreeDataWriter.cpp @ 152 строка та самая ошибка
Которая вылетала, похоже

Alexey
23.05.2018
15:07:13

Kirill
23.05.2018
15:08:55
- 404 на https://clickhouse.yandex/docs/ru/docs/ru/operations/settings/settings/#format_csv_delimiter баг или фича ?)
- В релиз 1.1.54381 format_csv_delimiter не включен ?

Vladimir
23.05.2018
15:08:58
Господа, а как мне такой batch одним запросом выполнить?
drop table test_tbl;
CREATE TABLE test_tbl (
a String,
b String,
c String
) ENGINE=Memory;
INSERT INTO test_tbl(a, b, c) FORMAT TSV
a1 b1 c1
a2\ttab b2 c2
a3 b3 c3
INSERT INTO test_tbl(a, b, c) FORMAT TSV
a4 b4 c4
a5\ttab b5 c5
a6 b6 c6

Google

Vladimir
23.05.2018
15:09:19
localhost :)
localhost :) INSERT INTO test_tbl(a, b, c) FORMAT TSV
:-] a1 b1 c1
:-] a2\ttab b2 c2
:-] a3 b3 c3
:-]
:-] INSERT INTO test_tbl(a, b, c) FORMAT TSV
:-] a4 b4 c4
:-] a5\ttab b5 c5
:-] a6 b6 c6
:-]
:-] ;
INSERT INTO test_tbl (a, b, c) FORMAT TSV
Exception on client:
Code: 27. DB::Exception: Cannot parse input: expected \t before: \na4\tb4\tc4\na5\\ttab\tb5\tc5\na6\tb6\tc6\n;: (at row 4)
Row 3:
Column 0, name: a, type: String, parsed text: "a3"
Column 1, name: b, type: String, parsed text: "b3"
Column 2, name: c, type: String, parsed text: "c3"
Row 4:
Column 0, name: a, type: String, parsed text: "INSERT INTO test_tbl(a, b, c) FORMAT TSV"
ERROR: Line feed found where tab is expected. It's like your file has less columns than expected.
And if your file have right number of columns, maybe it have unescaped backslash in value before tab, which cause tab has escaped.

Alexey
23.05.2018
15:10:41

Denis
23.05.2018
15:11:17

Alexey
23.05.2018
15:11:23
c 1970 всего 48 лет прошло, по 365 дней...

Denis
23.05.2018
15:12:07

Dima
23.05.2018
15:12:28
Привет
Подскажите как можно сделать следущее.
Есть таблица вида:
Name|Timestamp |Event
A | 2018-05-01 | 1
A | 2018-06-01| 2
A | 2018-07-02 | 1
A | 2018-07-07| 2
A | 2018-08-01 | 1
B | 2018-05-02 | 1
B | 2018-06-15| 2
Требуется достать растояние между последовательными event 1 и 2 для каждого Name.
В итоге должно выйти:
Name|During
A |30
A |5
B |43

Alexey
23.05.2018
15:12:50

Vladimir
23.05.2018
15:14:08
Скрипт, который консоль клиента копирую, если что.
https://pastebin.com/cUfKy44e

Denis
23.05.2018
15:14:16

Alexey
23.05.2018
15:15:23
я выше писал, что КХ не занимается приведением типов, что в Date можно вставлять только дату, но ошибки не выдает, если вставить timestamp, вот что я имел ввиду
я вас понял!

Vladimir
23.05.2018
15:19:56
А две инструкции друг за другом одним батчем выполнить?
*Два INSERT'а.

Alexey
23.05.2018
15:20:17
нет, по очереди

Denis
23.05.2018
15:22:01

Vladimir
23.05.2018
15:22:44
А если я так хочу?
clickhouse-client < clickhouse.sql
cat clickhouse.sql
drop table test_tbl;
CREATE TABLE test_tbl (
a String,
b String,
c String
) ENGINE=Memory;
INSERT INTO test_tbl(a, b, c) FORMAT TSV
a1 b1 c1
a2\ttab b2 c2
a3 b3 c3
INSERT INTO test_tbl(a, b, c) FORMAT TSV
a4 b4 c4
a5\ttab b5 c5
a6 b6 c6

Alexey
23.05.2018
15:23:12
clickhouse-client -n

Vladimir
23.05.2018
15:24:27
clickhouse-client -n < clickhouse.sql
Code: 62. DB::Exception: Syntax error: failed at position 1 (line 1, col 1): a2\ttab b2 c2

Google

Alexey
23.05.2018
15:25:05
только insert'ы нормально сделайте, зачем терять время и изгаляться, если в values спокойно запихнуть можно

Denis
23.05.2018
15:25:06

Vladimir
23.05.2018
15:25:33
А INSERT'ы с такой же скоростью работать будут?

Alexey
23.05.2018
15:25:50
в этом примере да

Vladimir
23.05.2018
15:26:13
А если batch over 100500 записей?

Alexey
23.05.2018
15:27:00
положите эти батчи в отдельные файлы и вставляйте на здоровье
в формате TSV

Vladimir
23.05.2018
15:27:45
Второй вопрос. JDBC-дрова поддерживают INSERT в TSV-формате?

Alexey
23.05.2018
15:29:00
не юзал, не подскажу
да, поддерживают

Vladimir
23.05.2018
15:34:09
А оно в потоковом режиме как Postgres умеет работать, или надо здоровенную строку подготавливать и её скармливать?

Alexey
23.05.2018
15:34:25
не юзал, не подскажу

Denis
23.05.2018
15:35:11

Kirill
23.05.2018
15:45:10
Nullable(DateTime) так и не парсится (

Vladimir
23.05.2018
15:45:43
То есть, я правильно понимаю, что addbatch может неявно отправлять данные для вставки на сервер?

Alex
23.05.2018
15:49:29