csv: ¿Cómo obtener archivos de una subcarpeta presente en la carpeta principal anidada en Azure Data Factory?

CorePress2024-01-25  89

Mi estructura de carpetas es como la siguiente,

Contenedor/xx56585/DST_1/2021-03-26/xxxxxxxx.csv

Contenedor/xx56585/DST_1/2021-03-26/xxxxxxxx.ctl

Contenedor/xx56585/DST_2/2021-03-26/yyyyyyyyy.csv

Contenedor/xx56585/DST_2/2021-03-26/yyyyyyyyy.ctl

Contenedor/xx56585/DST_3/2021-03-26/zzzzzzzzz.csv

Contenedor/xx56585/DST_3/2021-03-26/zzzzzzzzz.ctl

Contenedor/xx56585/DST_4/2021-03-26/sssssssssss.csv

Contenedor/xx56585/DST_4/2021-03-26/sssssssssss.ctl

Necesito copiar archivos .csv y .ctl al destino sFTP y mover estos archivos a la carpeta (en el almacenamiento de blobs después de la actividad de copia)

Por favor ayúdame con esto

Joseph Xu: Ayúdame con esto, ya que es similar a :stackoverflow.com/questions/64504159/…

- Sathishkumar Govindasamy

28/03/2021 a las 16:21

¿Están todos sus archivos en la carpeta xx56585? ¿Hay solo dos archivos en la carpeta 2021-03-26?

- Joseph Xu

29 de marzo de 2021 a las 2:21

¿La carpeta 2021-03-26 se genera dinámicamente?

- Joseph Xu

29 de marzo de 2021 a las 2:23

Sí, hay 4 subcarpetas en una carpeta principal 'xx56585'. Cada subcarpeta tendrá <rundate> carpetas. Necesitamos copiar los archivos .csv y .ctl presentes en este archivo <rundate> carpetas. Estas carpetas son creadas por Spark (bloques de datos).

- Sathishkumar Govindasamy

29 de marzo de 2021 a las 2:39

Las 4 subcarpetas bajo la carpeta principal "xx56585" estan arreglados no? El ADF solo puede atravesar un nivel.

- Joseph Xu

29 de marzo de 2021 a las 3:03



------------------------------------

Actualización: Podemos usar Get Metadata1 para verificar si existe el archivo ctl. Agregue contenido dinámico @concat('xx56585/',item(),'/',substring(adddays(utcnow(),-3),0,10),'/') a la ruta.

Creé una prueba sencilla para copiar archivos en <rundate> carpetas a la carpeta de destino. Mi estructura de carpetas

Input/xx56585/DST_1/2021-03-26/xxxxxxxx.csv

Input/xx56585/DST_2/2021-03-26/yyyyyyyyy.csv

Input/xx56585/DST_3/2021-03-26/zzzzzzzzz.csv

Input/xx56585/DST_4/2021-03-26/sssssssssss.csv

Salida:

Defina una variable de tipo Array Array1 y asigne el valor ["DST_1","DST_2","DST_3","DST_4"].

En la actividad ForEach1, podemos agregar contenido dinámico @variables('Array1') para recorrer esta matriz.

Dentro de la actividad ForEach1, podemos usar la actividad Copiar para copiar archivos bajo la ruta dinámica mediante la expresión @concat('xx56585/',item(),'/',substring(adddays(utcnow(),-3),0 ,10),'/').

Mi fecha actual es 2020-03-29, así que uso adddays(utcnow(),-3) para obtener 2020-03-26 en los pasos anteriores.

Eso es todo.

6

Muchas gracias José. Está funcionando. Necesito copiar archivos .ctl a sFTP junto con los archivos .csv. No creo que el comodín admita más de un parámetro. Después de copiar, debe mover estos archivos .csv y .ctl a la carpeta de archivo. ¿Alguna sugerencia sobre esto?

- Sathishkumar Govindasamy

29/03/2021 a las 10:31

@Sathishkumar Govindasamy Tienes razón, el comodín no admite más de un parámetro. Según mi experiencia, necesitamos dos actividades de copia para copiar archivos .csv y .ctl.

- Joseph Xu

29/03/2021 a las 13:01

¿Hay alguna forma de copiar el .CSV correspondiente basado en el archivo .ctl de forma secuencial en lugar de copiar todos los .CSV y .CTl juntos?

- Sathishkumar Govindasamy

30 de marzo de 2021 a las 3:18

Lo siento, no estoy familiarizado con el archivo .ctl. ¿Quieres juzgar si copiar o no?¿El archivo csv se basa en el contenido del archivo ctl?

- Joseph Xu

30 de marzo de 2021 a las 7:24

1

Los archivos

.ctl son solo archivos de control. Sí, es necesario juzgar la copia de este archivo csv utilizando únicamente el archivo ctl. ¿Existe alguna opción en adf para implementar lo mismo?

- Sathishkumar Govindasamy

30 de marzo de 2021 a las 7:33



------------------------------------

Creo que podemos agregar actividad de filtro en esto antes de copiar actividad en la cualh podemos usar la función de subcadena y encontrar si el nombre del archivo contiene .ctl o .csv

Respondido

27 de diciembre de 2022 a las 7:59

Ashutosh Mittal

Ashutosh Mittal

21

1

1 insignia de bronce

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare