无法将TotalWeeksPerIssue度量拖至X轴,如何用度量实现可视化?
问题描述
我创建了如下度量,想要用于条形图的X轴可视化,但无法实现:
TotalWeeksPerIssue = SUMX( VALUES('Query2'[name]), SUM('Query2'[weeks_in_work]) )
我的需求是:先计算每个任务(name)的总工作周数,再统计各总周数的出现次数。示例数据如下:
| name | weeks_in_work | status |
|---|---|---|
| Issue1 | 1 | in work |
| Issue1 | 2 | stopped |
| Issue2 | 3 | in work |
| Issue2 | 3 | in work |
| Issue3 | 4 | stopped |
| Issue3 | 5 | in work |
预期先按name汇总总周数:
| name | TotalWeeks |
|---|---|
| Issue1 | 3 |
| Issue2 | 6 |
| Issue3 | 9 |
再统计各总周数的出现次数:
- 3:1次
- 6:1次
- 9:1次
我还尝试了另一个度量:
CountOfTotalWeeks = COUNTROWS( SUMMARIZE( 'Query2', 'Query2'[name], "TotalWeeks", SUM('Query2'[weeks_in_work]) ) )
但依然无法将TotalWeeksPerIssue拖至X轴。另外我需要通过status列灵活筛选(有时统计所有状态,有时仅统计单个状态),因此不能创建额外的计算表。请问如何仅用度量实现该可视化?
解决方案
1. 修正总周数度量
首先简化TotalWeeksPerIssue度量,当上下文为单个name时,直接求和即可得到该任务的总周数:
TotalWeeksPerIssue = SUM('Query2'[weeks_in_work])
2. 创建按总周数统计任务数量的度量
创建以下度量,用于统计每个总周数对应的任务(name)数量:
IssueCountByTotalWeeks = VAR IssueTotalWeeks = SUMMARIZE( ALLSELECTED('Query2'[name]), 'Query2'[name], "@CalculatedTotal", [TotalWeeksPerIssue] ) RETURN COUNTROWS( FILTER( IssueTotalWeeks, [@CalculatedTotal] = [TotalWeeksPerIssue] ) )
ALLSELECTED('Query2'[name])会保留当前筛选(比如status的筛选)下的所有任务,确保筛选生效。SUMMARIZE生成每个任务及其对应的总周数列表,再通过FILTER和COUNTROWS统计当前总周数对应的任务数量。
3. 配置条形图实现可视化
由于Power BI中度量无法直接拖入X轴(X轴需要离散类别值),需按以下步骤配置:
- 将
Query2[name]拖入条形图的X轴。 - 选中条形图,在右侧「视觉级别筛选器」上方点击「更多选项」→「分组」。
- 在分组设置中,选择「依据值分组」,分组字段选择
TotalWeeksPerIssue,并设置合适的分组名称(比如“总周数分组”)。 - 将
IssueCountByTotalWeeks度量拖入Y轴,此时Y轴会显示每个总周数对应的任务数量。 - 拖动
Query2[status]到「页面级别筛选器」或「视觉级别筛选器」,即可灵活切换统计的状态范围。
为什么之前的尝试无效?
- 最初的
TotalWeeksPerIssue是聚合度量,返回的是全局或当前上下文的总和,无法作为离散类别值用于X轴。 CountOfTotalWeeks仅返回所有任务的总数,没有按总周数分组统计,因此无法满足需求。
内容的提问来源于stack exchange,提问作者Gqueee
相关产品推荐
相关产品推荐

