Csatlakozás átalakítás a leképezési adatfolyamban
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Az adatfolyamok az Azure Data Factoryben és az Azure Synapse Pipelinesban is elérhetők. Ez a cikk az adatfolyamok leképezésére vonatkozik. Ha még nem használta az átalakításokat, tekintse meg az adatok leképezési adatfolyam használatával történő átalakításáról szóló bevezető cikket.
Az illesztési átalakítással két forrásból vagy adatfolyamból származó adatokat egyesíthet egy leképezési adatfolyamban. A kimeneti adatfolyam mindkét forrás összes oszlopát tartalmazza, egy illesztési feltétel alapján egyeztetve.
Illesztéstípusok
Az adatfolyamok leképezése jelenleg öt különböző illesztési típust támogat.
Belső illesztés
A belső illesztés csak olyan sorokat ad ki, amelyek mindkét táblában egyező értékekkel rendelkeznek.
Bal külső
A bal oldali külső illesztés a bal oldali stream összes sorát és a jobb oldali streamben lévő egyező rekordokat adja vissza. Ha a bal oldali stream egyik sora nem egyezik meg, a jobb oldali stream kimeneti oszlopai NULL értékre vannak állítva. A kimenet a belső illesztés által visszaadott sorok, valamint a bal oldali stream nem egyező sorai lesznek.
Feljegyzés
Az adatfolyamok által használt Spark-motor időnként meghiúsul a lehetséges cartesian termékek miatt az illesztési feltételekben. Ha ez történik, válthat egyéni keresztcsatlakozásra, és manuálisan is megadhatja az illesztés feltételét. Ez lassabb teljesítményt eredményezhet az adatfolyamokban, mivel előfordulhat, hogy a végrehajtási motornak ki kell számítania a kapcsolat mindkét oldaláról származó összes sort, majd szűrnie kell a sorokat.
Jobb külső
A jobb oldali külső illesztés a jobb oldali stream összes sorát és a bal oldali streamben lévő egyező rekordokat adja vissza. Ha a jobb oldali stream egyik sora nem egyezik, a bal oldali stream kimeneti oszlopai NULL értékre vannak állítva. A kimenet a belső illesztés által visszaadott sorok, valamint a jobb oldali stream nem egyező sorai lesznek.
Teljes külső
A teljes külső illesztés mindkét oldalról az összes oszlopot és sort null értékkel adja ki a nem egyező oszlopok esetében.
Egyéni keresztcsatlakozás
A keresztcsatlakozás a két stream kereszttermékét adja ki egy feltétel alapján. Ha olyan feltételt használ, amely nem egyenlőség, adjon meg egy egyéni kifejezést keresztcsatlakozás feltételként. A kimeneti adatfolyam minden olyan sor, amely megfelel az illesztés feltételének.
Ezt az illesztéstípust nem egyenlő illesztésekhez és OR
feltételekhez használhatja.
Ha explicit módon szeretne létrehozni egy teljes cartesian terméket, használja a Származtatott oszlop átalakítást a két független streamben az illesztés előtt, hogy létrehozzon egy szintetikus kulcsot, amely megfelel a következőnek. Hozzon létre például egy új oszlopot a Származtatott oszlopban minden egyes hívott SyntheticKey
adatfolyamban, és állítsa be az egyenlő értéket 1
. Ezután használja a.SyntheticKey == b.SyntheticKey
egyéni illesztés kifejezésként.
Feljegyzés
Ügyeljen arra, hogy a bal és a jobb kapcsolat mindkét oldalán legalább egy oszlop szerepeljen egy egyéni keresztcsatlakozásban. A keresztcsatlakozások mindkét oldalról származó oszlopok helyett statikus értékekkel való végrehajtása a teljes adathalmaz teljes vizsgálatát eredményezi, ami azt eredményezi, hogy az adatfolyam rosszul teljesít.
Fuzzy illesztés
A "Fuzzy matching használata" jelölőnégyzet bekapcsolásával kiválaszthatja, hogy a pontos oszlopérték-megfeleltetés helyett a homályos illesztési logika alapján csatlakozik-e.
- Szövegrészek egyesítése: Ezzel a beállítással egyezéseket kereshet a szavak közötti térköz eltávolításával. A Data Factory például megfelel a DataFactory-nak, ha ez a beállítás engedélyezve van.
- Hasonlósági pontszám oszlopa: Ha szeretné, egy oszlop minden sorában tárolhatja az egyező pontszámot, ha ide ír be egy új oszlopnevet az érték tárolásához.
- Hasonlóság küszöbértéke: Válasszon egy 60 és 100 közötti értéket a kijelölt oszlopok értékeinek százalékos egyezéseként.
Feljegyzés
A homályos egyezés jelenleg csak sztringoszloptípusokkal és belső, bal oldali külső és teljes külső illesztési típusokkal működik. A fuzzing egyező illesztések használatakor ki kell kapcsolnia a közvetítés optimalizálását.
Konfiguráció
- Válassza ki, hogy melyik adatfolyamhoz csatlakozik a Jobb adatfolyam legördülő menüben.
- Válassza ki az illesztés típusát
- Válassza ki, hogy mely kulcsoszlopokat szeretné egyeztetni az illesztés feltételéhez. Alapértelmezés szerint az adatfolyamok az egyes adatfolyamok egy oszlopa közötti egyenlőséget keresik. Ha egy számított érték alapján szeretne összehasonlítani, vigye az egérmutatót az oszlop legördülő listájára, és válassza a Számított oszlop lehetőséget.
Nem egyenlő illesztések
Ha olyan feltételes operátort szeretne használni, amely nem egyenlő (!=) vagy nagyobb, mint (>) az illesztési feltételekben, módosítsa az operátor legördülő menüjét a két oszlop között. A nem egyenlő illesztésekhez a két stream közül legalább az egyiket az Optimalizálás lapon rögzített műsorszórás használatával kell közvetíteni.
Illesztési teljesítmény optimalizálása
Az egyesítési illesztéstől eltérően az olyan eszközökben, mint az SSIS, az illesztés átalakítása nem kötelező egyesítési műveletet. Az illesztési kulcsok nem igényelnek rendezést. Az illesztési művelet a Spark optimális illesztési művelete alapján történik, akár szórás, akár térképoldali illesztés.
Az illesztésekben, a keresésekben és a meglévő átalakításokban, ha egy vagy mindkét adatfolyam elfér a feldolgozó csomópont memóriájában, optimalizálhatja a teljesítményt az Broadcasting engedélyezésével. Alapértelmezés szerint a spark motor automatikusan eldönti, hogy az egyik oldalt közvetíti-e. Ha manuálisan szeretné kiválasztani, hogy melyik oldalt szeretné közvetíteni, válassza a Rögzített lehetőséget.
Nem ajánlott letiltani a közvetítést a Ki beállítással, kivéve, ha az illesztések időtúllépési hibákba ütköznek.
Öncsatlakozás
Ha önállóan szeretne összekapcsolni egy adatfolyamot önmagával, aliasként adjon meg egy meglévő adatfolyamot egy kiválasztási átalakítással. Új ág létrehozásához kattintson az átalakítás melletti plusz ikonra, és válassza az Új ág lehetőséget. Válasszon átalakítást az eredeti stream aliasaként. Adjon hozzá egy illesztés-átalakítást, és válassza ki az eredeti streamet bal oldali streamként, a jobb oldali streamként pedig az átalakítást.
Illesztés feltételeinek tesztelése
Ha hibakeresési módban teszteli az illesztési átalakításokat az adatelőnézettel, használjon egy kis ismert adatkészletet. Ha sorokat mintavételez egy nagy adatkészletből, nem tudja előre megjósolni, hogy mely sorok és kulcsok lesznek beolvasva tesztelésre. Az eredmény nem determinisztikus, vagyis előfordulhat, hogy az illesztés feltételei nem adnak vissza egyezést.
Adatfolyamszkript
Syntax
<leftStream>, <rightStream>
join(
<conditionalExpression>,
joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <joinTransformationName>
Példa belső illesztésre
Az alábbi példa egy bal és jobb oldali streamet TripData
TripFare
használó illesztés-átalakításJoinMatchedData
. Az illesztés feltétele az a kifejezéshack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime}
, amely igaz értéket ad vissza, medallion
vendor_id
pickup_datetime
ha az hack_license
egyes streamek oszlopai megegyeznek. Az joinType
is 'inner'
. Csak a bal oldali streamben engedélyezzük a közvetítést, így broadcast
van értéke 'left'
.
A felhasználói felületen ez az átalakítás az alábbi képhez hasonlóan néz ki:
Az átalakítás adatfolyam-szkriptje az alábbi kódrészletben található:
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élda egyéni keresztcsatlakozásra
Az alábbi példa egy bal és jobb oldali streamet LeftStream
RightStream
használó illesztés-átalakításJoiningColumns
. Ez az átalakítás két adatfolyamot vesz igénybe, és összekapcsolja az összes sort, ahol az oszlop leftstreamcolumn
nagyobb, mint az oszlop rightstreamcolumn
. Az joinType
is cross
. A műsorszórás nincs engedélyezvebroadcast
.'none'
A felhasználói felületen ez az átalakítás az alábbi képhez hasonlóan néz ki:
Az átalakítás adatfolyam-szkriptje az alábbi kódrészletben található:
LeftStream, RightStream
join(
leftstreamcolumn > rightstreamcolumn,
joinType:'cross',
broadcast: 'none'
)~> JoiningColumns
Kapcsolódó tartalom
Az adatok összekapcsolása után hozzon létre egy származtatott oszlopot , és az adatokat egy céladattárba nyelje .