Transformace vyhledávání v toku dat mapování

PLATÍ PRO: analýza Azure Data Factory Azure Synapse

Toky dat jsou dostupné jak v Azure Data Factory, tak v Azure Synapse Pipelines. Tento článek se týká mapování toků dat. Pokud s transformacemi začínáte, projděte si úvodní článek Transformace dat pomocí mapování toku dat.

Pomocí transformace vyhledávání můžete odkazovat na data z jiného zdroje ve streamu toku dat. Transformace vyhledávání připojí sloupce z odpovídajících dat ke zdrojovým datům.

Vyhledávací transformace se podobá levému vnějšímu spojení. Všechny řádky z primárního streamu budou existovat ve výstupním streamu s dalšími sloupci z vyhledávacího streamu.

Konfigurace

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

Primární stream: Příchozí datový proud. Tento datový proud je ekvivalentní levé straně spojení.

Vyhledávací stream: Data připojená k primárnímu datovému proudu. Která data se přidají, určují podmínky vyhledávání. Tento datový proud je ekvivalentní pravé straně spojení.

Shoda s více řádky: Pokud je tato možnost povolená, řádek s více shodami v primárním streamu vrátí více řádků. V opačném případě se vrátí pouze jeden řádek na základě podmínky Shoda při.

Shoda: Zobrazí se jenom v případě, že není vybrána možnost Spárovat více řádků. Zvolte, jestli se má shodovat na libovolném řádku, první shoda nebo poslední shoda. Každý řádek se doporučuje, protože se spouští nejrychleji. Pokud je vybraný první řádek nebo poslední řádek, budete muset zadat podmínky řazení.

Podmínky vyhledávání: Zvolte, které sloupce se mají shodovat. Pokud je splněna podmínka rovnosti, budou řádky považovány za shodu. Najetím myší a výběrem počítaného sloupce extrahujte hodnotu pomocí jazyka výrazu toku dat.

Všechny sloupce z obou datových proudů jsou zahrnuty do výstupních dat. Pokud chcete odstranit duplicitní nebo nežádoucí sloupce, přidejte po transformaci vyhledávání výběrovou transformaci . Sloupce lze také v transformaci jímky vynechat nebo přejmenovat.

Spojení non-equi

Pokud chcete použít podmíněný operátor, například nerovná se (!=) nebo větší než (>) ve vyhledávacích podmínkách, změňte rozevírací seznam operátoru mezi dvěma sloupci. Spojení bez equi vyžadují vysílání alespoň jednoho ze dvou datových proudů pomocí pevného vysílání na kartě Optimalizace .

Non-equi lookup

Analýza odpovídajících řádků

Po transformaci vyhledávání se dá tato funkce isMatch() použít k zobrazení, jestli se vyhledávání shoduje s jednotlivými řádky.

Lookup pattern

Příkladem tohoto vzoru je použití podmíněné transformace rozdělení k rozdělení funkce isMatch() . V příkladu výše procházejí odpovídající řádky horním streamem a neshodné řádky procházejí streamem NoMatch .

Testování podmínek vyhledávání

Při testování transformace vyhledávání s náhledem dat v režimu ladění použijte malou sadu známých dat. Při vzorkování řádků z velké datové sady nemůžete předpovědět, které řádky a klíče se budou číst pro testování. Výsledek není deterministický, což znamená, že podmínky spojení nemusí vracet žádné shody.

Optimalizace vysílání

Broadcast Join

Ve spojeních vyhledávání a transformace existuje, pokud jeden nebo oba datové proudy odpovídají paměti pracovního uzlu, můžete optimalizovat výkon povolením vysílání. Ve výchozím nastavení se modul sparku automaticky rozhodne, jestli se má vysílat jedna strana. Pokud chcete ručně zvolit, která strana se má vysílat, vyberte Opraveno.

Nedoporučuje se zakázat vysílání prostřednictvím možnosti Vypnuto , pokud vaše spojení neběží do chyb časového limitu.

Vyhledávání v mezipaměti

Pokud ve stejném zdroji provádíte několik menších vyhledávání, může být jímka uložená v mezipaměti a vyhledávání lepším případem použití než transformace vyhledávání. Běžné příklady, kdy může být jímka mezipaměti lepší, hledá maximální hodnotu v úložišti dat a odpovídající kódy chyb s databází chybových zpráv. Další informace o jímkách mezipaměti a vyhledáváních uložených v mezipaměti

Skript toku dat

Syntax

<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>

Příklad

Screenshot shows the Lookup settings tab for the following code.

Skript toku dat pro výše uvedenou konfiguraci vyhledávání je v následujícím fragmentu kódu.

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

Další kroky