D8LooPFocus modeCODE WORKSPACE
Return user_id, event_id, event_name, event_time, and event_sequence: a per-user sequence number ordered deterministically. Order by user_id, event_sequence.
ROW_NUMBER partitioned by user_id, ordered by event_time, then ingested_at, then event_id.
Sample input
| event_id | user_id | event_name | event_time |
|---|---|---|---|
| 1 | 1 | view | 2026-01-01 03:30:00 |
| 2 | 1 | checkout | 2026-01-01 04:10:00 |
| 6 | 1 | refund | 2026-01-03 18:00:00 |
| 3 | 2 | view | 2026-01-01 22:15:00 |
| 4 | 2 | checkout | 2026-01-02 00:30:00 |
| 5 | 3 | view | 2026-01-02 05:00:00 |
Expected output
| user_id | event_id | event_name | event_time | event_sequence |
|---|---|---|---|---|
| 1 | 1 | view | 2026-01-01 03:30:00 | 1 |
| 1 | 2 | checkout | 2026-01-01 04:10:00 | 2 |
| 1 | 6 | refund | 2026-01-03 18:00:00 | 3 |
| 2 | 3 | view | 2026-01-01 22:15:00 | 1 |
| 2 | 4 | checkout | 2026-01-02 00:30:00 | 2 |
| 3 | 5 | view | 2026-01-02 05:00:00 | 1 |
Constraints
Use ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY event_time, ingested_at, event_id) so ties are broken deterministically. Order by user_id, event_sequence.
Expected skills
Deterministic ordering with tie-breakers and per-entity sequencing.
Run the SQL query to inspect preview rows.