在BQ(标准)中以yyyymmdd格式转换日期

时间:2018-06-14 10:57:28

标签: google-bigquery

平台: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,但我无法得到它。

谢谢大家。

2 个答案:

答案 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导出的表格而构建的,但是你的日期格式看起来是一样的,所以应该没问题。