Compartir vía


Transformación de llamadas externas en flujos de datos de asignación

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

Los flujos de datos están disponibles en las canalizaciones Azure Data Factory y Azure Synapse. Este artículo se aplica a los flujos de datos de asignación. Si carece de experiencia con las transformaciones, consulte el artículo de introducción Transformación de datos mediante flujos de datos de asignación.

La transformación de llamadas externas permite a los ingenieros de datos seleccionar los puntos de conexión de REST externos fila a fila para agregar resultados personalizados o de terceros a las transmisiones de flujos de datos.

Configuración

En el panel de configuración de la transformación de llamadas externas, primero debe seleccionar el tipo de punto de conexión externo al que desea conectar. El siguiente paso es asignar las columnas de entrada. Por último, es preciso definir la estructura de datos de salida que las transformaciones de bajada van a consumir.

Llamada externa

Configuración

Elija el tipo de conjunto de datos insertado y el servicio vinculado asociado. Actualmente, solo se admite REST. Sin embargo, los procedimientos almacenados de SQL y otros tipos de servicio vinculados también estarán disponibles. Consulte la configuración de origen de REST para obtener explicaciones de las propiedades de configuración.

Asignación

Puede elegir la asignación automática para pasar todas las columnas de entrada al punto de conexión. También, puede establecer manualmente las columnas y cambiar el nombre de las columnas que se envían al punto de conexión de destino aquí.

Resultados

Aquí es donde definirá la estructura de datos de la salida de la llamada externa. No solo puede definir la estructura del cuerpo, sino que también puede elegir cómo almacenar los encabezados y el estado que devuelve la llamada externa.

Si decide almacenar el cuerpo, los encabezados y el estado, elija primero un nombre de columna para cada uno de estos elementos, con el fin de que las transformaciones de datos de bajada puedan consumirlos.

La estructura de datos del cuerpo se puede definir manualmente mediante la sintaxis del flujo de datos de ADF. Para definir los nombres de columna y los tipos de datos del cuerpo, haga clic en "importar proyección" y deje que ADF detecte la salida del esquema de la llamada externa. Esta es una estructura de definición de esquema de ejemplo como salida de una llamada GET de la API de REST meteorológica:

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

Ejemplos

Ejemplos, entre los que se incluye el script de flujo de datos

Ejemplo de una llamada externa

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 de flujo de datos

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