1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQuery リポジトリを使ってみる(Github 連携)

Posted at

はじめに

2025年3月に、BigQuery と Git の連携が可能になりました:tada:

BigQuery ではSQLクエリなどを保存したり他ユーザーと共有することができますが、だれがどんな変更を加えたか、という変更履歴を確認することはできませんでした。
私自身も、複雑なSQLクエリの開発するなかでバージョン管理をしたいタイミングがありました。

今回の対応でSQLクエリやノートブックなどを Git 管理できるようになりました。
また GitHub などサードパーティの Git リポジトリとの接続も可能です。

なお、2025年8月1日現在では Pre-GA の機能です。

設定方法

公式ドキュメントは以下です。

BigQuery 側の設定1

まずはリポジトリを作成します。
エクスプローラーの下部に「リポジトリ」が追加されているので、「リポジトリを表示」ボタンからリポジトリタブを開きます。

キャプチャ.PNG

「リポジトリの追加」ボタンからサイドパネルを開き、任意の名前とリージョンを指定します。

キャプチャ1.PNG

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 のトークンを入力

image (35).png

権限の付与

デフォルトの Dataform サービス アカウント(service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com 形式)に「Secret Manager のシークレットアクセサー(roles/secretmanager.secretAccessor)」を付与します。

BigQuery 側の設定2

BigQuery に戻ります。

Github リポジトリとの紐づけ

BigQuery 側の設定1 で作成したリポジトリに Github のリポジトリを紐づけます。
リポジトリ名を押下し、構成タブの「Git接続を編集」を押下します。

image (36).png

「リモートの Git リポジトリのプロトコル」で「HTTPS」を選択し、以下を入力します。

  • リモートの Git リポジトリの URL:連携したい Github の URL(https://github.com/ から始まる URL)
  • デフォルトのブランチ名:Github リポジトリのブランチ名
  • シークレット:シークレットの作成 で作成したシークレット

「接続」ボタンを押下し、以下画像のようなメッセージが表示されれば接続成功です。

image (24).png

ちなみに、Github のトークンを更新する場合はシークレットの新しいバージョンに更新後のトークンを登録すればOKでした。
自動的に最新バージョンを参照します。

ワークスペースの作成

「︙」ボタンから「ワークスペースを作成」を押下し、「既存のリモートブランチ」または「新しいブランチ」から作成したいワークスペースを選択します。
画像内の説明文にもある通り、ワークスペースは Github 上のブランチ名になります。
ブランチ名の命名規則などがあるのであれば、それに合わせてワークスペース名を指定します。

image (25).png

ワークスペース作成後、一覧の「操作」カラムの「開く」を押下すると、エクスプローラーの下部にそのワークスペースのファイルツリーが表示されます。

image (38).png

image (26).png

これで設定は完了です。

操作

基本的な操作

前述の通り、エクスプローラーの下部にそのワークスペースのファイルツリーが表示されます。

image (26).png

管理できる BigQuery ファイルは

  • SQLクエリ
  • ノートブック
  • データキャンバス
  • データ準備

の4種です。

未コミットのファイルはツリー上のファイル名の横に青い丸が表示され、メインボタンが「commit」ボタンに変化します。

image (27).png

「commit」ボタンを押下すると、コミットするファイルの選択、コミットメッセージ、ファイル差分を確認できます。

image (28).png

ワークスペース上でコミットするとメインボタンが「リモートへpush」ボタンに変化します。
また、メインボタン横の「▼」からコミット履歴を見ることができます。履歴ではコミットメッセージとユーザー名を確認できます。

image (29).png

image (31).png

「リモートへpush」ボタンを押下すると「Create pull request」ボタンに変化します。
「Create pull request」ボタンを押下すると Github の「Comparing changes」へ遷移し、PR作成も可能です。

image (32).png

Github の履歴では、BigQuery でのコミットは「<ユーザー名> authored and GCP Dataform committed」と表示されます。
<ユーザー名> には、Google Cloud ログイン時のアカウントアドレスが Github で利用されている場合は Github アカウントが、そうでない場合は Google Cloud アカウントの名前が表示されました。
例えば、画像の上から4つ目のコミットは Github で利用している Google アカウントを使っていたので、Github アカウントのアイコンとユーザー名が表示されているのに対し、
上から2つ目のコミットは Github で利用していない Google アカウントだったので Google アカウントの名前と Github のデフォルトアイコン?が表示されています。

image (33).png

今後の期待

基本的にメインボタンで次のアクションを促してくれるので、操作に迷うことはありませんでした。
今後、以下のことができるようになれば嬉しいと思いました。

  • 特定ファイルの変更のみの取り消しができない
    • 全ファイルの変更取り消しはできる
  • コミットの取り消しができない
  • リポジトリやワークスペースについて、参照や編集の権限管理ができない?
    • おそらくそのプロジェクトにアクセスできるユーザーは全ワークスペースを参照できそう

GAになるのが楽しみです!

以上です。どなたかの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?