我目前正在开发PowerBi连接器。我从公司的REST-webservice获取数据。 现在关于分页了。 问题是,如果pageSize是100并且数据库中有101条记录(第一次调用我得到100,第二次得到1条记录),我就不能停止调用因为List.Count给了我一个不为零的记录空列表。
示例数据:
{"records":[{"firstname":"...","lastname":"..",}]}
代码:
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]
如果记录是
,我希望List.Count(recordsTable)为0或null{"records":[]}
但事实并非如此。
{"records":[]}
{"records":[{"firstname":"...","lastname":"..",}]}
给出相同的Count值。
这让我发疯了。我如何检查列表是否真的是空的,如
{"records":[]}
如果我这样检查
if(List.Count(acd) < 2) then
然后它停在空列表上,但也停在只有一个参数的列表上(正确)。这对我来说意味着空列表并不是空的?!
编辑: 感谢@MarcelBeug,这是有效的
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]
以下一行是游戏规则改变者
if(List.IsEmpty(json[records]) = true) then
似乎IsEmpty-Function正在寻找元素&#34;记录&#34;在json虽然我从未宣布&#34;记录&#34;。似乎该函数正在解析元素以搜索它,但我不是Power Query M中的专家。
答案 0 :(得分:1)
首先需要将字符串解析为JSON值,从而产生记录。 然后,您可以检查该记录的“记录”字段是否包含空列表。
示例(返回true):
let
Source = "{""records"":[]}",
#"Parsed JSON" = Json.Document(Source),
Custom1 = List.IsEmpty(#"Parsed JSON"[records])
in
Custom1