更新資料表快照中繼資料
本文說明如何使用 Google Cloud 控制台、bq update 指令或 tables.patch API,更新資料表快照的說明、到期日或存取權政策。本文適用於熟悉 BigQuery 中資料表和資料表快照的使用者。
權限與角色
本節說明更新資料表快照中繼資料所需的身分與存取權管理 (IAM) 權限,以及授予這些權限的預先定義 IAM 角色。
權限
如要更新資料表快照的中繼資料,您需要下列權限:
| 權限 | 資源 | 
|---|---|
| bigquery.tables.update | 資料表快照 | 
角色
提供必要權限的預先定義 BigQuery 角色如下:
| 角色 | 資源 | 
|---|---|
| 下列任一項: bigquery.dataEditorbigquery.dataOwnerbiguqery.admin | 資料表快照 | 
限制
您可以更新資料表快照的中繼資料,但無法更新資料,因為資料表快照資料為唯讀。如要更新資料表快照的資料,您必須先將資料表快照還原至標準資料表,然後更新標準資料表的資料。詳情請參閱「還原資料表快照」。
更新資料表快照的中繼資料
變更資料表快照的說明、到期時間和存取政策,與變更標準資料表的中繼資料方式相同。以下各節提供幾個範例。
更新說明
如要變更資料表快照的說明,請使用下列任一選項:
主控台
- 前往 Google Cloud 控制台的「BigQuery」頁面。 
- 在左側窗格中,按一下「Explorer」:  - 如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。 
- 在「Explorer」窗格中展開專案,按一下「Datasets」,然後按一下含有資料表快照的資料集。 
- 依序點按「總覽」>「資料表」,然後點選要更新的資料表快照名稱。 
- 前往「詳細資料」分頁,然後點選「編輯詳細資料」。 
- 在「Description」(說明) 欄位中,新增或更新表格快照的說明。 
- 按一下 [儲存]。 
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」頁面。 
- 在左側窗格中,按一下「Explorer」:  
- 在「Explorer」窗格中展開專案,按一下「Datasets」,然後按一下含有資料表快照的資料集。 
- 依序點按「總覽」>「資料表」,然後點選要更新的資料表快照名稱。 
- 前往「詳細資料」分頁,然後點選「編輯詳細資料」。 
- 在「Expiration time」(到期時間) 欄位中,輸入資料表快照的新到期時間。 
- 按一下 [儲存]。 
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」頁面。 
- 在左側窗格中,按一下「Explorer」:  
- 在「Explorer」窗格中展開專案,按一下「Datasets」,然後按一下含有資料表快照的資料集。 
- 依序點按「總覽」>「資料表」,然後按一下要共用的資料表快照名稱。 
- 在隨即顯示的快照窗格中,依序按一下「共用」和「新增主體」。 
- 在隨即顯示的「新增主體」窗格中,輸入要授予表格快照存取權的主體 ID。 
- 在「Select a role」(選取角色) 下拉式選單中,依序選擇「BigQuery」和「BigQuery Data Viewer」(BigQuery 資料檢視者)。 
- 按一下 [儲存]。 
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:您要授予資料表快照存取權的主體。