我对BQ的查询是我每周运行,但并不总是在一周的同一天(有时在星期一,有时在星期二等)。
每周,我都需要查询过去两个日历周的数据:例如假设我们现在在CW 27(isoweek,星期一是第一天),我希望从CW 25的星期一到CW 26的星期日的数据。
FROM(TABLE_DATE_RANGE([xxx.ga_sessions_],DATE_ADD(CURRENT_TIMESTAMP(), - 14,' DAY'),DATE_ADD(CURRENT_TIMESTAMP(), - 1,' DAY&# 39;)))可以在星期一每周运行我的查询,但限制是我在不同的工作日运行它。
有没有人有任何想法?任何输入都非常感谢。
提前致谢!
答案 0 :(得分:1)
下面是BigQuery Legacy SQL,看起来你还在使用
#legacySQL
SELECT
<your fields here ...>
FROM (TABLE_DATE_RANGE([xxx.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -14 - DAYOFWEEK(CURRENT_TIMESTAMP()) + 2, 'DAY'),
DATE_ADD(CURRENT_TIMESTAMP(), -1 - DAYOFWEEK(CURRENT_TIMESTAMP()) + 2, 'DAY')
))
请注意,建议migrate to Standard SQL
使用标准SQL,您可以使用_TABLE_SUFFIX伪列上的过滤器实现与TABLE_DATE_RANGE相同的语义
见下面的例子
#standardSQL
SELECT
<your fields here ...>
FROM `xxx.ga_sessions_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%Y%m%d',DATE_ADD(CURRENT_DATE(), INTERVAL -14 - EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) + 2 DAY))
AND FORMAT_DATE('%Y%m%d',DATE_ADD(CURRENT_DATE(), INTERVAL -1 - EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) + 2 DAY))