パーティションとクラスタの推奨事項を表示する

このドキュメントでは、パーティションとクラスタの Recommender の仕組みと、推奨事項と分析情報の表示方法について説明します。

BigQuery のパーティショニングとクラスタリングの Recommender は、BigQuery テーブルを最適化するためのパーティションまたはクラスタの推奨事項を生成します。Recommender は、BigQuery テーブルのワークフローを分析し、テーブル パーティショニングまたはテーブル クラスタリングのいずれかを使用してワークフローとクエリの費用を最適化するための推奨事項を提供します。

Recommender サービスの詳細については、Recommender の概要をご覧ください。

Recommender の仕組み

推奨事項を生成するために、パーティショニングとクラスタリングの Recommender は過去 30 日間のプロジェクトのワークロード実行データを使用して、最適ではないパーティショニングとクラスタリングの構成について BigQuery テーブルを分析します。また、Recommender は機械学習を使用して、異なるパーティショニングまたはクラスタリングの構成でワークロードの実行がどの程度最適化されるかを予測します。Recommender は、テーブルのパーティショニングまたはクラスタリングによって大幅な費用削減が見込めると判断した場合、推奨事項を生成します。パーティショニングとクラスタリングの Recommender では、次のタイプの推奨事項が生成されます。

既存のテーブルタイプ 推奨事項サブタイプ 推奨事項の例
パーティション分割なし、クラスタ化なし パーティション 「column_C を DAY でパーティショニングすることで、毎月約 64 スロット時間を削減する」
パーティション分割なし、クラスタ化なし クラスタ 「column_C でクラスタリングすることで、毎月約 64 スロット時間を削減する」
パーティション分割、クラスタ化なし クラスタ 「column_C でクラスタリングすることで、毎月約 64 スロット時間を削減する」

それぞれの推奨事項は、次の 3 つの部分で構成されています。

  • 特定のテーブルをパーティショニングまたはクラスタリングを行うためのガイダンス
  • パーティショニングまたはクラスタリングを行うテーブル内の特定の列
  • 推奨事項の適用による毎月の推定削減額

Recommender は、潜在的なワークロード削減額を計算するために、過去 30 日間の実行ワークロード データが将来のワークロードを表すことを前提としています。

また、Recommender API は、テーブル ワークロード情報を分析情報の形式で返します。分析情報は、プロジェクトのワークロードの理解に役立つ検出結果であり、パーティションまたはクラスタの推奨事項によってワークロードの費用がどのように改善されるかに関するより多くのコンテキストを提供します。

制限事項

パーティショニングとクラスタリングの Recommender では、分析でレガシー SQL クエリが除外されます。

パーティショニングとクラスタリングの Recommender は、次のリージョンに保存されているリソースをサポートしません。

  • europe-central2europe-west8europe-west9europe-west12europe-north1europe-southwest1
  • us-east1us-east5us-south1
  • me-central1me-central2me-west1
  • australia-southeast2
  • southamerica-west1

始める前に

パーティションとクラスタの推奨事項を表示するには、Recommender API を有効にする必要があります。

必要な権限

パーティションとクラスタの推奨事項にアクセスするために必要な権限を取得するには、BigQuery パーティショニング クラスタリング Recommender 閲覧者roles/recommender.bigqueryPartitionClusterViewer)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、パーティションとクラスタの推奨事項にアクセスするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

パーティションとクラスタの推奨事項にアクセスするには、次の権限が必要です。

  • recommender.bigqueryPartitionClusterRecommendations.get
  • recommender.bigqueryPartitionClusterRecommendations.list

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

BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。

推奨事項の表示

このセクションでは、Google Cloud コンソール、Google Cloud CLI、Recommender API を使用して、パーティションとクラスタの推奨事項と分析情報を表示する方法について説明します。

次のオプションのいずれかを選択します。

コンソール

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. 推奨事項タブを開くには、 [推奨事項] > [すべての推奨事項を表示] をクリックします。

    [推奨事項] をクリックして、すべての推奨事項を表示します。

    [推奨事項] タブには、プロジェクトで利用できるすべての推奨事項が一覧表示されます。

  3. [BigQuery ワークロード費用の最適化] パネルで、[すべて表示] をクリックします。

    費用の推奨事項の表には、現在のプロジェクトに対して生成されたすべての推奨事項が一覧表示されます。たとえば、次のスクリーンショットでは、Recommender が example_table テーブルを分析し、example_column 列をクラスタリングすれば、表示された程度のバイト数とスロット数を節約できると推奨しています。

    パーティショニングとクラスタリングの推奨事項を含む推奨事項の表。

  4. テーブルの分析情報と推奨事項の詳細を表示するには、[推奨事項] をクリックします。

gcloud

