今天又有人问关于图中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,就可以很好的展示固定格式的财务报告。
谢谢关注。