SQL Query查找在同一天安装和卸载应用程序的用户

时间:2018-03-11 20:20:20

标签: firebase google-bigquery

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

这是我到目前为止的地方。 我有一个查询,它给了我安装或卸载App的用户(或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行是安装和卸载App的用户:

enter image description here

我曾尝试使用

修改上一个查询
WHERE (event.name = "app_remove" AND event.name = "first_open")

给出:查询返回零记录。

您对如何实现这一点有什么建议吗?感谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

SELECT t1.date,t1.app_instance_id
event作为t1,event作为t2
WHERE t1.date = t2.date和t1.app_instance_id = t2.app_instance_id和t1.name =“app_remove”和t2.name =“first_open”
通过t1.app_instance_id,t1.date

订购

答案 2 :(得分:0)

首先,值得注意的是 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