Partilhar via


Transformação de chamadas externas no mapeamento de fluxos de dados

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Os fluxos de dados estão disponíveis no Azure Data Factory e no Azure Synapse Pipelines. Este artigo aplica-se ao mapeamento de fluxos de dados. Se você é novo em transformações, consulte o artigo introdutório Transformar dados usando um fluxo de dados de mapeamento.

A transformação de chamada externa permite que os engenheiros de dados chamem pontos finais REST externos linha por linha para adicionar resultados personalizados ou de terceiros aos seus fluxos de fluxo de dados.

Configuração

No painel de configuração de transformação de chamada externa, você primeiro escolherá o tipo de ponto de extremidade externo ao qual deseja se conectar. O próximo passo é mapear as colunas de entrada. Finalmente, defina uma estrutura de dados de saída a ser consumida por transformações a jusante.

Chamada externa

Definições

Escolha o tipo de conjunto de dados embutido e o serviço vinculado associado. Hoje, apenas REST é suportado. No entanto, os procedimentos armazenados SQL e outros tipos de serviço vinculados também ficarão disponíveis. Consulte a configuração de origem REST para obter explicações sobre as propriedades das configurações.

Mapeamento

Você pode escolher o mapeamento automático para passar todas as colunas de entrada para o ponto de extremidade. Opcionalmente, você pode definir manualmente as colunas e renomear as colunas que são enviadas para o ponto de extremidade de destino aqui.

Saída

É aqui que você definirá a estrutura de dados para a saída da chamada externa. Você pode definir a estrutura para o corpo, bem como escolher como armazenar os cabeçalhos e o status retornado da chamada externa.

Se você optar por armazenar o corpo, os cabeçalhos e o status, primeiro escolha um nome de coluna para cada um para que eles possam ser consumidos por transformações de dados downstream.

Você pode definir a estrutura de dados do corpo manualmente usando a sintaxe de fluxo de dados do ADF. Para definir os nomes das colunas e os tipos de dados para o corpo, clique em "importar projeção" e permita que o ADF detete a saída do esquema da chamada externa. Aqui está um exemplo de estrutura de definição de esquema como saída de uma chamada REST API GET 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)

Exemplos

Exemplos, incluindo script de fluxo de dados

Exemplo de chamada 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 fluxo de dados

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