Страницы: 1
RSS
Power query ошибка при загрузке данных, которых может не быть
 
Коллеги, помогите, пожалуйста.
Подгружаю с помощью запросов, а точнее функций power query json файл со сложной структурой
Этот json файл содержит таблицы в ячейках (обозначаются как record), и списки, то есть несколько таблиц (обозначаются как list)
Я выдëргиваю нужную ячейку содержащую list, вытаскиваю нужные мне данные, но когда такая ячейка пуста, функция выдачи ошибку, и в таблице экселя не обновляет данные, там остаются данные от прошлого запроса. Как быть, как сделать, чтобы в подобных случаях данные обновлялись, и в таблице экселя появлялись пустые поля
 
Файл-пример возможен?
 
Вот файл с примером.
Для примера там указано два ID, который нужно ввести в обведённую ячейку и обновить запрос. По одному ID в json есть информация, и она корректно загружается, но по другому ID в json в нужном месте находятся просто квадратные скобки [ ] и нет никакой информации. В этом случае, Excele выдаёт ошибку "expression.error столбец "Столбец1" таблицы не найден" и ОСТАВЛЯЕТ ПРОШЛЫЕ ДАННЫЕ. В этом моя проблема, мне нужно, чтобы в этом случае данных не было, были пустые поля.
 
Наверное так
 
Да, спасибо. Это работает. Вообще, я бы хотел изменить функцию, а не запрос, потому что на эту функцию будет ссылаться несколько запросов. Но хотя бы так.


Какой-то очень сложный синтаксис, не могу с ним разобраться по примерам. А задачи ещё есть
 
Святогор Белов, обычное ЕСЛИ
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательский", each fxAthleticHonoredRanks([Столбец1])),
    #"Развернутый элемент Пользовательский" = Table.ExpandTableColumn(#"Добавлен пользовательский объект", "Пользовательский", {"AthleticHonoredRankType.Name", "AthleticHonoredRankType.ShortName"}, {"Пользовательский.AthleticHonoredRankType.Name", "Пользовательский.AthleticHonoredRankType.ShortName"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент Пользовательский",{"Столбец1"}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Удаленные столбцы",{{"Пользовательский.AthleticHonoredRankType.Name", "AthleticHonoredRankType.Name"}, {"Пользовательский.AthleticHonoredRankType.ShortName", "AthleticHonoredRankType.ShortName"}}),
    Custom1 = 
    if // если
    Table.RowCount(#"Добавлен пользовательский объект") // кол-во строк таблицы
    =  // равно
    Table.RowCount(Table.RemoveRowsWithErrors(#"Добавлен пользовательский объект", {"Пользовательский"})) // кол-ву строк таблицы с удаленными строками с ошибкой в колонке Пользовательский
    then // то
    #"Переименованные столбцы" // используем этот шаг
    else // иначе
    #table({"AthleticHonoredRankType.Name","AthleticHonoredRankType.ShortName"},{{null,null}}) // используем эту таблицу с пустыми значениями
in
    Custom1


Можно так использовать:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательский", each fxAthleticHonoredRanks([Столбец1])),
    #"Развернутый элемент Пользовательский" = Table.ExpandTableColumn(#"Добавлен пользовательский объект", "Пользовательский", {"AthleticHonoredRankType.Name", "AthleticHonoredRankType.ShortName"}, {"Пользовательский.AthleticHonoredRankType.Name", "Пользовательский.AthleticHonoredRankType.ShortName"}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Развернутый элемент Пользовательский",{"Столбец1"}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Удаленные столбцы",{{"Пользовательский.AthleticHonoredRankType.Name", "AthleticHonoredRankType.Name"}, {"Пользовательский.AthleticHonoredRankType.ShortName", "AthleticHonoredRankType.ShortName"}}),
    a = Table.RowCount(#"Добавлен пользовательский объект"),
    b = Table.RowCount(Table.RemoveRowsWithErrors(#"Добавлен пользовательский объект", {"Пользовательский"})),
    c = #table({"AthleticHonoredRankType.Name","AthleticHonoredRankType.ShortName"},{{null,null}}),
    Custom1 = if a = b then #"Переименованные столбцы" else c
in
    Custom1
Страницы: 1
Наверх