问题:我想使用_TABLE_SUFFIX从多个Google Analytics会话表中提取数据,但我想将后缀参数设置为"七天前"和"一天前"之间(即提取最近7天的数据)
当前语法(不起作用):
#StandardSQL
SELECT
date,
SUM (totals.visits) AS visits
FROM
`projectname.123456789.ga_sessions_*`
WHERE
_TABLE_SUFFIX BETWEEN
'DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL -7 DAY)' AND
'DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL -1 DAY)'
GROUP BY
date
ORDER BY
date ASC
Run Code Online (Sandbox Code Playgroud)
这给了我一条消息" 有效:此查询将在运行时处理0 B." 在我看来,语法没有错误,但BigQuery无法读取我的日期函数,因此无法将它们后缀为ga_sessions_*通配符
灵感:
BigQuery Cookbook有一个我基于此的遗留SQL示例:(https://support.google.com/analytics/answer/4419694?hl=zh-CN#7days)
#LegacySQL
SELECT
date,
SUM (totals.visits) AS visits
FROM
(TABLE_DATE_RANGE([73156703.ga_sessions_],
DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'),
DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
GROUP BY
date
ORDER BY
date ASC
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:(这不起作用)
使用DATE_SUB而不是DATE_ADD并使用CURRENT_DATE而不是CURRENT_TIMESTAMP:
WHERE
_TABLE_SUFFIX BETWEEN
'DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)' AND
'DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)'
Run Code Online (Sandbox Code Playgroud)
导致" 有效:此查询在运行时将处理0 B".
在DATE_SUB和CURRENT_DATE周围使用DATE_FORMAT以获取没有破折号的日期:
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))'
Run Code Online (Sandbox Code Playgroud)
导致" 有效:此查询在运行时将处理0 B".
尝试跳过他在DATE_SUB条款周围连字符
WHERE
_TABLE_SUFFIX BETWEEN
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND
DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
导致以下错误消息" 错误:参数类型的操作符BETWEEN没有匹配的签名:STRING,DATE,DATE.支持的签名:(ANY)BETWEEN(ANY)AND(ANY)"
提前致谢,
Mos*_*sky 14
Elliott的答案是正确的,但是如果你想从BigQuery中获得最大的性能来进行这种查询,而不是转换_TABLESUFFIX为DATE,你应该将CURRENT_DATE表达式转换为字符串:
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))
Run Code Online (Sandbox Code Playgroud)
你最后一次尝试几乎就在那里.您需要将字符串转换为日期才能在比较中使用它:
WHERE
PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) BETWEEN
DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND
DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8706 次 |
| 最近记录: |