查看分区和聚类建议
本文档介绍了分区和聚类 Recommender 的工作原理,以及如何查看建议和数据分析。
BigQuery 分区和聚类 Recommender 会生成分区或聚类建议以优化 BigQuery 表。Recommender 会基于 BigQuery 表分析工作流,并提供建议,以便您使用表分区或表聚类更好地优化工作流和查询费用。
如需详细了解 Recommender 服务,请参阅 Recommender 概览。
Recommender 的工作原理
为了生成建议,分区和聚类 Recommender 会使用项目过去 30 天内的工作负载执行数据来分析每个 BigQuery 表,以获取欠佳分区和聚类配置。Recommender 还会使用机器学习来预测可以使用不同分区或聚类配置优化工作负载执行的程度。如果 Recommender 发现对表进行分区或聚类可显著节省费用,则 Recommender 会生成建议。分区和聚类 Recommender 会生成以下类型的建议:
现有表类型 | 建议子类型 | 建议示例 |
---|---|---|
非分区、非聚类 | 分区 | “通过按 DAY 对 column_C 进行分区,每月可节省约 64 个小时的槽时间” |
非分区、非聚类 | 集群 | “通过对 column_C 进行聚类,每月可节省约 64 个小时的槽时间” |
分区、非聚类 | 集群 | “通过对 column_C 进行聚类,每月可节省约 64 个小时的槽时间” |
每条建议由三部分组成:
- 对特定表进行分区或聚类的指导
- 要对其进行分区或聚类的表中的特定列
- 预计每月节省的应用建议的费用
为了计算工作负载可能节省的费用,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 Partitioning Clustering Recommender Viewer (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 资源:
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 |
全部 | 表的大小(以 TB 为单位) |
content.bytesReadMonthly |
全部 | 从表中读取的每月字节数 |
content.slotMsConsumedMonthly |
全部 | 表上运行的工作负载每月使用的槽毫秒数 |
content.queryJobsCountMonthly |
全部 | 表上运行的作业的每月计数 |
- 如需详细了解数据分析响应中的其他字段,请参阅 REST 资源:
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" http://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 资源:
projects.locations.recommendersrecommendation
。 - 如需详细了解如何使用 Recommender API,请参阅使用 API - 建议。
如需使用 REST API 查看表数据分析,请运行以下命令:
curl -H "Authorization: Bearer $GCLOUD_AUTH_TOKEN" -H "x-goog-user-project: PROJECT_NAME" http://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 |
全部 | 表的大小(以 TB 为单位) |
content.bytesReadMonthly |
全部 | 从表中读取的每月字节数 |
content.slotMsConsumedMonthly |
全部 | 表上运行的工作负载每月使用的槽毫秒数 |
content.queryJobsCountMonthly |
全部 | 表上运行的作业的每月计数 |
- 如需详细了解数据分析响应中的其他字段,请参阅 REST 资源:
projects.locations.insightTypes.insights
。 - 如需详细了解如何使用数据分析,请参阅使用 API - 数据分析。
问题排查
问题:特定表未显示任何建议。
在以下情况下,可能不会显示分区和聚类建议:
- 该表小于 10 GB。
- 该表因数据操纵语言 (DML) 操作而产生较高的写入费用。
- 该表在过去 30 天内没有被读取。
- 估算的每月节省微不足道(少于 1 槽小时)。
- 该表已进行聚类。
价格
查看建议时,无需支付任何费用,也不会对工作负载性能产生负面影响。