對應資料流程中的判斷提示轉換
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!
Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 如果您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料。
Assert 轉換可讓您在對應數據流內建置自定義規則,以取得數據品質和數據驗證。 您可以建置規則,以判斷值是否符合預期的值定義域。 此外,您也可以建置規則來檢查資料列唯一性。 Assert 轉換有助於判斷數據中的每個數據列是否符合一組準則。 判斷提示轉換也可讓您在不符合資料驗證規則時設定自定義錯誤訊息。
組態
在判斷提示轉換組態面板中,您可以選擇判斷提示的類型、提供判斷提示的唯一名稱、選擇性描述,以及定義表達式和選擇性篩選。 [數據預覽] 窗格會指出哪些數據列失敗了您的判斷提示。 此外,您也可以針對無法進行判斷提示的資料列,使用 isError()
和 hasError()
來測試下游的每個資料列標記。
判斷提示類型
- 預期為 true:運算式的結果必須評估為布林值 true 結果。 使用此設定來驗證數據中的定義域值範圍。
- 預期為唯一:將資料行或運算式設定為資料中的唯一規則。 使用此設定來標記重複的數據列。
- 預期存在:只有在您選取第二個傳入數據流時,才能使用此選項。 Exists 會同時查看數據流,並根據您指定的數據行或表達式,判斷這兩個數據流中的數據列是否存在。 若要為存在類型新增第二個資料流,請選取
Additional streams
。
資料流程失敗
如果您想要在判斷提示規則失敗時,讓資料流程活動立即失敗,請選取 fail data flow
。
判斷提示識別碼
判斷提示標識碼是輸入判斷提示的屬性(字串)名稱。 您稍後可以使用 數據流中的 hasError()
識別碼,或使用 或 輸出判斷提示失敗碼。 判斷提示識別碼在每個資料流程內必須是唯一的。
判斷提示描述
在此處輸入判斷提示的字串描述。 您也可以在這裡使用運算式和資料列內容的資料行值。
篩選器
篩選是選擇性屬性,您可以根據運算式值,將判斷提示篩選為僅限資料列的子集。
運算式
輸入運算式來評估每個判斷提示。 每個判斷提示轉換可具有多個判斷提示。 每個判斷提示類型都需要ADF評估的表達式,以測試判斷提示是否通過。
略過 Null
根據預設,判斷提示轉換會在數據列判斷提示評估中包含 NUL。 您可以選擇略過此屬性的 Null。
直接判斷提示資料列失敗
當判斷提示失敗時,您可選擇性使用接收器轉換的 [錯誤] 索引標籤,將這些錯誤資料列導向 Azure 中的檔案。 您也可以選擇接收轉換,不藉由忽略錯誤數據列來輸出判斷提示失敗的數據列。
範例
source(output(
AddressID as integer,
AddressLine1 as string,
AddressLine2 as string,
City as string,
StateProvince as string,
CountryRegion as string,
PostalCode as string,
rowguid as string,
ModifiedDate as timestamp
),
allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
format: 'table') ~> source1
source(output(
CustomerID as integer,
AddressID as integer,
AddressType as string,
rowguid as string,
ModifiedDate as timestamp
),
allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
format: 'table') ~> source2
source1, source2 assert(expectExists(AddressLine1 == AddressLine1, false, 'nonUS', true(), 'only valid for U.S. addresses')) ~> Assert1
資料流程指令碼
範例
source1, source2 assert(expectTrue(CountryRegion == 'United States', false, 'nonUS', null, 'only valid for U.S. addresses'),
expectExists(source1@AddressID == source2@AddressID, false, 'assertExist', StateProvince == 'Washington', toString(source1@AddressID) + ' already exists in Washington'),
expectUnique(source1@AddressID, false, 'uniqueness', null, toString(source1@AddressID) + ' is not unique')) ~> Assert1