如何在汇总表中找到考虑两列的逐日变化

时间:2019-09-10 20:22:16

标签: powerbi dax

我有一个汇总表,该表由Date和Building_Name求和。我试图弄清楚如何添加一个增加/减少列,如下表所示。我想显示每个建筑物的“未签名总数”是否每天都在增加。

我无法获得一个公式,该公式将占用一栋建筑物的前几天总数-当前天数未签名总数。试图获得我的报告的第四列。

如果我只是想显示每天的变化,并且我也不想将Building_name添加到表中,那么我就可以使用它。

Unsigned Prev Day = 
VAR CurrentDay = SELECTEDVALUE(SummarizeTable[Day Number]) 
VAR CurrentMonth = SELECTEDVALUE(SummarizeTable[Month Number]) 
VAR MaxDayNumber = CALCULATE(MAXA(SummarizeTable[Day Number])) 

Return SUMX(
    FILTER(ALL(SummarizeTable),
         IF( CurrentDay = 1, 
          SummarizeTable[Day Number] = MaxDayNumber && SummarizeTable[Month Number]= CurrentMonth-1,
          SummarizeTable[Day Number] = CurrentDay -1)),
            [Total Unsigned])

编辑: 谢谢您的帮助,您一定使我走上了正轨。这是我最终使用的公式。再次感谢您的帮助! Final formula

1 个答案:

答案 0 :(得分:0)

Unsigned Prev Day =
VAR MostRecentDate = MAX ( 'SummarizeTable'[Date] )
RETURN
  CALCULATE (
    [Total Unsigned],
    ALL ( 'SummarizeTable'[Date], 'SummarizeTable'[Day Number], 'SummarizeTable'[Month Number] ),
    'SummarizeTable'[Date] = MostRecentDate - 1
  )

这假定您具有或可以创建一列'SummarizeTable'[Date]。如果您已经有一个月和一天,这应该是微不足道的。该解决方案利用了DAX对日期具有良好的算法的事实。

此外,您应该考虑构建日期维度,而不是在单个表中完成所有这些工作。它将最终使您的生活变得更加轻松。有很多不错的日期维度,但是我偏爱mine

编辑:根据评论中的讨论,目标是将其作为计算列添加到数据表中。上面的定义旨在用作度量。

# Increase/ Decrease =
CurrentRowDate = 'SummarizeTable'[Date]
RETURN
CALCULATE (
  SUM ( 'SummarizeTable'[Total Unsigned] ),
  ALLEXCEPT ( 'SummarizeTable'[Building] ),
  'SummarizeTable'[Date] = CurrentRowDate - 1
)

这将在'SummarizeTable'中添加一列,该列的[Total Unsigned]总和与当前行的[Building]值相同,并且日期比当前行的日期短1。