共用方式為


資料表參考

適用於:核取記號為「是」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 ] |
    JOIN clause |
    PIVOT clause |
    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 之前,限制在 FROM

  • UNPIVOT

    適用於:核取記號為「是」Databricks SQL 核取記號為「是」 Databricks Runtime 12.2 LTS 和更新版本。

    用於數據檢視方塊;您可以將多個資料列群組分割成數據列。

  • [LATERAL]table_valued_function_invocation

    叫用數據表值函式。 若要參考上述 table_reference 在相同 FROM 子句中公開的數據行,您必須指定 LATERAL

  • VALUES

    定義內嵌數據表。

  • [LATERAL]( 查詢

    使用查詢計算數據表參考。 前面加上的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_expressionversion都不能是子查詢。

範例

> 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