Megosztás a következőn keresztül:


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.

Fuzzy illesztés

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ó

  1. Válassza ki, hogy melyik adatfolyamhoz csatlakozik a Jobb adatfolyam legördülő menüben.
  2. Válassza ki az illesztés típusát
  3. 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.

Képernyőkép az átalakításhoz való csatlakozásról

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.

Nem egyenlő illesztés

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.

Csatlakozás átalakítási optimalizálása

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.

Öncsatlakozás

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 TripFarehaszná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, medallionvendor_idpickup_datetime ha az hack_licenseegyes 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:

Képernyőkép az átalakításról, amelyen az Illesztés beállításai lap van kijelölve, és a Belső illesztés típusa.

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 RightStreamhaszná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:

Képernyőkép az átalakításról, amelyen az Illesztés beállításai lap van kijelölve, és az Egyéni illesztés típusa (kereszt).

Az átalakítás adatfolyam-szkriptje az alábbi kódrészletben található:

LeftStream, RightStream
    join(
        leftstreamcolumn > rightstreamcolumn,
        joinType:'cross',
        broadcast: 'none'
    )~> JoiningColumns

Az adatok összekapcsolása után hozzon létre egy származtatott oszlopot , és az adatokat egy céladattárba nyelje .