Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Toky dat jsou k dispozici v kanálech Azure Data Factory i v kanálech Azure Synapse Analytics. Tento článek se týká mapování toků dat. Pokud s transformacemi začínáte, přečtěte si úvodní článek Transformace dat pomocí mapování toků dat.
Tip
Transformace Alter Row v současné době není v toku dat Gen2 podporovaná. Seznam podporovaných transformací a jejich ekvivalentů najdete v průvodci tokem dat Gen2 pro mapování uživatelů toku dat.
Pomocí transformace alter row můžete nastavit zásady vložení, odstranění, aktualizace a upsertování řádků. Můžete přidat podmínky jedna k mnoha jako výrazy. Tyto podmínky by měly být zadány v pořadí podle priority, protože každý řádek je označen zásadou odpovídající prvnímu odpovídajícímu výrazu. Každá z těchto podmínek může vést k vložení řádku (nebo řádků), aktualizaci, odstranění nebo vložení. Alter Row může vytvořit akce DDL a DML pro vaši databázi.
Transformace změn řádků pracují pouze s databázemi, REST nebo Azure Cosmos DB jímky ve vašem toku dat. Akce, které přiřadíte k řádkům (vložení, aktualizace, odstranění, upsert), během ladicí relace neproběhnou. Pokud chcete u databázových tabulek uplatnit zásady změn řádků, spusťte v pipelině aktivitu Execute Tok dat.
Poznámka:
Transformace alter row není nutná pro toky dat Change Data Capture, které používají nativní zdroje CDC, jako je SQL Server nebo SAP. V těchto případech ADF automaticky rozpozná značku řádku, takže zásady Alter Row nejsou potřeba.
Určete výchozí zásadu řádku
Vytvořte transformaci Alter Row a zadejte politiku řádku s podmínkou true(). Každý řádek, který neodpovídá žádnému z dříve definovaných výrazů, je označený pro zadanou zásadu řádku. Ve výchozím nastavení je každý řádek, který neodpovídá žádnému podmíněnému výrazu, označen .Insert
Poznámka:
Chcete-li označit všechny řádky pomocí jedné zásady, můžete vytvořit podmínku pro tuto zásadu a zadat podmínku jako true().
Zobrazení zásad v datovém náhledu
Pomocí režimu ladění můžete zobrazit výsledky změn zásad řádků v podokně náhledu dat. Náhled dat transformace změny řádku nevytváří žádné akce DDL ani DML proti vašemu cílovému objektu.
Ikona pro každou politiku změny řádku označuje, zda dojde k akci vložení, aktualizace, upsertu nebo odstranění. Horní záhlaví ukazuje, kolika řádků se každá politika dotýká v náhledu.
Povolit změny zásad řádků v jímce
Aby zásady úpravy řádků fungovaly, musí datový proud zapisovat do databáze nebo do úložiště Azure Cosmos DB. Na kartě Nastavení ve vašem cílovém úložišti povolte, které zásady pro změny řádků jsou pro toto úložiště povoleny.
Výchozí chování je povolit pouze vkládání. Chcete-li povolit aktualizace, upserty nebo odstranění, zaškrtněte políčko v jímce odpovídající této podmínce. Pokud jsou povoleny aktualizace, upserty nebo odstranění, musíte určit, které klíčové sloupce v jímce se mají shodovat.
Poznámka:
Pokud vaše inserty, aktualizace nebo upserty změní schéma cílové tabulky v jímce, tok dat selže. Pokud chcete upravit cílové schéma v databázi, zvolte jako akci tabulky znovu vytvořit tabulku . Tím se odstraní a znovu vytvoří tabulka s novým schématem.
Transformace jímky vyžaduje jeden klíč nebo řadu klíčů pro jedinečnou identifikaci řádků v cílové databázi. U jímek SQL nastavte klíče na kartě nastavení jímky. Pro Azure Cosmos DB nastavte klíč oddílu v nastavení a také nastavte Azure Cosmos DB systémové pole ID v mapování jímky. Pro Azure Cosmos DB je povinné zahrnout systémový sloupec "ID" pro aktualizace, upserty a odstranění.
Slučování a vkládání či aktualizace dat s Azure SQL Database a Azure Synapse
Datové toky podporují sloučení s Azure SQL Database a fondem databází Azure Synapse (datový sklad) s možností operace upsert.
Můžete ale narazit na scénáře, ve kterých schéma cílové databáze využívalo vlastnost identity klíčových sloupců. Služba vyžaduje, abyste identifikovali klíče, které používáte, aby odpovídaly hodnotám řádků pro aktualizace a upserty. Pokud má ale cílový sloupec nastavenou vlastnost identity a používáte zásadu upsertu, cílová databáze neumožňuje zápis do sloupce. Při pokusu o upsert proti distribučnímu sloupci distribuované tabulky se můžete také setkat s chybami.
Tady jsou způsoby, jak to opravit:
Přejděte do nastavení transformace jímky a nastavte "Přeskočit psaní klíčových sloupců". To službě říká, aby nezapisuje sloupec, který jste vybrali jako hodnotu klíče pro mapování.
Pokud tento klíčový sloupec není tím, který způsobuje problém se sloupci identity, můžete použít možnost předzpracování SQL v transformaci "Sink":
SET IDENTITY_INSERT tbl_content ON. Potom ji vypněte pomocí vlastnosti SQL následného zpracování:SET IDENTITY_INSERT tbl_content OFF.Pro obě varianty, tedy jak u identity, tak u distribučního sloupce, můžete změnit svou logiku z použití upsert na samostatnou aktualizační podmínku a samostatnou vložovací podmínku pomocí transformace rozdělení s podmínkou. Tímto způsobem můžete nastavit mapování na cestě aktualizace a ignorovat mapování klíčového sloupce.
Skript toku dat
Syntaxe
<incomingStream>
alterRow(
insertIf(<condition>?),
updateIf(<condition>?),
deleteIf(<condition>?),
upsertIf(<condition>?),
) ~> <alterRowTransformationName>
Příklad
Následující příklad je transformace úprav řádků s názvem CleanData, která přebírá příchozí datový proud SpecifyUpsertConditions a vytváří tři podmínky úpravy řádků. V předchozí transformaci se vypočítá pojmenovaný alterRowCondition sloupec, který určuje, zda je řádek vložen, aktualizován nebo odstraněn v databázi. Pokud má hodnota v sloupci řetězcovou hodnotu, která odpovídá pravidlu změny řádku, je přiřazena tato politika.
V uživatelském rozhraní vypadá tato transformace jako na následujícím obrázku:
Skript toku dat pro tuto transformaci je v následujícím fragmentu kódu:
SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
updateIf(alterRowCondition == 'update'),
deleteIf(alterRowCondition == 'delete')) ~> AlterRow
Související obsah
Po transformaci alter row můžete chtít data uložit do cílového úložiště dat.