BigQuery Studio Git リポジトリでコードを管理する

BigQuery Studio Git リポジトリを使用して、SQL スクリプトとノートブックを管理できます。この機能は、バージョン管理を BigQuery Studio ファイル ブラウザに直接統合し、リポジトリのクローン作成、 ブランチの管理、Git オペレーションの実行をコンソールを離れることなく可能にします。 Google Cloud

BigQuery Studio Git リポジトリは、従来のリポジトリと比較して、フォルダベースの合理化された エクスペリエンスを提供します BigQuery Studio Git リポジトリは、左側のペインのユーザー ルートフォルダに直接表示されます。

BigQuery Studio Git リポジトリを使用すると、リモート Git リポジトリへの接続を維持しながら、標準のファイルやディレクトリと同じようにコードアセットを操作できます。

制限事項

  • BigQuery Studio Git リポジトリは、ユーザー ルートフォルダのコンテキストに限定され、プライベートでの使用を目的としています。これらのリポジトリを他のユーザーと共有しないでください。これらのリポジトリは、プロジェクト内のアセットを仮想的に表現したユーザー ルートフォルダに表示されますが、技術的にはプロジェクト レベルで作成されます。
  • Developer Connect アカウント コネクタを Git プロキシで使用することはできません。
  • マウント ポイント内のファイル システム オペレーションは、Dataform の割り当てを消費します。
  • ファイル数が多いリポジトリ、ファイルサイズが大きいリポジトリ、ブランチが多いリポジトリ、commit 履歴が複雑なリポジトリは、クローン作成に時間がかかります。クローン作成オペレーションがオペレーション タイムアウトを超えると、リポジトリを正常に作成できなくなります。
  • BigQuery Studio Git リポジトリ マウントに保存できるノートブック ファイルのサイズは 30 MB を超えることはできません。ファイルが 30 MB を超える場合は、マウントされたロケーションの外にある Colab ランタイムのローカル ストレージに保存してください。
  • マウントの外で Git リポジトリに変更を加えた場合(左側のペインでファイルの編集や名前変更など)、ノートブックのランタイムのマウント内に変更が表示されるまでに最大 60 秒かかることがあります。 この期間は、コンストラクタに CACHE_TTL_SECONDS パラメータを渡すことで調整できます。

      FuseWidget(CACHE_TTL_SECONDS=NUMBER)
    

    NUMBER は、キャッシュが有効な状態を維持する秒数に置き換えます。この値を小さくすると、同期の頻度 が増え、Dataform の割り当てが早く消費されます。

始める前に

プロジェクトで Developer Connect API を有効にします。 Google Cloud

API の有効化

必要なロール

BigQuery Studio Git リポジトリでコードを管理するために必要な権限を取得するには、プロジェクトに対するDeveloper Connect OAuth ユーザー roles/developerconnect.oauthUser)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには BigQuery Studio Git リポジトリでコードを管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

BigQuery Studio Git リポジトリでコードを管理するには、次の権限が必要です。

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • developerconnect.operations.list
  • developerconnect.operations.get
  • developerconnect.locations.list
  • developerconnect.locations.get
  • developerconnect.users.startOAuth
  • developerconnect.users.finishOAuth
  • developerconnect.users.fetchAccessToken
  • developerconnect.users.getSelf
  • developerconnect.users.deleteSelf
  • developerconnect.accountConnectors.get
  • developerconnect.accountConnectors.list
  • developerconnect.accountConnectors.gitProxyUse
  • developerconnect.accountConnectors.httpProxyUse
  • developerconnect.accountConnectors.gitProxyRead
  • developerconnect.accountConnectors.gitProxyWrite
  • developerconnect.accountConnectors.httpProxyRead
  • developerconnect.accountConnectors.httpProxyWrite
  • developerconnect.accountConnectors.fetchUserRepositories

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

BigQuery Studio Git リポジトリを作成する

