論理ビューを作成して管理する

Bigtable では、論理ビューは、他の SQL クエリでクエリできる仮想テーブルとして機能する SQL クエリの結果です。 データはソーステーブルに残ります。

このドキュメントでは、論理ビューとその作成方法と操作方法について説明します。継続的なマテリアライズドビューと承認済みビューとの比較については、 テーブルとビューをご覧ください。

論理ビューを使用すると、Bigtable データに対して次の操作を行うことができます。

  • クエリの繰り返しを回避する: 論理ビューに列マッピングとキャスト ロジックを保存して進化させることができます。追加の論理ビューでは、そのロジックをコピーして貼り付ける必要がなく、理解する必要もありません。
  • リレーショナル データベースから読み取るように設計されたシステムと統合する: 論理ビューを使用すると、Bigtable データを リレーショナル データベース テーブルまたは Cassandra テーブルのように読み取ることができます。
  • 多くのテーブルに対して同じ論理ビューを実行する: FROM 句を変更することで、同じビューを使用して Bigtable インスタンス内の任意のテーブルにクエリを実行できます。
  • 一貫したインターフェースを提供する: ソーステーブルが変更されても、アプリケーションは論理ビューを使用できます。
  • 特定の列または行への読み取りアクセスを制限する: テーブル全体へのアクセス権を付与することなく、ユーザーが読み取れる データのみを公開できます。

論理ビューはインスタンス レベルのリソースです。論理ビューを作成するには、Google Cloud CLI または コンソールの Bigtable Studio クエリエディタを使用します。 Google Cloud 論理ビューにクエリを実行するには、 Bigtable Studio クエリエディタまたは SQL をサポートする Bigtable クライアント ライブラリを使用します。

論理ビューには次の特徴があります。

論理ビューの定義に使用する行キー、列修飾子、列の値は、サービスデータとして扱われます。そのため、機密情報を含む行キー、列修飾子、列の値を使用して論理ビューを作成しないでください。サービスデータの取り扱い方法については、Google Cloud プライバシー に関するお知らせをご覧ください。

始める前に

gcloud CLI を使用する場合は、次の手順を行います。

  1. Google Cloud CLI をインストールします。

  2. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  3. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init

必要なロール

論理ビューを使用するには、次の権限が必要です。

論理ビューを管理するには:

  • 論理ビューを作成、更新、削除するには、インスタンスに対する Bigtable 管理者(roles/bigtable.admin)ロールが必要です。
  • または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。
    • 作成: bigtable.logicalViews.create
    • 更新: bigtable.logicalViews.update
    • 削除: bigtable.logicalViews.delete

論理ビューを表示してクエリを実行するには:

  • 論理ビューの一覧表示または説明の取得を行うには、インスタンスに対する Bigtable 閲覧者(roles/bigtable.reader)ロールが必要です。
  • または、インスタンス レベルで次の権限を付与するよう管理者に依頼することもできます。

    • リスト: bigtable.logicalViews.list
    • 説明: bigtable.logicalViews.get
  • 論理ビューにクエリを実行するには、論理ビューに対する bigtable.logicalViews.readRows 権限が必要です。

論理ビューを作成するには:

  • ソーステーブルに対する bigtable.tables.readRows 権限が少なくとも必要です。

特定のビューへの読み取りアクセス権を付与するには:

他の Bigtable 権限がない場合でも、特定の論理ビューを読み取る権限をユーザーに付与できます。これを行うには、IAM 条件を使用して、そのビューに対してのみ bigtable.logicalViews.readRows 権限を付与します。

  1. プロジェクトに対する bigtable.reader ロールをユーザーに付与します。
  2. bigtable.logicalViews.readRows 権限を特定の論理ビューに制限する IAM 条件を作成します。次に例を示します。

    resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW
    

    次のように置き換えます。

    • PROJECT_ID: Bigtable インスタンスが存在する Google Cloud プロジェクト 。
    • VIEW: 新しい論理ビューの ID(最大 128 文字)。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。
    • INSTANCE_ID: 論理ビューを作成するインスタンスの ID。

    詳細については、 IAM 条件を使用してリソースへのアクセスを管理するをご覧ください。

使用可能なすべてのロールと権限の詳細については、 IAM を使用した Bigtable のアクセス制御をご覧ください。

論理ビューを作成する

コンソール

  1. コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud

    インスタンスのリストを開く

  2. インスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。

  4. をクリックして [Editor] を選択し、新しいタブを開きます。

    1. クエリエディタでクエリを作成します。クエリが有効な SQL の場合、[有効] メッセージが表示されます。

    2. 省略可: ステートメントを SQL スタイルでフォーマットするには、[フォーマット] をクリックします。

    3. [実行] をクリックします。クエリの結果が [結果] テーブルに表示されます。

    4. クエリに問題がなければ、[名前を付けて保存] の展開矢印をクリックして、[論理ビューとして保存] を選択します。

  5. [論理ビューを保存] ダイアログで、ビューの名前を入力し、[保存] をクリックします。

    クエリエディタの使用方法の詳細については、データを Bigtable Studio を使用して管理するをご覧ください。

