Я пытаюсь использовать функцию получения и преобразования Excel (ранее известную как powerquery) для импорта источника данных XML. Источник данных содержит список тегов b
, каждый из которых содержит переменное число тегов d
в дочернем элементе c2
, например:
<a>
<b>
<c1>foo</c1>
<c2>
<d>bar</d>
</c2>
</b>
<b>
<c1>fuz</c1>
<c2>
<d>baz</d>
<d>quz</d>
</c2>
</b>
</a>
Когда я импортирую эти данные с В следующем запросе тип данных для столбца c2.d отличается для двух разных строк, представляющих элементы b
, для первой строки это общий тип ячейки электронной таблицы, для второй строки это тип таблицы.
let
Source = Xml.Tables(File.Contents("C:\Localdata\excel-powerquery-test2.xml")),
Table0 = Source{0}[Table],
#"Changed Type" = Table.TransformColumnTypes(Table0,{{"c1", type text}}),
#"Expanded c2" = Table.ExpandTableColumn(#"Changed Type", "c2", {"d"}, {"c2.d"})
in
#"Expanded c2"
Похоже, что для первой строки он автоматически преобразует тег d
в простую ячейку электронной таблицы, поскольку существует только одна и она содержит только текст. Однако для второй строки он видит два тега d
и, следовательно, сохраняет их в виде таблицы. Теперь проблема в том, что я не могу ни загрузить данные как есть, так как таблица во второй строке загружена в электронную таблицу в виде буквенной строки "Table"
, оставляя меня без фактических данных, и не могу дополнительно расширить таблицу с помощью Table.ExpandTableColumn
поскольку (справедливо) жалуется, что bar
в первой строке не является таблицей.
Я предполагаю, что автоматическое c преобразование одного тега, содержащего текст, в простую ячейку, а не в таблицу, происходит либо в функции Xml.Tables
или ExpandTableColumn
. Всплывающая подсказка для Xml.Tables
показывает, что у нее есть параметр options
, к сожалению, документация для Xml.Tables
не дает никаких подробностей об этом параметре options
.
Как я могу получить эту вторую строку, расширенную до двух строк, по одной для двух тегов d
, содержащихся во втором теге b
, имеющих одинаковую строку "fuz"
в первом столбце? Такое расширение прекрасно работает, если содержимое тегов d
является дополнительным тегом XML, но, очевидно, нет, если теги d
содержат только текст.