Git リポジトリを作成する際は、次の要件を考慮してください。

  • リモート リポジトリが公共のインターネットに開かれていない場合(例: ファイアウォールの内側にある場合)、リモート Git リポジトリを Git リポジトリに接続できないことがあります。この場合は、必要な Dataform Egress IP アドレス範囲 をファイアウォール ルールに追加して、保護されたリモート リポジトリへの接続を有効にします。
  • dataform.restrictGitRemotes 組織のポリシーで許可リストに登録されていないリモート Git リポジトリに接続する Git リポジトリを作成するには、まずリモート Git リポジトリをポリシーの allowedValues リストに追加してから、Git リポジトリを作成します。詳細については、 リモート リポジトリを制限するをご覧ください。

Git リポジトリを作成する手順は次のとおりです。

  1. コンソールで、[BigQuery] ページに移動します。 Google Cloud

    BigQuery に移動

  2. 左側のペインで、 [Files] をクリックしてファイル ブラウザを開きます。

    左側のペインが表示されていない場合は、 [左ペインを開く] をクリックしてペインを開きます。

  3. ユーザー ルートノードの横にある [アクションを表示] > [作成] > [Git リポジトリ] をクリックします。

  4. リモート Git リポジトリの URL を入力します。

  5. BigQuery Studio は、既存の Developer Connect アカウント コネクタ が使用可能かどうかを検出します。お手数ですが以下のどちらかの方法でご対応ください。

  6. [接続] をクリックします。

ファイルの編集

ファイルを編集するには、ファイルノード(SQL スクリプトやノートブックなど)をクリックして、新しいエディタタブでファイルを開きます。

変更は自動的に保存されます。

ファイルの管理

標準的な管理タスクは、各項目に関連付けられた操作メニューを使用して実行できます。これらのオプションにアクセスするには、ディレクトリまたはファイルの横にある [アクションを開く] をクリックします。

ディレクトリ レベルでは、次のタスクを実行できます。

  • リポジトリに作成: SQL クエリ、 ノートブック、データ キャンバス、データ準備、ファイル、サブディレクトリなどの新しいコードアセットを作成します。
  • リポジトリにアップロード: ローカル マシンから 選択したディレクトリに既存のファイルをインポートします。
  • 名前を変更: ディレクトリの名前を変更します。
  • 移動: ディレクトリを移動します。ディレクトリは、同じ Git リポジトリ内の別の場所にのみ移動できます。詳細については、 ファイルとディレクトリを移動またはコピーするをご覧ください。
  • 削除: ディレクトリとそのすべてのコンテンツを ローカル ワークスペースから完全に削除します。

ファイルレベルでは、次のタスクを実行できます。

  • [開く] または [開く] : デフォルトのエディタまたは 特定のアプリケーション(特定のノートブック環境など)でファイルを表示します。
  • 名前を変更: ファイル名を変更します。
  • コピー: ファイルの複製を作成します。ファイルをコピーできるのは、同じ Git リポジトリ内のディレクトリのみです。
  • 移動: ファイルを同じ Git リポジトリ内の別のディレクトリに移動します。 詳細については、 ファイルとディレクトリを移動またはコピーするをご覧ください。
  • ダウンロード: ファイルのコピーをローカル マシンに保存します。
  • 削除: ワークスペースからファイルを削除します。

ファイルとディレクトリを移動またはコピーする

ファイルとディレクトリを移動またはコピーできますが、同じ Git リポジトリ内に残す必要があります。

  1. コンソールで、[BigQuery] ページに移動します。 Google Cloud

    BigQuery に移動

  2. 左側のペインで、 [Files] をクリックしてファイル ブラウザを開きます。

  3. 移動またはコピーするファイルまたはディレクトリを見つけます。

  4. [アクションを開く] > [移動] または [コピー] をクリックします。

  5. 表示されるダイアログで、同じ Git リポジトリ内のターゲット ディレクトリを選択します。

  6. [移動] または [コピー] をクリックします。

変更を commit して push する

ローカルでの編集をリモート リポジトリと同期する手順は次のとおりです。

  1. コンソールで、[BigQuery] ページに移動します。 Google Cloud

    BigQuery に移動

  2. 左側のペインで、 [Repository] をクリックします。

  3. 省略可: 変更されたファイルにカーソルを合わせ、[差分を表示] をクリックすると、ローカル バージョンと最後に commit されたバージョンを 1 行ずつ比較できます。

  4. [commit メッセージ] フィールドに変更の説明を入力します。

  5. [commit] をクリックします。変更はローカル ブランチの Git 履歴に保存されます。

  6. [リモート ブランチに push] をクリックします。変更がリモート リポジトリと同期されます。

