建立資料集
本文件說明如何在 BigQuery 中建立資料集。
您可以透過下列方式建立資料集:
- 使用 Google Cloud 控制台。
- 使用 SQL 查詢。
- 在 bq 指令列工具中使用
bq mk
指令。 - 呼叫
datasets.insert
API 方法 - 使用用戶端程式庫。
- 複製現有的資料集
如要查看複製資料集的步驟 (包括跨地區),請參閱「複製資料集」一文。
本文件說明如何使用在 BigQuery 中儲存資料的一般資料集。如要瞭解如何使用 Spanner 外部資料集,請參閱「建立 Spanner 外部資料集」。如要瞭解如何使用 AWS Glue 聯合資料集,請參閱「建立 AWS Glue 聯合資料集」。
如要瞭解如何查詢公開資料集中的資料表,請參閱「使用 Google Cloud 控制台查詢公開資料集」。
資料集的限制
BigQuery 資料集有下列限制:
- 資料集位置只能在建立時設定。資料集建立後,就無法變更位置。
- 在查詢中參考的所有資料表,都必須儲存在同一個位置的資料集中。
外部資料集不支援資料表到期時間、副本、時間回溯、預設定序、預設捨入模式,也不支援啟用或停用不區分大小寫的資料表名稱。
複製資料表時,包含來源資料表和目的地資料表的資料集必須位於相同位置。
每個專案的資料集名稱皆不得重複。
如果您變更資料集的儲存空間計費模式,必須等待 14 天,才能再次變更儲存空間計費模式。
如果您有位於資料集所在地區的任何現有固定費率時段承諾,就無法將資料集註冊至實體儲存空間計費。
事前準備
授予身分與存取權管理 (IAM) 角色,讓使用者取得執行本文件中各項工作的必要權限。
所需權限
如要建立資料集,您必須具備 bigquery.datasets.create
IAM 權限。
以下每個預先定義的 IAM 角色都包含建立資料集所需的權限:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.user
roles/bigquery.admin
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱「預先定義的角色與權限」一文。
建立資料集
如何建立資料集:
主控台
- 在 Google Cloud 控制台開啟「BigQuery」頁面。 前往「BigQuery」頁面
- 在「Explorer」面板中,選取要建立資料集的專案。
- 展開 「View actions」 選項,然後按一下「Create dataset」。
- 在「Create dataset」(建立資料集) 頁面:
- 針對「Dataset ID」(資料集 ID),輸入唯一的資料集名稱。
- 針對「Location type」(位置類型),選擇資料集的地理位置。資料集在建立之後,該位置就無法改變。
- 選用:如要建立外部資料集,請選取「Link to an external dataset」。
- 如果您不需要設定標記和資料表到期時間等其他選項,請按一下「建立資料集」。否則,請展開下列部分,設定其他資料集選項。
- 選用:展開「標記」部分,即可在資料集中新增標記。
- 如要套用現有標籤,請按照下列步驟操作:
- 按一下「選取範圍」旁的下拉式箭頭,然後選擇「目前範圍」「選取目前的機構」或「選取目前的專案」。
- 針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
- 如要手動輸入新代碼,請按照下列步驟操作:
- 按一下「選取範圍」旁的下拉式箭頭,然後選擇「手動輸入 ID」>「機構」、「專案」或「標記」。
- 如果您要為專案或機構建立標記,請在對話方塊中輸入
PROJECT_ID
或ORGANIZATION_ID
,然後按一下「儲存」。 - 針對「Key 1」和「Value 1」,請從清單中選擇適當的值。
- 如要在表格中新增其他標記,請按一下「新增標記」,然後按照前述步驟操作。
- 選用:展開「進階選項」部分,設定下列一或多個選項。
- 如要變更「加密」選項,以便使用您自己的加密編譯金鑰搭配 Cloud Key Management Service,請選取「Cloud KMS 金鑰」。
- 如要使用不區分大小寫的資料表名稱,請選取「啟用不區分大小寫的資料表名稱」。
- 如要變更預設定序 規格,請從清單中選擇定序類型。
- 如要為資料集中的資料表設定到期時間,請選取「啟用資料表到期時間」,然後以天為單位指定「預設資料表存在時間上限」。
- 如要設定預設捨入模式,請從清單中選擇捨入模式。
- 如要啟用實體儲存空間計費模式,請從清單中選擇所需計費模式。
- 如要設定資料集的時間回溯期,請從清單中選擇視窗大小。
- 點選「建立資料集」。

