2

我正在处理一个棘手的问题。我曾多次尝试捕获数据,但均未成功。

我在 Power Bi 中有一张表格,如下所示:

在此处输入图像描述

键是按升序排列的,StartDate 字段也是如此。我想在“Period Overlap Delta”字段中获得结果,但在试图弄清楚时遇到了麻烦。

基本上,我想将零值分配给前一个时期的任何时期(开始日期 - 结束日期组合),并取那些“超级”时期的日期差异。

这是生成表格的 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"}
        }) 

提前非常感谢!!!

4

1 回答 1

2

我们需要知道某一行是否与前一行重叠。我们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)

期间重叠增量

PSDATATABLE提供样本数据的使用是黄金,应该更频繁地推广!

于 2018-06-14T04:07:17.963 回答