【问题标题】:Subtracting last 3 months data in BigQuery在 BigQuery 中减去最近 3 个月的数据
【发布时间】:2020-08-20 17:06:11
【问题描述】:

在 BigQuery 中,我正在寻找如何减去过去 3 个月的数据。 这是我目前的想法,但这包括本月的数据,因为它使用 CURRENT_DATE()。

SELECT
*
FROM
ga_123456
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 36 MONTH))
  AND FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))

假设今天是 8 月 20 日,我正在查找 5 月 1 日到 7 月 31 日之间的日期,这样就可以找到前 3 个月。 谢谢。

【问题讨论】:

  • 表格后缀是日期格式吗?

标签: google-bigquery


【解决方案1】:

以下是 BigQuery 标准 SQL

假设你的表名是 `ga_YYYYMMDD

#standardSQL
SELECT *
FROM ga_*
WHERE _TABLE_SUFFIX
  BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 3 MONTH)) 
  AND FORMAT_DATE('%Y%m%d', DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 DAY))  

【讨论】:

  • 要获取当前月份的数据,请将第二个子句中的 MONTH 更改为 DAY:AND FORMAT_DATE('%Y%m%d', DATE_SUB(DATE_TRUNC(CURRENT_DATE(), DAY), INTERVAL 1 DAY))
【解决方案2】:

如果 _TABLE_SUFFIX 是日期格式:

SELECT * FROM ga_123456

WHERE DATEPART(month,_TABLE_SUFFIX) > DATEPART(month, DATEADD(month, -3, getdate()))
AND DATEPART(yyyy,  _TABLE_SUFFIX) > DATEPART(yyyy, DATEADD(month, -3, getdate()))

否则,使用 CONVERT() 函数调整 _TABLE_SUFFIX

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多