Пустой список Power Query не распознается как пустой

В настоящее время я разрабатываю разъем PowerBi. Я получаю данные от REST-веб-сервиса компании. Теперь о нумерации страниц. Проблема в том, что если 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 ищет элемент «записи» в json, хотя я никогда не объявлял «записи». Кажется, что функция анализирует элемент для его поиска, но я не эксперт в Power Query M.


person Cramble    schedule 09.11.2017    source источник


Ответы (1)


Сначала вам нужно проанализировать строку как значение JSON, в результате чего получится запись. Затем вы можете проверить, содержит ли поле «записи» этой записи пустой список.

Пример (возвращает истину):

let
    Source = "{""records"":[]}",
    #"Parsed JSON" = Json.Document(Source),
    Custom1 = List.IsEmpty(#"Parsed JSON"[records])
in
    Custom1
person MarcelBeug    schedule 09.11.2017
comment
это работает! Я разбираю json как json = Json.Document (Web.Contents (url, [Content = Text.ToBinary (body)])), или я ошибаюсь? я изменил, только если (List.IsEmpty (json [records]) = true), тогда как я могу передать необъявленные записи переменных? казалось, что функция IsEmpty ищет записи элементов в json, но как основной разработчик Java это не должно работать, но работает: D Большое спасибо, сэр! - person Cramble; 09.11.2017