首页 > 解决方案 > BigQuery 如何以 30 分钟的延迟处理一个小时的数据?

问题描述

大家好,使用此查询获取项目的所有工作,但假设我在中午 12:00 运行此查询,它应该从 10:30 到 11:30 获取数据,但我还没有弄清楚 where 子句在为了实现这一点,任何想法将如何实施?

           SELECT
           creation_time,
           start_time,
           end_time,
           total_bytes_processed,
           query
           FROM `project-id.region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
           where end_time > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -1 hour )  AND job_type = "QUERY"
           Group BY creation_time, start_time,end_time ,job_id, total_bytes_processed, query
           ORDER BY total_bytes_processed DESC

标签: google-bigquery

解决方案


如果 CURRENT_TIMESTAMP() 为 12 并且您正在寻找在 10:30 到 11 之间创建的作业,那么您应该使用 BETWEEN 运算符。

SELECT
  creation_time,
  start_time,
  end_time,
  total_bytes_processed,
  query
FROM
  `YOURPROJECT.region-eu.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE
  end_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 MINUTE) 
           AND     TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 MINUTE) 
  AND job_type = "QUERY"
GROUP BY
  creation_time,
  start_time,
  end_time,
  job_id,
  total_bytes_processed,
  query
ORDER BY
  total_bytes_processed DESC

推荐阅读