SELECT

Извлекает результирующие наборы из одной или нескольких таблиц.

Синтаксис

[ WITH with_query [ , ... ] ]
select_statement [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select_statement, ... ]
  [ ORDER BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ SORT BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ CLUSTER BY { expression [ , ... ] } ]
  [ DISTRIBUTE BY { expression [, ... ] } ]
  [ WINDOW { named_window [ , WINDOW named_window, ... ] } ]
  [ LIMIT { ALL | expression } ]

Хотя select_statement определяется как

SELECT [ hints , ... ] [ ALL | DISTINCT ] { named_expression [ , ... ] }
  FROM { from_item [ , ... ] }
  [ PIVOT clause ]
  [ LATERAL VIEW clause ] [ ... ]
  [ WHERE boolean_expression ]
  [ GROUP BY expression [ , ... ] ]
  [ HAVING boolean_expression ]

Параметры

  • with_query

    Одно или несколько обобщенных табличных выражений перед основным блоком запроса. На эти табличные выражения можно ссылаться позднее в FROM предложении. Это полезно для абстракции повторяющихся блоков вложенных запросов в FROM предложении и повышает удобочитаемость запроса.

  • Советы

    Указания помогают оптимизатору Spark принимать более качественные решения по планированию. Spark поддерживает подсказки, влияющие на выбор стратегий объединения и повторное секционирование данных.

  • ALL

    Выберите все совпадающие строки из связи. Включен по умолчанию.

  • DISTINCT

    Выберите все совпадающие строки из отношения после удаления повторяющихся значений в результатах.

  • named_expression

    Выражение с назначенным именем. Обозначает выражение столбца.

    Синтаксис:expression [AS] [alias]

  • from_item

    Источник входных данных для запроса. Это может быть:

  • ОСНОВНОЙ

    Используется для перспективы данных; агрегированные значения можно получить на основе конкретного значения столбца.

  • БОКОВОГО СМЕЩЕНИЯ, ПРЕДСТАВЛЕНИЕ

    Используется в сочетании с функциями генератора, такими как EXPLODE , которые создают виртуальную таблицу, содержащую одну или несколько строк. LATERAL VIEW применяет строки к каждой исходной выходной строке.

  • WHERE

    Фильтрует результат FROM предложения на основе представленных предикатов.

  • GROUP BY

    Выражения, используемые для группирования строк. Используется совместно с агрегатными функциями (,, MIN , MAX COUNT SUM , AVG ) для группирования строк на основе выражений группирования и статистических значений в каждой группе. Если FILTER предложение присоединено к агрегатной функции, в эту функцию передаются только соответствующие строки.

  • HAVING

    Предикаты, по которым GROUP BY фильтруются строки. HAVINGПредложение используется для фильтрации строк после выполнения группирования. Если указать HAVING без GROUP BY , это означает, что GROUP BY выражения группирования не обрабатываются (глобальное статистическое выражение).

  • ORDER BY

    Упорядочение строк полного результирующего набора запроса. Выходные строки упорядочиваются по секциям. Этот параметр взаимоисключающий с, и и SORT BY CLUSTER BY DISTRIBUTE BY не может быть указан вместе.

  • СОРТИРОВАТЬ ПО

    Упорядочение, по которому строки упорядочиваются в каждой секции. Этот параметр является взаимоисключающим с ORDER BY and CLUSTER BY и не может быть указан вместе.

  • КЛАСТЕР ПО

    Набор выражений, используемых для повторного секционирования и сортировки строк. Использование этого предложения оказывает одинаковый результат использования DISTRIBUTE BY и SORT BY совместно.

  • РАСПРОСТРАНИТЬ ПО

    Набор выражений, на который повторно секционированы результирующие строки. Этот параметр является взаимоисключающим с ORDER BY and CLUSTER BY и не может быть указан вместе.

  • Размер

    Максимальное число строк, которое может быть возвращено инструкцией или вложенным запросом. Это предложение в основном используется в сочетании с ORDER BY для получения детерминированного результата.

  • boolean_expression

    Любое выражение, результатом вычисления которого является тип результата Boolean . Можно объединить два или более выражения вместе с помощью логических операторов ( AND , OR ).

  • expression

    сочетание одного или нескольких значений, операторов и SQL функций, результатом вычисления которого является значение.

  • named_window

    Псевдонимы для одной или нескольких спецификаций исходного окна. Спецификации окна исходного кода можно ссылаться в определениях окон в запросе.

Выбрать в таблице изменений

Помимо стандартных SELECT параметров, разностные таблицы поддерживают параметры поездок, описанные в этом разделе. Дополнительные сведения см. в разделе запрос старого моментального снимка таблицы (путешествие по времени).

Синтаксис AS OF

SELECT * FROM table_identifier TIMESTAMP AS OF timestamp_expression
SELECT * FROM table_identifier VERSION AS OF version

where

  • timestamp_expression может быть одним из следующих:
    • '2018-10-18T22:15:12.013Z', то есть строка, которую можно привести к метке времени
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', то есть строка даты
    • В Databricks Runtime 6,6 и более поздних версий:
      • 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 delta.`/mnt/delta/events` VERSION AS OF 123

Синтаксис @

Используйте @ синтаксис, чтобы указать метку времени или версию. Метка времени должна быть в yyyyMMddHHmmssSSS формате. Версию можно указать после @ , добавив в нее требуемую версию v . Например, чтобы запросить версию 123 таблицы events , укажите events@v123 .

Пример

SELECT * FROM events@20190101000000000
SELECT * FROM events@v123