@clickhouse_ru

Страница 576 из 723
Alexey
03.07.2018
17:15:59
нельзя так сделать
insert into tableB (field1, field2) select field1, field2 from tableA where date=today() and field3 = 'othertext'

Константин
03.07.2018
17:16:24
я говорю про дефолт значение

Alexey
03.07.2018
17:18:01
Почему нельзя

Константин
03.07.2018
17:21:16
в общем, получилось только так:

Google
Константин
03.07.2018
17:21:42
1) создать временную таблицу из селекта 2) интсерт селект из темп таблицы

Evgeny
03.07.2018
18:35:14
2018.07.03 18:34:38.751066 [ 25 ] <Error> HTTPHandler: Code: 50, e.displayText() = DB::Exception: Unknown type Array(String), e.what() = DB::Exception, Stack trace: А как указать в словаре массив строк правильно?

Ivan
03.07.2018
19:14:44
Опубликована документация по ALTER TABLE ... DELETE: https://clickhouse.yandex/docs/ru/query_language/queries/#_7

Alexander
03.07.2018
19:19:47
2018.07.03 18:34:38.751066 [ 25 ] <Error> HTTPHandler: Code: 50, e.displayText() = DB::Exception: Unknown type Array(String), e.what() = DB::Exception, Stack trace: А как указать в словаре массив строк правильно?
В словаре массивы не поддерживаются, только простые типы. Есть запрос на добавление такой функции

Evgeny
03.07.2018
20:13:28
Хорошо, тогда я буду делать таблицу справочник и тогда есть вопрос - что эффективнее. Одна строка в которой будет два массива с множеством элементов (и дальше array join) или по строке на запись?

Mikhail
03.07.2018
20:51:20
Привет. Вопрос на засыпку - как можно проверить, что макросы для реплицированных таблиц успешно подгрузились из отдельного файла, кроме как создать тестовую таблицу?

Igor
03.07.2018
21:07:07
Сообщество, а тут есть пользователи phpClickHouse ? Можете зайти и высказаться за отказ от php 5.6 в пользу 7.2 )) У меня рука не поднимается выкинуть "эпоху" спасибо! https://github.com/smi2/phpClickHouse/issues/69

antuan
03.07.2018
21:09:10
:( спасибо
Ставьте лайк :) https://github.com/yandex/ClickHouse/issues/1640

Evgeny
03.07.2018
21:41:23
Но ведь сравнение чисел будет работать гораздо быстрее чем поиск по строке

Timur
04.07.2018
01:16:35
Всем привет. Возник вопрос: после заливки данных при запросе поочередно(после 2-3 раз запуска) меняются результаты: Таблица distributed которая смотрит на replicatedMergeTree(2 шардами: 2 реплики + 1 реплика) Куда копать? SELECT sum(some_field) / 10000, count() FROM some_table ┌─divide(sum(some_field), 10000)─┬───count()─┐ │ 7103212.5257 │ 529082508 │ └────────────────────────────────┴───────────┘ ---- SELECT sum(some_field) / 10000, count() FROM some_table ┌─divide(sum(some_field), 10000)─┬───count()─┐ │ 7128549.5722 │ 535841204 │ └────────────────────────────────┴───────────┘

Google
Timur
04.07.2018
01:17:47
причем count только 535841204 или 529082508

нашел

на репликах одной шарды разный count() из relicatedmergeTree

вопрос все тот же: куда копать?

похоже нашел: напортачил с макросами. в definition таблицы на узлах одного шарда макросы <shard> разные

Дмитрий
04.07.2018
06:24:47
Есть таблица engine= memory столбцов около 2000. По ней надо прогнать 1000 однотипных запросов каждый из запросов обращается к 2 разным столбцам. Один запрос отрабатывает практически мгновенно. 1000 запросов в цикле долговато при этом загрузка ядер на КХ никакая и памяти свободной море... Пробовал склеить 1000 запросов через union all - утилизация ядер улучшилась но всё равно ниже 50%... Долбить 1000 запросов из разных потоков не хочется... Есть идеи?

