azure-devops - 子和的 DAX 表达式
问题描述
我有一个基于 VSTS 任务、用户故事、功能、史诗层次结构的以下数据集
Id | Parent ID | Hours completed | Aggregated hours
1 | |
2 | 1 |
3 | 2 | 3
4 | 2 | 4
5 | 1 |
6 | 5 | 2
7 | 5 | 5
我想为每一行计算作为所有子项的总和计算的聚合小时数。这意味着,我想知道每个用户故事、每个功能、每个史诗花费了多少小时。
Id | Parent ID | Hours completed | Aggregated hours
1 | | | 15 (3+4+2+6)
2 | 1 | | 7 (3+4)
3 | 2 | 3
4 | 2 | 4
5 | 1 | | 8 (2+6)
6 | 5 | 2
7 | 5 | 6
我试图对层次结构进行非规范化,因此我将层次结构级别作为基于https://www.daxpatterns.com/parent-child-hierarchies/的列
Id | Parent ID | Level 1 | Level 2 | Hours completed | Aggregated hours
1 | | | | | 15 (3+4+2+6)
2 | 1 | 1 | | | 7 (3+4)
3 | 2 | 1 | 2 | 3
4 | 2 | 1 | 2 | 4
5 | 1 | 1 | | | 8 (2+6)
6 | 5 | 1 | 5 | 2
7 | 5 | 1 | 5 | 6
但这让我无处可去……有没有办法在 Power BI 中实现这一点?尝试了 SUMX,但仍然远离正确的结果
EstCumulativeHoursCompleted =
CALCULATE(
SUMX('Work Items - Today', 'Work Items - Today'[Completed Work]),
'Work Items - Today'[Parent Work Item Id] = EARLIER('Work Items -
Today'[Work Item Id])
)
感谢您的一些提示!
PS根据Alexis的建议,我设法得到了这个:
解决方案
这是使用父子函数的完美情况!
PATH
您可以使用该函数定义管道分隔的路径。
Path = PATH('Work Items'[Id], 'Work Items'[Parent ID])
将此添加到您的起始表如下所示:
Id | Parent ID | Hours completed | Path
1 | | | 1
2 | 1 | | 1|2
3 | 2 | 3 | 1|2|3
4 | 2 | 4 | 1|2|4
5 | 1 | | 1|5
6 | 5 | 2 | 1|5|6
7 | 5 | 6 | 1|5|7
一旦你有了这个,你就可以总结包含当前Id
.
Aggregated hours =
CALCULATE (
SUM ( 'Work Items'[Hours completed] ),
FILTER (
'Work Items',
PATHCONTAINS (
'Work Items'[Path], --Path column
EARLIER ( 'Work Items'[Id] ) )
)
)
您也可以跳过中间Path
列,只在其中包含路径定义,PATHCONTAINS
而不是引用该列。
Aggregated hours =
CALCULATE (
SUM ( 'Work Items'[Hours completed] ),
FILTER (
'Work Items',
PATHCONTAINS (
PATH ( 'Work Items'[Id], 'Work Items'[Parent ID] ), --Path Definition
EARLIER ( 'Work Items'[Id] )
)
)
)
如果您保留该Path
列,您的表格应如下所示。
Id | Parent ID | Hours completed | Path | Aggregated hours
1 | | | 1 | 15
2 | 1 | | 1|2 | 7
3 | 2 | 3 | 1|2|3 | 3
4 | 2 | 4 | 1|2|4 | 4
5 | 1 | | 1|5 | 8
6 | 5 | 2 | 1|5|6 | 2
7 | 5 | 6 | 1|5|7 | 6
如果您不想要最低级别的聚合,您可以过滤掉PATHLENGTH
等于最大值的行PATHLENGTH
。
推荐阅读
- erlang-shell - 如何搜索 `iex` 或 `erl` shell 历史记录?
- php - `sudo pecl install couchbase` 给出错误 `ERROR: failed to mkdir /usr/local/Cellar/php/7.3.8/pecl/20180731`
- laravel - 在创建视图中保存数据后如何生成pdf
- ios - 添加segue后Xcode故事板调整控制器场景的大小
- reactjs - 如何在 axios 的 Get 方法中使用 'application/x-www-form-urlencoded'
- django - 在部分模型更新期间手动传递附加数据
- python - 是否可以手动更新 Python 的 unicodedata 使用的 unicode 字符数据库?
- angular - 谷歌云上的 Angular 8,application_readable 不起作用
- python-3.x - python - 如何基于pandas中的groupby函数将数据框中的特定列转换为字典?
- html - 当一列变大时不要缩放其他列