我正在处理一些查询,以使用BigQuery中的Google Analytics(分析)数据来评估每日的效果。目前,我的项目是使用来自GA的数据流设置的。问题在于,昨天的表ga.us.ga_sessions_20181105
直到深夜的某个时候才创建。
在创建昨天的表格之前,前一天的实时视图ga.us.ga_realtime_sessions_view_20181105
仍然存在。
有没有一种方法可以查询昨天的表和昨天的实时视图,并且如果尚未写入昨天的表,还可以处理未找到表的错误?
类似这样的东西:
SELECT
date,
SUM(totals.visits) AS visits
FROM
-- If this table doesn't exist yet
TABLE_DATE_RANGE([ga:us.ga_sessions_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY')),
-- Query this view instead
TABLE_DATE_RANGE([ga:us.ga_realtime_sessions_view_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'))
WHERE
TIME(DATE_ADD(SEC_TO_TIMESTAMP(visitStartTime), -6, 'HOUR')) <= TIME(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'))
GROUP BY
date;
解决方案: 感谢@Bobbylank,我只是在同一查询中选择两个表:
SELECT
date,
SUM(totals.visits) AS visits
FROM
TABLE_DATE_RANGE([ga:us.ga_sessions_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY')),
TABLE_DATE_RANGE([ga:us.ga_realtime_sessions_view_],
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'),
DATE_ADD(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'), -1, 'DAY'))
WHERE
TIME(DATE_ADD(SEC_TO_TIMESTAMP(visitStartTime), -6, 'HOUR')) <= TIME(DATE_ADD(CURRENT_TIMESTAMP(), -6, 'HOUR'))
GROUP BY
date;
答案 0 :(得分:2)
我似乎还记得有这个问题并通过选择前一天和前一天的2天的ga_sessions以及前一天和当前日期的实时表来解决它。
这确保了查询不会出错,因为每天应该至少有一个表可用。
然后我刚刚从结果表中选择了前一天的行。