You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过两个Slicer筛选From和To指定值之间的所有行?

解决Power BI中双切片器筛选路径行的问题

问题概述

使用两个切片器分别指定起点(From列值)和终点(To列值),筛选出原始表中两点之间的所有路径行;即使所选起点/终点不在原表的From/To列中,逻辑也需生效(无匹配路径时不显示任何行)。示例:选择起点A、终点D时,需返回A→B、B→C、C→D这三行。

原始数据(Table 1)

IDSentDateFromToArrivalDate
101.01.23 12:00AB01.01.23 12:10
101.01.23 12:00BC01.01.23 12:20
101.01.23 12:00CD01.01.23 12:30
101.01.23 12:00DE01.01.23 12:40
101.01.23 12:00EF01.01.23 12:50

预期筛选结果(Table 2)

IDSentDateFromToArrivalDate
101.01.23 12:00AB01.01.23 12:10
101.01.23 12:00BC01.01.23 12:20
101.01.23 12:00CD01.01.23 12:30

解决方案

1. 创建独立的站点维度表

不能直接用原表的From/To字段做切片器(会直接筛选原表,导致路径断裂),需创建包含所有站点的独立表:

站点表 = DISTINCT(UNION(SELECTCOLUMNS(Table1, "站点", Table1[From]), SELECTCOLUMNS(Table1, "站点", Table1[To])))

该表会提取原表中From和To的所有唯一值(示例中为A-F)。

2. 添加切片器

在报表页添加两个切片器,均绑定到「站点表」的「站点」字段,分别命名为起点选择和终点选择。

3. 编写路径判断度量值

创建DAX度量值,判断当前行是否在所选起点到终点的路径中:

是否在路径中 = 
VAR 选择起点 = SELECTEDVALUE('站点表'[站点], BLANK())
VAR 选择终点 = SELECTEDVALUE('站点表'[站点], BLANK())
VAR 当前From = MAX(Table1[From])
VAR 当前To = MAX(Table1[To])
VAR 前置路径集合 = CALCULATETABLE(VALUES(Table1[From]), PATHCONTAINS(PATH(Table1[To], Table1[From]), 当前From))
VAR 后置路径集合 = CALCULATETABLE(VALUES(Table1[To]), PATHCONTAINS(PATH(Table1[From], Table1[To]), 当前To))
RETURN
    IF(
        ISBLANK(选择起点) || ISBLANK(选择终点),
        1, // 未选起点/终点时显示全部行
        IF(
            PATHCONTAINS(PATH(Table1[To], Table1[From]), 选择起点) && PATHCONTAINS(PATH(Table1[From], Table1[To]), 选择终点) &&
            当前From IN 前置路径集合 && 当前To IN 后置路径集合,
            1,
            0
        )
    )

4. 应用视觉级筛选

给展示Table1的可视化表格添加视觉级筛选器,设置「是否在路径中」等于1。

补充说明

  • 若所选起点/终点不在原表中,度量值返回0,不会显示任何行,符合需求逻辑。
  • 本方案默认路径为线性链式结构,若存在分支路径,需调整DAX逻辑适配分支场景。

内容的提问来源于stack exchange,提问作者slowmoocow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 09:02:13