如何创建给定结束日期的“ SUMX”价值衡量标准?

时间:2019-10-30 13:42:07

标签: powerbi dax m

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

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

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

我设法创建了一个计算列,该列为表中的每一行计算“总小时数”。我分两个步骤完成了此操作:

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

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

但是-我需要创建的是一个度量,用于计算上述值,但要针对给定的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函数,但被卡住了。

有人知道如何制定这项措施吗?

亲切的问候, 彼得

1 个答案:

答案 0 :(得分:1)

认为这可能会满足您的需求:

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

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