如何计算日期列和过滤器表达式之间的日期差异

How to calculate the date difference between a date column and a filter expression

我有一个事实 table 个案例,其中包含两个日期列: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 函数中开始日期不能晚于结束日期。这应该不是问题,因为过滤器可以防止这种情况发生。我该如何解决这个问题?

我想我可能已经找到了解决方案:

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] )
    )
)

这段代码似乎运行良好。太棒了!