SELECT (подвыборка)
Область применения: Databricks SQL
Databricks Runtime
Создает результирующий набор из одной или нескольких ссылок на таблицу.
Предложение SELECT
может быть частью запроса, который также содержит обобщенные табличные выражения (CTE), операции над множествами и другие предложения.
Синтаксис
SELECT clause
FROM table_reference [, ...]
[ LATERAL VIEW clause ]
[ WHERE clause ]
[ GROUP BY clause ]
[ HAVING clause]
[ QUALIFY clause ]
named_expression
expression [ column_alias ]
star_clause
[ { table_name | view_name } . ] * [ except_clause ]
except_clause
EXCEPT ( { column_name | field_name } [, ...] )
Параметры
пункт SELECT
Собирает столбцы, возвращаемые из вложенного запроса, включая выполнение выражений, агрегацию и удаление дубликатов.
-
Источник входных данных для
SELECT
. Эта ссылка на входные данные может быть преобразована в потоковую ссылку с помощьюSTREAM
ключевого слова до ссылки. -
Используется в сочетании с
EXPLODE
и другими функциями генератора, которые создают виртуальную таблицу с одной или несколькими строками.LATERAL VIEW
применяет эти строки к каждой исходной строке в выходных данных.В Databricks SQL и начиная с Databricks Runtime 12.2 это предложение устарело. Вы должны вызвать функцию генератора с табличным значением в качестве table_reference.
-
Фильтрует результат предложения
FROM
на основе представленных предикатов. -
Выражения, используемые для группирования строк. Используется совместно с агрегатными функциями (
MIN
,MAX
,COUNT
,SUM
,AVG
) для группирования строк на основе выражений группирования и агрегатных значений в каждой группе. Если предложениеFILTER
вложено в агрегатную функцию, в эту функцию передаются только соответствующие строки. -
Предикаты, по которым фильтруются строки, производимые командой
GROUP BY
. ПредложениеHAVING
используется для фильтрации строк после группирования. Если указатьHAVING
безGROUP BY
, это будет означать командуGROUP BY
без выражений группирования (глобальное статистическое выражение). -
Предикаты, используемые для фильтрации результатов функций окон. Чтобы использовать
QUALIFY
, в списке или в предложении SELECT должна быть хотя бы одна функция окна QUALIFY.
Выбор данных в разностной таблице
Помимо стандартных параметров SELECT
разностные таблицы поддерживают параметры перехода по времени, описанные в этом разделе. Дополнительные сведения см. в разделе " Работа с журналом таблиц Delta Lake".
Синтаксис AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
-
timestamp_expression
может быть одним из следующих вариантов:-
'2018-10-18T22:15:12.013Z'
, то есть строкой, которая может приводиться к метке времени; cast('2018-10-18 13:36:32 CEST' as timestamp)
-
'2018-10-18'
, то есть строкой даты. current_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Любое другое выражение, которое является меткой времени или может быть приведено к ней
-
-
version
— это длинное значение, которое можно получить из выходных данныхDESCRIBE HISTORY table_spec
.
Ни timestamp_expression
, ни version
не может быть подзапросом.
Пример
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Синтаксис @
Используйте синтаксис @
для указания метки времени или версии. Метка времени должна быть указана в формате yyyyMMddHHmmssSSS
. Вы можете указать версию после @
, добавив к версии v
. Например, чтобы запросить версию 123
для таблицы events
, укажите events@v123
.
Пример
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Примеры
-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3 4
-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
3 4
-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3
-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { "a" : 2 }
-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { }
-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
Error: EXCEPT_OVERLAPPING_COLUMNS
Связанные статьи
- CLUSTER BY предложения
- Общее табличное выражение (CTE)
- DISTRIBUTE BY предложения
- GROUP BY предложения
- HAVING предложения
- QUALIFY предложения
- Указания
- VALUES предложения
- JOIN
- LATERAL VIEW предложения
- LIMIT предложения
- OFFSET предложения
- ORDER BY предложения
- PIVOT предложения
- Запрос
- SELECT предложения
- Операторы Set
- SORT BY предложения
- Предложение Star
- TABLESAMPLE предложения
- Функция с табличным значением (TVF)
- Справочник по таблицам
- UNPIVOT предложения
- WHERE предложения
- WINDOW предложения
- Функции окна