如何创建 "SUMX" 给定结束日期的衡量标准?

How to create measure that "SUMX" values up for a given end date?

我很难创建一个度量来计算给定 EndDate 的列 Duration (h) 中值的总和。

我有一个简单的 table,看起来像这样:

Events = 
DATATABLE (
    "EventID"; INTEGER;
    "StartDate"; DATETIME;
    "EndDate"; DATETIME;
    "Interval"; INTEGER;
    "Duration (h)"; DOUBLE;
    {
        {1; "2018-01-01"; "2019-12-31"; 35; 1,45 };
        {2; "2019-02-14"; "2019-12-31"; 2; 0,05 };
        {3; "2019-06-01"; "2019-07-01"; 1; 0,05 }
    }
)

我已经设法创建了一个计算列来计算 table 中每一行的 "Total hours"。我分两步完成:

首先我创建了一个计算列:

Number of events in period =
DATEDIFF ( Events[StartDate]; Events[EndDate]; DAY ) / Events[Interval]

然后我创建另一个计算列:

Total number of hours in period =
Events[Number of events in period] * Events[Duration (h)]

但是 - 我需要创建的是一个 Measure 来计算上述内容,但是对于给定的 EndDate.

如果给定日期超出此日期,公式应使用现有 Events[EndDate]

像这样:

例如给定 EndDate 2019-09-01:

{1; "2018-01-01"; "2019-12-31"; 35; 1,45 }; --use 2019-09-01
{2; "2019-02-14"; "2019-12-31"; 2; 0,05 };  --use 2019-09-01
{3; "2019-06-01"; "2019-07-01"; 1; 0,05 }   --use 2019-07-01

我试过使用 SUMX 函数,但是卡住了。

有人知道如何创建此度量吗?

亲切的问候, 彼得

认为这可能符合您的要求:

Measure = var otherEndDate = Date(2019,09,01) return SUMX(Events, DATEDIFF ( Events[StartDate], if(Events[EndDate] > otherEndDate, otherEndDate, Events[EndDate]), DAY ) / Events[Interval] * Events[Duration (h)]) 

我设置了一个替换日期为 2019-09-01 的变量 (otherEndDate),以便在现有 EndDate 超过它时使用。 if 语句处理替换。