管理邏輯檢視表
本文件說明如何在 BigQuery 中管理檢視表。您可以透過下列方式管理 BigQuery 檢視表:
事前準備
授予 Identity and Access Management (IAM) 角色,讓使用者具備執行本文件各項工作所需的權限。執行工作所需的權限 (如有) 會列在工作的「必要權限」部分。
更新檢視表
建立檢視表後,您可以更新下列檢視表屬性:
所需權限
如要更新檢視表,您必須具備下列 IAM 權限:
bigquery.tables.updatebigquery.tables.get
下列每個預先定義的 IAM 角色都包含更新檢視表所需的權限:
roles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
此外,如果您具備 bigquery.datasets.create 權限,則可更新所建立資料集中的資料表和檢視表。
如要更新檢視表的 SQL 查詢,您也必須具備查詢檢視表 SQL 查詢所參照任何資料表的權限。
如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「預先定義的角色和權限」。
範例:參照跨專案 UDF 和資料集的檢視表
假設您要更新專案 A (authorized_dataset) 中的檢視表。這項檢視表查詢會彙整專案 B (shared_dataset) 中的資料表,並呼叫專案 C (udf_dataset) 中的 UDF。
必須具備下列權限:
- 專案 A:您更新的特定檢視表資源
bigquery.tables.update。 - 專案 B:參照共用資源的
bigquery.datasets.get和bigquery.tables.getData。 - 專案 C:
bigquery.routines.get,用於您呼叫的特定 UDF。
重要的是,您的身分不需要具備專案 B 或專案 C 的 bigquery.datasets.update 權限,即可執行這項更新。
更新檢視表的 SQL 查詢
您可以透過以下方式更新用來定義檢視表的 SQL 查詢:
- 使用 Google Cloud 控制台
- 使用 bq 指令列工具的
bq update指令 - 呼叫
tables.patchAPI 方法 - 使用用戶端程式庫
您可以在 API 或 bq 指令列工具中,將 SQL 方言從舊版 SQL 變更為 GoogleSQL。您無法在Google Cloud 控制台中,將舊版 SQL 檢視表更新為 GoogleSQL。
如何更新檢視表的 SQL 查詢:
控制台
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和資料集。
依序點選「總覽」>「表格」,然後選取檢視畫面。
點按「Details」(詳細資料) 分頁標籤。
按一下「查詢」方塊上方的「編輯查詢」。查詢會在查詢編輯器中開啟。
編輯 SQL 查詢,然後依序點選「儲存 view」 > 「儲存 view」:

