如何计算 DAX 中给定日期月初的总和

How to Calculate Sum untill start of month of a given date in DAX

我想计算 Sum(QTY) 直到给定日期的月份开始日期。

基本上我可以计算 Sum(QTY) 直到我的度量中的给定日期:

SumQTYTillDate:=CALCULATE(SUM([QTY]);FILTER(ALL(DimDateView[Date]);DimDateView[Date]<=MIN(DimDateView[Date])))

但我还想计算 2015 年 10 月 1 日之前的日期的 Sum(QTY) - 这是所选日期月份的第一个日期。我已经更改了上面的度量并使用 STARTOFMONTH 函数来查找给定日期的月份的第一天,例如;

.......DimDateView[Date]<=STARTOFMONTH(MIN(DimDateView[Date]))))

但没有用,它给了我

"A function ‘MIN’ has been used in a True/False expression that is used as a table filter expression. This is not allowed."

我错过了什么?如何在我的度量中使用 STARTOFMONTH 函数?

谢谢。

STARTOFMONTH() 必须引用类型为 Date/Time 的列。 MIN() 是标量值,而不是列引用。此外,您的措施将不起作用,因为 STARTOFMONTH() 是在 FILTER() 的行上下文中计算的。所有这一切的结果是,您将获得一个度量值,该度量值仅对数据中每个月的第一天的 [QTY] 求和。

内置的时间智能功能往往充其量是不直观的。我总是建议使用您的模型和适当的 FILTER() 来获得您想要的。

对于你的情况,我不完全确定你在寻找什么,但我认为你想要 [QTY] 在你选择的日期所在月份开始之前的所有时间的总和在。在这种情况下,它真的很容易做到。向您的日期维度 [MonthStartDate] 添加一个字段,它为 table 中的每个日期保存它所在月份的开始日期。现在您可以按如下方式编写度量:

SumQTY=SUM(FactQTY[QTY])

SumQTYTilStartOfMonth:=
CALCULATE(
    [SumQTY]
    ;FILTER(
        ALL(DimDateView)
        ;DimDateView[Date] < MIN(DimDateView[MonthStartDate])
    )
)