Share via


Transformação de chamada externa em fluxos de dados de mapeamento

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Os fluxos de dados estão disponíveis nos pipelines do Azure Data Factory e do Azure Synapse. Este artigo se aplica ao fluxo de dados de mapeamento. Se você for iniciante nas transformações, veja 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 de extremidade REST externos linha por linha para adicionar resultados personalizados ou de terceiros aos fluxos do 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. A próxima etapa é mapear as colunas de entrada. Por fim, defina uma estrutura de dados de saída a ser consumida por transformações downstream.

External call

Configurações

Escolha o tipo de conjuntos de dados embutido e o serviço vinculado associado. No momento, há suporte apenas para REST. No entanto, os procedimentos armazenados SQL e outros tipos de serviços vinculados também estarão disponíveis. Confira a configuração de origem REST para saber mais sobre as propriedades das configurações.

Mapeamento

Você pode escolher o mapeamento automático para passar todas as colunas de entrada ao 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, você define a estrutura de dados para a saída da chamada externa. É possível definir a estrutura para o corpo, bem como escolher como armazenar os cabeçalhos e o status retornado pela chamada externa.

Se você optar por armazenar o corpo, os cabeçalhos e o status, primeiro escolha um nome de coluna para cada um deles a fim de consumi-los por transformações de dados downstream.

É possível definir a estrutura de dados do corpo manualmente usando a sintaxe de fluxo de dados do ADF. Para definir os nomes de coluna e os tipos de dados para o corpo, clique em "Importar projeção" e permita que o ADF detecte 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 GET da API REST de clima:

({@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 o script de fluxo de dados

External call sample

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