Конвейерная обработка
применимо: Databricks Runtime 16.2 и более поздние версии
Обрабатывает результат предыдущего запроса с использованием цепной операции.
Синтаксис
{ SELECT clause |
EXTEND { expression [ [ AS ] column_alias ] } [ , ...] |
SET { column_name = expression } [, ...] |
DROP column_name [, ...] |
AS table_alias |
WHERE clause |
{ LIMIT clause |
OFFSET clause |
LIMIT clause OFFSET clause } |
aggregation |
JOIN clause |
ORDER BY clause |
set_operator |
TABLESAMPLE clause
PIVOT clause
UNPIVOT clause }
aggregation
AGGREGATE aggregate_expr [ [ AS ] column_alias ] [, ...]
[ GROUP BY grouping_expr [AS column_alias ] ]
Параметры
предложение SELECT
Собирает столбцы, возвращаемые в результате запроса, включая выполнение выражений и дедупликацию.
Список столбцов не должен содержать статистические функции. Используйте операцию
AGGREGATE
для этой цели.РАСШИРЕНИЕ
Добавляет новые столбцы в список выбора запроса.
-
Сочетание одного или нескольких значений, операторов и функций SQL, которые оценивают значение.
expression
могут содержать ссылки на столбцы в списке выбора запросов, а также на предыдущиеcolumn_alias
в этом условииEXTEND
. -
Необязательный идентификатор столбца, именующий результат выражения. Если
column_alias
не предоставлен, Azure Databricks сам выводит его.
-
SET
Заменяет существующие столбцы в списке выборки запроса новыми значениями.
Операция выполняется в порядке появления в условии
SET
. Результат любого выражения может быть отражением изменений в столбцах, обновленных предыдущими выражениями.-
Имя столбца, который нужно обновить. Если столбец не существует, Azure Databricks вызывает ошибку UNRESOLVED_COLUMN.
выражение
Сочетание одного или нескольких значений, операторов и функций SQL, которые оценивают значение.
-
DROP column_name [, ...]
Удаляет столбцы из списка выбора запроса.
Если столбец не существует, Azure Databricks вызывает ошибку UNRESOLVED_COLUMN.
AS table_alias
Назначает имя результату запроса.
-
Фильтрует результат запроса на основе предоставленных предикатов.
-
Ограничивает максимальное количество строк, которые могут быть возвращены запросом. Это условие обычно следует за ORDER BY, чтобы обеспечить детерминированный результат.
-
Пропускает ряд строк, возвращаемых запросом. Это условие обычно используется в сочетании с LIMIT по страницы по результирующему набору и ORDER BY для получения определенного результата.
агрегирования
Агрегирует результирующий набор запроса на основе предоставленных выражений и необязательных выражений группировки.
Эта операция создает результирующий набор, в котором столбцы группировки отображаются перед агрегированными столбцами.
АГРЕГАТ
Задает выражения для агрегирования.
-
Выражение, содержащее одну или несколько агрегатных функций. Дополнительные сведения см. в GROUP BY.
-
GROUP BY
Указывает, по каким выражениям группируются строки. Если не указано, все строки обрабатываются как одна группа.
-
Необязательный идентификатор столбца, именующий результат выражения. Если
column_alias
не предоставлен, Azure Databricks выводит его автоматически.
-
Объединяет два или более отношения с использованием операции соединения. Смотрите JOIN для получения дополнительной информации.
-
Упорядочивает строки результирующего набора запроса. Выходные строки упорядочены по секциям. Этот параметр является взаимоисключающим с
SORT BY
,CLUSTER BY
иDISTRIBUTE BY
и не может быть указан вместе. -
Объединяет запрос с одним или несколькими вложенными запросами с помощью
UNION
,EXCEPT
или операторовINTERSECT
. -
Уменьшает размер результирующего набора, выбирая только часть строк.
-
Используется для перспективы данных. Агрегированные значения можно получить на основе определенных значений столбцов. Дополнительные сведения см. в PIVOT.
-
Используется для обзора данных. Можно разделить несколько групп столбцов на строки. Дополнительные сведения см. в UNPIVOT.
Примеры
-- This query
> 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;
is equivalent to:
> 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;
-- Using the SELECT clause following a FROM clause
> CREATE TABLE t AS VALUES (0), (1) AS t(col);
> FROM t
|> SELECT col * 2 AS result;
result
------
0
2
-- Adding columns to the result set
> VALUES (0), (1) tab(col)
|> EXTEND col * 2 AS result;
col result
--- ------
0 0
1 2
-- Replacing an expression
> VALUES (0), (1) tab(col)
|> SET col = col * 2;
col
---
0
2
-- Removing a column from the result set
> VALUES (0, 1) tab(col1, col2)
|> DROP col1;
col2
----
1
-- Using a table alias
> VALUES (0, 1) tab(col1, col2)
|> AS new_tab
|> SELECT col1 + col2 FROM new_tab;
col1 + col2
1
-- Filtering the result set
> VALUES (0), (1) tab(col)
|> WHERE col = 1;
col
---
1
-- Using LIMIT to truncate the result
> VALUES (0), (0) tab(col)
|> LIMIT 1;
col
---
0
-- Full-table aggregation
> VALUES (0), (1) tab(col)
|> AGGREGATE COUNT(col) AS count;
count
-----
2
-- Aggregation with grouping
> VALUES (0, 1), (0, 2) tab(col1, col2)
|> AGGREGATE COUNT(col2) AS count GROUP BY col1;
col1 count
---- -----
0 2
-- Using JOINs
> SELECT 0 AS a, 1 AS b
|> AS lhs
|> JOIN VALUES (0, 2) rhs(a, b) ON (lhs.a = rhs.a);
a b c d
--- --- --- ---
0 1 0 2
> VALUES ('apples', 3), ('bananas', 4) t(item, sales)
|> AS produce_sales
|> LEFT JOIN
(SELECT "apples" AS item, 123 AS id) AS produce_data
USING (item)
|> SELECT produce_sales.item, sales, id;
item sales id
--------- ------- ------
apples 3 123
bananas 4 NULL
-- Using ORDER BY
> VALUES (0), (1) tab(col)
|> ORDER BY col DESC;
col
---
1
0
> VALUES (0), (1) tab(a, b)
|> UNION ALL VALUES (2), (3) tab(c, d);
a b
--- ----
0 1
2 3
-- Sampling the result set
> VALUES (0), (0), (0), (0) tab(col)
|> TABLESAMPLE (1 ROWS);
col
---
0
> VALUES (0), (0) tab(col)
|> TABLESAMPLE (100 PERCENT);
col
---
0
0
-- Pivoting a query
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> PIVOT (
SUM(earnings)
FOR COURSE IN ('dotNET', 'Java')
)
year dotNET Java
---- ------ ------
2012 15000 20000
2013 48000 30000
-- Using UNPIVOT
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> UNPIVOT (
earningsYear FOR `year` IN (`2012`, `2013`, `2014`)
course year earnings
-------- ------ --------
Java 2012 20000
Java 2013 30000
dotNET 2012 15000
dotNET 2013 48000
dotNET 2014 22500
Связанные статьи
- GROUP BY пункта
- JOIN
- LIMIT предложения
- OFFSET пункт
- ORDER BY пункт
- PIVOT пункта
- Операторы множеств
- ссылка на таблицы
- TABLESAMPLE предложения
- UNPIVOT пункт
- WHERE предложения
- синтаксис конвейера SQL
- запроса
- SELECT предложения