我很难创建一种度量来计算给定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函数,但被卡住了。
有人知道如何制定这项措施吗?
亲切的问候, 彼得
答案 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语句处理替换。