Condividi tramite


Trasformazione delle chiamate esterne nei flussi di dati di mapping

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

I flussi di dati sono disponibili sia in Azure Data Factory che in Azure Synapse Pipelines. Questo articolo si applica ai flussi di dati di mapping. Se non si ha esperienza con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati usando un flusso di dati di mapping.

La trasformazione delle chiamate esterne consente ai data engineer di chiamare i punti finali REST esterni riga per riga per aggiungere risultati personalizzati o di terze parti nei flussi di dati.

Configurazione

Nel pannello di configurazione della trasformazione delle chiamate esterne selezionare prima di tutto il tipo di endpoint esterno a cui ci si vuole connettere. Il passaggio successivo consiste nel eseguire il mapping delle colonne in ingresso. Definire infine una struttura di dati di output da utilizzare dalle trasformazioni downstream.

External call

Impostazioni

Scegliere il tipo di set di dati inline e il servizio collegato associato. Attualmente è supportato solo REST. Tuttavia, anche le stored procedure SQL e altri tipi di servizi collegati diventeranno disponibili. Vedere la configurazione dell'origine REST per le spiegazioni delle proprietà delle impostazioni.

Mapping

È possibile scegliere il mapping automatico per passare tutte le colonne di input all'endpoint. Facoltativamente, è possibile impostare manualmente le colonne e rinominare le colonne inviate all'endpoint di destinazione qui.

Output

Qui si definirà la struttura dei dati per l'output della chiamata esterna. È possibile definire la struttura per il corpo e scegliere come archiviare le intestazioni e lo stato restituito dalla chiamata esterna.

Se si sceglie di archiviare il corpo, le intestazioni e lo stato, scegliere prima di tutto un nome di colonna per ognuno in modo che possano essere utilizzati dalle trasformazioni dei dati downstream.

È possibile definire manualmente la struttura dei dati del corpo usando la sintassi del flusso di dati di Azure Data Factory. Per definire i nomi di colonna e i tipi di dati per il corpo, fare clic su "Importa proiezione" e consentire ad ADF di rilevare l'output dello schema dalla chiamata esterna. Ecco una struttura di definizione dello schema di esempio come output da una chiamata GET dell'API REST meteo:

({@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)

Esempi

Esempi che includono lo script del flusso di dati

External call sample

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

Script del flusso di dati

ExternalCall1 sink(allowSchemaDrift: true,
	validateSchema: false,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true,
	store: 'cache',
	format: 'inline',
	output: false,
	saveOrder: 1) ~> sink1
  • Utilizzare la trasformazione Flatten per pivot di righe in colonne.
  • Utilizzare la trasformazione Colonna derivata per trasformare le righe.
  • Per altre informazioni sulle impostazioni REST, vedere l'origine REST.