我有一个汇总表,该表由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])
编辑: 谢谢您的帮助,您一定使我走上了正轨。这是我最终使用的公式。再次感谢您的帮助!
答案 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。