Поделиться через


Ссылка на таблицу

Область применения:флажок Databricks SQL флажок Databricks Runtime

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

Синтаксис

table_reference
  { table_name [ TABLESAMPLE clause ] [ table_alias ] |
    { STREAM table_name [ table_alias ] | STREAM ( table_name ) [ table_alias ] } |
    view_name [ table_alias ] |
    table_reference JOIN clause |
    table_reference PIVOT clause |
    table_reference UNPIVOT clause |
    [ STREAM ] table_valued_function [ table_alias ] |
    [ LATERAL ] table_valued_function [ table_alias ] |
    VALUES clause |
    [ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }

Параметры

  • table_name

    Определяет таблицу, которая может содержать темпоральную спецификацию. Подробности см. в разделе История таблиц Delta Lake.

    Если таблица не найдена, Azure Databricks вызывает ошибку TABLE_OR_VIEW_NOT_FOUND.

    Более подробную информацию о разрешении имен см. в подразделе "Столбец, поле, параметр и переменная".

    Область применения: ** отмечено 'Да' Databricks Runtime 16.0 и более поздние версии

    table_nameможет включать спецификацию параметров.

  • view_name

    Определяет представление или общее табличное выражение (CTE). Если представление не удается найти Azure Databricks, возникает ошибка TABLE_OR_VIEW_NOT_FOUND .

    Более подробную информацию о разрешении имен см. в подразделе "Столбец, поле, параметр и переменная".

  • ПОТОК

    Возвращает таблицу или табличное значение функции в качестве источника потоковой передачи. Таблицы нельзя предоставить с темпоральной спецификацией при использовании с ключевым словом STREAM. Источники потоковой передачи чаще всего используются в определениях таблиц потоковой передачи .

  • JOIN

    Объединяет два или более отношения с помощью соединения.

  • PIVOT

    Область применения:флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и более поздних версий.

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

    До Databricks Runtime 12.0 PIVOT ограничено SELECT в соответствии с положением FROM.

  • UNPIVOT

    Область применения:флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и более поздних версий.

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

  • [БОКОВОЙ]table_valued_function_invocation

    Вызывает табличную функцию. Чтобы ссылаться на столбцы, предоставляемые предыдущим table_reference в том же предложении FROM, необходимо указать LATERAL.

  • VALUES

    Определяет встроенную таблицу.

  • [LATERAL] ( query )

    Вычисляет ссылку на таблицу с помощью запроса. Запрос с префиксом LATERAL может ссылаться на столбцы, предоставляемые предыдущим table_reference в той же конструкции FROM. Такая конструкция называется коррелированным или зависимым запросом.

  • TABLESAMPLE

    По желанию уменьшить размер результирующего набора, выбирая только часть строк.

  • table_alias

    При необходимости задает метку для table_reference. Если table_alias включает column_identifierих число должно соответствовать количеству столбцов в table_reference.

Выборка из таблицы Delta

Помимо стандартных SELECT параметров, таблицы Delta поддерживают возможности путешествия во времени, описанные в этом разделе. Дополнительные сведения см. в разделе Работа с журналом таблиц 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

Примеры


-- Return a data set from a storage location using a credential.
> SELECT * FROM `csv`.`spreadsheets/data.csv` WITH(CREDENTIAL some_credential);

-- Select from a jdbc data source while controlling the fetch size.
> SELECT * FROM jdbcTable WITH(fetchSize = 0);

-- 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