Google-Bigquery

計算具有兩個時間條件的事件總數

  • June 29, 2020

我在 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當然需要根據標准進行調整。

引用自:https://dba.stackexchange.com/questions/270032