Google-Bigquery
計算具有兩個時間條件的事件總數
我在 BigQuery 中有一個如下所示的表:
schema = [ bigquery.SchemaField('timestamp', 'TIMESTAMP', mode='REQUIRED', description='Data point timestamp'), bigquery.SchemaField('event_id', 'STRING', description='EventID'), [...] ]
該表有一個相當大的數據集,我試圖找到一個有效的查詢,它返回過去 24 小時內以及過去 N 天內發生的事件數。即兩條不同的記錄,條件不同但相同
event_id
。我不太關心實際的event_id
,而是分佈。理想情況下,查詢將返回如下內容:
7_days: 20 30_days: 15 60_days: 7
如果在純 SQL 中無法做到這一點,我也可以使用 Pandas。
感謝@mustaccio 上面的指針。以下是我如何設法讓它使用
INTERSECT DISTINCT
.SELECT COUNT(*) FROM ( SELECT DISTINCT event_id FROM `foo.bar.blah` WHERE DATE(timestamp) = current_date() INTERSECT DISTINCT SELECT DISTINCT event_id FROM `foo.bar.blah` WHERE (DATE(timestamp) BETWEEN DATE_SUB(current_date(), INTERVAL 30 DAY) AND DATE_SUB(current_date(), INTERVAL 10 DAY)) )
最後的兩個日期
SELECT
當然需要根據標准進行調整。