DAX中没有QUARTER()函数?真的吗?

10

在Excel 2013的PowerPivot模型中使用PowerQuery构建日历表时,使用Date.QuarterOfYear函数获取季度号。

在SSAS Tabular中实现相同的功能需要一些变通。没有等效的DAX函数可以从日期中获取季度数。奇怪的是,DAX具有YEAR()和MONTH(),但没有QUARTER()。

嵌套的IFSWITCH语句真的是在DAX中获得季度数唯一的方法吗?

为什么缺少这样一个简单实用的函数呢?我是否忽视了此决策的至高无上的智慧?


除了IF或SWITCH之外,还有其他方法:您可以使用(MONTH([Date])+2)/3。 - Rory
谢谢你的想法,Rory! - erop
嗨@erop,你选定了一个答案吗? - user8065556
@drmyrnz,请看这里 https://dev59.com/XVwY5IYBdhLWcg3wlohg#32586553 - erop
@erop 哦,太棒了。很高兴你找到了解决方案。 :) - user8065556
根据learn.microsoft.com的说法,DAX现在确实有QUARTER函数。但是我无法使用它。我已经将SSAS、VisualStudio、SSDT和模型级别升级到2019,但仍然出现“无法解析名称quarter”的错误。请问你能帮我吗? - user1277317
7个回答

15

我在这本优秀的书中找到了答案!

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


8

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 会让人感到丑陋,这是个人意见。

5

虽然没有文档,但是这个方法是有效的:

INT(FORMAT([Date], "q"))

该代码涉及IT技术。

这看起来可能会更慢,因为它还将转换为字符串,然后再转换回数字。 - whitneyland

5

DAX现在有季度了!这是一些日期数据: Dates

以下是如何获取季度和季度号码的方法: Date quarters Date quarter numbers

它们的结果如下:

Date quarter slicers


0

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


0

您也可以使用此命令:

=FORMAT(Date[Date],"q")

然后将它们组合起来,创建出像这样的东西

="Q." & FORMAT(Date[Date],"q") & " - "&Date[Year] = e.g. Q.1 - 2021

0
添加列以获取季度:
Quarter = summary_bu_USD[Start Period].[Quarter]

再次添加列并将年份分组在该列中:

QuarterYear = YEAR(summary_bu_USD[Start Period])&" "&"Q"&RIGHT(summary_bu_USD[Quarter],1)

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接