管理邏輯檢視畫面
本文件說明如何在 BigQuery 中管理檢視表。您可以透過下列方式管理 BigQuery 檢視表:
事前準備
授予身分與存取權管理 (IAM) 角色,讓使用者擁有執行本文各項工作所需的權限。執行工作所需的權限 (如有) 會列在工作「必要權限」部分。
更新檢視畫面
建立檢視表後,您可以更新下列檢視表屬性:
所需權限
如要更新檢視區塊,您需要下列 IAM 權限:
bigquery.tables.updatebigquery.tables.get
下列預先定義的 IAM 角色都包含更新檢視畫面所需的權限:
roles/bigquery.dataEditorroles/bigquery.dataOwnerroles/bigquery.admin
此外,如果您具備 bigquery.datasets.create 權限,即可更新所建立資料集中的資料表和檢視表。
如要更新檢視表的 SQL 查詢,還需擁有檢視表 SQL 查詢所參照的資料表查詢權限。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色與權限一文。
更新檢視表的 SQL 查詢
您可以透過以下方式更新用來定義檢視表的 SQL 查詢:
- 使用 Google Cloud 控制台
- 使用 bq 指令列工具的
bq update指令 - 呼叫
tables.patchAPI 方法 - 使用用戶端程式庫
您可以使用 API 或 bq 指令列工具,將 SQL 方言從舊版 SQL 變更為 GoogleSQL。您無法在Google Cloud 控制台中將舊版 SQL 檢視表更新為 GoogleSQL。
如何更新檢視表的 SQL 查詢:
控制台
點選左側窗格中的 「Explorer」:

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

bq
發出含有 --view 旗標的 bq update 指令。如要使用 GoogleSQL,或將查詢方言從舊版 SQL 更新為 GoogleSQL,請加上 --use_legacy_sql 旗標,並將其設定為 false。
如果查詢參照儲存在 Cloud Storage 或本機檔案中的外部使用者定義函式資源,請使用 --view_udf_resource 旗標指定這些資源。本文不示範 --view_udf_resource 旗標。如要進一步瞭解如何使用 UDF,請參閱 GoogleSQL 使用者定義函式。
如果您要更新在預設專案以外的專案中的檢視表,請使用下列格式將專案 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 或本機檔案系統路徑,該檔案會做為檢視表使用的使用者定義函式資源,而立即載入並進行評估。請重複該標記以指定多個檔案。
- 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」(資料集),然後按一下資料集。
依序點按「總覽」>「表格」,然後選取檢視畫面。
按一下「詳細資料」分頁標籤,然後點選「編輯詳細資料」。
在「編輯詳細資料」對話方塊的「到期時間」選單中,選取「指定日期」。
在「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 主控台建立檢視區塊時,無法新增說明。檢視區塊建立完成後,您可以在「詳細資料」頁面上新增說明。
點選左側窗格中的 「Explorer」:

在「Explorer」窗格中展開專案,按一下「Datasets」(資料集),然後按一下資料集。
依序點按「總覽」>「表格」,然後選取檢視畫面。
按一下 [Details] (詳細資料) 分頁標籤。
在「查看資訊」部分中,按一下「編輯詳細資料」。
在「編輯詳細資料」對話方塊的「說明」欄位中,輸入新說明或編輯現有說明。
如要儲存新的說明,請按一下「儲存」。
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」(資料集),然後按一下資料集。
依序點按「總覽」>「表格」,然後選取檢視畫面。
在詳細資料窗格中,按一下「複製」。
在「複製檢視區塊」對話方塊中,執行下列操作:
- 在「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",然後按一下「刪除」確認操作。
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 中檢視區塊的存取權,請參閱「授權檢視區塊」。