Power BI DAX上周计算所有过滤器选项的销售额

时间:2016-10-19 01:23:42

标签: powerbi dax

我有以下数据结构

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提供,链接为

Power BI getting 2 week back same day value

1 个答案:

答案 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 AmountDateCategory前两周获得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] )
            )
        )
    )
)

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

如果有帮助,请告诉我。

相关问题