DAX基础15:图中X轴固定字段项内容排序问题

浏览: 1298

今天又有人问关于图中X轴字段项内容排序的问题。所以写个文章解释一下。

问题描述如下:

WFCapacityAxis的在图中的显示,不是按照[0-50),[50-100),而是按照字符的表达方式表示的。不符合用户的需求。客户需要按照[0~50),[50~100),[100~150)这样的大小顺序排列。其中“[”表示大于等于,“)"表示小于。

解决方法:

已知:这里WFCapacity的定义来自于WF Capacity MW(bin).

WFCapacity= SWITCH(WF Capacity MW(bin),0,"[0~50)",50,"[50~100)",100,"[100~150)",150,"[150~200)",200,"[200~250)",250,"[250+")

所以答案就是在建立一个新的Calculated Column。定义如下:

WFCapacitySort=SWITCH(WF Capacity MW(bin),0,"1",50,"2",100,"3",150,"4",200,"5",250,"6")

重点在于,给WFCapacity重新定义他的Sort By。其实之前在DAX基础4讲新建日期表的时候提过,给Month按照Month Number排序。

针对这个问题的回答就是这样了。下面来模拟一下这个问题,一步一步给出详细解释。

准备数据。

用的是之前的带Customer的数据。因为不想弄得太复杂,所以就只考虑Cusotmer中顾客的出生日期。

2. 按照出生日期和今天的对比,得到客户的年龄,然后按照不同的年龄分组。

Age Range = VAR Age = DATEDIFF(Customer[Birth Date],TODAY(),YEAR)VAR Range = IF(Age>=100,">=100",                IF(Age>=80&&Age<100,"[80~100)",                    IF(Age>=60&&Age<80,"[60~80)",                        IF(Age>=40&&Age<60,"[40~60)","Less than 40")                    )                ))return Range

如果不考虑Age Range的Sort问题,我们先看下结果。

X轴的内容完全比较乱的。所以我们要新建一个Calculated Column。内容和Age Range差不多。就改写一个。内容如下:

Age Range Sort = VAR Age = DATEDIFF(Customer[Birth Date],TODAY(),YEAR)VAR Range = IF(Age>=100,"5",                IF(Age>=80&&Age<100,"4",                    IF(Age>=60&&Age<80,"3",                        IF(Age>=40&&Age<60,"2","1")                    )                ))return Range
br

然后选中Age Range字段。按照下面3步操作。

还有,别忘记设置下这个图中的排序。Sort by “Age Range”。

结果如下:

这个是完整的肯定不会出错的制作流程。为什么这么说,是因为还有人问过其他的问题,比如说,Age Range Sort的定义来自于Age Range,然后又想用Age Range Sort来给Age Range来排序。这样就会产生一个环路,会报错。所以Age Range Sort不能来自于Age Range。

这个还是很好用的。比如瀑布图里面,X轴中的内容顺序是固定的,这个就很好用。还有财务的报表里面,结合New Group和这个Sort by,就可以很好的展示固定格式的财务报告。

谢谢关注。


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

0 个评论

要回复文章请先登录注册