Forum Discussion
Cursor Datos paginados de Web API
Hola @ImkeF ,
Espero que estés a salvo y bien.
Si utilizo el enfoque de pasar una dirección URL a una función y la función que devuelve el conjunto de datos, ¿puedo hacer referencia a campos dentro de ese conjunto de datos sin expandir la tabla? Parece que no puedo conseguir el código para reconocer el nombre del campo. Por ejemplo, si utilizo la referencia de nombre de campo [Attribute:href] la sección Atributo se subraya como un error de identificador no válido.
Muchas gracias por su ayuda!
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?
- Anonymous6 years agoNot applicable
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 SourceSi paso la siguiente url:
https://api.myWebService.com/v1/channel/12345/webcastsRecibo 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 ago
Community 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