过滤窗口中的分区 - 在 BigQuery 中计算事件新近度

use*_*907 4 google-bigquery

有什么方法可以模拟标准 SQL BigQuery 中FILTER ( http://modern-sql.com/feature/filter ) 的行为吗?

我需要做的是:

SELECT MAX(date) FILTER (WHERE event_happend = 1) OVER ( PARTITION BY user_id ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING ) FROM ...

本质上,我需要计算出当前行日期之前发生的特定事件的最近日期。列event_happened采用值0,并且我需要当前行日期之前1事件发生的最近日期 ( )。event_happened = 1

Mik*_*ant 6

有什么方法可以模拟 FILTER 的行为吗?

#standardSQL
SELECT
  MAX(IF(event_happend = 1, date, null))
  OVER (
    PARTITION BY user_id
    ORDER BY date ASC
    ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
  )
  FROM
    ...
Run Code Online (Sandbox Code Playgroud)