如何使用两个不同的日期过滤器重叠线并准确显示diff%

时间:2019-01-11 21:19:23

标签: powerbi dax

powerBi似乎不具有比较来自不同时间段的数据并将结果重叠为一个视觉效果的功能。但是,我遇到了以下文章,该文章使我几乎完成了任务:https://www.sqlbi.com/articles/filtering-and-comparing-different-time-periods-with-power-bi/ 在文章(归一化因子除外)中应用了该方法之后,我将以下值拖动到了表格中

  • 日期(我的销售表中的日期),Total_sales(度量), previous_sales(measure),%差异

表上当前应用了两个切片器过滤器(当前日期和上一个日期范围):

  • 2018年10月1日至2018年10月2日以及2018年9月1日至2018年9月2日

表的输出如下:

+-------------+----------------+----------------+-------------+
|    date     | total_sales    | previous sales | %difference |
+-------------+----------------+----------------+-------------+
| sept 1 2018 |                |      10,000    | -100.00%    |
| sept 2 2018 |                |      15,000    | -100.00%    |
| oct 1 2018  |      20,000    |                | N/A         |
| oct 2 2018  |      30,000    |                | N/A         |
+-------------+----------------+----------------+-------------+

我的两个问题是:如何有效地设置它以便%difference可以准确地计算;以及如何绘制线条图,以便它们可以重叠到我的线条图中。 当我尝试绘制图形时,它给了我9月的一条线。 1-2和八月前有很长的空白空间。 1-2。

N.B:整个练习的灵感来自其视觉效果中的GA比较日期功能。

注意:请告知您是否需要我的度量计算(与本文没有什么不同,关系和日期表也没有什么不同

1 个答案:

答案 0 :(得分:2)

比方说,我们将两个日期范围按在每个切片器中选择的最大日期进行排列(以便9月2日与示例中的10月2日对齐)。如下定义previous_date度量。

previous_date =
VAR MaxDate =
    CALCULATE ( MAX ( 'Date'[Date] ), ALLSELECTED ( 'Date'[Date] ) )
VAR MaxPrev =
    CALCULATE (
        MAX ( 'Previous Date'[Previous Date] ),
        ALLSELECTED ( 'Previous Date'[Previous Date] )
    )
VAR CurrDate = MAX ( 'Sales'[Date] )
RETURN
    IF ( ISBLANK ( CurrDate ), BLANK (), CurrDate - ( MaxDate - MaxPrev ) )

也就是说,我们用每个切片器范围中最后一个日期的差值来抵消我们正在计算的“当前日期”。

此时,您的previous_sales可以简单地

previous_sales = 
VAR PrevDate = [previous_date]
RETURN CALCULATE(SUM(Sales[Sales]), Sales[Date] = PrevDate)

结果应如下所示:

Line Chart