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,您可能需要在每个 DateCategory 和 [之前的两周内获取 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] )
            )
        )
    )
)

此处提供的解决方案尚未经过测试,但希望它是您所需要的。

如果有帮助请告诉我。