我经常使用旧SQL在bigquery中过去N天(通常是14或30)的数据运行查询,如下所示:
SELECT
…
FROM
TABLE_DATE_RANGE([XXX_], DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), 0, 'DAY'))
WHERE
…
我想将此查询切换为使用标准SQL而不是旧版SQL。我知道如何使用通配符来表达XXX_YYYYMMDD
,我知道如何用XXX_2017*
来表达特定范围的日期,但我不知道如何表达相对范围,例如过去30天
如何将上述查询转换为标准SQL?
答案 0 :(得分:1)
看看这是否适合你:
SELECT
date
FROM `dataset.table_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
GROUP BY date
ORDER BY DATE
此示例中的通配符以"%Y%m%d"
格式选择日期。您可以选择哪种格式更适合您的通配符选择。