bq
發出含有 --view 旗標的 bq update 指令。如要使用 GoogleSQL,或將查詢方言從舊版 SQL 更新為 GoogleSQL,請加入 --use_legacy_sql 旗標並設為 false。
如果查詢參照儲存在 Cloud Storage 或本機檔案中的外部 user-defined function 資源,請使用 --view_udf_resource 旗標指定這些資源。本文不示範 --view_udf_resource 旗標。如要進一步瞭解如何使用 UDF,請參閱「GoogleSQL user-defined function」。
如果您要更新在預設專案以外的專案中的檢視表,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset。
bq update \ --use_legacy_sql=false \ --view_udf_resource=path_to_file \ --view='query' \ project_id:dataset.view
更改下列內容:
- path_to_file:程式碼檔案的 URI 或本機檔案系統路徑,該檔案會立即載入並評估為檢視表使用的 user-defined function 資源。請重複該標記以指定多個檔案。
- query:有效的 GoogleSQL 查詢
- project_id:專案 ID
- dataset:資料集名稱,內含要更新的檢視表
- view:要更新的檢視表名稱
範例
輸入下列指令,更新 mydataset 中名為 myview 之檢視表的 SQL 查詢。mydataset 在您的預設專案中。用於更新檢視表的範例查詢會從美國姓名資料公開資料集查詢資料。
bq update \
--use_legacy_sql=false \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC;' \
mydataset.myview
輸入下列指令,更新 mydataset 中名為 myview 之檢視表的 SQL 查詢。mydataset 在 myotherproject 中,而不是您的預設專案中。用於更新檢視表的範例查詢會從美國姓名資料公開資料集查詢資料。
bq update \
--use_legacy_sql=false \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC;' \
myotherproject:mydataset.myview
API
您可以透過下列方式更新檢視表:使用包含已更新 view 屬性的資料表資源呼叫 tables.patch 方法。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。
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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
更新視圖的到期時間
您可以設定資料集層級 (會同時影響資料表和視圖) 的資料表預設到期時間,也可以在建立視圖時設定視圖的到期時間。如果您在建立檢視表時設定到期時間,系統將會忽略資料集的資料表預設到期時間。如果您未在資料集層級設定預設資料表到期時間,也未在建立檢視表時設定到期時間,則檢視表永遠不會到期,您必須手動刪除檢視表。
建立檢視表後,您隨時可以透過下列方式更新檢視表的到期時間:
- 使用 Google Cloud 控制台
- 使用以 GoogleSQL 語法編寫的資料定義語言 (DDL) 陳述式
- 使用 bq 指令列工具的
bq update指令 - 呼叫
tables.patchAPI 方法 - 使用用戶端程式庫
如何更新檢視表的到期時間:
控制台
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和資料集。
依序點選「總覽」 > 「資料表」,然後選取檢視表。
按一下「詳細資料」分頁標籤,然後點選「編輯詳細資料」。
在「Edit detail」(編輯詳細資料) 對話方塊的「Expiration time」(到期時間) 選單中,選取「Specify date」(指定日期)。
在「Expiration time」(到期時間) 欄位中,使用日期挑選器工具選取日期和時間。
按一下 [儲存]。更新後的到期時間會顯示在「View info」(查看資訊) 專區的「View expiration」(查看到期時間) 列中。
SQL
使用 ALTER VIEW SET OPTIONS DDL 陳述式:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER VIEW DATASET_ID.MY_VIEW SET OPTIONS ( expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));
替換下列內容:
- DATASET_ID:檢視表所在資料集的 ID
- MY_VIEW:要更新的檢視表名稱
- NEW_TIMESTAMP:TIMESTAMP 值
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
發出含有 --expiration 旗標的 bq update 指令。如果您要更新在預設專案以外的專案中的檢視表,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset。
bq update \ --expiration integer \ project_id:dataset.view
更改下列內容:
- integer:資料表的預設生命週期 (以秒為單位)。最小值是 3600 秒 (1 小時)。到期時間為目前時間加整數值。
- project_id:專案 ID
- dataset:資料集名稱,內含要更新的檢視表
- view:要更新的檢視表名稱
範例
輸入下列指令,將 mydataset 中的 myview 到期時間更新為 5 天 (432000 秒)。mydataset 位於您的預設專案中。
bq update \
--expiration 432000 \
mydataset.myview
輸入下列指令,將 mydataset 中的 myview 到期時間更新為 5 天 (432000 秒)。mydataset 在 myotherproject 中,而不是您的預設專案中。
bq update \
--expiration 432000 \
myotherproject:mydataset.myview
API
呼叫 tables.patch 方法並使用資料表資源中的 expirationTime 屬性。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。使用 REST API 時,檢視表到期時間會以毫秒為單位表示。
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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
更新視圖的說明
您可以透過以下方式更新檢視表的說明:
- 使用 Google Cloud 控制台
- 使用以 GoogleSQL 語法編寫的資料定義語言 (DDL) 陳述式
- 使用 bq 指令列工具的
bq update指令 - 呼叫
tables.patchAPI 方法 - 使用用戶端程式庫
如何更新檢視表的說明:
控制台
使用 Google Cloud 控制台建立檢視表時,無法新增說明。建立檢視表後,您可以在「Details」(詳細資料) 頁面新增說明。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和資料集。
依序點選「總覽」 > 「資料表」,然後選取檢視表。
點按「Details」(詳細資料) 分頁標籤。
按一下「查看資訊」部分的「編輯詳細資訊」。
在「Edit detail」(編輯詳細資料) 對話方塊的「Description」(說明) 欄位中,輸入新說明或編輯現有說明。
如要儲存新的說明,請按一下「儲存」。
SQL
使用 ALTER VIEW SET OPTIONS DDL 陳述式:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER VIEW DATASET_ID.MY_VIEW SET OPTIONS ( description = 'NEW_DESCRIPTION');
替換下列內容:
- DATASET_ID:檢視表所在資料集的 ID
- MY_VIEW:要更新的檢視表名稱
- NEW_DESCRIPTION:新檢視表說明
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
發出含有 --description 旗標的 bq update 指令。如果您要更新在預設專案以外的專案中的檢視表,請使用下列格式將專案 ID 新增至資料集名稱:[PROJECT_ID]:[DATASET]。
bq update \ --description "description" \ project_id:dataset.view
更改下列內容:
- description:描述檢視畫面的文字,以引號括住
- project_id:您的專案 ID。
- dataset:資料集名稱,內含要更新的檢視表
- view:要更新的檢視表名稱
範例
輸入下列指令,將 mydataset 中的 myview 說明變更為 「Description of mydataset」(mydataset 的說明)。mydataset 位於您的預設專案中。
bq update \
--description "Description of myview" \
mydataset.myview
輸入下列指令,將 mydataset 中的 myview 說明變更為 「Description of mydataset」(mydataset 的說明)。mydataset 在 myotherproject 中,而不是您的預設專案中。
bq update \
--description "Description of myview" \
myotherproject:mydataset.myview
API
呼叫 tables.patch 方法並使用 description 屬性更新資料表資源中的檢視表說明。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。
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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
複製檢視表
您可以使用 Google Cloud 控制台複製檢視表。
您無法使用 bq 指令列工具、REST API 或用戶端程式庫複製檢視表,但可以在目標資料集中複製檢視表。
所需權限
如要在 Google Cloud 控制台複製檢視表,您必須具備來源和目的地資料集的 IAM 權限。
您必須具備來源資料集的下列權限:
bigquery.tables.getbigquery.tables.getData(必須具備這項權限,才能存取檢視表 SQL 查詢參照的資料表)
您必須具備下列目的地資料集權限:
bigquery.tables.create(可在目的地資料集中建立檢視表副本)
下列各項預先定義的 IAM 角色,都包含複製檢視表所需的權限:
roles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
此外,如果您具備 bigquery.datasets.create 權限,則可複製您建立的資料集中的檢視表。除非您是目的地資料集的建立者,否則也需要該資料集的存取權。
如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「預先定義的角色和權限」。
複製檢視表
如要複製檢視畫面,請按照下列步驟操作:
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和資料集。
依序點選「總覽」>「資料表」,然後選取檢視表。
在詳細資料窗格中,按一下「複製」。
在「Copy view」(複製檢視表) 對話方塊中,執行下列操作:
- 在「Source」(來源) 區段中,確認專案名稱、資料集名稱和資料表名稱正確無誤。
在「目的地」部分,執行下列操作:
- 在「Project」(專案) 部分,選擇要將檢視表複製到哪個專案。
- 在「Dataset」(資料集) 部分,選擇要包含複製檢視表的資料集。
- 在「Table」(資料表) 中輸入檢視表名稱。您可以在方塊中輸入新的檢視表名稱,以重新命名檢視表。您輸入的新名稱必須遵循檢視表命名規則。
按一下「複製」:

