Ssas DAX中没有四分之一()?真正地

Ssas DAX中没有四分之一()?真正地,ssas,business-intelligence,powerbi,dax,ssas-tabular,Ssas,Business Intelligence,Powerbi,Dax,Ssas Tabular,在Excel 2013中使用PowerQuery为PowerPivot模型构建日历表时,我使用其函数获取季度数 在SSAS表格中构建同样的东西需要一些变通方法。并没有等效的DAX函数从一个日期获取季度数。奇怪的是,DAX有年()和月(),但没有季度() 嵌套的IF或SWITCH语句真的是DAX中获取季度号的唯一方法吗 为什么没有这样一个简单而有用的函数?我是否忽视了这个决定的最高智慧?我在这本伟大的书中找到了答案 应该使用=ROUNDUP(月([Date])/3,0)来获取季度号。没有记录,但这

在Excel 2013中使用PowerQuery为PowerPivot模型构建日历表时,我使用其函数获取季度数

在SSAS表格中构建同样的东西需要一些变通方法。并没有等效的DAX函数从一个日期获取季度数。奇怪的是,DAX有年()和月(),但没有季度()

嵌套的
IF
SWITCH
语句真的是DAX中获取季度号的唯一方法吗

为什么没有这样一个简单而有用的函数?我是否忽视了这个决定的最高智慧?

我在这本伟大的书中找到了答案


应该使用
=ROUNDUP(月([Date])/3,0)
来获取季度号。

没有记录,但这是有效的:

INT(格式([日期],“q”))

DAX中没有四分之一()

是的,没错

真的吗

是的,这太疯狂了,毫无意义。幸运的是,解决方法只是将月份除以3

解决方案: 替代解决方案: 由于DAX有多种方法对数字进行四舍五入,这些方法也将起作用:

VAR quarterNumber = ISO.CEILING(MONTH([Date])/3,1)
VAR quarterNumber = ROUNDUP(MONTH([Date])/3,0)
哪种解决方案最好:
  • 对于我的示例中使用的值,结果将是相同的
  • 对于其他示例,根据标准或使用的CPU类型,结果可能会有微小的差异
  • 对于优秀的人来说,汇总可能更直观
  • 上限对数学人来说可能更直观
  • 从代码和个人观点来看,ISO天花板是丑陋的

我认为他们假设您将创建一个日期维度,其中您的季度是预定义的,包括财政年度。我住在澳大利亚,那里的财政年度在6月结束,我总是预先定义季度作为表中的一个新增列。如果使用Power BI/Power Query,则可以在M代码级别(在导入阶段)添加查询

DAX现在有25美分!这是一些日期数据:

下面是你得到季度和季度数字的方法:

结果如下:


除了IFs或SWITCH之外,还有其他方法:您可以使用(月([Date])+2)/3感谢Rory,表达您的想法!嗨@erop,你选择了答案吗?@Myrnz博士,看这里@erop啊,酷。很高兴你找到了解决办法。:)这看起来可能会慢一些,因为它也会转换为字符串,然后再转换回数字。
VAR quarterNumber = ISO.CEILING(MONTH([Date])/3,1)
VAR quarterNumber = ROUNDUP(MONTH([Date])/3,0)