Cómo usar la actividad Get Metadata en Azure Data Factory
La actividad Get Metadata de Azure Data Factory sirve para preguntarle al almacenamiento "¿este fichero existe? ¿qué tamaño tiene? ¿qué ficheros hay en esta carpeta?" antes de copiar nada. Saber usar la actividad Get Metadata en Azure Data Factory evita pipelines que se rompen a medias porque el origen todavía no ha llegado, y abre la puerta a pipelines dinámicos que reaccionan a lo que encuentran.
Requisitos previos
- Una suscripción de Azure con una instancia de Azure Data Factory ya creada.
- Una cuenta de Azure Data Lake Storage Gen2 (o Blob Storage) con una carpeta de ejemplo, por ejemplo
raw/vendas/. - Un linked service hacia ese almacenamiento, con permisos de lectura.
- Nociones básicas de ADF Studio: pipelines, datasets y actividades.
Paso 1: Crear el dataset de la carpeta de origen
En ADF Studio, ve a Author > Datasets > New dataset y elige Azure Data Lake Storage Gen2 con el formato DelimitedText. En la pestaña Connection, indica el container y la ruta de la carpeta, pero deja el nombre del fichero vacío cuando quieras inspeccionar la carpeta entera.
Consejo: crea dos datasets — uno que apunte a la carpeta (ds_pasta_vendas) y otro a un fichero concreto (ds_ficheiro_vendas). La actividad Get Metadata devuelve campos distintos según el destino sea una carpeta o un fichero.
Paso 2: Añadir la actividad Get Metadata al pipeline
Crea un pipeline nuevo (pl_metadata_demo), arrastra la actividad Get Metadata desde el grupo General y ponle el nombre GetMetadataPasta. En la pestaña Dataset, selecciona ds_pasta_vendas.
Paso 3: Elegir los campos en la Field list
Todavía en la pestaña Dataset, haz clic en New dentro de la Field list y añade los campos que quieras leer. Los más útiles son:
exists— devuelve true o false; funciona tanto para ficheros como para carpetas.childItems— lista el contenido de una carpeta (solo para carpetas).itemNameeitemType— nombre y tipo (File o Folder).sizeylastModified— tamaño en bytes y fecha de última modificación (solo para ficheros).
En JSON, la actividad queda así:
{
"name": "GetMetadataPasta",
"type": "GetMetadata",
"typeProperties": {
"dataset": { "referenceName": "ds_pasta_vendas", "type": "DatasetReference" },
"fieldList": [ "exists", "childItems" ],
"storeSettings": { "type": "AzureBlobFSReadSettings" },
"formatSettings": { "type": "DelimitedTextReadSettings" }
}
}
Paso 4: Validar si el origen existe con If Condition
Añade a continuación una actividad If Condition y conéctala al Get Metadata mediante la flecha verde (Success). En la expresión, lee el output de la actividad anterior:
@activity('GetMetadataPasta').output.exists
En la rama True coloca la actividad Copy Data que carga los datos. En la rama False pon una actividad Fail con un mensaje claro, del estilo "La carpeta raw/vendas todavía no ha recibido ficheros". El pipeline deja de estallar con un error críptico y pasa a fallar de forma controlada.
Paso 5: Recorrer los ficheros de la carpeta con ForEach
El campo childItems devuelve un array de objetos con name y type. Pasa ese array a una actividad ForEach:
Items: @activity('GetMetadataPasta').output.childItems
Dentro del ForEach, en el dataset de origen del Copy Data:
parámetro nomeFicheiro = @item().name
Así el pipeline copia todos los ficheros que encuentre, sin nombres escritos a mano. Para procesar solo CSV, añade antes del bucle una actividad Filter con la condición @endswith(item().name, '.csv').
Error común: la actividad falla en vez de devolver false
Si Get Metadata revienta con "The required Blob is missing" en lugar de devolver exists: false, casi seguro que has olvidado incluir exists en la Field list. Con ese campo presente, la actividad responde false en vez de lanzar un error — que es justo lo que permite validar el origen sin romper el pipeline.
Verificar el resultado
Haz clic en Debug y, en el panel Output, pulsa el icono de gafas de la actividad GetMetadataPasta. Deberías ver un JSON parecido a este:
{
"exists": true,
"childItems": [
{ "name": "vendas_2026_07.csv", "type": "File" },
{ "name": "vendas_2026_06.csv", "type": "File" }
]
}
Si childItems viene vacío, revisa la ruta de la carpeta y los permisos del linked service — la identidad administrada de Data Factory necesita el rol Storage Blob Data Reader en la cuenta de almacenamiento.
Conclusión
Get Metadata + If Condition + ForEach es la base de casi todos los pipelines dinámicos de Azure Data Factory: comprobar, decidir e iterar. El siguiente paso natural es cruzar el campo lastModified con una variable de watermark para copiar solo los ficheros nuevos desde la última ejecución. ¿Qué comprobación te gustaría que hiciera tu pipeline antes de que arranque la copia?