使用Delta Live Tables管理數據質量

使用期望定義數據集內容上的數據質量約束。期望由描述、不變量和當記錄不符合不變量時所采取的操作組成。您可以使用Python裝飾器或SQL約束子句將期望應用於查詢。

使用預計預計下降,預計失敗期望使用Python或SQL查詢來定義單個數據質量約束。

屬性在Python管道中定義帶有一個或多個數據質量約束的期望@expect_all@expect_all_or_drop,@expect_all_or_fail修飾符。這些裝飾器接受Python字典作為參數,其中鍵是期望名稱,值是期望約束。

您可以通過查詢Delta Live Tables查看數據質量度量,例如違反預期的記錄數量事件日誌

保留無效記錄

使用預計當您想要保留違反期望的記錄時,使用操作符。違反預期的記錄將與有效記錄一起添加到目標數據集:

@dlt預計“有效時間戳”"col(" timestamp ") > '2012-01-01'"
約束valid_timestamp預計時間戳>“2012-01-01”

刪除無效記錄

使用預計下降操作符防止處理無效記錄。違反期望的記錄將從目標數據集中刪除:

@dltexpect_or_drop“valid_current_page”"current_page_id不是空,current_page_title不是空"
約束valid_current_page預計current_page_id而且current_page_title違反下降

無效記錄失敗

無效記錄不可接受時,使用預計失敗操作符在記錄驗證失敗時立即停止執行。如果操作是表更新,係統自動回滾事務:

@dltexpect_or_fail“valid_count”"count > 0"
約束valid_count預計>0違反失敗更新

當管道因違反期望而失敗時,必須修複管道代碼以正確處理無效數據,然後才能重新運行管道。

失敗預期修改轉換的Spark查詢計劃,以跟蹤檢測和報告違規所需的信息。對於許多查詢,您可以使用此信息來確定導致違規的輸入記錄。例外示例如下:

預期違反:“flowName”:“a - b”," verboseInfo ": {“expectationsViolated”:(x1是負的)," inputData ": {"a": {"x1": 1,"y1": "a}," b ": {“x2”:1、“日元”:“aa”}," outputRecord ": {“x1”:1、“日元”:“一”,“x2”:1、“日元”:“aa”},“missingInputData”:假的

多個預期

使用expect_all當驗證失敗的記錄應包含在目標數據集中時,指定多個數據質量約束:

@dltexpect_all({“valid_count”"count > 0"“valid_current_page”"current_page_id不是空,current_page_title不是空"})

使用expect_all_or_drop當從目標數據集中刪除驗證失敗的記錄時,指定多個數據質量約束:

@dltexpect_all_or_drop({“valid_count”"count > 0"“valid_current_page”"current_page_id不是空,current_page_title不是空"})

使用expect_all_or_fail當驗證失敗的記錄應該停止管道執行時,指定多個數據質量約束:

@dltexpect_all_or_fail({“valid_count”"count > 0"“valid_current_page”"current_page_id不是空,current_page_title不是空"})

你也可以將期望集合定義為變量,並將其傳遞給管道中的一個或多個查詢:

valid_pages“valid_count”"count > 0"“valid_current_page”"current_page_id不是空,current_page_title不是空"@dlt表格@dltexpect_allvalid_pagesdefraw_data():#創建原始數據集@dlt表格@dltexpect_all_or_dropvalid_pagesdefprepared_data():#創建清潔和準備好的數據集