使用具有相对日期范围和标准SQL的Bigquery Table通配符

时间:2017-07-12 20:31:00

标签: google-bigquery

我经常使用旧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?

1 个答案:

答案 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"格式选择日期。您可以选择哪种格式更适合您的通配符选择。