SELECT
Область применения: Databricks SQL Databricks Runtime
Создает результирующий набор из одной или нескольких ссылок на таблицу.
Предложение SELECT
может быть частью запроса, который также содержит обобщенные табличные выражения (CTE), операции над множествами и другие предложения.
Синтаксис
SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_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 } [, ...] )
Параметры
-
Подсказки помогают оптимизатору Azure Databricks принимать лучшие решения по планированию. Azure Databricks поддерживает указания, влияющие на выбор стратегий присоединения и повторное выделение данных.
ALL
Выберите все соответствующие строки из ссылок на таблицу. Включено по умолчанию.
DISTINCT
Выберите все соответствующие строки из ссылок на таблицу после удаления повторяющихся результатов.
named_expression
Выражение с необязательным назначенным именем.
-
Сочетание одного или нескольких значений, операторов и функций SQL, выраженное в значении.
-
Необязательный идентификатор столбца, называющий результат выражения. Если
column_alias
не указан, Databricks SQL его производит.
-
-
Короткое название всех ссылочных столбцов в
FROM
предложении или столбцов или полей ссылки на таблицу в предложенииFROM
. -
Источник входных данных для
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
- Запрос
- Предложение TABLESAMPLE
- Операторы Set
- Предложение SORT BY
- Предложение Star
- Функция с табличным значением (TVF)
- Справочник по таблицам
- Предложение UNPIVOT
- Предложение WHERE
- Предложение WINDOW
- Функции окна