Změna transformace řádků v mapování toku dat
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Toky dat jsou k dispozici ve službě Azure Data Factory i v kanálech Azure Synapse. 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í toku dat.
Pomocí transformace alter row můžete nastavit zásady vložení, odstranění, aktualizace a upsertování řádků. Jako výrazy můžete přidat podmínky 1:N. 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 jímky Azure Cosmos DB ve vašem toku dat. Akce, které přiřadíte k řádkům (vložení, aktualizace, odstranění, upsert), se během ladicí relace neprojeví. Pokud chcete u databázových tabulek přijmout zásady změn řádků, spusťte v kanálu 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.
Zadání výchozí zásady řádku
Vytvořte transformaci alter row a zadejte zásadu řá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 ve verzi Preview dat
Pomocí režimu ladění můžete zobrazit výsledky změn zásad řádků v podokně náhledu dat. Náhled dat transformace alter row nevytváří akce DDL ani DML pro váš cíl.
Ikona pro každou zásadu změny řádku označuje, jestli dojde k akci vložení, aktualizace, upsertu nebo odstraněné akce. Horní záhlaví ukazuje, kolik řádků má každá zásada vliv v náhledu.
Povolit změny zásad řádků v jímce
Aby zásady změn řádků fungovaly, musí datový stream zapisovat do databáze nebo jímky Azure Cosmos DB. Na kartě Nastavení ve jímce povolte, které pro danou jímku povolují zásady změn řádků.
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 vložení, aktualizace nebo upserty upraví 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 vypustí a znovu vytvoří tabulka s novou definicí schématu.
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. V případě služby Azure Cosmos DB nastavte klíč oddílu v nastavení a také nastavte systémové pole Služby Azure Cosmos DB v mapování jímky. Pro Službu Azure Cosmos DB je povinné zahrnout systémový sloupec "ID" pro aktualizace, upserty a odstranění.
Slučuje a upsertuje se službou Azure SQL Database a Azure Synapse
Tok dat podporuje sloučení s azure SQL Database a fondem databází Azure Synapse (datový sklad) s možností upsertu.
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 přenesení do distribučního sloupce distribuované tabulky může dorazit také na chyby.
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í sloupec, který způsobuje problém se sloupci identity, můžete použít předzpracování transformace jímky SQL:
SET IDENTITY_INSERT tbl_content ON
. Potom ji vypněte pomocí vlastnosti SQL následného zpracování:SET IDENTITY_INSERT tbl_content OFF
.V případě případu identity i případu distribučního sloupce můžete logiku přepnout z upsertu na použití samostatné podmínky aktualizace a samostatné podmínky vložení pomocí podmíněné transformace rozdělení. 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 změn řádků s názvem CleanData
, která přebírá příchozí datový proud SpecifyUpsertConditions
a vytváří tři změny podmínek řádku. 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 sloupce řetězcovou hodnotu, která odpovídá pravidlu alter row, přiřadí se tato zásada.
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 potopit do cílového úložiště dat.