
Denis
10.07.2018
08:27:41
потому что он String (не наллабл) распарсил как эмпти, а потом строку из тучи запятых выдал

Daniel
10.07.2018
08:39:11

Denis
10.07.2018
08:40:08
так начала не видно. там колонка Nullable(DateTime), в которую пришёл null? а если поставить кавычки двойные?

Michal
10.07.2018
08:45:46
Всем привет. Подскажите пожалуйста. У меня есть данные в json по типу
{"number":1,"string":1}
{"string":9,"number":2}.
Мне нужно их разложить в следующем виде:
number,1
string,1
string,9
number,2
Искал в доке функции для работы с json или регулярками, но ничего подходящего не нашел.
Встроенных (и быстрых) способов итерации по ключам JSON в кликхаус, увы, нет. Похожую задачу решал примерно регулярными выражениями, примерно так:
WITH
extractAll(json_field, '[{,]"([^"]*)":') as json_keys,
extractAll(json_field, ':(".*?")[,}]') as json_values
SELECT ...Но по понятным причинам с регулярными выражениями это все мало стабильно, и только один очень жестко определенный формат JSON может прочитать, притом довольно медленно.

Google

Артем
10.07.2018
08:45:57

Tima
10.07.2018
08:49:33
Запустил команду удаления на реплицированой таблице, в system.mutations появилась команда, parts_to_do упало до 1568 и дальше не идёт. В логе КХ ничего криминального нет. Что может быть не так? Где-то ещё можно посмотреть что с операцией удаления?

Артем
10.07.2018
08:59:47
Простой пример при котором вставка пустой даты не работает, может кто ни будуть подсказать почему так происходит
CREATE TABLE apps (
date Date,
name Nullable(String),
birthday DateTime
) ENGINE MergeTree PARTITION BY (date) ORDER BY (date);
INSERT INTO apps FORMAT CSV 2018-01-01,,;

Denis
10.07.2018
09:04:26

Артем
10.07.2018
09:05:42

Denis
10.07.2018
09:06:07
так в таблице не задано дефолтное
и тут в csv строке именно null. некоторое время назад проверял, и кликхаус не заменял null на дефолтное
INSERT INTO apps FORMAT CSV 2018-01-01,; а вот так сработает?

Артем
10.07.2018
09:07:18

Denis
10.07.2018
09:08:11
думаю, проблема именно с парсингом, а не вставкой в таблицу. да, таблица поддерживает. но парсинг строится на описании таблицы и работает дальше по нему.

Артем
10.07.2018
09:08:36

Google

Артем
10.07.2018
09:09:08
и это рабочая схема, но мне не подходит

Oleh
10.07.2018
09:57:59
Всем привет. Подскажите, а можно как-то ускорить запрос OPTIMIZE TABLE table_name PARTITION $date FINAL
Потому-что когда происходит эта операция постоянно валятся <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer, e.what() = Connection reset by peer

Андрей
10.07.2018
10:55:26
Коллеги, добрый день! Есть кластер из 3 шардов по 2 реплики + еще одна нода, на которой есть распределенная таблица смотрящая на эти шарды. Подскажите имеет ли смысл настраивать zookeeper на машине с Distributed таблицей? Кроме нее ничего на ноде нет. И как настроить репликацию на уровне шардов,а не только реплик?

Alexey
10.07.2018
11:03:12


Vsevolod
10.07.2018
11:06:36
а снимите с ручника: нужно показать значения вида count(x where some codition), count(y where another condition) - как лучше это сделать? union all делает не то, что я хочу

Aliaksandr
10.07.2018
11:07:26

Vsevolod
10.07.2018
11:13:33
нашел, спасибо

Oleg
10.07.2018
11:42:37
Привет! Пытаюсь вставить данные в TSV-формате в ReplicatedMergeTree через консольный клиент, получаю отлуп
Code: 32. DB::Exception: Attempt to read after eof
В логах ошибок ничего нет, в обычном логе есть запись о том, что запрос таки был. Сервер версии 1.1.54327, клиент 1.1.54390
В файле с данными вроде ничего криминального нет. При попытке вставить кусочек данных, откусив его через например head, одни и те же данные то вставляются, а то нет с аналогичной ошибкой. В чем может быть косяк?

Alex
10.07.2018
12:06:23

Андрей
10.07.2018
12:14:46

Tima
10.07.2018
12:27:19

Артем
10.07.2018
12:44:17
коллеги а как то можно дать доступ только к одной БД в КХ ?

Stanislav
10.07.2018
12:49:30
<allow_databases>
<database>telegraf</database>
</allow_databases>
Правда, system всё равно доступна, как и список БД.

LeiDruid
10.07.2018
12:58:52
ПОдскажите, обязательно ли в запросе insert into ... select ... результат select должен поместиться в memory limit ?

Артем
10.07.2018
12:59:08

LeiDruid
10.07.2018
13:01:31

Google

Michal
10.07.2018
13:04:47

Oleg
10.07.2018
13:15:07

Константин
10.07.2018
13:20:49
Добрый день! Такой вопрос, можно ли внутри кластера подключать таблицы между нодами, если они не реплицируемые?
допустим, у меня есть нода-Б на ней уникальная таблица, я хочу ее использовать на ноде А

Wolf
10.07.2018
13:21:46
ну скопируйте данные ее , но вообще это что то странное

