修改資料表結構定義
本文說明如何修改現有 BigQuery 資料表的結構定義。
您可以使用 SQL 資料定義語言 (DDL) 陳述式,進行本文件所述的大多數結構定義修改。這些對帳單不會產生費用。
您可以將資料表資料匯出至 Cloud Storage,然後將資料載入至具有修改後結構定義定義的新資料表,藉此以本頁所述的所有方式修改資料表結構定義。BigQuery 載入和擷取工作不收費,但將匯出的資料儲存在 Cloud Storage 會產生費用。以下各節說明執行各種結構定義修改作業的其他方式。
在 BigQuery 更新結構定義不會導致資料遺失。
新增資料欄
您可以使用下列其中一種方法,在現有資料表的結構定義中新增資料欄:
- 新增空白資料欄。
- 使用載入或查詢工作覆寫資料表。
- 透過載入或查詢工作,將資料附加至資料表。
您新增的任何資料欄都必須遵守 BigQuery 的資料欄名稱規則。如要進一步瞭解如何建立結構定義元件,請參閱「指定結構定義」。
您無法在資料表結構定義的中間新增資料欄。新的資料欄和巢狀欄位一律會新增至資料表或欄位的結尾。如要在資料表結構定義中間建立新資料欄,唯一的方法是使用所選結構定義建立新資料表,並從原始資料表複製資料。
新增空白資料欄
新增資料欄至現有的資料表結構定義時,資料欄必須為 NULLABLE 或 REPEATED。您無法將 REQUIRED 資料欄新增至現有的資料表結構定義。在 API 或 bq 指令列工具中,將 REQUIRED 資料欄新增至現有資料表結構定義會導致錯誤。不過,您可以建立巢狀 REQUIRED 欄,做為新 RECORD 欄位的一部分。只有在載入資料時建立資料表,或使用結構定義定義建立空白資料表時,才能新增 REQUIRED 資料欄。
如何將空白資料欄新增至資料表的結構定義:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案,點選「Datasets」(資料集),然後選取資料集。
依序點選「總覽」>「資料表」,然後選取資料表。
在詳細資料窗格中,依序點選「Edit」(編輯) >「Edit schema」(編輯結構定義)。
在「Current schema」(目前結構定義) 頁面的「New fields」(新欄位) 下方,點選「Add field」(新增欄位)。
- 在「Name」(名稱) 部分,輸入資料欄名稱。
- 針對「Type」(類型),請選擇資料類型。
- 針對「Mode」(模式),請選擇
NULLABLE或REPEATED。
資料欄新增完畢後,按一下 [Save] (儲存)。
SQL
使用 ALTER TABLE ADD COLUMN DDL 陳述式:
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
發出 bq update 指令並提供 JSON 結構定義檔。如果要更新的資料表位於預設專案以外的專案,請按照下列格式,將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。
bq update PROJECT_ID:DATASET.TABLE SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:本機電腦上的 JSON 結構定義檔案路徑。
指定內嵌結構定義時,無法指定資料欄說明、模式和 RECORD (STRUCT) 類型。所有資料欄模式預設為 NULLABLE。因此如要新增巢狀資料欄至 RECORD,就必須提供 JSON 結構定義檔。
如果您嘗試使用內嵌結構定義新增資料欄,則必須提供包括新資料欄在內的整個結構定義。由於您無法使用內嵌結構定義定義指定資料欄模式,因此更新會將任何現有的 REPEATED 資料欄變更為 NULLABLE,進而產生下列錯誤:BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
使用 bq 指令列工具在現有資料表中新增資料欄時,建議提供 JSON 結構定義檔案。
如何使用 JSON 結構定義檔案將空白資料欄新增至資料表的結構定義:
首先,請發出
bq show指令並加上--schema旗標,並將現有的資料表結構定義寫入檔案。如果您要更新的資料表位於預設專案以外的專案,請按照下列格式將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:寫入本機電腦的結構定義定義檔。
舉例來說,如要將
mydataset.mytable的結構定義寫入檔案,請輸入下列指令。mydataset.mytable位於您的預設專案中。bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json在文字編輯器中開啟結構定義檔。結構定義應如下所示:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]將資料欄新增至結構定義的結尾處。如果嘗試在陣列的其他位置新增資料欄,系統會傳回以下錯誤:
BigQuery error in update operation: Precondition Failed。在資料表建立後修改結構定義順序,不會影響資料欄或巢狀欄位的順序。您可以使用 JSON 檔案為新資料欄指定說明、
NULLABLE或REPEATED模式以及RECORD類型。例如,如果使用上一個步驟中的結構定義,新的 JSON 陣列會如下所示。此範例中會新增名為column4的NULLABLE資料欄,且column4包含說明。[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" }, { "description": "my new column", "mode": "NULLABLE", "name": "column4", "type": "STRING" } ]如要進一步瞭解如何使用 JSON 結構定義檔,請參閱指定 JSON 結構定義檔一節。
更新結構定義檔後,請發出下列指令來更新資料表的結構定義。如果要更新的資料表位於預設專案以外的專案,請按照下列格式,將專案 ID 新增至資料集名稱:
PROJECT_ID:DATASET。bq update PROJECT_ID:DATASET.TABLE SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:寫入本機電腦的結構定義定義檔。
例如,輸入以下指令來更新預設專案中
mydataset.mytable的結構定義。您本機機器上的 JSON 結構定義檔路徑為/tmp/myschema.json。bq update mydataset.mytable /tmp/myschema.json
API
呼叫 tables.patch 方法,並使用 schema 屬性將空白資料欄新增至結構定義。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
在 RECORD 欄中新增巢狀欄
除了在資料表的結構定義中新增資料欄,您也可以在 RECORD 資料欄中新增巢狀資料欄。新增巢狀資料欄的程序與新增資料欄類似。
控制台
Cloud de Confiance 控制台不支援在現有RECORD資料欄中新增巢狀欄位。
SQL
不支援使用 SQL DDL 陳述式,在現有 RECORD 資料欄中新增巢狀欄位。
bq
發出 bq update 指令並提供 JSON 結構定義檔,該檔案會將巢狀欄位新增至現有 RECORD 資料欄的結構定義。如果您要更新的資料表位於預設專案以外的專案,請按照下列格式將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。
bq update PROJECT_ID:DATASET.TABLE SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:本機電腦上 JSON 結構定義檔案的路徑。
指定內嵌結構定義時,無法指定資料欄說明、模式和 RECORD (STRUCT) 類型。所有資料欄模式預設為 NULLABLE。因此如要新增巢狀資料欄至 RECORD,就必須提供 JSON 結構定義檔。
若要使用 JSON 結構檔案將巢狀欄位新增至 RECORD,請進行以下操作:
首先,請發出
bq show指令並加上--schema旗標,並將現有的資料表結構定義寫入檔案。如果您要更新的資料表位於預設專案以外的專案,請按照下列格式,將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET.TABLE。bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:寫入本機電腦的結構定義定義檔。
舉例來說,如要將
mydataset.mytable的結構定義寫入檔案,請輸入下列指令。mydataset.mytable位於您的預設專案中。bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json在文字編輯器中開啟結構定義檔。結構定義應如下所示。在此範例中,
column3是巢狀的重複資料欄。巢狀資料欄為nested1和nested2。fields陣列列出了以巢狀形式嵌套在column3中的欄位。[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]在
fields陣列的結尾處新增巢狀資料欄。巢狀欄位一律會新增至欄位結尾。在這個範例中,nested3是新的巢狀資料欄。[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested3", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]如要進一步瞭解如何使用 JSON 結構定義檔,請參閱指定 JSON 結構定義檔一節。
更新結構定義檔後,請發出下列指令來更新資料表的結構定義。如果要更新的資料表位於預設專案以外的專案,請按照下列格式,將專案 ID 新增至資料集名稱:
PROJECT_ID:DATASET。bq update PROJECT_ID:DATASET.TABLE SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:本機電腦上的 JSON 結構定義檔案路徑。
例如,輸入以下指令來更新預設專案中
mydataset.mytable的結構定義。您本機機器上的 JSON 結構定義檔路徑為/tmp/myschema.json。bq update mydataset.mytable /tmp/myschema.json
API
呼叫 tables.patch 方法,並使用 schema 屬性將巢狀資料欄新增至結構定義。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。
覆寫或附加資料時新增資料欄
將資料載入現有資料表並選擇覆寫現有資料表時,可以新增資料欄至現有資料表。覆寫現有的資料表時,系統會使用所載入資料的結構定義來覆寫現有資料表的結構定義。如要瞭解如何使用載入工作覆寫資料表,請參閱資料格式適用的文件:
在載入附加工作中新增資料欄
在載入工作中將資料附加至資料表時,您可以將資料欄新增至資料表。新結構定義由下列其中一項決定:
- 自動偵測 (適用於 CSV 和 JSON 檔案)
- 在 JSON 結構定義檔案中指定的結構定義 (適用於 CSV 和 JSON 檔案)
- Avro、ORC、Parquet 和 Datastore 匯出檔案的自述式來源資料
若您在 JSON 檔中指定結構,則必須在其中定義新的資料欄。如果缺少新的資料欄定義,系統會在您嘗試附加資料時傳回錯誤。
當您在附加作業期間新增資料欄時,系統將會針對現有資料列將新資料欄中的值設為 NULL。
如要在載入工作期間將資料附加至資料表時新增資料欄,請使用下列其中一個選項:
bq
請使用 bq load 指令載入資料並指定 --noreplace 旗標,以指出您要將資料附加至現有的資料表。
如果您要附加的資料是 CSV 格式,或是以換行符號分隔的 JSON 格式,請指定 --autodetect 旗標以使用結構定義自動偵測功能,或在 JSON 結構定義檔中提供結構定義。系統可從 Avro 或 Datastore 匯出檔自動推斷新增的資料欄。
將 --schema_update_option 旗標設為 ALLOW_FIELD_ADDITION,以指出要附加的資料中包含新的資料欄。
如果您要附加的資料表位於預設專案以外的資料集,請按照下列格式,將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。
(選用) 提供 --location 旗標,並將值設為您的位置。
輸入 load 指令,如下所示:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
更改下列內容:
LOCATION:位置名稱。--location是選用旗標。舉例來說,如果您在東京地區使用 BigQuery,就可將該旗標的值設為asia-northeast1。您可以使用 .bigqueryrc 檔來設定位置的預設值。FORMAT:結構定義的格式。NEWLINE_DELIMITED_JSON、CSV、AVRO、PARQUET、ORC或DATASTORE_BACKUP。PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要附加的資料表名稱。PATH_TO_SOURCE:完整的 Cloud Storage URI、以半形逗號分隔的 URI 清單,或本機電腦上的資料檔案路徑。SCHEMA:本機 JSON 結構定義檔案的路徑。不指定--autodetect時,只有 CSV 和 JSON 檔案需要結構定義檔。系統會從來源資料推斷 Avro 和 Datastore 的結構定義。
範例:
輸入下列指令,使用載入工作將本機 Avro 資料檔案 (/tmp/mydata.avro) 附加至 mydataset.mytable。由於系統會自動從 Avro 資料推論結構定義,因此您不需要使用 --autodetect 旗標。mydataset 位於您的預設專案中。
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
輸入下列指令,使用載入工作將 Cloud Storage 中採用換行符號分隔格式的 JSON 資料檔案附加至 mydataset.mytable。--autodetect 旗標可用於偵測新資料欄。mydataset 位於您的預設專案中。
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
輸入下列指令,使用載入工作將 Cloud Storage 中採用換行符號分隔格式的 JSON 資料檔案附加至 mydataset.mytable。包含新資料欄的結構定義是在本機 JSON 結構定義檔 /tmp/myschema.json 中指定。mydataset 在 myotherproject 中,而不在您的預設專案中。
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
myotherproject:mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
API
呼叫 jobs.insert 方法。設定 load 工作和下列屬性:
- 使用
sourceUris屬性參照 Cloud Storage 中的資料。 - 設定
sourceFormat屬性來指定資料格式。 - 在
schema屬性中指定結構定義。 - 使用
schemaUpdateOptions屬性指定結構定義更新選項。 - 使用
writeDisposition屬性將目的地資料表的寫入處理方式設為WRITE_APPEND。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
在查詢附加工作中新增資料欄
將查詢結果附加至資料表時,可以新增資料欄。
在查詢工作中使用附加作業新增資料欄時,系統會使用查詢結果的結構定義來更新目的地資料表的結構定義。請注意,您無法在一個位置查詢資料表後,將結果寫入不同位置的資料表。
如要在查詢工作期間將資料附加至資料表時新增資料欄,請選取下列其中一個選項:
bq
使用 bq query 指令查詢資料,並指定 --destination_table 旗標來指出您要附加的資料表。
如要指定將查詢結果附加至現有目的地資料表,請指定 --append_table 旗標。
將 --schema_update_option 旗標設定為 ALLOW_FIELD_ADDITION,以指出要附加的查詢結果中包含新的資料欄。
指定 use_legacy_sql=false 旗標,以便在查詢中使用 GoogleSQL 語法。
如果您要附加的資料表位於預設專案以外的資料集,請按照下列格式將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。請注意,您查詢的資料表和目的地資料表必須位於相同位置。
(選用) 提供 --location 旗標,並將值設為您的位置。
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
更改下列內容:
LOCATION:位置名稱。--location是選用旗標。舉例來說,如果您在東京地區使用 BigQuery,就可將該旗標的值設為asia-northeast1。您可以使用 .bigqueryrc 檔來設定位置的預設值。請注意,您無法將查詢結果附加至不同位置的資料表。PROJECT_ID:您的專案 ID。dataset:包含要附加資料表的資料集名稱。TABLE:要附加的資料表名稱。QUERY:GoogleSQL 語法的查詢。
範例:
輸入下列指令,以查詢預設專案中的 mydataset.mytable,並將查詢結果附加至 mydataset.mytable2 (也在預設專案中)。
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
輸入下列指令,以查詢預設專案中的 mydataset.mytable,並將查詢結果附加至位於 myotherproject 中的 mydataset.mytable2。
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
呼叫 jobs.insert 方法。設定 query 工作和下列屬性:
- 使用
destinationTable屬性指定目的地資料表。 - 使用
writeDisposition屬性將目的地資料表的寫入處理方式設為WRITE_APPEND。 - 使用
schemaUpdateOptions屬性指定結構定義更新選項。 - 使用
query屬性指定 GoogleSQL 查詢。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
變更資料欄名稱
如要重新命名資料表中的資料欄,請使用 ALTER TABLE RENAME COLUMN DDL 陳述式。以下範例會將 mytable 的 old_name 資料欄重新命名為 new_name:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
如要進一步瞭解 ALTER TABLE RENAME COLUMN 陳述式,請參閱「DDL 詳細資料」。
變更資料欄的資料類型
Cloud de Confiance 控制台、bq 指令列工具或 BigQuery API 不支援變更資料欄的資料類型。如果嘗試套用結構定義來更新資料表,但結構定義為資料欄指定了新的資料類型,系統會傳回錯誤。
使用 DDL 陳述式變更資料欄的資料類型
您可以使用 GoogleSQL 對資料欄的資料類型進行特定變更。如需更多資訊和支援的資料類型轉換完整清單,請參閱 ALTER COLUMN SET DATA TYPE DDL 陳述式。
以下範例會建立包含 INT64 類型資料欄的資料表,然後將類型更新為 NUMERIC:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
以下範例會建立一個資料表,其中包含一個具有兩個欄位的巢狀資料欄,然後將其中一個資料欄的類型從 INT 更新為 NUMERIC:
CREATE TABLE mydataset.mytable(s1 STRUCT<a INT64, b STRING>); ALTER TABLE mydataset.mytable ALTER COLUMN s1 SET DATA TYPE STRUCT<a NUMERIC, b STRING>;
修改巢狀資料欄類型
如果是複雜的巢狀結構定義變更,例如變更 STRUCT 陣列中的欄位,則不支援 ALTER TABLE DDL 陳述式。如要解決這個問題,您可以使用 CREATE OR REPLACE TABLE 陳述式和 SELECT 陳述式,轉換巢狀結構定義變更。
以下範例示範如何轉換 STRUCTS 陣列中的資料欄:
假設資料表 samples.test 具有下列結構定義和資料:
CREATE OR REPLACE TABLE samples.test(D STRUCT <L ARRAY<STRUCT<R STRING, U STRING, V STRING>>, F STRING>); INSERT INTO samples.test(D) VALUES (STRUCT([STRUCT("r1", "u1", "v1"), STRUCT("r2", "u2", "v2")], "f1"));
傳回的結果看起來類似下列內容:
+----------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------+
假設您需要將 STRUCT 巢狀陣列中的 U 欄位類型變更為 STRUCT<W STRING>。下列 SQL 陳述式示範如何完成這項操作:
CREATE OR REPLACE TABLE samples.new_table AS SELECT STRUCT(ARRAY( SELECT STRUCT(tmp.R, STRUCT(tmp.U AS W) AS U, tmp.V) FROM UNNEST(t.D.L) AS tmp) AS L, t.D.F) AS D FROM samples.test AS t
這個陳述式會建立新資料表 samples.new_table,並套用目標結構定義。UNNEST 函式會展開 t.D.L 中的 STRUCT 陣列。運算式 STRUCT(tmp.U AS W) AS U 會建構新的 STRUCT,其中包含欄位 W,並填入原始 U 欄位的值。產生的資料表 samples.new_table 具有下列結構定義和資料:
+----------------------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------------------+
轉換資料欄的資料類型
如要將資料欄的資料類型變更為可轉換類型,請使用 SQL 查詢選取資料表資料、轉換相關資料欄,並覆寫資料表。不建議對大型資料表進行轉換和覆寫,因為這需要掃描整個資料表。
以下範例顯示的 SQL 查詢會從 mydataset.mytable 中的 column_two 和 column_three 選取所有資料,並將 column_one 從 DATE 轉換為 STRING。並使用查詢結果覆寫現有的資料表。覆寫的資料表會將 column_one 儲存為 STRING 資料類型。
使用 CAST 時,如果 BigQuery 無法執行類型轉換,查詢可能會失敗。如要進一步瞭解 GoogleSQL 的轉換規則,請參閱「轉換」。
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在「Query editor」(查詢編輯器) 中輸入以下查詢,藉此選取
mydataset.mytable中column_two和column_three的所有資料,並將column_one由DATE轉換為STRING。這項查詢會使用別名轉換具備相同名稱的column_one。mydataset.mytable在您的預設專案中。SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
依序點選「編輯」>「查詢設定」。
在「Destination」(目的地) 部分,執行下列操作:
選取 [Set a destination table for query results] (為查詢結果設定目標資料表) 核取方塊。
保留「Project name」(專案名稱) 欄位中預設專案的設定值 (含有
mydataset.mytable的專案)。在「Dataset」(資料集) 部分,選擇
mydataset。在「Table Id」(資料表 ID) 欄位中輸入
mytable。在「目的地資料表寫入偏好設定」部分,選取「覆寫資料表」。這個選項會使用查詢結果覆寫
mytable。
視需要選擇資料的位置。
如要更新設定,請按一下「儲存」。
按一下「 執行」。
查詢工作完成後,
column_one的資料類型為STRING。
bq
輸入以下 bq query 指令,藉此選取 mydataset.mytable 中 column_two 和 column_three 的所有資料,並將 column_one 由 DATE 轉換為 STRING。這項查詢會使用別名轉換具備相同名稱的 column_one。mydataset.mytable 在您的預設專案中。
查詢結果會使用 --destination_table 旗標寫入 mydataset.mytable,並使用 --replace 旗標覆寫 mytable。指定 use_legacy_sql=false 旗標,即可使用 GoogleSQL 語法。
視需要提供 --location 旗標,並將值設為您的位置。
bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
column_two,
column_three,
CAST(column_one AS STRING) AS column_one
FROM
mydataset.mytable'
API
如要選取 mydataset.mytable 中 column_two 和 column_three 的所有資料,並將 column_one 由 DATE 轉換為 STRING,請呼叫 jobs.insert 方法,並設定 query 工作。您也可以在 jobReference 區段的 location 屬性中指定位置。
查詢工作中使用的 SQL 查詢為 SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable。這項查詢會使用別名轉換具備相同名稱的 column_one。
如要使用查詢結果覆寫 mytable,請將 mydataset.mytable 加入 configuration.query.destinationTable 屬性,並在 configuration.query.writeDisposition 屬性中指定 WRITE_TRUNCATE。
變更資料欄模式
您只能將資料欄模式從 REQUIRED 變更為 NULLABLE,而將資料欄的模式從 REQUIRED 變更為 NULLABLE 也稱為資料欄放寬。您也可以在載入資料以覆寫現有資料表,或將資料附加至現有資料表時,放寬資料欄限制。您無法將資料欄模式從 NULLABLE 變更為 REQUIRED,或從 REPEATED 變更為 NULLABLE。如要將資料欄模式從 NULLABLE 變更為 REQUIRED,或從 REPEATED 變更為 NULLABLE,您必須使用更新後的資料欄模式重新建立資料表。
在現有資料表中將資料欄設為 NULLABLE
如要將資料欄的模式從 REQUIRED 變更為 NULLABLE,請選取下列其中一個選項:
控制台
前往「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,點選「Datasets」(資料集),然後選取資料集。
依序點選「總覽」>「資料表」,然後選取資料表。
在詳細資料窗格中,依序點選「Edit」(編輯) >「Edit schema」(編輯結構定義)。
在「Current schema」(目前結構定義) 頁面中,找出要變更的欄位。
在該欄位的「Mode」(模式) 下拉式選單中,選取「
NULLABLE」。如要更新設定,請按一下「儲存」。
SQL
使用 ALTER COLUMN DROP NOT NULL DDL 陳述式。以下範例會將 mycolumn 欄的模式從 REQUIRED 變更為 NULLABLE:
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
首先,請發出
bq show指令並加上--schema旗標,並將現有的資料表結構定義寫入檔案。如果更新的資料表位於預設專案以外的專案,請將專案 ID 新增至資料集名稱,格式如下:PROJECT_ID:DATASET。bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA_FILE:寫入本機電腦的結構定義定義檔。
舉例來說,如要將
mydataset.mytable的結構定義寫入檔案,請輸入下列指令。mydataset.mytable位於您的預設專案中。bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json在文字編輯器中開啟結構定義檔。結構定義應如下所示:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]將現有的資料欄模式從
REQUIRED變更為NULLABLE。在這個範例中,column1的模式已放寬。[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]如要深入瞭解如何使用 JSON 結構定義檔案,請參閱指定 JSON 結構定義檔案。
更新結構定義檔後,請發出下列指令來更新資料表的結構定義。如果您要更新的資料表位於預設專案以外的專案,請按照下列格式將專案 ID 新增至資料集名稱:
PROJECT_ID:DATASET。bq update PROJECT_ID:DATASET.TABLE SCHEMA
更改下列內容:
PROJECT_ID:您的專案 ID。DATASET:資料集名稱,其中包含您要更新的資料表。TABLE:要更新的資料表名稱。SCHEMA:本機電腦上的 JSON 結構定義檔案路徑。
例如,輸入以下指令來更新預設專案中
mydataset.mytable的結構定義。您本機機器上的 JSON 結構定義檔路徑為/tmp/myschema.json。bq update mydataset.mytable /tmp/myschema.json
API
呼叫 tables.patch 並使用 schema 屬性,將結構定義中的 REQUIRED 資料欄變更為 NULLABLE。由於 tables.update 方法會取代整個資料表資源,因此建議使用 tables.patch 方法。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
'NULLABLE'
透過附加載入工作建立 NULLABLE 欄
在載入工作中將資料附加至資料表時,您可以放寬資料欄的模式。根據檔案類型,選取下列其中一個選項:
- 從 CSV 和 JSON 檔案附加資料時,請指定 JSON 結構定義檔案,放寬個別資料欄的模式。
- 從 Avro、ORC 或 Parquet 檔案附加資料時,請將結構定義中的資料欄放寬為
NULL,並讓結構定義推論偵測放寬的資料欄。
在載入工作中將資料附加至資料表時,如要將資料欄從 REQUIRED 放寬為 NULLABLE,請選取下列其中一個選項:
控制台
您無法使用 Cloud de Confiance 控制台放寬資料欄模式。
bq
請使用 bq load 指令載入資料並指定 --noreplace 旗標,以指出您要將資料附加至現有的資料表。
如果您要附加的資料是 CSV 或以換行符號分隔的 JSON 格式,請在本機 JSON 結構定義檔案中指定寬鬆資料欄,或使用 --autodetect 旗標,透過結構定義偵測功能找出來源資料中的寬鬆資料欄。
系統可以從 Avro、ORC 和 Parquet 檔案自動推斷放寬的資料欄。不過,資料欄放寬不適用於 Datastore 匯出檔的附加作業。透過載入 Datastore 匯出檔所建立的資料表,其資料欄一律為 NULLABLE。
將 --schema_update_option 旗標設為 ALLOW_FIELD_RELAXATION,以指出您要附加的資料中包含放寬的資料欄。
如果您要附加的資料表位於預設專案以外的資料集,請按照下列格式,將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。
(選用) 提供 --location 旗標,並將值設為您的位置。
輸入 load 指令,如下所示:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
更改下列內容:
LOCATION:位置名稱。--location是選用旗標。舉例來說,如果您在東京地區使用 BigQuery,就可將該旗標的值設為asia-northeast1。您可以使用 .bigqueryrc 檔來設定位置的預設值。FORMAT:NEWLINE_DELIMITED_JSON、CSV、PARQUET、ORC或AVRO。DATASTORE_BACKUP檔案不需要放寬資料欄限制。從 Datastore 匯出檔所建立的資料表,其資料欄一律為NULLABLE。PROJECT_ID:您的專案 ID。DATASET:資料表所在資料集的名稱。TABLE:要附加的資料表名稱。PATH_TO_SOURCE:完整的 Cloud Storage URI、以半形逗號分隔的 URI 清單,或本機電腦上的資料檔案路徑。SCHEMA:本機 JSON 結構定義檔案的路徑。這個選項僅用於 CSV 和 JSON 檔案。系統會從 Avro 檔案自動推斷放寬的資料欄。
範例:
輸入下列指令,使用載入工作將本機 Avro 資料檔案 (/tmp/mydata.avro) 附加至 mydataset.mytable。由於寬鬆資料欄可從 Avro 資料自動推論,因此您不必指定結構定義檔案。mydataset 在您的預設專案中。
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
輸入下列指令,使用載入工作將 Cloud Storage 上採用換行符號分隔格式之 JSON 檔案中的資料附加至 mydataset.mytable。包含放寬資料欄的結構定義位於本機 JSON 結構定義檔 (/tmp/myschema.json) 中。mydataset 位於您的預設專案中。
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
輸入下列指令,使用載入工作將本機機器上 CSV 檔案中的資料附加至 mydataset.mytable。該指令使用結構定義自動偵測功能來找出來源資料中放寬的資料欄。mydataset 在 myotherproject 中,而不在您的預設專案中。
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
呼叫 jobs.insert 方法。設定 load 工作和下列屬性:
- 使用
sourceUris屬性參照 Cloud Storage 中的資料。 - 設定
sourceFormat屬性來指定資料格式。 - 在
schema屬性中指定結構定義。 - 使用
schemaUpdateOptions屬性指定結構定義更新選項。 - 使用
writeDisposition屬性將目的地資料表的寫入處理方式設為WRITE_APPEND。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
透過附加工作將所有資料欄設為 NULLABLE
將查詢結果附加至資料表時,您可以放寬資料表中的所有資料欄。您可以將 --schema_update_option 旗標設為 ALLOW_FIELD_RELAXATION,放寬目的地資料表中所有必要欄位的限制。您無法使用查詢附加功能,放寬目的地資料表中的個別資料欄。如要透過載入附加工作放寬個別資料欄,請參閱「使用附加工作將資料欄設為 NULLABLE」。
如要在將查詢結果附加至目的地資料表時放寬所有資料欄,請選取下列其中一個選項:
控制台
您無法使用 Cloud de Confiance 控制台放寬資料欄模式。
bq
使用 bq query 指令查詢資料,並指定 --destination_table 旗標來指出您要附加的資料表。
如要指定將查詢結果附加至現有目的地資料表,請指定 --append_table 旗標。
將 --schema_update_option 旗標設為 ALLOW_FIELD_RELAXATION,以指出您要附加之資料表中的所有 REQUIRED 資料欄,都應變更為 NULLABLE。
指定 use_legacy_sql=false 旗標,以便在查詢中使用 GoogleSQL 語法。
如果您要附加的資料表位於預設專案以外的資料集,請按照下列格式,將專案 ID 新增至資料集名稱:PROJECT_ID:DATASET。
(選用) 提供 --location 旗標,並將值設為您的位置。
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
更改下列內容:
LOCATION:位置名稱。--location是選用旗標。舉例來說,如果您在東京地區使用 BigQuery,就可將該旗標的值設為asia-northeast1。您可以使用 .bigqueryrc 檔來設定位置的預設值。PROJECT_ID:您的專案 ID。DATASET:包含要附加資料表的資料集名稱。TABLE:要附加的資料表名稱。QUERY:GoogleSQL 語法的查詢。
範例:
在預設專案中輸入下列指令查詢 mydataset.mytable,將查詢結果附加至 mydataset.mytable2 (同樣位於預設專案)。該指令會將目的地資料表中的所有 REQUIRED 資料欄變更為 NULLABLE。
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
輸入下列指令,查詢預設專案中的 mydataset.mytable,並將查詢結果附加至位於 myotherproject 中的 mydataset.mytable2。該指令會將目的地資料表中的所有 REQUIRED 資料欄變更為 NULLABLE。
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
呼叫 jobs.insert 方法。設定 query 工作和下列屬性:
- 使用
destinationTable屬性指定目的地資料表。 - 使用
writeDisposition屬性將目的地資料表的寫入處理方式設為WRITE_APPEND。 - 使用
schemaUpdateOptions屬性指定結構定義更新選項。 - 使用
query屬性指定 GoogleSQL 查詢。
Go
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Go 設定操作說明進行操作。詳情請參閱 BigQuery Go API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
變更資料欄的預設值
如要變更資料欄的預設值,請選取下列其中一個選項:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案,點選「Datasets」(資料集),然後選取資料集。
依序點選「總覽」>「資料表」,然後點選所需資料表。
在詳細資料窗格中,依序點選「Edit」(編輯) >「Edit schema」(編輯結構定義)。
在「Current schema」(目前結構定義) 頁面中,找出要變更的頂層欄位。
輸入該欄位的預設值。
按一下「儲存」。
SQL
使用 ALTER COLUMN SET DEFAULT DDL 陳述式。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
變更資料欄說明
如要變更資料欄說明,請選取下列其中一個選項:
控制台
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,點選「Datasets」(資料集),然後選取資料集。
依序點選「總覽」>「資料表」,然後選取資料表。
在詳細資料窗格中,依序點選「Edit」(編輯) >「Edit schema」(編輯結構定義)。
在「Current schema」(目前結構定義) 頁面中,找出要變更的欄位。
輸入該欄位的說明。
按一下「儲存」。
SQL
使用 ALTER COLUMN SET OPTIONS DDL 陳述式。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Gemini
您可以使用 Gemini in BigQuery,透過資料洞察生成資料欄說明。資料洞察功能可自動探索、瞭解及整理資料。
如要進一步瞭解資料洞察,包括設定步驟、必要的 IAM 角色,以及提高生成的洞察資料準確率的最佳做法,請參閱「在 BigQuery 生成資料洞察」。
前往 Cloud de Confiance 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案和資料集,然後選取資料表。
在詳細資料窗格中,按一下「Details」(詳細資料) 分頁標籤。
按一下「資料表資訊」旁的「描述資料」。
Gemini 會生成資料欄說明和資料表洞察。系統需要幾分鐘才能填入資訊。您可以在資料表的「Insights」(洞察) 分頁查看生成的洞察資料。
如要編輯並儲存生成的資料欄說明,請按照下列步驟操作:
按一下「表格資訊」旁邊的「查看說明」。
在「資料欄說明」部分,按一下「儲存至結構定義」。
生成的資料欄說明會填入各欄的「New description」(新說明) 欄位。
視需要編輯資料欄說明,然後按一下「儲存」。
資料欄說明會立即更新。
如要關閉「Preview descriptions」(預覽說明) 面板,請按一下 「Close」(關閉)。
刪除資料欄
您可以使用 ALTER TABLE DROP COLUMN DDL 陳述式,從現有資料表刪除資料欄。
陳述式不會立即釋出與捨棄資料欄相關聯的儲存空間。如要進一步瞭解刪除儲存空間中的資料欄對儲存空間的影響,請參閱 ALTER TABLE DROP COLUMN 陳述式詳細資料。您可以透過以下兩種方式立即釋出儲存空間:
-
CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable ); 將資料匯出至 Cloud Storage、刪除不必要的資料欄,然後將資料載入至結構定義正確的新資料表。
結構定義更新無法捨棄巢狀欄位。