sql—将记录与前一个匹配

x3naxklr  于 2021-07-15  发布在  Hadoop
关注(0)|答案(0)|浏览(196)

我正在使用hadoopimpala,但我可能可以翻译ansi或其他sql。hadoop确实有一些常用的表表达式,我相信在这里会有所帮助。
我有一张发给客户的邮件表。发送和打开事件都有记录。一种特定类型的消息可以发送多次(可以考虑多个订单的订单确认),并且可以每次打开多次。每个记录都有一个时间戳。没有字段表明特定的打开事件与发送的特定消息相关-即,如果发送了多个订单确认,而只有一个打开的事件,我无法确定哪个打开了,我想我只能接受它。
我想收集一些关于这些信息的指标。我将假设一个打开的事件与该电子邮件类型的最新发送事件相关。收集给定电子邮件类型(如订单确认)从发送到打开的平均时间的最佳方法是什么?记住有上千万条记录,但是如果有帮助的话,我可以把“回顾”时间缩短到60天,或者如果有帮助的话,因为60天之后他们不太可能打开它。
字段包括:

email_type (such as 'order confirmation' or 'order cancelled')
recipient
timestamp
event_type (such as 'send' or 'open')

下面是一个按时间顺序排列的简单示例,所有相同的电子邮件类型的订单确认和相同的收件人。

1 - order confirmation - sent -- we'll assume that this was never opened because there's another send event before any open
2 - order confirmation - sent
3 - order confirmation - open -- we'll assume that this open is of record #2, the most recent send
4 - order confirmation - open -- we'll just ignore this open since it was already opened in record #3
5 - order confirmation - sent
6 - order confirmation - open -- this should be associated with record #5

加分:基于这些假设,我能指出记录#1从未打开过吗?
非常感谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题