コンソールでクエリを作成する

Bigtable データのクエリと表示を行うには、Bigtable Studio クエリビルダーを使用します。クエリビルダーは、Google Cloud コンソールのインタラクティブなフォームです。クエリを作成してテーブルに対して実行し、コンソールに結果を表示できます。

Bigtable Studio のクエリビルダーでは、プルダウン セレクタを使用して、アプリケーションを作成したり、CLI を使用したりしなくても、クエリ句の組み合わせを指定できます。クエリを実行すると、コンソールによって Bigtable Data API が呼び出され、クエリに一致するデータが返されます。

このドキュメントでは、クエリビルダーの使用方法と、クエリを最適化するためのヒントについて説明します。このページを読む前に、Bigtable の概要を理解する必要があります。

クエリビルダーで実行されるクエリには、テーブルに送信されるその他のクエリと同じ料金と割り当てが適用されます。

クエリビルダーの用途

Google Cloud コンソールで Bigtable データに対するクエリを実行する機能は、次のような場合に役立ちます。

  • テーブルのスキーマをすばやく可視化します。
  • 特定のデータが正常に書き込まれたことを確認します。
  • 移行中にデータの整合性を検証します。
  • データの問題をデバッグします。
  • コードで使用する前に、特定の組み合わせの句から返される結果をプレビューします。これは、Bigtable を初めて使用するユーザーや、cbt CLI を使用しない経験豊富なユーザーに特に役立ちます。

始める前に

クエリビルダーの使用に必要な権限を取得するには、プロジェクトに対する Bigtable Readerroles/bigtable.reader)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

この事前定義ロールには、クエリビルダーの使用に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

クエリビルダーを使用するには、次の権限が必要です。

  • bigtable.tables.get
  • bigtable.instances.get
  • bigtable.appProfiles.list
  • bigtable.tables.list
  • bigtable.tables.readRows

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

クエリするテーブルがない場合は、小さなテストテーブルを作成し、そのテーブルに対してクエリを実行できます。

クエリビルダーを開く

クエリビルダーを開くと、デフォルトのクエリがインスタンス内の最初のテーブル(アルファベット順)に対して実行され、表示されます。デフォルトのクエリがデフォルトのアプリ プロファイルを使用して実行され、最大 100 行が返されます。

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

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

  2. クエリを実行するテーブルを含むインスタンスの名前をクリックします。

  3. ナビゲーション パネルで [Bigtable Studio] をクリックします。[Bigtable Studio] ページがクエリビルダー モードで開きます。[エクスプローラ] ペインにインスタンス内のテーブルのリストが表示され、[クエリ結果] ペインにデフォルトのクエリの結果が表示されます。

  4. 省略可: [エクスプローラ] ペインを閉じ、クエリビルダー ペインを拡大します。

データの表示形式

クエリビルダーの結果がテーブルに表示されます。最初の見出しと列は [行キー] です。残りの見出しはそれぞれ、Bigtable テーブルの列を表し、列ファミリーと列修飾子をコロンで区切って表します。たとえば、見出し cell_plan: data_plan_01gb は、その列の値が cell_plan 列ファミリーの data_plan_01gb 列の値であることを示します。

選択します。

列の最新の値のみが返されます。タイムスタンプはデフォルトで非表示になっていますが、切り替えボタンをクリックすると表示できます。

テーブルの選択

[テーブル] プルダウンを使用して、クエリを実行するテーブルの ID を選択します。

省略可: アプリ プロファイルを指定する

クエリビルダーで使用するために作成したアプリ プロファイルを使用できます。これは、プライマリ アプリケーションで使用しているものとは異なるクラスタを使用してクエリ トラフィックを分離する場合などに便利です。

別のアプリ プロファイルを使用して次のクエリを実行するには、次の手順を行います。

  1. [クエリに追加] をクリックします。
  2. [アプリ プロファイルを変更(デフォルト)] をクリックします。新しいプルダウンが表示されます。
  3. [アプリ プロファイル] プルダウンを使用して、インスタンスのアプリ プロファイルのリストから選択します。

ワークロードごとに異なるアプリ プロファイルを使用する利点については、アプリ プロファイルについてをご覧ください。アプリ プロファイルの作成方法については、アプリ プロファイルの作成と構成をご覧ください。

テーブルがレプリケーションを使用するインスタンスにある場合は、地理的に最も近いクラスタから読み取るようにアプリ プロファイルを構成します。

クエリに句を追加して実行する

  1. テーブルとアプリ プロファイルを選択したら、クエリに句を追加します。使用可能な句の詳細については、次のセクションをご覧ください。
  2. 句を追加したら、[実行] をクリックします。
  3. 結果を見る。

クエリ句

クエリビルダーを使用して、クエリに句を追加します。クエリを実行すると、クエリビルダーが読み取りリクエストを作成してテーブルに送信します。読み取りリクエストの詳細については、読み取りをご覧ください。

