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.

Obtener metadatos de múltiples sistemas de archivos de origen en una tabla de Azure SQL.

Tengo varias carpetas y archivos que provienen de FileSystem (servicio enlazado) en Azure Data Factory. Mi actividad está referida en el siguiente enlace: https://www.sqlservercentral.com/articles/working-with-get-metadata-activity-in-azure-data-factory

Por ahora, estoy utilizando el metadato del nombre de archivo y la última modificación por archivo de la siguiente manera:

enter image description here

Luego uso un procedimiento almacenado en ADF de la siguiente manera:

ALTER PROCEDURE [dbo].[SP_FileSystemMonitoring]
(
    -- Agrega los parámetros para el procedimiento almacenado aquí
    @FLAG int,
    @FILE_NAME nvarchar(100),
    @LAST_MODIFIED datetime
)
AS

BEGIN
    -- SET NOCOUNT ON se agrega para evitar resultados adicionales
    -- que interfieran con las declaraciones SELECT.
    SET NOCOUNT ON

    -- Instrucciones de inserción para el procedimiento aquí
    IF (@FILE_NAME IS NOT NULL)
    BEGIN
        UPDATE [dwh].[FileSystemMonitoring]
        SET    STATUS = @FLAG,
               PROCESS_DATE = DATEADD(HH, 7, Getdate()),
               REPORT_DATE = DATEADD(hh, 7, (DATEADD(dd, -1, GETDATE()))),
               LAST_MODIFIED = @LAST_MODIFIED
        WHERE  FILE_NAME = @FILE_NAME

Pero quiero que en 1 actividad pueda obtener metadatos en 1 carpeta y luego insertar los archivos de esa carpeta en una base de datos Azure SQL, por ejemplo:

folderA/file1.txt
folderA/file2.txt

En esa tabla de Azure SQL, sería así:

--------------------------
File_Name | Last_Modified 
--------------------------
file1.txt | 2021-12-19 13:45:56
file2.txt | 2021-12-18 10:23:32

No tengo idea de cómo hacerlo, porque estoy confundido sobre cómo hacer la asignación en esa destino en la tabla Azure SQL. Gracias de antemano…

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para insertar metadatos de varios archivos de una carpeta en una base de datos de Azure SQL en una sola actividad, puedes seguir estos pasos:

    1. Crea un canalización en Azure Data Factory.
    2. Agrega una actividad Obtener metadatos y configúrala para que apunte a la carpeta de la cual deseas extraer metadatos.

    3. En la actividad Obtener metadatos, selecciona “Elementos secundarios” para la opción “Tipo de metadatos a obtener”. Esto recuperará metadatos para todos los archivos de la carpeta.

    4. Agrega una actividad Selección para filtrar las columnas de metadatos requeridas (Nombre de archivo, Última modificación).

    5. Agrega una actividad Destino y configúrala para escribir los metadatos en una tabla de base de datos de Azure SQL. En la pestaña de mapeo de la actividad Destino, asigna la columna Nombre de archivo a la columna de File_Name de la tabla de base de datos de Azure SQL y asigna la columna Última modificación a la columna Last_Modified de la tabla.

    6. Ejecuta la canalización.

    Esto debería insertar los metadatos de todos los archivos de la carpeta en la tabla de base de datos de Azure SQL en el formato deseado.

Comments are closed.