我们希望显示当前期间的销售额与上一期间的销售额。 为了显示上一期间,我们使用了日期维度表并进行了以下计算:
CALCULATE(SalesValueGross; DATEADD(Date [Date]; -1; YEAR))
不幸的是,它在比较年份时显示出次要(小数)差异。 当我们切成几个月时,差异会变得更大。
我们遇到的另一个问题是,在比较(例如)第1周至2015年第1周至2014年时,此计算似乎不起作用。
非常感谢任何帮助!
答案 0 :(得分:1)
当我想获得之前的日历年销售额时,我使用如下公式:
Cal Prior Yr Sales:=if(HASONEVALUE('Sale Date'[Calendar Year]),
Calculate([Total Sales],
PREVIOUSYEAR('Sale Date'[Date])),BLANK())
HASONEVALUE只确保只选择一年,以便知道要检索的正确的前一年。
您可以进行一系列计算,使您可以使用一个计算来确定您所处的日期层次结构的级别(假设您的日期表中有可用的字段)。以下是我过去使用的内容,其财务日历与正常日历不同。
首先,基础计算:
Sales Same Week Prior Year:=
CALCULATE([Total Sales],Filter(All('Sale Date'),
'Sale Date'[Week Key] = max('Sale Date'[Same Week Last Year])))
Sales Same Month Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'),
'Sale Date'[Month Seq] = max('Sale Date'[Month Seq])-12))
Sales Same Quarter Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'),
'Sale Date'[Quarter Seq] = max('Sale Date'[Quarter Seq])-4))
Sales Prior Year:=CALCULATE([Total Sales], Filter(All('Sale Date'),
'Sale Date'[Fiscal Year] = max('Sale Date'[Fiscal Year])-1))
您可以隐藏所有这些计算,然后创建最后一次计算并将其保持可见:
Sales Same Period Last Year:=
if(HASONEVALUE('Sale Date'[Week Key]), [Sales Same Week Prior Year],
if(HASONEVALUE('Sale Date'[Month Key]),[Sales Same Month Prior Year],
if(HASONEVALUE('Sale Date'[Quarter Key]),[Sales Same Quarter Prior Year],
if(HASONEVALUE('Sale Date'[Fiscal Year]), [Sales Prior Year], BLANK()))))
您可能需要在日期表中添加几个计算字段才能使其正常工作。我有以下字段:[去年同一周],[月份序列],[季度序列]。去年同一周是一个yyyyww的整数字段。 Month Seq和Quarter Seq只是按时间顺序自动递增整数,不重复。 我去年同一周的公式是
=if('Sale Date'[Week Nbr] = 53, (('Sale Date'[Fiscal Year]-1) * 100) + ([Week Nbr]-1),
(('Sale Date'[Fiscal Year]-1) * 100) + ([Week Nbr]))
我在SQL视图中执行了序列号,这是日期日期的来源。例如,如果我的日期表从2010年1月1日开始,则2010年1月的seq为1,2011年1月的seq为13. 2010年第1季度的seq为1,2012年第1季度的seq为9.