【发布时间】:2020-05-27 01:33:01
【问题描述】:
如果不能保证前面或后续的领先/滞后满足特定条件,如何编写有条件的领先/滞后?就我而言,我正在查看网站流量。
示例数据(prior_path 和prior_event 是目标字段,鉴于我的条件,我无法访问其prior_event)
+-----------+-----+-------+---------------------------------------+-------+------------------------------------+-------------+
| sessionid | hit | type | path | event | prior_path | prior_event |
+-----------+-----+-------+---------------------------------------+-------+------------------------------------+-------------+
| 1001 | 1 | event | www.stackoverflow.com | hover | | |
| 1001 | 2 | page | www.stackoverflow.com | | | hover |
| 1001 | 3 | event | www.stackoverflow.com | load | | |
| 1001 | 4 | event | www.stackoverflow.com | blur | | load |
| 1001 | 5 | event | www.stackoverflow.com | click | | blur |
| 1001 | 6 | page | www.stackoverflow.com/post/10 | | www.stackoverflow.com | click |
| 1001 | 7 | event | www.stackoverflow.com/post/10#details | offer | | |
| 1001 | 8 | page | www.stackoverflow.com/post/confirm | | www.stackoverflow.com/post/10 | offer |
| 1001 | 9 | page | www.stackoverflow.com/questions/10 | | www.stackoverflow.com/post/confirm | offer |
| 1001 | 10 | event | www.stackoverflow.com/questions/10 | exit | | |
+-----------+-----+-------+---------------------------------------+-------+------------------------------------+-------------+
prior_path:最后一个路径,其中 type = page 仅适用于页面点击类型 prior_event:最后一个事件,其中 type = 所有命中类型的事件
注意点击 8 和 9,“offer”事件会重复,因为它们会导致这些页面。
prior_path 看起来很简单
SELECT LAG(path) OVER (PARTITION BY sessionid, type ORDER BY hit) FROM my_table
但我不确定如何获取prior_event。
【问题讨论】:
标签: sql hive hiveql window-functions gaps-and-islands