AndyB
Hola,
Estoy intentando llamar a una API a través de una función personalizada en PowerBI. Funciona bien para la mayoría de las llamadas a la API en el informe, sin embargo, tengo problemas con la tabla final que necesito crear.
Estoy llamando a una API desde nuestro sistema de monitoreo PRTG, esto se llama dos veces antes, para obtener las «ID de dispositivo» y las «ID de sensor». La tabla de ID de sensor es donde invoco la función personalizada que he incluido a continuación, completando el parámetro ID con la columna ID en Sensor ID;
(id as text, sdate as text, edate as text) =>
let
Source = Json.Document(Web.Contents("https://PRTGSERVERNAME.REDACTED.com/",[RelativePath="api/historicdata.json?id=&avg=84600&sdate=&edate=&username=&passhash=",Query=[id=id,sdate=sdate,edate=edate,username="REDACTED",passhash="REDACTED"]])),
sensors = Source[sensors]
in
Source
Cuando se ejecuta, todas las celdas creadas por la función son «Error», con el código de error «Se produjo un error en la consulta ». DataFormat.Error: nombre duplicado ‘valor'».
Ejecuté la llamada a la API en cartero y creo que entiendo el problema, pero no cómo resolverlo: el JSON que se devuelve (ver más abajo) tiene varias columnas llamadas «valor»
¿Hay alguna forma de cambiar el nombre de todas las columnas (o algunas de ellas al menos) para que la consulta pase y luego pueda transformarlas más a partir de ahí? No puedo expandirlos como resultado del error resultante de los nombres de las columnas.
{
"prtg-version": "20.3.60.1623",
"treesize": 28,
"histdata": [
{
"datetime": "1/31/2021 11:30:00 PM - 11:00:00 PM",
"datetime_raw": 44228.9583333333,
"value": "20 msec",
"value_raw": 20.4038,
"value": "16 msec",
"value_raw": 16.1791,
"value": "28 msec",
"value_raw": 27.8521,
"value": "<1 %",
"value_raw": 0.0363,
"value": "0 %",
"value_raw": 0.0000,
"coverage": "100 %",
"coverage_raw": 10000
},
]
}
Edhans
No veo una forma de hacer esto. Parece que el formato no es JSON válido. Incluso cuando elimino manualmente los nombres duplicados, el siguiente error es este:
Entonces, en el mejor de los casos, ese archivo parece ser «json-ish» pero no un verdadero archivo JSON. Quizás alguien más versado en esquemas JSON pueda intervenir, pero parece que tendrá que volver al sistema de origen y arreglarlo.
AndyB
En respuesta a Edhans
Hola @edhans
Gracias por una respuesta rápida, muy apreciada.
Debería haber pensado en solucionar el problema agregándolo como un archivo json, ¡mi culpa! Creo que al fragmento JSON que envié originalmente le faltaba el segundo corchete; ¡lo agregué ahora a mi publicación original!
Si elimino los nombres de columna duplicados, me funciona (ahora que he incluido el cierre]). ¿Hay alguna forma de abordar el problema de la columna en Power Query forzándolo a cambiar el nombre o algo por el estilo?
Edhans
En respuesta a AndyB
El problema @AndyB es con un JSON, toda esta sección viene como un registro y cada campo tiene un nombre:
Entonces, en Power Query se ve así:
Power Query ni siquiera puede abrirlo para analizarlo en un registro con los campos Value / Value_Raw duplicados. Entonces no creo que su JSON esté siguiendo los estándares. Esos deben cambiarse de nombre en JSON o crearse como registros separados dentro del registro principal. Estructuras JSON | Tutorial JSON | w3resource