更新表快照元数据

本文档介绍如何使用 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
表快照

限制

您可以更新表快照的元数据,但无法更新其数据,因为表快照数据是只读的。如需更新表快照的数据,您必须先将表快照恢复到标准表,然后更新标准表的数据。如需了解详情,请参阅恢复表快照

更新表快照的元数据

您可以使用与更改标准表的元数据相同的方式来更改表快照的说明、到期时间和访问权限政策。 以下部分提供了一些示例。

更新说明

您可以使用下列选项之一来更改表快照的说明:

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,展开要更新的表快照的项目和数据集节点。

  3. 点击表快照的名称。

  4. 在出现的快照窗格中,点击详细信息标签页,然后点击修改详细信息

  5. 说明字段中,添加或更新表快照的说明。

  6. 点击保存

bq

在 Cloud Shell 中输入以下命令:

转到 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 资源。

更新到期时间

您可以使用下列选项之一来更改表快照的到期时间:

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,展开要更新的表快照的项目和数据集节点。

  3. 点击表快照的名称。

  4. 在出现的快照窗格中,点击详细信息标签页,然后点击修改详细信息

  5. 到期时间字段中,输入表快照的新到期时间。

  6. 点击保存

bq

在 Cloud Shell 中输入以下命令:

转到 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 资源。

更新访问权限

您可以使用下列选项之一来向用户授予查看表快照中数据的权限:

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,展开要更新的表快照的项目和数据集节点。

  3. 点击表快照的名称。

  4. 在出现的快照窗格中,点击共享,然后点击添加主账号

  5. 在出现的添加主账号窗格中,输入要授予表快照访问权限的主账号的标识符。

  6. 选择角色下拉菜单中,选择 BigQuery,然后选择 BigQuery Data Viewer

  7. 点击保存

bq

在 Cloud Shell 中输入以下命令:

转到 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:您要授予表快照访问权限的主账号

后续步骤