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

时间:2018-03-19 10:51:59

标签: powerbi dax burndowncharts

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

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

like in here

我想要的表应该包含列 date new active closed 。对于日期列,我编写了以下代码:

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

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

示例:

原始表

original table

通缉表

wanted table

通缉的燃尽图

wanted burndown chart

任何帮助都非常感谢!

2 个答案:

答案 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。

Result

PBIX file

答案 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)