DAX 中没有 QUARTER()?真的吗?
Posted
技术标签:
【中文标题】DAX 中没有 QUARTER()?真的吗?【英文标题】:No QUARTER() in DAX? Really? 【发布时间】:2015-12-04 15:35:28 【问题描述】:在 Excel 2013 中使用 PowerQuery 为 PowerPivot 模型构建日历表时,我使用其 Date.QuarterOfYear 函数获取季度数。
在 SSAS 表格中构建相同的内容需要一些变通方法。没有等效的 DAX 函数可以从 DATE 获取季度数。奇怪的是,DAX 有 YEAR() 和 MONTH(),但没有 QUARTER()。
嵌套的 IF
或 SWITCH
语句真的是 DAX 中获取季度数的唯一方法吗?
没有这么简单实用的功能是什么原因?我是否忽略了这个决定的至高无上的智慧?
【问题讨论】:
除了IF或者SWITCH还有其他方式:可以使用(MONTH([Date])+2)/3 感谢罗里的建议! 嗨@erop,你选择了答案吗? @drmyrnz,看这里***.com/a/32586553/409317 @erop 啊,酷。很高兴你找到了解决方案。 :) 【参考方案1】:你也可以使用这个命令:
=FORMAT(Date[Date],"q")
然后将它们结合起来创造出这样的东西
="Q." & FORMAT(Date[Date],"q") & " - "&Date[Year] = e.g. Q.1 - 2021
【讨论】:
【参考方案2】:为 get Quarter 添加 Colom : 季度 = summary_bu_USD[开始期间].[季度]
再次添加 colom 并在 colom 中分组年份: QuarterYear = YEAR(summary_bu_USD[Start Period])&" "&"Q"&RIGHT(summary_bu_USD[Quarter],1)
enter image description here
【讨论】:
【参考方案3】:DAX 现在有季度了!这是一些日期数据:
这些是您获得季度和季度数字的方式:
这些结果如下:
【讨论】:
【参考方案4】:我认为他们假设您将创建一个日期维度,其中您的季度是预定义的,包括财政年度。我住在澳大利亚,财政年度在 6 月结束,我总是将季度预定义为表格的附加列。如果您使用的是 Power BI/Power Query,则可以在 M 代码级别(在导入阶段)添加查询。
【讨论】:
【参考方案5】:DAX 中没有 QUARTER()?
是的,没错。
真的吗?
是的,这很疯狂,没有任何意义。幸运的是,解决方法只是将月份除以 3。
解决办法:
VAR quarterNumber = CEILING(MONTH([Date])/3,1)
替代解决方案:
由于 DAX 有多种舍入数字的方法,这些方法也可以使用:
VAR quarterNumber = ISO.CEILING(MONTH([Date])/3,1)
VAR quarterNumber = ROUNDUP(MONTH([Date])/3,0)
哪种解决方案最好:
对于我的示例中使用的值,结果将是相同的。 对于其他示例,根据标准或使用的 CPU 类型,结果可能存在细微差别。 ROUNDUP 对于 Excel 用户来说可能更直观。 CEILING 对数学人来说可能更直观。 ISO.CEILING 在代码中很难看,个人意见。【讨论】:
【参考方案6】:它没有记录,但它有效:
INT(FORMAT([日期], "q"))
【讨论】:
这看起来可能会更慢,因为它也在转换为字符串,然后再次转换为数字。【参考方案7】:我在this这本书里找到了答案!
应该使用=ROUNDUP(MONTH([Date])/3, 0)
来获取季度编号。
【讨论】:
以上是关于DAX 中没有 QUARTER()?真的吗?的主要内容,如果未能解决你的问题,请参考以下文章
DAX基础入门 – 30分钟从SQL到DAX — PowerBI 利器