更新表快照元数据
本文档介绍如何使用 Google Cloud Console、bq update
命令或 tables.patch
API 更新表快照的说明、失效日期或访问权限政策。本文档适用于熟悉 BigQuery 中的表和表快照的用户。
权限和角色
本部分介绍更新表快照的元数据所需的 Identity and Access Management (IAM) 权限以及包含这些权限的预定义 IAM 角色。
权限
要更新表快照的元数据,您需要以下权限:
权限 | 资源 |
---|---|
bigquery.tables.update
|
表快照 |
角色
提供所需权限的预定义 BigQuery 角色如下所示:
角色 | 资源 |
---|---|
以下任意一项:bigquery.dataEditor bigquery.dataOwner biguqery.admin
|
表快照 |
限制
您可以更新表快照的元数据,但无法更新其数据,因为表快照数据是只读的。如需更新表快照的数据,您必须先将表快照恢复到标准表,然后更新标准表的数据。如需了解详情,请参阅恢复表快照。
更新表快照的元数据
您可以使用与更改标准表的元数据相同的方式来更改表快照的说明、到期时间和访问权限政策。 以下部分提供了一些示例。
更新说明
您可以使用下列选项之一来更改表快照的说明:
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,展开要更新的表快照的项目和数据集节点。
点击表快照的名称。
在出现的快照窗格中,点击详细信息标签页,然后点击修改详细信息。
在说明字段中,添加或更新表快照的说明。
点击保存。
bq
在 Cloud Shell 中输入以下命令:
bq update \ --description="DESCRIPTION" \ PROJECT_ID:DATASET_NAME.SNAPSHOT_NAME
请替换以下内容:
DESCRIPTION
:介绍快照的文本。例如Snapshot after table schema change X.
。PROJECT_ID
:包含该快照的项目的 ID。DATASET_NAME
:包含该快照的数据集的名称。SNAPSHOT_NAME
:快照的名称。
API
使用以下参数调用 tables.patch
方法:
参数 | 值 |
---|---|
projectId |
包含该快照的项目的 ID。 |
datasetId |
包含该快照的数据集的名称。 |
tableId |
快照的名称。 |
请求正文 description 字段 |
介绍快照的文本。例如 Snapshot after table schema change X 。 |
建议使用 tables.patch
方法,而不是 tables.update
方法,因为 tables.update
方法会替换整个 Table
资源。
更新到期时间
您可以使用下列选项之一来更改表快照的到期时间:
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,展开要更新的表快照的项目和数据集节点。
点击表快照的名称。
在出现的快照窗格中,点击详细信息标签页,然后点击修改详细信息。
在到期时间字段中,输入表快照的新到期时间。
点击保存。
bq
在 Cloud Shell 中输入以下命令:
bq update \ --expiration=EXPIRATION_TIME \ PROJECT_ID:DATASET_NAME.SNAPSHOT_NAME
请替换以下内容:
EXPIRATION_TIME
:从当前时间到过期时间的秒数。PROJECT_ID
:包含该快照的项目的 ID。DATASET_NAME
:包含该快照的数据集的名称。SNAPSHOT_NAME
:快照的名称。
API
使用以下参数调用 tables.patch
方法:
参数 | 值 |
---|---|
projectId |
包含该快照的项目的 ID。 |
datasetId |
包含该快照的数据集的名称。 |
tableId |
快照的名称。 |
请求正文 expirationTime 字段 |
快照的过期时间(以毫秒为单位,从 Epoch 算起)。 |
建议使用 tables.patch
方法,而不是 tables.update
方法,因为 tables.update
方法会替换整个 Table
资源。
更新访问权限
您可以使用下列选项之一来向用户授予查看表快照中数据的权限:
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
在探索器窗格中,展开要更新的表快照的项目和数据集节点。
点击表快照的名称。
在出现的快照窗格中,点击共享,然后点击添加主账号。
在出现的添加主账号窗格中,输入要授予表快照访问权限的主账号的标识符。
在选择角色下拉菜单中,选择 BigQuery,然后选择 BigQuery Data Viewer。
点击保存。
bq
在 Cloud Shell 中输入以下命令:
bq add-iam-policy-binding \ --member="user:PRINCIPAL" \ --role="roles/bigquery.dataViewer" \ PROJECT_ID:DATASET_NAME.SNAPSHOT_NAME
请替换以下内容:
PRINCIPAL
:您要授予表快照访问权限的主账号。PROJECT_ID
:包含该快照的项目的 ID。DATASET_NAME
:包含该快照的数据集的名称。SNAPSHOT_NAME
:快照的名称。
API
使用以下参数调用 tables.setIamPolicy
方法:
参数 | 值 |
---|---|
Resource |
projects/PROJECT_ID/datasets/DATASET_NAME/tables/SNAPSHOT_NAME |
请求正文 | { "policy": { "bindings": [ { "members": [ "user:PRINCIPAL" ], "role": "roles/bigquery.dataViewer" } ] } } |
请替换以下内容:
PROJECT_ID
:包含该快照的项目的 ID。DATASET_NAME
:包含该快照的数据集的名称。SNAPSHOT_NAME
:快照的名称。PRINCIPAL
:您要授予表快照访问权限的主账号。