Power BI中将多条件SQL日期查询转换为动态筛选器的实现咨询
核心思路
不用关联日历表和源表,通过DAX度量值做动态行级判断,性能足够支撑5万条数据的秒级响应。
实现步骤
- 第一步:准备基准日期筛选控件
可以直接用你已建好的日历表的日期列作为筛选器,也可以新建专门的日期参数:进入「建模」选项卡,点击「新建参数」,选择「日期」类型,默认值设为TODAY(),允许单值/范围选择即可,这个参数就是你要自定义的Date3基准日期。 - 第二步:编写核心筛选度量值
新建度量值是否符合筛选条件,DAX代码如下:
是否符合筛选条件 = VAR 选定基准日期 = COALESCE(LASTDATE('你的日历表名'[日期列名]), TODAY()) VAR expiresDate下限 = EDATE(选定基准日期, 1) VAR expiresDate上限 = EDATE(选定基准日期, 3) RETURN IF( // 三个有效性区间同时满足 MAX('源表'[ValidFrom]) <= 选定基准日期 && MAX('源表'[ValidTo]) >= 选定基准日期 && MAX('源表'[ChildValidFrom]) <= 选定基准日期 && MAX('源表'[ChildValidTo]) >= 选定基准日期 && MAX('源表'[RecValidFrom]) <= 选定基准日期 && MAX('源表'[RecValidTo]) >= 选定基准日期 // expiresDate满足大于所选日期1个月、小于3个月的要求 && MAX('源表'[expiresDate]) >= expiresDate下限 && MAX('源表'[expiresDate]) < expiresDate上限, 1, 0 )
- 第三步:应用筛选规则
把上面写的是否符合筛选条件度量值,拖到你要展示数据的表格/卡片等视觉对象的筛选器面板中,设置筛选条件为等于1,应用后即可生效。 - 第四步:日期范围选最新记录的适配
上面的代码已经默认适配多选日期范围的场景,LASTDATE会自动取你选的日期区间里的最后一天作为判断基准,返回最新版本的匹配记录。
内容的提问来源于stack exchange,提问作者Gav Cheal
相关产品推荐
相关产品推荐

