BigQuery - подсчитывает количество строк, пока не будет достигнута заданная c строка. - PullRequest
0 голосов
/ 02 августа 2020

Я новичок в программировании и stackoverflow, поэтому извиняюсь, если мои вопросы звучат глупо.

У меня есть данные Google Analytics в BigQuery, из которых я пытаюсь сделать выводы. Я пытаюсь посмотреть на каждого пользователя и его поведение при просмотре.

В частности, я хочу подсчитать количество событий «просмотр продукта» перед их ПЕРВЫМ событием «добавить в корзину».

В прилагаемом примере он отсортирован по возрастанию метки времени, и возвращаемое значение будет состоять из 12 событий «просмотр продукта» перед их первым событием «добавить в корзину».

Как мне получить значение для каждого человека пользователь? Используемый код указан ниже:

SELECT 
  PARSE_DATE('%Y%m%d', Date) AS Date,
  fullVisitorId as UserID,
  hits.eventInfo.eventCategory,
  hits.eventInfo.eventAction as eventaction,
FROM `table_name`, UNNEST (hits) AS hits
WHERE hits.eventInfo.eventCategory IS NOT NULL
  AND hits.eventInfo.eventCategory = 'Ecommerce'
  AND hits.eventInfo.eventAction IN ('Product View', 'Add to Cart')
ORDER BY hits.time ASC

Заранее спасибо.

Результаты запроса

1 Ответ

0 голосов
/ 02 августа 2020

Я хочу подсчитать количество событий «просмотр продукта» перед их ПЕРВЫМ событием «добавить в корзину».

Вы можете рассчитать это значение с помощью оконных функций:

SELECT userId, seqnum - 1
FROM (SELECT t.*, hits,
             ROW_NUMBER() OVER (PARTITION BY ut.userId ORDER BY h.time) as seqnum,
             ROW_NUMBER() OVER (PARTITION BY ut.userId, eventAction ORDER BY h.time) as seqnum_ea
      FROM `table_name` t CROSS JOIN
           UNNEST(t.hits) AS hits
      WHERE hits.eventInfo.eventCategory IS NOT NULL AND
            hits.eventInfo.eventCategory = 'Ecommerce' AND
            hits.eventInfo.eventAction IN ('Product View', 'Add to Cart')
     ) t
WHERE hits.eventInfo.eventAction = 'Add to Cart' AND seqnum_ea = 1;
...