Автоматизируйте загрузку нескольких файлов XML из веб-службы с помощью мощного запроса - PullRequest
0 голосов
/ 17 января 2019

Я хочу загрузить несколько XML-файлов из API веб-службы. У меня есть запрос, который получает документ JSON: = Json.Document (Web.Contents ("http://reports.sem -o.com / api / v1 / documents / статические отчеты? DPuG_ID = BM-086 & page_size = 100 "))

и управляет им, чтобы получить список имен файлов, таких как: PUB_DailyMeterDataD1_201812041627.xml в столбце электронной таблицы Excel.

Я надеялся заставить функцию работать с этим списком имен, чтобы получить все данные, поэтому сначала я работал над одним файлом: PUB_DailyMeterDataD1_201812041627

= Xml.Tables (Web.Contents ("https://reports.sem -o.com / documents / PUB_DailyMeterDataD1_201812041627.xml "))

Получается таблица XML, которой я манипулирую, чтобы получить нужные мне данные (полчаса в МВтч для генератора GU_401970

Теперь я хочу изменить запрос на функцию, чтобы автоматизировать процесс для всех XML-файлов, доступных из службы. Функция требует, чтобы переменная была заменена на имя файла. Я пытаюсь это как подготовка к функции:

пусть Имя файла = "PUB_DailyMeterDataD1_201812041627.xml",

Source = (Web.Contents ("https://reports.sem -o.com / documents / Filename ")), (с последующим манипулированием Mcode)

Это не работает.

тогда это:

пусть Имя файла = "PUB_DailyMeterDataD1_201812041627.xml",

Source = Xml.Tables (Web.Contents ("https://reports.sem -o.com / documents / [Имя файла] ")),

Я получаю: DataFormat.Error: Ошибка обработки XML. Либо ввод недействителен, либо он не поддерживается. (Внутренняя ошибка: данные на корневом уровне недействительны. Строка 1, позиция 1.) Подробности: Binary

Так застрял здесь. Вы можете помочь. Спасибо Конор

1 Ответ

0 голосов
/ 18 января 2019

Вы добавляете строки с символом «&» в Power Query. [Somename] - это формат для ссылки на поле в таблице, на обычную переменную ссылается только ее имя. Так в вашем примере

let Filename="PUB_DailyMeterDataD1_201812041627.xml",

Source = Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & Filename)), 

Будет работать.

Похоже, у вас есть существующий запрос, который детализируется до списка имен файлов, и вы пытаетесь использовать его для импорта их из URL-адреса, при этом предполагается, что столбец, из которого вы получили имена файлов, называется "Имя файла" тогда вы можете добавить пользовательский столбец с этим

Xml.Tables(Web.Contents("https://reports.sem-o.com/documents/" & [Filename]))

И он загрузит таблицу в строку каждого из имен файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...