BigQuery Studio Git リポジトリでコードを管理する
SQL スクリプトとノートブックは、BigQuery Studio Git リポジトリを使用して管理できます。この機能により、バージョン管理が BigQuery Studio ファイル ブラウザに直接統合されるため、リポジトリのクローン作成、 ブランチの管理、Git オペレーションの実行を Cloud de Confiance コンソールを離れることなく行うことができます。
BigQuery Studio Git リポジトリは、従来のリポジトリと比較して、フォルダベースの合理化された エクスペリエンスを提供します 。 BigQuery Studio Git リポジトリは、左側のペインのユーザー ルートフォルダに直接表示されます。
BigQuery Studio Git リポジトリを使用すると、リモート Git リポジトリへの接続を維持しながら、標準のファイルやディレクトリと同じようにコードアセットを操作できます。
制限事項
- BigQuery Studio Git リポジトリは、ユーザー ルートフォルダのコンテキストに限定され、個人での使用を目的としています。これらのリポジトリを他のユーザーと共有しないでください。これらのリポジトリは、プロジェクト内のアセットを仮想的に表現したユーザー ルートフォルダに表示されますが、技術的にはプロジェクト レベルで作成されます。
- Git プロキシで Developer Connect アカウント コネクタを使用することはサポートされていません。
- マウント ポイント内のファイル システム オペレーションは、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 を有効にします。 Cloud de Confiance
必要なロール
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 のコードアセットは Dataform を基盤としているため、これらのアセットにアクセスできるユーザーに対しては、次のセキュリティ上の影響を考慮する必要があります。
- コードアセットの可視性は、プロジェクト レベルの Dataform 権限に則って管理されます。
dataform.repositories.list権限を持つユーザー(BigQuery ジョブ ユーザー、BigQuery Studio ユーザー、BigQuery ユーザー などの標準の BigQuery ロールに含まれています)は、これらのアセットを作成したかどうか、またはこれらのアセットが共有されているかどうかに関係なく、 Cloud de Confiance プロジェクトの [Explorer] パネル内のすべてのコードアセットを表示できます。可視性を制限するには、カスタムロールを作成して、dataform.repositories.list権限を除外します。 - Dataform サービス エージェントと共有されるシークレットは、これらのアセットを編集できるユーザーがアクセスできる可能性があります。認証情報を保護するには、信頼できるユーザーに対してのみ作成と編集のアクセス権を付与し、Dataform サービス エージェントがアクセスできるシークレットを制限します。詳細については、パッケージのインストール時のシークレット アクセスをご覧ください。
詳細については、Dataform 権限のセキュリティに関する考慮事項をご覧ください。
BigQuery Studio Git リポジトリを作成する
Git リポジトリを作成する際は、次の要件を考慮してください。
- リモート Git リポジトリが公共のインターネットに開かれていない場合(例: ファイアウォールの内側にある場合)、リモート Git リポジトリを Git リポジトリに接続できないことがあります。この場合は、必要な Dataform 下り(外向き)IP アドレス範囲 をファイアウォール ルールに追加して、保護されたリモート リポジトリへの接続を有効にします。
dataform.restrictGitRemotes組織のポリシーで許可リストに登録されていないリモート Git リポジトリに接続する Git リポジトリを作成するには、まずリモート Git リポジトリをポリシーのallowedValuesリストに追加してから、Git リポジトリを作成します。詳細については、 リモート リポジトリを制限するをご覧ください。
Git リポジトリを作成する手順は次のとおりです。
コンソールで、[BigQuery] ページに移動します。 Cloud de Confiance
左側のペインで、 [Files] をクリックしてファイル ブラウザを開きます。
左側のペインが表示されていない場合は、 [左ペインを開く] をクリックしてペインを開きます。
ユーザー ルートノードの横にある [アクションを表示] > [作成] > [Git リポジトリ] をクリックします。
リモート Git リポジトリの URL を入力します。
BigQuery Studio は、既存の Developer Connect アカウント コネクタ が使用可能かどうかを検出します。お手数ですが以下のどちらかの方法でご対応ください。
- アカウント コネクタが見つかった場合、Git リポジトリの表示名が事前入力されます。これらの値は編集できます。
- アカウント コネクタが存在しない場合は、[アカウント コネクタを作成] をクリックして新しいアカウント コネクタを作成します。
- Developer Connect アカウント コネ 101 クタを使用しない場合は、[別の接続タイプを使用] を 2 クリックして HTTPS または SSH を使用して接続します。
[接続] をクリックします。
ファイルの編集
ファイルを編集するには、ファイルノード(SQL スクリプトやノートブックなど)をクリックして、新しいエディタタブでファイルを開きます。
変更は自動的に保存されます。
ファイルの管理
標準的な管理タスクは、各項目に関連付けられた操作メニューを使用して実行できます。これらのオプションにアクセスするには、ディレクトリまたはファイルの横にある [**アクションを開く**] をクリックします。
ディレクトリ レベルでは、次のタスクを実行できます。
- リポジトリに作成: SQL クエリ、 ノートブック、データ キャンバス、データ準備、ファイル、サブディレクトリなどの新しいコードアセットを作成します。
- リポジトリにアップロード: ローカル マシンから 選択したディレクトリに既存のファイルをインポートします。
- 名前を変更: ディレクトリの名前を変更します。
- 移動: ディレクトリを移動します。ディレクトリは、同じ Git リポジトリ内の別の場所にのみ移動できます。詳細については、 ファイルとディレクトリを移動またはコピーするをご覧ください。
- 削除: ディレクトリとそのすべてのコンテンツを ローカル ワークスペースから完全に削除します。
ファイル レベルでは、次のタスクを実行できます。
- [開く] または [開く] : デフォルトのエディタまたは 特定のアプリケーション(特定のノートブック環境など)でファイルを表示します。
- 名前を変更: ファイル名を変更します。
- コピー: ファイルの複製を作成します。ファイルは、同じ Git リポジトリ内のディレクトリにのみコピーできます。
- 移動: ファイルを同じ Git リポジトリ内の別のディレクトリに移動します。 詳細については、 ファイルとディレクトリを移動またはコピーするをご覧ください。
- ダウンロード: ファイルのコピーをローカル マシンに保存します。
- 削除: ワークスペースからファイルを削除します。
ファイルとディレクトリを移動またはコピーする
ファイルとディレクトリは移動またはコピーできますが、同じ Git リポジトリ内に残す必要があります。
コンソールで、[BigQuery] ページに移動します。 Cloud de Confiance
左側のペインで、 [Files] をクリックしてファイル ブラウザを開きます。
移動またはコピーするファイルまたはディレクトリを見つけます。
[アクションを開く] > [移動] または [コピー] をクリックします。
表示されるダイアログで、同じ Git リポジトリ内のターゲット ディレクトリを選択します。
[移動] または [コピー] をクリックします。
変更を commit して push する
ローカルでの編集内容をリモート リポジトリと同期する手順は次のとおりです。
コンソールで、[BigQuery] ページに移動します。 Cloud de Confiance
左側のペインで、 [Repository] をクリックします。
省略可: 変更されたファイルにカーソルを合わせ、[差分を表示] をクリックすると、ローカル バージョンと最後に commit されたバージョンを 1 行ずつ比較できます。
[commit メッセージ] フィールドに変更の説明を入力します。
[commit] をクリックします。変更はローカル ブランチの Git 履歴に保存されます。
[リモート ブランチに push] をクリックします。変更がリモート リポジトリと同期されます。
新しいブランチをチェックアウトする
ローカル ブランチを管理し、既存のローカルまたはリモート トラッキング ブランチに基づいて新しいローカル ブランチを作成できます。
[リポジトリ] タブの [ブランチ] セクションに、チェックアウトしたローカル ブランチが表示されます。[CURRENT] ラベルはアクティブなブランチを示し、[DEFAULT] ラベルはリポジトリのデフォルト ブランチを示します。
新しいブランチをチェックアウトする手順は次のとおりです。
コンソールで、[BigQuery] ページに移動します。 Cloud de Confiance
左側のペインで、 [Repository] をクリックします。
[ブランチ] セクションを開きます。
ブランチの横にある [**アクションを開く**] をクリックし、[**新しいブランチをチェックアウト**] をクリックします。
[ソース ブランチ] メニューで、新しいブランチのベースにするブランチ(
origin/mainなど)を選択します。[ブランチ名] フィールドに、新しいブランチの名前を入力します。
[チェックアウト] をクリックします。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 リポジトリが含まれるため、ファイルにアクセスしてインポートできます。
- ワークスペースを切断: 現在の ノートブック セッションのマウント接続を終了し、デフォルトの状態にリセットします。切断しても、他のアクティブなノートブック セッションのマウント接続ステータスには影響しません。セッションの接続を終了するには、[ワークスペースを切断] ボタンを使用することをおすすめします。
- 修復: マウントまたは接続が 使用できなくなった場合に、正常な状態に戻します。
マウントを初期化したら、[ステータス] バーでマウントのリアルタイムのヘルスとアクティブ パスを確認します。考えられるヘルス ステータスは、 [接続済み]、[マウント済み]、[停止]、[異常] です。
次のステップ
- ノートブックの作成方法を学習する。
- 保存済みクエリの作成方法を学習する。
- リポジトリの作成と管理の方法を学習する。
- フォルダを使用してコードアセットを整理する方法を学習する。