Запрос события непосредственно перед тем, как пользователь выполнил event_name = ‘app_remove’, используя BigQuery Firebase data

#sql #firebase #google-bigquery

# #sql #firebase #google-bigquery

Вопрос:

Мне нужна помощь в SQL-запросе в BigQuery. Я хочу знать, какое событие сделал пользователь, прежде чем он / она удалил приложение (event_name = ‘app_remove’)

Я пытаюсь получить ‘event_timestamp’, ‘event_name’, ‘event_params.key’, ‘event_value.string_value’ непосредственно перед тем, как пользователь запускает event_name = ‘app_remove’.

Мои данные выглядят так: (есть столбец с именем ‘user_pseudo_id’, который не отображается на рис.)

введите описание изображения здесь

Я использовал приведенный ниже запрос, чтобы получить ‘user_pseudo_id’, ‘event_params.key’, ‘event_value.string_value’, связанные с пользователями, которые выполнили event_name = ‘app_remove’.

     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’.

Любая помощь для меня будет высоко оценена.

Спасибо и с уважением, Шантану Джейн

Комментарии:

1. В ваших образцах данных нет события «app_remove».

2. Привет @GordonLinoff, на самом деле данные содержат миллиард строк, и я попытался получить скриншот app_remove, но вручную найти его очень сложно, поскольку событие происходило очень редко. раз.

Ответ №1:

Хммм … я подумываю об использовании логики массива;

 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
 

Комментарии:

1. Привет @Gordon, спасибо за такой быстрый ответ. Я использовал запрос и получил сообщение об ошибке — «Нераспознанное имя: p в [2:14]». Я не смог исправить ошибку. Было бы здорово, если бы вы могли помочь.

2. Привет @Gordon, большое спасибо за редактирование. Извините, что пишу еще раз, но теперь я получаю другую ошибку: «Имя поля event_name не существует в STRUCT<СТРОКА ключа, значение STRUCT<string_value СТРОКА, int_value INT64, float_value FLOAT64, …>> в [5:24]» Был бы очень признателен, если бы вы могли разобраться в этом..