gcloud

論理ビューを作成するには、 gcloud bigtable logical-views create コマンドを使用します。

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE --query=QUERY

次のように置き換えます。

  • VIEW: 新しい論理ビューの ID(最大 128 文字)。ID は、インスタンス内のテーブル ID とビュー ID の間で一意である必要があります。
  • QUERY: Bigtable 用の有効な GoogleSQL クエリ
  • INSTANCE: 論理ビューを作成するインスタンスの ID

オプション:

  • 論理ビューが削除されないように保護するには、コマンドに --deletion-protection フラグを追加します。この設定を適用しない場合、論理ビューは削除できます。論理ビューの削除を明示的に許可するには、--no-deletion-protection を追加します。詳細については、このドキュメントの 論理ビューを更新するをご覧ください。

論理ビューを更新する

コンソール

コンソールで論理ビューの削除からの保護を更新することはできません。Google Cloud 削除からの保護を有効または無効にするには、Google Cloud CLI を使用します。

  1. コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud

    インスタンスのリストを開く

  2. リストからインスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

  4. 省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。

  5. 更新するビューの横にある more_vert 操作メニューをクリックし、 [定義を表示] をクリックします。

  6. クエリを変更します。

  7. [実行] をクリックします。

  8. 結果ペインにビューに含めるデータが表示されていることを確認したら、[名前を付けて保存] をクリックします。

  9. ダイアログで、変更したビューの ID を入力します。

    ダイアログに、既存のビューを上書きするという警告メッセージが表示されます。

  10. [保存] をクリックします。

gcloud

別のクエリを実行するように論理ビューを更新したり、削除 保護を変更したりするには、 gcloud bigtable logical-views update コマンドを使用します。クエリ、削除からの保護、またはその両方を指定する必要があります。

論理ビューのクエリを更新するには:

gcloud bigtable logical-views update VIEW  \
    --instance=INSTANCE --query=QUERY

論理ビューの削除からの保護を有効にするには:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=true

論理ビューの削除からの保護を無効にするには:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=false

次のように置き換えます。

  • VIEW: 更新する論理ビューの ID
  • INSTANCE: 論理ビューを含むインスタンスの ID
  • QUERY: 有効な GoogleSQL クエリ

論理ビューを削除する

この操作は元に戻すことができません。

論理ビューで削除からの保護が有効になっている場合は、削除できません。削除からの保護が有効になっている論理ビューを削除するには、論理ビューを更新して削除からの保護を無効にする必要があります。詳細については、このドキュメントの 論理ビューを更新するをご覧ください。

コンソール

  1. コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud

    インスタンスのリストを開く

  2. リストからインスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

  4. 省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。

  5. [ビュー] を展開します。

  6. 削除するビューの横にある more_vert 操作メニューをクリックし、 [削除] をクリックします。

gcloud

論理ビューを削除するには、 gcloud bigtable logical-views delete コマンドを使用します。

  gcloud bigtable logical-views delete VIEW \
    --instance=INSTANCE

次のように置き換えます。

  • VIEW: 更新する論理ビューの ID
  • INSTANCE: 論理ビューを含むインスタンスの ID

インスタンスの論理ビューのリストを取得する

インスタンスの論理ビューのリストを表示できます。

コンソール

  1. コンソールで Bigtable インスタンスのリストを開きます。 Google Cloud

    インスタンスのリストを開く

  2. リストからインスタンスを選択します。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。エクスプローラにビューのリストが表示されます。

  4. 省略可: インスタンス内の最初の 10 個のビューが一覧表示されます。さらに 10 個を表示するには、[もっと見る] をクリックします。

gcloud

インスタンスの論理ビューのリストを表示するには、 gcloud bigtable logical-views list コマンドを使用します。

gcloud bigtable logical-views list --instance=INSTANCE

INSTANCE をインスタンス ID に置き換えます。

論理ビューについて説明する

論理ビューの詳細を取得するには、gcloud bigtable logical-views describe コマンドを使用します。

  gcloud bigtable logical-views describe VIEW \
      --instance=INSTANCE

ターミナルに次のような詳細が表示されます。

  createTime: '2025-03-07T19:49:56.316578Z'
  etag: W/"/v1/17919275593532352351"
  name: projects/my-project/instances/my-instance/logicalViews/my-view
  query: SELECT street FROM addresses
  updateTime: '2025-03-07T19:49:56.316578Z'
  deletion_protection: true

論理ビューをクエリする

論理ビューを作成したら、通常のテーブルにクエリを実行するのと同じように、SQL を使用してクエリを実行できます。SELECT ステートメントの FROM 句で論理ビューを使用できます。

クエリエディタで、ビュー名を参照する GoogleSQL クエリを入力します。たとえば、ビューの名前が MyLogicalView の場合:

SELECT *
FROM MyLogicalView
LIMIT 100;

Bigtable で SQL クエリを実行する方法の詳細については、 クエリエディタで SQL を使用してデータにクエリを実行するをご覧ください。

次のステップ