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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
alexbjorlig
Helper IV
Helper IV

How to make List.Generate work with cursor based pagination

I'm developing a custom power bi connector consuming a GraphQl API, and my objective is to use the List.Generate to support cursor based pagination. My code is inspired by this Github comment. The code looks like this:

 

 

GeneratedList =
            List.Generate(
                () => [res = getPage(queryName, query, operationName, [pagination = [first = 100]])],
                each Comparer.Equals(Comparer.FromCulture("en-us"), [res][hasNextPage], true ),
                each [ res = getPage(queryName, query, operationName, [pagination = [first = 100, after = [res][endCursor]]] ) ],
                each [res][edges]
            )

 

 

The above works if the initial page has more than 100 items. But if all items can be returned in the initial call, then it does not work, an empty list is returned. Why is this the case? I checked the queries that are returned from the API and they seem to work perfect with hasNextPage property.

 

Update - and solution

According to this comment from Ben Gribaud, test function is also used for the initial result. With that in mind the working code looks like this:

 

 

        GeneratedList =
            List.Generate(
                () => [res = getPage(queryName, query, operationName, [pagination = [first = 11]])],
                each [res]<>null and [res][edges]<>null and List.Count([res][edges]) > 0,
                each [ res = if Comparer.Equals(Comparer.FromCulture("en-us"), [res][hasNextPage], false ) then null else getPage(queryName, query, operationName, [pagination = [first = 23, after = [res][endCursor]]] ) ],
                each [res][edges]
            )

 

 

 

1 REPLY 1
v-yiruan-msft
Community Support
Community Support

Hi @alexbjorlig ,

Thanks for sharing your solution here, it will help the others in the community find the solution easily if they face the same problem with yours. Much appreciated!

Best Regards

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

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

March2025 Carousel

Fabric Community Update - March 2025

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