BigQuery查询GA360的ga_sessions表时是否自动包含日内表数据?
GA 360 BigQuery查询是否自动包含日内表?
好问题!这是很多使用GA 360 BigQuery导出的用户都会踩的小坑,我来给你讲清楚:
核心结论
不会自动包含。你的查询SELECT ... FROM dataset.ga_sessions_2018* WHERE _TABLE_SUFFIX BETWEEN "0401" AND ...只会匹配以ga_sessions_2018开头的永久分区表(也就是ga_sessions_YYYYMMDD格式的表),而日内表的命名是ga_sessions_intraday_YYYYMMDD,前缀和永久表不一样,所以完全不会被通配符匹配到。
怎么才能包含日内表?
有两种常用方案,你可以根据自己的需求选择:
方案1:用宽泛通配符匹配两种表,通过后缀筛选日期
把表名的通配符改成ga_sessions*,这样既能匹配永久表,也能匹配日内表,然后调整_TABLE_SUFFIX的条件,同时覆盖两种表的后缀格式:
SELECT date, visitId, totals.transactions FROM `dataset.ga_sessions*` WHERE -- 匹配永久表的后缀:YYYYMMDD (_TABLE_SUFFIX BETWEEN '20180401' AND '20180430') OR -- 匹配日内表的后缀:intraday_YYYYMMDD,提取日期部分做筛选 (_TABLE_SUFFIX LIKE 'intraday_201804%' AND PARSE_DATE('%Y%m%d', SUBSTR(_TABLE_SUFFIX, 10)) BETWEEN DATE('2018-04-01') AND DATE('2018-04-30'))
方案2:用UNION ALL合并永久表和日内表
这种方式逻辑更清晰,适合你明确知道需要包含哪几天日内表的场景:
-- 查询过去30天的永久分区表 SELECT date, visitId, totals.transactions FROM `dataset.ga_sessions_2018*` WHERE _TABLE_SUFFIX BETWEEN '20180401' AND '20180430' UNION ALL -- 加入需要的日内表(比如过去两天的) SELECT date, visitId, totals.transactions FROM `dataset.ga_sessions_intraday_20180429` UNION ALL SELECT date, visitId, totals.transactions FROM `dataset.ga_sessions_intraday_20180430`
额外提醒
日内表的数据最终会在当天结束后的几个小时内,同步到对应的永久分区表中。所以如果你的查询是在次日下午或更晚执行,其实可以只查永久表就能拿到完整数据;但如果是在当天或者次日早间(同步未完成时),就必须包含日内表才能获取到最新的访问数据。
内容的提问来源于stack exchange,提问作者Balkan
相关产品推荐
相关产品推荐

