Delta Live Tables Python語言引用

本文提供了Delta Live Tables Python編程接口的詳細信息和示例。有關完整的API規範,請參閱Python API規範

有關SQL API的信息,請參見Delta Live Tables SQL語言引用

限製

Delta Live Tables Python接口有以下限製:

  • Python表格而且視圖函數必須返回一個數據幀。一些操作dataframe的函數不返回dataframe,不應該被使用。因為執行了DataFrame轉換完整的數據流圖已解析,使用此類操作可能會產生意想不到的副作用。這些操作包括如下函數收集()count ()toPandas ()save (),saveAsTable ().但是,可以將這些函數包含在表格視圖函數定義,因為這段代碼在圖初始化階段隻運行一次。

  • 主()函數不支持。的Spark中的操作需要立即加載輸入數據來計算輸出的模式。Delta Live表不支持此功能。

Python數據集

Python API定義在dlt模塊。您必須導入dlt使用Python API實現的Delta Live Tables管道中的模塊。應用@dlt.view@dlt.table函數的裝飾器來定義Python中的視圖或表。可以使用函數名或名字參數來分配表或視圖名稱。下麵的示例定義了兩個不同的數據集taxi_raw一個JSON文件作為輸入源和一個名為filtered_data這需要taxi_raw視圖作為輸入:

@dlt視圖deftaxi_raw():返回火花格式“json”負載“/ databricks-datasets / nyctaxi /樣本/ json /”使用函數名作為表名@dlt表格deffiltered_data():返回dlt“taxi_raw”在哪裏...#使用name參數作為表名@dlt表格名字“filtered_data”defcreate_filtered_data():返回dlt“taxi_raw”在哪裏...

視圖和表函數必須返回一個SparkDataFrame或者考拉DataFrame.函數返回的Koalas DataFrame被Delta Live Tables運行時轉換為Spark Dataset。

除了閱讀之外外部數據源,您可以訪問與Delta Live Tables在同一管道中定義的數據集read ()函數。下麵的示例演示如何創建beplay体育app下载地址customers_filtered數據集使用read ()功能:

@dlt表格defbeplay体育app下载地址customers_raw():返回火花格式“csv”負載“/數據/ cbeplay体育app下载地址ustomers.csv”@dlt表格defbeplay体育app下载地址customers_filteredA():返回dlt“beplay体育app下载地址customers_raw”在哪裏...

你也可以使用spark.table ()函數訪問在同一管道中定義的數據集或在metastore中注冊的表。當使用spark.table ()函數來訪問在管道中定義的數據集,則在函數參數的前麵生活關鍵字到數據集名稱:

@dlt表格defbeplay体育app下载地址customers_raw():返回火花格式“csv”負載“/數據/ cbeplay体育app下载地址ustomers.csv”@dlt表格defbeplay体育app下载地址customers_filteredB():返回火花表格“LIVE.beplay体育app下载地址customers_raw”在哪裏...

來讀取數據表登記在亞轉移,在函數參數中省略生活關鍵字,並可選地用數據庫名稱限定表名:

@dlt表格defbeplay体育app下载地址():返回火花表格“sales.beplay体育app下载地址customers”在哪裏...

Delta Live Tables確保管道自動捕獲數據集之間的依賴關係。當執行更新並在管道的事件日誌中記錄沿襲信息時,此依賴項信息用於確定執行順序。

方法也可以返回數據集spark.sql查詢函數中的表達式。若要從內部數據集讀取數據,請使用前置操作生活。到數據集名稱:

@dlt表格defchicago_beplay体育app下载地址customers():返回火花sqlselect * from live。beplay体育app下载地址customers_cleaned WHERE city = 'Chicago'"

視圖和表都有以下可選屬性:

  • 評論:此數據集的人類可讀的描述。

  • spark_conf:一個Python字典,僅包含執行此查詢所需的Spark配置。

  • 執行的數據質量約束預期

表還提供了對其物化的額外控製:

  • 指定表是怎樣的分區使用partition_cols.您可以使用分區來加快查詢速度。

  • 您可以在定義視圖或表時設置表屬性。看到表屬性欲知詳情。

  • 屬性為表數據設置存儲位置路徑設置。默認情況下,表數據存儲在管道存儲位置路徑不設置。

  • 您可以選擇使用Python指定表模式StructType或SQL DDL字符串。當使用DDL字符串指定時,定義可以包括生成的列.下麵的示例創建一個名為銷售使用顯式指定的模式:

    sales_schemaStructType([StructField“customer_id”StringType(),真正的),StructField“customer_name”StringType(),真正的),StructField“number_of_line_items”StringType(),真正的),StructField“order_datetime”StringType(),真正的),StructField“order_number”LongType(),真正的)]@dlt表格評論“銷售原始數據”模式sales_schemadef銷售():返回“…”@dlt表格評論“銷售原始數據”模式”“”customer_id字符串,customer_name字符串,number_of_line_items字符串,order_datetime字符串,order_number長,(dayofweek(order_datetime))”“”partition_cols“order_day_of_week”])def銷售():返回“…”

    默認情況下,Delta Live表從表格定義,如果不指定模式。

Python庫

