如何解决使用CURRENT_DATE提取通配符表的子集
我有一组表,它们都以相同的字符串类型日期格式结尾,例如
response_logs.tablename_20200827
response_logs.tablename_20200826
response_logs.tablename_20200825
SELECT
column1,column2,column3
FROM
response_logs.tablename_*
这已经工作了很长时间,但是现在数据集变得太大而无法提取整个集合。我希望能够根据当前日期仅提取过去几周的数据。我已经成功地手动设置了表后缀日期:
SELECT
column1,column3
FROM
response_logs.tablename_*
WHERE _table_suffix>"20200824"
但是我希望能够自动执行此过程(查询已安排好并在没有我通常观察的情况下运行)。像这样:
SELECT
column1,column3
FROM
response_logs.tablename_*
WHERE _table_suffix>(CURRENT_DATE()-7)
如何格式化查询的(CURRENT_DATE())部分,使其仅提取最后几周的表格?
谢谢!
解决方法
减去天数以获取时间窗口,然后将日期格式设置为与后缀相同的格式。
select _table_suffix as suffix,count(*) as ct
from `project.dataset.table_*`
where _table_suffix >= format_date('%Y%m%d',date_sub(current_date(),interval 7 day))
group by 1
,
它可以用于日期算术和FOMAT_DATE()
吗?
SELECT column1,column2,column3
FROM `response_logs.tablename_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE,INTERVAL 7 DAY))
请注意,文档建议使用反引号将表名和通配符括起来,我相应地修改了查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。