DAX:从某个时间点获取最新日期

时间:2018-04-17 10:29:13

标签: powerbi dax

我有一个平面显示订单及时订单,订单有一个ID,可能会随着时间的推移而改变,只会更改订单的log_date。

order_id   qty   log_date
1           3     2018-03-03
1           2     2018-01-06
1           4     2017-12-04
1           6     2017-10-10
2           1     2018-02-01
2           3     2018-01-04
2           2     2018-01-02
2           4     2017-12-01

我的目标是使用切片机,这样我就可以在特定时刻查看订单状态。如果切片器设置为“2018-01-01”,则预期结果将是id = 1,qty = 4且id = 2,qty = 1。我尝试过使用计算表,但切片器更改时不会重新计算。

TEST = 
VAR TheDate = SELECTEDVALUE(Slicer, DATEVALUE("2000-01-01"))
RETURN
SUMMARIZE (
    Blad1,
    Blad1[order_id],
    "The_Qty", CALCULATE (
        SUM ( Blad1[qty] ),
        TOPN (
            1,
            FILTER ( VALUES ( Blad1[log_date] ), Blad1[log_date] <= TheDate ),
            [log_date], DESC
        )
    )
)

有解决方法吗?

问候。

1 个答案:

答案 0 :(得分:0)

计算表格不响应切片器。您需要一个度量和一个单独的切片表。

为日期切片器创建一个新表。您可以使用CALENDAR()CALENDARAUTO()

DateSlicer = CALENDARAUTO()

创建一个度量来挑选所需的行:

RowFilter = 
    VAR SlicerDate = MAX(DateSlicer[Date])
    VAR LastLogDate = CALCULATE(MAX(Blad1[log_date]),
                          FILTER(ALL(Blad1),
                              Blad1[order_id] = MAX(Blad1[order_id]) &&
                              Blad1[log_date] <= SlicerDate))
    RETURN IF(MAX(Blad1[log_date]) = LastLogDate, 1, 0)

现在,如果您使用order_idqtylog_date创建表格或矩阵,则可以在可视级别过滤器部分中使用此度量,以便它只显示行RowFilter = 1