Przekształcanie ujścia 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.

Po zakończeniu przekształcania danych zapisz je w magazynie docelowym przy użyciu przekształcenia ujścia. Każdy przepływ danych wymaga co najmniej jednej transformacji ujścia, ale można zapisać do jak największej liczby ujściów w razie potrzeby w celu ukończenia przepływu transformacji. Aby zapisać w dodatkowych ujściach, utwórz nowe strumienie za pośrednictwem nowych gałęzi i podziałów warunkowych.

Każde przekształcenie ujścia jest skojarzone z dokładnie jednym obiektem zestawu danych lub połączoną usługą. Przekształcenie ujścia określa kształt i lokalizację danych, do których chcesz zapisać.

Wbudowane zestawy danych

Podczas tworzenia przekształcenia ujścia wybierz, czy informacje ujścia są zdefiniowane wewnątrz obiektu zestawu danych, czy w ramach przekształcenia ujścia. Większość formatów jest dostępna tylko w jednym lub drugim. Aby dowiedzieć się, jak używać określonego łącznika, zobacz odpowiedni dokument łącznika.

Jeśli format jest obsługiwany zarówno w tekście, jak i w obiekcie zestawu danych, istnieją korzyści dla obu tych elementów. Obiekty zestawu danych to jednostki wielokrotnego użytku, które mogą być używane w innych przepływach danych i działaniach, takich jak Kopiowanie. Te jednostki wielokrotnego użytku są szczególnie przydatne w przypadku używania schematu ze wzmocnionymi zabezpieczeniami. Zestawy danych nie są oparte na platformie Spark. Czasami może być konieczne zastąpienie niektórych ustawień lub projekcji schematu w transformacji ujścia.

Zestawy danych wbudowanych są zalecane w przypadku używania elastycznych schematów, jednorazowych wystąpień ujścia lub sparametryzowanych ujść. Jeśli ujście jest silnie sparametryzowane, wbudowane zestawy danych umożliwiają nie tworzenie obiektu "fikcyjnego". Wbudowane zestawy danych są oparte na platformie Spark, a ich właściwości są natywne dla przepływu danych.

Aby użyć wbudowanego zestawu danych, wybierz odpowiedni format w selektorze typu ujścia. Zamiast wybierać zestaw danych ujścia, należy wybrać połączoną usługę, z którą chcesz nawiązać połączenie.

Screenshot that shows Inline selected.

Baza danych obszaru roboczego (tylko obszary robocze usługi Synapse)

W przypadku korzystania z przepływów danych w obszarach roboczych usługi Azure Synapse będziesz mieć dodatkową opcję ujścia danych bezpośrednio do typu bazy danych, który znajduje się w obszarze roboczym usługi Synapse. Spowoduje to złagodzenie potrzeby dodawania połączonych usług lub zestawów danych dla tych baz danych. Bazy danych utworzone za pośrednictwem szablonów baz danych usługi Azure Synapse są również dostępne po wybraniu pozycji Baza danych obszaru roboczego.

Uwaga

Łącznik usługi Azure Synapse Workspace DB jest obecnie w publicznej wersji zapoznawczej i może obecnie pracować tylko z bazami danych Spark Lake

Screenshot that shows workspace db selected.

Obsługiwane typy ujścia

Przepływ danych mapowania jest zgodny z podejściem wyodrębniania, ładowania i przekształcania (ELT) i współpracuje z przejściowymi zestawami danych, które znajdują się na platformie Azure. Obecnie następujące zestawy danych mogą być używane w transformacji ujścia.

Łącznik Formatuj Zestaw danych/wbudowany
Azure Blob Storage Avro
Rozdzielany tekst
Delta
JSON
ORC
Parkiet
✓/✓
✓/✓
-/✓
✓/✓
✓/✓
✓/✓
Azure Cosmos DB for NoSQL ✓/-
Usługa Azure Data Lake Storage 1. generacji Avro
Rozdzielany tekst
JSON
ORC
Parkiet
✓/-
✓/-
✓/-
✓/✓
✓/-
Azure Data Lake Storage Gen2 Avro
Common Data Model
Rozdzielany tekst
Delta
JSON
ORC
Parkiet
✓/✓
-/✓
✓/✓
-/✓
✓/✓
✓/✓
✓/✓
Azure Database for MySQL ✓/✓
Azure Database for PostgreSQL ✓/✓
Azure Data Explorer ✓/✓
Azure SQL Database ✓/✓
Wystąpienie zarządzane Azure SQL ✓/-
Azure Synapse Analytics ✓/-
Dataverse ✓/✓
Dynamics 365 ✓/✓
Dynamics CRM ✓/✓
Sieć szkieletowa Lakehouse ✓/✓
SFTP Avro
Rozdzielany tekst
JSON
ORC
Parkiet
✓/✓
✓/✓
✓/✓
✓/✓
✓/✓
Snowflake ✓/✓
SQL Server ✓/✓

