Powerbi 日期之间的DAX总和未按预期工作

Powerbi 日期之间的DAX总和未按预期工作,powerbi,dax,Powerbi,Dax,我有两张桌子: DateDim 时间 我试图从我的时间表中得到实际小时数的总和,它们在我的DateDim的两个日期之间。他们在以下日期有关系: 我目前使用以下DAX公式: PreviousPeriod_Hours = CALCULATE(SUM('Time'[hours_actual]) ,DATESBETWEEN( DateDim[FullDateAlternateKey], [Start of Previous

我有两张桌子:

  • DateDim
  • 时间
  • 我试图从我的时间表中得到实际小时数的总和,它们在我的DateDim的两个日期之间。他们在以下日期有关系:

    我目前使用以下DAX公式:

    PreviousPeriod_Hours = CALCULATE(SUM('Time'[hours_actual])
        ,DATESBETWEEN(
                      DateDim[FullDateAlternateKey],
                      [Start of Previous Period],
                      [End of Previous Period]),
                      ALL(DateDim)
                      )
    
    [Start of Previous Period]和[End of Previous Period]的值是计算的DAX日期,如我所预期的那样显示

    为了达到这些日期,我首先创建了几个DAX函数:

    Start of This Period = FIRSTDATE(DateDim[FullDateAlternateKey])
    
    End of This Period = LASTDATE(DateDim[FullDateAlternateKey])
    
    Days in This Period = DATEDIFF([Start of This Period],[End of This Period],DAY)
    
    End of Previous Period = PREVIOUSDAY(LASTDATE(DATEADD(DateDim[FullDateAlternateKey],-1*[Days in This Period],DAY)))
    
    Start of Previous Period = PREVIOUSDAY(FIRSTDATE(DATEADD(DateDim[FullDateAlternateKey],-1*[Days in This Period] + IF(MOD(Year('MeasureTable'[End of This Period]),4) == 0,1,0),DAY)))
    
    要快速总结上述内容,它需要查找开始日期和结束日期之间的天数,然后从所选的开始日期和结束日期中减去这些天数。如果是闰年,那么加上一天

    dax公式给出了我期望的正确总数。但是,如果我按月显示两个日期之间的小时数,它们显示的内容与应该显示的内容完全不同,并且不会添加到显示的总和中

    我期望以下值:

    我不确定13是从哪里来的,28.25看起来是次年上个月的重复。我错过了什么?我目前的方法正确吗,我只是做了一些不正确的事情?还是我采取了完全错误的方法

    更新-添加我正在处理的一些数据:

    然后DateDim只是一个生成的日期表,例如,一行如下所示(2016-2021):

    实际时间和日期如下所示:

    Date_Start              hours_actual
    
    2019-03-05 12:00:00 AM  5
    2019-03-26 12:00:00 AM  3
    2019-04-23 12:00:00 AM  0.75
    2019-04-24 12:00:00 AM  0.08
    2019-05-22 12:00:00 AM  4
    2019-05-22 12:00:00 AM  2
    2019-05-22 12:00:00 AM  1.75
    2019-05-27 12:00:00 AM  8
    2019-05-31 12:00:00 AM  0.25
    2019-06-03 12:00:00 AM  0.25
    2019-06-05 12:00:00 AM  0.25
    2019-06-21 12:00:00 AM  1
    2019-06-27 12:00:00 AM  2
    2019-06-27 12:00:00 AM  0.5
    2019-06-28 12:00:00 AM  1
    2019-06-28 12:00:00 AM  3
    2019-07-04 12:00:00 AM  3
    2019-07-05 12:00:00 AM  3
    2019-07-10 12:00:00 AM  2.5
    2019-07-10 12:00:00 AM  0.5
    2019-07-10 12:00:00 AM  1.5
    2019-07-10 12:00:00 AM  0.5
    2019-07-10 12:00:00 AM  2
    2019-07-12 12:00:00 AM  2.5
    2019-07-17 12:00:00 AM  1
    2019-07-18 12:00:00 AM  0.5
    2019-07-24 12:00:00 AM  0.5
    2019-07-24 12:00:00 AM  1
    2019-07-24 12:00:00 AM  1.5
    2019-07-24 12:00:00 AM  1
    2019-07-25 12:00:00 AM  1
    2019-07-25 12:00:00 AM  0.5
    2019-07-31 12:00:00 AM  1
    2019-07-31 12:00:00 AM  1.5
    2019-07-31 12:00:00 AM  1
    2019-07-31 12:00:00 AM  0.5
    2019-08-01 12:00:00 AM  2
    2019-08-07 12:00:00 AM  4
    2019-08-07 12:00:00 AM  3.75
    2019-08-08 12:00:00 AM  4
    2019-08-14 12:00:00 AM  1.25
    2019-09-11 12:00:00 AM  3.5
    2019-09-11 12:00:00 AM  2.5
    2019-09-12 12:00:00 AM  3
    2019-09-12 12:00:00 AM  1.75
    2019-09-13 12:00:00 AM  4
    2019-09-13 12:00:00 AM  1.75
    2019-09-13 12:00:00 AM  3
    2019-09-14 12:00:00 AM  2
    2019-09-14 12:00:00 AM  3.25
    2019-09-16 12:00:00 AM  0.5
    2019-09-16 12:00:00 AM  0.5
    2019-09-26 12:00:00 AM  2.5
    

    在进行了更多的实验之后,我们将按月和按年提取以前开始日期和结束日期的DAX函数。我的错误是认为DAX函数将只在切片器上求值,而不在提供的表值上求值

    我采用了一种不同的方法,基本上创建了一个时间表的参考表,并添加了一个列,为每一行的日期添加了一年。然后,我通过这个future\u date列将引用表连接到我的DateDim表。我终于能够显示当前期间和前一期间的值,它准确地给出了我想要的结果


    能否为[上期开始]和[上期结束]添加代码。它们可能也很重要@NikolajKlitlundBørty我刚刚添加了日期的细节。非常感谢。你的期望值不应该改变一个月吗。据我所知,你试图计算前一阶段的小时数。这样,四月将给你三月的值,即.8Hi@NikolajKlitlundBørty-如果我将切片器改为一个月,你的上述评论将是正确的。在上面的例子中,我看到的是一个财政年度,2019年9月1日至2020年8月31日。这将前一小时的日期定为2018年9月1日至2019年8月31日。金额正确显示了2019财年74.33小时的工作时间,但按月显示该财年的值并不正确。我本希望看到2019年3月至8月之间的数值
    Date_Start              hours_actual
    
    2019-03-05 12:00:00 AM  5
    2019-03-26 12:00:00 AM  3
    2019-04-23 12:00:00 AM  0.75
    2019-04-24 12:00:00 AM  0.08
    2019-05-22 12:00:00 AM  4
    2019-05-22 12:00:00 AM  2
    2019-05-22 12:00:00 AM  1.75
    2019-05-27 12:00:00 AM  8
    2019-05-31 12:00:00 AM  0.25
    2019-06-03 12:00:00 AM  0.25
    2019-06-05 12:00:00 AM  0.25
    2019-06-21 12:00:00 AM  1
    2019-06-27 12:00:00 AM  2
    2019-06-27 12:00:00 AM  0.5
    2019-06-28 12:00:00 AM  1
    2019-06-28 12:00:00 AM  3
    2019-07-04 12:00:00 AM  3
    2019-07-05 12:00:00 AM  3
    2019-07-10 12:00:00 AM  2.5
    2019-07-10 12:00:00 AM  0.5
    2019-07-10 12:00:00 AM  1.5
    2019-07-10 12:00:00 AM  0.5
    2019-07-10 12:00:00 AM  2
    2019-07-12 12:00:00 AM  2.5
    2019-07-17 12:00:00 AM  1
    2019-07-18 12:00:00 AM  0.5
    2019-07-24 12:00:00 AM  0.5
    2019-07-24 12:00:00 AM  1
    2019-07-24 12:00:00 AM  1.5
    2019-07-24 12:00:00 AM  1
    2019-07-25 12:00:00 AM  1
    2019-07-25 12:00:00 AM  0.5
    2019-07-31 12:00:00 AM  1
    2019-07-31 12:00:00 AM  1.5
    2019-07-31 12:00:00 AM  1
    2019-07-31 12:00:00 AM  0.5
    2019-08-01 12:00:00 AM  2
    2019-08-07 12:00:00 AM  4
    2019-08-07 12:00:00 AM  3.75
    2019-08-08 12:00:00 AM  4
    2019-08-14 12:00:00 AM  1.25
    2019-09-11 12:00:00 AM  3.5
    2019-09-11 12:00:00 AM  2.5
    2019-09-12 12:00:00 AM  3
    2019-09-12 12:00:00 AM  1.75
    2019-09-13 12:00:00 AM  4
    2019-09-13 12:00:00 AM  1.75
    2019-09-13 12:00:00 AM  3
    2019-09-14 12:00:00 AM  2
    2019-09-14 12:00:00 AM  3.25
    2019-09-16 12:00:00 AM  0.5
    2019-09-16 12:00:00 AM  0.5
    2019-09-26 12:00:00 AM  2.5