對應資料流程中的查閱轉換

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 如果您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料

使用查閱轉換在資料流程串流中參考另一個來源的資料。 查閱轉換會將相符資料的資料行附加到您的來源資料。

查閱轉換類似於左方外部聯結。 主要串流中的所有資料列將會存在於輸出串流中,並具有來自查閱串流的其他資料行。

組態

Screenshot shows the Lookup settings tab with the labels described in the following text.

主要資料流: 資料的傳入資料。 此串流相當於聯結的左側。

查閱串流: 附加至主要串流的資料。 要新增的資料會由查閱條件決定。 這個串流相當於聯結的右側。

比對多個資料列: 如果啟用,在主要串流中具有多個相符項目的資料列就會傳回多個資料列。 否則,只會根據「相符」條件傳回單一資料列。

相符:只有在未選取 [符合多個資料列] 時才會顯示。 選擇要符合任何資料列、最初相符還是最後相符。 建議使用任何資料列,因為其執行速度最快。 如果選取了第一個資料列或最後一個資料列,您就必須指定排序條件。

查閱條件: 選擇要比對的資料行。 如果符合相等條件,則會將資料列視為相符。 暫留游標並選取 [計算資料行],以使用資料流程運算式語言來擷取值。

這兩個串流中的所有資料行都會包含在輸出資料中。 若要捨棄重複或不必要的資料行,請在查閱轉換之後新增選取轉換。 您也可以在接收轉換中捨棄或重新命名資料行。

不相等聯結

若要在查閱條件中使用條件運算子,例如不相等 (!=) 或大於 (>),請變更兩個資料行之間的運算子下拉式清單。 不相等聯結需要至少廣播兩個串流的其中一個,方法為使用 [最佳化] 索引標籤中的 [固定] 廣播。

Non-equi lookup

分析符合的資料列

在查閱轉換之後,可使用函式 isMatch() 來查看查閱是否符合個別資料列。

Lookup pattern

此模式的範例是使用條件式分割轉換來分割 isMatch() 函式。 在上述範例中,相符資料列會通過最上方的串流,而不符合的資料列則會流經 NoMatch 串流。

測試查閱條件

在偵錯模式中使用資料預覽來測試查閱轉換時,請使用小型的已知資料集。 從大型資料集中取樣資料列時,您無法預測將讀取哪些資料列和索引鍵進行測試。 結果是不具確定性的,這表示您的聯結條件可能不會傳回任何相符項。

廣播最佳化

Broadcast Join

在聯結、查閱和存在轉換中,如果其中一個或兩個資料流納入背景工作角色節點記憶體中,您可以藉由啟用 [廣播] 來最佳化效能。 根據預設,Spark 引擎會自動決定是否要廣播一邊。 若要手動選擇廣播哪一邊,請選取 [固定]

除非您的聯結遇到逾時錯誤,否則不建議透過 [關閉] 選項停用廣播。

快取的查閱

如果您是在相同的來源上執行多個較小的查閱,快取的接收和查閱可能是比查閱轉換更好的使用案例。 快取接收可能比較好的常見範例是在資料存放區上查閱最大值,並將錯誤碼與錯誤訊息資料庫比對。 如需詳細資訊,請了解快取接收快取查閱

資料流程指令碼

語法

<leftStream>, <rightStream>
    lookup(
        <lookupConditionExpression>,
        multiple: { true | false },
        pickup: { 'first' | 'last' | 'any' },  ## Only required if false is selected for multiple
        { desc | asc }( <sortColumn>, { true | false }), ## Only required if 'first' or 'last' is selected. true/false determines whether to put nulls first
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <lookupTransformationName>

範例

Screenshot shows the Lookup settings tab for the following code.

上述查閱設定的資料流程指令碼位於下列程式碼片段中。

SQLProducts, DimProd lookup(ProductID == ProductKey,
    multiple: false,
    pickup: 'first',
    asc(ProductKey, true),
    broadcast: 'auto')~> LookupKeys