之前小伙伴给了一个问题,以Shared Access Signature Token(SAS)为数据源做Power BI报表。这个SAS我之前没有接触过~~~不过可以学。当然小伙伴很给力,还提供了一个很有用的文档。基本靠着文档就做出来了,所以其实我的小机智也没有机会用~~不过,在做的过程中也遇到了一个小问题,卡了我些时间。这个问题就是如何从List of Record生成一个数据表。
数据准备和解决方法如下:
数据准备:
1. 点击Power BI Desktop,新建一张空的 Power BI report;
2. Home里面点击Transform data控件里的Transforma data;如下图所示
3. 得到Power Query的界面,在左边,右键->新建一个Blank Query;
4. 点击Advanced Editor,写入以下代码
let Source = {[a = 1, b = "b1",c = false], [a = 2], [a = 3, b = "b3", c = true]}in Source
这个过程是在模拟我的SAS整理之后的数据源,一个数据list。
源数据的内容很简单,[ ]里面是定义的record的内容。其中,a=1,b=b1,c=false是一条记录,a=2是第二条记录,等等。对于源数据为非关系型数据库的,这样的record形式的数据内容会很常见的。
解决方法:
1. 最后一个tab页Transform,点击To Table Convert
2. 在这里默认项就可以了。点击OK。得到一个可以扩展的Column1.如下图所示:
3. 扩展column1的内容,点击OK。得到如下图所示内容。
这样就可以了。很简单啊~~
点击Advanced Editor,得到具体代码如下:
let Source = {[a = 1, b = "b1",c = false], [a = 2], [a = 3, b = "b3", c = true]}, #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"a", "b", "c"}, {"Column1.a", "Column1.b", "Column1.c"})in #"Expanded Column1"
话说我根本不想要重命名,所以可以把重命名部分去掉。
let Source = {[a = 1, b = "b1",c = false], [a = 2], [a = 3, b = "b3", c = true]}, #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"a", "b", "c"})in #"Expanded Column1"
得到结果如下:
还不错哦。
实际项目中比这个例子略复杂。我又非要纠结M Query,结果打脸了~~后来想清楚了,用上面这个最基本的方法做了,其实也很简单。
下一篇写SAS做数据源的那个文档。
谢谢关注,分享~~