パーティションとクラスタの推奨事項を表示する
このドキュメントでは、パーティションとクラスタの 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-central2
、europe-west8
、europe-west9
、europe-west12
、europe-north1
、europe-southwest1
us-east1
、us-east5
、us-south1
me-central1
、me-central2
、me-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 を使用して、パーティションとクラスタの推奨事項と分析情報を表示する方法について説明します。
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
推奨事項タブを開くには、> [すべての推奨事項を表示] をクリックします。
[推奨事項][推奨事項] タブには、プロジェクトで利用できるすべての推奨事項が一覧表示されます。
[BigQuery ワークロード費用の最適化] パネルで、[すべて表示] をクリックします。
費用の推奨事項の表には、現在のプロジェクトに対して生成されたすべての推奨事項が一覧表示されます。たとえば、次のスクリーンショットでは、Recommender が
example_table
テーブルを分析し、example_column
列をクラスタリングすれば、表示された程度のバイト数とスロット数を節約できると推奨しています。テーブルの分析情報と推奨事項の詳細を表示するには、[推奨事項] をクリックします。
または、サイド ナビゲーションの [推奨事項] をクリックして、プロジェクトまたは組織で利用可能なすべての推奨事項を表示することもできます。
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)
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
recommenderSubtype |
パーティションまたはクラスタ | 推奨の種類を示します。 |
content.overview.partitionColumn |
パーティション | パーティショニングを推奨する列の名前。 |
content.overview.partitionTimeUnit |
パーティション | 推奨されるパーティショニングの時間単位。たとえば、DAY は、該当の列を日単位でパーティショニングすることが推奨されていることを意味します。 |
content.overview.clusterColumns |
クラスタ | クラスタリングを推奨する列の名前。 |
- Recommender のレスポンス内の他のフィールドの詳細については、REST Resource:
projects.locations.recommendersrecommendation
をご覧ください。 - Recommender API の使用の詳細については、API の使用 - 推奨事項をご覧ください。
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)
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
content.existingPartitionColumn |
クラスタ | 既存のパーティショニング列(存在する場合) |
content.tableSizeTb |
すべて | テーブルのサイズ(テラバイト単位) |
content.bytesReadMonthly |
すべて | テーブルから読み取られた月間のバイト数 |
content.slotMsConsumedMonthly |
すべて | テーブルで実行されているワークロードが消費した月間のスロット時間(ミリ秒単位) |
content.queryJobsCountMonthly |
すべて | テーブルで実行されている月間のジョブ数 |
- 分析情報のレスポンス内の他のフィールドの詳細については、REST Resource:
projects.locations.insightTypes.insights
をご覧ください。 - 分析情報の使用について詳しくは、API の使用 - 分析情報をご覧ください。
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 テーブルを含むプロジェクトの名前
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
recommenderSubtype |
パーティションまたはクラスタ | 推奨の種類を示します。 |
content.overview.partitionColumn |
パーティション | パーティショニングを推奨する列の名前。 |
content.overview.partitionTimeUnit |
パーティション | 推奨されるパーティショニングの時間単位。たとえば、DAY は、該当の列を日単位でパーティショニングすることが推奨されていることを意味します。 |
content.overview.clusterColumns |
クラスタ | クラスタリングを推奨する列の名前。 |
- Recommender のレスポンス内の他のフィールドの詳細については、REST Resource:
projects.locations.recommendersrecommendation
をご覧ください。 - Recommender API の使用の詳細については、API の使用 - 推奨事項をご覧ください。
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 テーブルを含むプロジェクトの名前
プロパティ | サブタイプに関連 | 説明 |
---|---|---|
content.existingPartitionColumn |
クラスタ | 既存のパーティショニング列(存在する場合) |
content.tableSizeTb |
すべて | テーブルのサイズ(テラバイト単位) |
content.bytesReadMonthly |
すべて | テーブルから読み取られた月間のバイト数 |
content.slotMsConsumedMonthly |
すべて | テーブルで実行されているワークロードが消費した月間のスロット時間(ミリ秒単位) |
content.queryJobsCountMonthly |
すべて | テーブルで実行されている月間のジョブ数 |
- 分析情報のレスポンス内の他のフィールドの詳細については、REST Resource:
projects.locations.insightTypes.insights
をご覧ください。 - 分析情報の使用について詳しくは、API の使用 - 分析情報をご覧ください。
トラブルシューティング
問題: 特定のテーブルに対する推奨事項が表示されない。
次のような状況では、パーティションとクラスタの推奨事項が表示されないことがあります。
- テーブルが 10 GB 未満。
- データ操作言語(DML)オペレーションによるテーブルの書き込みコストが高い。
- テーブルが過去 30 日間読み取られていない。
- 1 か月あたりの推定削減額が少なすぎる(1 スロット時間未満の削減)。
- テーブルがすでにクラスタ化されている。
料金
推奨事項を表示する際に、費用やワークロードのパフォーマンスへの悪影響が発生することはありません。