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

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Data Factory en Microsoft Fabric es la próxima generación de Azure Data Factory, con una arquitectura más sencilla, inteligencia artificial integrada y nuevas características. Si no está familiarizado con la integración de datos, comience con Fabric Data Factory. Las cargas de trabajo de ADF existentes pueden actualizarse a Fabric para acceder a nuevas funcionalidades en ciencia de datos, análisis en tiempo real e informes.

Los flujos de datos están disponibles tanto en canalizaciones de Azure Data Factory como en canalizaciones de Azure Synapse Analytics. Este artículo se aplica a los flujos de datos de mapeo. Si no está familiarizado con las transformaciones, consulte el artículo introductorio Transformación de datos mediante flujos de datos de asignación.

Sugerencia

Para obtener la transformación equivalente (columna personalizada) en Dataflow Gen2, consulte Una guía de Dataflow Gen2 para asignar usuarios de flujo de datos.

La transformación de llamadas externas permite a los ingenieros de datos llamar a puntos finales REST externos fila por fila para agregar resultados personalizados a los 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 mapear columnas de entrada. Por último, es preciso definir la estructura de datos de salida que las transformaciones posteriores 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 está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 para el resultado de la llamada externa. Puede definir la estructura del cuerpo y 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 del cuerpo de datos se puede definir manualmente mediante la sintaxis del flujo de datos de ADF. Para definir los nombres de columna y los tipos de datos para el cuerpo, seleccione "importar proyección" y permita que ADF detecte la salida del esquema desde la llamada externa. Esta es una estructura de definición de esquema de ejemplo obtenida de una llamada GET a una API REST de parámetros meteorológicos.

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