DAX:如何为燃尽图创建 table?某些日期的当前状态

DAX: How do i create a table for a burndown chart? What status was current on certain dates

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

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

like in here

我想要的table应该有datenewactive[=46这几列=],并且 关闭。对于日期列,我编写了以下代码:

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

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

示例:

原版table

求购table

想要燃尽图

非常感谢任何帮助!

好吧,它不是那么漂亮,但它完成了工作。我创建了一个额外的 table,以获取每个 ID 和日期的最后一个 Rev。至少,我以为你是这个意思。

我愿意寻求更好的解决方案,我相信它可以做到 better/easier。

'Test' 是你原来的 table,在你已经创建的 table(想要)的日期上做一个 link 日期列。

计算table:

MaxRev = 
SUMMARIZE(Test; Tabel[Date]; Test[Id]; "Max"; MAX(Test[Rev]))

新列(添加到 table,只有一个日期列):

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

重复此列,也针对活动和已解决。

PBIX file

这是另一种方法。

计算table:

MaxRev = CROSSJOIN(VALUES(Test[Id]), VALUES(Test[Date]))

向此 table 添加以下计算列:

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])

然后用它来创建一个新的计算 table:

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)