三角洲生活表SQL語言參考

本文提供了細節的三角洲生活表的SQL編程接口。

您可以使用Python用戶定義函數(udf)在您的SQL查詢,但你必須定義這些udf在Python文件之前調用SQL源文件。看到用戶自定義標量函數——Python

限製

不支持條款。的操作的火花需要立即加載輸入數據來計算輸出的模式。不支持此功能在三角洲住表。

創建一個三角洲住表物化視圖或流表

您使用相同的基本的SQL語法時宣布一個流表或物化視圖(也稱為生活)。

你隻能申報使用查詢流表讀取流源。磚建議使用自動加載程序流攝入從雲對象存儲的文件。看到自動加載程序SQL語法

你必須包括流()函數在一個數據集名稱指定其他表或視圖時管道流源。

下麵描述了聲明的語法物化視圖和流媒體與SQL表:

創建或更新(臨時){流表|生活表}table_name [([col_name1 col_type1[生成總是像generation_expression1][評論col_comment1], col_name2 col_type2[生成總是像generation_expression2][評論col_comment2],…][約束expectation_name_1期望(expectation_expr1)[違反{失敗更新|刪除行}),約束expectation_name_2期望(expectation_expr2)(在違反{失敗更新|刪除行}),…])][使用三角洲][分區(col_name1、col_name2…))[位置路徑][評論table_comment] [TBLPROPERTIES (key1 [=] val1 key2 = val2,…))作為select_statement

創建一個三角洲住表視圖

下麵描述了聲明視圖使用SQL的語法:

創建臨時(流)實時視圖view_name [([col_name1[評論col_comment1], col_name2 col_comment2評論,…][約束expectation_name_1期望(expectation_expr1)[違反{失敗更新|刪除行}),約束expectation_name_2期望(expectation_expr2)(在違反{失敗更新|刪除行}),…select_statement])][評論view_comment]

自動加載程序SQL語法

下麵描述了使用自動加載程序在SQL的語法:

創建刷新流媒體table_name作為選擇*cloud_files(“<文件路徑>”,“<文件格式>”,地圖(“< option鍵>”,“< option_value”,“< option鍵>”,“< option_value”,))

你可以使用支持格式選項自動加載程序。使用map ()功能,你可以將任意數量的選項傳遞給cloud_files ()方法。選項是鍵值對,其中鍵和值都是字符串。支持格式和選項的細節,請參閱文件格式選項

例如:定義表

您可以創建一個數據集通過閱讀從外部數據源或數據集定義在一個管道中。閱讀從一個內部數據集,預謀生活關鍵字的數據集的名稱。下麵的例子定義了兩個不同的數據集:一個表taxi_raw這需要JSON文件作為輸入源和一個表filtered_data這需要的taxi_raw表作為輸入:

創建刷新生活taxi_raw作為選擇*json' /- - - - - -數據集/nyctaxi/樣本/json/ '創建刷新生活filtered_data作為選擇生活taxi_raw

例如:從流讀取源

從流讀取數據來源,例如,自動加載器或一個內部數據集,定義一個流媒體表:

創建刷新流媒體beplay体育app下载地址customers_bronze作為選擇*cloud_files(“/ databricks-datasets / retail-obeplay体育app下载地址rg /客戶/”,“csv”)創建刷新流媒體beplay体育app下载地址customers_silver作為選擇*(生活beplay体育app下载地址customers_bronze)

流數據的更多信息,請參閱轉換數據與達美住表

控製表是如何實現的

表也提供額外的控製他們的具體化:

請注意

表的大小小於1 TB,磚建議讓三角洲生活表控製數據的組織。除非你希望你表超出tb,通常不應當指定分區列。

例如:指定一個模式和分區列

你可以指定一個模式定義一個表。下麵的示例指定目標表的模式,包括使用三角洲湖生成的列和定義分區表的列:

創建刷新生活銷售(customer_id字符串,customer_name字符串,number_of_line_items字符串,order_datetime字符串,order_number,order_day_of_week字符串生成的總是作為(dayofweek(order_datetime)))分區通過(order_day_of_week)評論“銷售原始數據”作為選擇*

默認情況下,三角洲生活表推斷的模式如果你不指定一個模式定義。

為一個表或視圖設置配置值

使用指定一個表或視圖的配置值,包括火花配置。任何表或視圖定義在一個筆記本聲明訪問已定義的值。任何火花配置指定使用查詢語句執行時使用引發任何表或視圖設置語句。閱讀一個查詢的配置值,使用字符串插值語法$ {}。下麵的示例設置一個火花配置值命名startDate可以在查詢和使用價值:

設置startDate可以= ' 2020-01-01 ';創建或刷新生活表過濾從src,日期> SELECT * $ {startDate可以}

