標準のSQL BigQueryでFILTER(http://modern-sql.com/feature/filter)の動作をエミュレートする方法はありますか?私がする必要があるだろうかBigQueryでのイベントの最新性を計算するウィンドウのフィルタパーティション
は次のとおりです。本質的には
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
とを持ちますが、現在の行の日付より前にイベントが発生した最新の日付(event_happened = 1
)が必要です。
なぜROWSではなくRANGEを使用するのはなぜですか?次に、現在の行の値を除外できます。 –
@ElliottBrossardあなたの提案をお寄せいただきありがとうございます。しかし、私はRANGEを使用してどのように私を助けてくれるのかよく分かりません。どうぞあなたは詳しく教えていただけますか?私はまた、私の質問に明確にするために、次のように追加しました: "列event_happenedは0と1の値を取る、私は現在の行の日付の前にevent_happened = 1イベントが発生した最新の日付が必要です。 – user3531907
@ElliottBrossard私も質問の日付列の名前を更新しました - 混乱していた当初の選択 – user3531907