Обобщенные табличные выражения (CTE)
Telegram channel @data_studyОбобщенные табличные выражения (CTE - Common Table Expression) - вид написания SELECT-запроса, который при этом можно переиспользовать и обращаться к нему по имени как к "виртуальной" таблице.
Сразу же здесь стоит пояснить, что CTE не стоит путать со временными таблицами.
Зачем можно применять табличные выражения в своей работе:
- структурировать написание сложных запросов
- заменить вложенные подзапросы на табличные выражения
- при переиспользовании выборки запроса к одной и той же таблице
- при построении пошагового процесса обработки данных для описания data pipeline (каждое следующее табличное выражение может отображать шаг обработки данных)
- создавать витрины данных с множественными выборками из разных таблиц
Синтаксис табличных выражений начинается с ключевого слова WITH. Полный синтаксис показан на рисунке ниже.

После команды WITH пишется название табличного выражения (на месте cte_name), далее указывается команда AS и в скобках прописывается тело самого табличного выражения, которым выступает любой SELECT запрос. После табличного выражения обязательно идет основной SELECT запрос, где в том числе может использоваться ранее написанное табличное выражение.
Если нужно указывать несколько табличных выражений, то каждому из них указывается имя и выражения перечисляются через запятую.

Пример применения табличного выражения:
Рассмотрим пример, когда нам нужно сделать разные выборки из разных, таблиц, а потом сделать из них некоторую витрину данных. Есть 3 таблицы: Customer, Product, Transaction. Для каждой было написано табличное выражение с выборкой данных, после чего было написано выражение для конечного датасета sales для дальнейшего анализа. При этом был собран необходимый для анализа датасет из разных таблиц. Табличные выражения будут выбирать для нас необходимые выборки из таблиц, а весь анализ можно производить в основном SELECT запросе
