Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

Llamada a la API de PowerBI con bucle

Hola a todos

Estoy tratando de lograr para obtener todos los datos de 6 URL diferentes en una tabla.
La dirección URL debe generarse en función de una lista. Hasta ahora no entiendo todos los ejemplos en internet, así que espero que alguien pueda decirme lo que estoy haciendo mal.

Obtendo datos de la Web usando esta URL:
https://www.ealyze.nl/api/ean/list/format/csv/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hasta ahora tan buenos, los datos vienen en veo los diferentes números de la EAN. Ahora para obtener información detallada sobre estos números EAN, necesito llamar a esta URL:
https://www.ealyze.nl/api/ean/innerdayvalues/format/csv/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/start/20210401/code/8716948310004

Así que hice los siguientes pasos

  • Convirtió la columna EAN en una lista

  • Creó un parámetro llamado pEAN

  • Creó una función llamada CallAPI

  • Invocó la función a la tabla que contiene el número EAN

Y luego sólo veo una nueva columna llamada CallAPI con filas Binary 😞
¿Cómo puedo convertir el binario en columnas?

Esta es la función que uso

 let
     CallAPI= (EAN as text, optional Timeout as number) as any => 
    
     let
         WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) , 
         WebResponse = Web.Contents("https://www.ealyze.nl/api/ean/innerdayvalues/format/csv/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/start/20210401/code/" 
         & EAN,  [Timeout = WebTimeout])
     in
         WebResponse
 in
     CallAPI

CallAPI.png

  • No @ozcel600,

    Lo siento por editar la respuesta original, después de una investigación profunda, tengo alguna nueva solución para su problema. Debe usar texto. de binario a analizar el retorno de contenido por web.content. Así que usted necesita cambiar su función a

     let
         CallAPI= (EAN as text, optional Timeout as number) as any => 
        
         let
             WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) , 
             WebResponse = Text.FromBinary(Web.Contents("https://www.ealyze.nl/api/ean/innerdayvalues/format/csv/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/start/20210401/code/" 
             & EAN,  [Timeout = WebTimeout]))
         in
             WebResponse
     in
         CallAPI

    Por favor, inténtelo de nuevo.

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

    Saludos

    Dedmon Dai

1 Reply

  • No @ozcel600,

    Lo siento por editar la respuesta original, después de una investigación profunda, tengo alguna nueva solución para su problema. Debe usar texto. de binario a analizar el retorno de contenido por web.content. Así que usted necesita cambiar su función a

     let
         CallAPI= (EAN as text, optional Timeout as number) as any => 
        
         let
             WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) , 
             WebResponse = Text.FromBinary(Web.Contents("https://www.ealyze.nl/api/ean/innerdayvalues/format/csv/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/start/20210401/code/" 
             & EAN,  [Timeout = WebTimeout]))
         in
             WebResponse
     in
         CallAPI

    Por favor, inténtelo de nuevo.

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

    Saludos

    Dedmon Dai