論理ビューの作成と管理

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

このドキュメントでは、論理ビューと、論理ビューの作成方法とオペレーションの実行方法について説明します。マテリアライズド ビューと承認済みビューとの比較については、テーブルとビューをご覧ください。

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

  • クエリの重複を回避する: 列マッピングとキャスト ロジックを論理ビューに保存して拡張できます。このロジックをコピーして貼り付けたり、理解したりする必要はありません。他の論理ビューで使用できます。
  • リレーショナル データベースから読み取るように設計されたシステムと統合する: 論理ビューを使用すると、Bigtable データをリレーショナル データベース テーブルや Cassandra テーブルのように読み取ることができます。
  • 複数のテーブルに対して同じ論理ビューを実行する: FROM 句を変更することで、同じビューを使用して Bigtable インスタンス内の任意のテーブルをクエリできます。
  • 一貫したインターフェースを提供する: ソーステーブルが変更されても、アプリケーションは論理ビューを使用できます。

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

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

  • Bigtable 用の GoogleSQL でサポートされている SQL 機能を使用する必要がある
  • 読み取り専用
  • ReadRows の呼び出しではなく、SQL で読み取る必要がある
  • 定義者の権限を使用します。ソーステーブルから読み取る権限がなくても、論理ビューから読み取る権限があれば、論理ビューに対してクエリを実行できます。

始める前に

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

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init

必要なロール

論理ビューの作成と管理に必要な権限を取得するには、インスタンスに対する Bigtable 管理者(roles/bigtable.admin)ロールを付与するよう管理者に依頼してください。それ以外の場合は、実行するオペレーションに応じて、インスタンス レベルで次の権限をリクエストします。

  • 作成: bigtable.logicalViews.create
  • 更新: bigtable.logicalViews.update
  • 削除: roles/bigtable.logicalViews.delete
  • リスト: bigtable.logicalViews.list
  • 説明: bigtable.logicalViews.get

論理ビューを作成するには、ソーステーブルに対する bigtable.table.readRows 権限も必要です。

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

論理ビューを作成する

コンソール

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

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

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

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

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

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

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

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

    4. クエリに問題がなければ、[保存] をクリックして、[ビューを保存] を選択します。

    Query Editor の使用方法については、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

論理ビューを更新する

コンソール

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

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

  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

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

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

論理ビューを削除する

この操作を元に戻すことはできません。論理ビューを削除するには、gcloud bigtable logical-views delete コマンドを使用します。

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

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

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

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

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

コンソール

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

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

  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'

次のステップ