日常GA BigQuery数据

时间:2018-11-06 15:15:04

标签: google-analytics google-bigquery

我正在处理一些查询,以使用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;

1 个答案:

答案 0 :(得分:2)

我似乎还记得有这个问题并通过选择前一天和前一天的2天的ga_sessions以及前一天和当前日期的实时表来解决它。

这确保了查询不会出错,因为每天应该至少有一个表可用。

然后我刚刚从结果表中选择了前一天的行。