有时在 Power BI 中,你可能希望将日期或月份名称以单个字母命名来节省空间。但正常情况来说,我们会马上想到这样做出现重复的风险比较大,因为当你将日期名称或月份名称缩短为一个字母时,它们都不是唯一的。
那就真的就否定我们的想法吗,既然今天提出了这个问题,那肯定是有找到了相应的解决办法可以实现,而且还不是一种方案,在这本文中,我将从采用两种方式来处理该问题:DAX函数和M语言。
问题
假设你有一个日历表,如下所示:
可以使用以下公式在 DAX 中创建该表:
下面是相应的 M 代码:
现在,假设你要将日名称缩短为单个字母:星期五应为 F,星期六应为 S,等等。
在 DAX 中,你可以添加以下计算列:
在 M 中,你可以使用以下自定义列:
但无论使用哪种方式,如果尝试按"星期几"列对新列进行排序,你都会得到以下错误:
这是因为对于每个单个字母的日名称,可能有多个星期一的值,如周六、周日就对应了字母 “S”。使用月份名称时,你会遇到同样的问题。现实既然如此,那我们要如何做到名称的唯一性呢?
DAX 中的解决方案
诀窍是添加一些非打印字符来区分值。例如,你可以使用零宽度空间 。若要使值不同,请向每个字母添加不同数量的零宽度空格,如:UNICHAR(8203)
提示:REPT重复文本字符串,也正是我们所需要的。
PQ中M语言的解决方案
再来看M 语言中的相应自定义列公式是
现在,对于每个单个字母的日名称,只有一个星期一的值,我们可以按星期数对新列进行排序。
注意:严格地说,列和排序列之间不需要一对一的关系。
推荐阅读
5. 不再裂开 | 一组你们心心念念的 Power BI 报告集锦,请签收!
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载。