Sorátalakítás módosítása 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 Alter Row átalakítás használatával beállíthatja a sorok beszúrási, törlési, frissítési és frissítési szabályzatait. Egy-a-többhöz feltételt adhat hozzá kifejezésekként. Ezeket a feltételeket prioritás szerinti sorrendben kell megadni, mivel minden sor az első egyező kifejezésnek megfelelő szabályzattal lesz megjelölve. Ezek a feltételek egy sor (vagy sor) beszúrását, frissítését, törlését vagy frissítését eredményezhetik. Az Alter Row mindkét DDL & DML-műveletet képes létrehozni az adatbázison.

Alter row settings

A sorátalakítások csak adatbázis-, REST- vagy Azure Cosmos DB-fogadókon működnek az adatfolyamban. A sorokhoz hozzárendelt műveletek (beszúrás, frissítés, törlés, upsert) nem fognak történni a hibakeresési munkamenetek során. Futtasson egy végrehajtási Adatfolyam tevékenységet egy folyamatban az adatbázistáblák váltakozósor-szabályzatainak életbe iktatásához.

Megjegyzés:

Az Alter Row átalakítás nem szükséges a natív CDC-forrásokat , például SQL Servert vagy SAP-t használó Adatrögzítési adatfolyamok módosítása esetén. Ezekben az esetekben az ADF automatikusan észleli a sorjelölőt, így az Alter Row szabályzatok szükségtelenek.

Alapértelmezett sorházirend megadása

Hozzon létre egy Alter Row transzformációt, és adjon meg egy sorházirendet egy feltétellel true(). Minden olyan sor, amely nem egyezik meg a korábban definiált kifejezések egyikével sem, a megadott sorházirendhez lesznek megjelölve. Alapértelmezés szerint minden olyan sor, amely nem egyezik a feltételes kifejezéssel, a rendszer megjelöli a következőt Insert: .

Alter row policy

Megjegyzés:

Ha az összes sort egyetlen szabályzattal szeretné megjelölni, létrehozhat egy feltételt a házirendhez, és a feltételt a következőképpen true()adhatja meg.

Szabályzatok megtekintése az adatok előnézetében

Hibakeresési mód használatával megtekintheti az adatelőnézet panelen az alter sorszabályzatok eredményeit. Az alter row transformation adatelőnézete nem hoz létre DDL- vagy DML-műveleteket a célhoz.

Alter row policies

Minden módosítósor-házirendet egy ikon jelöl, amely jelzi, hogy bekövetkezik-e beszúrási, frissítési, frissítési vagy törölt művelet. A felső fejlécen látható, hogy az előnézetben hány sort érintenek az egyes szabályzatok.

Sorszabályzatok módosításának engedélyezése a fogadóban

Az alter row policies működéséhez az adatfolyamnak adatbázisba vagy Azure Cosmos DB-fogadóba kell írnia. A fogadó Gépház lapján engedélyezze, hogy mely módosító sorszabályzatok legyenek engedélyezve a fogadóban.

Alter row sink

Az alapértelmezett viselkedés csak a beszúrások engedélyezése. Ha engedélyezni szeretné a frissítéseket, a frissítéseket vagy a törléseket, jelölje be az adott feltételnek megfelelő jelölőnégyzetet a fogadóban. Ha a frissítések, az upserts vagy a törlés engedélyezve van, meg kell adnia, hogy a fogadóban mely kulcsoszlopok egyeznek meg.

Megjegyzés:

Ha a beszúrások, frissítések vagy upsertek módosítják a fogadóban lévő céltábla sémáját, az adatfolyam meghiúsul. Ha módosítani szeretné a célsémát az adatbázisban, válassza a Tábla újbóli létrehozása táblaműveletként lehetőséget. Ez elveti és újra létrehozza a táblát az új sémadefinícióval.

A fogadóátalakításhoz egyetlen kulcsra vagy kulcssorozatra van szükség a céladatbázis egyedi sorazonosításához. SQL-fogadók esetén állítsa be a kulcsokat a fogadó beállításai lapon. Az Azure Cosmos DB esetében állítsa be a partíciókulcsot a beállítások között, és állítsa be az Azure Cosmos DB rendszermező "id" értékét a fogadóleképezésben. Az Azure Cosmos DB-hez kötelező megadni az "id" rendszeroszlopot a frissítésekhez, upsertsekhez és törlésekhez.

Egyesítések és upserts az Azure SQL Database és az Azure Synapse használatával

Adatfolyam támogatja az Azure SQL Database és az Azure Synapse adatbáziskészlet (adattárház) egyesítését az upsert beállítással.

Előfordulhat azonban, hogy olyan forgatókönyvekbe ütközik, amelyekben a céladatbázis-séma a kulcsoszlopok identitástulajdonságát használja. A szolgáltatás megköveteli, hogy azonosítsa azokat a kulcsokat, amelyeket a frissítések és az upserts sorértékeinek egyeztetéséhez használ. Ha azonban a céloszlop rendelkezik az identitástulajdonság-beállítással, és az upsert szabályzatot használja, a céladatbázis nem teszi lehetővé az oszlopba való írást. Akkor is előfordulhatnak hibák, ha egy elosztott tábla terjesztési oszlopához próbál csatlakozni.

Az alábbiakban a következő módszereket lehet kijavítani:

  1. Lépjen a Fogadó átalakítás Gépház, és állítsa be a "Kulcsoszlopok írásának kihagyása" elemet. Ez azt fogja mondani a szolgáltatásnak, hogy ne írja meg a leképezés kulcsértékeként kiválasztott oszlopot.

  2. Ha ez a kulcsoszlop nem az az oszlop, amely az identitásoszlopok problémáját okozza, akkor használhatja a Fogadó átalakítás előfeldolgozása SQL-beállítást: SET IDENTITY_INSERT tbl_content ON. Ezután kapcsolja ki a feldolgozás utáni SQL-tulajdonsággal: SET IDENTITY_INSERT tbl_content OFF.

  3. Az identitás- és a terjesztési oszlopos eset esetében is átválthatja a logikát az Upsertről egy külön frissítési feltételre és egy külön beszúrási feltételre feltételes felosztásos átalakítással. Így beállíthatja a frissítési útvonal leképezését úgy, hogy figyelmen kívül hagyja a kulcsoszlop-leképezést.

Adatfolyamszkript

Syntax

<incomingStream>
    alterRow(
           insertIf(<condition>?),
           updateIf(<condition>?),
           deleteIf(<condition>?),
           upsertIf(<condition>?),
        ) ~> <alterRowTransformationName>

Példa

Az alábbi példa egy változósor-átalakítás, CleanData amely egy bejövő adatfolyamot SpecifyUpsertConditions vesz igénybe, és három váltakozósor-feltételt hoz létre. Az előző átalakítás során a rendszer kiszámít egy oszlopot alterRowCondition , amely meghatározza, hogy egy sor be van-e szúrva, frissítve vagy törölve az adatbázisban. Ha az oszlop értéke olyan sztring értékkel rendelkezik, amely megfelel az alter row szabálynak, a rendszer hozzárendeli a szabályzathoz.

A felhasználói felületen ez az átalakítás az alábbi képhez hasonlóan néz ki:

Alter row example

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

SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
	updateIf(alterRowCondition == 'update'),
	deleteIf(alterRowCondition == 'delete')) ~> AlterRow

Az Alter Row átalakítás után előfordulhat, hogy az adatokat egy céladattárba szeretné elsüllyeszteni.