在 BigQuery 中减去最近 3 个月的数据
Posted
技术标签:
【中文标题】在 BigQuery 中减去最近 3 个月的数据【英文标题】:Subtracting last 3 months data in BigQuery 【发布时间】: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 个月。 谢谢。
【问题讨论】:
表格后缀是日期格式吗? 【参考方案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
【讨论】:
以上是关于在 BigQuery 中减去最近 3 个月的数据的主要内容,如果未能解决你的问题,请参考以下文章
从 Timestamp php 中减去 6 个月的最简单方法是啥