上下文是我们有一个用户 ID 和一个事务 ID,但有时用户 ID 更改但事务 ID 保持不变(当两者都应该是常量时),由于客户端设置,有时事务 ID 更改但用户 ID 没有(所以我们不能只使用事务ID)。
所以我们想要得到一些可以用作实际 ID 的东西。新列(即实际 ID)仅用于对行进行分组,因此它可以是任意(唯一)值。顺序根本不重要。
例子:
| userid | transactionid |
|--------|---------------|
| A | 1 |
| A | 2 |
| A | 3 |
| B | 2 |
| B | 2 |
| C | 4 |
| D | 5 |
| D | 5 |
| D | 6 |
| E | 6 |
| E | 7 |
| F | 4 |
可能变成:
| userid | transactionid | actualid |
|--------|---------------|----------|
| A | 1 | A |
| A | 2 | A |
| A | 3 | A |
| B | 2 | A |
| B | 2 | A |
| C | 4 | C |
| D | 5 | E |
| D | 5 | E |
| D | 6 | E |
| E | 6 | E |
| E | 7 | E |
| F | 4 | C |
我们使用的是 Presto,所以有一些限制(没有临时表,聚合查询中没有 DISTINCT 等)
在 Python 中使用 for 循环的解决方案如下所示:http: //nbviewer.ipython.org/urls/gist.githubusercontent.com/jamesmcm/2554d5d4498b5d46d42d/raw/587ff552c34027e85ee199d5d8e5cb192e5550d1/gistfile1.txt
但我们需要 Presto 的解决方案。
这最初是在 Gist 上写的:https ://gist.github.com/jamesmcm/9b9a559eb9f69405c04a
如果您想要表格的正确格式。