Átalakítás létezik 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.
A létező átalakítás egy sorszűrési átalakítás, amely ellenőrzi, hogy az adatok egy másik forrásban vagy streamben léteznek-e. A kimeneti adatfolyam tartalmazza a bal oldali adatfolyam összes olyan sorát, amely vagy létezik, vagy nem létezik a jobb oldali streamben. A létező átalakítás hasonló a következőhöz SQL WHERE EXISTS
: és SQL WHERE NOT EXISTS
.
Konfiguráció
- Válassza ki, hogy melyik adatfolyamot szeretné ellenőrizni a Jobb adatfolyam legördülő listában.
- Adja meg, hogy a létező vagy nem létező adatokat keresi-e a Létező típus beállításban.
- Adja meg, hogy egyéni kifejezésre van-e szüksége.
- Válassza ki, hogy mely kulcsoszlopokat szeretné hasonlítani a létező feltételekhez. 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.
Több létező feltétel
Ha több oszlopot szeretne összehasonlítani az egyes streamekből, adjon hozzá egy új létező feltételt egy meglévő sor melletti plusz ikonra kattintva. Minden további feltételhez egy "és" utasítás csatlakozik. Két oszlop összehasonlítása megegyezik a következő kifejezéssel:
source1@column1 == source2@column1 && source1@column2 == source2@column2
Egyéni kifejezés
Ha olyan szabad formátumú kifejezést szeretne létrehozni, amely nem "and" és "equals" operátorokat tartalmaz, jelölje ki az Egyéni kifejezés mezőt. Adjon meg egy egyéni kifejezést az adatfolyam-kifejezésszerkesztőn keresztül a kék mezőre kattintva.
Ha dinamikus mintázatokat hoz létre az adatfolyamokban az oszlopok "késői kötése" használatával sémaeltérésen keresztül, a byName()
kifejezésfüggvény használatával használhatja a létező átalakítást az oszlopnevek kemény kódolása (azaz korai kötés) nélkül. Példa: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))
Sugárzott optimalizálá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.
Adatfolyamszkript
Syntax
<leftStream>, <rightStream>
exists(
<conditionalExpression>,
negate: { true | false },
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <existsTransformationName>
Példa
Az alábbi példa egy bal és jobb oldali streamet NameNorm2
TypeConversions
használó átalakításcheckForChanges
. A létező feltétel az a kifejezésNameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region
, amely igaz értéket ad vissza, ha az egyes streamek oszlopai és Region
oszlopai EMPID
megegyeznek. Ahogy a létezést ellenőrizzük, negate
az hamis. Az optimalizálási lapon nem engedélyezünk műsorszórást, ezért broadcast
van értéke '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ó:
NameNorm2, TypeConversions
exists(
NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
negate:false,
broadcast: 'auto'
) ~> checkForChanges