首页 > 解决方案 > 使用 BigQuery Firebase 数据在用户执​​行 event_name = 'app_remove' 之前查询事件

问题描述

我需要 BigQuery 中的 SQL 查询方面的帮助。我想知道用户在卸载应用程序之前做了什么事件(event_name = 'app_remove')

我试图在用户触发 event_name = 'app_remove' 之前获取 'event_timestamp'、'event_name'、'event_params.key'、'event_value.string_value'。

我的数据如下所示:(图片中不可见名为“user_pseudo_id”的列)

在此处输入图像描述

我使用下面的查询来获取与执行 event_name = 'app_remove' 的用户关联的 'user_pseudo_id'、'event_params.key'、'event_value.string_value'。

    SELECT
TIMESTAMP_MICROS(event_timestamp),
user_pseudo_id,
event_name,
e.key,
e.value.string_value
FROM
  `privatedata.events_20201129`, unnest(event_params) as e
WHERE
user_pseudo_id in
(
SELECT
user_pseudo_id
FROM
 `privatedata.events_20201129`
WHERE
event_name = 'app_remove')

但是,我只想要在“app_remove”事件之前执行的那个事件(以及它的参数)。

对我的任何帮助将不胜感激。

谢谢和问候, Shantanu Jain

标签: sqlfirebasegoogle-bigquery

解决方案


嗯。. . 我正在考虑使用数组逻辑;

SELECT p.*, event_params[SAFE_OFFSET(n - 1)]
FROM (SELECT p.*,
             (SELECT MIN(n) 
              FROM unnest(event_params) ep WITH OFFSET n
              WHERE ep.event_name = 'app_remove'
             ) as app_remove_n
      FROM `privatedata.events_20201129` p
     ) p
WHERE app_remove_n IS NOT NULL

推荐阅读