【问题标题】:Firebase Cohorts in BigQueryBigQuery 中的 Firebase 同类群组
【发布时间】:2018-07-21 17:11:24
【问题描述】:

我正在尝试使用 BigQuery 复制 Firebase 同类群组。我尝试了来自这篇帖子的查询:Firebase exported to BigQuery: retention cohorts query,但我得到的结果没有多大意义。

我设法让 period_lag 0 的用户与我在 Firebase 中看到的相似,但是,其余数字看起来不正确:

结果:

缺少一个 period_lag(只看到 0,1 和 3 -> 没有 2)并且每个滞后期的用户计数看起来也不正确!我希望看到类似的东西:

Firebase 同类群组:

我很确定问题在于我如何将原始查询中的参数替换为 Firebase 中的参数。以下是我在原始查询中更新的部分:

#standardSQL
WITH activities AS (
  SELECT answers.user_dim.app_info.app_instance_id AS id,
    FORMAT_DATE('%Y-%m', DATE(TIMESTAMP_MICROS(answers.user_dim.first_open_timestamp_micros))) AS period
  FROM `dataset.app_events_*` AS answers
  JOIN `dataset.app_events_*` AS questions
  ON questions.user_dim.app_info.app_instance_id = answers.user_dim.app_info.app_instance_id
 -- WHERE CONCAT('|', questions.tags, '|') LIKE '%|google-bigquery|%' 

(...)

WHERE cohorts_size.cohort >= FORMAT_DATE('%Y-%m', DATE('2017-11-01'))
ORDER BY cohort, period_lag, period_label

所以我使用user_dim.first_open_timestamp_micros 而不是create_dateuser_dim.app_info.app_instance_id 而不是idparent_id。知道我做错了什么吗?

【问题讨论】:

    标签: firebase google-bigquery firebase-analytics


    【解决方案1】:

    我认为在如何以及将哪些数据检索到activities 表中的概念上存在误解。让我说明您链接的另一个 StackOverflow 问题中提出的案例与您尝试重现的案例之间的区别:

    • 在另一个问题中,answers.creation_date 指的是一个不固定的日期值,并且对于单个用户可以有不同的值。我的意思是,同一个用户可以在两个不同的日期发布两个不同的答案,这样,您最终会得到两个 activities 条目,例如:{[ID:user1, date:2018-01],[ID:user1, date:2018-02],[ID:user2, date:2018-01]}
    • 在您的问题中,answers.user_dim.first_open_timestamp_micros 的使用指的是过去固定的日期值,因为正如in the documentation 所述,该变量指的是用户第一次使用的时间(以微秒为单位)打开应用程序。该值是唯一的,因此,对于每个用户,您将只有一个 activities 条目,例如:{[ID:user1, date:2018-01],[ID:user2, date:2018-02],[ID:user3, date:2018-01]}

    我认为这就是您没有获得有关用户滞后留存信息的原因,因为您没有记录用户每次访问应用程序的时间,而只是记录他们第一次访问的时间。

    除了使用answers.user_dim.first_open_timestamp_micros,您应该从我之前共享的文档链接中的可用值中寻找另一个值,可能是event_dim.dateevent_dim.timestamp_micros,尽管您必须考虑到这些字段引用event 而不是 user,所以你应该先做一些预处理。出于测试目的,您可以使用一些publicly available BigQuery exports for Firebase


    最后,作为旁注,JOIN 一个表本身是没有意义的,所以关于你编辑的标准 SQL 查询,最好是:

    #standardSQL
    WITH activities AS (
      SELECT answers.user_dim.app_info.app_instance_id AS id,
        FORMAT_DATE('%Y-%m', DATE(TIMESTAMP_MICROS(answers.user_dim.first_open_timestamp_micros))) AS period
      FROM `dataset.app_events_*` AS answers
      GROUP BY id, period
    

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 1970-01-01
      • 2017-03-02
      • 2016-11-26
      • 2019-02-28
      • 1970-01-01
      • 2016-11-02
      • 2017-11-28
      • 1970-01-01
      相关资源
      最近更新 更多