Cómo establecer y obtener el valor de una variable en una canalización de Azure Synapse o Data Factory.
He creado un pipeline con la actividad Copiar, digamos, actividad1
, en el espacio de trabajo de Azure Synapse Analytics que carga el siguiente archivo JSON JSON
en el almacenamiento de datos de Azure Lake Gen2 (ADLSGen2) utilizando source
como una REST Api
y Sink
(destino) como ADLSGen2
. Ref.
MyJsonFile.json (almacenado en ADLSGen2)
{"file_url":"https://files.testwebsite.com/Downloads/TimeStampFileName.zip"}
En el mismo pipeline, necesito agregar una actividad2
que lea la URL
del JSON
anterior, y una actividad3
que cargue el archivo zip
(mencionado en esa URL) en el mismo almacenamiento Gen2
.
Pregunta: ¿Cómo podemos agregar una actividad2
al pipeline existente que obtendrá la URL
del JSON
anterior y luego la pasará a la actividad3
? ¿O hay mejores sugerencias / soluciones para lograr esta tarea?
Observaciones: He intentado la actividad de establecimiento de variable (mostrada a continuación) al declarar primero una variable en el pipeline y luego usar esa variable, digamos, myURLVar
en esta actividad, pero no estoy seguro de cómo establecer dinámicamente el valor de myURLVar en el valor de la URL del JSON anterior. Tenga en cuenta que el nombre del archivo Json (MyJsonFile.json) es constante, pero el nombre del archivo zip en la URL es dinámico (según la marca de tiempo), por lo tanto, no podemos simplemente codificar duro la URL anterior.
davy.ai
Para agregar
activity2
a la tubería existente, puede usar laActividad web
en Azure Data Factory que se puede usar para llamar a una API REST y obtener el cuerpo de respuesta. Estos son los pasos para lograr esto:Actividad web
a su tubería después deactivity1
.Actividad web
especificando elMétodo
comoGet
,URL
como la URL del archivo JSON almacenado en ADLSGen2 yAutenticación
comoAnónimo
.Headers
, agregue el encabezadoContent-Type
con el valorapplication/json
.Configuración
, establezcaTimeout
en un valor mayor que el tiempo de respuesta esperado.Salida
, seleccioneBody
como el tipo de respuesta y proporcione un nombre para el valor de salida, digamos,myURLResponseVar
.Ahora,
activity2
tiene la URL del archivo JSON. Puede pasar esta URL aactivity3
usando laActividad de Set de variable
y luego usarla en elSink
deactivity3
para cargar el archivo zip en ADLSGen2. Aquí hay un ejemplo de cómo puede usar laActividad de Set de variable
:Actividad de Set de variable
después deactivity2
.myURLVar
.Valor
deActividad de Set de variable
, seleccionemyURLResponseVar
de la salida deactivity2
.activity3
a la tubería para leer el archivo zip desde la URL almacenada enmyURLVar
y cargarlo en ADLSGen2.Con estos pasos, puede agregar
activity2
a la tubería existente y pasar la URL aactivity3
dinámicamente.