Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp.
Az adatfolyamok Azure Data Factory folyamatokban és Azure Synapse Analytics folyamatokban is elérhetők. Ez a cikk az adatfolyamok leképezésére vonatkozik. Ha még nem ismerkedik az átalakításokkal, tekintse meg az Adatok átalakítása leképezési adatfolyamokkal című bevezető cikket.
Tipp.
A 2. generációs adatfolyam egyenértékű átalakításával (lekérdezéseinek egyesítése) kapcsolatban tekintse meg az Adatfolyam Gen2-nek az adatfolyam-felhasználók leképezésére vonatkozó útmutatóját.
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ő összekapcsolás a bal oldali adatfolyam összes sorát és a jobb oldali adatfolyamban lévő egyező rekordokat jeleníti meg. 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.
Feljegyzés
Az adatfolyamok Spark motorja időnként hibát okoz az illesztési feltételek között előforduló lehetséges cartesian termékek miatt. Ha ez történik, válthat egyéni keresztösszekötésre, és manuálisan adja meg az illesztési feltételeket. 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 szé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.
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.
Egyedi keresztösszekapcsolá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 kifejezetten szeretne létrehozni egy teljes kartéziánus szorzatot, használja a Származtatott oszlop átalakítást a két független adatfolyamban az illesztés előtt, hogy létrehozzon egy szintetikus kulcsot, amit egyeztetéshez használhat. Hozzon létre például egy új oszlopot a Származtatott oszlopban minden egyes adatfolyamban, melynek neve SyntheticKey, és állítsa be, hogy legyen egyenlő 1-el. 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 keresés jelenleg csak szöveg oszloptípusokkal és belső, bal 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 a 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ásos, akár map-oldali 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 közvetíti-e az egyik oldalt. 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 összeillesztések időtúllépési hibákba ütköznek.
Öncsatlakozás
Ha önállóan szeretne összekapcsolni egy adatfolyamot önmagával, nevezzen meg egy meglévő adatfolyamot egy kiválasztott átalakítás alkalmazásával. Új ág létrehozásához kattintson az átalakítás melletti plusz ikonra, és válassza az Új ág lehetőséget. Adjon hozzá egy kiválasztási transzformációt az eredeti adatfolyam aliasának. Adjon hozzá egy illesztési transzformációt, és válassza ki az eredeti streamet bal oldali streamként, a transzformáció kiválasztása pedig a jobb oldali streamként.
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 legyenek beolvasva a teszteléshez. Az eredmény nem determinisztikus, ami azt jelenti, hogy az illesztés feltételei nem adnak vissza egyezést.
Adatfolyamszkript
Szintaxis
<leftStream>, <rightStream>
join(
<conditionalExpression>,
joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <joinTransformationName>
Példa belső illesztésre
Ez a példa egy JoinMatchedData nevű illesztés-átalakítás, amely a bal oldali TripData streamet és a jobb oldali TripFare streamet használja. Az illesztés feltétele az a kifejezés hack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime}, amely igaz értéket ad vissza, ha az hack_license, medallion, vendor_id és pickup_datetime oszlopok az egyes streamekben megegyeznek. Az joinType is 'inner'. Csak a bal oldali streamben engedélyezzük a közvetítést, ezért broadcast az értéke 'left'.
A felhasználói felületen ez az átalakítás a következőképpen néz ki:
Az átalakítás adatfolyam-szkriptje ebben a 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
Ez a példa egy JoiningColumns elnevezett illesztés-átalakítás, amely felveszi a bal oldali streamet LeftStream és a jobb oldali streamet RightStream. 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élyezve broadcast értéke 'none'.
A felhasználói felületen ez az átalakítás a következőképpen néz ki:
Az átalakítás adatfolyam-szkriptje a 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 .