如何创建 "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 语句处理替换。
我很难创建一个度量来计算给定 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 语句处理替换。