0

我在 PowerQuery 中围绕我公司的车队的利用率构建了一个数据模型。我们在数据模型中有许多不同的列。具体来说,里程、VIN、开始日期和结束日期(见下表)。

Mileage | VIN | Start Date | End Date |
0       | 123 | 6/1/18     | 6/30/18  |
0       | 123 | 7/1/18     | 7/31/18  |
0       | 123 | 8/1/18     | 8/31/18  |
0       | 123 | 9/1/18     | 9/30/18  |
0       | 123 | 10/1/18    | 10/31/18 |

我想要完成的是,如果里程等于 0 一个月,它被归类为一个标记为 0-30 天的桶,如果里程等于 0 连续两个月,它被归类为 31-60 天,0连续 3 个月以上的里程将被归类为 >60 天。在上面的示例中,该车辆将被归类为“>60 天”存储桶。有没有一种简单的方法可以在使用 DAX 的数据模型中做到这一点?如果您有任何后续问题,请告诉我。谢谢!

4

1 回答 1

1

试试这个作为计算列:

Buckets =
VAR rowDate = 'myTable'[ Start Date ]
VAR previousDate =
    CALCULATE (
        MAX ( 'myTable'[ Start Date ] ),
        FILTER (
            ALLEXCEPT ( myTable, myTable[ VIN ] ),
            'myTable'[ Start Date ] < rowDate
        )
    )
VAR prePreviousDate =
    CALCULATE (
        MAX ( 'myTable'[ Start Date ] ),
        FILTER (
            ALLEXCEPT ( myTable, myTable[ VIN ] ),
            'myTable'[ Start Date ] < previousDate
        )
    )
VAR PreviousMileage =
    CALCULATE (
        MAX ( 'myTable'[Mileage ] ),
        ALLEXCEPT ( 'myTable', 'myTable'[ VIN ] ),
        'myTable'[ Start Date ] = previousDate
    )
VAR PrePreviousMileage =
    CALCULATE (
        MAX ( 'myTable'[Mileage ] ),
        ALLEXCEPT ( 'myTable', 'myTable'[ VIN ] ),
        'myTable'[ Start Date ] = prePreviousDate
    )
RETURN
    SWITCH (
        TRUE (),
        'myTable'[Mileage ] + IF ( ISBLANK ( PreviousMileage ), 1, PreviousMileage )
            + IF ( ISBLANK ( PrePreviousMileage ), 1, PrePreviousMileage )
            = 0, "> 60 Days",
        'myTable'[Mileage ] + IF ( ISBLANK ( PreviousMileage ), 1, PreviousMileage )
            = 0, "31 to 60 Days",
        'myTable'[Mileage ] = 0, "0 to 30 Days",
        "No Days"
    )

结果看起来像这样。我添加了一些用于测试的值。

在此处输入图像描述

于 2018-11-02T14:47:11.333 回答