计算过滤器上下文之外的值-Powerbi

时间:2018-09-19 14:59:56

标签: powerbi dax

我在Azure分析模型中有一些表,如下所示。我正在使用PowerBI编写一些措施。

DimProducts

+-----------------+--------+
| ProductId       | Name   |
+-----------------+--------+
|               1 |     p1 |
|               2 |     p2 |
|               3 |     p3 |
|               4 |     p4 |
|               5 |     p5 |
|               6 | `   p7 |
+-----------------+--------+

FactSales

+-----------+-------------+----------+
| ProductId |    Date     | Quantity |
+-----------+-------------+----------+
|         1 | 2016-02-01  |        1 |
|         1 | 2016-02-01  |        5 |
|         1 | 2016-02-05  |        7 |
|         2 | 2016-02-05  |        7 |
|         2 |  2016-02-08 |       10 |
+-----------+-------------+----------+

我需要找到销售总额。 我需要在过滤器外部找到最大日期的售出数量总和。例如,日期过滤器为2016-02-08。 该过滤器下方的最大日期是2016-05-02,产品编号2的总数量是7(实际上是销售表的第四行)。 我该如何为此制定措施?

1 个答案:

答案 0 :(得分:0)

计算所选日期之前的最大日期,然后使用该日期替换CALCULATE中的过滤器上下文。

MaxDateSum =
VAR SelectedDate = MAX ( FactSales[Date] )
VAR MaxDate =
    CALCULATE (
        MAX ( FactSales[Date] ),
        FILTER ( ALL ( FactSales[Date] ), FactSales[Date] < SelectedDate )
    )
RETURN
    CALCULATE ( SUM ( FactSales[Quantity] ), FactSales[Date] = MaxDate )