我正在尝试使用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的用户:
我曾尝试使用
修改上一个查询WHERE (event.name = "app_remove" AND event.name = "first_open")
给出:查询返回零记录。
您对如何实现这一点有什么建议吗?感谢。
答案 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_open
和app_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