为何无法基于参数表值筛选日期列,如何通过切片器切换日期筛选范围
原代码错误原因
- CALCULATE函数第一个参数必须是聚合运算,你直接传入了带FILTER的IF判断,没有返回可计算的聚合值,度量值本身无法正常运算
- 你试图直接通过度量值返回筛选后的表,但Power BI的度量值无法直接修改数据模型的筛选上下文,必须通过标记值的方式作用于可视化筛选器
- 测试逻辑写死了固定日期
15.10.21,没有基于当前日期动态计算近30天区间,不符合需求
实现方案
正确实现逻辑为:新增一个标记类度量值,将该度量值添加到可视化对象的筛选器中,设置筛选条件为等于1即可实现动态筛选。
以下是支持3种筛选规则(包含补充要求的非近30天逻辑)的DAX代码:
日期筛选标记 = // 读取切片器选择的规则,未选时默认返回全部数据 VAR SelectRule = SELECTEDVALUE(Parametres[Selection_date], "All") // 取当前系统日期,若要按数据中最大日期计算可替换为 LASTDATE(v_Date[Date]) VAR CurrentDate = TODAY() VAR Last30DayStart = CurrentDate - 30 RETURN SWITCH( SelectRule, // 规则1:近30天 "Last30Days", IF(MAX(v_Date[Date]) >= Last30DayStart && MAX(v_Date[Date]) <= CurrentDate, 1, 0), // 规则2:可自定义的第二种规则,示例为近90天,可按需修改 "Last90Days", IF(MAX(v_Date[Date]) >= CurrentDate - 90 && MAX(v_Date[Date]) <= CurrentDate, 1, 0), // 规则3:不属于近30天的所有数据(对应补充问题需求) "BeforeLast30Days", IF(MAX(v_Date[Date]) < Last30DayStart, 1, 0), // 未选择规则时默认返回全部数据 1 )
配置步骤
- 先给Parametres参数表的Selection_date字段补充3个选项值:
Last30Days、Last90Days、BeforeLast30Days,可按需修改规则命名和对应逻辑 - 新建上述「日期筛选标记」度量值
- 打开你需要做动态筛选的柱状图的「视觉对象筛选器」面板,把「日期筛选标记」拖入筛选条件列表,设置为等于1后应用筛选
- 点击参数切片器的不同选项,即可自动切换对应的日期筛选范围
内容的提问来源于stack exchange,提问作者Louis Chopard
相关产品推荐
相关产品推荐

