如何替换DAX计算列中的EARLIER函数(累积余额场景)
移除EARLIER函数的DAX累积余额计算方案
原公式因使用EARLIER函数导致大数据集频繁崩溃,可通过**变量(VAR)**替代EARLIER实现相同逻辑,同时提升性能。调整后的DAX代码如下:
_Balance Cumulative = VAR CurrentInvoiceDate = Invoices[Invoice Date] RETURN CALCULATE( SUM(Invoices[Balance]), ALLEXCEPT(Invoices, Invoices[Customer ID + Company Desc]), ALL(Invoices[Invoice Date]), Invoices[Invoice Date] <= CurrentInvoiceDate )
调整说明
- 变量捕获当前日期:用
VAR CurrentInvoiceDate = Invoices[Invoice Date]直接获取当前行的发票日期,避免EARLIER带来的多层上下文切换性能损耗。 - 保留客户分组逻辑:
ALLEXCEPT函数确保计算范围限定在同一Customer ID + Company Desc分组内,和原公式逻辑完全一致。 - 简化筛选逻辑:拆分原Filter函数,先用
ALL(Invoices[Invoice Date])清除日期上下文,再直接通过变量做日期筛选,逻辑更直观,执行效率更高。
内容的提问来源于stack exchange,提问作者Jake1204
相关产品推荐
相关产品推荐

