bigquery过去30天的结果

时间:2017-07-24 19:27:54

标签: sql google-bigquery legacy-sql

我正在尝试为连接到Google BigQuery的画面仪表板构建查询。我们有每月数据的表格,但我想在任何给定时间显示最近30天的数据(因此它必须跨越多个表格)。我当前的查询给出了错误“需要时间戳文字或显式转换为时间戳”。我一直在寻找有关如何转换为时间戳的一些帮助,但没有找到任何有用的东西。这是我的代码。

    SELECT
      DATE(date_time) AS date,
    FROM
      TABLE_QUERY(myTable, "date(concat(left(table_id,4),'-',right(table_id,2),'-','01')) >= '2017-06-01'")
    WHERE 
        DATE(date_time) >= DATE_ADD(day,-30, current_date()) 
        and   DATE(date_time) <= current_date()
    ORDER BY 
        date

任何有关如何使其工作的帮助将不胜感激。

注意:我们正在使用旧版SQL

2 个答案:

答案 0 :(得分:4)

使用Google自己的文档,您似乎需要反转DATE_ADD()函数中的参数。应使用以下三个参数调用该函数:

DATE_ADD(<timestamp>,<interval>,<interval_units>)

间隔单位是您引用的时间单位(日,小时,年等)

您收到错误的原因是Google正在尝试将day转换为某种date格式。

来源:Google Query Reference

引用文字:

  

DATE_ADD(时间戳,间隔,                    interval_units)

     

将指定的间隔添加到TIMESTAMP数据类型。可能   interval_units值包括YEAR,MONTH,DAY,HOUR,MINUTE和   第二。如果interval是负数,则减去间隔   来自TIMESTAMP数据类型。

     

示例:

     

SELECT DATE_ADD(TIMESTAMP(“2012-10-01 02:03:04”),5,“YEAR”);

     

返回:2017-10-01 02:03:04 UTC

     

SELECT DATE_ADD(TIMESTAMP(“2012-10-01 02:03:04”), - 5,“YEAR”);

     

返回时间:2007-10-01 02:03:04 UTC

答案 1 :(得分:0)

对于希望使用BigQuery Standard SQL执行相同操作的任何人,这将根据当前日期返回最近30天的数据。

https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#date_add

SELECT
  date,
FROM
  `<PROJECT>.<DATASET>.<TABLE>` 
WHERE
  Date >= DATE_ADD(CURRENT_DATE(), INTERVAL -30 DAY);
相关问题