Menetapkan skema
Dengan BigQuery, Anda dapat menentukan skema tabel saat memuat data ke dalam tabel, dan saat membuat tabel kosong. Atau, Anda dapat menggunakan deteksi otomatis skema untuk format data yang didukung.
Saat Anda memuat file ekspor Avro, Parquet, ORC, Firestore, atau file ekspor Datastore, skema ini secara otomatis diambil dari data sumber deskripsi mandiri.
Anda dapat menentukan skema tabel dengan cara berikut:
- Menggunakan Konsol Google Cloud.
- Menggunakan pernyataan SQL
CREATE TABLE
. - Inline menggunakan alat command line bq.
- Membuat file skema dalam format JSON.
- Memanggil metode
jobs.insert
dan mengonfigurasikan propertischema
di konfigurasi tugasload
. - Memanggil metode
tables.insert
dan mengonfigurasikan skema di resource tabel menggunakan propertischema
.
Setelah memuat data atau membuat tabel kosong, Anda dapat mengubah definisi skema tabel.
Komponen skema
Saat menentukan skema tabel, Anda harus memberikan nama dan jenis data setiap kolom. Anda juga dapat memberikan deskripsi, mode, dan nilai default kolom.
Nama kolom
Nama kolom dapat berisi huruf (a-z, A-Z), angka (0-9), atau garis bawah (_), dan harus diawali dengan huruf atau garis bawah. Jika Anda menggunakan nama kolom fleksibel, BigQuery mendukung nama kolom yang dimulai dengan angka. Berhati-hatilah saat memulai kolom dengan angka, karena penggunaan nama kolom yang fleksibel dengan BigQuery Storage Read API atau BigQuery Storage Write API memerlukan penanganan khusus. Untuk informasi selengkapnya tentang dukungan nama kolom yang fleksibel, lihat nama kolom yang fleksibel.
Nama kolom memiliki panjang maksimum 300 karakter. Nama kolom tidak boleh menggunakan imbuhan berikut:
_TABLE_
_FILE_
_PARTITION
_ROW_TIMESTAMP
__ROOT__
_COLIDENTIFIER
Nama kolom duplikat tidak diizinkan meskipun kasusnya berbeda. Misalnya, kolom bernama Column1
dianggap identik dengan kolom bernama column1
. Untuk
mempelajari aturan penamaan kolom lebih lanjut, lihat Nama
kolom dalam
referensi GoogleSQL.
Jika nama tabel (misalnya, test
) sama dengan salah satu nama kolomnya
(misalnya, test
), ekspresi SELECT
akan menafsirkan kolom test
sebagai
STRUCT
yang berisi semua kolom tabel lainnya. Untuk menghindari konflik ini, gunakan
salah satu metode berikut:
Hindari penggunaan nama yang sama untuk tabel dan kolomnya.
Tetapkan alias lain ke tabel. Misalnya, kueri berikut menetapkan alias tabel
t
ke tabelproject1.dataset.test
:SELECT test FROM project1.dataset.test AS t;
Sertakan nama tabel saat mereferensikan kolom. Contoh:
SELECT test.test FROM project1.dataset.test;
Nama kolom fleksibel
Anda memiliki fleksibilitas yang lebih besar terkait nama kolom, termasuk akses yang diperluas ke karakter dalam bahasa selain bahasa Inggris serta simbol tambahan.
Nama kolom fleksibel mendukung karakter berikut:
- Huruf apa pun dalam bahasa apa pun, seperti yang diwakili oleh ekspresi reguler Unicode
\p{L}
. - Karakter numerik apa pun dalam bahasa apa pun seperti yang diwakili oleh ekspresi reguler
Unicode
\p{N}
. - Karakter tanda baca konektor apa pun, termasuk garis bawah, seperti yang diwakili oleh ekspresi reguler Unicode
\p{Pc}
. - Tanda hubung atau tanda pisah seperti yang diwakili oleh ekspresi reguler Unicode
\p{Pd}
. - Tanda apa pun yang dimaksudkan untuk menyertai karakter lain seperti yang diwakili oleh
ekspresi reguler Unicode
\p{M}
. Misalnya, aksen, umlaut, atau kotak penutup. - Karakter khusus berikut:
- Tanda ampersand (
&
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0026
. - Tanda persen (
%
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0025
. - Tanda sama dengan (
=
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003D
. - Tanda plus (
+
) sebagaimana diwakili oleh ekspresi reguler Unicode\u002B
. - Tanda titik dua (
:
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003A
. - Tanda apostrof (
'
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0027
. - Tanda kurang dari (
<
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003C
. - Tanda lebih besar dari (
>
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003E
. - Tanda pagar (
#
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0023
. - Garis vertikal (
|
) sebagaimana diwakili oleh ekspresi reguler Unicode\u007c
. - Spasi kosong.
- Tanda ampersand (
Nama kolom fleksibel tidak mendukung karakter khusus berikut:
- Tanda seru (
!
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0021
. - Tanda kutip (
"
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0022
. - Tanda dolar (
$
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0024
. - Tanda kurung buka (
(
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0028
. - Tanda kurung tutup (
)
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0029
. - Tanda bintang (
*
) sebagaimana diwakili oleh ekspresi reguler Unicode\u002A
. - Tanda koma (
,
) sebagaimana diwakili oleh ekspresi reguler Unicode\u002C
. - Tanda titik (
.
) sebagaimana diwakili oleh ekspresi reguler Unicode\u002E
. - Tanda garis miring (
/
) sebagaimana diwakili oleh ekspresi reguler Unicode\u002F
. - Tanda titik koma (
;
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003B
. - Tanda tanya (
?
) sebagaimana diwakili oleh ekspresi reguler Unicode\u003F
. - Tanda at (
@
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0040
. - Tanda kurung siku buka (
[
) sebagaimana diwakili oleh ekspresi reguler Unicode\u005B
. - Tanda garis miring terbalik (
\
) sebagaimana diwakili oleh ekspresi reguler Unicode\u005C
. - Tanda kurung siku tutup (
]
) sebagaimana diwakili oleh ekspresi reguler Unicode\u005D
. - Tanda aksen sirkumfleks (
^
) sebagaimana diwakili oleh ekspresi reguler Unicode\u005E
. - Tanda aksen nontirus (
`
) sebagaimana diwakili oleh ekspresi reguler Unicode\u0060
. - Tanda kurung kurawal buka {
{
) sebagaimana diwakili oleh ekspresi reguler Unicode\u007B
. - Tanda kurung kurawal tutup (
}
) sebagaimana diwakili oleh ekspresi reguler Unicode\u007D
. - Tanda gelombang (
~
) sebagaimana diwakili oleh ekspresi reguler Unicode\u007E
.
Untuk panduan tambahan, lihat Nama kolom.
Karakter kolom yang diperluas didukung oleh BigQuery Storage Read API dan BigQuery Storage Write API. Untuk menggunakan daftar karakter Unicode yang diperluas dengan BigQuery Storage Read API, Anda harus menetapkan flag. Anda dapat menggunakan atribut displayName
untuk mengambil nama kolom. Contoh berikut menunjukkan cara menetapkan flag dengan klien Python:
from google.cloud.bigquery_storage import types
requested_session = types.ReadSession()
#set avro serialization options for flexible column.
options = types.AvroSerializationOptions()
options.enable_display_name_attribute = True
requested_session.read_options.avro_serialization_options = options
Untuk menggunakan daftar karakter Unicode yang diperluas dengan BigQuery Storage Write API, Anda harus memberikan skema dengan notasi column_name
, kecuali jika Anda menggunakan objek tulis JsonStreamWriter
. Contoh berikut menunjukkan cara
menyediakan skema:
syntax = "proto2";
package mypackage;
// Source protos located in github.com/googleapis/googleapis
import "google/cloud/bigquery/storage/v1/annotations.proto";
message FlexibleSchema {
optional string item_name_column = 1
[(.google.cloud.bigquery.storage.v1.column_name) = "name-列"];
optional string item_description_column = 2
[(.google.cloud.bigquery.storage.v1.column_name) = "description-列"];
}
Dalam contoh ini, item_name_column
dan item_description_column
adalah nama placeholder yang harus mematuhi konvensi penamaan buffering protokol. Perhatikan bahwa anotasi column_name
selalu lebih diutamakan daripada nama placeholder.
Batasan
Nama kolom fleksibel tidak didukung dengan tabel eksternal.
Deskripsi kolom
Setiap kolom dapat berisi deskripsi opsional. Deskripsi adalah string dengan panjang maksimum 1.024 karakter.
Nilai default
Nilai default untuk kolom harus berupa literal atau salah satu dari fungsi berikut:
CURRENT_DATE
CURRENT_DATETIME
CURRENT_TIME
CURRENT_TIMESTAMP
GENERATE_UUID
RAND
SESSION_USER
ST_GEOGPOINT
Jenis data GoogleSQL
GoogleSQL memungkinkan Anda menentukan jenis data berikut dalam skema Anda. Jenis data wajib diisi.
Nama | Jenis data | Deskripsi |
---|---|---|
Bilangan Bulat | INT64 |
Nilai numerik tanpa komponen pecahan |
Titik mengambang | FLOAT64 |
Perkiraan nilai numerik dengan komponen pecahan |
Angka | NUMERIC |
Nilai numerik persis dengan komponen pecahan |
BigNumeric | BIGNUMERIC |
Nilai numerik persis dengan komponen pecahan |
Boolean | BOOL |
TRUE atau FALSE (tidak peka huruf besar/kecil) |
String | STRING |
Data karakter dengan panjang variabel (Unicode) |
Byte | BYTES |
Data biner dengan panjang variabel |
Tanggal | DATE |
Tanggal kalender yang logis |
Date/Time | DATETIME |
Tahun, bulan, hari, jam, menit, detik, dan subdetik |
Waktu | TIME |
Waktu, terlepas dari tanggal tertentu |
Stempel waktu | TIMESTAMP |
Titik absolut dalam waktu, dengan presisi mikrodetik |
Struktur (Kumpulan data) | STRUCT |
Penampung kolom yang diurutkan masing-masing dengan jenis (wajib) dan nama kolom (opsional) |
Geografi | GEOGRAPHY |
Titik-titik di permukaan Bumi (kumpulan titik, garis, dan poligon pada bentuk bulat referensi WGS84, dengan tepi geodesi) |
JSON | JSON |
Mewakili JSON, format data-interchange yang ringan |
RANGE | RANGE |
Rentang nilai DATE , DATETIME , atau TIMESTAMP |
Untuk mengetahui informasi selengkapnya tentang jenis data di GoogleSQL, lihat Jenis data GoogleSQL.
Anda juga dapat mendeklarasikan jenis array saat melakukan kueri data. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan array.
Mode
BigQuery mendukung mode berikut untuk kolom Anda. Mode bersifat opsional. Jika mode tidak ditentukan, kolom akan ditetapkan secara default ke NULLABLE
.
Mode | Deskripsi |
---|---|
Nullable | Kolom mengizinkan nilai NULL (default) |
Diperlukan | Nilai NULL tidak diizinkan |
Berulang | Kolom berisi array nilai dari jenis yang ditentukan |
Untuk informasi selengkapnya tentang moda, lihat mode
di TableFieldSchema
.
Mode pembulatan
Jika kolom berjenis NUMERIC
atau BIGNUMERIC
, Anda dapat menetapkan opsi kolom rounding_mode
, yang menentukan cara pembulatan nilai dalam kolom tersebut saat ditulis ke tabel. Anda dapat menetapkan opsi rounding_mode
di kolom level teratas atau kolom STRUCT
. Mode pembulatan berikut didukung:
"ROUND_HALF_AWAY_FROM_ZERO"
: Mode ini (default) membulatkan setengah kasus dari nol."ROUND_HALF_EVEN"
: Mode ini membulatkan separuh kasus ke angka genap terdekat.
Anda tidak dapat menetapkan opsi rounding_mode
untuk kolom yang bukan berjenis NUMERIC
atau BIGNUMERIC
. Untuk mempelajari jenis-jenis ini lebih lanjut, lihat jenis desimal.
Contoh berikut membuat tabel dan menyisipkan nilai yang dibulatkan berdasarkan mode pembulatan kolom:
CREATE TABLE mydataset.mytable ( x NUMERIC(5,2) OPTIONS (rounding_mode='ROUND_HALF_EVEN'), y NUMERIC(5,2) OPTIONS (rounding_mode='ROUND_HALF_AWAY_FROM_ZERO') ); INSERT mydataset.mytable (x, y) VALUES (NUMERIC "1.025", NUMERIC "1.025"), (NUMERIC "1.0251", NUMERIC "1.0251"), (NUMERIC "1.035", NUMERIC "1.035"), (NUMERIC "-1.025", NUMERIC "-1.025");
Tabel mytable
terlihat seperti berikut:
+-------+-------+ | x | y | +-------+-------+ | 1.02 | 1.03 | | 1.03 | 1.03 | | 1.04 | 1.04 | | -1.02 | -1.03 | +-------+-------+
Untuk informasi selengkapnya, lihat roundingMode
dalam TableFieldSchema
.
Menentukan skema
Saat memuat data atau membuat tabel kosong, Anda dapat menentukan skema tabel menggunakan Google Cloud Console atau alat command line bq. Penentuan skema didukung saat Anda memuat file CSV dan JSON (newline delimited). Saat Anda memuat data ekspor Avro, Parquet, ORC, Firestore, atau data ekspor Datastore, skema ini secara otomatis diambil dari data sumber deskripsi mandiri.
Untuk menetapkan skema tabel:
Konsol
Di konsol Google Cloud, Anda dapat menentukan skema menggunakan opsi Add field atau opsi Edit as text.
Di Konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda dan pilih set data.
Luaskan opsi
Actions dan klik Open.Di panel detail, klik Create table
.Di halaman Create table, di bagian Source, pilih Empty table.
Di halaman Create table, di bagian Destination:
Untuk Dataset name, pilih set data yang sesuai
Di kolom Table name, masukkan nama tabel yang Anda buat.
Pastikan Table type disetel ke Native table.
Di bagian Schema, masukkan definisi skema.
- Opsi 1: Gunakan Add field dan tentukan nama, jenis, dan mode setiap kolom.
- Opsi 2: Klik Edit as text dan tempelkan skema dalam bentuk array JSON. Saat menggunakan array JSON, Anda menghasilkan skema menggunakan proses yang sama seperti membuat file skema JSON.
Klik Create table.
SQL
Gunakan pernyataan CREATE TABLE
.
Tentukan skema menggunakan opsi column.
Contoh berikut membuat tabel baru bernama newtable
dengan kolom x, y, z dengan jenis bilangan bulat, string, dan boolean:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRING, z BOOL) OPTIONS( description = 'My example table');
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Berikan skema secara inline dalam format field:data_type,field:data_type
menggunakan salah satu perintah berikut:
- Jika Anda memuat data, gunakan perintah
bq load
. - Jika Anda membuat tabel kosong, gunakan perintah
bq mk
.
Saat menentukan skema di command line, Anda tidak dapat menyertakan jenis RECORD
(STRUCT
) atau RANGE
, Anda tidak dapat menyertakan deskripsi kolom, dan Anda tidak dapat menentukan mode kolom. Semua mode ditetapkan secara default ke NULLABLE
. Untuk menyertakan deskripsi, mode, jenis RECORD
, dan jenis RANGE
, berikan file skema JSON sebagai gantinya.
Untuk memuat data ke dalam tabel menggunakan definisi skema inline, masukkan perintah load
dan tentukan format data menggunakan tanda --source_format
.
Jika Anda memuat data ke tabel dalam project selain project default Anda, sertakan project ID dalam format berikut: project_id:dataset.table_name
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
bq --location=location load \ --source_format=format \ project_id:dataset.table_name \ path_to_source \ schema
Ganti kode berikut:
location
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.format
:NEWLINE_DELIMITED_JSON
atauCSV
.project_id
: project ID Anda.dataset
: set data yang berisi tabel tempat Anda memuat data.table_name
: nama tabel tempat Anda memuat data.path_to_source
: lokasi file data CSV atau JSON di komputer lokal atau di Cloud Storage.schema
: definisi skema inline.
Contoh:
Masukkan perintah berikut untuk memuat data dari file CSV lokal bernama myfile.csv
ke mydataset.mytable
di project default Anda. Skema ditentukan secara inline.
bq load \
--source_format=CSV \
mydataset.mytable \
./myfile.csv \
qtr:STRING,sales:FLOAT,year:STRING
Untuk informasi selengkapnya tentang pemuatan data ke BigQuery, lihat Pengantar pemuatan data.
Untuk menentukan definisi skema inline saat membuat tabel kosong, masukkan perintah bq mk
dengan tanda --table
atau -t
. Jika Anda membuat tabel dalam project selain project default Anda, tambahkan project ID ke perintah dalam format berikut: project_id:dataset.table
.
bq mk --table project_id:dataset.table schema
Ganti kode berikut:
project_id
: project ID Anda.dataset
: set data di project Anda.table
: nama tabel yang Anda buat.schema
: definisi skema inline.
Misalnya, perintah berikut akan membuat tabel kosong bernama mytable
di project default Anda. Skema ditentukan secara inline.
bq mk --table mydataset.mytable qtr:STRING,sales:FLOAT,year:STRING
Untuk informasi selengkapnya tentang pembuatan tabel kosong, lihat Membuat tabel kosong dengan definisi skema.
C#
Untuk menentukan skema tabel saat Anda memuat data ke tabel:
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery C# API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Untuk menentukan skema saat membuat tabel kosong:
Go
Untuk menentukan skema tabel saat Anda memuat data ke tabel:
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.
Untuk menentukan skema saat membuat tabel kosong:
Java
Untuk menentukan skema tabel saat Anda memuat data ke tabel:
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.
Untuk menentukan skema saat membuat tabel kosong:
Python
Untuk menentukan skema tabel saat Anda memuat data ke tabel, konfigurasikan properti LoadJobConfig.schema.
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.
Untuk menentukan skema saat membuat tabel kosong, konfigurasikan properti Table.schema.
Menentukan file skema JSON
Jika ingin, Anda dapat menentukan skema menggunakan file skema JSON, bukan menggunakan definisi skema inline. File skema JSON terdiri dari array JSON yang berisi hal berikut:
- Nama kolom
- Jenis data kolom
- Opsional: Mode kolom (jika tidak ditentukan, mode akan ditetapkan secara default ke
NULLABLE
) - Opsional: Kolom kolom jika berupa jenis
STRUCT
- Opsional: Deskripsi kolom
- Opsional: Tag kebijakan pada kolom, digunakan untuk kontrol akses tingkat kolom
- Opsional: Panjang nilai maksimum kolom untuk jenis
STRING
atauBYTES
- Opsional: Presisi kolom untuk jenis
NUMERIC
atauBIGNUMERIC
- Opsional: Scale kolom untuk jenis
NUMERIC
atauBIGNUMERIC
- Opsional: Pengumpulan kolom untuk jenis
STRING
- Opsional: Nilai default kolom
- Opsional: Mode pembulatan kolom, jika kolom berjenis
NUMERIC
atauBIGNUMERIC
Membuat file skema JSON
Untuk membuat file skema JSON, masukkan TableFieldSchema
untuk setiap kolom. Kolom name
dan type
wajib diisi. Semua kolom lainnya bersifat opsional.
[ { "name": string, "type": string, "mode": string, "fields": [ { object (TableFieldSchema) } ], "description": string, "policyTags": { "names": [ string ] }, "maxLength": string, "precision": string, "scale": string, "collation": string, "defaultValueExpression": string, "roundingMode": string }, { "name": string, "type": string, ... } ]
Jika kolom adalah jenis RANGE<T>
, gunakan kolom rangeElementType
untuk
menjelaskan T
, dengan T
harus berupa salah satu dari DATE
, DATETIME
, atau TIMESTAMP
.
[ { "name": "duration", "type": "RANGE", "mode": "NULLABLE", "rangeElementType": { "type": "DATE" } } ]
Array JSON ditunjukkan dengan tanda kurung awal dan akhir []
. Setiap
entri kolom harus dipisahkan dengan koma: },
.
Untuk menulis skema tabel yang ada ke file lokal, lakukan hal berikut:
bq
bq show \ --schema \ --format=prettyjson \ project_id:dataset.table > path_to_file
Ganti kode berikut:
project_id
: project ID Anda.dataset
: set data di project Anda.table
: nama skema tabel yang ada.path_to_file
: lokasi file lokal tempat Anda menulis skema tabel.
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.
Untuk menulis file JSON skema dari tabel menggunakan library klien Python, panggil metode Client.schema_to_json.Anda dapat menggunakan file output sebagai titik awal untuk file skema JSON Anda sendiri. Jika Anda menggunakan pendekatan ini, pastikan file hanya berisi array JSON yang mewakili skema tabel.
Misalnya, array JSON berikut mewakili skema tabel dasar. Skema ini memiliki tiga kolom: qtr
(REQUIRED
STRING
), rep
(NULLABLE
STRING
), dansales
(NULLABLE
FLOAT
).
[ { "name": "qtr", "type": "STRING", "mode": "REQUIRED", "description": "quarter" }, { "name": "rep", "type": "STRING", "mode": "NULLABLE", "description": "sales representative" }, { "name": "sales", "type": "FLOAT", "mode": "NULLABLE", "defaultValueExpression": "2.55" } ]
Menggunakan file skema JSON
Setelah membuat file skema JSON, Anda dapat menentukannya menggunakan alat command line bq. Anda tidak dapat menggunakan file skema dengan Google Cloud Console atau API.
Berikan file skema:
- Jika Anda memuat data, gunakan perintah
bq load
. - Jika Anda membuat tabel kosong, gunakan perintah
bq mk
.
Jika Anda memberikan file skema JSON, file tersebut harus disimpan di lokasi yang dapat dibaca secara lokal. Anda tidak dapat menentukan file skema JSON yang disimpan di Cloud Storage atau Google Drive.
Menentukan file skema saat memuat data
Untuk memuat data ke dalam tabel menggunakan definisi skema JSON, lakukan hal berikut:
bq
bq --location=location load \ --source_format=format \ project_id:dataset.table \ path_to_data_file \ path_to_schema_file
Ganti kode berikut:
location
: nama lokasi Anda. Flag--location
bersifat opsional. Misalnya, jika menggunakan BigQuery di wilayah Tokyo, Anda dapat menetapkan nilai tanda keasia-northeast1
. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.format
:NEWLINE_DELIMITED_JSON
atauCSV
.project_id
: project ID Anda.dataset
: set data yang berisi tabel tempat Anda memuat data.table
: nama tabel tempat Anda memuat data.path_to_data_file
: lokasi file data CSV atau JSON di komputer lokal atau di Cloud Storage.path_to_schema_file
: jalur ke file skema di komputer lokal Anda.
Contoh:
Masukkan perintah berikut untuk memuat data dari file CSV lokal bernama myfile.csv
ke mydataset.mytable
di project default Anda. Skema ditentukan dalam myschema.json
di direktori saat ini.
bq load --source_format=CSV mydataset.mytable ./myfile.csv ./myschema.json
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.
Untuk memuat skema tabel dari file JSON menggunakan library klien Python, panggil metode schema_from_json.Menetapkan file skema saat Anda membuat tabel
Untuk membuat tabel kosong dalam set data yang ada menggunakan file skema JSON, lakukan hal berikut:
bq
bq mk --table project_id:dataset.table path_to_schema_file
Ganti kode berikut:
project_id
: project ID Anda.dataset
: set data di project Anda.table
: nama tabel yang Anda buat.path_to_schema_file
: jalur ke file skema di komputer lokal Anda.
Misalnya, perintah berikut akan membuat tabel bernama mytable
di mydataset
dalam project default Anda. Skema ditentukan dalam myschema.json
dalam direktori saat ini:
bq mk --table mydataset.mytable ./myschema.json
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.
Untuk memuat skema tabel dari file JSON menggunakan library klien Python, panggil metode schema_from_json.Menetapkan skema di API
Tetapkan skema tabel menggunakan API:
Untuk menentukan skema saat memuat data, panggil metode
jobs.insert
dan konfigurasi propertischema
di referensiJobConfigurationLoad
.Untuk menentukan skema saat membuat tabel, panggil metode
tables.insert
dan konfigurasischema
di resourceTable
.
Menentukan skema menggunakan API mirip dengan proses Membuat file skema JSON.
Keamanan tabel
Untuk mengontrol akses ke tabel di BigQuery, lihat Pengantar kontrol akses tabel.
Langkah selanjutnya
- Pelajari cara menentukan kolom bertingkat dan berulang dalam definisi skema.
- Pelajari deteksi otomatis skema.
- Pelajari cara memuat data ke BigQuery.
- Pelajari cara membuat dan menggunakan tabel.