Терадата перераспределяется без энергозависимого стола
Я застрял в ситуации, когда импровизированный отчет не может быть улучшен, потому что IBM Cognos не будет поддерживать никакие виды DDL, включая создание таблиц Volatile в Teradata. Агрегирование запросов отчета и в списках с около 5000 значений. Я знаю, как исправить часть списка, используя UDF и производную таблицу, но я хотел бы сделать что-то эквивалентное таблице Volatile, где я могу перераспределять на основе своего выбора, фактически не создавая его. Итак, я хотел бы сказать оптимизатору: "Соедините эти 3 таблицы и перераспределите их по этой комбинации клавиш", а затем присоединитесь к остальной части запроса. Я задавался вопросом, поможет ли создание производной таблицы, соединяющей эти "целевые таблицы", а затем присоединение к DT, создать такой эффект
sel A.1, A.2, Sum ( C.1) , Sum ( D.1) , case when A.5 in ( In-list) then "string" else "string2" end , sum (...) more columns ...etc
from
A Join B on ____ join C on ______ Join D ____
условия фильтрации
Мой подход Основываясь на анализе того, что таблицы C D E искажены на их катушках, я хотел бы, чтобы это произошло 1-е A присоединение C присоединение D присоединение E . Он будет дублировать C D E, перераспределяемый PI A...., а затем и остальная часть соединения.
sel < condition as before>
from
( sel < column list> from A Join C Join D join E --with respective Join conditions ) dt Join F on ___ Join G on____
Так что я хочу две вещи
- Последовательность объединения таблиц 1-ые A C D E объединяются
- созданный таким образом Dt должен иметь PI, основанный на остальных измерениях, чтобы я мог убедиться, что соединение звездой
1 ответ
Если вы поместите DISTINCT или GROUP BY в производную таблицу, оптимизатор не сможет сложить производную таблицу в объединения, которые существуют за пределами производной таблицы. Это заставит оптимизатор сначала материализовать производную таблицу в спуле. Производная таблица будет перераспределена на основе условия соединения с внешним запросом.
Вам нужно будет проверить влияние размещения GROUP BY или DISTINCT на вашей производной таблице, поскольку это исключает некоторые решения, которые оптимизатор мог бы принять, если бы он стоил как более эффективный.