Teradata 数据库
我对此进行了粗略的处理。我有一个数据集,我想创建一个客户旅程。规则是第一笔交易是一次旅程。至少 30 天后的下一笔交易是一次旅程。至少 30 天后的下一笔交易也是一次旅程。我无法访问编程,只能进行常规查询。
有几种情况。 客户在数据集中只有 1 个交易。由于它是唯一的,因此将其标记为旅程。
客户在 5 天内进行了 2 笔交易。第一个是旅程,第二个不是,因为它是在 30 天内。
客户有 2 笔交易。 1/1 和 2/5。它们相隔 > 30 天,因此每个都被标记为一次旅程。
客户有 3 笔交易。 1/1、1/8、2/5。第一个和第三个是旅程,第二个不是(因为它在之前标记的旅程的 30 天窗口内)。
我已经尝试了所有方法,但似乎总有一些情况不起作用。
我有可以写下来的逻辑,但我不知道如何在 teradata 中做到这一点。
这有效,但它只比较前一行。如果我将其更改为无界,它将查看给定序列的所有行 - 我只需要它返回到前 30 天结束。
WHEN RUNNING_SUM_FLOAT=0 THEN 'Y'
WHEN RUNNING_SUM_FLOAT - MIN(RUNNING_SUM_FLOAT)
OVER (partition by sequence_id ORDER BY trans_idx
ROWS BETWEEN 1 PRECEDING and 1 PRECEDING) >=30
THEN 'Y'
ELSE 'N'
END as journey_flag