表格參考
適用於: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 ] }
參數
-
識別可能包含 時態規格的數據表,。 如需詳細資訊,請參閱 使用 Delta Lake 數據表歷程記錄。
如果找不到數據表,Azure Databricks 就會引發 TABLE_OR_VIEW_NOT_FOUND 錯誤。
如需名稱解析的詳細資訊,請參閱 數據行、欄位、參數和變數解析。
適用於: ** Databricks Runtime 16.0 和更新版本
table_name
可能包含選項規格。 -
識別檢視或通用數據表表示式 (CTE)。 如果找不到檢視,Azure Databricks 就會 引發TABLE_OR_VIEW_NOT_FOUND 錯誤。
如需名稱解析的詳細資訊,請參閱 數據行、欄位、參數和變數解析。
流
傳回數據表或數據表值函式做為串流來源。 搭配
STREAM
關鍵詞使用時,無法使用時態規格提供數據表。 串流來源最常用於 串流資料表的定義。-
使用連接結合兩個或多個關係。
-
適用於:Databricks SQL Databricks Runtime 12.2 LTS 和更新版本。
用於資料透視視圖;您可以根據特定資料行的值取得匯總值。
-
適用於:Databricks SQL Databricks Runtime 12.2 LTS 和更新版本。
用於數據視角。您可以將多個資料欄群組分割成列。
[LATERAL]table_valued_function_invocation
調用資料表值函式。 若要參考上述
table_reference
在相同FROM
子句中公開的數據行,您必須指定LATERAL
。-
定義內嵌數據表。
[LATERAL]( 查詢 )
使用查詢來計算資料表的參考。 前面加上
LATERAL
的查詢可能會參考相同FROM
子句中先前table_reference
所公開的數據行。 這類建構稱為相互關聯或相依查詢。-
選擇性地減少結果集的大小,方法是只取樣一小部分的數據列。
-
選擇性地指定的
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
。 例如,若要查詢資料表 events
的版本 123
,請指定 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