與Python教程:聲明一個數據管道三角洲生活表

本教程向您展示了如何使用Python語法來聲明一個數據管道在三角洲住表。用戶熟悉PySpark或熊貓的火花可以使用DataFrames三角洲生活表。用戶不熟悉火花DataFrames,磚建議使用SQL三角洲生活表。看到教程:聲明一個數據管道使用SQL在三角洲住表

Python語法為三角洲住表擴展標準PySpark進口通過一係列的裝飾功能dlt模塊。

請注意

  • 你不能混合語言在三角洲生活表源代碼文件。您可以使用多個筆記本或文件與不同的語言在一個管道。

  • 在這個例子中,使用代碼選擇蜂巢metastore當您創建管道的存儲選項。因為這個例子從DBFS讀取數據,不能運行這個例子與管道配置為使用統一目錄存儲選項。

你在哪裏運行Python三角洲住表查詢?

您可以使用筆記本或Python文件編寫Python三角洲生活表查詢,但三角洲表不是被設計運行交互式地生活在筆記本電池。

三角洲生活表不同於許多Python腳本在一個關鍵:你不調用的函數執行數據攝入和轉換創建三角洲住表數據集。相反,三角洲生活表解釋的裝飾功能dlt模塊在所有文件加載到一個管道和構建一個數據流圖。

重要的

你不能依賴於細胞執行命令的筆記本在編寫Python三角洲生活表。三角洲生活表評估和運行所有代碼中定義的筆記本,但是比一個筆記本一個完全不同的執行模型運行所有命令。

執行一個細胞包含三角洲生活表語法在磚筆記本的結果在一個錯誤消息。了解配置管道與達美住表,看看教程:管道運行第一個三角洲住表

聲明一個三角洲生活與Python表的數據管道

本教程演示如何使用Python語法來聲明一個三角洲生活表管道數據集包含維基百科點擊流數據:

  • 閱讀原始JSON點擊流數據到表中。

  • 閱讀從原始數據表記錄和使用三角洲生活表預期創建一個新表,其中包含清洗數據。

  • 利用潔淨的記錄數據表三角洲生活表查詢,創建派生的數據集。

這段代碼演示了一個圖案架構的簡化示例。看到獎章lakehouse架構是什麼?

將Python代碼複製粘貼到一個新的Python筆記本。您可以將示例代碼添加到筆記本的單細胞或多細胞。回顧筆記創建選項,看看創建一個筆記本

請注意

當您創建一個管道與Python接口,默認情況下,表名是由函數名。例如,下麵的Python示例創建了三個表命名clickstream_raw,clickstream_prepared,top_spark_referrers。你可以覆蓋表名使用的名字參數。看到創建一個三角洲住表物化視圖或流表

導入三角洲生活表模塊

所有三角洲住表Python api實現的dlt模塊。顯式導入dltPython模塊的筆記本和文件。

下麵的例子顯示了這個進口,同時導入語句pyspark.sql.functions

進口dltpyspark.sql.functions進口*

執行任意Python語句

您可以定義Python變量和函數與三角洲生活表代碼在筆記本。所有Python邏輯運行δ生活表解決了管道圖。

下麵的代碼聲明了一個文本變量用於下一步加載JSON數據文件:

json_path=“/ databricks-datasets / wikipedia-datasets /數據2015 - 001 /點擊流/ raw-uncompressed-json / _2_clickstream.json”

創建一個表在對象存儲文件

三角洲生活表支持加載所有數據格式支持的磚。看到在磚與外部數據

@dlt.table裝飾告訴三角洲生活表創建一個表,其中包含DataFrame的結果返回的一個函數。添加@dlt.table裝飾在任何Python函數定義,返回一個火花DataFrame三角洲住表中注冊一個新表。下麵的例子演示了使用函數名作為表名和表添加一個描述性的評論:

@dlt(評論=“原始維基百科點擊流數據集,從/ databricks-datasets攝取。”)defclickstream_raw():返回(火花格式(“json”)負載(json_path))

添加一個表從一個上遊管道中的數據集

您可以使用dlt.read ()閱讀其他數據集的數據聲明的在你當前的三角洲住表管道。宣布新表以這種方式創建一個依賴項,三角洲生活表自動執行更新之前解決。下麵的代碼的例子還包括監測和執行數據質量與預期相符。看到管理數據質量與達美住表

@dlt(評論=“維基百科點擊流數據清洗和準備分析。”)@dlt預計(“valid_current_page_title”,“current_page_title NOT NULL”)@dltexpect_or_fail(“valid_count”,“click_count > 0 ")defclickstream_prepared():返回(dlt(“clickstream_raw”)withColumn(“click_count”,expr(“鑄(n為INT)”))withColumnRenamed(“curr_title”,“current_page_title”)withColumnRenamed(“prev_title”,“previous_page_title”)選擇(“current_page_title”,“click_count”,“previous_page_title”))

創建一個表與豐富數據視圖

因為δ生活表流程更新管道作為一係列的依賴圖,您可以聲明高純度儀表板視圖權力,BI和分析通過聲明表與特定的業務邏輯。

三角洲生活表表物化視圖在概念上是等價的。而引發傳統意見執行邏輯視圖查詢,每次三角洲住表表存儲查詢結果數據文件的最新版本。因為δ生活表管理在一個管道中更新所有數據集,您可以安排管道更新以匹配物化視圖和延遲要求知道查詢這些表包含數據可用的最新版本。

定義的表下麵的代碼演示了物化視圖的概念相似性源於上遊管道中的數據:

@dlt(評論=“一個表包含頁麵鏈接到Apache火花頁麵頂部。”)deftop_spark_referrers():返回(dlt(“clickstream_prepared”)過濾器(expr(“current_page_title = = Apache_Spark”))withColumnRenamed(“previous_page_title”,“referrer”)排序(desc(“click_count”))選擇(“referrer”,“click_count”)限製(10))

下一個步驟

欲了解更多,請看三角洲生活表Python語言參考