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)!
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:
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.