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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

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
July 2024 Power BI Update

Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

July Newsletter

Fabric Community Update - July 2024

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

Top Solution Authors