@@ -331,29 +331,29 @@ def test_load_time_series() -> None:
331331 q , bv = load_time_series ("ts" , "foo" , now - (24 * one_hour ), now , one_hour , group_by = [])
332332 assert (
333333 q == "LET m1 = ( FOR d in `ts` FILTER d.ts==@b0 AND d.at>=@b1 AND d.at<@b2 "
334- "LET m0 = (FLOOR(d.at / @b3) * @b3) + @b4 "
334+ "LET m0 = (FLOOR(( d.at + @b4) / @b3) * @b3) - @b4 "
335335 "COLLECT group_slot=m0, complete_group=d.group "
336336 "AGGREGATE slot_avg = AVG(d.v) "
337337 "RETURN {at: group_slot, group: complete_group, v: slot_avg} )\n "
338338 "FOR d in m1 COLLECT group_slot=d.at AGGREGATE agg_val=avg(d.v) "
339339 "SORT group_slot RETURN {at: group_slot, v: agg_val}"
340340 )
341- assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 800 }
341+ assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 2800 }
342342 # no group by defined --> group by all values
343343 q , bv = load_time_series ("ts" , "foo" , now - (24 * one_hour ), now , one_hour )
344344 assert (
345345 q == "FOR d in `ts` FILTER d.ts==@b0 AND d.at>=@b1 AND d.at<@b2 "
346- "LET m0 = (FLOOR(d.at / @b3) * @b3) + @b4 "
346+ "LET m0 = (FLOOR(( d.at + @b4) / @b3) * @b3) - @b4 "
347347 "COLLECT group_slot=m0, complete_group=d.group "
348348 "AGGREGATE slot_avg = AVG(d.v) "
349349 "RETURN {at: group_slot, group: complete_group, v: slot_avg}"
350350 )
351- assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 800 }
351+ assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 2800 }
352352 # group by specific group variables
353353 q , bv = load_time_series ("ts" , "foo" , now - (24 * one_hour ), now , one_hour , group_by = ["a" , "b" ])
354354 assert (
355355 q == "LET m1 = ( FOR d in `ts` FILTER d.ts==@b0 AND d.at>=@b1 AND d.at<@b2 "
356- "LET m0 = (FLOOR(d.at / @b3) * @b3) + @b4 "
356+ "LET m0 = (FLOOR(( d.at + @b4) / @b3) * @b3) - @b4 "
357357 "COLLECT group_slot=m0, complete_group=d.group "
358358 "AGGREGATE slot_avg = AVG(d.v) "
359359 "RETURN {at: group_slot, group: complete_group, v: slot_avg} )\n "
@@ -362,22 +362,22 @@ def test_load_time_series() -> None:
362362 "AGGREGATE agg_val=avg(d.v) "
363363 "SORT group_slot RETURN {at: group_slot,group: { a: group_a, b: group_b }, v: agg_val}"
364364 )
365- assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 800 }
365+ assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : 3600 , "b4" : 2800 }
366366 # group by specific group variables and filter by group variables
367367 q , bv = load_time_series (
368368 "ts" , "foo" , now - (24 * one_hour ), now , one_hour , group_by = ["a" , "b" ], group_filter = [P ("a" ).eq ("a" )]
369369 )
370370 assert (
371371 q == "LET m1 = ( FOR d in `ts` FILTER d.ts==@b0 AND d.at>=@b1 AND d.at<@b2 FILTER d.group.a == @b3 "
372- "LET m0 = (FLOOR(d.at / @b4) * @b4) + @b5 "
372+ "LET m0 = (FLOOR(( d.at + @b5) / @b4) * @b4) - @b5 "
373373 "COLLECT group_slot=m0, complete_group=d.group "
374374 "AGGREGATE slot_avg = AVG(d.v) RETURN {at: group_slot, group: complete_group, v: slot_avg} )\n "
375375 "FOR d in m1 "
376376 "COLLECT group_slot=d.at, group_a=d.group.a, group_b=d.group.b "
377377 "AGGREGATE agg_val=avg(d.v) "
378378 "SORT group_slot RETURN {at: group_slot,group: { a: group_a, b: group_b }, v: agg_val}"
379379 )
380- assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : "a" , "b4" : 3600 , "b5" : 800 }
380+ assert bv == {"b0" : "foo" , "b1" : 1699913600 , "b2" : 1700000000 , "b3" : "a" , "b4" : 3600 , "b5" : 2800 }
381381 # use avg-factor
382382 q , _ = load_time_series ("ts" , "foo" , now - (24 * one_hour ), now , one_hour , avg_factor = 1000 )
383383 assert "slot_avg = AVG(d.v / @b" in q # factor divides average
0 commit comments