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