特定のプロジェクトのパーティションまたはクラスタの推奨事項を表示するには、gcloud recommender recommendations list コマンドを使用します。

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.table.PartitionClusterRecommender \
    --format=FORMAT_TYPE \

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

  • PROJECT_NAME: BigQuery テーブルを含むプロジェクトの名前
  • REGION_NAME: プロジェクトが存在するリージョン
  • FORMAT_TYPE: サポートされている gcloud CLI 出力形式(例えば、JSON)
次の表に、Recommender API レスポンス中の重要なフィールドを示します。

プロパティ サブタイプに関連 説明
recommenderSubtype パーティションまたはクラスタ 推奨の種類を示します。
content.overview.partitionColumn パーティション パーティショニングを推奨する列の名前。
content.overview.partitionTimeUnit パーティション 推奨されるパーティショニングの時間単位。たとえば、DAY は、該当の列を日単位でパーティショニングすることが推奨されていることを意味します。
content.overview.clusterColumns クラスタ クラスタリングを推奨する列の名前。

gcloud CLI を使用してテーブルの分析情報を表示するには、gcloud recommender insights list コマンドを使用します。

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.table.StatsInsight \
    --format=FORMAT_TYPE \

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

  • PROJECT_NAME: BigQuery テーブルを含むプロジェクトの名前
  • REGION_NAME: プロジェクトが存在するリージョン
  • FORMAT_TYPE: サポートされている gcloud CLI 出力形式(例えば、JSON)
次の表に、insights API レスポンスの重要なフィールドを示します。

プロパティ サブタイプに関連 説明
content.existingPartitionColumn クラスタ 既存のパーティショニング列(存在する場合)
content.tableSizeTb すべて テーブルのサイズ(テラバイト単位)
content.bytesReadMonthly すべて テーブルから読み取られた月間のバイト数
content.slotMsConsumedMonthly すべて テーブルで実行されているワークロードが消費した月間のスロット時間(ミリ秒単位)
content.queryJobsCountMonthly すべて テーブルで実行されている月間のジョブ数

REST API

特定のプロジェクトに関するパーティションまたはクラスタの推奨事項を表示するには、REST API を使用します。各コマンドに認証トークンを指定する必要があります。これは gcloud CLI を使用して取得できます。認証トークンの取得方法については、ID トークンの取得方法をご覧ください。

curl list リクエストを使用して、特定のプロジェクトのすべての推奨事項を表示できます。

curl
    -H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
    -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/recommenders/google.bigquery.table.PartitionClusterRecommender/recommendations

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

  • GCLOUD_AUTH_TOKEN: 有効な gcloud CLI アクセス トークンの名前
  • PROJECT_NAME: BigQuery テーブルを含むプロジェクトの名前
次の表に、Recommender API レスポンス中の重要なフィールドを示します。

プロパティ サブタイプに関連 説明
recommenderSubtype パーティションまたはクラスタ 推奨の種類を示します。
content.overview.partitionColumn パーティション パーティショニングを推奨する列の名前。
content.overview.partitionTimeUnit パーティション 推奨されるパーティショニングの時間単位。たとえば、DAY は、該当の列を日単位でパーティショニングすることが推奨されていることを意味します。
content.overview.clusterColumns クラスタ クラスタリングを推奨する列の名前。

REST API を使用してテーブルの分析情報を表示するには、次のコマンドを実行します。

curl
-H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/insightTypes/google.bigquery.table.StatsInsight/insights

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

  • GCLOUD_AUTH_TOKEN: 有効な gcloud CLI アクセス トークンの名前
  • PROJECT_NAME: BigQuery テーブルを含むプロジェクトの名前
次の表に、分析情報 API レスポンス中の重要なフィールドを示します。

プロパティ サブタイプに関連 説明
content.existingPartitionColumn クラスタ 既存のパーティショニング列(存在する場合)
content.tableSizeTb すべて テーブルのサイズ(テラバイト単位)
content.bytesReadMonthly すべて テーブルから読み取られた月間のバイト数
content.slotMsConsumedMonthly すべて テーブルで実行されているワークロードが消費した月間のスロット時間(ミリ秒単位)
content.queryJobsCountMonthly すべて テーブルで実行されている月間のジョブ数

トラブルシューティング

問題: 特定のテーブルに対する推奨事項が表示されない。

次のような状況では、パーティションとクラスタの推奨事項が表示されないことがあります。

  • テーブルが 10 GB 未満。
  • データ操作言語(DML)オペレーションによるテーブルの書き込みコストが高い。
  • テーブルが過去 30 日間読み取られていない。
  • 1 か月あたりの推定削減額が少なすぎる(1 スロット時間未満の削減)。
  • テーブルがすでにクラスタ化されている。

料金

推奨事項を表示する際に、費用やワークロードのパフォーマンスへの悪影響が発生することはありません。

次のステップ