使用标签过滤资源
如需使用标签过滤资源,您可以执行以下操作之一:
- 使用 Google Cloud 控制台中的搜索栏。
- 创建用于 API、bq 命令行工具或客户端库的过滤规范。
限制
- API、bp 命令行工具和客户端库仅支持对数据集进行过滤。
- 您无法在任何 BigQuery 工具中按标签过滤作业。
准备工作
授予为用户提供执行本文档中的每个任务所需权限的 Identity and Access Management (IAM) 角色。
所需权限
如需使用标签过滤资源,您必须能够检索资源元数据。如需使用标签来过滤资源,您需要拥有以下 IAM 权限:
bigquery.datasets.get
(可让您过滤数据集)bigquery.tables.get
(可让您过滤表和视图)
以下预定义 IAM 角色都包含过滤数据集所需的权限:
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
以下预定义 IAM 角色都包含过滤表和视图所需的权限:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
此外,如果您拥有 bigquery.datasets.create
权限,则可以过滤自己创建的资源。
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限。
在 Google Cloud 控制台中过滤资源
如需生成已过滤的资源列表,请使用 Google Cloud 控制台:
在 Google Cloud 控制台中,找到探索器窗格。
在搜索栏中,输入
key
或key:value
对。结果会包括所有部分匹配项。例如,如需仅显示具有标签
department:shipping
的数据集,您可以输入department
或department:shipping
。
在 API 或 bq 命令行工具中过滤数据集
目前,API、bp 命令行工具和客户端库仅支持对数据集进行过滤。
如需使用 API、bp 工具或客户端库过滤数据集,请创建过滤规范并使用该规范:
- 作为 bp 工具中
--filter
标志的参数 - 作为 API 的
datasets.list
方法中filter
属性的值
过滤规范的限制
过滤规范具有以下限制:
- 仅支持
AND
逻辑运算符。系统会将用空格分隔的比较视为具有隐式AND
运算符。 - 目前,唯一符合过滤条件的字段是
labels.key
,其中key
是标签的名称。 - 过滤最多可包含 10 个表达式。
- 过滤操作区分大小写。
- 目前,API、bp 命令行工具和客户端库仅支持对数据集进行过滤。
过滤规范示例
过滤规范使用以下语法:
"field[:value][ field[:value]]..."
替换以下内容:
field
以labels.key
表示,其中 key 是标签键。value
是可选的标签值。
以下示例展示了如何生成过滤表达式。
如需列出具有 department:shipping
标签的资源,请使用以下过滤规范:
labels.department:shipping
如需列出具有多个标签的资源,请使用空格分隔 key:value
对。系统会将空格视为逻辑 AND
运算符。例如,如需列出具有 department:shipping
标签和 location:usa
标签的数据集,请使用以下过滤规范:
labels.department:shipping labels.location:usa
您可以单独对键进行过滤,而不是匹配键值对。以下过滤规范可列出所有具有 department
标签的数据集,无论其值如何。
labels.department
下面的等效过滤规范使用星号表示与 department
键关联的所有可能值。
labels.department:*
您还可以在过滤规范中使用标记。例如,如需列出具有 department:shipping
标签和 test_data
标记的资源,请使用以下过滤规范:
labels.department:shipping labels.test_data
在 bq 命令行工具和 API 中过滤数据集
如需使用 API、bp 命令行工具或客户端库过滤数据集,请执行以下操作:
bq
发出带 --filter
标志的 bq ls
命令。如果您要列出非默认项目中的数据集,请指定 --project_id
标志。
bq ls \ --filter "filter_specification" \ --project_id project_id
替换以下内容:
filter_specification
是有效的过滤规范。project_id
是您的项目 ID。
示例:
输入以下命令可列出默认项目中具有 department:shipping
标签的数据集:
bq ls --filter "labels.department:shipping"
输入以下命令可列出默认项目中具有 department:shipping
标签和 test_data
标记的数据集。
bq ls --filter "labels.department:shipping labels.test_data"
输入以下命令可列出 myotherproject
中具有 department:shipping
标签的数据集:
bq ls --filter "labels.department:shipping" --project_id myotherproject
每个命令的输出都会返回一个数据集列表,如下所示。
+-----------+ | datasetId | +-----------+ | mydataset | | mydataset2| +-----------+
API
调用 datasets.list
API 方法,并使用 filter
属性提供过滤规范。
Go
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 BigQuery Go API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Java
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Node.js
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 BigQuery Node.js API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Python
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 BigQuery Python API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
后续步骤
- 了解如何为 BigQuery 资源添加标签。
- 了解如何针对 BigQuery 资源查看标签。
- 了解如何针对 BigQuery 资源更新标签。
- 了解如何针对 BigQuery 资源删除标签。
- 参阅 Resource Manager 文档中的使用标签。