📘
[TROCCO] データマートに「スキーマ自動追従」機能が追加されました
概要
TROCCO データマート(BigQuery・増分更新 / SCD Type 2 のみ)に、スキーマ自動追従 機能が追加されました。ソースクエリのスキーマが変わったとき、宛先テーブルへの追従を TROCCO 側で行えます。
背景
増分更新や SCD Type 2 の概要や全件洗い替えからの移行手順については、全件洗い替えのデータマート、そろそろ見直しませんか? — 増分更新・SCD Type 2への移行ガイド で詳しく解説されています。
これらのモードで運用しているデータマートでは、以下のような場面に遭遇することがあります。
- ソース側にカラムが追加されたことで、翌日のジョブが「宛先テーブルに該当のカラムが存在しない」で落ちる
- SCD Type 2 で履歴を蓄積しているため、宛先テーブルを
DROPして作り直すことができない - BigQuery コンソールで
ALTER TABLE ADD COLUMNを手動で実行して対処しているが、ソース側の変更のたびにこの作業が発生する
全件洗い替えは毎回テーブルを作り直すためこの問題は起きませんが、増分更新や SCD Type 2 は宛先テーブルを維持し続けるモードであるため、ソース側のスキーマ変更に対して手作業での追従が必要でした。
スキーマ自動追従の動作
データマート定義の編集画面に スキーマ自動追従設定 が追加されています。モードは以下の2つです。

| モード | 動作 |
|---|---|
| 検知のみ | 変更を検知してジョブ詳細画面に記録します。テーブルには手を加えません。 |
| カラム自動追加 | 変更を検知し、新しいカラムを宛先テーブルに自動で追加します(ALTER TABLE)。 |
検知できる変更と自動追従の範囲
| 変更種別 | 検知のみ | カラム自動追加 |
|---|---|---|
| カラム追加 | 記録のみ | 自動追加する |
| カラム削除 | 記録のみ | ジョブがエラーになる |
| 型変更 | 記録のみ | ジョブがエラーになる |
「カラム自動追加」モードにおいて、削除や型変更は宛先テーブル側のデータを失ったり既存の履歴と整合しなくなったりする可能性があるため、自動追従の対象外です。検知した上でジョブがエラーなり、人間に判断が委ねられます。
既存データマートへの影響
すでに運用中の増分更新 / SCD Type 2 データマートは、何もしなくても自動的に「検知のみ」モードで動き始めます。設定変更は不要です。
「検知のみ」モードはジョブの成功・失敗に一切影響しません。差分検出の結果はジョブ詳細画面に記録されるだけで、ジョブの実行フロー自体は今までと完全に同じです。
- これまで成功していたデータマートは、今後も同じく成功します
- これまでスキーマ不整合で失敗していたデータマートは、今後も同じく失敗します。ただし、ジョブ詳細画面に「どのカラムが追加されていたか」が記録されるようになるため、原因の特定が容易になります
「カラム自動追加」への切り替えは、定義編集画面で明示的にモードを変更したときだけ行われます。
注意事項
- 対象は BigQuery の増分更新 / SCD Type 2 のみ です。全件洗い替えは毎回テーブルを作り直すため、追従の概念がありません
- 「カラム自動追加」は ALTER TABLE を発行 します。接続情報に紐づくサービスアカウントが、宛先テーブルへのスキーマ変更権限を持っている必要があります
- 削除・型変更は自動追従しません。検知のみで、ジョブはエラーになります
Discussion