有时在 Power BI 中,你可能希望将日期或月份名称以单个字母命名来节省空间。但正常情况来说,我们会马上想到这样做出现重复的风险比较大,因为当你将日期名称或月份名称缩短为一个字母时,它们都不是唯一的。
那就真的就否定我们的想法吗,既然今天提出了这个问题,那肯定是有找到了相应的解决办法可以实现,而且还不是一种方案,在这本文中,我将从采用两种方式来处理该问题:DAX函数和M语言。
1
问题
假设你有一个日历表,如下所示:
可以使用以下公式在 DAX 中创建该表:
下面是相应的 M 代码:
现在,假设你要将日名称缩短为单个字母:星期五应为 F,星期六应为 S,等等。
在 DAX 中,你可以添加以下计算列:
在 M 中,你可以使用以下自定义列:
但无论使用哪种方式,如果尝试按"星期几"列对新列进行排序,你都会得到以下错误:
这是因为对于每个单个字母的日名称,可能有多个星期一的值,如周六、周日就对应了字母 “S”。使用月份名称时,你会遇到同样的问题。现实既然如此,那我们要如何做到名称的唯一性呢?
2
DAX 中的解决方案
诀窍是添加一些非打印字符来区分值。例如,你可以使用零宽度空间 。若要使值不同,请向每个字母添加不同数量的零宽度空格,如:UNICHAR(8203)
提示:REPT重复文本字符串,也正是我们所需要的。
3
PQ中M语言的解决方案
再来看M 语言中的相应自定义列公式是
现在,对于每个单个字母的日名称,只有一个星期一的值,我们可以按星期数对新列进行排序。
注意:严格地说,列和排序列之间不需要一对一的关系。
领取专属 10元无门槛券
私享最新 技术干货