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.
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
.
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.
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.
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:
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.
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
.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:
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
Powiązana zawartość
Po przekształceniu Alter Row możesz chcieć ujścia danych do docelowego magazynu danych.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla