Mengubah skema tabel
Dokumen ini menjelaskan cara memodifikasi definisi skema untuk tabel BigQuery yang sudah ada.
Anda dapat membuat sebagian besar modifikasi skema yang dijelaskan dalam dokumen ini menggunakan pernyataan bahasa definisi data (DDL) SQL. Pernyataan ini tidak dikenai biaya.
Anda dapat memodifikasi skema tabel dengan semua cara yang dijelaskan di halaman ini, yaitu mengekspor data tabel Anda ke Cloud Storage, lalu memuat data ke dalam tabel baru dengan definisi skema yang telah dimodifikasi. Tugas pemuatan dan ekspor BigQuery tidak dikenai biaya, tetapi Anda akan dikenai biaya untuk penyimpanan data yang diekspor di Cloud Storage. Bagian berikut menjelaskan cara lain untuk melakukan berbagai jenis modifikasi skema.
Menambahkan kolom
Anda dapat menambahkan kolom ke definisi skema tabel yang sudah ada menggunakan salah satu opsi berikut:
- Menambahkan kolom kosong baru.
- Menimpa tabel dengan tugas pemuatan atau kueri.
- Menambahkan data ke tabel dengan tugas pemuatan atau kueri.
Setiap kolom yang Anda tambahkan harus mematuhi aturan BigQuery untuk nama kolom. Untuk informasi selengkapnya tentang membuat komponen skema, lihat Menentukan skema.
Menambahkan kolom kosong
Jika Anda menambahkan kolom baru ke skema tabel yang sudah ada, kolom tersebut harus berupa
NULLABLE
atau REPEATED
. Anda tidak dapat menambahkan kolom REQUIRED
ke skema tabel yang sudah ada. Menambahkan kolom REQUIRED
ke skema tabel
yang sudah ada di API atau alat command line bq akan menyebabkan error. Namun, Anda dapat membuat
kolom REQUIRED
bertingkat sebagai bagian dari kolom RECORD
baru.
Kolom REQUIRED
hanya dapat ditambahkan ketika Anda
membuat tabel saat memuat data, atau saat membuat tabel kosong dengan
definisi skema.
Untuk menambahkan kolom kosong ke definisi skema tabel:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih tabel.
Di panel detail, klik tab Schema.
Klik Edit schema. Anda mungkin perlu men-scroll untuk melihat tombol ini.
Di halaman Current schema, di bagian New fields, klik Add fields.
Setelah selesai menambahkan kolom, klik Save.
SQL
Gunakan
pernyataan DDL ALTER TABLE ADD COLUMN
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Berikan perintah bq update
dan berikan file skema JSON. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: jalur ke file skema JSON di mesin lokal Anda.
Saat menentukan skema inline, Anda tidak dapat menentukan
deskripsi kolom, mode, dan jenis
RECORD
(STRUCT
). Semua mode kolom ditetapkan secara default ke NULLABLE
. Akibatnya, jika Anda
menambahkan kolom bertingkat baru ke RECORD
, Anda harus
menyediakan file skema JSON.
Jika mencoba menambahkan kolom menggunakan definisi skema inline, Anda harus
menyediakan seluruh definisi skema termasuk kolom baru. Karena Anda
tidak dapat menentukan mode kolom menggunakan definisi skema inline, pembaruan
akan mengubah kolom REPEATED
yang sudah ada menjadi NULLABLE
, yang
menghasilkan error berikut: BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
Metode yang lebih baik untuk menambahkan kolom ke tabel yang sudah ada menggunakan alat command line bq adalah menyediakan file skema JSON.
Untuk menambahkan kolom kosong ke skema tabel menggunakan file skema JSON:
Pertama, berikan perintah
bq show
dengan flag--schema
dan tulis skema tabel yang sudah ada ke file. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut:PROJECT_ID:DATASET
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: file definisi skema yang ditulis ke mesin lokal Anda.
Misalnya, untuk menulis definisi skema
mydataset.mytable
ke file, masukkan perintah berikut.mydataset.mytable
ada dalam project default Anda.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Buka file skema di editor teks. Skema akan terlihat seperti berikut:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Tambahkan kolom baru di bagian akhir definisi skema. Jika Anda mencoba menambahkan kolom baru di tempat lain dalam array, error berikut akan ditampilkan:
BigQuery error in update operation: Precondition Failed
.Dengan file JSON, Anda dapat menentukan deskripsi, mode
NULLABLE
atauREPEATED
, dan jenisRECORD
untuk kolom baru. Misalnya, menggunakan definisi skema dari langkah sebelumnya, array JSON baru Anda akan terlihat seperti berikut. Dalam contoh ini, kolomNULLABLE
baru bernamacolumn4
ditambahkan.column4
menyertakan deskripsi.[ { "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" } ]
Untuk informasi selengkapnya tentang cara bekerja dengan file skema JSON, lihat Menentukan file skema JSON.
Setelah mengupdate file skema, berikan perintah berikut untuk mengupdate skema tabel. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: file definisi skema yang ditulis ke mesin lokal Anda.
Misalnya, masukkan perintah berikut untuk memperbarui definisi skema
mydataset.mytable
dalam project default Anda. Jalur ke file skema di mesin lokal Anda adalah/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Panggil metode tables.patch
dan gunakan properti schema
untuk menambahkan kolom kosong ke definisi skema Anda. Karena metode tables.update
menggantikan seluruh resource
tabel, metode tables.patch
lebih disarankan.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Tambahkan objek SchemaField baru ke salinan Table.schema, lalu ganti nilai properti Table.schema dengan skema yang diperbarui.Menambahkan kolom bertingkat ke kolom RECORD
Selain menambahkan kolom baru ke skema tabel, Anda juga dapat menambahkan
kolom bertingkat baru ke kolom RECORD
. Proses penambahan kolom bertingkat baru
serupa dengan proses penambahan kolom baru.
Konsol
Menambahkan kolom bertingkat baru ke kolom RECORD
yang sudah ada tidak didukung oleh konsol Google Cloud.
SQL
Menambahkan kolom bertingkat baru ke kolom RECORD
yang sudah ada menggunakan pernyataan DDL
SQL tidak didukung.
bq
Berikan perintah bq update
dan berikan file skema JSON yang menambahkan
kolom bertingkat ke definisi skema kolom RECORD
yang sudah ada. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: jalur ke file skema JSON di komputer mesin Anda.
Saat menentukan skema inline, Anda tidak dapat menentukan
deskripsi kolom, mode, dan jenis
RECORD
(STRUCT
). Semua mode kolom ditetapkan secara default ke NULLABLE
. Akibatnya, jika Anda
menambahkan kolom bertingkat baru ke RECORD
, Anda harus
menyediakan file skema JSON.
Untuk menambahkan kolom bertingkat ke RECORD
menggunakan file skema JSON:
Pertama, berikan perintah
bq show
dengan flag--schema
dan tulis skema tabel yang sudah ada ke file. Jika tabel yang sedang Anda perbarui tidak berada dalam project default Anda, tambahkan project ID ke nama set data dalam format berikut:PROJECT_ID:DATASET.TABLE
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: file definisi skema yang ditulis ke mesin lokal Anda.
Misalnya, untuk menulis definisi skema
mydataset.mytable
ke file, masukkan perintah berikut.mydataset.mytable
ada dalam project default Anda.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Buka file skema di editor teks. Skema akan terlihat seperti berikut. Dalam contoh ini,
column3
adalah kolom berulang bertingkat. Kolom bertingkat adalahnested1
dannested2
. Arrayfields
mencantumkan kolom bertingkat dalamcolumn3
.[ { "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" } ]
Tambahkan kolom bertingkat baru ke akhir array
fields
. Dalam contoh ini,nested3
adalah kolom bertingkat baru.[ { "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" } ]
Untuk informasi selengkapnya tentang cara bekerja dengan file skema JSON, lihat Menentukan file skema JSON.
Setelah mengupdate file skema, berikan perintah berikut untuk mengupdate skema tabel. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: jalur ke file skema JSON di mesin lokal Anda.
Misalnya, masukkan perintah berikut untuk memperbarui definisi skema
mydataset.mytable
dalam project default Anda. Jalur ke file skema di mesin lokal Anda adalah/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Panggil metode tables.patch
dan gunakan properti schema
untuk menambahkan kolom bertingkat ke
definisi skema Anda. Karena metode tables.update
menggantikan seluruh
resource tabel, metode tables.patch
lebih disarankan.
Menambahkan kolom saat Anda menimpa atau menambahkan data
Anda dapat menambahkan kolom baru ke tabel yang sudah ada saat memuat data ke dalam tabel dan memilih untuk menimpa tabel yang sudah ada. Saat Anda menimpa tabel yang sudah ada, skema data yang sedang dimuat akan digunakan untuk menimpa skema tabel yang sudah ada. Untuk informasi tentang menimpa tabel menggunakan tugas pemuatan, lihat dokumen untuk format data Anda:
Menambahkan kolom dalam tugas penambahan muatan
Anda dapat menambahkan kolom ke tabel saat menambahkan data ke tabel dalam tugas pemuatan. Skema baru ditentukan oleh salah satu hal berikut:
- Deteksi otomatis (untuk file CSV dan JSON)
- Skema yang ditentukan dalam file skema JSON (untuk file CSV dan JSON)
- Data sumber yang mendeskripsikan sendiri untuk file ekspor Avro, ORC, Parquet, dan Datastore
Jika Anda menetapkan skema dalam file JSON, kolom baru harus ditetapkan di dalamnya. Jika definisi kolom baru tidak ada, error akan ditampilkan saat Anda mencoba menambahkan data.
Jika Anda menambahkan kolom baru selama operasi penambahan, nilai dalam kolom baru akan ditetapkan ke NULL
untuk baris yang sudah ada.
Untuk menambahkan kolom baru saat menambahkan data ke tabel selama tugas pemuatan, gunakan salah satu opsi berikut:
bq
Gunakan perintah bq load
untuk memuat data dan menentukan flag --noreplace
untuk menunjukkan bahwa Anda menambahkan data ke tabel yang ada.
Jika data yang Anda tambahkan memiliki format CSV atau JSON yang dipisahkan newline,
tentukan flag --autodetect
untuk menggunakan deteksi otomatis skema
atau berikan skema dalam file skema JSON. Kolom yang ditambahkan dapat diinferensi secara otomatis dari file ekspor Avro atau Datastore.
Tetapkan flag --schema_update_option
ke ALLOW_FIELD_ADDITION
untuk menunjukkan bahwa data yang Anda tambahkan berisi kolom baru.
Jika tabel yang Anda tambahkan tidak berada dalam set data project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
Masukkan perintah load
seperti berikut:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika Anda menggunakan BigQuery di region Tokyo, tetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.FORMAT
: format skema.NEWLINE_DELIMITED_JSON
,CSV
,AVRO
,PARQUET
,ORC
, atauDATASTORE_BACKUP
.PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel.TABLE
: nama tabel yang Anda tambahkan.PATH_TO_SOURCE
: Cloud Storage URI yang sepenuhnya memenuhi syarat, daftar URI yang dipisahkan koma, atau jalur ke file data di mesin lokal Anda.SCHEMA
: jalur ke file skema JSON lokal. File skema diperlukan hanya untuk file CSV dan JSON jika--autodetect
tidak ditentukan. Skema Avro dan Datastore diinferensi dari data sumber.
Contoh:
Masukkan perintah berikut untuk menambahkan file data Avro lokal, /tmp/mydata.avro
, ke mydataset.mytable
menggunakan tugas pemuatan. Karena skema
dapat diinferensi secara otomatis dari data Avro, Anda tidak perlu menggunakan
flag --autodetect
. mydataset
ada dalam project default Anda.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Masukkan perintah berikut untuk menambahkan file data JSON yang dipisahkan newline di Cloud Storage ke mydataset.mytable
menggunakan tugas pemuatan. Flag --autodetect
digunakan untuk mendeteksi kolom baru. mydataset
ada dalam project
default Anda.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
Masukkan perintah berikut untuk menambahkan file data JSON yang dipisahkan newline di Cloud Storage ke mydataset.mytable
menggunakan tugas pemuatan. Skema
yang berisi kolom baru ditentukan dalam file skema JSON lokal,
/tmp/myschema.json
. mydataset
ada di myotherproject
, bukan project default
Anda.
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
Panggil metode jobs.insert
. Konfigurasikan tugas load
dan setel properti berikut:
- Mereferensikan data Anda di Cloud Storage menggunakan properti
sourceUris
. - Tentukan format data dengan menyetel properti
sourceFormat
. - Tentukan skema di properti
schema
. - Tentukan opsi pembaruan skema menggunakan properti
schemaUpdateOptions
. - Tetapkan disposisi tulis tabel tujuan ke
WRITE_APPEND
menggunakan propertiwriteDisposition
.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Menambahkan kolom dalam tugas penambahan kueri
Anda dapat menambahkan kolom ke tabel saat menambahkan hasil kueri ke tabel tersebut.
Jika Anda menambahkan kolom menggunakan operasi penambahan dalam tugas kueri, skema hasil kueri akan digunakan untuk memperbarui skema tabel tujuan. Perhatikan bahwa Anda tidak dapat membuat kueri tabel di satu lokasi dan menulis hasilnya ke tabel di lokasi lain.
Untuk menambahkan kolom baru saat menambahkan data ke tabel selama tugas kueri, pilih salah satu opsi berikut:
bq
Gunakan perintah bq query
untuk membuat kueri data dan menentukan flag --destination_table
untuk menunjukkan tabel tujuan penambahan.
Untuk menentukan bahwa Anda menambahkan hasil kueri ke tabel tujuan yang sudah ada, tentukan flag --append_table
.
Tetapkan flag --schema_update_option
ke ALLOW_FIELD_ADDITION
untuk menunjukkan bahwa hasil kueri yang Anda tambahkan berisi kolom baru.
Tentukan flag use_legacy_sql=false
untuk menggunakan sintaksis GoogleSQL untuk kueri.
Jika tabel yang Anda tambahkan tidak berada dalam set data project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
. Perhatikan bahwa tabel
yang Anda kuerikan dan tabel tujuan harus berada di lokasi yang sama.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika Anda menggunakan BigQuery di region Tokyo, tetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc. Perhatikan bahwa Anda tidak dapat menambahkan hasil kueri ke tabel di lokasi lain.PROJECT_ID
: project ID Anda.dataset
: nama set data yang berisi tabel tujuan penambahan.TABLE
: nama tabel yang Anda tambahkan.QUERY
: kueri dalam sintaksis GoogleSQL.
Contoh:
Masukkan perintah berikut untuk membuat kueri mydataset.mytable
di project default Anda dan menambahkan hasil kueri ke mydataset.mytable2
(juga di project default Anda).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Masukkan perintah berikut untuk membuat kueri mydataset.mytable
di project default Anda dan untuk menambahkan hasil kueri ke mydataset.mytable2
di myotherproject
.
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
Panggil metode jobs.insert
. Konfigurasikan tugas query
dan setel properti berikut:
- Tentukan tabel tujuan menggunakan properti
destinationTable
. - Tetapkan disposisi tulis tabel tujuan ke
WRITE_APPEND
menggunakan propertiwriteDisposition
. - Tentukan opsi pembaruan skema menggunakan properti
schemaUpdateOptions
. - Tentukan kueri GoogleSQL menggunakan properti
query
.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Mengubah nama kolom
Untuk mengganti nama kolom pada tabel, gunakan
pernyataan DDL ALTER TABLE RENAME COLUMN
. Contoh berikut mengganti nama kolom old_name
menjadi new_name
di mytable
:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
Untuk informasi
selengkapnya tentang pernyataan ALTER TABLE RENAME COLUMN
, lihat
Detail DDL.
Mengubah jenis data kolom
Mengubah jenis data kolom tidak didukung oleh konsol Google Cloud, alat command line bq, atau BigQuery API. Error akan muncul jika Anda mencoba memperbarui tabel dengan menerapkan skema yang menentukan jenis data baru untuk kolom.
Mengubah jenis data kolom dengan pernyataan DDL
Anda dapat menggunakan GoogleSQL untuk membuat perubahan tertentu pada jenis data
kolom. Untuk mengetahui informasi selengkapnya dan daftar lengkap konversi jenis data yang didukung, lihat pernyataan DDL ALTER COLUMN SET DATA TYPE
.
Contoh berikut membuat tabel dengan kolom jenis INT64
, lalu memperbarui jenisnya menjadi NUMERIC
:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
Contoh berikut membuat tabel dengan kolom bertingkat dengan dua kolom, lalu
memperbarui jenis salah satu kolom dari INT
menjadi 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>;
Mentransmisikan jenis data kolom
Untuk mengubah jenis data kolom menjadi jenis castable, gunakan kueri SQL untuk memilih data tabel, mentransmisikan kolom yang relevan, dan menimpa tabel. Transmisi dan penimpaan tidak direkomendasikan untuk tabel yang sangat besar karena memerlukan pemindaian tabel lengkap.
Contoh berikut menunjukkan kueri SQL yang memilih semua data dari
column_two
dan column_three
di mydataset.mytable
, lalu mentransmisikan column_one
dari DATE
ke STRING
. Hasil kueri digunakan untuk menimpa tabel yang sudah ada. Tabel yang ditimpa menyimpan column_one
sebagai jenis data STRING
.
Saat menggunakan CAST
, kueri dapat gagal jika BigQuery tidak dapat
melakukan transmisi. Untuk mengetahui detail tentang aturan transmisi di GoogleSQL, lihat
Melakukan transmisi.
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di Query editor, masukkan kueri berikut untuk memilih semua data dari
column_two
dancolumn_three
dimydataset.mytable
, serta untuk mentransmisikancolumn_one
dariDATE
keSTRING
. Kueri menggunakan alias untuk mentransmisikancolumn_one
dengan nama yang sama.mydataset.mytable
ada dalam project default Anda.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
Klik More dan pilih Query settings.
Di bagian Destination, lakukan tindakan berikut:
Pilih Set a destination table for query results.
Untuk Project name, biarkan nilai ditetapkan ke project default Anda. Ini adalah project yang berisi
mydataset.mytable
.Untuk Dataset, pilih
mydataset
.Di kolom Table ID, masukkan
mytable
.Untuk Destination table write preference, pilih Overwrite table. Opsi ini menimpa
mytable
menggunakan hasil kueri.
Secara opsional, pilih lokasi data Anda.
Untuk memperbarui setelan, klik Save.
Klik
Run.Saat tugas kueri selesai, jenis data
column_one
adalahSTRING
.
bq
Masukkan perintah bq query
berikut untuk memilih semua data dari
column_two
dan column_three
di mydataset.mytable
, serta untuk mentransmisikan
column_one
dari DATE
ke STRING
. Kueri menggunakan alias untuk mentransmisikan
column_one
dengan nama yang sama. mydataset.mytable
ada dalam project default Anda.
Hasil kueri ditulis ke mydataset.mytable
menggunakan
flag --destination_table
, dan flag --replace
digunakan untuk menimpa
mytable
. Tentukan flag use_legacy_sql=false
untuk menggunakan
sintaksis GoogleSQL.
Jika ingin, berikan flag --location
dan tetapkan nilai ke lokasi Anda.
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
Untuk memilih semua data dari column_two
dan column_three
di
mydataset.mytable
, serta untuk mentransmisikan column_one
dari DATE
ke STRING
, panggil metode
jobs.insert
dan konfigurasi tugas query
. Secara opsional, tentukan lokasi Anda di
properti location
di bagian jobReference
.
Kueri SQL yang digunakan dalam tugas kueri adalah SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable
. Kueri menggunakan alias untuk mentransmisikan column_one
dengan
nama yang sama.
Untuk menimpa mytable
dengan hasil kueri, sertakan mydataset.mytable
di properti configuration.query.destinationTable
, dan tentukan WRITE_TRUNCATE
di properti configuration.query.writeDisposition
.
Mengubah mode kolom
Satu-satunya modifikasi yang didukung dan dapat Anda buat untuk mode kolom adalah mengubahnya dari REQUIRED
menjadi NULLABLE
. Mengubah mode kolom dari
REQUIRED
menjadi NULLABLE
juga disebut relaksasi kolom. Anda juga dapat merelaksasi kolom saat memuat data untuk menimpa tabel yang sudah ada, atau saat menambahkan data ke tabel yang sudah ada. Anda tidak dapat mengubah mode kolom
dari NULLABLE
menjadi REQUIRED
.
Membuat kolom NULLABLE
di tabel yang sudah ada
Untuk mengubah mode kolom dari REQUIRED
menjadi NULLABLE
, pilih salah satu
opsi berikut:
Konsol
Buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih tabel.
Di panel detail, klik tab Schema.
Klik Edit schema. Anda mungkin perlu men-scroll untuk melihat tombol ini.
Di halaman Current schema, cari kolom yang ingin Anda ubah.
Dalam menu drop-down Mode untuk kolom tersebut, pilih
NULLABLE
.Untuk memperbarui setelan, klik Save.
SQL
Gunakan
pernyataan DDL ALTER COLUMN DROP NOT NULL
.
Contoh berikut mengubah mode kolom mycolumn
dari
REQUIRED
menjadi NULLABLE
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Pertama, berikan perintah
bq show
dengan flag--schema
dan tulis skema tabel yang sudah ada ke file. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut:PROJECT_ID:DATASET
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA_FILE
: file definisi skema yang ditulis ke mesin lokal Anda.
Misalnya, untuk menulis definisi skema
mydataset.mytable
ke file, masukkan perintah berikut.mydataset.mytable
ada dalam project default Anda.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Buka file skema di editor teks. Skema akan terlihat seperti berikut:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Ubah mode kolom yang sudah ada dari
REQUIRED
menjadiNULLABLE
. Dalam contoh ini, mode untukcolumn1
dalam keadaan relaks.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Untuk informasi selengkapnya tentang cara bekerja dengan file skema JSON, lihat Menentukan file skema JSON.
Setelah mengupdate file skema, berikan perintah berikut untuk mengupdate skema tabel. Jika tabel yang sedang Anda perbarui tidak berada dalam project default, tambahkan project ID ke nama set data dalam format berikut:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Ganti kode berikut:
PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel yang Anda perbarui.TABLE
: nama tabel yang Anda perbarui.SCHEMA
: jalur ke file skema JSON di mesin lokal Anda.
Misalnya, masukkan perintah berikut untuk memperbarui definisi skema
mydataset.mytable
dalam project default Anda. Jalur ke file skema di mesin lokal Anda adalah/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Panggil tables.patch
dan
gunakan properti schema
untuk mengubah kolom REQUIRED
menjadi NULLABLE
dalam
definisi skema Anda. Karena metode tables.update
menggantikan
seluruh resource tabel, metode tables.patch
lebih disarankan.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Timpa properti Table.schema dengan daftar objek SchemaField yang mode propertinya ditetapkan ke'NULLABLE'
Membuat kolom NULLABLE
dengan tugas pemuatan tambahan
Anda dapat merelaksasi mode kolom saat menambahkan data ke tabel dalam tugas pemuatan. Pilih salah satu dari opsi berikut berdasarkan jenis file:
- Saat menambahkan data dari file CSV dan JSON, relaksasikan mode untuk setiap kolom dengan menentukan file skema JSON.
- Saat menambahkan data dari file Avro, ORC, atau Parquet, relaksasikan kolom ke
NULL
dalam skema Anda dan biarkan inferensi skema mendeteksi kolom yang direlaksasi.
Untuk merelaksasi kolom dari REQUIRED
menjadi NULLABLE
saat menambahkan data ke tabel
selama tugas pemuatan, pilih salah satu opsi berikut:
Konsol
Anda tidak dapat merelaksasi mode kolom menggunakan konsol Google Cloud.
bq
Gunakan perintah bq load
untuk memuat data dan menentukan flag --noreplace
untuk menunjukkan bahwa Anda menambahkan data ke tabel yang ada.
Jika data yang Anda tambahkan memiliki format CSV atau JSON yang dipisahkan newline,
tentukan kolom yang direlaksasi dalam file skema JSON lokal, atau gunakan
flag --autodetect
untuk menggunakan deteksi skema guna menemukan kolom yang direlaksasi dalam data sumber.
Kolom yang direlaksasi dapat diinferensikan secara otomatis dari file Avro, ORC, dan Parquet. Relaksasi kolom tidak berlaku untuk penambahan ekspor Datastore. Kolom dalam tabel yang dibuat dengan memuat file ekspor Datastore selalu NULLABLE
.
Tetapkan flag --schema_update_option
ke ALLOW_FIELD_RELAXATION
untuk
menunjukkan bahwa data yang Anda tambahkan berisi kolom yang direlaksasi.
Jika tabel yang Anda tambahkan tidak berada dalam set data project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
Masukkan perintah load
seperti berikut:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika Anda menggunakan BigQuery di region Tokyo, tetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
,CSV
,PARQUET
,ORC
, atauAVRO
. FileDATASTORE_BACKUP
tidak memerlukan relaksasi kolom. Kolom dalam tabel yang dibuat dari file ekspor Datastore selaluNULLABLE
.PROJECT_ID
: project ID Anda.dataset adalah nama set data yang berisi tabel.
TABLE
: nama tabel yang Anda tambahkan.PATH_TO_SOURCE
: Cloud Storage URI yang sepenuhnya memenuhi syarat, daftar URI yang dipisahkan koma, atau jalur ke file data di mesin lokal Anda.SCHEMA
: jalur ke file skema JSON lokal. Opsi ini hanya digunakan untuk file CSV dan JSON. Kolom yang direlaksasi disimpulkan secara otomatis dari file Avro.
Contoh:
Masukkan perintah berikut untuk menambahkan file data Avro lokal, /tmp/mydata.avro
, ke mydataset.mytable
menggunakan tugas pemuatan. Karena kolom yang direlaksasi
dapat disimpulkan secara otomatis dari data Avro, Anda tidak perlu
menentukan file skema. mydataset
ada dalam project default Anda.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Masukkan perintah berikut untuk menambahkan data dari file JSON yang dipisahkan newline di Cloud Storage ke mydataset.mytable
menggunakan tugas pemuatan. Skema
berisi kolom yang direlaksasi berada dalam file skema JSON lokal —
/tmp/myschema.json
. mydataset
ada dalam project default Anda.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
Masukkan perintah berikut untuk menambahkan data dalam file CSV di mesin lokal Anda ke mydataset.mytable
menggunakan tugas pemuatan. Perintah tersebut menggunakan deteksi
otomatis skema untuk menemukan kolom yang direlaksasi dalam data sumber. mydataset
berada di myotherproject
, bukan di project default Anda.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Panggil metode jobs.insert
. Konfigurasikan tugas load
dan setel properti berikut:
- Mereferensikan data Anda di Cloud Storage menggunakan properti
sourceUris
. - Tentukan format data dengan menyetel properti
sourceFormat
. - Tentukan skema di properti
schema
. - Tentukan opsi pembaruan skema menggunakan properti
schemaUpdateOptions
. - Tetapkan disposisi tulis tabel tujuan ke
WRITE_APPEND
menggunakan propertiwriteDisposition
.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Membuat semua kolom NULLABLE
dengan tugas penambahan
Anda dapat merelaksasi semua kolom dalam tabel saat menambahkan hasil kueri ke tabel tersebut. Anda
dapat merelaksasi semua kolom wajib diisi di tabel tujuan dengan menyetel
flag --schema_update_option
ke ALLOW_FIELD_RELAXATION
. Anda tidak dapat merelaksasi kolom individual dalam tabel tujuan menggunakan penambahan kueri. Untuk merelaksasi
kolom individual dengan tugas penambahan muatan, lihat
Membuat kolom NULLABLE
dengan tugas penambahan.
Untuk merelaksasi semua kolom saat menambahkan hasil kueri ke tabel tujuan, pilih salah satu opsi berikut:
Konsol
Anda tidak dapat merelaksasi mode kolom menggunakan konsol Google Cloud.
bq
Gunakan perintah bq query
untuk membuat kueri data dan menentukan flag --destination_table
untuk menunjukkan tabel tujuan penambahan.
Untuk menentukan bahwa Anda menambahkan hasil kueri ke tabel tujuan yang sudah ada, tentukan flag --append_table
.
Setel flag --schema_update_option
ke ALLOW_FIELD_RELAXATION
untuk
menunjukkan bahwa semua kolom REQUIRED
dalam tabel tujuan penambahan harus
diubah menjadi NULLABLE
.
Tentukan flag use_legacy_sql=false
untuk menggunakan sintaksis GoogleSQL untuk kueri.
Jika tabel yang Anda tambahkan tidak berada dalam set data project default, tambahkan project ID ke nama set data dalam format berikut: PROJECT_ID:DATASET
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
Ganti kode berikut:
LOCATION
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika Anda menggunakan BigQuery di region Tokyo, tetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.PROJECT_ID
: project ID Anda.DATASET
: nama set data yang berisi tabel tujuan penambahan.TABLE
: nama tabel yang Anda tambahkan.QUERY
: kueri dalam sintaksis GoogleSQL.
Contoh:
Masukkan kueri perintah berikut mydataset.mytable
dalam project default Anda untuk menambahkan hasil kueri ke mydataset.mytable2
(juga dalam project default Anda). Perintah ini mengubah semua kolom REQUIRED
di tabel tujuan menjadi 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'
Masukkan kueri perintah berikut mydataset.mytable
dalam project default Anda dan untuk menambahkan hasil kueri ke mydataset.mytable2
di myotherproject
. Perintah ini mengubah semua kolom REQUIRED
di tabel tujuan menjadi 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
Panggil metode jobs.insert
. Konfigurasikan tugas query
dan setel properti berikut:
- Tentukan tabel tujuan menggunakan properti
destinationTable
. - Tetapkan disposisi tulis tabel tujuan ke
WRITE_APPEND
menggunakan propertiwriteDisposition
. - Tentukan opsi pembaruan skema menggunakan properti
schemaUpdateOptions
. - Tentukan kueri GoogleSQL menggunakan properti
query
.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Mengubah nilai default kolom
Untuk mengubah nilai default kolom, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih tabel.
Di panel detail, klik tab Schema.
Klik Edit schema. Anda mungkin perlu men-scroll untuk melihat tombol ini.
Di halaman Current schema, cari kolom level teratas yang ingin Anda ubah.
Masukkan nilai default untuk kolom tersebut.
Klik Save.
SQL
Gunakan
pernyataan DDL ALTER COLUMN SET DEFAULT
.
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Mengubah deskripsi kolom
Untuk mengubah deskripsi kolom, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project dan set data Anda, lalu pilih tabel.
Di panel detail, klik tab Schema.
Klik Edit schema. Anda mungkin perlu men-scroll untuk melihat tombol ini.
Di halaman Current schema, cari kolom yang ingin Anda ubah.
Masukkan deskripsi untuk kolom tersebut.
Klik Simpan.
SQL
Gunakan
pernyataan DDL ALTER COLUMN SET OPTIONS
.
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Menghapus kolom
Anda dapat menghapus kolom dari tabel yang sudah ada menggunakan
pernyataan DDL ALTER TABLE DROP COLUMN
.
Pernyataan tersebut tidak langsung mengosongkan penyimpanan yang terkait dengan
kolom yang dihapus. Untuk mempelajari lebih lanjut dampak terhadap penyimpanan saat Anda menghapus
kolom di penyimpanan, lihat detail
pernyataan ALTER TABLE DROP COLUMN
.
Ada dua opsi untuk segera mengklaim kembali penyimpanan:
Menimpa tabel dengan kueri
SELECT * EXCEPT
:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );
Mengekspor data ke Cloud Storage, menghapus kolom yang tidak diinginkan, lalu memuat data ke dalam tabel baru dengan skema yang benar.