資料集的其他選項
或者,您也可以按一下「選取範圍」來搜尋資源,或查看目前的資源清單。
變更資料集的計費模式後,變更內容會在 24 小時後生效。
一旦變更資料集的儲存空間計費模式,就必須等待 14 天,才能再次變更儲存空間計費模式。
SQL
如要在非預設專案中建立資料集,請使用下列格式將專案 ID 新增至資料集 ID:PROJECT_ID.DATASET_ID
。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入以下陳述式:
CREATE SCHEMA PROJECT_ID.DATASET_ID OPTIONS ( default_kms_key_name = 'KMS_KEY_NAME', default_partition_expiration_days = PARTITION_EXPIRATION, default_table_expiration_days = TABLE_EXPIRATION, description = 'DESCRIPTION', labels = [('KEY_1','VALUE_1'),('KEY_2','VALUE_2')], location = 'LOCATION', max_time_travel_hours = HOURS, storage_billing_model = BILLING_MODEL);
請依指示取代下列項目:
PROJECT_ID
:您的專案 IDDATASET_ID
:您要建立的資料集 IDKMS_KEY_NAME
:預設 Cloud Key Management Service 金鑰的名稱,用於保護這個資料集中新建立的資料表,除非在建立時提供其他金鑰。您無法在具有此參數集的資料集中建立 Google 加密表格。PARTITION_EXPIRATION
:新建分區資料表中分區的預設生命週期 (以天為單位)。預設的分區到期時間沒有最小值。到期時間為分區日期加上整數值。在資料集的分區資料表中所建立的任何分區,都會在分區日期的PARTITION_EXPIRATION
天後刪除。如果您在建立或更新分區資料表時使用time_partitioning_expiration
選項,則資料表層級的分區到期時間會覆寫資料集層級的預設分區到期時間。TABLE_EXPIRATION
:新建資料表的預設生命週期 (以天為單位)。最小值為 0.042 天 (1 小時)。到期時間為目前時間加整數值。在資料集中建立的任何資料表都會在建立時間後TABLE_EXPIRATION
天刪除。如果您在建立資料表時未設定資料表到期時間,系統就會套用這個值。DESCRIPTION
:資料集說明KEY_1:VALUE_1
:您要將哪個鍵/值組合設為此資料集的第一個標籤KEY_2:VALUE_2
:您要設為第二個標籤的鍵/值組合LOCATION
:資料集的位置。資料集在建立之後,該位置就無法改變。HOURS
:新資料集的時間回溯期 (以小時為單位)。HOURS
值必須是介於 48 (2 天) 和 168 (7 天) 之間的整數,以 24 為倍數 (48、72、96、120、144、168) 表示。如果未指定這個選項,預設值為 168 小時。BILLING_MODEL
:設定資料集的儲存空間計費模式。將BILLING_MODEL
值設為PHYSICAL
,即可在計算儲存空間費用時使用實體位元組,或設為LOGICAL
即可使用邏輯位元組。預設值為LOGICAL
。變更資料集的計費模式後,變更內容會在 24 小時後生效。
一旦變更資料集的儲存空間計費模式,就必須等待 14 天,才能再次變更儲存空間計費模式。
按一下
「Run」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。
bq
如要建立新的資料集,請使用 bq mk
指令搭配 --location
旗標。如需可能參數的完整清單,請參閱 bq mk --dataset
指令參考資料。
如要在非預設專案中建立資料集,請採用下列格式將專案 ID 新增至資料集:PROJECT_ID:DATASET_ID
。
bq --location=LOCATION mk \ --dataset \ --default_kms_key=KMS_KEY_NAME \ --default_partition_expiration=PARTITION_EXPIRATION \ --default_table_expiration=TABLE_EXPIRATION \ --description="DESCRIPTION" \ --label=KEY_1:VALUE_1 \ --label=KEY_2:VALUE_2 \ --add_tags=KEY_3:VALUE_3[,...] \ --max_time_travel_hours=HOURS \ --storage_billing_model=BILLING_MODEL \ PROJECT_ID:DATASET_ID
更改下列內容:
LOCATION
:資料集的位置。資料集在建立之後,該位置就無法改變。您可以使用.bigqueryrc
檔案設定位置的預設值。KMS_KEY_NAME
:預設 Cloud Key Management Service 金鑰的名稱,用於保護這個資料集中新建立的資料表,除非在建立時提供其他金鑰。您無法在具有此參數集的資料集中建立 Google 加密表格。PARTITION_EXPIRATION
:新建分區資料表中分區的預設生命週期 (以秒為單位)。預設的分區到期時間沒有最小值。到期時間為分區日期加上整數值。在資料集的分區資料表中建立的任何分區,都會在分區日期後PARTITION_EXPIRATION
秒刪除。如果您在建立或更新分區資料表時使用--time_partitioning_expiration
旗標,則資料表層級的分區到期時間會覆寫資料集層級的預設分區到期時間。TABLE_EXPIRATION
:新建資料表的預設生命週期 (以秒為單位)。最小值是 3600 秒 (1 小時)。到期時間為目前時間加整數值。在資料集中建立的任何資料表都會在建立時間後TABLE_EXPIRATION
秒刪除。如果您在建立資料表時未設定資料表到期時間,系統就會套用這個值。DESCRIPTION
:資料集說明KEY_1:VALUE_1
:您要將哪個鍵/值組合設為此資料集的第一個標籤,而KEY_2:VALUE_2
則是您要將哪個鍵/值組合設為第二個標籤。KEY_3:VALUE_3
:您要將其設為資料集標記的鍵/值組合。在同一個標記下方新增多個標記,並在鍵/值組合之間加上逗號。HOURS
:新資料集的時間回溯期 (以小時為單位)。HOURS
值必須是整數,以 24 的倍數 (48、72、96、120、144、168) 表示,介於 48 (2 天) 和 168 (7 天) 之間。如果未指定這個選項,預設值為 168 小時。BILLING_MODEL
:設定資料集的儲存空間計費模式。將BILLING_MODEL
值設為PHYSICAL
,即可在計算儲存空間費用時使用實體位元組;將其設為LOGICAL
,則可使用邏輯位元組。預設為LOGICAL
。變更資料集的計費模式後,變更內容會在 24 小時後生效。
一旦變更資料集的儲存空間計費模式,就必須等待 14 天,才能再次變更儲存空間計費模式。
PROJECT_ID
:您的專案 ID。DATASET_ID
是您要建立的資料集 ID。
舉例來說,下列指令會建立名為 mydataset
的資料集,並將資料位置設定為 US
,而預設的資料表到期時間為 3,600 秒 (1 小時),說明則為 This is my dataset
。這個指令採用 -d
捷徑,而不是使用 --dataset
旗標。如果您省略 -d
和 --dataset
,該指令預設會建立資料集。
bq --location=US mk -d \ --default_table_expiration 3600 \ --description "This is my dataset." \ mydataset
如要確認資料集已建立完成,請輸入 bq ls
指令。此外,您可以在建立新的資料集時,採用下列格式來建立資料表:bq mk -t dataset.table
。如要進一步瞭解如何建立資料表,請參閱「建立資料表」。
Terraform
使用 google_bigquery_dataset
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
建立資料集
以下範例會建立名為 mydataset
的資料集:
使用 google_bigquery_dataset
資源建立資料集時,系統會自動將資料集存取權授予所有專案層級基本角色的帳戶成員。如果在建立資料集後執行 terraform show
指令,資料集的 access
區塊會類似以下內容:
如要授予資料集存取權,建議您使用其中一個 google_bigquery_iam
資源 (如以下範例所示),除非您打算在資料集中建立已授權的物件,例如已授權的檢視畫面。在這種情況下,請使用 google_bigquery_dataset_access
資源。如需範例,請參閱該說明文件。
建立資料集並授予存取權
以下範例會建立名為 mydataset
的資料集,然後使用 google_bigquery_dataset_iam_policy
資源授予存取權。
使用客戶自行管理的加密金鑰建立資料集
以下範例會建立名為 mydataset
的資料集,並使用 google_kms_crypto_key
和 google_kms_key_ring
資源,為資料集指定 Cloud Key Management Service 金鑰。您必須先啟用 Cloud Key Management Service API,才能執行這個範例。
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,您可以選擇加入
-upgrade
選項:terraform init -upgrade
套用變更
-
檢查設定,確認 Terraform 要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
API
請呼叫 datasets.insert
方法,搭配已定義的資料集資源。
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 中建立資料集時,每個專案的資料集名稱不得重複。資料集名稱可包含下列項目:
- 最多 1,024 個半形字元。
- 字母 (大寫或小寫)、數字和底線。
根據預設,資料集名稱會區分大小寫。mydataset
和 MyDataset
可在同一專案中並存,除非其中一個關閉大小寫敏感度。如需範例,請參閱「建立大小寫不敏感的資料集」和「資源:資料集」。
資料集名稱不得包含空格或特殊字元,例如 -
、&
、@
或 %
。
隱藏的資料集
隱藏資料集的名稱會以底線開頭。您可以查詢隱藏資料集中的資料表和檢視表,方法與查詢其他資料集的資料表和檢視表相同。隱藏的資料集有下列限制:
- 這些資料會從 Google Cloud 控制台的「探索器」面板中隱藏。
- 不會顯示在任何
INFORMATION_SCHEMA
檢視畫面中。 - 無法與已連結的資料集搭配使用。
- 這些資料集無法與下列授權資源搭配使用,做為來源資料集:
- 不會顯示在 Data Catalog (已淘汰) 或 Dataplex Universal Catalog 中。
資料集安全性
如要控管 BigQuery 資料集的存取權,請參閱「控管資料集存取權」。如要進一步瞭解資料加密,請參閱「靜態資料加密」。
後續步驟
- 如要進一步瞭解如何列出專案中的資料集,請參閱「列出資料集」一文。
- 如要進一步瞭解資料集中繼資料,請參閱「取得資料集相關資訊」一文。
- 如要進一步瞭解如何變更資料集屬性,請參閱「更新資料集」一文。
- 如要進一步瞭解如何建立及管理標籤,請參閱「建立及管理標籤」一文。
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 BigQuery 的成效。新客戶可以獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
免費試用 BigQuery