Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 如何创建“测量”的方法;SUMX";给定结束日期的值是否已更新?_Powerbi_Dax_M - Fatal编程技术网

Powerbi 如何创建“测量”的方法;SUMX";给定结束日期的值是否已更新?

Powerbi 如何创建“测量”的方法;SUMX";给定结束日期的值是否已更新?,powerbi,dax,m,Powerbi,Dax,M,对于给定的结束日期,我很难创建一个度量来计算列持续时间(h)中值的总和 我有一个简单的表,如下所示: Events = DATATABLE ( "EventID"; INTEGER; "StartDate"; DATETIME; "EndDate"; DATETIME; "Interval"; INTEGER; "Duration (h)"; DOUBLE; { {1; "2018-01-01"; "2019-12-31"; 35

对于给定的
结束日期
,我很难创建一个度量来计算列
持续时间(h)
中值的总和

我有一个简单的表,如下所示:

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)]
然后我创建另一个计算列:

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]

像这样:

例如,给定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语句处理替换。

只需创建一个参数。寻找一些视频。这会对你有帮助的