Ustawienia specyficzne dla tych łączników znajdują się na karcie Ustawienia. Przykłady skryptów przepływu informacji i danych w tych ustawieniach znajdują się w dokumentacji łącznika.

Usługa ma dostęp do ponad 90 łączników natywnych. Aby zapisać dane w innych źródłach z przepływu danych, użyj działania kopiowania, aby załadować te dane z obsługiwanego ujścia.

Ustawienia ujścia

Po dodaniu ujścia skonfiguruj za pomocą karty Ujście . W tym miejscu możesz wybrać lub utworzyć zestaw danych, do którego zapisuje ujście. Wartości programistyczne parametrów zestawu danych można skonfigurować w ustawieniach debugowania. (Tryb debugowania musi być włączony).

W poniższym filmie wideo wyjaśniono wiele różnych opcji ujścia dla typów plików rozdzielanych tekstem.

Screenshot that shows Sink settings.

Dryf schematu: dryf schematu to możliwość natywnego obsługiwania elastycznych schematów w przepływach danych bez konieczności jawnego definiowania zmian kolumn. Włącz opcję Zezwalaj na dryf schematu, aby zapisywać dodatkowe kolumny na podstawie tego, co jest zdefiniowane w schemacie danych ujścia.

Zweryfikuj schemat: jeśli wybrano schemat weryfikacji, przepływ danych zakończy się niepowodzeniem, jeśli jakakolwiek kolumna w projekcji ujścia nie zostanie znaleziona w magazynie ujścia lub jeśli typy danych nie są zgodne. Użyj tego ustawienia, aby wymusić, że schemat ujścia spełnia kontrakt zdefiniowanej projekcji. Jest to przydatne w scenariuszach ujścia bazy danych, aby zasygnalizować, że nazwy kolumn lub typy uległy zmianie.

Ujście pamięci podręcznej

Ujście pamięci podręcznej polega na tym, że przepływ danych zapisuje dane w pamięci podręcznej platformy Spark zamiast magazynu danych. W przepływach mapowania danych można odwoływać się do tych danych w tym samym przepływie wiele razy przy użyciu wyszukiwania w pamięci podręcznej. Jest to przydatne, gdy chcesz odwoływać się do danych w ramach wyrażenia, ale nie chcesz jawnie łączyć do niej kolumn. Typowe przykłady, w których ujście pamięci podręcznej może pomóc w wyszukiwaniu maksymalnej wartości w magazynie danych i dopasowywaniu kodów błędów do bazy danych komunikatów o błędach.

Aby zapisać w ujściu pamięci podręcznej, dodaj przekształcenie ujścia i wybierz pozycję Pamięć podręczna jako typ ujścia. W przeciwieństwie do innych typów ujścia nie trzeba wybierać zestawu danych ani połączonej usługi, ponieważ nie piszesz do magazynu zewnętrznego.

Select cache sink

W ustawieniach ujścia można opcjonalnie określić kolumny kluczy ujścia pamięci podręcznej. Są one używane jako zgodne warunki podczas korzystania z lookup() funkcji w wyszukiwaniu pamięci podręcznej. Jeśli określisz kolumny kluczy, nie możesz użyć outputs() funkcji w wyszukiwaniu pamięci podręcznej. Aby dowiedzieć się więcej na temat składni odnośników pamięci podręcznej, zobacz buforowane wyszukiwania.

Cache sink key columns

Jeśli na przykład określę jedną kolumnę column1 klucza w ujściu pamięci podręcznej o nazwie cacheExample, wywołanie cacheExample#lookup() wywołałoby jeden parametr określa, który wiersz w ujściu pamięci podręcznej ma być zgodny. Funkcja generuje pojedynczą złożoną kolumnę z podkolumnami dla każdej zmapowanych kolumn.

Uwaga

Ujście pamięci podręcznej musi znajdować się w całkowicie niezależnym strumieniu danych z dowolnego przekształcenia odwołującego się do niego za pośrednictwem wyszukiwania w pamięci podręcznej. Ujście pamięci podręcznej musi być również pierwszym zapisanym ujściem.

Zapisywanie w danych wyjściowych działania Buforowane ujście może opcjonalnie zapisywać dane wyjściowe w danych wejściowych następnego działania potoku. Umożliwi to szybkie i łatwe przekazywanie danych z działania przepływu danych bez konieczności utrwalania danych w magazynie danych.

Metoda aktualizacji

