DAX度量开发需求:基于日期切片器返回客户累计支付值
需求与解决方案
问题说明
现有某客户支付计划数据如下(leads_id为客户ID,transh为交易序号,Date为支付交易日期,Accumulated Value为支付金额):
leads_id transh Date Accumulated Value 24472418 7 2026-03-14 00:00:00 257420000 24472418 6 2025-09-14 00:00:00 235968330 24472418 5 2025-03-14 00:00:00 214516664 24472418 4 2024-09-14 00:00:00 193064998 24472418 3 2024-03-14 00:00:00 171613332 24472418 2 2023-09-14 00:00:00 150161666 24472418 1 2023-04-14 00:00:00 128710000
需开发Power BI的DAX度量,实现:
- 选择2023年4月/5-8月时,返回128710000
- 选择2023年9月时,返回150161666
- 以此类推,即返回所选时间范围内最后一笔已发生交易的累计金额
DAX度量代码
当前累计支付金额 = VAR SelectedMaxDate = MAXX( ALLSELECTED('日期表'), DATEVALUE('日期表'[年份] & "-" & '日期表'[月份名称] & "-01") ) VAR LastValidTransaction = MAXX( FILTER( '支付计划表', '支付计划表'[Date] <= SelectedMaxDate ), '支付计划表'[Date] ) RETURN LOOKUPVALUE( '支付计划表'[Accumulated Value], '支付计划表'[Date], LastValidTransaction, '支付计划表'[leads_id], SELECTEDVALUE('支付计划表'[leads_id]) )
逻辑说明
- SelectedMaxDate:将切片器选中的年份+文本型月份转换为当月第一天的日期,提取所选范围的最大日期(如选2023年5-8月时,最大日期为2023-08-01)
- LastValidTransaction:筛选出支付计划表中所有早于等于SelectedMaxDate的交易,取其中最新的交易日期,即离所选时间最近的已完成交易
- LOOKUPVALUE:根据找到的最新交易日期和当前选中的客户ID,匹配对应累计支付金额
注意事项
- 需确保仪表盘有单独的日期表,且年份、月份名称字段与切片器关联,同时将该表标记为Power BI的日期表
- 多客户场景下,
SELECTEDVALUE('支付计划表'[leads_id])会自动适配当前选中的客户;单客户固定场景可直接替换为24472418
内容的提问来源于stack exchange,提问作者домен
相关产品推荐
相关产品推荐

