我正在为sprint概述创建一个仪表板,并希望在燃尽图中可视化团队的进度。该图表应提供有关每个新的,活动的和已关闭的用户故事数量的信息。因此,在开始时所有用户故事都是开放的,然后它们变得活跃,最后,没有开放和活跃的故事。
现在我的问题是使用DAX对数据建模。 数据存储在一个大表中,每个用户故事都有一行,其中包含该日期的所有信息。现在,如果信息被修改,就像将状态从新变为活动或纠正拼写错误一样,程序只会添加一个新日期的新行。
我想要的表应该包含列 date , new , active 和 closed 。对于日期列,我编写了以下代码:
CALENDAR(
FIRSTNONBLANK(
CurrentIterations[StartDate];
CurrentIterations[StartDate] );
FIRSTNONBLANK(
CurrentIterations[FinishDate];
CurrentIterations[FinishDate])
)
但是现在,在那个日期,我希望其他列自己计算。在每一行中,我想要原始表中的活动用户故事数量和该日期的最新版本。
示例:
原始表
通缉表
通缉的燃尽图
任何帮助都非常感谢!
答案 0 :(得分:0)
嗯,它并不是美丽的,但它确实起作用了。我创建了一个额外的表,以获得每个Id和Day的最后一个Rev。至少,这就是我的意思。
我愿意接受更好的解决方案,我确信它可以做得更好/更容易。
'测试'是您的原始表格,使用日期列在日期链接到您已创建的表格(通缉)。
计算表:
MaxRev =
SUMMARIZE(Test; Tabel[Date]; Test[Id]; "Max"; MAX(Test[Rev]))
新建列(添加到包含单个日期列的表):
New =
CALCULATE (
DISTINCTCOUNT ( Test[Id] );
CALCULATETABLE (
FILTER (
CROSSJOIN ( 'MaxRev'; Test );
'MaxRev'[Id] = Test[Id]
&& 'MaxRev'[Date] = Test[Date]
&& 'MaxRev'[Max] = Test[Rev]
)
);
Test[State] = "New"
) + 0
重复此列,也适用于Active和Solved。
答案 1 :(得分:0)
这是另一种方法。
计算表:
MaxRev = CROSSJOIN(VALUES(Test[Id]), VALUES(Test[Date]))
将以下计算列添加到此表中:
MaxRev = CALCULATE(MAX(Test[Rev]),
FILTER(Test, Test[Id] = MaxRev[Id] && Test[Date] <= MaxRev[Date]))
Status = LOOKUPVALUE(Test[State], Test[Id], MaxRev[Id], Test[Rev], MaxRev[MaxRev])
然后使用它来创建一个新的计算表:
Wanted = SUMMARIZE(MaxRev, MaxRev[Date],
"New", CALCULATE(COUNT(MaxRev[Id]), MaxRev[Status] = "New") + 0,
"Active", CALCULATE(COUNT(MaxRev[Id]), MaxRev[Status] = "Active") + 0,
"Solved", CALCULATE(COUNT(MaxRev[Id]), MaxRev[Status] = "Solved") + 0)