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应该有date、new、active[=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
重复此列,也针对活动和已解决。
这是另一种方法。
计算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)
我正在为冲刺概览创建仪表板,并希望在燃尽图中可视化团队的进度。该图表应提供有关新的、活动的和已关闭的用户故事数量的信息。所以一开始所有的用户故事都是开放的,然后它们变得活跃,最后,没有开放和活跃的故事了。
现在我的问题是使用 DAX 对数据建模。 数据存储在一个大 table 中,每个用户故事都有一行,其中包含该日期的所有信息。现在,如果信息被修改,例如将状态从新更改为活动或更正拼写错误,程序只会添加一个新日期的新行。
like in here
我想要的table应该有date、new、active[=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
重复此列,也针对活动和已解决。
这是另一种方法。
计算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)