W przypadku typów ujścia bazy danych karta Ustawienia będzie zawierać właściwość "Metoda aktualizacji". Wartość domyślna to wstawianie, ale także opcje pola wyboru dla aktualizacji, operacji upsert i usuwania. Aby użyć tych dodatkowych opcji, należy dodać przekształcenie Alter Row przed ujściem. Alter Row umożliwia zdefiniowanie warunków dla każdej akcji bazy danych. Jeśli źródło jest natywnym źródłem włączania usługi CDC, możesz ustawić metody aktualizacji bez zmiany wiersza, ponieważ usługa ADF już zna znaczniki wierszy do wstawiania, aktualizowania, upsert i usuwania.

Mapowanie pól

Podobnie jak w przypadku przekształcenia zaznaczenia, na karcie Mapowanie ujścia możesz zdecydować, które kolumny przychodzące zostaną zapisane. Domyślnie wszystkie kolumny wejściowe, w tym kolumny dryfujące, są mapowane. To zachowanie jest nazywane automapowaniem.

Po wyłączeniu automatycznego mapowania można dodać stałe mapowania oparte na kolumnach lub mapowania oparte na regułach. Za pomocą mapowań opartych na regułach można pisać wyrażenia z dopasowaniem wzorca. Naprawiono mapowanie mapowania mapowania nazw kolumn logicznych i fizycznych. Aby uzyskać więcej informacji na temat mapowania opartego na regułach, zobacz Wzorce kolumn w przepływie mapowania danych.

Określanie niestandardowej kolejności ujść

Domyślnie dane są zapisywane w wielu ujściach w nieokreślonej kolejności. Aparat wykonywania zapisuje dane równolegle w miarę ukończenia logiki przekształcania, a kolejność ujścia może się różnić w każdym przebiegu. Aby określić dokładną kolejność ujścia, włącz kolejność ujścia niestandardowego na karcie Ogólne przepływu danych. Po włączeniu ujścia są zapisywane sekwencyjnie w kolejności rosnącej.

Screenshot that shows Custom sink ordering.

Uwaga

Podczas korzystania z buforowanych odnośników upewnij się, że kolejność ujścia ma buforowane ujścia ustawione na 1, najniższy (lub pierwszy) w kolejności.

Custom sink ordering

Grupy ujścia

Ujścia można grupować razem, stosując ten sam numer zamówienia dla serii ujść. Usługa będzie traktować te ujścia jako grupy, które mogą być wykonywane równolegle. Opcje wykonywania równoległego będą dostępne w działaniu przepływu danych potoku.

Błędy

Na karcie Błędy ujścia można skonfigurować obsługę wierszy błędów w celu przechwytywania i przekierowywania danych wyjściowych błędów sterowników bazy danych oraz nieudanych asercji.

Podczas zapisywania w bazach danych niektóre wiersze danych mogą zakończyć się niepowodzeniem z powodu ograniczeń ustawionych przez miejsce docelowe. Domyślnie uruchomienie przepływu danych zakończy się niepowodzeniem podczas pierwszego błędu, który zostanie wyświetlony. W niektórych łącznikach możesz wybrać opcję Kontynuuj po błędzie , który umożliwia ukończenie przepływu danych, nawet jeśli poszczególne wiersze mają błędy. Obecnie ta funkcja jest dostępna tylko w usługach Azure SQL Database i Azure Synapse. Aby uzyskać więcej informacji, zobacz obsługa wierszy błędów w usłudze Azure SQL DB.

Poniżej przedstawiono samouczek wideo dotyczący automatycznego używania obsługi wierszy błędów bazy danych w transformacji ujścia.

W przypadku wierszy niepowodzeń asercji można użyć nadrzędnego przekształcenia Asercji w przepływie danych, a następnie przekierować nieudanych asercji do pliku wyjściowego tutaj na karcie Błędy ujścia. Istnieje również możliwość ignorowania wierszy z błędami asercji, a nie wyprowadzania tych wierszy w ogóle do docelowego magazynu danych ujścia.

Assert failure rows

Podgląd danych w ujściu

Podczas pobierania podglądu danych w trybie debugowania żadne dane nie zostaną zapisane w ujściu. Migawka tego, jak wyglądają dane, zostanie zwrócona, ale nic nie zostanie zapisane w miejscu docelowym. Aby przetestować zapisywanie danych w ujściu, uruchom debugowanie potoku z kanwy potoku.

Skrypt przepływu danych

Przykład

Poniżej przedstawiono przykład przekształcenia ujścia i skryptu przepływu danych:

sink(input(
		movie as integer,
		title as string,
		genres as string,
		year as integer,
		Rating as integer
	),
	allowSchemaDrift: true,
	validateSchema: false,
	deletable:false,
	insertable:false,
	updateable:true,
	upsertable:false,
	keys:['movie'],
	format: 'table',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true,
	saveOrder: 1,
	errorHandlingOption: 'stopOnFirstError') ~> sink1

Po utworzeniu przepływu danych dodaj działanie przepływu danych do potoku.