0

我正在为 sprint 概述创建仪表板,并希望在燃尽图中可视化团队的进度。该图表应提供有关每个新的、活跃的和已关闭的用户故事数量的信息。所以一开始所有的用户故事都是开放的,然后它们变得活跃,最后,没有开放和活跃的故事。

现在我的问题是使用 DAX 对数据进行建模。数据存储在一个大表中,每个用户故事都有一行,其中包含该日期的所有信息。现在,如果信息被修改,例如将状态从新更改为活动或纠正拼写错误,程序只会添加一个带有新日期的新行。

就像在这里

我想要的表应该有列datenewactiveclosed。对于日期列,我编写了以下代码:

 CALENDAR(
    FIRSTNONBLANK(
        CurrentIterations[StartDate];
        CurrentIterations[StartDate] );
    FIRSTNONBLANK(
        CurrentIterations[FinishDate];
        CurrentIterations[FinishDate])
    )

但现在,以那个日期为导向,我希望其他列自行计算。在每一行中,我都想要原始表中活跃的用户故事数量以及该日期的最新版本。

例子:

原表

原表

通缉表

通缉表

通缉燃尽图

想要的燃尽图

非常感谢任何帮助!

4

2 回答 2

0

好吧,它不是那么漂亮,但它确实有效。我创建了一个额外的表,以获取每个 Id 和 Day 的最后一个 Rev。至少,这就是我认为你的意思。

我对更好的解决方案持开放态度,我相信它可以做得更好/更容易。

'Test' 是您的原始表格,请在 Date 上使用 Date 列链接到您已经创建的表格(Wanted)。

计算表:

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。

结果

PBIX 文件

于 2018-03-20T19:55:49.143 回答
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)
于 2018-03-21T14:59:52.240 回答