平台:BigQuery(标准)
我每天都有一个分区表(table_name_20180101),我正在尝试编写一个查询,这样,在任何给定的日子里,它只适用于前7天的表。
(所以,例如,今天我想让它运行:table_name_20180607,table_name_20180608,一直到_20180613)
我试图通过类似
的语法来达到这个结果FROM
`table_name_*` where _table_suffix > (tables up to 7 days ago)
有没有人有关于如何获得这个的建议? 我想尝试以YYYYMMDD格式转发Current_Date(),然后减去7,但我无法得到它。
谢谢大家。
答案 0 :(得分:2)
对于BigQuery Standard SQL
FROM `table_name_*`
WHERE _table_suffix > FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))
如果您需要排除当前日期,可以使用
FROM `table_name_*`
WHERE _table_suffix BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
答案 1 :(得分:0)
您可以使用以下格式的DATE_SUB
来实现动态回溯窗口,这是滚动7天的示例:
FROM `mydata.ga_sessions_20*`
WHERE parse_date('%y%m%d', _table_suffix) between
DATE_sub(current_date(), interval 7 day) and
DATE_sub(current_date(), interval 1 day)
这是为在BigQuery中使用GA导出的表格而构建的,但是你的日期格式看起来是一样的,所以应该没问题。