Przekształcanie wywołań zewnętrznych w przepływach mapowania danych

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Wskazówka

Data Factory w usłudze Microsoft Fabric jest następną generacją Azure Data Factory z prostszą architekturą, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz integrować dane, zacznij od Fabric Data Factory. Istniejące obciążenia ADF można zaktualizować do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analiz w czasie rzeczywistym oraz raportowania.

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

Wskazówka

Aby uzyskać równoważną transformację (Kolumna niestandardowa) w Dataflow Gen2, proszę zobaczyć Przewodnik po Dataflow Gen2 dla użytkowników przepływu danych mapowania.

Transformacja wywołań zewnętrznych umożliwia inżynierom danych wywoływanie zewnętrznych punktów końcowych REST wiersz po wierszu w celu dodania niestandardowych wyników do strumieni przepływu danych.

Konfigurowanie

W panelu konfiguracji transformacji wywołań zewnętrznych najpierw wybierz typ zewnętrznego punktu końcowego, z którym chcesz nawiązać połączenie. Następnym krokiem jest zmapowanie kolumn przychodzących. Na koniec zdefiniuj strukturę danych wyjściowych, która ma być zużywana przez przekształcenia podrzędne.

Wywołanie zewnętrzne

Ustawienia

Wybierz typ wbudowanego zestawu danych i powiązaną skojarzoną usługę. Obecnie obsługiwany jest tylko interfejs REST. Jednak procedury składowane SQL i inne połączone typy usług stają się również dostępne. Zobacz konfigurację źródła REST, aby uzyskać wyjaśnienia właściwości ustawień.

Mapowanie

Możesz wybrać automatyczne mapowanie, aby przekazać wszystkie kolumny wejściowe do punktu końcowego. Opcjonalnie możesz ręcznie ustawić kolumny i zmienić nazwy kolumn wysyłanych do docelowego punktu końcowego tutaj.

Wyjście

W tym miejscu zdefiniujesz strukturę danych dla danych wyjściowych wywołania zewnętrznego. Możesz zdefiniować strukturę treści i wybrać sposób przechowywania nagłówków oraz stan zwracany przez wywołania zewnętrzne.

Jeśli zdecydujesz się przechowywać treść, nagłówki i stan, najpierw wybierz nazwę kolumny dla każdego z tych elementów, aby mogły być następnie wykorzystane w przekształceniach danych w dalszym etapie.

Strukturę danych treści można zdefiniować ręcznie przy użyciu składni przepływu danych usługi ADF. Aby zdefiniować nazwy kolumn i typy danych dla treści, wybierz pozycję "projekcja importu" i zezwól usłudze ADF na wykrywanie danych wyjściowych schematu z wywołania zewnętrznego. Oto przykładowa struktura definicji schematu jako wynik GET z REST API pogody:

({@context} as string[],
		geometry as (coordinates as string[][][],
		type as string),
		properties as (elevation as (unitCode as string,
		value as string),
		forecastGenerator as string,
		generatedAt as string,
		periods as (detailedForecast as string, endTime as string, icon as string, isDaytime as string, name as string, number as string, shortForecast as string, startTime as string, temperature as string, temperatureTrend as string, temperatureUnit as string, windDirection as string, windSpeed as string)[],
		units as string,
		updateTime as string,
		updated as string,
		validTimes as string),
		type as string)

Przykłady

Przykłady, w tym skrypt przepływu danych

Przykład wywołania zewnętrznego

source(output(
		id as string
	),
	allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false) ~> source1
Filter1 call(mapColumn(
		id
	),
	skipDuplicateMapInputs: false,
	skipDuplicateMapOutputs: false,
	output(
		headers as [string,string],
		body as (name as string)
	),
	allowSchemaDrift: true,
	store: 'restservice',
	format: 'rest',
	timeout: 30,
	httpMethod: 'POST',
	entity: 'api/Todo/',
	requestFormat: ['type' -> 'json'],
	responseFormat: ['type' -> 'json', 'documentForm' -> 'documentPerLine']) ~> ExternalCall1
source1 filter(toInteger(id)==1) ~> Filter1
ExternalCall1 sink(allowSchemaDrift: true,
	validateSchema: false,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true,
	store: 'cache',
	format: 'inline',
	output: false,
	saveOrder: 1) ~> sink1

Skrypt przepływu danych

ExternalCall1 sink(allowSchemaDrift: true,
	validateSchema: false,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true,
	store: 'cache',
	format: 'inline',
	output: false,
	saveOrder: 1) ~> sink1