在本教學課程中,您將在 BigQuery 中建立授權檢視表,讓資料分析師用來分析查詢結果,而不必存取基礎來源資料。
方法是透過 SQL 查詢建立授權檢視表,限制資料分析師可在查詢結果中查看的資料欄。
目標
- 建立資料集,以便加入來源資料。
- 執行查詢,將資料載入來源資料集的目的地資料表。
- 建立資料集,以便加入授權檢視表。
- 透過 SQL 查詢建立授權檢視表,限制資料分析師可在查詢結果中查看的資料欄。
- 授予資料分析師執行查詢工作的權限。
- 向資料分析師授予包含授權檢視表的資料集存取權。
- 將來源資料集的檢視權限授予授權檢視表。
費用
在本文件中,您會使用下列 Google Cloud計費元件:
您可以使用 Pricing Calculator,根據預測用量估算費用。
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。
事前準備
- 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
啟用 BigQuery API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。- 確認您具備必要權限,可執行本文件中的工作。
建立資料集來儲存來源資料
首先,建立資料集來儲存來源資料。
如要建立來源資料集,請選擇下列其中一個選項:
控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中,找到要建立資料集的專案,然後依序點選旁邊的 「View actions」(查看動作) >「Create dataset」(建立資料集)。
在「Create dataset」(建立資料集) 頁面執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
github_source_data。在「位置類型」部分,確認已選取「多區域」。
在「多區域」部分,選擇「美國」或「歐盟」。您在本教學課程中建立的所有資源都應位於同一個多區域位置。
點選「建立資料集」。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE SCHEMA github_source_data;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
建立資料表並載入來源資料
建立來源資料集後,請將 SQL 查詢結果儲存至目的地資料表,藉此填入資料表。查詢會從 GitHub 公開資料集擷取資料。
控制台
前往「BigQuery」頁面。
在查詢編輯器中輸入下列查詢:
SELECT commit, author, committer, repo_name FROM `bigquery-public-data.github_repos.commits` LIMIT 1000;依序點選「編輯」>「查詢設定」。
在「Destination」(目的地) 部分,選取「Set a destination table for query results」(為查詢結果設定目的地資料表)。
在「Dataset」部分,輸入
PROJECT_ID.github_source_data。將
PROJECT_ID替換為專案 ID。在「Table Id」(資料表 ID) 部分輸入
github_contributors。按一下 [儲存]。
按一下「執行」。
查詢完成後,在「Explorer」窗格中,依序點選「Datasets」(資料集) 和「
github_source_data」資料集。依序點選「總覽」 > 「資料表」,然後點選
github_contributors資料表。如要確認資料已寫入資料表,請點選「預覽」分頁標籤。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
建立資料集來儲存授權檢視表
建立來源資料集後,請建立新的獨立資料集,用於儲存要與資料分析師共用的授權檢視表。在後續步驟中,您會授予授權檢視表存取來源資料集資料的權限。資料分析師可以存取授權檢視表,但無法直接存取來源資料。
授權檢視表應建立在與來源資料不同的資料集中。這樣一來,資料擁有者就能授予使用者授權檢視表的存取權,而不必同時授予基礎資料的存取權。來源資料集和授權檢視表資料集必須位於相同的區域位置。
如要建立資料集來儲存檢視表,請選擇下列任一選項:
控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中,選取要建立資料集的專案。
展開 「View actions」(查看動作) 選項,然後點選「Create dataset」(建立資料集)。
在「Create dataset」(建立資料集) 頁面執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
shared_views。在「位置類型」部分,確認已選取「多區域」。
在「多區域」部分,選擇「美國」或「歐盟」。您在本教學課程中建立的所有資源都應位於同一個多區域位置。
點選「建立資料集」。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE SCHEMA shared_views;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
在新資料集中建立授權檢視表
您可在新資料集中建立您想要授權的視圖。這是您與資料分析師分享的視圖。建立這個檢視表時,您可以使用 SQL 查詢,排除不希望資料分析師看到的資料欄。
github_contributors 來源資料表包含兩個 RECORD 類型的欄位:author 和 committer。在本教學課程中,授權檢視表會排除作者姓名以外的所有作者資料,以及提交者姓名以外的所有提交者資料。
如要在新資料集中建立檢視表,請選擇下列其中一個選項:
控制台
前往「BigQuery」頁面。
在查詢編輯器中輸入下列查詢。
SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors`;
將
PROJECT_ID替換為專案 ID。依序點選「檔案」>「儲存」>「儲存檢視畫面」。
在「Save view」(儲存檢視畫面) 對話方塊中,執行下列操作:
在「Project」(專案) 部分,確認已選取專案。
在「Dataset」部分,輸入
shared_views。在「Table」(資料表) 中輸入
github_analyst_view。按一下 [儲存]。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE VIEW shared_views.github_analyst_view AS ( SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors` );
將
PROJECT_ID替換為您的專案 ID。按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
授予資料分析師執行查詢工作的權限
如要查詢檢視表,資料分析師需要 bigquery.jobs.create 權限,才能執行查詢工作。只有在執行查詢工作的專案 (帳單或執行專案) 中,才需要這項權限,該專案可能與包含檢視表的專案不同。
在本節中,您會將 bigquery.user 角色授予資料分析師,讓他們在用於執行工作的專案中擁有該角色。bigquery.user 角色包含 bigquery.jobs.create 權限。在後續步驟中,您會授予資料分析師存取檢視表的權限。
如要將資料分析師群組指派給專案的 bigquery.user 角色,以便執行工作,請按照下列步驟操作:
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
確認專案選取器中選取的專案,是分析師用來執行工作的專案。
按一下「Grant access」(授予存取權)。
在「Grant access to」(授予存取權) 對話方塊中,執行下列操作:
在「New principals」(新增主體) 欄位中,輸入資料分析師所屬的群組。例如:
data_analysts@example.com。在「Select a role」(請選擇角色) 欄位中,搜尋並選取「BigQuery User」(BigQuery 使用者) 角色。
按一下 [儲存]。
授予資料分析師查詢授權 view 的權限
如要讓資料分析師查詢檢視表,您必須在資料集層級或檢視表層級授予 bigquery.dataViewer 角色。在資料集層級授予這個角色,分析師就能存取資料集內的所有資料表和檢視表。本教學課程建立的資料集包含單一授權檢視表,因此您會在資料集層級授予存取權。如果您有一組授權檢視表需要授予存取權,建議改用授權資料集。
您先前授予資料分析師的 bigquery.user 角色,可讓他們在執行查詢工作的專案中,取得建立查詢工作所需的權限。不過,除非他們也具備已授權檢視表或包含該檢視表的資料集的 bigquery.dataViewer 存取權,否則無法成功查詢檢視表。
如要將包含授權檢視表的資料集存取權授予資料分析師 bigquery.dataViewer,請按照下列步驟操作:
控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中,點選「Datasets」(資料集),然後選取「
shared_views」資料集,開啟「Details」(詳細資料) 分頁。依序點選「」「共用」>「權限」。
在「Share permissions」(共用權限) 窗格中,按一下「Add principal」(新增主體)。
在「New principals」(新增主體) 部分,輸入資料分析師所屬的群組,例如
data_analysts@example.com。按一下「Select a role」(選取角色),然後依序選取「BigQuery」>「BigQuery Data Viewer」(BigQuery 資料檢視者)。
按一下 [儲存]。
按一下 [關閉]。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
授權視圖存取來源資料集
為包含授權檢視表的資料集建立存取控管機制後,請授予授權檢視表對來源資料集的存取權。這項授權會授予檢視表存取來源資料的權限,但不會授予資料分析師群組。
如要授予授權檢視表存取來源資料的權限,請選擇下列其中一個選項:
控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中,點選「Datasets」(資料集),然後選取「
github_source_data」資料集,開啟「Details」(詳細資料) 分頁。依序點選「共用」>「授權檢視表」。
在「Authorized views」(授權檢視表) 窗格中,為「Authorized view」(授權檢視表) 輸入
PROJECT_ID.shared_views.github_analyst_view。將 PROJECT_ID 替換為專案 ID。
按一下「新增授權」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
驗證設定
設定完成後,資料分析師群組的成員 (例如 data_analysts) 即可查詢檢視表,驗證設定。
為驗證設定,資料分析師應執行下列查詢:
前往「BigQuery」頁面
在查詢編輯器中輸入下列陳述式:
SELECT * FROM `
PROJECT_ID.shared_views.github_analyst_view`;將
PROJECT_ID替換為專案 ID。按一下「 執行」。
查詢結果大致如下。結果中只會顯示作者名稱和提交者名稱。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
完整原始碼
以下是供您參考的完整教學課程原始碼。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
控制台
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
gcloud
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID
刪除個別資源
或者,如要移除本教學課程中使用的個別資源,請按照下列步驟操作:
由於您建立了本教學課程中使用的資源,因此不需額外權限即可刪除這些資源。
後續步驟
- 如要瞭解 BigQuery 的存取控管機制,請參閱「BigQuery IAM 角色和權限」。
- 如要瞭解 BigQuery 檢視表,請參閱「邏輯檢視表簡介」。
- 如要進一步瞭解授權檢視表,請參閱「授權檢視表」。
- 如要瞭解存取控管的基本概念,請參閱「IAM 總覽」。
- 如要瞭解如何管理存取控管,請參閱「管理政策」。