如何构造DAX度量以计算特定月份的YTD值之和?
在这里,我们将FactTable按月分组。 FactTable填充了实际数据和预测数据。知道实际结束时间的唯一方法是[年初至今]列中的[日期截止]表中的信息。在[年初至今]列的[日期截止]表中–这是一个单一值表–我们有一个有趣的选定月份,我们希望查看其年初至今的计算。在我们的情况下是三月。 FactTable每月都会不定期更新,通常会延迟一个月。由于不定期更新,因此无法将其链接到TODAY之类的时间函数。
我们希望在黄色卡片视觉中显示一个正确的YTD值,该月份为[YTD结束时间]。当我们单击“2018-03”上的切片器时,我们几乎得到了所需的值–黄卡中的正确值为66。但是,此解决方案不是自动的。我想在[YTD结束]月更改时自动看到正确的值,在我们的情况下是4月,然后是5月。我不希望用户完成此操作。
可以从以下文件中下载我的拼命工作:DAX YTD.pbix
我以各种方式追逐这只鹿:
FILTER功能太苛刻了。首先适用于事实表,
仅选择一个月,然后错误地计算YTD值。因此,如果
将有任何选项强制计算和过滤的顺序,
充满希望。
表示特定月份,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))
我建议您更改度量的计算方式,以免在某些情况下丢失值:
Total = SUM(FactTable[Value])
MTD = TOTALMTD([Total], 'Calendar'[Date])
YTD = TOTALYTD([Total], 'Calendar'[Date])
更新:
对我来说,您现在想要实现的目标要清晰得多,但对我来说,这似乎仍然是XY problem。
我了解您希望按原样显示仪表板,以便用户无需每次单击/输入就可以看到他们应该看到的内容。这就是为什么我不明白为什么您需要创建一个新表来存储
Cut off date (End of YTD)
的原因。如何将其自动维护?上面的
relative date filtering
解决方案实际上仍然可以在您共享的.pbix文件中使用。如果将Date
列从Calendar
表中拖到黄卡的可视级别过滤器中,并添加相对日期过滤,则它应如下工作:对于
End of YTD
视觉效果,您可以使用following measure来获取上一个日历月的第一天,因此您无需为其创建另一个表:End of YTD = EOMONTH(TODAY(), -2) + 1
希望这是您要实现的目标:
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计算选定月份的年初至今,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49728361/