Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Páginas de API max

Soy nuevo con los datos de la API, así que lucho mucho con este problema. Cuando cargo datos en PowerBi desde el sitio web, se detiene en 20 registros (los más nuevos) en lugar de todos los registros de una tabla. Cuando quiero hacer un informe quiero todos los datos y no solo 20.

Este es el código en el editor avanzado.

let
    Bron = Json.Document(Web.Contents("https://app.website.nl/api/user/v1/account/leads", [Headers=[Accept="application/json", Authorization="Bearer 123456789"]])),
    #"Geconverteerd naar tabel" = Table.FromRecords({Bron}),
    #"data uitgevouwen" = Table.ExpandRecordColumn(#"Geconverteerd naar tabel", "data", {"path", "per_page", "next_cursor", "next_page_url", "prev_cursor", "prev_page_url", "data"}, {"data.path", "data.per_page", "data.next_cursor", "data.next_page_url", "data.prev_cursor", "data.prev_page_url", "data.data"}),
    #"data.data uitgevouwen" = Table.ExpandListColumn(#"data uitgevouwen", "data.data"),
    #"data.data uitgevouwen1" = Table.ExpandRecordColumn(#"data.data uitgevouwen", "data.data", {"id", "business", "gender", "firstname", "lastname", "postcode", "housenumber", "suffix", "streetname", "city", "company_name", "activity", "locked", "status", "created_by", "planned_user_id", "planned_date", "planned_by", "planned_at", "planned_from", "planned_to", "completed_at", "created_at", "updated_at", "planned_to_username", "completed_by_username", "lead_source", "filter_status", "name", "address"}, {"data.data.id", "data.data.business", "data.data.gender", "data.data.firstname", "data.data.lastname", "data.data.postcode", "data.data.housenumber", "data.data.suffix", "data.data.streetname", "data.data.city", "data.data.company_name", "data.data.activity", "data.data.locked", "data.data.status", "data.data.created_by", "data.data.planned_user_id", "data.data.planned_date", "data.data.planned_by", "data.data.planned_at", "data.data.planned_from", "data.data.planned_to", "data.data.completed_at", "data.data.created_at", "data.data.updated_at", "data.data.planned_to_username", "data.data.completed_by_username", "data.data.lead_source", "data.data.filter_status", "data.data.name", "data.data.address"}),
    #"Type gewijzigd" = Table.TransformColumnTypes(#"data.data uitgevouwen1",{{"success", type logical}, {"data.path", type text}, {"data.per_page", Int64.Type}, {"data.next_cursor", type text}, {"data.next_page_url", type text}, {"data.prev_cursor", type any}, {"data.prev_page_url", type any}, {"data.data.id", Int64.Type}, {"data.data.business", Int64.Type}, {"data.data.gender", type text}, {"data.data.firstname", type any}, {"data.data.lastname", type text}, {"data.data.postcode", type text}, {"data.data.housenumber", Int64.Type}, {"data.data.suffix", type any}, {"data.data.streetname", type text}, {"data.data.city", type text}, {"data.data.company_name", type any}, {"data.data.activity", type text}, {"data.data.locked", Int64.Type}, {"data.data.status", type text}, {"data.data.created_by", Int64.Type}, {"data.data.planned_user_id", Int64.Type}, {"data.data.planned_date", type datetime}, {"data.data.planned_by", Int64.Type}, {"data.data.planned_at", type datetime}, {"data.data.planned_from", type datetime}, {"data.data.planned_to", type any}, {"data.data.completed_at", type datetime}, {"data.data.created_at", type datetime}, {"data.data.updated_at", type datetime}, {"data.data.planned_to_username", type text}, {"data.data.completed_by_username", type text}, {"data.data.lead_source", type any}, {"data.data.filter_status", type text}, {"data.data.name", type text}, {"data.data.address", type text}, {"message", type text}})
in
    #"Type gewijzigd"

Tinus1905_0-1702041788534.png

En la documentación de la API veo esto.

"path": "https://app.website.nl/api/user/v1/account/leads",
    "per_page": 20,
    "next_cursor": "eyJsZWFkcy5pZCI6MTYxMDg1MjYsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
    "next_page_url": "https://app.website.nl/api/user/v1/account/leads?cursor=eyJsZWFkcy5pZCI6MTYxMDg1MjYsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
    "prev_cursor": null,
    "prev_page_url": null,

Probé muchas, muchas, muchas soluciones, pero nada funciona para mí.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Sí, problema resuelto. Gracias a este artículo.

https://datachant.com/2016/06/27/cursor-based-pagination-power-query/

@lbendlin ; Leí el artículo, pero no sé cómo pegar o crear una nueva table.generateByPage en mi tabla o editor avanzado.

¿Pueden ayudarme con esto?

Esa es solo una función de conveniencia, no es necesario usarla textualmente.

Como probablemente pueda apreciar, es casi imposible ayudar con las consultas de la API sin acceso a dicha API (que es posible que no esté dispuesto a proporcionar por razones comprensibles)

Ok, cuando llamo a la API, la url tiene 20 registros. Hay una columna en esta tabla con "data.next_page_url". En esta columna, el enlace url es para la segunda página. Cuando duplico esta tabla y cambio la url en el editor avanzado con la url de la columna "data.next_page_url", obtengo nuevos registros, así que está bien.

Para obtener todos los registros en 1 tabla, probé esto:

(page as number)=>
let
Source = Json.Document(Web.Contents("https://webadress"&Number.ToText(page),
#"Converted to Table" = Table.FromList(data1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
etc
etc

Luego creé una nueva tabla con:

let
    Source = List.Generate(()=>
[result = try #"fLeads (2)"(1) otherwise null, page=1],
each [result]<>null,
each [result = try #"fLeads (2)"([page]+1) otherwise null, page=[page]+1],
each [result]),  
  #"Converted to Record" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
etc
etc

Obtengo una tabla con muchos registros, pero todos los registros son de la primera url una y otra vez.

También intenté cambiar el enlace de la URL de la "data.next_page_url", pero no tuve éxito.

La mecánica de este tipo de paginación se describe en el artículo al que he enlazado.

@lbendlin gracias por tu comentario, lo intentaré.

Helpful resources

Announcements
May PBI 25 Carousel

Power BI Monthly Update - May 2025

Check out the May 2025 Power BI update to learn about new features.

May 2025 Monthly Update

Fabric Community Update - May 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors
Top Kudoed Authors