вложенности произвольная
Есть табличка с продажами(sales ) где есть ид товара(item_id)
Задача: Необходимо для каждого товара получить ид категории 3 уровня(это константа),
1) Но при этом есть товары у которых всего 2 уровня иерархии, в таком случае необходимо получить ид ближайшего родителя
2) Есть товары которые расположены на 1 уровне иерархии и для таких товаров необходимо оставить их ид
Собрал вот такую конструкцию https://fiddle.clickhouse.com/fecfb9c5-1406-4798-b24a-78abac0d6174 которая в поле category_id_final выдает желаемый результат
Вопрос: насколько оптимально решена задача и может ее можно было решить более простым способом, чем текущая конструкция(достаточно длинная)?
думаю можно это решить через комбинатор OrDefault, те попробовать получить 3й уровень, если нет то родителя, если нет то айдишник товара
DictGetHierarchy не работает с OrDefault Unknown function DictGetHierarchyOrDefault
есть тут такой multiIf - пользуйтесь им. И больше CTE вместо тупого c&p. https://fiddle.clickhouse.com/c208a9e3-eb5d-428c-acf9-eaaddbb7fd71
Обсуждают сегодня