Как рассчитать разницу в дате между столбцом даты и выражением фильтра - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица фактов с двумя столбцами даты: startDate и endDate и unitCount. У меня есть несвязанное измерение даты, содержащее все даты.

Таким образом, я могу рассчитать количество дел следующим образом:

Number of cases (Beginning of month) :=CALCULATE(
sum('Fact'[unitCount]),
FILTER('Fact',
'Fact'[endDate]>=MIN(Date[Date]) &&
'Fact'[startDate]<=MIN(Date[Date])
))

Это прекрасно работает, создавая красивый список:

Year-Month Number of cases(Beginning of month)
2018-01          2
2018-02          5
2018-03          3
... etc

Я хотел бы добавить столбецс мерой средней продолжительности дел каждого начала месяца.

Я попытался сделать меру:

Average duration (Beginning of month):=calculate(AVERAGEX('Fact',
datediff('Fact'[startDate],
MIN('Date'[Date]),
MONTH)),
FILTER('Fact',
'Fact'[endDate]>=MIN('Date'[Date]) &&
'Fact'[startDate]<=MIN('Date'[Date])
))

Однако этот код завершается ошибкой: в функции Datediff The StartДата не может быть больше даты окончания. Это не должно быть проблемой, так как фильтр предотвращает это. Как я могу это исправить?

1 Ответ

0 голосов
/ 11 октября 2019

Я думаю, что, возможно, нашел решение сам:

Average duration :=
CALCULATE (
    AVERAGEX (
        'Fact',
        DATEDIFF (
            'Fact'[startDate],
            MINX ( FILTER ( 'Date', Date[Date] >= 'Fact'[startDate] ), 'Date'[Date] ),
            MONTH
        )
    ),
    FILTER (
        'Fact',
        'Fact'[endDate] >= MIN ( Date[Date] )
            && 'Fact'[StartDate] <= MIN ( Date[Date] )
    )
)

Этот код, кажется, работает хорошо. Отлично!

...