行キー、行キー範囲、行キー接頭辞句により、ストレージから取得される行が決まります。行キーの正規表現、列、期間句によって、生成される読み取りリクエストにフィルタが追加されます。クエリビルダーで使用するフィルタは、クライアント ライブラリで使用する場合と同じように機能します。Bigtable フィルタの詳細と、フィルタの使用がパフォーマンスに与える影響については、フィルタフィルタを使用するをご覧ください。

行キーを指定する

テーブルから単一の行を取得するには、行キー値を指定します。複数の行キー句を追加できます。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [行キー] を選択します。
  3. 値を表示する行キーの正確な値を入力します。

行キーの範囲を指定する

テーブルから行の範囲を取得するには、開始行キーと終了行キーを指定します。Bigtable は、行キーの辞書順でデータを格納します。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで、[行キーの範囲] を選択します。
  3. 完全な開始行キーを入力します。
  4. 完全な終了行キーを入力します。

行キー接頭辞を指定する

行キーが特定の文字セットで始まる行のみを取得するには、行キー接頭辞でフィルタします。行キー接頭辞は、行キーの最初の N 文字です。慣例により、接頭辞と行キーの残りの部分の間には多くの場合、ハッシュタグ、パイプ、その他の記号があります。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [行キーの接頭辞] を選択します。
  3. 行キーの接頭辞を入力します。ワイルドカード記号を入力する必要はありません。

行キーの正規表現でフィルタする

行キーの値が指定した正規表現と一致する行のみを取得するには、行キーの正規表現フィルタを使用します。パフォーマンスを向上させるには、行キーの正規表現フィルタを追加する前に、クエリに行キー範囲または行キー接頭辞句を追加します。正規表現の作成方法については、行キーの正規表現をご覧ください。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [行キーの正規表現] を選択します。
  3. re2 構文を使用する正規表現を入力する

列でフィルタ

クエリに含める 1 つ以上の列を指定するには、columns 句を追加し、フィルタリングする列ごとに列ファミリーと列修飾子を選択します。この句を追加すると生成される読み取りリクエストには、列ファミリーの正規表現フィルタ列範囲フィルタがあります。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [] を選択します。
  3. [列] 項目をクリックします。列ファミリーのリストが表示されます。
  4. 列ファミリー ID をクリックします。列修飾子のリストが表示されます。
  5. 列修飾子をクリックします。

期間でフィルタ

特定の範囲内のタイムスタンプを持つセルのみを取得するには、タイムスタンプ範囲フィルタを使用する時間範囲句を追加します。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [期間] を選択します。
  3. 開始のタイムスタンプを入力します。
  4. 終了のタイムスタンプを入力します。

タイムスタンプを次のいずれかの形式で指定します。

  • マイクロ秒単位の UNIX タイムスタンプ(3023483279876000 など)
  • YYYY-MM-DDThh:mm:ss:ss[z]
  • YYYY/MM/DD-hh:mm:ss.sss[z]
  • MM/DD/YYYY
  • YYYY/MM/DD

オプションの T は、時間を示すリテラルで、オプションの z は現地時間ではなく UTC 時間を示します。タイムスタンプ形式の詳細については、ISO 8601 をご覧ください。

上限を指定する

返される最大行数を指定するには、limit 句を追加します。

  1. [クエリに追加] をクリックします。
  2. プルダウン リストで [上限] を選択します。
  3. 1~100 までの数値を入力してください。

制限事項

クエリビルダーには次の制限事項があります。

  • セルあたり 1,000 文字 - Bigtable は、セルあたり最大 1,000 文字を返します。セルの文字数が 1,000 文字を超える場合、切り捨てられた結果(文字数が表示されない)が表示されます。
  • 最大 100 列 - Bigtable は、クエリに一致する各行の最初の 100 列を返します。列ファミリーは特定の順序では保存されませんが、列は列ファミリー内で辞書順に並べ替えられます。
  • 最大 1,000 行 - クエリビルダーは、クエリに一致するデータのうち、最初の最大 1,000 行を返します。
  • Base64 - Bigtable は、Base64 でエンコードされたデータを正確に表示するためにベスト エフォートを行いますが、結果は保証されません。Bigtable でセル内のデータを表示できない場合は、セル値のサイズがバイト単位で表示されます。
  • 古いデータ - クエリを実行する列内の最新のセル(またはバージョン)のみを取得できます。このコンセプトの詳細については、 Bigtable ストレージ モデル一般的なコンセプトをご覧ください。

  • シリアル化されたデータ - プロトコル バッファとして保存されたデータは、クエリ結果に正しく表示されません。JSON データはより適切にサポートされていますが、適切に表示される保証はありません。

  • 人為的なタイムスタンプ - アプリケーションがテーブルにデータを書き込むときに、セルのタイムスタンプ プロパティにタイムスタンプ以外の番号を割り当てる場合、クエリで時間範囲フィルタを使用して、タイムスタンプの代わりに使用する値の範囲を、マイクロ秒として指定する必要があります。テーブルデータで人為的なタイムスタンプが使用される理由を理解するには、タイムスタンプをご覧ください。

次のステップ