代码之家  ›  专栏  ›  技术社区  ›  StelioK

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

  •  2
  • StelioK  · 技术社区  · 7 年前

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

    我有一张桌子,看起来像这样:

    键按升序排列,也按开始日期字段排列。我希望在“周期重叠增量”字段中获得结果,但在尝试解决此问题时遇到了困难。

    基本上,我想给上一个期间中的任何期间(开始日期-结束日期组合)赋值为零,并取这些“超级”期间的日期差。

    这是制作桌子的DAX:

    cases=dataTable(“key”,integer,“startdate”,datetime,“enddate”,datetime
    ,{
    _1,“2018年1月1日”,“2018年10月1日”
    ,2,“2018年3月1日”,“2018年3月1日”
    ,3,“01/05/2018”,“01/07/2018”
    ,4,“2018年1月15日”,“2018年1月16日”
    ,5,“01/21/2018”,“01/24/2018”
    ,6,“2018年1月25日”,“2018年1月27日”
    ,7,“01/25/2018”,“01/27/2018”
    })
    

    非常感谢!!!!

    enter image description here

    键按升序排列,也按开始日期字段排列。我希望在“周期重叠增量”字段中获得结果,但在尝试解决此问题时遇到了困难。

    基本上,我想给上一个期间中的任何期间(开始日期-结束日期组合)赋值为零,并取这些“超级”期间的日期差。

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

    非常感谢!!!!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Foxan Ng    7 年前
    计数行( '案例'[StartDate]<=更早('案例'[StartDate])&& VaR重叠= “案例”, 'cases'[key]<早期('cases'[key]) if(重叠,0,datediff('cases'[startdate],'cases'[enddate],day)+1)

    噢。由 overlapped StartDate 早于或等于当前行并且 EndDate

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

    Overlapped

    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)
    

    Period Overlap Delta

    DATATABLE