计划更新 BigQuery 上的 Google 个分析数据集

Schedule update of Google Analytics dataset on BigQuery

我知道 Google Analytics 可以使用 GA 中的 BigQuery Linking 功能链接到 Bigquery。

但我遇到了随机安排的缺点。所以,它搞砸了我的 table 与这些 GA 数据的依赖关系,我在上午 9 点使用 DBT 设置这些数据——所以如果 GA 数据在上午 9 点以上更新,我的 table 将不会有今天的GA数据。

我的问题是:

  1. 有没有办法像 cronjob 那样安排更新的 GA 数据具有恒定的时间?
  2. 或者如果没有。在bigquery上更新GA数据后,DBT有没有办法运行作业?

不幸的是,Google 没有为从 Google Analytics 3 导出的 BigQuery 提供 SLA,如果您可以选择,最好的解决方案是迁移到 Google Analytics 4,这是几乎实时导出到 BigQuery,并且看起来更加健壮。在 the official Google support page.

上了解更多信息

我目前通过使用基于事件的触发器来解决这个问题,这些触发器查看 table 的元数据,或者检查昨天是否存在分片 table,然后继续下游作业,我相信您可以使用 DBT 实现类似的效果。

下面是一些示例 SQL 代码,它通过返回最大时间戳来检查昨天 Google 分析分片 table 是否存在:

SELECT MAX(cast(PARSE_DATE('%Y%m%d', SUBSTR(table_id,13)) as timestamp)) as max_date
FROM `my_ga_dataset.__TABLES__` 
WHERE table_id LIKE'%ga_sessions_%'
AND table_id NOT LIKE '%intraday%'
AND PARSE_DATE('%Y%m%d', SUBSTR(table_id,13))  >= CURRENT_DATE() -9

这适用于分片 tables,如果你想使用 table 元数据来获取上次 table 更新的 date/time,你可以使用 INFORMATION_SCHEMA: https://cloud.google.com/bigquery/docs/information-schema-tables