在Excel 2013的PowerPivot模型中使用PowerQuery构建日历表时,使用Date.QuarterOfYear函数获取季度号。
在SSAS Tabular中实现相同的功能需要一些变通。没有等效的DAX函数可以从日期中获取季度数。奇怪的是,DAX具有YEAR()和MONTH(),但没有QUARTER()。
嵌套的IF
或SWITCH
语句真的是在DAX中获得季度数唯一的方法吗?
为什么缺少这样一个简单实用的函数呢?我是否忽视了此决策的至高无上的智慧?
在Excel 2013的PowerPivot模型中使用PowerQuery构建日历表时,使用Date.QuarterOfYear函数获取季度号。
在SSAS Tabular中实现相同的功能需要一些变通。没有等效的DAX函数可以从日期中获取季度数。奇怪的是,DAX具有YEAR()和MONTH(),但没有QUARTER()。
嵌套的IF
或SWITCH
语句真的是在DAX中获得季度数唯一的方法吗?
为什么缺少这样一个简单实用的函数呢?我是否忽视了此决策的至高无上的智慧?
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)
虽然没有文档,但是这个方法是有效的:
该代码涉及IT技术。INT(FORMAT([Date], "q"))
我认为他们假设你会创建一个日期维度,其中季度是预定义的,包括财政年度。我住在澳大利亚,财政年度在六月结束,我总是将季度预定义为表格的附加列。如果你正在使用Power BI/Power Query,你可以在M代码级别(在导入阶段)添加一个查询。
您也可以使用此命令:
=FORMAT(Date[Date],"q")
然后将它们组合起来,创建出像这样的东西
="Q." & FORMAT(Date[Date],"q") & " - "&Date[Year] = e.g. Q.1 - 2021
Quarter = summary_bu_USD[Start Period].[Quarter]
再次添加列并将年份分组在该列中:
QuarterYear = YEAR(summary_bu_USD[Start Period])&" "&"Q"&RIGHT(summary_bu_USD[Quarter],1)