Комментарии 3
Пробуем запрос....
снова получаем ошибку из-за ограничений памяти.
Пробуем запрос....
снова получаем ошибку из-за ограничений памяти.
Пробуем запрос....
снова получаем ошибку из-за ограничений памяти.
Как правильно обратиться к словарю, если нужно его использовать при фильтрации распределенной партицированной таблицы?
Например, есть таблица фактов с полями "id,a,b,value", которая партицирована по полям a,b. В словаре есть поля "id,a,b,name", где id - ключ.
Нужно извлечь значения из таблицы фактов при известном name.
В вашем случае нужно сделать две фильтрации. Сначала отобрать нужную партицию, после чего отфильтровать по id. Чтобы четко выбрать партицию, сделаем предфильтрацию. Если правильно вас поняли — партицией у вас является кортеж из полей a и b, поэтому будет использоваться виртуальный столбец _partition_value в секции prewhere.
PREWHERE _partition_value IN (select (a, b)
from dic
where name = :name_value)
Далее отфильтруем по id.
WHERE id IN (select id from dic where name = :name_value)
Как работать со словарями данных и оптимизировать запросы в ClickHouse