我有以下数据结构
Date | Category | Sales Amount
----------------------------------------------------
01-Sep-2016 | Food | 100
02-Sep-2016 | Food | 120
03-Sep-2016 | Food | 130
01-Sep-2016 | Electricity | 180
02-Sep-2016 | Electricity | 60
01-Sep-2016 | Perfumes | 80
02-Sep-2016 | Perfumes | 40
我想计算每个类别的两周销售额,我可能会在未来添加另一个像Territory这样的列。我使用以下公式,如果我只选择日期但是如果我选择类别则不起作用。
SalesTwoWeeksAgo =
CALCULATE (
SUM ( 'Table'[SalesAmount] ),
FILTER (
ALL ( 'Table' ),
COUNTROWS (
FILTER (
'Table',
EARLIER ( 'Table'[Date] ) = DATEADD ( 'Table'[Date], -14, DAY )
)
)
)
)
以上公式由alejandro zuleta提供,链接为
答案 0 :(得分:0)
如果我理解您的问题,问题是您有一个Category
列,因此您需要在表达式中评估的当前类别值的两周内获得销售。您只需在FILTER
函数中添加其他条件即可获取当前Category
和当前Date
减去14天的条件,然后它会将相关的Sales Amount
值返回到SUM
函数。
SalesTwoWeeksAgo =
CALCULATE (
SUM ( 'Table'[Sales Amount] ),
FILTER (
ALL ( 'Table' ),
COUNTROWS (
FILTER (
'Table',
EARLIER ( 'Table'[Date] ) = DATEADD ( 'Table'[Date], -14, DAY )
&& 'Table'[Category] = EARLIER ( 'Table'[Category] )
)
)
)
)
此外,如果您在表格中添加Territory
列,则可能需要在Sales Amount
,Date
和Category
前两周获得Territory
,以便您只需要在FILTER
函数中添加第三个条件。
SalesTwoWeeksAgo =
CALCULATE (
SUM ( 'Table'[Sales Amount] ),
FILTER (
ALL ( 'Table' ),
COUNTROWS (
FILTER (
'Table',
EARLIER ( 'Table'[Date] ) = DATEADD ( 'Table'[Date], -14, DAY )
&& 'Table'[Category] = EARLIER ( 'Table'[Category] )
&& 'Table'[Territory] = EARLIER ( 'Table'[Territory] )
)
)
)
)
此处提供的解决方案尚未经过测试,但希望这是您所需要的。
如果有帮助,请告诉我。