带日期切片器时如何获取每个客户的最大日期(Power BI DAX)
解决方案:按Name获取切片器日期范围内的最大日期
问题原因
你当前使用的公式CALCULATE(MAX(Orders[Date]), ALLEXCEPT(Orders,Orders[Name]))会清除Orders表上除Name外的所有筛选(包括切片器对Date列的筛选),因此无论切片器选择哪个日期,都会返回每个Name在整个数据集里的全局最大日期,不符合你需要的“切片器日期范围内的最大日期”需求。
可行DAX方案
根据切片器使用的数据源,提供两种解决方案:
方案1:切片器使用独立日期表(推荐)
如果你的切片器基于独立的日期表(如DateTable),使用以下公式:
Max Date per Name = VAR SelectedDate = MAX(DateTable[Date]) RETURN CALCULATE( MAX(Orders[Date]), ALLEXCEPT(Orders, Orders[Name]), Orders[Date] <= SelectedDate )
逻辑说明:
- 获取切片器选中的最大日期(未选时自动取日期表的全局最大日期)
- 针对每个
Name,筛选出该Name下所有日期≤选中日期的记录,取其中的最大日期
方案2:切片器直接使用Orders表的Date列
如果没有独立日期表,直接用Orders[Date]做切片器,使用以下简洁公式:
Max Date per Name = CALCULATE( MAX(Orders[Date]), FILTER( ALLEXCEPT(Orders, Orders[Name]), Orders[Date] <= MAX(Orders[Date]) ) )
逻辑说明:
- 保留
Name的筛选上下文,清除其他筛选 - 筛选出该
Name下日期不超过切片器选中最大日期的记录,取最大值;未选切片器时,自动取全局最大日期
验证结果
- 未选择切片器时,返回每个
Name的全局最大日期:
a 10/1/2023 b 8/28/2023 c 6/15/2023
- 选择9/30/2023时,返回每个
Name在该日期及之前的最大日期:
a 9/1/2023 b 8/28/2023 c 6/15/2023
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

