【问题标题】:How to run a query to get results of last 12 months ( BigQuery)如何运行查询以获取过去 12 个月的结果 (BigQuery)
【发布时间】:2019-08-12 09:52:35
【问题描述】:

我想获取 Big Query 表中特定 ID 过去 12 个月的记录。我已从原始时间戳列中提取月份和年份作为单独的列。我尝试使用 date_add() 和 date_diff() 但我遇到了一些错误。我的数据集是这样的:

Month Year MonthName    ID
8     2018   August      1
9     2018   September   2
9     2017   September   3

我怎样才能做到这一点?

【问题讨论】:

    标签: sql google-cloud-platform google-bigquery bigquery-standard-sql


    【解决方案1】:

    我已从原始时间戳列中提取月份和年份作为单独的列

    我建议根据您的原始时间戳列进行 12 个月的过滤。
    假设它被命名为 ts - 下面是 BigQuery 标准 SQL

    WHERE DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 
    

    例如

    #standardSQL
    SELECT ts, id
    FROM `project.dataset.table`
    WHERE id = 1
    AND DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 
    

    【讨论】:

      【解决方案2】:

      一种方法是将年/月转换为自某个日期以来的月份。然后对当前日期执行相同操作:

      where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12
      

      这假设您没有未来的数据。同样的想法也适用于未来的日期(使用 =)。

      【讨论】:

        【解决方案3】:

        timestamp 被假定为 BQ 表的标准时间戳命名为时间标识符字段。因此,您可以像下面这样过滤以仅获取最近 12 个月的数据:

        WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-14
          • 1970-01-01
          相关资源
          最近更新 更多