指定多個配置值,使用一個單獨的聲明為每個值。

SQL特性

創建表或視圖

臨時

創建一個臨時表。不持續這個表的元數據。

流媒體

創建一個表讀取一個輸入數據集作為一個流。輸入數據集必須流數據來源,例如,汽車裝載機或流媒體表。

分區通過

一個可選的一列或多列列表用於分區表。

位置

一個可選的表數據的存儲位置。如果沒有設置,係統將默認存儲位置。

評論

一個可選描述表。

TBLPROPERTIES

一個可選列表表屬性為表。

select_statement

δ生活表查詢定義表的數據集。

約束條款

預計expectation_name

定義數據質量約束expectation_name。如果違反約束沒有定義,將違反約束的行添加到目標數據集。

違反

可選操作失敗的行:

  • 失敗更新管道:立即停止執行。

  • 下降:將記錄並繼續進行處理。

改變δ生活表中數據獲取與SQL

使用應用變化聲明使用三角洲住表疾病預防控製中心功能,如以下所述:

創建或更新流表table_name;應用到生活變化。table_name從source KEYS (keys) [WHERE condition] [IGNORE NULL UPDATES] [APPLY AS DELETE WHEN condition] [APPLY AS TRUNCATE WHEN condition] SEQUENCE BY orderByColumn [COLUMNS {columnList | * EXCEPT (exceptColumnList)}] [STORED AS {SCD TYPE 1 | SCD TYPE 2}] [TRACK HISTORY ON {columnList | * EXCEPT (exceptColumnList)}]

請注意

的默認行為插入更新事件是插入疾控中心事件從源:更新任何目標表中的行匹配指定的鍵(s)或時插入一個新行匹配的目標表中的記錄不存在。處理的刪除可以指定的事件應用作為刪除條件。

重要的

你必須聲明一個目標流表應用更改。您可以選擇指定目標表的模式。當指定的模式應用變化目標表,你還必須包括__START_AT__END_AT列有相同的數據類型sequence_by字段。

看到改變數據獲取與三角洲生活表

條款

列或列的組合唯一地標識源數據中的一行。這是用來確定哪些疾病預防控製中心事件適用於目標表中的特定記錄。

這一條款是必需的。

在哪裏

條件應用到源和目標觸發等優化分區修剪。這種情況不能用於降低源行;所有疾病預防控製中心行源必須滿足這個條件或者是拋出一個錯誤。使用WHERE子句是可選的,應該使用當您的處理需要特定的優化。

這一條款是可選的。

忽略更新

允許攝入更新包含目標列的一個子集。當一個中心事件匹配指定一個現有的行和忽略NULL更新,列了將保留現有的價值目標。這也適用於嵌套列的值

這一條款是可選的。

默認是覆蓋現有的列值。

應用作為刪除

指定當事件應該被視為一個疾控中心刪除而不是插入。處理無序的數據,刪除行暫時保留作為一個墓碑在底層三角洲表,並創建一個視圖metastore過濾掉這些墓碑。保留時間間隔可以配置了pipelines.cdc.tombstoneGCThresholdInSeconds表屬性

這一條款是可選的。

應用作為截斷

指定當一個中心事件應該被視為一個完整的表截斷。因為這一條款觸發目標表的完整截斷,它應該隻用於特定的用例需要此功能。

應用作為截斷支持條款隻對SCD 1型。化合物2型不支持截斷。

這一條款是可選的。

序列通過

疾控中心的列名稱指定邏輯順序事件源數據。三角洲生活表使用這個序列處理變更的事件到達的順序。

這一條款是必需的。

指定要包含在目標表列的一個子集。你可以:

  • 指定列的完整列表包括:(用戶標識,的名字,市)

  • 指定一個列排除列表:*除了(操作,sequenceNum)

這一條款是可選的。

默認是在目標表包含所有列沒有指定條款。

存儲作為

是否保存記錄SCD 1型或SCD 2型。

這一條款是可選的。

缺省值是SCD 1型。

跟蹤曆史

pipelines.enableTrackHistory設置,指定輸出列的一個子集生成曆史記錄有任何變化時的指定列。您可以指定:

  • 指定列的完整列表跟蹤:(用戶標識,的名字,市)

  • 指定的列列表被排除在跟蹤:*除了(操作,sequenceNum)

這一條款是可選的。所有的輸出列的默認跟蹤曆史有任何更改時,相當於跟蹤曆史*

要使用這一條款,您必須設置pipelines.enableTrackHistory在管道設置。否則,就會拋出一個異常。當pipelines.enableTrackHistory沒有設置,為每個輸入行生成一個曆史記錄。