每天应将Google Analytics数据导出到Big Query 3次。我试图确定在ga_sessions_intraday_表中提供检测新数据的有效方法,并在BQ中运行查询以提取新数据。
我最好的想法是每小时运行一次SQL查询来轮询ga_sessions_intraday_。我会跟踪最大的visitStartTime(在某处存储状态),如果在ga_sessions_intraday_中显示新的最大visitStartTime,那么我将运行我的完整查询。
这种方法的问题是我需要存储有关max visitStartTime的状态。我希望更简单。
GA Big Query是否有更好的方式告诉ga_sessions_intraday_中有新数据可用?某种事件会引发火灾?我是否使用表格的最后修改日期(但我需要跟踪要运行的时间窗口)?
先谢谢你的帮助, 凯文
答案 0 :(得分:5)
表上的最后修改时间可能是此处的最佳方法(并且比发出探测查询便宜)。我不相信有任何其他信令机制来传递数据。
如果完整查询的运行速度超过轮询间隔,则可能只需使用派生表的修改时间来保存数据(并在输出表比输入表更旧时更新)。
Metadata queries是免费的,因此您甚至可以在查询中嵌入大部分逻辑:
SELECT
(
SELECT
MAX(last_modified_time)
FROM
`YOUR_INPUT_DATASET.__TABLES__`) >
(
SELECT
MAX(last_modified_time)
FROM
`YOUR_OUTPUT_DATASET.__TABLES__`) need_update
如果输出数据集中混合了表,则可以更具选择性(使用WHERE子句)来筛选您检查的表。
如果您需要一个方便的地方来运行此调度逻辑(不是开发人员的工作站),您可以考虑one of my previous answers。 (简短版本:Apps脚本非常简洁)
您还可以考虑在BigQuery的public issue tracker上提交“实体化视图”或“预定查询”的功能请求。我没有看到现有的快速浏览条目,但我在过去听到过类似的请求。
我不确定Google Analytics小组如何处理功能请求,但在交付新一批Google Analytics数据时发布pubsub通知似乎也很有用。