Partager via


Transformation d’appel externe en flux de données de mappage

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Les flux de données sont disponibles à la fois dans les pipelines Azure Data Factory et Azure Synapse. Cet article s’applique aux flux de données de mappage. Si vous débutez dans le domaine des transformations, consultez l’article d’introduction Transformer des données avec un flux de données de mappage.

La transformation d’appel externe permet aux ingénieurs Données d’appeler des points de terminaison REST externes ligne par ligne afin d’ajouter des résultats personnalisés ou de tiers dans vos flux de données.

Configuration

Dans le panneau de configuration de la transformation d’appel externe, vous allez d’abord choisir le type de point de terminaison externe auquel vous voulez vous connecter. L’étape suivante consiste à mapper les colonnes entrantes. Enfin, définissez une structure de données de sortie à consommer par des transformations en aval.

Appel externe

Paramètres

Choisissez le type de jeu de données inclus et le service lié associé. Aujourd’hui, seul REST est pris en charge. Toutefois, les procédures stockées SQL et d’autres types de services liés seront également disponibles à l’avenir. Consultez la configuration de la source REST pour obtenir des explications sur les propriétés des paramètres.

Mappage

Vous pouvez choisir le mappage automatique pour transmettre toutes les colonnes d’entrée au point de terminaison. Si vous le souhaitez, vous pouvez définir manuellement les colonnes et renommer les colonnes qui sont envoyées au point de terminaison cible ici.

Sortie

C’est ici que vous allez définir la structure de données pour la sortie de l’appel externe. Vous pouvez définir la structure du corps, et choisir comment stocker les en-têtes et l’état retournés depuis l’appel externe.

Si vous choisissez de stocker le corps, les en-têtes et l’état, commencez par choisir un nom de colonne pour chacun afin qu’ils puissent être consommés par des transformations de données en aval.

Vous pouvez définir manuellement la structure de données du corps en utilisant la syntaxe de flux de données ADF. Pour définir les noms de colonne et les types de données pour le corps, cliquez sur « Importer la projection » et autorisez ADF à détecter la sortie de schéma à partir de l’appel externe. Voici un exemple de structure de définition de schéma en sortie d’un appel GET à une API REST météo :

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

Exemples

Exemples incluant un script de flux de données

Exemple d’appel externe

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 flux de données

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