Синтаксис конвейера SQL
применимо: Databricks Runtime 16.2 и более поздние версии
Azure Databricks поддерживает синтаксис конвейера SQL, который позволяет создавать запросы из сочетаний цепочки операторов.
- Любой запрос может иметь ноль или несколько операторов канала в виде суффикса, очерченного символом канала
|>
. - Каждая конвейерная операция начинается с одного или нескольких ключевых слов SQL, и за ними следует собственная грамматика.
- Операторы могут применяться в любом порядке, любое количество раз.
- Обычно FROM relation_name используется для запуска конвейера, но любой запрос может запустить конвейер.
Синтаксис
{ FROM | TABLE } relation_name { |> piped_operation } [ ...]
Параметры
-
Определяет таблицу или представление, которые будут использоваться в качестве входных данных для конвейера. Если таблица или представление не найдены, Azure Databricks вызывает ошибку TABLE_OR_VIEW_NOT_FOUND.
-
Операция, используюющая предыдущую операцию запроса или канала. См. раздел piped_operation для более подробной информации.
Пример
Это запрос 13 из теста TPC-H, написанного в ANSI SQL:
> SELECT c_count, COUNT(*) AS custdist
FROM
(SELECT c_custkey, COUNT(o_orderkey) c_count
FROM customer
LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%'
GROUP BY c_custkey
) AS c_orders
GROUP BY c_count
ORDER BY custdist DESC, c_count DESC;
Чтобы написать ту же логику с помощью операторов канала SQL, можно выразить следующее:
> FROM customer
|> LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%'
|> AGGREGATE COUNT(o_orderkey) c_count
GROUP BY c_custkey
|> AGGREGATE COUNT(*) AS custdist
GROUP BY c_count
|> ORDER BY custdist DESC, c_count DESC;