複製工作須遵守相關限制。詳情請參閱「配額與限制」。
重新命名檢視表
只有在使用 Google Cloud 控制台複製檢視表時,才能重新命名檢視表。如要瞭解如何在複製檢視表時重新命名,請參閱「複製檢視表」。
您無法使用 bq 指令列工具、API 或用戶端程式庫變更現有檢視表的名稱。因此,您必須以新名稱重新建立檢視表。
刪除檢視
您可以透過下列方式刪除檢視表:
- 使用 Google Cloud 控制台
- 使用 bq 指令列工具的
bq rm指令 - 呼叫
tables.deleteAPI 方法
無論使用哪種方法,一次只能刪除一個檢視表。
如要在指定時段過後自動刪除檢視表,請設定資料集層級的預設到期時間,或者在建立檢視表時設定到期時間。
刪除授權檢視表後,可能需要 24 小時,才會從來源資料集的授權檢視表清單中移除。
刪除檢視表也會一併刪除與該檢視表相關聯的所有權限。重新建立已刪除的檢視表時,您也必須手動重新設定先前與其相關聯的所有存取權限。
所需權限
如要刪除檢視表,您必須具備下列 IAM 權限:
bigquery.tables.delete
下列預先定義的 IAM 角色,都具備刪除檢視表所需的權限:
roles/bigquery.dataOwnerroles/bigquery.dataEditorroles/bigquery.admin
此外,如果您具備 bigquery.datasets.create 權限,則可刪除您建立的資料集中的檢視表。
如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「預先定義的角色和權限」。
刪除檢視表
如何刪除視圖:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和資料集。
依序點選「總覽」 > 「資料表」,然後點選檢視表。
在詳細資料窗格中,按一下「Delete」(刪除)。
在對話方塊中輸入
"delete",然後點選「刪除」確認。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
DROP VIEW mydataset.myview;
替換下列內容:
- DATASET_ID:檢視表所在資料集的 ID
- MY_VIEW:要更新的檢視表名稱
- NEW_DESCRIPTION:新檢視表說明
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
請使用 bq rm 指令,搭配 --table 旗標 (或 -t 捷徑) 來刪除檢視表。使用 bq 指令列工具移除檢視表時,必須確認這項操作。您可以使用 --force 旗標 (或 -f 捷徑) 來略過確認程序。
如果檢視表位於非預設專案中的資料集裡,請使用下列格式將專案 ID 新增至資料集名稱:project_id:dataset。
bq rm \ -f \ -t \ project_id:dataset.view
其中:
- project_id 是您的專案 ID。
- dataset 是包含該資料表之資料集的名稱。
- view 是您要刪除的視圖名稱。
範例:
您可以使用 bq 指令列工具執行 bq 指令。
在 Google Cloud 控制台中啟用 Cloud Shell。
輸入下列指令從 mydataset 刪除 myview。mydataset 在您的預設專案中。
bq rm -t mydataset.myview
輸入下列指令從 mydataset 刪除 myview。mydataset 在 myotherproject 中,而不是您的預設專案中。
bq rm -t myotherproject:mydataset.myview
輸入下列指令從 mydataset 刪除 myview。mydataset 在您的預設專案中。這個指令使用 -f 捷徑略過確認程序。
bq rm -f -t mydataset.myview
API
呼叫 tables.delete API 方法並使用tableId 參數指定要刪除的檢視表。
C#
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 C# 設定操作說明進行操作。詳情請參閱 BigQuery C# API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 PHP 設定操作說明進行操作。詳情請參閱 BigQuery PHP API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Ruby 設定操作說明進行操作。詳情請參閱 BigQuery Ruby API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
還原檢視畫面
您無法直接還原已刪除的檢視表,但某些情況下有替代方案:
- 如果檢視表因父項資料集遭刪除而刪除,您可以取消刪除資料集,以擷取檢視表。
- 如果檢視表已明確刪除,您可以使用上次建立或更新檢視表時所用的查詢,重新建立檢視表。您可以在記錄中找到檢視表建立或更新作業的查詢定義。
查看安全性
如要控管 BigQuery 檢視表的存取權,請參閱「授權檢視表」。