【发布时间】:2019-02-21 21:18:21
【问题描述】:
我正在将数据从 XML 文件导入 Power BI 桌面。如果字段值为空,例如,
<Address></Address> 然后 PBI 将该列类型分配为“表格”,并且无法将类型更改为文本。我收到一个错误:
Expression.Error:我们无法将 Table 类型的值转换为 Text 类型。 细节: 值=表 类型=类型
看起来如果第一个遇到的值是空的,那么在同一个“页面”中该列的所有后续行(数据正在被数据连接器以块的形式读取,也就是“页面”)获取分配类型“表” ,尽管并非总是如此。 对于某些列,甚至无法更改列数据类型(它们有“表格”图标)
关于如何将列类型更改为文本的任何想法?
Edit1:我注意到单击“表格”实际上显示该列中有一个文本值。也许 Power BI 有一些不可见的设置来克服这个空白字符串值问题? Edit2:看起来我遇到了与此处https://community.powerbi.com/t5/Desktop/XML-Import-Table-Type-in-Column/td-p/97512 中描述的相同的问题。这个简单的问题有没有解决方案? 我找到了这个https://community.powerbi.com/t5/Issues/Power-Query-should-not-wrap-simple-xml-elements-in-a-table/idi-p/125525。它看起来是“设计使然”并且不存在解决方案。浪费时间真是可惜……
我找到了别人的解决方案:
shared ConvertTableField=(aTable as table, fieldName as text)=>
let
//alternative: https://community.powerbi.com/t5/Desktop/Expand-value-from-table/td-p/214838
//#"Expanded g_v" = Table.TransformColumns(#"Expanded ts_info", {{"g_v", each if _ is table then Table.FirstValue(_, "") else _}})
#"Lists from table" = Table.TransformColumns(aTable,{{fieldName, each if _ is table then Table.ToList(_) else {_}}}),
#"Expanded List" = Table.ExpandListColumn(#"Lists from table", fieldName)
in #"Expanded List";
我还没有弄清楚如何为表的所有列运行这个函数。 M语言是我或多或少了解的编程语言中最难的...
【问题讨论】: