首页 > 解决方案 > DAX 查询(使用 FIlter 和 MAX 函数),计算最近运行 30 天的总销售额

问题描述

我是 DAX 新手,遇到了如下措施,

30 Day Running Total = CALCULATE([Total Sales], 
    FILTER (ALL (Dates), Dates[Date]>(Dates[Date]) -30 && Dates[Date] <= (Dates[Date] )))

即以 2018 年 1 月 1 日至 2021 年 12 月 30 日的数据的累积方式计算过去 30 天的总销售额,上述度量我无法理解

我的理解如下,请让我知道我在哪里走错了方向

  1. FILTER ( ALL(Dates)-> 删除所有过滤器意味着从完整表中取日期从最小值到最大值,即 2018 年 1 月 1 日至 2021 年 12 月 30 日之间

  2. Dates[Date]>MAX(Dates[Date]) -30 ->“从表中的当前行减去 30 天的总销售额”。例如,如果 DAX 计算是在 2018 年 1 月 30 日,那么它会考虑从 2018 年 1 月 1 日到 2018 年 1 月 30 日的所有总销售额

  3. 那么为什么我们需要提到另一个过滤器Dates[Date] <= MAX(Dates[Date] )呢?

在此先感谢您的时间

问候苏米特马利克

标签: filtermaxdaxmeasure

解决方案


总结您主要关心的似乎是第 (3) 点

为什么我们需要提到另一个过滤器 Dates[Date] <= MAX(Dates[Date] )?

您的疑问是正确的,如果数据是干净的,则不需要定义该上限过滤器,因为理论上考虑 30 天前的销售额,今天之后不应该有销售额。
不幸的是,通常数据是脏的,将来可能会有销售。因此,定义上限是避免此类脏数据问题的最佳实践。请记住,在软件工程中,您在编程时会考虑最坏的情况,因此,定义上限并没有害处:)


推荐阅读