Forum Discussion
Cursor Datos paginados de Web API
Hola @eyeballkid ,
Lo siento, pero no puedo seguir sin ver nada que ha vuelto.
¿Podría pegar algunas capturas de pantalla o crear algunos datos de maquetas que ilusoriquen el problema?
Hola @ImkeF ,
Sí, no hay problema. Voy a tratar de establecer donde estoy con esto en este momento con algunas imágenes, datos y código. Disculpasitos si esto pasa por algunas cosas de las que ya hemos hablado.
Hasta ahora he creado una función simple para aceptar una dirección URL que llama a un servicio web y devuelve un conjunto de datos XML:
(url as text) as table =>
let
Source = Xml.Tables(Web.Contents(url))
in
Source
Si paso la siguiente url:
https://api.myWebService.com/v1/channel/12345/webcasts
Recibo lo siguiente:
Expandir la columna Tabla me da esto:
Como puede ver, la última fila del conjunto de datos contiene valores en las columnas Table.Attribute:href y Table.Attribute:rel que indican que hay otra página de datos y la dirección URL con un parámetro de cursor anexado a ella.
He intentado escribir una consulta que invoca la función y usa la función List.Generate para paginar los datos, pasando el valor de Table.Attribute:href a la función, creando una lista de tablas hasta que no haya más páginas que procesar.
Usando la ayuda que has dado en otros subprocesos y en este también, he escrito esta consulta pero como puedes ver, por alguna razón no parece gustarle la referencia de campo:
Si elimino el [Attribute:href] el código no muestra errores y devuelve el conjunto de datos inicial, pero no va más allá (como puede ver el bucle está configurado para devolver 5 páginas con fines de prueba):
Espero que esto ayude, pero si necesita más información por favor hágamelo saber!
Muchas gracias
- ImkeF6 years agoCommunity Champion
- Anonymous6 years agoNot applicable
Hola @ImkeF,
No tengo suerte. Este es el código ahora, pero todavía obtengo un error de identificador no válido para el atributo parte.
let myList = List.Generate( ()=> [Result = try Query4("https://api.brighttalk.com/v1/channel/10737/webcasts") otherwise null, Counter = 0], each [Result] <> null and [Counter] < 5, each [Result = try Query4(Table.LastN([Result], 1)[Attribute:href]) otherwise null, Counter = [Counter]+1], each [Result]) in myList- ImkeF6 years agoCommunity Champion
Hola @eyeballkid ,
para fines de depuración, utilice esta consulta:
let myList = List.Generate( ()=> [Result = Query4("https://api.brighttalk.com/v1/channel/10737/webcasts"), Counter = 0], each [Counter] < 5, each [Result = Query4(Table.LastN([Result], 1)[#"Attribute:href"]), Counter = [Counter]+1], each [Result]) in myListDebe crear una lista y allí tienes que navegar a los errores y pegar capturas de pantalla de ellos por favor.