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.

Sincronizando metadatos desde Azure Data Factory a la base de datos de SQL Server

Estoy tratando de sincronizar metadatos desde un pipeline de Azure DataFactory a una tabla en una base de datos de SQL Server.

La salida visible en la actividad Leer metadatos en Azure es la siguiente:

{
    "childItems": [
        {
            "name": "DemoFile1",
            "type": "File"
        },

        {
            "name": "DemoFile1",
            "type": "File"
        }
    ],
    "effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (UK South)",
    "executionDuration": 0,
    "durationInQueue": {
        "integrationRuntimeQueue": 0
    },
    "billingReference": {
        "activityType": "PipelineActivity",
        "billableDuration": [
            {
                "meterType": "AzureIR",
                "duration": 0.016666666666666666,
                "unit": "Hours"
            }
        ]
    }
}

Estoy utilizando un procedimiento almacenado para transferir los metadatos a la base de datos de SQL Server.

Sin embargo, en la tabla de la base de datos de SQL Server, estoy obteniendo la siguiente salida:

System.Collections.Generic.Dictionary`2[System.String,System.Object]

Estoy pasando los metadatos utilizando un parámetro en la actividad de procedimiento almacenado en DataFactory.

Nombre del parámetro: FileName
Tipo: Cadena de texto (String)
Valor: @activity(‘Metadata’).output.childItems

El código del procedimiento almacenado es el siguiente:

BEGIN

INSERT INTO Table1 (
name, type)

    SELECT
 [name], [type]
    FROM OPENJSON(@FileName, '$.childitems')
    WITH (
       name    NVARCHAR(max) '$.name',
      type  NVARCHAR(max) '$.type'
    ) AS jsonValues

END

¡Gracias anticipadas (TIA)!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar en la forma en que se pasa la metadatos como parámetro a la actividad de procedimiento almacenado en DataFactory. La salida de la actividad Leer metadatos en Azure está en formato JSON, pero debe convertirse a una cadena antes de pasarla como parámetro al procedimiento almacenado.

    Una forma de hacer esto sería utilizar la función JSON en el lenguaje de expresiones de DataFactory para convertir la salida JSON a una cadena. El valor modificado del parámetro sería:

    Valor: json(activity('Metadata').output.childItems)
    

    Esto convertirá la salida JSON en una cadena que se puede pasar como parámetro al procedimiento almacenado.

    Además, puede ser útil verificar los tipos de datos de las columnas en la tabla de SQL Server para asegurarse de que coincidan con los tipos de datos que se insertan desde los metadatos.

Comments are closed.