Andrey
04.07.2018
08:10:04
Привет всем! Начали внедрять кликхаус для ряда задачек. Ищем простое и рабочее решение для репликации из мускула в кликхаус, пока смотрим на https://github.com/Altinity/clickhouse-mysql-data-reader Может есть что-то получше ?

Andrey
04.07.2018
08:12:44
А где почитать? Или как загуглить? =)

Alexander
04.07.2018
08:13:19
А где почитать? Или как загуглить? =)
https://clickhouse.yandex/docs/ru/single/index.html#mysql

Леонид
04.07.2018
08:13:26
https://clickhouse.yandex/docs/ru/table_engines/mysql/

Артем
04.07.2018
08:25:11
мы просто через движок MySQL базу в CH подтянули
а не подскажите синтаксиси создания такого движка ? Нужно ли создовать все поля в КХ или они динамически подтянутся из msql ?

Леонид
04.07.2018
08:26:37
имена полей должны совпадать. структура - вроде не обязательно. если в CH полей объявлено меньше, чем в MySQL - у нас работает.

синтаксис - в доке вроде доступно описан.

Артем
04.07.2018
08:33:04
имена полей должны совпадать. структура - вроде не обязательно. если в CH полей объявлено меньше, чем в MySQL - у нас работает.
а как решили проблему с джоинами ? если боьшинство таблиц нормализованно, джоины на уровне КХ ?

Леонид
04.07.2018
08:34:01
да

КХ делает запрос в Мускуль, берет оттуда данные и приджоиневает их к результату

Tima
04.07.2018
09:21:22
Создал реплицируемую таблицу, залил данные через INSERT INTO .. SELECT Вроде всё нормально, но в логе постоянно пишется такое 2018.07.04 12:19:31.594641 [ 2 ] <Debug> load_stat (ReplicatedMergeTreeQueue): Not executing log entry for part 20180317_20180319_285_290_1 because source parts size (30.02 MiB) is greater than the current maximum (4.45 MiB). На что это влияет и что можно подкрутить в настройках чтобы такого не писало?

antuan
04.07.2018
11:14:32
а нет ли в планах для внешних словарей убрать ограничение в 500к записей?

Konstantin
04.07.2018
11:17:40
Google
antuan
04.07.2018
11:17:57
вроде можно собрать самим увеличив лимит
было б неплохо, куда тыкать?

Konstantin
04.07.2018
11:19:33
было б неплохо, куда тыкать?
это точно был параметр MAX_PAGES, надо только вспомнить где)

antuan
04.07.2018
11:20:27
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Dictionaries/FlatDictionary.cpp static const auto max_array_size = 500000; ... if (id >= max_array_size) throw Exception{name + ": identifier should be less than " + toString(max_array_size), ErrorCodes::ARGUMENT_OUT_OF_BOUND};

не знаю плюсов, но подозреваю, что собрать с другим значением таки сложновато)

ну, только подправив сорцы

:)

Konstantin
04.07.2018
11:21:17
у меня был кейс с iptrie https://github.com/yandex/ClickHouse/blob/master/contrib/libbtrie/include/btrie.h

Victor
04.07.2018
11:21:23
размер словаря он же из-за потребления памяти ограничен, кажись

вроде проскакивало это где-то

Konstantin
04.07.2018
11:22:16
#if !defined(BTRIE_MAX_PAGES) /// 54 ip per page. 8 bytes memory per page when empty #define BTRIE_MAX_PAGES 1024 * 2048 /// 128m ips , ~16mb ram when empty // #define BTRIE_MAX_PAGES 1024 * 65535 /// 4g ips (whole ipv4), ~512mb ram when empty #endif

antuan
04.07.2018
11:29:38
ясненько, спасибо

Michal
04.07.2018
11:29:53
Подскажите, какой BI умеет стучаться в clickhouse без odbc-драйвера?
Вчера на митапе говорили что с Superset заводится без проблем (сам ещё не пробовал).

