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 zostanie oznaczony zasadami odpowiadającymi pierwszemu zgodnemu wyrażeniu. 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.

Alter row settings

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 będą wykonywane podczas sesji debugowania. Uruchom działanie Execute Przepływ danych w potoku, aby wprowadzić zasady zmiany wierszy w tabelach bazy danych.

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ń, zostanie oznaczony dla określonych zasad wiersza. Domyślnie każdy wiersz, który nie jest zgodny z żadnym wyrażeniem warunkowym, zostanie oznaczony jako Insert.

Alter row policy

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 spowoduje wygenerowania akcji DDL ani DML względem obiektu docelowego.

Alter row policies

Każda zmiana zasad wiersza jest reprezentowana przez ikonę wskazującą, czy wystąpi 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, które zasady zmiany wierszy są dozwolone dla tego ujścia.

Alter row sink

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 dołączenie 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, które będą używane 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 będzie 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 Ustawienia przekształcenia ujścia i ustaw pozycję "Pomiń zapisywanie kolumn kluczy". Spowoduje to, że usługa nie napisze 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 Wstępne przetwarzanie 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, jest przypisana ta zasada.

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

Alter row example

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.