Использование значений одной таблицы для запроса другой таблицы в BigQuery - PullRequest
0 голосов
/ 04 июня 2018

У меня есть две таблицы в BigQuery, одна из них представляет собой таблицу trip_times со схемой:

  1. trip_id (int)
  2. vehicle_id (строка)
  3. start (метка времени гггг-мм-дд чч: мм: сс)
  4. окончание (метка времени гггг-мм-дд чч: мм: сс)

Пример данных:

- journey_id¦ vehicle¦ start¦ finish - 1¦ car1¦ 2017-12-05 01:33:44 UTC¦ 2017-12-05 01:53:14 UTC - 2¦ car2¦ 2017-12-05 03:04:18 UTC¦ 2017-12-05 03:28:49 UTC

, а другая таблица расстояний со схемой:

  1. vehicle_id (строка)
  2. метка времени (метка времени гггг-мм-дд чч:мм: сс)
  3. значение (с плавающей точкой)

Пример данных:

- vehicle¦ timestamp¦ value - car3¦ 2016-08-30 17:36:52 UTC¦ 0.01635375 - car3¦ 2016-08-30 17:36:53 UTC¦ 0.02862375

Что я хочу сделать, это запросить расстояниев таблице и найдите максимальное и минимальное значение для каждой из строк поездки в таблице trip_times (с одним и тем же идентификатором транспортного средства и между отметками времени начала и окончания), чтобы в итоге получилась таблица, которую можно объединить с таблицей путешествий, и выглядеть следующим образом:

  1. trip_id
  2. max_distance_value
  3. min_distance_value

Как бы вы написали это в стандарте BigQueryили устаревший SQL?
Моя попытка ниже не даст никаких результатов.`

WITH
  distance_table AS (
  SELECT
    vehicle,
    timestamp,
    value
  FROM
    'project.trip_distance' ),
  journey_table AS (
  SELECT
    journey_id,
    vehicle,
    start,
    finish        
  FROM
    'project.journey_times')
SELECT
  MIN(distance_table.value)
FROM
  distance_table JOIN journey_table
  using (vehicle)
WHERE
  distance_table.vehicle = journey_table.vehicle
  AND distance_table.timestamp BETWEEN journey_table.start
  AND journey_table.finish

1 Ответ

0 голосов
/ 04 июня 2018

Если я правильно понимаю, это join и group by:

select j.journey_id, min(value), max(value)
from journey_times jt join
     vehicles v
     on jt.vehicle_id = v.vehicle_id and
        v.timestamp between jt.start and jt.finish
group by j.journey_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...