es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiar un conjunto de archivos utilizando ADF

Tengo 10 archivos en una carpeta y quiero mover 4 de ellos a una ubicación diferente.
Intenté 2 enfoques para lograr esto:
1. Utilizando una búsqueda para recuperar los nombres de archivo desde un archivo json, luego alimentándolos a un iterador para cada uno.
2. Utilizando metadatos para obtener los nombres de archivo de la carpeta de origen, y luego agregando una condición “si” dentro de un bucle “para cada uno” para copiar los archivos.

Pero en ambos casos, todos los archivos de la carpeta de origen se copian.

Cualquier ayuda sería apreciada.

¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mover solo 4 archivos específicos de una carpeta a otra ubicación en Azure Blob Storage, puedes seguir los siguientes pasos:

    1. Utiliza la actividad de Lookup en Azure Data Factory para recuperar los nombres de archivo de los 4 archivos que deseas mover. Almacena los nombres de archivo en una variable de tipo arreglo.
    2. Utiliza la actividad de ForEach para iterar sobre el arreglo y copiar cada archivo a la ubicación de destino utilizando la actividad de Copiar.

    Ejemplo de canalización:

    {
        "name": "mover-archivos",
        "activities": [
            {
                "name": "obtener-nombres-archivos",
                "type": "Lookup",
                "inputs": [
                    {
                        "referenceName": "conjunto-datos-entrada",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "variable-nombres-archivos",
                        "type": "PipelineVariable"
                    }
                ],
                "parameters": {
                    "conjuntoDatos": {
                        "folderPath": "ruta/al/archivo/json"
                    },
                    "query": "SELECT nombreArchivo FROM nombresArchivos WHERE condicion = 'true'"
                },
                "typeProperties": {
                    "source": {
                        "type": "JsonFileSource"
                    },
                    "conjuntoDatos": {
                        "referenceName": "conjunto-datos-entrada",
                        "type": "DatasetReference"
                    },
                    "firstRowOnly": false
                }
            },
            {
                "name": "copiar-archivos",
                "type": "ForEach",
                "inputs": [
                    {
                        "referenceName": "variable-nombres-archivos",
                        "type": "PipelineVariable"
                    }
                ],
                "activities": [
                    {
                        "name": "copiar-archivo",
                        "type": "Copy",
                        "inputs": [
                            {
                                "referenceName": "conjunto-datos-origen",
                                "type": "DatasetReference"
                            }
                        ],
                        "outputs": [
                            {
                                "referenceName": "conjunto-datos-destino",
                                "type": "DatasetReference"
                            }
                        ],
                        "typeProperties": {
                            "source": {
                                "type": "BlobSource"
                            },
                            "sink": {
                                "type": "BlobSink"
                            },
                            "copyBehavior": "PreserveHierarchy"
                        },
                        "conditions": [
                            {
                                "expression": "@equals(item()._count, 1)",
                                "nextActivity": ""
                            }
                        ]
                    }
                ],
                "typeProperties": {
                    "items": {
                        "value": "@variables('nombresArchivos')"
                    },
                    "isSequential": true
                }
            }
        ]
    }
    

    Nota: Reemplaza conjunto-datos-entrada, conjunto-datos-origen, conjunto-datos-destino, condicion y ruta/al/archivo/json con los nombres adecuados de los conjuntos de datos, la condición para seleccionar los archivos y la ruta de tu archivo JSON.

    Esta canalización utiliza una actividad de Lookup para recuperar los nombres de los archivos que deben ser movidos desde un archivo JSON, almacena los nombres en un arreglo y realiza un recorrido sobre dicho arreglo utilizando la actividad de ForEach. La actividad de Copiar se utiliza para copiar cada archivo a la ubicación de destino. La condición en la actividad de Copiar asegura que solo se copie un archivo a la vez.

Comments are closed.