DAX分享6:图表里的Fixed date

浏览: 1829

图表里的Fixed date。这个标题有点简单,具体来说我在这里介绍的就是filter对图表没有影响,并且补全所在date下的全部数据。事实表中没有的度量值用0补充。

首先说道filter对图表没有影响,可能你想到了Format->Edit interactions.

图6.2.png

Er...Edit interactions是对Slicer起作用,本文主要是说如果针对报表或者页面或者Visualizations的是FILTERS。(下面两个地方的Filters是一样的,不过新版本中的左边白色Filters还可以设置一些,具体基础分享再说啦。有兴趣的也可以自己先看看)

图6.3.png

话不多说,开始啦~~献上我的大路飞表达下我周一的心情!

图6.1.png

数据介绍:

Date table是用M Query建的2013全年和2014年全年的数据。(不知道怎么建的,请参考DAX分享5)

图6.4.png

事实表的数据就是微软官网的财务案例financials的数据。(不知道那个financials的数据,请移步DAX分享3,链接地址在里面)

图6.5.png

financials中sales的数据从2013年9月到2014年12月。其他月份没有数据。

需求如下:

我要2013年到2014年全年的数据,不受Product和Segment在Filter上的选择变化的影响。2013年没有的数据用0补齐。

解决方法:

如果我们什么都不处理,直接就在图表里拉这四个字段。得到结果如下:

图6.6.png

很好理解。两张表先做了内连接,然后数据被过滤了,就只有这几个月有数据。所以肯定是要处理下Sales这个事实数据啦。因为要先考虑Date表,所以数据字段肯定是要在Date表里面建了,然后想到是一对多的关系。DAX里面当然就是RELATEDTABLE啦。很简单吧。so easy。所以在Date表里面建立一个Calculated column.具体定义如下:

Sales = IF(

ISBLANK(SUMX(RELATEDTABLE(financials),financials[ Sales])),

0,

SUMX(RELATEDTABLE(financials),financials[ Sales]))

图6.7.png

怎么样,是不是很简单啊。

敲黑板啦!一对多的关系就要想起RELATEDTABLE。随便你的filter怎么选怎么改都没有关系啦。

图5.2.png

也许你会说,用All写在financials表也可以不考虑filter里面的影响啊。Er,那补全2013年1月到8月的0怎么办呢?嗯,这个时候,你可以说,那我在数据源用M Query先把这几个月的数据在financials数据表中补全啊。嗯,当然这样就可以了啊。事实上,几年之前Share君也这么做过的吖~~不过现在想想这个方法还真是傻啊,性能也很差。说多了都是泪!

想想那个麻烦的补数据,是不是觉得RELATEDTABLE很简单啊。so easy!DAX就是这么简单啊~~

欢迎关注DAX Share。分享给你好玩又简单的DAX!

banmi.jpg

推荐 0
本文由 懒胖子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册