3

コンテキストは、ユーザー ID とトランザクション ID がありますが、クライアントの設定により、ユーザー ID が変更されてもトランザクション ID が同じままになる場合があり (両方が一定である必要がある場合)、トランザクション ID が変更されてもユーザー ID が変更されない場合があります (したがって、 transactionid だけを使用することはできません)。

そのため、実際の 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 ループを使用するソリューションを次に示します。

しかし、Presto のソリューションが必要です。

これはもともとここの Gist に書かれていました: https://gist.github.com/jamesmcm/9b9a559eb9f69405c04a

表の適切な書式設定が必要な場合。

4

2 に答える 2