簡體   English   中英

通過 SQL (Bigquery) 獲取每位用戶每天的最新余額

[英]Get latest balance by day per user via SQL (Bigquery)

我在下面有一個示例表:

+---------------------+---------+--------+
| timestamp           | id      | balance|
|---------------------+---------+--------|
| 2022-08-01 00:00:00 | 1       | 0.01   |
| 2022-08-01 00:00:00 | 2       | 0      | 
| 2022-08-02 00:00:00 | 2       | 0.005  |
| 2022-08-02 07:00:00 | 2       | 0.5    |
| 2022-08-02 07:00:00 | 1       | 0.15   |
| 2022-08-03 00:00:00 | 1       | 0.02   |
| 2021-08-03 01:00:00 | 1       | 0.03   |
+---------------------+---------+--------+

我想要以下 output:

+---------------------+---------+--------+
| timestamp           | id      | balance|
|---------------------+---------+--------|
| 2022-08-01 00:00:00 | 1       | 0.01   |
| 2022-08-01 00:00:00 | 2       | 0      | 
| 2022-08-02 07:00:00 | 2       | 0.5    |
| 2022-08-02 07:00:00 | 1       | 0.15   |
| 2021-08-03 01:00:00 | 1       | 0.03   |
+---------------------+---------+--------+

我想每天獲取每個 ID 的最新余額。 理想情況下,sql 將使用 window function,因為源數據表非常大(~900GB),我需要一些可以擴展的高效。

我花了很多時間試圖解決這個問題並一直卡住,任何幫助將不勝感激! 提前致謝

考慮以下簡單的方法

select * from your_table
qualify 1 = row_number() over id_day
window id_day as (partition by id, date(timestamp) order by timestamp desc)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM