【问题标题】:SQL Query to find users that install and uninstall an App on the same daySQL查询查找同一天安装和卸载应用程序的用户
【发布时间】:2018-08-19 20:23:09
【问题描述】:

我正在尝试使用 Google BigQuery 中 Firebase Analytics 中的数据查找在同一天安装和卸载该应用的用户

这是我到目前为止的地方。 我有一个查询给我安装或卸载应用程序的用户(或 app_instance_id):

SELECT event.date,
user_dim.app_info.app_instance_id,
event.name
FROM `app_name.app_events_20180303`,
UNNEST(event_dim) AS event
WHERE (event.name = "app_remove" OR event.name = "first_open")
ORDER BY app_instance_id, event.date

它给了我以下结果,我可以看到第 1 行和第 2 行是安装和卸载应用程序的同一用户:

我尝试使用

修改之前的查询
WHERE (event.name = "app_remove" AND event.name = "first_open")

给出:查询返回零记录。

您对如何实现这一目标有任何建议吗?谢谢。

【问题讨论】:

  • 啊啊啊痛苦!屏幕截图杀死每天!此外,tour 是强制性的!
  • 先安装再卸载或先卸载再安装都可以吗?

标签: firebase google-bigquery


【解决方案1】:

首先,值得注意的是 iOS 不会产生 app_remove,因此此查询仅计算经历安装/卸载模式的 Android 用户。

我创建了一个发出first_openapp_remove 的用户子集,并按日期对这些条目进行计数。我只保留了用户在一天内安装和删除应用程序的次数相同(大于零)的情况。

然后我统计了不同的用户。

SELECT COUNT(DISTINCT(user_id)) as transient_user_count
FROM (
    SELECT event_date,
    user_id,
    COUNT(if(event_name = "first_open", user_id, NULL)) as user_first_open,
    COUNT(if(event_name = "app_remove", user_id, NULL)) as user_app_remove
    FROM `your_app.analytics_123456.events_*`
--     WHERE (_TABLE_SUFFIX between '20191201' and '20191211')
    GROUP BY user_id, event_date
    HAVING user_first_open > 0 AND user_first_open = user_app_remove
)

如果您不能依赖user_id,那么documentation 表明您可以依赖user_pseudo_id

【讨论】:

    【解决方案2】:

    通常我们可以自己加入表格来找出这样的结果,比如:

    选择 t1.date, t1.app_instance_id
    FROM event 作为 t1,event 作为 t2
    WHERE t1.date = t2.date and t1.app_instance_id = t2.app_instance_id and t1.name = "app_remove" and t2.name = "first_open"
    ORDER by t1.app_instance_id, t1.date

    【讨论】:

      【解决方案3】:

      试试这个,虽然我没有测试过;

      SELECT date,
             app_instance_id
      FROM 
      (SELECT event.date,
      user_dim.app_info.app_instance_id,
      event.name
      FROM `app_name.app_events_20180303`,
      UNNEST(event_dim) AS event
      WHERE (event.name = "app_remove" OR event.name = "first_open"))
      GROUP BY app_instance_id, date
      HAVING COUNT(*) = 2
      ORDER BY app_instance_id, date
      

      【讨论】:

      • 我投了赞成票,但因为我的声望不到 15 人,所以说他们注意到了,但没有公开显示...
      猜你喜欢
      • 2021-01-06
      • 2012-03-01
      • 2012-12-01
      • 2014-08-11
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多