antuan
04.07.2018
11:33:20
Кстати, со словарями ещё интересная петрушка. Есть легаси бд, в которой 10к записей, но айдишники начинаются они с 500к как раз (не спрашивайте :) ). Мигрануть не представляется возможным :( Any ideas?

antuan
04.07.2018
11:34:56
ЕМНИП ограничение есть только для <flat> словарей. Попробуйте перейти на <hashed>.
словари используем в подзапросах, типа того: select ... from some_table where obj_id in (select id from dict where dict_attr = 'value') можно ли предположить из слова hash, что поиск по атрибутам словаря, а не по ключам, будет работать так себе?

хотя ладно, проще проверить самому :)

спасибо

Google
Michal
04.07.2018
11:41:08
Словарь он и есть словарь. Это не полнотекстовый поиск с секондари индексами и т.п. :)

antuan
04.07.2018
11:41:15
само-собой

но нас устраивает, альтернативы слишком ужасны

особенно если учесть, что лежат в RAM)

Michal
04.07.2018
11:42:10
Если нужно по атрибутам искать - то можно ещё один словарь сделать - словарь "наоборот" :)

antuan
04.07.2018
11:42:24
10 атрибутов - 10 словарей?)

Michal
04.07.2018
11:42:34
А по всем 10 нужно искать? :)

antuan
04.07.2018
11:42:41
иначе бы их не было

плюс, что делать, если атрибут - массив?)

сейчас пишем {,a,b,c,}, ищем через like '%,a,%'

:)

Evgeny
04.07.2018
11:43:32
Почему не сделать справочную таблицу?

antuan
04.07.2018
11:43:55
потому что данные в этих таблицах постоянно обновляются

replicatedMergeTree не годится

или как там его

replacingMergeTree

Michal
04.07.2018
11:45:35
Ну самый "книжный" пример использования словаря - это например чтоб не писать в каждой строке полный адрес - вместо них записать почтовый индекс. Словарь при этом почти статический и обратный поиск, если и нужен то например из жанра "а выбери мне все почтовые индексы для города Москва".

antuan
04.07.2018
11:45:35
На самом деле нас всё устраивает. Просто смотрим в будущее - рано или поздно количество записей в каком-нибудь справочнике может превысить лимит

эт я знаю

Michal
04.07.2018
11:46:02
И как вы обновляете этот словарь? Полностью перечитываете?

Google
antuan
04.07.2018
11:46:31
Однако есть где-то в документации использование таблиц с engine=dictionary, где описан как раз наш случай. И про то, что "это плохо" ничего не сказано)

Угу, а как иначе

odbc

Michal
04.07.2018
11:46:42
Звучит как профили пользователей :)

antuan
04.07.2018
11:46:56
и не только они ;)

подергал такие два запроса, время выполнения одинаково (~0,01с): select groupArray(id) from offers where id = 1; select groupArray(id) from offers where category = 3; во втором случае - 3200к интов в массиве получилось

Так что с производительностью, видимо, проблем нет.

Michal
04.07.2018
11:52:46
Мы думали над чем-то подобным, пробовали сделать обертку в виде HTTP-микросервисов. Так чтоб можно было в любом направлении запрашивать словари, и чтоб не нужно было целиком их перечитывать какждый раз (много данных), а только при наличии необходимости в определенных данных. Когда попробовали proof-of-concept оказалось что КХ крайне неэффективно работает с HTTP словарями (в один поток).

У вас видимо словари относительно терпимых размеров.

antuan
04.07.2018
11:53:47
>100к пока что нет

в большинстве кол-во строк несколько тысяч

~50

и то, в паре-тройке

select groupArray(id) from prelandings where name like '%a%'; ... 1 rows in set. Elapsed: 0.198 sec. Processed 33.60 thousand rows, 1.66 MB (169.44 thousand rows/s., 8.39 MB/s.)

Николай
04.07.2018
11:56:35
Подскажите, как в CH сгруппировать если значение равно 0 или NULL?

Tima
04.07.2018
11:57:13
Николай
04.07.2018
11:57:19
Да

Michal
04.07.2018
12:01:09
GROUP BY assumeNotNull(x)

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