Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
3 years ago

Devolver todas las filas de JSON Query

Hola a todos,

Actualmente estoy usando la siguiente llamada a la API a una tabla de Dataverse. Desafortunadamente, esto da como resultado que solo se devuelvan las primeras 500 filas.

let
    Source = Web.Contents(https://xxx-prod-xxx.api.crm11.dynamics.com/api/data/v9.2/audits)
                in
    Source

He encontrado una solución potencial a continuación:

https://stackoverflow.com/questions/65631024/json-query-in-power-bi-only-returning-first-1000-rows-how-to-return-all-rows

La solución primero implica hacer una función para acceder a la API:

let API = (relPath as text, optional queries as nullable record) =>
    let
        Source = Json.Document(Web.Contents(https://xxxx.api.crm4.dynamics.com/, 
            [ Query = queries, 
              RelativePath=relPath]))
    in
        Source
in 
    API

Y luego ejecutar otra consulta usando List.Generate para realizar varias llamadas a la API según sea necesario:

let
    Source = API("path/to/records", [rows_per_page="1000"]),
    pages = Source[total_pages],
    records = 
        if pages = 1 then Source[records] 
        else List.Combine(List.Generate(
            () => [page = 1, records = Source[records]], 
            each [page] <= pages, 
            (x) => [page = x[page] + 1, records = API("path/to/records", [page = Text.From(x[page] + 1), rows_per_page = "1000"])[records]], 
            each [records]))
in
    records

Sin embargo, estoy atascado en esta parte porque no sé cómo modificar lo anterior para mi escenario (mi conocimiento de esta área es limitado).

¿Podría alguien aconsejar o sugerir alternativamente un método para devolver todas las filas?

Saludos

Imran-Ami

3 Replies