コンソールでクエリを作成する
Bigtable データのクエリと表示を行うには、Bigtable Studio クエリビルダーを使用します。クエリビルダーは、Google Cloud コンソールのインタラクティブなフォームです。クエリを作成してテーブルに対して実行し、コンソールに結果を表示できます。
Bigtable Studio のクエリビルダーを使用すると、アプリケーションを作成する、または CLI を使用することを必要とせず、プルダウン セレクタを使用してクエリ句の組み合わせを指定できます。クエリを実行すると、コンソールは Bigtable Data API を呼び出し、クエリに一致するデータが返されます。
このドキュメントでは、クエリビルダーの使用方法について説明し、クエリを最適化するためのヒントを提供します。このページをお読みになる前に、Bigtable の概要を理解しておく必要があります。
クエリビルダーで実行されるクエリには、テーブルに送信される他のクエリと同じ料金と割り当てが適用されます。
クエリビルダーを使用する場合
Google Cloud コンソールで Bigtable データをクエリする機能は、次の操作を行う必要がある場合に役立ちます。
- テーブルのスキーマを視覚的に表示する操作をすみやかに行います。
- 特定のデータが正常に書き込まれたことを確認します。
- 移行中にデータの完全性を検証します。
- データの問題をデバッグします。
- コードで使用する前に、句の特定の組み合わせから返される結果をプレビューします。これは、Bigtable を初めて使用するユーザーと、
cbt
CLI を使用することを必要としない経験豊富なユーザーに特に役立ちます。
始める前に
クエリビルダーの使用に必要な権限を取得するには、プロジェクトに対する Bigtable Reader(roles/bigtable.reader
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、クエリビルダーを使用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
クエリビルダーを使用するには、次の権限が必要です。
-
bigtable.tables.get
-
bigtable.instances.get
-
bigtable.appProfiles.list
-
bigtable.tables.list
-
bigtable.tables.readRows
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
クエリするテーブルがない場合は、小さなテストテーブルを作成して、そのテーブルに対してクエリを実行できます。
クエリビルダーを開く
クエリビルダーを開くと、デフォルトのクエリがインスタンス内の最初のテーブル(アルファベット順)に対して実行され、表示されます。デフォルトのクエリは、デフォルトのアプリ プロファイルを使用して実行され、最大 100 行が返されます。
Google Cloud コンソールで Bigtable インスタンスのリストを開きます。
クエリするテーブルを含むインスタンスの名前をクリックします。
ナビゲーション パネルで [Bigtable Studio] をクリックします。[Bigtable Studio] ページがクエリビルダー モードで開きます。[エクスプローラ] ペインにはインスタンス内のテーブルのリストが表示され、[クエリ結果] ペインにはデフォルトのクエリの結果が表示されます。
省略可: クエリビルダー ペインのサイズを大きくするには、[エクスプローラ] ペインを閉じます。
データ表示形式
クエリビルダーの結果が表に表示されます。最初の見出しと列は [行キー] です。残りの見出しはそれぞれ、Bigtable テーブルの列を表し、コロンで区切られた列ファミリーと列修飾子として表されます。たとえば、cell_plan: data_plan_01gb という見出しは、その列の値が cell_plan
列ファミリーの data_plan_01gb
列のものであることを示します。
列の最新の値のみが返されます。タイムスタンプはデフォルトでは非表示になっていますが、切り替えボタンをクリックすると表示できます。
テーブルの選択
[テーブル] プルダウンを使用して、クエリするテーブルの ID を選択します。
省略可: アプリ プロファイルを指定する
クエリビルダーで使用するために特別に作成したアプリ プロファイルを使用できます。これは、プライマリ アプリケーションで使用されているクラスタとは異なるクラスタを使用してクエリ トラフィックを分離する必要がある場合などに有効です。
別のアプリ プロファイルを使用して次のクエリを実行するには、次の手順を行います。
- [クエリに追加] をクリックします。
- [アプリ プロファイルの変更(デフォルト)] をクリックします。新しいプルダウンが表示されます。
- [アプリ プロファイル] プルダウンを使用して、インスタンスのアプリ プロファイルのリストから選択します。
さまざまなワークロードに異なるアプリ プロファイルを使用するメリットについて詳しくは、アプリ プロファイルについてをご覧ください。アプリ プロファイルの作成方法については、アプリ プロファイルの作成と構成をご覧ください。
テーブルがレプリケーションを使用するインスタンスにある場合は、地理的に最も近いクラスタから読み取るようにアプリ プロファイルを構成します。
クエリに句を追加して実行する
- テーブルとアプリ プロファイルを選択したら、クエリに句を追加します。使用可能な句の詳細については、次のセクションをご覧ください。
- すべての句を追加したら、[実行] をクリックします。
- 結果を確認します。
クエリ句
クエリビルダーを使用して、クエリに句を追加します。クエリを実行すると、クエリビルダーが読み取りリクエストを作成してテーブルに送信します。読み取りリクエストの詳細については、読み取りをご覧ください。
行キー、行キーの範囲、行キー接頭辞の句によって、ストレージからフェッチされる行が決定されます。行キーの正規表現、列、期間句によって、生成される読み取りリクエストにフィルタが追加されます。クエリビルダーで使用するフィルタは、クライアント ライブラリで使用する場合と同じように機能します。Bigtable フィルタの詳細と、フィルタの使用方法がパフォーマンスに与える影響については、フィルタとフィルタを使用するをご覧ください。
行キーを指定する
テーブルから 1 つの行を取得するには、行キー値を指定します。複数の行キー句を追加できます。
- [クエリに追加] をクリックします。
- プルダウン リストで [行キー] を選択します。
- 値を表示する行キーの正確な値を入力します。
行キーの範囲を指定する
テーブルから行の範囲を取得するには、開始行キーと終了行キーを指定します。Bigtable では、行キーの辞書順でデータが格納されます。
- [クエリに追加] をクリックします。
- プルダウン リストで [行キー範囲] を選択します。
- 完全な開始行キーを入力します。
- 完全な終了行キーを入力します。
行キーの接頭辞を指定する
行キーが特定の文字列で始まる行のみを取得するには、行キーの接頭辞でフィルタします。行キー接頭辞は、行キーの最初の N 文字です。通常、接頭辞と行キーの残りの部分の間には、ハッシュタグ、パイプ、その他の記号が挿入されます。
- [クエリに追加] をクリックします。
- プルダウン リストで [行キー接頭辞] を選択します。
- 行キーの接頭辞を入力します。ワイルドカード記号を入力する必要はありません。
行キーの正規表現によるフィルタ
行キーの値が指定した正規表現と一致する行のみを取得するには、行キーの正規表現フィルタを使用します。パフォーマンスを向上させるには、行キーの正規表現フィルタを追加する前に、行キーの範囲または行キーの接頭辞句をクエリに追加します。正規表現の作成方法については、行キーの正規表現をご覧ください。
- [クエリに追加] をクリックします。
- プルダウン リストで [行キーの正規表現] を選択します。
- re2 構文を使用する正規表現を入力する
列でフィルタ
クエリに配置する 1 つ以上の列を指定するには、columns 句を追加して、フィルタリングする列ごとに列ファミリーと列修飾子を選択します。この句を追加すると生成される読み取りリクエストには、列ファミリーの正規表現フィルタと列範囲フィルタがあります。
- [クエリに追加] をクリックします。
- プルダウン リストで [列] を選択します。
- [列] フィールドをクリックします。列ファミリーのリストが表示されます。
- 列ファミリー ID をクリックします。列修飾子のリストが表示されます。
- 列修飾子をクリックします。
期間でフィルタ
特定の範囲内のタイムスタンプを持つセルのみを取得するには、タイムスタンプ範囲フィルタを使用する時間範囲句を追加します。
- [クエリに追加] をクリックします。
- プルダウン リストで [期間] を選択します。
- 開始タイムスタンプを入力します。
- 終了タイムスタンプを入力します。
タイムスタンプは次のいずれかの形式で指定します。
- マイクロ秒単位の 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~100 までの数値を入力してください。
制限事項
クエリビルダーには次の制限事項が適用されます。
- セルあたり 1,000 文字 - Bigtable は、セルあたり最大 1,000 文字を返します。セルの文字数が 1,000 文字を超える場合は、切り捨てられた結果が表示され、表示されない文字数を示す注記が付けられます。
- 最大 100 列 - Bigtable は、クエリに一致する各行の最初の 100 列を返します。列ファミリーは特定の順序では保存されませんが、列は列ファミリー内で辞書順に並べ替えられます。
- 最大 1,000 行 - クエリビルダーは、クエリに一致するデータのうち、最初の最大 1,000 行を返します。
- Base64 - Bigtable は、Base64 でエンコードされたデータを正確に表示するよう最善を尽くしますが、結果は保証されません。Bigtable がセル内のデータを表示できない場合は、代わりにセル値のサイズがバイト単位で表示されます。
古いデータ - クエリする列の最新のセル(またはバージョン)のみを取得できます。このコンセプトの詳細については、Bigtable ストレージ モデルと一般的なコンセプトをご覧ください。
シリアル化されたデータ - プロトコル バッファとして保存されたデータは、クエリ結果に正しく表示されません。JSON データはより適切にサポートされていますが、正しく表示されるとは限りません。
人工的なタイムスタンプ - テーブルにデータを書き込むときに、アプリケーションがタイムスタンプ以外の数値をセルのタイムスタンプ プロパティに割り当てている場合は、クエリで時間範囲フィルタを使用して、タイムスタンプの代わりに使用する値の範囲を取得できます。ただし、値をマイクロ秒として指定する必要があります。テーブルデータで人為的なタイムスタンプが使用される理由を理解するには、タイムスタンプをご覧ください。