March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hi Everyone,
This is my first time working with a REST API in Power BI and I'm running into an issue with pagination...
I have an initial GET that calls out to a REST service which returns 100 results and a link for the next 100 results. This link is the same GET call but with an additional parameter page_token. So I need PowerBI to basically capture the results and then continue to loop through the rest of the results using this parameter and combine all the results together.
I know there is quite a bit of documentation on pagination, like this Community post and this article by the BI Accountant, but all the solutions I can find require either knowing the total records or total pages or have the next page url listed explicitely in the inital record.
In my case, when the API is called, it returns this initial record.
But you have to click into Pagination in order to grab the next URL:
Based on my research, I was able to piece together this List.Generate function, but I'm having trouble understanding how this would all come together -- how do I tie the next record from above into this List.Generate?
Thanks in advance for your thoughts!
Solved! Go to Solution.
Hi @Anonymous
The next page url is stored in Result[_pagination][next] so try this
let
Source = List.Generate( () =>
[ URL = "https://api2.frontapp.com/" , Result = Json.Document(Web.Contents(URL)) ],
each [URL] <> null,
each [ URL = [Result][_pagination][next] , Result = Json.Document(Web.Contents([URL])) ]
)
in
Source
This code will end assuming that [_pagination][next] is null when there are no more records to retrieve.
Regards
Phil
Proud to be a Super User!
Hi @Anonymous
The next page url is stored in Result[_pagination][next] so try this
let
Source = List.Generate( () =>
[ URL = "https://api2.frontapp.com/" , Result = Json.Document(Web.Contents(URL)) ],
each [URL] <> null,
each [ URL = [Result][_pagination][next] , Result = Json.Document(Web.Contents([URL])) ]
)
in
Source
This code will end assuming that [_pagination][next] is null when there are no more records to retrieve.
Regards
Phil
Proud to be a Super User!
Thank you Philip! That [_pagination][next] was the piece I was missing!
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.
User | Count |
---|---|
134 | |
90 | |
90 | |
64 | |
58 |
User | Count |
---|---|
201 | |
137 | |
107 | |
70 | |
68 |