要指定外部Python庫,請使用%皮普安裝神奇的命令。更新開始時,Delta Live Tables將運行所有包含%皮普安裝命令,然後再運行任何表定義。管道中包含的每個Python筆記本都可以訪問所有已安裝的庫。下麵的示例安裝numpy庫,並使它對管道中的任何Python筆記本都可以全局使用:

皮普安裝numpy進口numpy作為np

要安裝Python wheel包,請將wheel路徑添加到%皮普安裝命令。已安裝的Python輪包可用於管道中的所有表。下麵的示例安裝一個名為dltfns - 1.0 - py3 any.whl——沒有從DBFS目錄/ dbfs / dlt /

皮普安裝/dbfs/dlt/dltfns-1.0-py3-沒有一個-任何whl

看到安裝一個車輪包%pip

Python API規範

Python模塊

Delta Live Tables Python函數定義在dlt模塊。使用Python API實現的管道必須導入這個模塊:

進口dlt

創建表

要在Python中定義表,請應用@ table裝飾。的@ table控件的別名@create_table裝飾。

進口dlt@dlt表格名字“<名稱>”評論“< >評論”spark_conf“< >鍵”“<價值”“<鍵”“< >價值”},table_properties“< >鍵”“< >價值”“< >鍵”“< >價值”},路徑“< storage-location-path >”partition_cols“<劃分字段>”“<劃分字段>”),模式“模式定義”臨時@dlt預計@dltexpect_or_fail@dltexpect_or_drop@dltexpect_all@dltexpect_all_or_drop@dltexpect_all_or_faildef<函數-名字>():返回<查詢>

創建視圖

要在Python中定義視圖,請應用@view裝飾。的@view控件的別名@create_view裝飾。

進口dlt@dlt視圖名字“<名稱>”評論“< >評論”@dlt預計@dltexpect_or_fail@dltexpect_or_drop@dltexpect_all@dltexpect_all_or_drop@dltexpect_all_or_faildef<函數-名字>():返回<查詢>

Python的屬性

@table或@view

名字

類型:str

表或視圖的可選名稱。如果沒有定義,則使用函數名作為表或視圖名。

評論

類型:str

表的可選描述。

spark_conf

類型:dict

用於執行此查詢的可選Spark配置列表。

table_properties

類型:dict

可選的表屬性在桌子上。

路徑

類型:str

表數據的可選存儲位置。如果不設置,係統將默認為管道存儲位置。

partition_cols

類型:數組

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

模式

類型:strStructType

表的可選模式定義。模式可以定義為SQL DDL字符串,也可以定義為PythonStructType

臨時

類型:保齡球

創建臨時表。此表沒有持久化元數據。

默認為“False”。

表或視圖定義

def <函數名> ()

定義數據集的Python函數。如果名字參數未設置,則<函數名>用作目標數據集名稱。

查詢

一個返回Spark Dataset或Koalas DataFrame的Spark SQL語句。

使用dlt.read ()spark.table ()從同一管道中定義的數據集中執行完整的讀取。當使用spark.table ()函數來從同一管道中定義的數據集中讀取數據,則在生活關鍵字到函數參數中的數據集名稱。例如,從名為beplay体育app下载地址

spark.table(“LIVE.beplay体育app下载地址customers”)

你也可以使用spark.table ()函數從亞metastore中注冊的表中讀取生活關鍵字,並可選地用數據庫名稱限定表名:

spark.table(“sales.beplay体育app下载地址customers”)

使用dlt.read_stream ()從同一管道中定義的數據集中執行流式讀取。

使用spark.sql函數定義一個SQL查詢來創建返回數據集。

使用PySpark語法,用Python定義Delta Live Tables查詢。

預期

@expect(“描述”、“約束”)

聲明由標識的數據質量約束描述.如果某行違反預期,則將該行包含在目標數據集中。

@expect_or_drop(“描述”、“約束”)

聲明由標識的數據質量約束描述.如果某行違反預期,則從目標數據集中刪除該行。

@expect_or_fail(“描述”、“約束”)

聲明由標識的數據質量約束描述.如果某行違反預期,立即停止執行。

@expect_all(期望)

聲明一個或多個數據質量約束。預期是一個Python字典,鍵是期望描述,值是期望約束。如果某行違反了任何期望,則將該行包含在目標數據集中。

@expect_all_or_drop(期望)

聲明一個或多個數據質量約束。預期是一個Python字典,鍵是期望描述,值是期望約束。如果某行違反任何預期,則從目標數據集中刪除該行。

@expect_all_or_fail(期望)

聲明一個或多個數據質量約束。預期是一個Python字典,鍵是期望描述,值是期望約束。如果某行違反了任何預期,立即停止執行。

表屬性

所支持的表屬性之外三角洲湖,可以設置以下表屬性。

表屬性

pipelines.autoOptimize.managed

默認值:真正的

啟用或禁用此表的自動調度優化。

pipelines.autoOptimize.zOrderCols

默認值:無

一個可選字符串,包含以逗號分隔的列名列表,該表按z順序排列。例如,pipelines.autoOptimize.zOrderCols“年、月”

pipelines.reset.allowed

默認值:真正的

控製是否允許此表進行完全刷新。