Redshift上的递归CTE

时间:2017-08-04 17:08:24

标签: join amazon-redshift

我有一个具有以下结构的表,其中包含两列:URL A和URL B.每当URL A变为非活动状态时,它都会重定向。 URL B记录重定向,否则为NULL。我现在有一个重定向发生超过1次的问题(让我们说多达100次)。我现在正尝试将最后一次重定向的值指定为最终指向上一次重定向的每个URL的唯一ID。

以下是一个例子:

URL-A URL-B
AAA   NULL
AAA   AAB
AAB   NULL
AAB   AAC
AAC   NULL

我希望它看起来像这样:

URL Unique-URL
AAA AAC
AAB AAC
AAC AAC

我知道我可以用几个连接和子查询来做到这一点。但是,我不确定有多少重定向,可能多达100个。我知道您可以使用Redshift上的递归CTE解决此问题 - 但是这些不允许。我的替代方案是什么?

1 个答案:

答案 0 :(得分:1)

拥有每个事件的用户ID和时间戳,您可以使用窗口函数来确定每个用户ID的最后一个重定向,然后将其连接回原始事件表,如下所示:

df['date']=pd.to_datetime((df['month']+df['year']),format='%m%Y') #Line 1
df['date']=df['date']=.dt.date               #Line 2