使用DAX计算Powerbi中的平均速度

时间:2019-06-21 12:29:45

标签: powerbi dax

我有2个摄像机的数据:车号,摄像机,日期时间。摄像机A是第一个,摄像机B是第二个摄像机。

我需要计算通过两个摄像头且通过时间至少为5分钟且不超过30分钟的汽车的平均速度。摄像机之间的距离为6公里。

我只计算了同一辆车最近的乘车时间。我找不到最接近A穿越时间的相机B穿越时间。

Diff_time = 
VAR temp =
    TOPN (
        1;
        FILTER (
            'TEST2';
            'TEST2'[license_plate] = EARLIER ( 'TEST2'[license_plate])
                && 'TEST2'[Date_time] < EARLIER ( 'TEST2'[Date_time] ) 
        );
        'TEST2'[Date_time]; DESC
    )
RETURN
    DATEDIFF ( MINX ( temp; 'TEST2'[Date_time] ); 'TEST2'[Date_time]; MINUTE )

[license_plate]是车号。

example of data

enter image description here

1 个答案:

答案 0 :(得分:0)

当您有一个看起来像这样的表时:

enter image description here

然后像这样的DAX表达式将创建计算出的列[MIN_diff_Minutes_with_Camera A]。对于带有摄影机B的行,它返回的分钟数差异最小(来自摄影机A的DT_stamp小于该行中的DT),指的是同一辆车,且介于5分钟到30分钟之间。对于使用Camera A的行,它将返回空白。

MIN_diff_Minutes_with_Camera A =
VAR DT_camera_A =
    CALCULATE (
        MAX ( TEST2[DT_Stamp] ),
        ALLEXCEPT ( TEST2, TEST2[Car] ),
        'TEST2'[Camera] = "A",
        'TEST2'[DT_Stamp] < EARLIER ( TEST2[DT_Stamp] )
    )
VAR Time_Diff_in_Minutes =
    DATEDIFF ( DT_camera_A, 'TEST2'[DT_Stamp], MINUTE )
RETURN
    IF (
        'TEST2'[Camera] = "B"
            && TIme_Diff_in_Minutes >= 5
            && Time_Diff_in_Minutes <= 30,
        Time_Diff_in_Minutes, --For avg speed in km/h use: 6*(Time_Diff_in_Minutes/60)
        BLANK ()
    )