假設我有一個銷售電子產品的網站。為了吸引客戶,我在在線廣告活動中投入了一些資金。
下表包含三列:user_id(標識每個用戶的 id)、event_date(用戶點擊廣告的日期)和 mkt campaign(廣告活動的名稱):
|user_id| event_date|mkt campaign
| 1 | 25-11-2021|FB - Black Friday
| 2 | 20-12-2020|G Display - Christmas campaign
| 1 | 22-12-2019|G Display - Christmas campaign
| 3 | 12-10-2020|Whatsapp - July - campaign
| 2 | 01-08-2018|IG Post - Holidays campaign
| 3 | 30-08-2020|FB - Holidays campaign
我只想選擇包含將每個用戶吸引到我的網站的第一個活動的行。換句話說,我需要確定每個用戶是如何第一次訪問我的網站的。
預期的結果是這樣的:
|user_id| event_date|mkt campaign
| 1 | 22-12-2019|G Display - Christmas campaign
| 2 | 01-08-2018|IG Post - Holidays campaign
| 3 | 30-08-2020|FB - Holidays campaign
我知道我可以使用“ORDER BY event_date ASC”按日期對行進行排序。但是,我需要的結果是每個 user_id 只顯示一個結果(最舊的活動)。
請問,您知道如何在 BigQuery(BQ 標準 SQL)中執行此操作嗎?
非常感謝。
uj5u.com熱心網友回復:
考慮以下方法
select * from your_table where true
qualify 1 = row_number() over(partition by user_id order by parse_date('%d-%m-%Y', event_date))
如果適用于您問題中的樣本資料
with your_table as (
select 1 user_id, '25-11-2021' event_date, 'FB - Black Friday' mkt_campaign union all
select 2, '20-12-2020', 'G Display - Christmas campaign' union all
select 1, '22-12-2019', 'G Display - Christmas campaign ' union all
select 3, '12-10-2020', 'Whatsapp - July - campaign' union all
select 2, '01-08-2018', 'IG Post - Holidays campaign' union all
select 3, '30-08-2020', 'FB - Holidays campaign'
)
輸出是

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367506.html
