【问题标题】:Using one table's values to query another table in BigQuery在 BigQuery 中使用一个表的值查询另一个表
【发布时间】:2018-11-14 03:17:10
【问题描述】:

我在 BigQuery 中有两个表,一个是带有架构的 Journey_times 表:

  1. journey_id (int)
  2. vehicle_id(字符串)
  3. 开始(时间戳 yyyy-mm-dd hh:mm:ss)
  4. 完成(时间戳 yyyy-mm-dd hh:mm:ss)

样本数据:

- 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. 时间戳(时间戳 yyyy-mm-dd hh:mm:ss)
  3. 值(浮点数)

样本数据:

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

我想要做的是查询距离表并找到旅程时间表中每个旅程行的最大值和最小值(具有相同的车辆 ID 并且在开始和结束时间戳之间)以得到一个表可以加入到旅程表中,如下所示:

  1. journey_id
  2. 最大距离值
  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

【问题讨论】:

  • 到目前为止你尝试过什么?请编辑您的问题以显示您遇到问题的代码的Minimal, Complete, and Verifiable example,然后我们可以尝试帮助解决具体问题。你也可以阅读How to Ask。顺便说一句,像现在这样回答像你这样的问题 - 在 SO 上被认为是一个非常糟糕的品味,所以请考虑更新它并在提问之前展示一些解决它的努力
  • 样本数据和期望的结果真的很有帮助。
  • 抱歉,@MikhailBerlyant,感谢您提供的链接。我曾经(错误地)认为我之前的尝试是离谱的,不会有太大用处。尽我所能清晰地格式化示例值。 Gordon Linoff 代码正是我要找的,我只是把问题复杂化了。我的提交仍然低于标准吗?

标签: sql google-bigquery


【解决方案1】:

如果我理解正确,这是joingroup 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;

【讨论】:

  • 感谢您的提交,尽管我没有提供之前的代码示例或示例数据。我把这个问题复杂化了,你的提交是完美的。进行了一次几乎相同的尝试,但没有奏效,让我觉得我只是不懂 SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 2020-06-14
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
相关资源
最近更新 更多