根据 PowerBI 中其他列的值创建计算列

问题描述 投票:0回答:1

我需要帮助创建计算列,但不知道从哪里开始。

所以我有一个数据集,其中包含投资组合、项目、报告日期、状态作为列。

投资组合 项目 报告日期 状态 完成时间
数据 AAAA 2023 年 4 月 1 日 开始了 0
数据 AAAA 2023 年 5 月 1 日 已完成 1
数据 AAAA 2023 年 6 月 1 日 步入正轨 0
数据 AAAA 2023 年 7 月 1 日 已完成 1
数据 BBBB 2023 年 4 月 1 日 已完成 0
数据 BBBB 2023 年 5 月 1 日 开始了 0
数据 BBBB 2023 年 6 月 1 日 已完成 1
数据 BBBB 2023 年 7 月 1 日 已完成 0
数据 中交建 2023 年 4 月 1 日 已完成 0
数据 中交建 2023 年 5 月 1 日 开始了 0
数据 中交建 2023 年 6 月 1 日 开始了 0
数据 中交建 2023 年 7 月 1 日 已完成 2

我要计算的是 Time to Completed 列,即状态转为 Completed 需要多长时间。例如,第一个项目在5月和7月从开始到完成需要1个月,而第二个项目在6月1个月后完成,同样,状态转为绿色也需要2个月的时间。第三个项目。

对于第二个项目,由于下个月(7月)也“已完成”,因此完成时间仍为0。 同样,对于同一项目中的 4 月份,状态为“已完成”,但由于这是记录的第一个条目,因此没有其他已完成状态可供比较,因此它是 0。

我该怎么做?

powerbi dax calculated-columns measure
1个回答
0
投票

这应该适用于跨投资组合(假设您可以有两个同名的项目,但位于不同的投资组合中)。

Earliest Start Date = 
MINX(
    FILTER('ProjectProgress',
        [Portfolio] = MAX([Portfolio]) && 
        [Status]="Started"),
[Reporting Date]
    )

然后是另一个书挡:

Latest End Date = 
MAXX(
    FILTER('ProjectProgress',
    [Portfolio] = MAX([Portfolio]) && 
      [Status]="Completed"),
[Reporting Date]
    )

然后减去即可得到持续时间(以天为单位):

Work Duration = 
INT([Latest End Date]-[Earliest Start Date])
© www.soinside.com 2019 - 2024. All rights reserved.