Size: a a a

ClickHouse не тормозит

2020 May 25

M

Munir in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
нет есть SELECT COLUMNS('(?!^cat$)(^.*$)') FROM T
Спасибо
источник

D

Dj in ClickHouse не тормозит
Alexander Fedotov
Всем привет! А почему
SELECT '<A'

может выводить пустую строку вместо ‘<A’? За угловой скобкой при этом не важно что (версия CH 19.16.3.6)
в чистом клиенте тоже так? должно быть так
┌─'<A'─┐
│ <A   │
└──────┘
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleksiy Golovko
@den_crane Логика такая - для каждого элемента top-level массива найти количество уникальных элементов к этому моменту:
1. [1,2] -> 2
2. [2,3] -> 3 (1,2 были известны к этому моменту, т.е. добавился только один - 3)
3. [1,2,3] -> 3 (все элементы уже были)
можно посчитать, arrayFilter-м выдавать 1 или 0, и проверять что до текущего элемента массива уже такой был
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Fedotov
Всем привет! А почему
SELECT '<A'

может выводить пустую строку вместо ‘<A’? За угловой скобкой при этом не важно что (версия CH 19.16.3.6)
SELECT '<A' as XXX
jdbc ? срывает крышу в имени колонки?
источник

AF

Alexander Fedotov in ClickHouse не тормозит
через Redash запускал, имя колонки не режет, но скорее всего в нем дело. Через клиент попробовали - все ок. Спасибо!
источник

A

Andrey in ClickHouse не тормозит
Есть CH версии 20.1.2.4. В нем есть внешние ODBC словари и таблицы с engine = Dictionary.
После обновления на 20.4.2.9 не поднимается, говорит не может создать таблицы с движком Dictionary, потому что словаря еще нет.

Application: DB::Exception: external dictionary 'my_dict' not found:



Это баг или фича? Вроде логично что при поднятии, словари еще не скачались.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Andrey
Есть CH версии 20.1.2.4. В нем есть внешние ODBC словари и таблицы с engine = Dictionary.
После обновления на 20.4.2.9 не поднимается, говорит не может создать таблицы с движком Dictionary, потому что словаря еще нет.

Application: DB::Exception: external dictionary 'my_dict' not found:



Это баг или фича? Вроде логично что при поднятии, словари еще не скачались.
источник

D

Dj in ClickHouse не тормозит
Dj
старый вопрос у меня так и не решился... жду рацпредложений от гуру )
—-
всем добрый вечер, очередная головоломка )
как за-семи-джойнить две таблицы  (а точнее отфильтровать одну при помощи второй) по совпадению в префиксе.
пока смог только так, но по итогу выпадает с аут оф мемори (видимо arrayExists  копирует входной массив на каждую строку в where).

пример
with (
 select groupArray(objfilter) from (
   select 'lvl1=2,lvl2=3,lvl3=5' as objfilter UNION ALL
   select 'lvl1=1,lvl2=3,lvl3=5,lvl4=43' as objfilter
 )
) as fltArr
select fltArr, * from
(
select 'lvl1=2,lvl2=3,lvl3=5' as objpath UNION ALL
select 'lvl1=2,lvl2=3,lvl3=5,lvl4=2' as objpath UNION ALL
select 'lvl1=2,lvl2=3,lvl3=5,lvl4=44' as objpath UNION ALL
select 'lvl1=3,lvl2=3,lvl3=6' as objpath UNION ALL
select 'lvl1=2,lvl2=3' as objpath UNION ALL
select 'lvl1=1,lvl2=3,lvl3=5' as objpath  
) t
WHERE arrayExists(
               selectedObj ->
                    (startsWith(objpath, selectedObj)
                       or startsWith(selectedObj, objpath)),
               fltArr);
/UPD1:
Через CROSS JOIN с памятью не лучше...
Какие ещё варианты сделать, нужно нечеткое сравнение при полной уверенности что на одну строку левой таблицы будет не более одной из правой. Ну или вообще какие-то другие мысли как подобное провернуть (профильтровать факт таклица по суффиксам и префиксам из фильтр-таблицы)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
/UPD1:
Через CROSS JOIN с памятью не лучше...
Какие ещё варианты сделать, нужно нечеткое сравнение при полной уверенности что на одну строку левой таблицы будет не более одной из правой. Ну или вообще какие-то другие мысли как подобное провернуть (профильтровать факт таклица по суффиксам и префиксам из фильтр-таблицы)
я бы делал через multiSearchFirstIndex или надо именно join ?
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
я бы делал через multiSearchFirstIndex или надо именно join ?
join не обязателен, но во второй таблице может быть до 100 тыщ элементов...
источник

D

Dj in ClickHouse не тормозит
и потом надо искать в оба направления
источник

D

Dj in ClickHouse не тормозит
т.е. если пользователь просит

lvl1=2,lvl2=3,lvl3=5


надо вывести результаты для всех родителей и детей тоже
lvl1=2,lvl2=3,lvl3=5 -- filter object itself
lvl1=2,lvl2=3,lvl3=5,lvl4=2 -- child of filter object
lvl1=2,lvl2=3,lvl3=5,lvl4=44 -- child of filter object
lvl1=2,lvl2=3 -- parent of filter object
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
т.е. если в одной таблице миллион, а в другой 100тыс, то надо сделать миллион * 100 тыс. сравнений?
источник

D

Dj in ClickHouse не тормозит
да, в одной 100 миллионов, во второй тыс 10 где-то в среднем случае (это динамический выбор в UI), на самом деле нужен именно filtering, но с учетом "родителей" и "детей"
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
т.е. если в одной таблице миллион, а в другой 100тыс, то надо сделать миллион * 100 тыс. сравнений?
для родителей есть вариант через URLPathHierarchy, получать массив вида
["lvl1=2", "lvl1=2,lvl2=3", "lvl1=2,lvl2=3,lvl3=5"]


и использовать IN на нем, работает ОК. Так же есть вариант с иерархическими словарями (но там надо искусственные ID придумывать).
источник

D

Dj in ClickHouse не тормозит
с детьми (т.е. там где из фильтра пришло "lvl1=2,lvl2=3,lvl3=5" а в факт таблице надо найти все строки начинающиеся с этого фильтра без cross join не улетает)
источник

D

Dj in ClickHouse не тормозит
обычный join не дает использовать колонки из разных таблиц внутри любых функций, даже dictIsIn ...
источник

D

Dj in ClickHouse не тормозит
можно что угодно добавлять, изменять структуру, итд, если есть какие-нибудь мысли
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
т.е. если в одной таблице миллион, а в другой 100тыс, то надо сделать миллион * 100 тыс. сравнений?
ну ещё у multiSearchFirstIndex ограничение в 255, и при большом числе OR, он просто тормозит дико
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
т.е. типа вы хотите 100тыс. раз по индексу сделать startWith по 100млн. таблице, а потому наоборот? да никогда это не выполнится
источник