如何构造DAX度量以计算特定月份的YTD值之和?

在这里,我们将FactTable按月分组。 FactTable填充了实际数据和预测数据。知道实际结束时间的唯一方法是[年初至今]列中的[日期截止]表中的信息。在[年初至今]列的[日期截止]表中–这是一个单一值表–我们有一个有趣的选定月份,我们希望查看其年初至今的计算。在我们的情况下是三月。 FactTable每月都会不定期更新,通常会延迟一个月。由于不定期更新,因此无法将其链接到TODAY之类的时间函数。

powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP
powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP
我们希望在黄色卡片视觉中显示一个正确的YTD值,该月份为[YTD结束时间]。当我们单击“2018-03”上的切片器时,我们几乎得到了所需的值–黄卡中的正确值为66。但是,此解决方案不是自动的。我想在[YTD结束]月更改时自动看到正确的值,在我们的情况下是4月,然后是5月。我不希望用户完成此操作。

可以从以下文件中下载我的拼命工作:DAX YTD.pbix

我以各种方式追逐这只鹿:

  • 通过在DAX度量中使用 FILTER 函数。但似乎
    FILTER功能太苛刻了。首先适用于事实表,
    仅选择一个月,然后错误地计算YTD值。因此,如果
    将有任何选项强制计算和过滤的顺序,
    充满希望。
  • 我尝试了 SWITCH 函数来显示正确的结果
    表示特定月份,0表示其他月份。虽然我
    成功做到这一点,我无法利用它。什么时候
    来过滤我像以前一样绝望了。顺便说一句我将能够
    如果SWITCH在表的末尾产生了总数,则执行该操作,但是
    才不是。出奇。
  • 我对相关的函数寄予了一些希望,以便在[截止日期]表中显示正确的结果。到目前为止,我还没有走出迷雾。

  • 多谢您的协助。

    悬赏之前更新。
    进入更高的水平。我在FactTable中引入了Category列。请下载DAX YTD by category.pbix。因此,过滤现在变得更加复杂。我想获得苹果类别的正确的年初至今数字。

    最佳答案

    您是否使用了Date表中的Calendar列,而不是FactTable中的一列?

    如果使用FactTable中的date列,则在日期上应用过滤器时,它将对3月的事实记录进行过滤,然后进行计算,因此结果为33

    如果您使用Calendar中的一个,则对其应用过滤器时,它将过滤Calendar(您希望在图表中显示)上的记录,因此基础计算仍将保持不变。

    一个工作示例:
    Calendar = CALENDAR(DATE(2010, 1, 1), DATE(2020, 12, 31))
    powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP

    我建议您更改度量的计算方式,以免在某些情况下丢失值:

    Total = SUM(FactTable[Value])
    MTD = TOTALMTD([Total], 'Calendar'[Date])
    YTD = TOTALYTD([Total], 'Calendar'[Date])
    

    powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP

    更新:

    对我来说,您现在想要实现的目标要清晰得多,但对我来说,这似乎仍然是XY problem

    我了解您希望按原样显示仪表板,以便用户无需每次单击/输入就可以看到他们应该看到的内容。这就是为什么我不明白为什么您需要创建一个新表来存储Cut off date (End of YTD)的原因。如何将其自动维护?

    上面的relative date filtering解决方案实际上仍然可以在您共享的.pbix文件中使用。如果将Date列从Calendar表中拖到黄卡的可视级别过滤器中,并添加相对日期过滤,则它应如下工作:

    powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP

    对于End of YTD视觉效果,您可以使用following measure来获取上一个日历月的第一天,因此您无需为其创建另一个表:
    End of YTD = EOMONTH(TODAY(), -2) + 1
    

    希望这是您要实现的目标:

    powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP

    Updated file供您引用。

    再次更新:

    我认为您必须编写自己的YTD计算而不是使用内置的'Cut off date'[End of YTD]计算,以便可以利用在另一个表中定义的截止日期。在这里,我假设ALL()中只有一行。请注意,我已将ojit_code添加到过滤器中,以便在单击其他一些行/过滤器时,黄卡保持不变(66)而不显示空白:
    YTD_Special =
    CALCULATE(
        [Total],
        FILTER(
            ALL(FactTable),
            FactTable[Date] >= DATE(YEAR(VALUES('Cut off date'[End of YTD])), 1, 1) &&
            FactTable[Date] <= VALUES('Cut off date'[End of YTD])
        )
    )
    

    powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今-LMLPHP

    关于powerbi - 在DAX中进行度量以仅针对Power BI计算选定月份的年初至今,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49728361/

    10-09 17:46