如何检查当前开始和结束日期是否在上一期间(开始和结束日期)

How to check if current start and end dates are in previous period (start and end dates)

我正在处理一个棘手的问题。我已经多次尝试捕获数据,但都没有成功。

我在 Power Bi 中有一个 table,如下所示:

密钥和 StartDate 字段都按升序排列。我想在 "Period Overlap Delta" 字段中获得结果,但在尝试弄清楚时遇到了麻烦。

基本上,我想为前一期间的任何期间(开始日期-结束日期组合)分配一个零值,并获取那些 "super" 期间的日期差异。

这是生成 table:

的 DAX
Cases = DATATABLE("Key", integer, "StartDate", datetime, "EndDate", datetime
        ,{
        {1, "01/01/2018", "01/10/2018"}
        , {2, "01/03/2018","01/03/2018"}
        , {3, "01/05/2018","01/07/2018"}
        , {4, "01/15/2018","01/16/2018"}
        , {5, "01/21/2018","01/24/2018"}
        , {6, "01/25/2018", "01/27/2018"}
        , {7, "01/25/2018","01/27/2018"}
        }) 

提前致谢!!!

我们需要知道某一行是否与前一行重叠。 previous 是指键小于当前行。 overlapped 是指 StartDate 早于或等于当前行,EndDate 晚于或等于当前行,因此:

Overlapped = 
COUNTROWS(
    FILTER(
        'Cases',
        'Cases'[StartDate] <= EARLIER('Cases'[StartDate]) &&
        'Cases'[EndDate] >= EARLIER('Cases'[EndDate]) &&
        'Cases'[Key] < EARLIER('Cases'[Key])
    )
)

有了这个我们只需要把它包起来并用 DATEDIFF 函数计算天数:

Period Overlap Delta = 
VAR Overlapped =
COUNTROWS(
    FILTER(
        'Cases',
        'Cases'[StartDate] <= EARLIER('Cases'[StartDate]) &&
        'Cases'[EndDate] >= EARLIER('Cases'[EndDate]) &&
        'Cases'[Key] < EARLIER('Cases'[Key])
    )
)
RETURN
IF(Overlapped, 0, DATEDIFF('Cases'[StartDate], 'Cases'[EndDate], DAY) + 1)

P.S。使用DATATABLE提供样本数据是金,应该多多推广!