BigQuery 中处理日内 GA 数据的最佳方式
Posted
技术标签:
【中文标题】BigQuery 中处理日内 GA 数据的最佳方式【英文标题】:Best Handle Intraday GA Data in BigQuery 【发布时间】:2018-11-21 05:16:39 【问题描述】:我有一个配置的谷歌分析原始数据导出到大查询。
社区中的任何人都可以建议查询日内数据的有效方法,因为我们注意到日内同步的问题(例如 15 分钟延迟),流数据在同步频率上呈指数增长。
例如:
每天 (T-1) 批处理数据 (ga_sessions_yyymmdd) 与 15-20GB 同步,记录 3.5M-5M。 另一方面,日内数据流(延迟 15 分钟)每天超过约 150GB,记录约 30M。https://issuetracker.google.com/issues/117064598
持久化和查询数据并不划算。
而且,这是产品错误还是预期行为,因为数据不能经济高效地用于指数增长的数据?
查询大查询的成本为每 TB 5 美元,流式插入的成本约为每 TB 50 美元
【问题讨论】:
【参考方案1】:在我看来,这不是错误,而是 Google Analytics 中数据结构的结果。
每一行都是一个会话,在每个会话中,您都有许多匹配项。由于我们不能等到会话完全完成,因此每次发生新的命中(或命中组)时,都需要将整个会话再次导出到 BQ。更新行在流系统中不是一个选项(至少在 BigQuery 中)。
我已经在带有 Session Windows 的 Google Dataflow 中创建了一些流管道(不确定它是否是 Google 内部使用的),我面临同样的困境:等待只导出一次聚合,或者连续导出并具有指数成长。
关于查询 ga_realtime_sessions 表的建议是:
只查询您真正需要的列(不选择 *); 将导出的视图与每日 ga_realtime_sessions_yyyymmdd 一起使用,它不会影响查询的大小,但会阻止您使用重复数据。【讨论】:
我相信除此之外我们没有其他更好的选择。谢谢以上是关于BigQuery 中处理日内 GA 数据的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 到 Hadoop 集群 - 如何传输数据?
bigQuery 和 GA-Premium 集成:从 GA 中的未过滤视图导出数据时,如何在 bigQuery 中使用 IP 过滤器(以排除内部流量)
在导出到 BigQuery 的 FirebaseAnalytics 数据中,有些事件的 ga_session_id 为空