對應資料流程中的判斷提示轉換
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 如果您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料。
判斷提示轉換可讓您針對資料品質和資料驗證,在對應資料流程內建置自訂規則。 您可以建置規則,以判斷值是否符合預期的值定義域。 此外,您也可以建置規則來檢查資料列唯一性。 判斷提示轉換可協助您判斷資料中的每個資料列是否符合準則。 判斷提示轉換也可在不符合資料驗證規則時,讓您設定自訂錯誤訊息。
組態
在判斷提示轉換設定面板中,您可選擇判斷提示的類型;提供判斷提示的唯一名稱、選擇性描述;以及定義運算式和選擇性篩選。 資料預覽窗格會指出哪些資料列無法進行判斷提示。 此外,您也可以針對無法進行判斷提示的資料列,使用 isError()
和 hasError()
來測試下游的每個資料列標記。
判斷提示類型
- 預期為 true:運算式的結果必須評估為布林值 true 結果。 使用此類型來驗證資料中的定義域值範圍。
- 預期為唯一:將資料行或運算式設定為資料中的唯一規則。 使用此類型來標記重複的資料列。
- 預期存在:僅當您選取第二個傳入資料流時,才能使用此選項。 存在類型會同時查看兩個資料流,並根據您指定的資料行或運算式,判斷這兩個資料流中是否具有資料列。 若要為存在類型新增第二個資料流,請選取
Additional streams
。
資料流程失敗
如果您想要在判斷提示規則失敗時,讓資料流程活動立即失敗,請選取 fail data flow
。
判斷提示識別碼
判斷提示識別碼是屬性,您可在其中輸入判斷提示的 (字串) 名稱。 您稍後可以使用 hasError()
,或輸出判斷提示的失敗程式碼,來使用資料流程下游中的識別碼。 判斷提示識別碼在每個資料流程內必須是唯一的。
判斷提示描述
在此處輸入判斷提示的字串描述。 您也可以在這裡使用運算式和資料列內容的資料行值。
篩選器
篩選是選擇性屬性,您可以根據運算式值,將判斷提示篩選為僅限資料列的子集。
運算式
輸入運算式來評估每個判斷提示。 每個判斷提示轉換可具有多個判斷提示。 每個判斷提示的類型都需要運算式,該運算式需由 ADF 進行評估,來測試判斷提示是否可通過。
略過 Null
依預設,判斷提示轉換會在資料列判斷提示評估中包含 Null。 您可以選擇略過此屬性的 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 unqiue')) ~> Assert1