I'm currently developing a PowerBi connector. I get the data from a REST-webservice of a company. Tt's about the pagination now. The Problem is that if the pageSize is 100 and there are 101 records in the database (first call i get 100, second i get 1 record), i can't stop the call cause List.Count gives me not zero on an empty list.
Example data:
{"records":[{"firstname":"...","lastname":"..",}]}
Code:
json = Json.Document(Web.Contents(url, [
Content = Text.ToBinary(body)])),
records = Table.FromRecords({json}),
recordsExpaned = Table.ExpandTableColumn(records, "records", {"firstname", "lastname"}),
recordsTable = Table.ToList(recordsExpaned),
result =
if(List.Count(recordsTable) < 1) then
Data.Contacts(json) meta [NextPage = null]
else
SData.Contacts(json) meta [NextPage = page + 1]
I expect that the List.Count(recordsTable) is 0 or null, if the records are
{"records":[]}
But this isn't the case.
{"records":[]}
{"records":[{"firstname":"...","lastname":"..",}]}
gives the same Count value.
This is driving me crazy. How can i check if the list is really empty like
{"records":[]}
If i check it like this
if(List.Count(acd) < 2) then
then it stops on the empty list but also on a list with only one argument(thats right). This means to me that the empty list is not really empty?!
EDIT: Thanks to @MarcelBeug this is working
json = Json.Document(Web.Contents(url, [
Content = Text.ToBinary(body)])),
data = Table.FromRecords({json}),
recordsExpaned = Table.ExpandTableColumn(data, "records", {"firstname", "lastname"}),
recordsTable = Table.ToList(recordsExpaned),
result =
if(List.IsEmpty(json[records]) = true) then
Data.Contacts(json) meta [NextPage = null]
else
Data.Contacts(json) meta [NextPage = page + 1]
the following line was the game changer
if(List.IsEmpty(json[records]) = true) then
it seems that the IsEmpty-Function is looking for the element "records" in the json although i never declared "records". It seems that the function is parsing the element to search for it, but im not an expert in Power Query M.