временное окно объединяется, чтобы агрегировать данные по падающему окну фиксированного размера в мгновение ока - PullRequest
0 голосов
/ 22 марта 2020

У меня есть 2 потока, один поток заказов, другой для бронирования всех такси, доступных для бронирования после принятия заказа, и другой для всех заказанных такси.

Поток заказов:

  1. Order_id: строка

  2. timeCreated: Отметка времени

  3. region_id: строка

Доступный поток такси :

  1. taxi_ids: list [string]

  2. timeCreated: timestamp

  3. Order_id: string

Поток приложений, в основном, после размещения заказа, система проверяет, можно ли его принять, и затем мы находим все доступные такси, из которых пользователь может выбрать, которые показываются пользователю. .

событие потока, доступного для такси, создается после события заказа на следующие 2 минуты. то есть

timeCreated(Order) < timeCreated(taxi-available) < timeCreated(Order) + 2 Minutes

Я хочу рассчитать агрегат для 10-минутного окна, где я хотел бы усреднить все нет. такси доступно для данного region_id

Мой 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

Мне бы хотелось знать, что не так в этом подходе. Работает ли объединение временного окна для агрегатов? ?

Я сомневаюсь, что

кажется, что Tumble (o.timeCreated, INTERVAL '10' Minute) работает в обоих потоках и заставляет мой запрос вычислять среднее значение для одних и тех же 10-минутных данных в обоих ,

то есть, скажем, поток заказов от 2: 00 до 2: 10 , тогда приведенное выше вычисление должно занять 2: 00 до 2: 12 из потока taxi_available, но вместо этого потребовалось от 2: 00 до 2: 10 для обоих потоков

В этом случае наступают события в последние 2 минуты потоков заказов (которые обнаружат доступные для такси события в ближайшие 2 минуты) может не найти подходящую строку, и на самом деле это среднее значение не для заказов на 10 минут, а меньше, чем на 10 минут !! !!,

Если это правда ?? что для этого можно сделать?

...