Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.
Toky dat jsou k dispozici v kanálech Azure Data Factory i v kanálech Azure Synapse Analytics. Tento článek se týká mapování toků dat. Pokud s transformacemi začínáte, přečtěte si úvodní článek Transformace dat pomocí mapování toků dat.
Tip
Ekvivalentní transformace (dotazy sloučení) v toku dat Gen2 najdete v průvodci tokem dat Gen2 pro mapování uživatelů toku dat.
Pomocí transformace spojení můžete zkombinovat data ze dvou zdrojů nebo datových proudů v toku dat mapování. Výstupní datový proud obsahuje všechny sloupce z obou zdrojů, které jsou propojeny na základě podmínky spojení.
Typy spojení
Mapování toků dat aktuálně podporuje pět různých typů spojení.
Vnitřní spojení
Vnitřní spojení vypíše pouze řádky, které mají odpovídající hodnoty v obou tabulkách.
Levý vnější
Levé vnější spojení vrátí všechny řádky z levého datového proudu a odpovídající záznamy z pravého datového proudu. Pokud řádek z levého datového proudu neodpovídá, výstupní sloupce z pravého datového proudu jsou nastaveny na hodnotu NULL. Výstupem jsou řádky získané vnitřním spojením a neodpovídající řádky z levého datového proudu.
Poznámka:
Modul Spark používaný toky dat občas selže kvůli možným kartézským produktům v podmínkách spojení. Pokud k tomu dojde, můžete přepnout na vlastní křížové spojení a ručně zadat podmínku spojení. Výsledkem může být pomalejší výkon toků dat, protože prováděcí modul může potřebovat vypočítat všechny řádky z obou stran relace a potom filtrovat řádky.
Pravý vnější
Pravé vnější spojení vrátí všechny řádky z pravého datového proudu a odpovídající řádky z levého datového proudu. Pokud řádek z pravého datového proudu neodpovídá, výstupní sloupce z levého datového proudu jsou nastaveny na hodnotu NULL. Výstupem jsou řádky vrácené vnitřním spojením plus neporovnané řádky z pravé zóny.
Úplná vnější
Full outer join výstupuje všechny sloupce a řádky z obou stran s hodnotami NULL pro sloupce, které nejsou spárovány.
Vlastní křížový spoj
Křížové spojení generuje kartézský součin datových proudů na základě podmínky. Pokud používáte podmínku, která není rovnost, zadejte jako podmínku křížového spojení vlastní výraz. Výstupní stream obsahuje všechny řádky, které splňují podmínku spojení.
Tento typ spojení můžete použít pro neshodné spojení a OR podmínky.
Pokud chcete explicitně vytvořit úplný kartézský součin, použijte transformaci Derived Column v každém ze dvou nezávislých datových proudů před spojením pro vytvoření syntetického klíče pro shodování. Například vytvořte nový sloupec v Odvozeném sloupci v každém datovém proudu nazvaný SyntheticKey a nastavte ho jako rovný 1. Pak použijte a.SyntheticKey == b.SyntheticKey jako vlastní výraz spojení.
Poznámka:
Ujistěte se, že do vlastního křížového spojení zahrnete alespoň jeden sloupec z každého vztahu vlevo a vpravo. Provádění křížových spojení se statickými hodnotami místo sloupců na každé straně vede k úplnému prohledávání celé datové sady, což vede k špatnému výkonu toku dat.
Přibližné spojení dat
Můžete zvolit spojení na základě logiky přibližného spojení místo přesné shody hodnot sloupců zapnutím možnosti Použít přibližné shody.
- Kombinování textových částí: Tuto možnost použijte k vyhledání shody odebráním mezery mezi slovy. Pokud je tato možnost povolená, služba Data Factory se například shoduje s DataFactory.
- Sloupec skóre podobnosti: Volitelně můžete zvolit, jestli chcete uložit odpovídající skóre pro každý řádek ve sloupci zadáním nového názvu sloupce, do kterého chcete tuto hodnotu uložit.
- Prahová hodnota podobnosti: Zvolte hodnotu mezi 60 a 100 jako procentuální shodu mezi hodnotami ve vybraných sloupcích.
Poznámka:
Přibližné porovnávání v současné době funguje pouze s typy sloupců řetězců a s vnitřními, levými vnějšími a úplnými typy vnějšího spojení. Optimalizaci vysílání musíte vypnout při použití spojení s přibližným rozpoznáváním.
Konfigurace
- V rozevíracím seznamu Pravého proudu vyberte, ke kterému datovému proudu se připojujete.
- Vyberte typ spojení.
- Vyberte, které klíčové sloupce chcete pro podmínku spojení sladit. Ve výchozím nastavení tok dat hledá rovnost mezi jedním sloupcem v každém datovém toku. Pokud chcete porovnat vypočítanou hodnotu, najeďte myší na rozevírací seznam sloupce a vyberte Vypočítaný sloupec.
Spojení s nerovnostními podmínkami
Pokud chcete v podmínkách spojení použít podmíněný operátor, například nerovná se (!=) nebo větší než (>), změňte rozevírací políčko s operátorem mezi oběma sloupci. Spojení na základě nerovností vyžaduje, aby byl alespoň jeden ze dvou datových proudů přenášen pomocí pevného vysílání na kartě Optimalizace.
Optimalizace výkonu spojení
Na rozdíl od sloučení spojení v nástrojích, jako je SSIS, transformace spojení není povinná operace sloučení spojení. Klíče spojení nevyžadují řazení. Operace spojení se provádí na základě optimální operace spojení ve Sparku, buď širokopásmové spojení, nebo spojení na straně mapování.
Při spojeních, vyhledáváních a transformacích existujících podmínek můžete optimalizovat výkon povolením broadcastingu, pokud se jeden nebo oba datové proudy vejdou do paměti pracovního uzlu. Ve výchozím nastavení modul Spark automaticky rozhodne, jestli má vysílat jednu stranu. 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 u spojení neběží chyby časového limitu.
Vlastní spojení
Pro vlastní připojení datového proudu k sobě samému použijte aliasování existujícího proudu pomocí transformačního výběru. Novou větev vytvoříte kliknutím na ikonu plus vedle transformace a výběrem možnosti Nová větev. Přidejte výběrovou transformaci pro alias původního datového proudu. Přidejte transformaci spojení a zvolte původní datový proud jako levý datový proud a transformaci výběru jako pravý datový proud.
Testování podmínek spojení
Při testování transformací spojení 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 čtou pro účely testování. Výsledek je nedeterministický, což znamená, že podmínky spojení nemusí vrátit žádnou shodu.
Skript toku dat
Syntaxe
<leftStream>, <rightStream>
join(
<conditionalExpression>,
joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <joinTransformationName>
Příklad vnitřního spojení
Tento příklad je transformace spojení s názvem JoinMatchedData, která přebírá levý datový proud TripData a pravý datový proud TripFare. Podmínkou spojení je výraz hack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime}, který vrátí hodnotu true, pokud se sloupce hack_license, medallion, vendor_id a pickup_datetime v každém datovém proudu shodují. To joinType je 'inner'. Povolujeme vysílání pouze v levém datovém proudu, takže broadcast má hodnotu 'left'.
V uživatelském rozhraní vypadá tato transformace takto:
Skript toku dat pro tuto transformaci je v tomto fragmentu kódu:
TripData, TripFare
join(
hack_license == { hack_license}
&& TripData@medallion == TripFare@medallion
&& vendor_id == { vendor_id}
&& pickup_datetime == { pickup_datetime},
joinType:'inner',
broadcast: 'left'
)~> JoinMatchedData
Příklad vlastního křížového spojení
Tento příklad je transformace spojení s názvem JoiningColumns, která přebírá levý datový proud LeftStream a pravý datový proud RightStream. Tato transformace přebírá dva datové proudy a spojuje všechny řádky, ve kterých je sloupec leftstreamcolumn větší než sloupec rightstreamcolumn. To joinType je cross. Vysílání není povoleno broadcast , má hodnotu 'none'.
V uživatelském rozhraní vypadá tato transformace takto:
Skript toku dat pro tuto transformaci je v fragmentu kódu:
LeftStream, RightStream
join(
leftstreamcolumn > rightstreamcolumn,
joinType:'cross',
broadcast: 'none'
)~> JoiningColumns
Související obsah
Po připojení dat vytvořte odvozený sloupec a přesměrujte svá data do cílového úložiště dat.