更新資料表快照中繼資料

本文說明如何使用 Google Cloud 控制台、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. 點選左側窗格中的 「Explorer」。

    醒目顯示的「Explorer」窗格按鈕。

    如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。

  3. 在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和含有資料表快照的資料集。

  4. 依序點選「Overview」(總覽)>「Tables」(資料表),然後按一下要更新的 資料表快照名稱。

  5. 前往「詳細資料」分頁,然後按一下「編輯詳細資料」。

  6. 在「Description」(說明) 欄位中,新增或更新資料表快照的說明。

  7. 按一下 [儲存]。

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. 點選左側窗格中的 「Explorer」。

    醒目顯示的「Explorer」窗格按鈕。

  3. 在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和含有資料表快照的資料集。

  4. 依序點選「Overview」(總覽)>「Tables」(資料表),然後按一下要更新的 資料表快照名稱。

  5. 前往「詳細資料」分頁,然後按一下「編輯詳細資料」。

  6. 在「Expiration time」(到期時間) 欄位中,輸入資料表快照的新到期時間。

  7. 按一下 [儲存]。

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. 點選左側窗格中的 「Explorer」。

    醒目顯示的「Explorer」窗格按鈕。

  3. 在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和含有資料表快照的資料集。

  4. 依序點選「Overview」(總覽) >「Tables」(資料表),然後按一下要共用的 資料表快照名稱。

  5. 在隨即顯示的快照窗格中,依序點選「Share」(共用) 和「Add principal」(新增主體)。

  6. 在顯示的「Add principals」(新增主體) 窗格中,輸入要授予資料表快照存取權的主體 ID。

  7. 在「Select a role」(選取角色) 下拉式選單中,依序選擇「BigQuery」和「BigQuery Data Viewer」(BigQuery 資料檢視者)。

  8. 按一下 [儲存]。

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:您要授予資料表快照存取權的主體。

後續步驟