我有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]是车号。
答案 0 :(得分:0)
当您有一个看起来像这样的表时:
然后像这样的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 ()
)