bigquery-计算行数,直到到达特定行为止

hkmswyz6  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(354)

我是新的编码和堆栈溢出所以道歉,如果我的问题听起来愚蠢。
我在bigquery中有google分析数据,我正试图从中获取见解。
我要做的是观察每个用户在浏览时的行为。
具体来说,我想在第一次“添加到购物车”事件之前计算“产品视图”事件的数量。
在所附的示例中,它按时间戳升序排序,返回的值将是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

先谢谢你。

tp5buhyn

tp5buhyn1#

我想在第一个“添加到购物车”事件之前计算“产品视图”事件的数量。
可以使用窗口函数计算此值:

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;

相关问题