如何基于切片器动态比较同一时期

时间:2019-01-10 16:24:32

标签: powerbi dax

我想比较每天的相同时段。如果我正在查看2018年10月10日至2018年10月16日(星期三至星期二),我想将其与上周的同一天范围进行比较:

+------+-------+-----+----------+-------------+--+
| year | month | day | sessions | last_period |  |
+------+-------+-----+----------+-------------+--+
| 2018 | oct   |  10 |     2000 |        2500 |  |
| 2018 | oct   |  11 |     2500 |        2400 |  |
| 2018 | oct   |  12 |     2600 |        2300 |  |
| 2018 | oct   |  13 |     2700 |        2450 |  |
| 2018 | oct   |  14 |     2400 |        2500 |  |
| 2018 | oct   |  15 |     2300 |        2200 |  |
| 2018 | oct   |  16 |     2000 |        1150 |  |
+------+-------+-----+----------+-------------+--+

一个简单的公式可以使它基于7天的间隔:

same_last_period = CALCULATE(SUM(table[Sessions]),DATEADD(table[Date],-7,DAY))

但是我希望公式取决于日期分割器。假设我想查看10月1日至10月20日,我希望公式可以更改,并以相同的天数间隔查看之前的相同时间段。最终,它也会以图形方式显示。

1 个答案:

答案 0 :(得分:1)

尝试一下:

same_last_period =
VAR DayCount = CALCULATE(DISTINCTCOUNT(table[Date]), ALLSELECTED(table[Date]))
RETURN CALCULATE(SUM(table[Sessions]), DATEADD(table[Date], -DayCount, DAY))

编辑:

由于您的过滤条件中仍包含年,月和日,因此以上内容无法达到我的预期效果。该需要删除。

same_last_period =
VAR DayCount =
    CALCULATE (
        DISTINCTCOUNT ( 'table'[Date] ),
        ALLSELECTED ( 'table'[Date] ),
        ALLEXCEPT ( 'table', 'table'[Date] )
    )
RETURN
    CALCULATE (
        SUM ( 'table'[Sessions] ),
        DATEADD ( 'table'[Date], -DayCount, DAY ),
        ALLEXCEPT ( 'table', 'table'[Date] )
    )

ALLEXCEPT除去Date之外的所有其他过滤器上下文。

Result

相关问题