Power BI /查询文本列显示为表格

时间:2019-02-21 21:18:22

标签: powerbi powerbi-desktop

我正在从XML文件将数据导入Power BI桌面。如果该字段值为空,例如 <Address></Address>之后,PBI将该列类型分配为“表格”,并且无法将其更改为文本。我遇到错误:

  

Expression.Error:我们无法将Table类型的值转换为Text类型。   细节:       值=表       类型=类型

如果第一个遇到的值为空,则该列的所有后续行都在同一“页面”中(数据连接器正在以块(也称为“页面”的形式读取数据)读取)分配了类型“表” ,尽管并非总是如此。 对于某些列,甚至无法更改列数据类型(它们具有“表格”图标)

Power Bi image

关于如何将列类型更改为文本的任何想法?

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语言是我或多或少知道的编程语言中最难的一种。

1 个答案:

答案 0 :(得分:0)

我不确定XML的用法,但是就表类型到文本的转换而言-这对我有用。也许这太过分了。

let Source = (Table1 as table) =>

let

Section = Record.ToTable(#sections[Section1]),

Compare = Table.SelectRows(Section, each [Value] = Table1){0},

GetName = Record.Field(Compare,"Name")

in GetName 

in Source