Forum Discussion
Cursor Datos paginados de Web API
Hola
Estoy llamando a una api web para tomar algunos datos que se paginan y estoy luchando con cómo obtener la siguiente página de datos, ya que se basa en cursores.
Cuando llamo a la api en PowerQuery (me estoy conectando a través de un origen de datos Web) el Navigator devuelve una tabla con dos filas, la primera fila que contiene una tabla de datos que estoy solicitando y una segunda fila que contiene una tabla que contiene la url original pero con un parámetro de cursor anexado a ella.
por lo que la estructura se ve así:
Original api call (Llamada api original) https://api.myapiurl.com/v1/channel/1234/webcasts
que produce:
| Nombre | Mesa |
| Webcast | Mesa |
| Enlace | Mesa |
La tabla de vínculos contiene lo siguiente:
| Href | Rel |
| https://api.myapiurl.com/v1/channel/1234/webcasts?cursor=6789 | próximo |
Puedo expandir la fila de webcast que contiene los datos sin ningún problema, pero ¿cómo llamo a la siguiente página de datos y la almaceno con la primera llamada y luego continuar hasta que tenga todos los datos disponibles?
¡Muchas gracias!
23 Replies
- Greg_DecklerCommunity ChampionSé que @ImkeF ha hecho cosas así.
- ImkeFCommunity Champion
Sí, hay muchos métodos en este subproceso: https://community.powerbi.com/t5/Desktop/how-to-create-a-query-that-paginates/td-p/20047
Recomiendo encarecidamente este vídeo también: https://www.youtube.com/watch?v=vhr4w5G8bRA
- AnonymousNot applicable
Hola @ImkeF
Muchas gracias por la ayuda y los recursos. Lo he leído y siento que casi estoy allí, pero no puedo unirme a los puntos. Soy muy nuevo en PowerQuery, así que parte de la sintaxis sigue siendo un misterio para mí, ¡pero estoy llegando allí!
Mis datos se devuelven como xml (no creo que marcan mucha diferencia) y la última fila de la página tiene dos campos, Attribute:href y Attribute:rel. El campo rel contiene la palabra siguiente y el campo rel una URL completa con el cursor para la página siguiente. La documentación de la API indica que cuando se alcanza la última página no habrá ningún valor en el campo rel.
Según entiendo, puedo usar la función List.Generate y efectivamente 'bucle' a través de los datos y pasar la siguiente url y tomar la siguiente página de datos. Parece que no puedo averiguar cómo hacer referencia a los campos de mi origen y usarlo para obtener el siguiente conjunto de datos. Esto es lo que tengo hasta ahora (que no funciona!)
let Source = Xml.Tables(Web.Contents("https://api.myWebService.com/v1/channel/1234/webcasts")), #"Expanded Table" = Table.ExpandTableColumn(Source, "Table", {"title", "description", "presenter", "duration", "start", "keywords", "published", "visibility", "url", "status", "active", "created", "lastUpdated", "link", "Attribute:id", "syndicationType", "Attribute:href", "Attribute:rel"}, {"Table.title", "Table.description", "Table.presenter", "Table.duration", "Table.start", "Table.keywords", "Table.published", "Table.visibility", "Table.url", "Table.status", "Table.active", "Table.created", "Table.lastUpdated", "Table.link", "Table.Attribute:id", "Table.syndicationType", "Table.Attribute:href", "Table.Attribute:rel"}), myTest = List.Generate( ()=> [Result = Source, Counter = 0], each [Result][[Attribute:href] <> null and [Counter]< 20, each [Result = Xml.Tables(Web.Contents([Attribute:href])), Counter = [Counter] + 1] ) in myTestCualquier puntero que podría proporcionar en conseguir este derecho sería muy apreciado!
- Syndicate_AdminAdministrator
Hola equipo,
Tengo un problema al obtener los datos de la API web basada en cursor, ¿podría alguien ayudarme con el M-Script con el valor del encabezado? He intentado con algunos que me están causando un estallido de autenticación con la actualización manual como se muestra a continuación y no puedo ver las fuentes de datos después de publicarlas en los servicios POwerBI.Se agradece si se apoya.
Gracias.