https://zhuanlan.zhihu.com/p/64413703
通常情况下,在PowerBI进行分析的各种数据表都是从外部的各种数据源导入进来的,但并不总是如此,某些情况下在PowerBI Desktop中也可以根据需要直接建立各种表格。
在进行数据分析的过程中,也许还需要加入新的数据表或者新的维度,而我们并不想再导入源数据或者回到PQ编辑器进行处理,那么就可以利用已加载到模型中的数据进行构建新表,下面就来看看如何在PowerBI Desktop中新建数据表,以及几种常见的使用场景。
如何新建表
在【建模】选项卡下点击“新表”,就可以建立一个表格了,
然后在出现的编辑框中输入DAX函数就可以了。
常见的使用场景
合并数据表
将现有数据结构相同的多个表合并为一个表,无需进入PQ编辑器操作。假如PowerBI Desktop中已经有如下两个分月销售数据表,表名分别为'1月'和'2月',
▲1月份销售数据
▲2月份销售数据
在新表的编辑框中输入:
合并 = union('1月','2月')
然后1月和2月的数据就合并到这种新建的'合并'表中了,
▲1月和2月合并数据
UNION函数的参数就是表名,它的功能是纵向追加数据,和PQ的追加合并功能相同。
交叉联结
就是把两个表通过某个字段进行联结,还是上面的数据,另外还有一个'采购表',
先把这个表中的[产品]列和合并表中的[商品名称]建立关系,
然后新建表,输入:
合并联结 = NATURALINNERJOIN('合并','采购表')
然后就新建了一个合并联结表如下,
这张表自动把每种商品的购入价匹配进来了,NATURALINNERJOIN函数类似于我们最熟悉的Vlookup,它的参数就是两个表格,不过要区分前后顺序,第一个表是基础表,第二个表是联结表,相当于左联结。
提取维度表
可以根据现有的数据字段,提取需要的维度表,根据上面的合并表,如果需要一个商品名称的维度表,在DAX编辑框中输入:
产品表 = DISTINCT('合并'[名称])
将建立一个产品表,
DISTINCT函数可以提取一列中不重复的值。
生成日期表
这个应该是最经常使用的了,如果数据模型中没有日期表,那么没有必要再去找一个日期表然后导入进来,可以直接在PowerBI Desktop中新建表,并输入:
日期表 = ADDCOLUMNS (
CALENDAR (DATE(2016,1,1), DATE(2016,12,31)),
"年度", YEAR ( [Date] ),
"月份", FORMAT ( [Date], "MM" ),
"年月", FORMAT ( [Date], "YYYY/MM" ),
"星期", WEEKDAY ( [Date] ) & "-" & FORMAT ( [Date], "ddd" ),
"季度", "Q" & FORMAT ( [Date], "Q" ),
"年份季度", FORMAT ( [Date], "YYYY" ) & "/Q" & FORMAT ( [Date], "Q" ))
然后就生成了一个标准的日期表,
这个DAX看着很长,其实并不难,第一行利用CALENDAR函数设置日期表的起止日期,然后就是利用FORMAT函数对每一列进行格式设置而已,比在Excel中生成还简单,如果需要带有特定字段的日期表,在上面的DAX公式添加特定的格式列即可。
新增空表
新增加一个空表经常用来放置度量值,比如新建一个空表,输入:
度量值表 = ROW("度量值", BLANK())
然后选择度量值,放入到这个表中,操作步骤如GIF图,
当模型中新建的度量值特别多的情况下,用一个表专门收纳度量值非常必要。
通过以上的例子可以看出,在PowerBI Desktop中新建的表与其他导入的表并没有区别,可以和其他表建立关系,也可以添加到报表进行可视化;如果是在导入表的基础上构建的,那么源数据变动,这些新建表同样会自动更新。
并且新建表是用DAX函数构建的,这让它变得十分灵活高效,利用DAX的强大功能,新建表的使用场景远不止于此,以后的文章中还会提到。