BQで重複排除したviewを作る

ログをBQに突っ込むんだけど、レコードが重複して出力されてる可能性がある。
但し、レコード毎にユニークキーなキーが付与されてる。

という場合、以下のようなviewを作れば重複排除できる。

CREATE OR REPLACE VIEW
  `dataset.view_name` AS
WITH
  src AS (
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY timestamp, uniq_key ) AS row_num
  FROM
    `dataset.table_name`)
SELECT
  * EXCEPT(row_num)
FROM
  src
WHERE
  row_num = 1

元のテーブルが timestamp というカラムで partitioning されている前提。
window関数の PARTITION BY に timestamp を入れてるのがミソで、こうしておくと、view をクエリする際に timestamp で絞ればスキャン対象の partition を絞ることができる。