對應資料流中的存在項目轉換
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費啟動新的試用版!
Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 若您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料。
存在項目轉換是一種資料列篩選轉換,可檢查另一個來源或資料流中是否有您的資料。 輸出資料流包含左側資料流的所有資料列 (無論是否存在右側資料流中)。 存在項目轉換與 SQL WHERE EXISTS
和 SQL WHERE NOT EXISTS
類似。
組態
- 在 [右方資料流] 下拉式清單中,選擇要檢查存在項目的資料流。
- 在 [存在類型] 設定中,指定尋找存在或不存在的資料。
- 選取是否要使用自訂運算式。
- 選擇要比較存在條件的索引鍵資料行。 根據預設,資料流程會在每個資料流中的資料行之間尋找等式。 若要透過計算值進行比較,請將滑鼠停留在資料行下拉式清單上,然後選取 [計算資料行]。
多個存在條件
若要比較各資料流的多個資料行,請按一下現有資料列旁的加號圖示,以新增存在條件。 每項額外條件皆會聯結「and」陳述式。 兩個資料行的比較方式與下列運算式相同:
source1@column1 == source2@column1 && source1@column2 == source2@column2
自訂運算式
若要以「and」和「equals to」以外的運算子建立自由格式的運算式,請選取 [自訂運算式] 欄位。 按一下藍色方塊,透過資料流程運算式建立器輸入自訂運算式。
若要透過結構描述漂移使用資料行的「晚期繫結」,在資料流程中建置動態模式,您可使用 byName()
運算式函數來使用存在項目轉換,而無須將資料行名稱進行硬式編碼 (意即早期繫結)。 範例: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))
廣播最佳化
在聯結、查閱和存在轉換中,如果其中一個或兩個資料流納入背景工作角色節點記憶體中,您可以藉由啟用 [廣播] 來最佳化效能。 根據預設,Spark 引擎會自動決定是否要廣播一邊。 若要手動選擇廣播哪一邊,請選取 [固定]。
除非您的聯結遇到逾時錯誤,否則不建議透過 [關閉] 選項停用廣播。
資料流程指令碼
語法
<leftStream>, <rightStream>
exists(
<conditionalExpression>,
negate: { true | false },
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <existsTransformationName>
範例
下列範例是名稱為 checkForChanges
的存在項目轉換,並採用左側資料流 NameNorm2
和右側資料流 TypeConversions
。 存在條件為運算式 NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region
,若同時符合各資料流的 EMPID
和 Region
資料行,則傳回 True。 檢查存在項目時,negate
為 false。 我們不會在 [最佳化] 索引標籤中啟用廣播,因此 broadcast
的值為 'none'
。
在使用者介面中,此轉換如下圖所示:
此轉換的資料流指令碼位於下列程式碼片段中:
NameNorm2, TypeConversions
exists(
NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
negate:false,
broadcast: 'auto'
) ~> checkForChanges