新しいブランチをチェックアウトする

ローカル ブランチを管理し、既存のローカルまたはリモート トラッキング ブランチに基づいて新しいローカル ブランチを作成できます。

[リポジトリ] タブの [ブランチ] セクションに、チェックアウトしたローカル ブランチが表示されます。[CURRENT] ラベルはアクティブなブランチを示し、[DEFAULT] ラベルはリポジトリのデフォルト ブランチを示します。

新しいブランチをチェックアウトする手順は次のとおりです。

  1. コンソールで、[BigQuery] ページに移動します。 Google Cloud

    BigQuery に移動

  2. 左側のペインで、 [Repository] をクリックします。

  3. [ブランチ] セクションを開きます。

  4. ブランチの横にある [アクションを開く] をクリックし、[新しいブランチをチェックアウト] をクリックします。

  5. [ソース ブランチ] メニューで、新しいブランチのベースにするブランチ(origin/main など)を選択します。

  6. [ブランチ名] フィールドに、新しいブランチの名前を入力します。

  7. [チェックアウト] をクリックします。BigQuery Studio は、まずソース ブランチをチェックアウトします。指定したブランチ名が新しいブランチを示す場合は、そのソースに基づいて作成されます。新しいブランチがアクティブなブランチになり、Git リポジトリの内容が自動的に更新されて、チェックアウトしたブランチの状態が反映されます。

Git リポジトリ マウント内のノートブック ファイルにアクセスする

BigQuery Studio Git リポジトリ内からノートブックにアクセスする場合は、ホスト Git リポジトリをノートブックのランタイムにマウントできます。マウントは、リモート Git リポジトリがノートブックのランタイム上のローカル リポジトリであるかのように表示する接続です。これにより、ノートブックは同じリポジトリ内の他のファイルやクエリ スクリプトに直接アクセスして読み取りと書き込みを行うことができます。

Git リポジトリをマウントする

Git リポジトリをマウントするには、ノートブックで次の Python コードを実行します。

from google_dataform_fuse_widget import FuseWidget
FuseWidget()

ノートブックがマウントに接続されると、次の変更が行われます。

  • ノートブック セッションの現在の作業ディレクトリが更新され、Git リポジトリ内の相対パスが反映されます。これにより、パスベースのファイル アクセスが自動的に機能します。
  • ノートブックのランタイム上の Git リポジトリのパスが Python システムパスに追加されます。これにより、標準の Python import ステートメントを使用して、クエリ スクリプトとファイルを Git リポジトリからノートブックに直接読み込むことができます。

マウントと接続を管理する

ワークスペースを管理するには、次のコントロールを使用します。

  • ワークスペースをマウント: Git リポジトリのマウント プロセスを開始します。マウントは共有リソースであるため、同じ Colab ランタイム上の複数のノートブックが同じ Git リポジトリを使用している場合は、同じマウントを使用します。
  • ワークスペースのマウントを解除: Git リポジトリのマウント プロセスを停止します。 ワークスペースのマウントを解除すると、その Colab ランタイム上のすべてのノートブックでマウントを使用できなくなります。
  • ワークスペースに接続: 現在のノートブック セッションのアクティブなマウントへの接続を開始します。接続すると、ノートブックの作業ディレクトリとシステムパスが更新され、Git リポジトリが含まれるようになります。これにより、ファイルにアクセスしてインポートできます。
  • ワークスペースの接続を解除: 現在の ノートブック セッションのマウント接続を終了し、デフォルトの状態にリセットします。接続を解除しても、他のアクティブなノートブック セッションのマウント接続ステータスには影響しません。セッションの接続を終了するには、[ワークスペースの接続を解除] ボタンを使用することをおすすめします。
  • 修復: マウントまたは接続が 使用できなくなった場合に、正常な状態に戻します。

マウントを初期化したら、[ステータス] バーでマウントのリアルタイムのヘルスとアクティブ パスを確認します。考えられるヘルス ステータスは、 [接続済み]、[マウント済み]、[停止]、[異常] です。

次のステップ