三角洲生活表SQL語言參考
預覽
這個特性是在公共預覽。
本文提供了細節的三角洲生活表的SQL編程接口。
Python API的信息,請參閱三角洲生活表Python語言參考。
關於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(“< file_path >”,“< file_format >”,地圖(“< option_key >”,“< option_value”,“< option_key >”,“< 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)
流數據的更多信息,請參閱轉換數據與達美住表。
控製表是如何實現的
表也提供額外的控製他們的具體化:
指定如何表分區使用
分區通過
。您可以使用分區加快查詢速度。你可以設置表屬性使用
TBLPROPERTIES
。看到三角洲生活表屬性表。設置存儲位置使用
位置
設置。默認情況下,管道表數據存儲在存儲位置位置
不設置。您可以使用生成的列在你的模式定義。看到例如:指定一個模式和分區列。
請注意
表的大小小於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 定義數據質量約束 |
對違反 可選操作失敗的行:
|
改變δ生活表中數據獲取與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更新 允許攝入更新包含目標列的一個子集。當一個中心事件匹配指定一個現有的行和忽略NULL更新,列了 這一條款是可選的。 默認是覆蓋現有的列 |
使用時刪除 指定當事件應該被視為一個疾控中心 這一條款是可選的。 |
應用時截斷 指定當一個中心事件應該被視為一個完整的表 的 這一條款是可選的。 |
序列由 疾控中心的列名稱指定邏輯順序事件源數據。三角洲生活表使用這個序列處理變更的事件到達的順序。 這一條款是必需的。 |
列 指定要包含在目標表列的一個子集。你可以:
這一條款是可選的。 默認是在目標表包含所有列 |
存儲為 是否保存記錄SCD 1型或SCD 2型。 這一條款是可選的。 缺省值是SCD 1型。 |
追蹤曆史 當
這一條款是可選的。所有的輸出列的默認跟蹤曆史有任何更改時,相當於 要使用這一條款,您必須設置 |