Udostępnij za pośrednictwem


Zmienianie przekształcenia wiersza w przepływie danych mapowania

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Przepływy danych są dostępne zarówno w usłudze Azure Data Factory, jak i w potokach usługi Azure Synapse. Ten artykuł dotyczy przepływów danych mapowania. Jeśli dopiero zaczynasz transformacje, zapoznaj się z artykułem wprowadzającym Przekształcanie danych przy użyciu przepływu danych mapowania.

Użyj przekształcenia Alter Row, aby ustawić zasady wstawiania, usuwania, aktualizowania i upsert w wierszach. Możesz dodać warunki jeden do wielu jako wyrażenia. Te warunki należy określić w kolejności priorytetu, ponieważ każdy wiersz jest oznaczony zasadami odpowiadającymi wyrażeniu pierwszego dopasowania. Każdy z tych warunków może spowodować wstawienie, zaktualizowanie, usunięcie lub rozszerzenie wiersza wiersza. Funkcja Alter Row umożliwia tworzenie akcji DDL i DML względem bazy danych.

Zmienianie ustawień wiersza

Przekształcenia alter Row działają tylko na ujściach bazy danych, REST lub Azure Cosmos DB w przepływie danych. Akcje przypisywane do wierszy (wstawianie, aktualizowanie, usuwanie, upsert) nie są wykonywane podczas sesji debugowania. Aby wprowadzić zasady zmiany wierszy w tabelach bazy danych, uruchom działanie Execute Przepływ danych w potoku.

Uwaga

Przekształcanie alter row nie jest wymagane w przypadku przepływów danych przechwytywania danych zmiany, które używają natywnych źródeł CDC, takich jak SQL Server lub SAP. W takich przypadkach usługa ADF automatycznie wykryje znacznik wiersza, aby zasady Alter Row były niepotrzebne.

Określanie domyślnych zasad wiersza

Utwórz przekształcenie Alter Row i określ zasady wiersza z warunkiem true(). Każdy wiersz, który nie pasuje do żadnego z wcześniej zdefiniowanych wyrażeń, jest oznaczony dla określonych zasad wiersza. Domyślnie każdy wiersz, który nie pasuje do żadnego wyrażenia warunkowego, jest oznaczony jako Insert.

Zmienianie zasad wierszy

Uwaga

Aby oznaczyć wszystkie wiersze za pomocą jednej zasady, możesz utworzyć warunek dla tych zasad i określić warunek jako true().

Wyświetlanie zasad w wersji zapoznawczej danych

Użyj trybu debugowania, aby wyświetlić wyniki zasad zmiany wiersza w okienku podglądu danych. Podgląd danych przekształcenia alter row nie generuje akcji DDL ani DML względem obiektu docelowego.

Zmienianie zasad wierszy

Ikona każdej zasady zmiany wiersza wskazuje, czy występuje akcja wstawiania, aktualizowania, upsert lub usuwania. Górny nagłówek pokazuje, ile wierszy ma wpływ na poszczególne zasady w wersji zapoznawczej.

Zezwalaj na zmienianie zasad wierszy w ujściu

Aby zasady zmiany wierszy działały, strumień danych musi być zapisywany w bazie danych lub ujściu usługi Azure Cosmos DB. Na karcie Ustawienia ujścia włącz dozwolone zasady zmiany wierszy dla tego ujścia.

Zmienianie ujścia wiersza

Domyślne zachowanie polega na zezwalaniu tylko na wstawianie. Aby zezwolić na aktualizacje, upserts lub deletes, zaznacz pole wyboru w ujściu odpowiadającym temu warunku. W przypadku włączenia aktualizacji, operacji upsert lub usunięcia należy określić kolumny kluczy w ujściu, które mają być zgodne.

Uwaga

Jeśli wstawia, aktualizuje lub upserts modyfikuje schemat tabeli docelowej w ujściu, przepływ danych zakończy się niepowodzeniem. Aby zmodyfikować schemat docelowy w bazie danych, wybierz pozycję Utwórz ponownie tabelę jako akcję tabeli. Spowoduje to usunięcie i ponowne utworzenie tabeli przy użyciu nowej definicji schematu.

Przekształcenie ujścia wymaga pojedynczego klucza lub serii kluczy do unikatowej identyfikacji wierszy w docelowej bazie danych. W przypadku ujścia SQL ustaw klucze na karcie ustawienia ujścia. W przypadku usługi Azure Cosmos DB ustaw klucz partycji w ustawieniach, a także ustaw pole systemowe usługi Azure Cosmos DB "ID" w mapowaniu ujścia. W przypadku usługi Azure Cosmos DB obowiązkowe jest uwzględnienie kolumny systemowej "ID" dla aktualizacji, operacji upsert i usuwania.

Scala i upserts z usługami Azure SQL Database i Azure Synapse

Przepływ danych obsługuje scalanie z usługami Azure SQL Database i Azure Synapse Database (magazyn danych) z opcją upsert.

Można jednak napotkać scenariusze, w których docelowy schemat bazy danych wykorzystał właściwość tożsamości kolumn kluczy. Usługa wymaga zidentyfikowania kluczy używanych do dopasowania wartości wierszy dla aktualizacji i operacji upsert. Jeśli jednak kolumna docelowa ma ustawioną właściwość tożsamości i używasz zasad upsert, docelowa baza danych nie zezwala na zapisywanie w kolumnie. Podczas próby rozbudowy kolumny dystrybucji tabeli rozproszonej mogą również wystąpić błędy.

Oto sposoby rozwiązania tego problemu:

  1. Przejdź do ustawień przekształcania ujścia i ustaw opcję "Pomiń zapisywanie kolumn kluczy". Informuje to, że usługa nie zapisuje kolumny wybranej jako wartość klucza dla mapowania.

  2. Jeśli ta kolumna klucza nie jest kolumną, która powoduje problem z kolumnami tożsamości, możesz użyć opcji Preprocessing SQL przekształcenia ujścia: SET IDENTITY_INSERT tbl_content ON. Następnie wyłącz ją za pomocą właściwości SQL po przetworzeniu: SET IDENTITY_INSERT tbl_content OFF.

  3. W przypadku zarówno przypadku tożsamości, jak i przypadku kolumny dystrybucji można przełączyć logikę z upsert na użycie oddzielnego warunku aktualizacji i oddzielnego warunku wstawiania przy użyciu przekształcenia podziału warunkowego. W ten sposób można ustawić mapowanie na ścieżce aktualizacji, aby zignorować mapowanie kolumn kluczy.

Skrypt przepływu danych

Składnia

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

Przykład

W poniższym przykładzie przedstawiono przekształcenie alter row o nazwie CleanData , które pobiera strumień SpecifyUpsertConditions przychodzący i tworzy trzy warunki zmiany wiersza. W poprzedniej transformacji kolumna o nazwie alterRowCondition jest obliczana, która określa, czy wiersz jest wstawiany, aktualizowany lub usuwany w bazie danych. Jeśli wartość kolumny ma wartość ciągu zgodną z regułą zmiany wiersza, przypisano te zasady.

W interfejsie użytkownika ta transformacja wygląda jak na poniższej ilustracji:

Alter row example (Zmienianie przykładu wiersza)

Skrypt przepływu danych dla tej transformacji znajduje się w poniższym fragmencie kodu:

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

Po przekształceniu Alter Row możesz chcieć ujścia danych do docelowego magazynu danych.