Как создать показатель, который "SUMX" оценивает на заданную дату окончания? - PullRequest
2 голосов
/ 30 октября 2019

У меня возникают трудности при создании меры, которая вычисляет общую сумму значений в столбце 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 Ответ

1 голос
/ 07 ноября 2019

I думаю это может сделать то, что вы ищете:

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 обрабатывает замену.

...