背景
我需要根据一个锁定在防火墙的PostgreSQL数据库中的数据创建一个Power BI报告/仪表板。不能将Power BI直接连接到DB。但是我可以访问在同一台服务器上运行的Python脚本,因此编写一个简单的提取/转换脚本并将数据显示为XML或JSON是相当简单的。
问题
我是Power BI的新手,我无法弄清楚如何在Power BI桌面中将数据转换为表格
这是一个例子 标准销售演示的源表
Month | Count
_____________
Jan | 100
Feb | 150
Mar | 200
...
这就是我想要在Power BI的另一端的表格
我尝试过JSON:
{
data: {
sales: [
{Jan:100},
{Feb:150},
{Mar:200}
]
}
}
我尝试过XML:
<root>
<data>
<sales>
<period>
<month>Jan</month>
<count>100</count>
</period>
<period>
<month>Feb</month>
<count>100</count>
</period>
<period>
<month>Mar</month>
<count>200</count>
</period>
</sales>
</data>
</root>
显然,这是我正在使用的数据的简化版本,但它说明了问题
我尝试使用UI解析它。数据加载,我可以深入到行,但无法弄清楚如何作为一个表读入 - 我最终得到一个列表,一个只有一行的表或一个表的表
答案 0 :(得分:4)
Power Query对键值对数据(M记录)和表格数据(M表)有不同的表示。
如果您使用Xml.Tables
库函数并向下钻取:
let
Source = Xml.Tables("<root>
<data>
<sales>
<period>
<month>Jan</month>
<count>100</count>
</period>
<period>
<month>Feb</month>
<count>100</count>
</period>
<period>
<month>Mar</month>
<count>200</count>
</period>
</sales>
</data>
</root>"),
Table = Source{0}[Table],
Table1 = Table{0}[Table],
Table2 = Table1{0}[Table],
#"Changed Type" = Table.TransformColumnTypes(Table2,{{"month", type text}, {"count", Int64.Type}})
in
#"Changed Type"
如果您想使用JSON,则应将架构更改为单个JSON对象,而不是许多对象的列表。
let
Source = Json.Document("{
data: {
sales: [{
Jan:100,
Feb:150,
Mar:200
}]
}
}"),
data = Source[data],
sales = data[sales],
sales1 = sales{0},
#"Converted to Table" = Record.ToTable(sales1),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Name", "Month"}, {"Value", "Count"}})
in
#"Renamed Columns"
Converted to Table
之前的步骤是M记录,根据您的想法,它可能更有用。您可以使用Record.ToTable
创建一个双列表。