Compartir a través de


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 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.

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 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 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 para el resultado 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 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 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 ejemplo de definición de esquema como salida de una llamada GET a la API 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