Actualizar el conjunto de datos de Power BI conectado a la base de datos de la API de Scopus

Un usuario Pregunto ✅

mhadi

Preparé un tablero cienciométrico usando Power BI que está conectado directamente a la base de datos de Scopus llamando a las claves API. En mi escritorio de Power Bi, puede actualizar los datos sin ningún error, pero después de publicar el tablero en el sitio web de Power Bi, no se puede actualizar y devuelve un error de credencial:

Última actualización fallida: miércoles 27 de noviembre de 2019 12:32:39 GMT+0330 (hora estándar de Irán) Hubo un error al procesar los datos en el conjunto de datos. Ocultar detalles Mensaje: Las credenciales proporcionadas para la fuente web no son válidas. (Fuente en https://api.elsevier.com/content/search/scopus.) Tabla: API-Scopus-All. URI de clúster: WABI-EAST-ASIA-A-PRIMARY-redirect.analysis.windows.net ID de actividad: 7edc8fb9-5513-465d-a35b-70cc5629d0d0 ID de solicitud: 2edb255e-20fe-d1db-6b7d-2cf1b6681fc5 Hora: 2019-11- 27 09:02:39Z

El siguiente código es mi consulta en Power BI. Además, mi credencial en el escritorio es «Básica» con «Nombre de usuario» = mi apikey

Solo eliminé mi apikey del código. Cualquiera que quiera reproducir los resultados, debe reemplazar su Scopus apikey (https://dev.elsevier.com/) con APIKEY.

Agradezco cualquier ayuda para resolver el problema de la credencial. muchas gracias

let
    Source =  1000, //the total value from a total rows api?
    Starts = List.Generate(()=>0, each _ < Source, each _ + 25),
    #"Converted to Table" = Table.FromList(Starts, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Json.Document(Web.Contents(
    "https://api.elsevier.com/", 
    [
        RelativePath="content/search/scopus/",
        Query=
        [
         view="complete",
                 count="25",
                 query="AFFIL ( {Environmental Research Center}  OR  {Institute for Environmental Research} )  AND  AFFIL ( {Tehran University of Medical Sciences}  OR  {Tehran University of Medical Science} ) AND  AFFIL ( {Netherlands})",
                 apiKey="APIKEY",
                 limit="40",
                 start=""&[Column1]

        ]
    ]

))),
#"Added Custom"

Hola @MHadi,

¿Has revisado la lista de limitaciones de esa API? Si su escenario no cumple con el requisito, bloqueará la solicitud que envíe desde las tablas de consulta de energía.

Configuración de la clave API

Además, ¿ha intentado agregar pasos personalizados para verificar y obtener la última clave de API de la API de reposo? (evitará problemas de caducidad de la clave API)

Saludos,
Xiaoxin-sheng

mhadi

En respuesta a v-shex-msft

querido Xiaoxin-sheng

Muchas gracias por su respuesta a mi pregunta, pero su recomendación no puede resolver mi problema. Debería aclarar más el problema.

Tengo dos consultas siguientes, ambas funcionan bien y se consultaron sin ningún error en Power BI de escritorio. La primera consulta también se puede consultar bien en la web de Power BI, pero la segunda consulta no se pudo consultar en la web y devuelve un error de credencial. La primera consulta devuelve solo 25 registros, pero como tenía que devolver todos mis registros (809 registros), la cambié haciendo una ruta relativa usando la recomendación aquí. Creo que usar una ruta relativa en la segunda consulta, que es mi caso problemático, puede evitar que se detecten los datos de credenciales. Pero no tengo solución para esto. (en las consultas solo CLAVE API debe reemplazarse con su clave API, puede registrarse para obtener la clave API aquí). Gracias de nuevo por cualquier ayuda.

Primera consulta:

let
source=Json.Document(Web.Contents("https://api.elsevier.com/content/search/scopus?&view=complete&query=AFFIL ({Environmental Research Center} OR {Institute for Environmental Research} )  AND  AFFIL({Tehran University of Medical Sciences} OR {Tehran University of Medical Science} )&apiKey=APIKEY"))
in
source

Segunda consulta:

let
source=Json.Document(Web.Contents(
	"https://api.elsevier.com/", 
	[
		RelativePath="content/search/scopus/",
		Query=
		[
		 view="complete",
                 query="AFFIL ( {Environmental Research Center}  OR  {Institute for Environmental Research} )  AND  AFFIL ( {Tehran University of Medical Sciences}  OR  {Tehran University of Medical Science} )",
                 apiKey="APIKEY"           
         	]
	]
))
in
source

En respuesta a mhadi

Hola @MHadi,

Tal vez pueda ponerse en contacto con @ImkeF para obtener algunas sugerencias sobre el conector web de consulta de energía con la API de descanso.

Saludos,

Xiaoxin-sheng

ImkeF

En respuesta a v-shex-msft

Hola @MHadi

la primera consulta no me funciona. Este es el error que me sale en el navegador:

imagen.png

¿Podrías por favor revisar el código? (He creado mi propia clave API)

mhadi

En respuesta a ImkeF

Hola querido @ImkeF

Gracias por tu respuesta, lo revisé. Me funciona sin problema. Creo que tu caso puede deberse a dos cosas posibles:

– No puede pegar su clave API en el cuadro de nombre de usuario en la configuración básica de la credencial.

– Es posible que su sistema no esté suscrito a Scopus. Nuestra universidad ha comprado la suscripción a Scopus.

Gracias de nuevo.

ImkeF

En respuesta a mhadi

Hola @MHadi

consulte este artículo para obtener una sintaxis alternativa: http://blog.datainspirations.com/2018/02/17/dynamic-web-contents-and-power-bi-refresh-errors/ un poco.

mhadi

En respuesta a ImkeF

Hola @ImkeF

Gracias por referirme a la dirección del blog,

pero yo mismo seguí previamente la recomendación en ese blog, como puede ver en mi consulta 2 arriba, en la que usé una dirección relativa para Scopus, pero finalmente devuelve un error de credencial en la prueba de actualización web. También intenté seguir la consulta usando el encabezado, pero este tampoco pudo resolver el problema de referencia en la web.

Por cierto, creo que lo intenté de todas las formas, pero necesito ser más grande en PBI y mi mente está completamente confundida por este problema. Gracias de cualquier manera…

Consulta 3

let
    Source =  25, //the total value from a total rows api?
    Starts = List.Generate(()=>0, each _ < Source, each _ + 25),
    #"Converted to Table" = Table.FromList(Starts, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Json.Document(Web.Contents("https://api.elsevier.com/",
          
    [RelativePath="content/search/scopus", Headers = [#"X-ELS-APIKey"="APIKEY" ,#"Accept"="application/json"], 
    Query=[query="AFFIL ( {Environmental Research Center}  OR  {Institute for Environmental Research} )  AND  AFFIL ( {Tehran University of Medical Sciences}  OR  {Tehran University of Medical Science} )",
        view="complete",
        limit="40",
        start="&[Column1]",
        count="25"]])))
in
#"Added Custom"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *