Power BI DAX 计算所有过滤器选项的上周销售额
Power BI DAX Calculating Last week Sales for All the Filter Options
我有以下数据结构
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。我使用了以下公式,如果我只 select 日期,它工作正常但如果我 select 类别则不起作用。
SalesTwoWeeksAgo =
CALCULATE (
SUM ( 'Table'[SalesAmount] ),
FILTER (
ALL ( 'Table' ),
COUNTROWS (
FILTER (
'Table',
EARLIER ( 'Table'[Date] ) = DATEADD ( 'Table'[Date], -14, DAY )
)
)
)
)
上述公式由 alejandro zuleta 贡献,link 是
如果我理解你的问题,问题是你有一个 Category
列,所以你需要在表达式中评估的当前类别值中返回两周前的销售额。您只需要在 FILTER
函数中添加一个附加条件,将当前 Category
和当前 Date
减去 14 天,然后它将 return 相关的 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
列添加到您的 table,您可能需要在每个 Date
、Category
和 [之前的两周内获取 Sales Amount
=18=] 所以你只需要在 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] )
)
)
)
)
此处提供的解决方案尚未经过测试,但希望它是您所需要的。
如果有帮助请告诉我。
我有以下数据结构
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。我使用了以下公式,如果我只 select 日期,它工作正常但如果我 select 类别则不起作用。
SalesTwoWeeksAgo =
CALCULATE (
SUM ( 'Table'[SalesAmount] ),
FILTER (
ALL ( 'Table' ),
COUNTROWS (
FILTER (
'Table',
EARLIER ( 'Table'[Date] ) = DATEADD ( 'Table'[Date], -14, DAY )
)
)
)
)
上述公式由 alejandro zuleta 贡献,link 是
如果我理解你的问题,问题是你有一个 Category
列,所以你需要在表达式中评估的当前类别值中返回两周前的销售额。您只需要在 FILTER
函数中添加一个附加条件,将当前 Category
和当前 Date
减去 14 天,然后它将 return 相关的 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
列添加到您的 table,您可能需要在每个 Date
、Category
和 [之前的两周内获取 Sales Amount
=18=] 所以你只需要在 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] )
)
)
)
)
此处提供的解决方案尚未经过测试,但希望它是您所需要的。
如果有帮助请告诉我。