图表里的Fixed date。这个标题有点简单,具体来说我在这里介绍的就是filter对图表没有影响,并且补全所在date下的全部数据。事实表中没有的度量值用0补充。
首先说道filter对图表没有影响,可能你想到了Format->Edit interactions.
Er...Edit interactions是对Slicer起作用,本文主要是说如果针对报表或者页面或者Visualizations的是FILTERS。(下面两个地方的Filters是一样的,不过新版本中的左边白色Filters还可以设置一些,具体基础分享再说啦。有兴趣的也可以自己先看看)
话不多说,开始啦~~献上我的大路飞表达下我周一的心情!
数据介绍:
Date table是用M Query建的2013全年和2014年全年的数据。(不知道怎么建的,请参考DAX分享5)
事实表的数据就是微软官网的财务案例financials的数据。(不知道那个financials的数据,请移步DAX分享3,链接地址在里面)
financials中sales的数据从2013年9月到2014年12月。其他月份没有数据。
需求如下:
我要2013年到2014年全年的数据,不受Product和Segment在Filter上的选择变化的影响。2013年没有的数据用0补齐。
解决方法:
如果我们什么都不处理,直接就在图表里拉这四个字段。得到结果如下:
很好理解。两张表先做了内连接,然后数据被过滤了,就只有这几个月有数据。所以肯定是要处理下Sales这个事实数据啦。因为要先考虑Date表,所以数据字段肯定是要在Date表里面建了,然后想到是一对多的关系。DAX里面当然就是RELATEDTABLE啦。很简单吧。so easy。所以在Date表里面建立一个Calculated column.具体定义如下:
Sales = IF(
ISBLANK(SUMX(RELATEDTABLE(financials),financials[ Sales])),
0,
SUMX(RELATEDTABLE(financials),financials[ Sales]))
怎么样,是不是很简单啊。
敲黑板啦!一对多的关系就要想起RELATEDTABLE。随便你的filter怎么选怎么改都没有关系啦。
也许你会说,用All写在financials表也可以不考虑filter里面的影响啊。Er,那补全2013年1月到8月的0怎么办呢?嗯,这个时候,你可以说,那我在数据源用M Query先把这几个月的数据在financials数据表中补全啊。嗯,当然这样就可以了啊。事实上,几年之前Share君也这么做过的吖~~不过现在想想这个方法还真是傻啊,性能也很差。说多了都是泪!
想想那个麻烦的补数据,是不是觉得RELATEDTABLE很简单啊。so easy!DAX就是这么简单啊~~
欢迎关注DAX Share。分享给你好玩又简单的DAX!