Константин
10.07.2018
13:22:10
не-не
копировать нет
надо иметь к ней доступ

Michal
10.07.2018
13:25:29

Константин
10.07.2018
13:31:02

Michal
10.07.2018
13:34:54
ПОдскажите, обязательно ли в запросе insert into ... select ... результат select должен поместиться в memory limit ?
Ну ограничение на память касается любого селекта, иначе получите Exception. Т.е. если например будете делать какую-то сложную агрегацию и память закончится так и не успев подготовить результат - то получите исключение и ничего не вставится. Но если это относительно простой селект (типа простая фильтрация исходной таблицы) - то он будет его выполнять в поточном режиме, типа "немного данных прочитал - немного вставил, немного прочитал - немного вставил" и т.д. Для этого памяти нужно немного и всем данным в память помещаться совсем не обязательно.

Константин
10.07.2018
13:37:00

LeiDruid
10.07.2018
13:44:10
Я же тоже помню, что память не должна сильно использоваться

Michal
10.07.2018
13:46:03
Может инсерт был в Temporary / Memory таблицу ?
Или селект с сортировкой?

Sergey
10.07.2018
13:54:55
А в какую сторону начинать копать, если периодически натыкаемся на "Another quorum insert has been already started"? При этом не системно, выявить закономерность не получается пока.

Google

Vladimir
10.07.2018
13:58:01
Привет всем.
пытаюсь перемножить попарно элементы 2х массивов, пока ничего другого не придумал:
arrayMap(i -> amount[i + 1] * price[i + 1], range(length(amount)))
Можно как то это по красивше это сделать? и я так понимаю ничего для работы с индексами массивов в лямбдах нет?

Sergey
10.07.2018
14:03:58

Michal
10.07.2018
14:10:40
arrayEnumerate - как раз для работы с индексами массивов.

LeiDruid
10.07.2018
14:11:51

Evgeny
10.07.2018
14:18:35

Michal
10.07.2018
14:20:09

Vladimir
10.07.2018
14:20:14

Evgeny
10.07.2018
14:20:38

Michal
10.07.2018
14:24:59

s3rj1k
10.07.2018
14:35:26
всем привет, а у кликхауса есть https интерфейс?

papa
10.07.2018
14:36:02
localhost:8123
а, https
тогда не думаю.

Sergey
10.07.2018
14:36:34

s3rj1k
10.07.2018
14:36:52
в конфиге есть такое
<!-- For HTTPS and SSL over native protocol. -->
<!--
<https_port>8443</https_port>
<tcp_port_secure>9440</tcp_port_secure>
-->
@orantius

Michal
10.07.2018
14:39:57
всем привет, а у кликхауса есть https интерфейс?
Есть. Нужно раскомментировать <https_port> в конфиге и настроить openSSL: https://clickhouse.yandex/docs/en/operations/server_settings/settings/#server_settings-openSSL
Как вариант - есть ещё chproxy: https://github.com/Vertamedia/chproxy

s3rj1k
10.07.2018
14:41:32

Maria
10.07.2018
16:01:03


Yaroslav
10.07.2018
17:02:03
Делаю выборку из таблицы, в условии необходимо указать имя и диапазон дат. Первичный ключ состоит из имени, диапазона дат и cityHash. Партиции по суткам. Как я понял для того, чтобы эффективнее найти можно написать условие prewhere log_date='нужный день'. А как быть с условиями остальными? Куда их правильнее поместить в where или prewhere? В документации сказано не указывать в prewhere индексы.

Google

Yaroslav
10.07.2018
17:03:46
диапазон времени*

Vitaliy
10.07.2018
17:23:59
Можна ли запустить зукипер на одной ноде?

LeiDruid
10.07.2018
17:31:32

Tima
10.07.2018
17:31:52

Alexey
10.07.2018
17:35:07
Например, вы дополнительно указываете type=2 в prewhere, которого нет в ключе, и prewhere просто отсекает другие type, а потом по type=2 уже начинает работать where
Если не ошибаюсь, поправьте если что

Yaroslav
10.07.2018
17:46:54
спасибо, про это и хотел узнать, что если поля указаны в первичном ключе, то есть ли смысл их в prewhere писать

Evgeniy
10.07.2018
17:47:44
Есть поле с массивом id-шников. Хочу получить массив наименований с использованием внешнего словаря.
Т.е. вызвать dictGetString для каждого элемента в массиве.
Можно это как то сделать?

Alex
10.07.2018
17:55:00

Ilya
10.07.2018
17:56:50
Какой ужас
Верните мне SQL из 2007

Sergey
10.07.2018
18:02:37
Почему 2007? Не было ж стандартов этого года.

Denis
10.07.2018
18:10:00
зато сентябрь горел

Denis
10.07.2018
22:50:19
И произойдет ли вставка, если запрос сфэйлится по памяти?
create table test.test(a UInt64,b UInt64) Engine=MergeTree partition by a order by tuple ();
insert into test.test select round(number/1000000), throwIf(number=8000000) from numbers(15000000);
select count() from test.test
7340032
drop table test.test;
create table test.test(a UInt64,b UInt64) Engine=MergeTree partition by a order by tuple ();
set max_block_size = 15000000;
set max_insert_block_size = 15000000;
insert into test.test select round(number/1000000), throwIf(number=8000000) from numbers(15000000);
select count() from test.test
0 rows in set.
правда max_block_size наоборот, увеличивает расход памяти.