はじめに
2025年3月に、BigQuery と Git の連携が可能になりました
BigQuery ではSQLクエリなどを保存したり他ユーザーと共有することができますが、だれがどんな変更を加えたか、という変更履歴を確認することはできませんでした。
私自身も、複雑なSQLクエリの開発するなかでバージョン管理をしたいタイミングがありました。
今回の対応でSQLクエリやノートブックなどを Git 管理できるようになりました。
また GitHub などサードパーティの Git リポジトリとの接続も可能です。
なお、2025年8月1日現在では Pre-GA の機能です。
設定方法
公式ドキュメントは以下です。
BigQuery 側の設定1
まずはリポジトリを作成します。
エクスプローラーの下部に「リポジトリ」が追加されているので、「リポジトリを表示」ボタンからリポジトリタブを開きます。
「リポジトリの追加」ボタンからサイドパネルを開き、任意の名前とリージョンを指定します。
Github 側の設定
BigQuery 内部の Git を使う場合は BigQuery 側の設定1 でリポジトリ作成は完了ですが、今回は Github と連携、HTTPS で接続しました。
Github でアクセストークンを作成します。
今回は個人で使用しているアカウントからアクセストークンを作成しましたが、公式ドキュメントにも記載の通り、このアクセストークンはリポジトリを使うユーザーで共有されます。
なので任意の個人ユーザーのアクセストークンではなく、連携用のアカウントを用意してそのアクセストークンを使うことが推奨されています。
Github の「Developer settings」->「Personal access tokens」->「Fine-grained tokens」よりトークンを新規作成します。
Token name, Expiration は任意の値を入力します。
Repository access では「Only select repositories」を選択し、BigQuery のファイルを管理したいリポジトリを選択します。
Permissions については、公式ドキュメントに必要な権限は記載されていませんでしたが、リポジトリの権限を以下のように設定し接続できました。
- Commit statuses : Read and write
- Contents : Read and write
- Deployments : Read and write
- Environments : Read and write
- Variables : Read and write
「Generate token」ボタンを押下し、トークンを発行します。
シークレットの作成
Google Cloud に戻り、Secret Manager から Github 側の設定 で発行したトークンを使うシークレットを作成します。
Secret Manager の「シークレットを作成」ボタンを押下し、以下を入力してシークレットを作成します。
- 名前:任意の値
- シークレットの値:テキストボックスに Github のトークンを入力
権限の付与
デフォルトの Dataform サービス アカウント(service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
形式)に「Secret Manager のシークレットアクセサー(roles/secretmanager.secretAccessor
)」を付与します。
BigQuery 側の設定2
BigQuery に戻ります。
Github リポジトリとの紐づけ
BigQuery 側の設定1 で作成したリポジトリに Github のリポジトリを紐づけます。
リポジトリ名を押下し、構成タブの「Git接続を編集」を押下します。
「リモートの Git リポジトリのプロトコル」で「HTTPS」を選択し、以下を入力します。
- リモートの Git リポジトリの URL:連携したい Github の URL(
https://github.com/
から始まる URL) - デフォルトのブランチ名:Github リポジトリのブランチ名
- シークレット:シークレットの作成 で作成したシークレット
「接続」ボタンを押下し、以下画像のようなメッセージが表示されれば接続成功です。
ちなみに、Github のトークンを更新する場合はシークレットの新しいバージョンに更新後のトークンを登録すればOKでした。
自動的に最新バージョンを参照します。
ワークスペースの作成
「︙」ボタンから「ワークスペースを作成」を押下し、「既存のリモートブランチ」または「新しいブランチ」から作成したいワークスペースを選択します。
画像内の説明文にもある通り、ワークスペースは Github 上のブランチ名になります。
ブランチ名の命名規則などがあるのであれば、それに合わせてワークスペース名を指定します。
ワークスペース作成後、一覧の「操作」カラムの「開く」を押下すると、エクスプローラーの下部にそのワークスペースのファイルツリーが表示されます。
これで設定は完了です。
操作
基本的な操作
前述の通り、エクスプローラーの下部にそのワークスペースのファイルツリーが表示されます。
管理できる BigQuery ファイルは
- SQLクエリ
- ノートブック
- データキャンバス
- データ準備
の4種です。
未コミットのファイルはツリー上のファイル名の横に青い丸が表示され、メインボタンが「commit」ボタンに変化します。
「commit」ボタンを押下すると、コミットするファイルの選択、コミットメッセージ、ファイル差分を確認できます。
ワークスペース上でコミットするとメインボタンが「リモートへpush」ボタンに変化します。
また、メインボタン横の「▼」からコミット履歴を見ることができます。履歴ではコミットメッセージとユーザー名を確認できます。
「リモートへpush」ボタンを押下すると「Create pull request」ボタンに変化します。
「Create pull request」ボタンを押下すると Github の「Comparing changes」へ遷移し、PR作成も可能です。
Github の履歴では、BigQuery でのコミットは「<ユーザー名>
authored and GCP Dataform committed」と表示されます。
<ユーザー名>
には、Google Cloud ログイン時のアカウントアドレスが Github で利用されている場合は Github アカウントが、そうでない場合は Google Cloud アカウントの名前が表示されました。
例えば、画像の上から4つ目のコミットは Github で利用している Google アカウントを使っていたので、Github アカウントのアイコンとユーザー名が表示されているのに対し、
上から2つ目のコミットは Github で利用していない Google アカウントだったので Google アカウントの名前と Github のデフォルトアイコン?が表示されています。
今後の期待
基本的にメインボタンで次のアクションを促してくれるので、操作に迷うことはありませんでした。
今後、以下のことができるようになれば嬉しいと思いました。
- 特定ファイルの変更のみの取り消しができない
- 全ファイルの変更取り消しはできる
- コミットの取り消しができない
- リポジトリやワークスペースについて、参照や編集の権限管理ができない?
- おそらくそのプロジェクトにアクセスできるユーザーは全ワークスペースを参照できそう
GAになるのが楽しみです!
以上です。どなたかの参考になれば幸いです。