BigQuery テーブル洗い替えパターン
全部入れ替え
宛先テーブルに元テーブルを指定してバーン
しない
日単位などで粛々入れ続ける
Dataform とかで重複が出ないか監視
差分更新
---.icon
ユニーク取る
ROW_NUMBER() して全部入れ替えやパーティションカラム単位で入れ替え
Cloud Storage へクエリ
洗い替えの際にいちいちロードせずとも Cloud Storage に置いてあるファイルを外部テーブルとしてクエリできる
(内部的には temporary table にロードされてクエリされる)
日次の生成物を Cloud Storage へ保存しつつ、それをクエリするとよい
CSV の allow_quoted_newlines や skip_leading_rows を使うには API や外部テーブル定義ファイルを作って渡す
bq CLI からは定義ファイルを渡す以外の方法もあるが、詳細オプションは渡せないので簡易用途
データ
code:schema.json
[
{
"name": "id",
"type": "INTEGER",
"mode": "REQUIRED"
},
{
"name": "name",
"type": "STRING",
"mode": "REQUIRED"
},
{
"name": "date",
"type": "DATE",
"mode": "REQUIRED"
}
]
code:base.csv
id,name,date
1,foo,2022-01-01
2,bar,2022-02-01
3,baz,2022-03-01
code:diff.csv
id,name,date
3,hoge,2022-03-01
4,fuga,2022-04-01