我有两条流,一条是订单流,另一条是订单接受后预订所有出租车的流,另一条是预订所有出租车的流。
订单流:
订单号:string
创建时间:时间戳
区域id:string
出租车可用流:
出租车ID:list[string]
创建时间:时间戳
订单号:string
应用程序流程基本上是,一旦下了订单,系统会检查是否可以使用它,然后我们会找到用户可以选择的所有可用出租车,并显示给用户。
出租车可用流事件在订单事件后2分钟内创建。就是这样
timeCreated(Order) < timeCreated(taxi-available) < timeCreated(Order) + 2 Minutes
我想计算一个10分钟窗口的总数,在这里我想平均一个给定地区的所有出租车数量
我的sql如下所示:
SELECT o.region_id, avg(length(ta.taxis))
FROM order o JOIN taxi_available ta
ON o.order_id=ta.order_id
AND
ta.timeCreated BETWEEN o.timeCreated AND o.timeCreated + INTERVAL '2' Minute
GROUP BY TUMBLE(o.timeCreated, INTERVAL '10' Minute), o.region_id
我想知道这种方法有什么问题,时间窗口联接对聚合有效吗??
我怀疑的是
似乎翻滚(o.timecreated,interval'10'minute)正在两个流上运行,并使我的查询计算两个流上相同10分钟数据的平均值,
i、 e.假设订单流从2:00到2:10,那么上述计算应该从可用流的2:00到2:12,但是两个流都从2:00到2:10
在这种情况下,订单流的最后2分钟中出现的事件(将发现接下来2分钟中出现的出租车可用事件)可能找不到匹配的行,并且该平均值实际上不是10分钟订单的平均值,而不是10分钟!!,
如果这是真的??我们能做些什么?
暂无答案!
目前还没有任何答案,快来回答吧!