管理分群資料表
在 BigQuery 建立分群資料表後,您可以控管存取權限、查看屬性,並隨著查詢模式變化調整分群資料欄。本文說明如何控管分群資料表的存取權、取得相關資訊、列出資料集中的分群資料表,以及修改分群規格。
如要瞭解分群資料表,請參閱「分群資料表簡介」。如要建立分群資料表,請參閱「建立分群資料表」。
事前準備
如要取得資料表相關資訊,您必須具備 bigquery.tables.get 權限。下列預先定義的 IAM 角色包含 bigquery.tables.get 權限:
roles/bigquery.metadataViewerroles/bigquery.dataViewerroles/bigquery.dataOwnerroles/bigquery.dataEditorroles/bigquery.admin
此外,如果使用者具備 bigquery.datasets.create 權限,則在建立資料集時,會獲得該資料集的 bigquery.dataOwner 存取權。bigquery.dataOwner 存取權可讓使用者取得資料集裡的資料表相關資訊。
如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「預先定義的角色和權限」。
控管分群資料表的存取權
如要設定資料表和檢視表的存取權,您可以將 IAM 角色授予下列層級的實體,這些層級依允許的資源範圍 (由大到小) 排序:
- Google Cloud 資源階層中的高層級,例如專案、資料夾或組織層級
- 資料集層級
- 資料表或檢視表層級
您也可以使用下列方法,限制資料表內的資料存取權:
受 IAM 保護的資源存取權屬於外加規則。舉例來說,如果實體沒有專案等高層級的存取權,您可以在資料集層級授予實體存取權,這樣實體就能存取資料集中的資料表和檢視表。同樣地,如果實體沒有高層級或資料集層級的存取權,您可以在資料表或檢視表層級授予實體存取權。
在 Google Cloud資源階層中較高層級 (例如專案、資料夾或組織層級) 授予 IAM 角色,可讓實體存取廣泛的資源。舉例來說,在專案層級將角色授予實體,該實體就會獲得適用於整個專案中所有資料集的權限。
在資料集層級授予角色,可指定實體在該特定資料集的資料表和檢視表上可執行的作業,即使實體沒有較高層級的存取權也一樣。如要瞭解如何設定資料集層級存取控管,請參閱「控管資料集的存取權」。
在資料表或檢視表層級授予角色,可指定實體在特定資料表和檢視表上可執行的作業,即使實體沒有較高層級的存取權也一樣。如要瞭解如何設定資料表層級存取控管機制,請參閱「控管資料表和檢視表的存取權」。
您也可以建立 IAM 自訂角色。建立自訂角色之後,您就能依據要讓實體執行的特定作業授予權限。
您無法對受 IAM 保護的任何資源設定「拒絕」權限。
如要進一步瞭解角色和權限,請參閱 IAM 說明文件中的「瞭解角色」和 BigQuery「IAM 角色和權限」。
取得分群資料表的相關資訊
選取下列選項之一:
控制台
前往 Google Cloud 控制台的「Resources」(資源) 窗格。
按一下資料集名稱展開資料集,然後點選要查看的資料表名稱。
按一下「詳細資料」。
系統會顯示資料表的詳細資料,包括分群欄。
SQL
如果是分群資料表,您可以查詢 INFORMATION_SCHEMA.COLUMNS 檢視表中的 CLUSTERING_ORDINAL_POSITION 資料欄,找出資料表分群資料欄中資料欄的 1 索引偏移:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE TABLE mydataset.data (column1 INT64, column2 INT64) CLUSTER BY column1, column2; SELECT column_name, clustering_ordinal_position FROM mydataset.INFORMATION_SCHEMA.COLUMNS;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
column1 的叢集序數位置為 1,column2 則為 2。如要查看更多資料表中繼資料,請前往 INFORMATION_SCHEMA 的 TABLES、TABLE_OPTIONS、COLUMNS 和 COLUMN_FIELD_PATH 檢視畫面。
bq
發出 bq show 指令以顯示所有資料表資訊。使用 --schema 旗標可以只顯示資料表結構定義資訊。--format 旗標可用來控制輸出內容。
如果您要取得非預設專案中資料表的相關資訊,請使用下列格式將專案 ID 新增至資料集:project_id:dataset。
bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE
更改下列內容:
PROJECT_ID:專案 IDDATASET:資料集名稱TABLE:資料表名稱。
範例:
輸入下列指令,顯示 mydataset 中 myclusteredtable 的所有相關資訊。mydataset 在您的預設專案中。
bq show --format=prettyjson mydataset.myclusteredtable
輸出應如下所示:
{
"clustering": {
"fields": [
"customer_id"
]
},
...
}
API
呼叫 bigquery.tables.get 方法,並提供所有相關參數。
列出資料集內的分群資料表
列出分群資料表所需的權限和步驟,與標準資料表相同。詳情請參閱「列出資料集中的資料表」。
修改叢集規格
您可以變更或移除資料表的分群規格,或變更分群資料表中的分群資料欄組合。如果資料表使用連續串流資料即時插入,則無法輕易透過其他方法替換,因此這種更新分群欄組合的方法非常實用。
請按照下列步驟,將新的分群規格套用至未分區或分區資料表。
在 bq 工具中,更新資料表的叢集規格,以符合新的叢集:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
更改下列內容:
CLUSTER_COLUMN:要分群的資料欄,例如mycolumnDATASET:資料表所在資料集的名稱,例如mydatasetORIGINAL_TABLE:原始資料表的名稱,例如mytable
您也可以呼叫
tables.update或tables.patchAPI 方法,修改分群規格。如要根據新的分群規格將所有資料列分群,請執行下列
UPDATE陳述式:UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true