DAX语法问题:计算下拉所选年份之前所有年份的request_id计数
解决多筛选场景下累计年份request_id计数的DAX写法
原写法的核心问题是:FILTER(current_ar, ...)会继承外部所有筛选器,导致只能统计当前筛选范围内年份小于选中值的行,而非所有年份中符合条件的行;同时如果下拉菜单存在多选(或SELECTEDVALUE取不到有效值)时,计算会直接失效。
单选下拉场景的正确写法
累计请求数 = VAR SelectedYear = SELECTEDVALUE(current_ar[Fiscal_Year]) RETURN CALCULATE( COUNT(current_ar[request_id]), ALL(current_ar[Fiscal_Year]), -- 清除年份列的筛选,确保能访问所有年份数据 current_ar[Fiscal_Year] < SelectedYear, -- 保留除年份外的其他所有筛选条件(比如部门、区域等) ALLSELECTED(current_ar) REMOVEFILTERS(current_ar[Fiscal_Year]) )
多选下拉场景的正确写法
如果下拉菜单允许选择多个年份,需要取选中年份的最大值来计算累计:
累计请求数 = VAR MaxSelectedYear = MAX(current_ar[Fiscal_Year]) RETURN CALCULATE( COUNT(current_ar[request_id]), ALL(current_ar[Fiscal_Year]), current_ar[Fiscal_Year] < MaxSelectedYear, ALLSELECTED(current_ar) REMOVEFILTERS(current_ar[Fiscal_Year]) )
优化建议(推荐)
如果你的数据模型中有独立的日期/年份维度表,建议基于维度表编写DAX,逻辑更清晰且避免事实表筛选的干扰:
累计请求数 = VAR SelectedYear = SELECTEDVALUE('日期维度表'[Fiscal_Year]) RETURN CALCULATE( COUNT(current_ar[request_id]), ALL('日期维度表'[Fiscal_Year]), '日期维度表'[Fiscal_Year] < SelectedYear, ALLSELECTED('日期维度表') REMOVEFILTERS('日期维度表'[Fiscal_Year]) )
内容的提问来源于stack exchange,提问作者user19840753
相关产品推荐
相关产品推荐

