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

如何在Power BI中创建随切片器选择动态变化的度量值?——迭代路径关联环形图表的动态数据展示需求

实现Power BI动态迭代环形图的解决方案

嘿,我来帮你搞定这个Power BI的动态度量值需求!要让四个环形图随切片器选中的迭代自动切换对应的数据,核心是通过DAX度量值动态定位到目标迭代,具体步骤如下:

前提准备

首先确保你的数据模型满足两个条件:

  • 有单独的迭代表(比如命名为Iterations),包含迭代的唯一标识、名称/路径、排序依据(比如迭代顺序号Iteration Order,或者开始/结束日期Start Date)
  • 迭代表和用户故事表(比如User Stories)通过关联字段(如Iteration ID)建立了正确的关系

方案1:基于迭代顺序号实现(推荐,逻辑更简洁)

如果你的迭代表有现成的顺序号列(比如按迭代时间先后分配1、2、3...的数字),可以用以下步骤创建度量值:

1. 获取当前选中迭代的顺序号

先创建一个基础度量值,用来捕获切片器选中的迭代顺序:

Selected Iteration Order = 
SELECTEDVALUE(Iterations[Iteration Order])

2. 创建四个目标度量值

分别对应四个环形图的数据源:

  • 倒数第二次迭代用户故事数
Previous Previous Iteration Stories = 
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]), -- 替换成你实际的用户故事计数逻辑
    Iterations[Iteration Order] = [Selected Iteration Order] - 2,
    ALL(Iterations) -- 忽略切片器对迭代表的筛选,才能获取其他迭代的数据
)
RETURN IF(ISBLANK(Result), 0, Result)
  • 上一次迭代用户故事数
Previous Iteration Stories = 
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Iteration Order] = [Selected Iteration Order] - 1,
    ALL(Iterations)
)
RETURN IF(ISBLANK(Result), 0, Result)
  • 当前选中迭代用户故事数
Current Iteration Stories = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Iteration Order] = [Selected Iteration Order]
)
  • 下一次迭代用户故事数
Next Iteration Stories = 
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Iteration Order] = [Selected Iteration Order] + 1,
    ALL(Iterations)
)
RETURN IF(ISBLANK(Result), 0, Result)

方案2:基于迭代日期实现(无顺序号时使用)

如果没有现成的迭代顺序号,可以用迭代的开始/结束日期来定位目标迭代:

1. 获取当前选中迭代的开始日期

Selected Iteration Start Date = 
SELECTEDVALUE(Iterations[Start Date])

2. 创建四个目标度量值

  • 倒数第二次迭代用户故事数
Previous Previous Iteration Stories = 
VAR SelectedStart = [Selected Iteration Start Date]
-- 先找到上一次迭代的开始日期
VAR PreviousIterStart = 
    MAXX(
        FILTER(ALL(Iterations), Iterations[Start Date] < SelectedStart),
        Iterations[Start Date]
    )
-- 再找到倒数第二次迭代的开始日期
VAR PrevPrevIterStart = 
    MAXX(
        FILTER(ALL(Iterations), Iterations[Start Date] < PreviousIterStart),
        Iterations[Start Date]
    )
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Start Date] = PrevPrevIterStart
)
RETURN IF(ISBLANK(Result), 0, Result)
  • 上一次迭代用户故事数
Previous Iteration Stories = 
VAR SelectedStart = [Selected Iteration Start Date]
VAR PreviousIterStart = 
    MAXX(
        FILTER(ALL(Iterations), Iterations[Start Date] < SelectedStart),
        Iterations[Start Date]
    )
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Start Date] = PreviousIterStart
)
RETURN IF(ISBLANK(Result), 0, Result)
  • 当前选中迭代用户故事数
Current Iteration Stories = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Start Date] = [Selected Iteration Start Date]
)
  • 下一次迭代用户故事数
Next Iteration Stories = 
VAR SelectedStart = [Selected Iteration Start Date]
VAR NextIterStart = 
    MINX(
        FILTER(ALL(Iterations), Iterations[Start Date] > SelectedStart),
        Iterations[Start Date]
    )
VAR Result = 
CALCULATE(
    COUNT(User Stories[Story ID]),
    Iterations[Start Date] = NextIterStart
)
RETURN IF(ISBLANK(Result), 0, Result)

收尾配置

  1. 把四个度量值分别拖入对应的环形图中
  2. 用迭代表的Iteration Path字段创建切片器
  3. (可选)如果切片器需要支持多选,可以调整基础度量值逻辑,比如取选中迭代中最新的那个:
Selected Iteration Order = 
MAXX(VALUES(Iterations[Iteration Order]), Iterations[Iteration Order])

注意事项

  • 确保迭代表的排序依据(顺序号/日期)是正确的,否则会导致目标迭代定位错误
  • 如果用户故事计数需要区分状态(比如完成/待办),可以在CALCULATE里添加额外筛选条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:52:48