Коллеги, помогите, пожалуйста. Подгружаю с помощью запросов, а точнее функций 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