Menggunakan deteksi otomatis skema
Deteksi otomatis skema
Deteksi otomatis skema memungkinkan BigQuery menyimpulkan skema untuk data CSV, JSON, atau Google Spreadsheet. Deteksi otomatis skema tersedia saat Anda memuat data ke BigQuery dan saat Anda membuat kueri sumber data eksternal.
Jika deteksi otomatis diaktifkan, BigQuery akan menyimpulkan jenis data untuk setiap kolom. BigQuery memilih file acak di sumber data dan memindai hingga 500 baris data pertama untuk digunakan sebagai sampel perwakilan.
Selanjutnya, BigQuery memeriksa setiap kolom dan mencoba menetapkan jenis data ke kolom tersebut berdasarkan nilai dalam sampel. Jika semua baris dalam kolom kosong, deteksi otomatis akan ditetapkan secara default ke jenis data STRING
untuk kolom tersebut.
Jika tidak mengaktifkan deteksi otomatis skema untuk data CSV, JSON, atau Google Spreadsheet, Anda harus memberikan skema secara manual saat membuat tabel.
Anda tidak perlu mengaktifkan deteksi otomatis skema untuk file ekspor Avro, Parquet, ORC, Firestore, atau Datastore. Format file ini menentukan deskripsi secara mandiri, sehingga BigQuery otomatis menyimpulkan skema tabel dari data sumber. Untuk file Parquet, Avro, dan Orc, Anda dapat secara opsional menyediakan skema eksplisit untuk mengganti skema yang diinferensi.
Anda dapat melihat skema yang terdeteksi untuk tabel dengan cara berikut:
- Menggunakan Konsol Google Cloud.
- Gunakan perintah
bq show
alat command line bq.
Saat mendeteksi skema, BigQuery terkadang mungkin mengubah nama kolom agar kompatibel dengan sintaksis GoogleSQL.
Untuk informasi tentang konversi jenis data, lihat yang berikut ini:
- Konversi jenis data saat memuat data dari Datastore
- Konversi jenis data saat memuat data dari Firestore
- Konversi Avro
- Konversi Parquet
- Konversi ORC
Memuat data menggunakan deteksi otomatis skema
Untuk mengaktifkan deteksi otomatis skema saat memuat data, gunakan salah satu pendekatan berikut:
- Di Konsol Google Cloud, di bagian Schema, untuk Auto detect, centang opsi Schema and input parameter.
- Di alat command line bq, gunakan perintah
bq load
dengan parameter--autodetect
.
Ketika deteksi otomatis skema diaktifkan, BigQuery akan melakukan upaya terbaik untuk otomatis menyimpulkan skema untuk file CSV dan JSON.
Logika deteksi otomatis menyimpulkan jenis kolom skema dengan membaca hingga 500 baris data pertama. Baris utama dilewati jika tanda --skip_leading_rows
ada. Jenis kolom didasarkan pada baris yang memiliki kolom paling banyak.
Oleh karena itu, deteksi otomatis akan berfungsi seperti yang diharapkan selama setidaknya ada satu baris data yang memiliki nilai di setiap kolom.
Deteksi otomatis skema tidak digunakan pada file Avro, file Parquet, file ORC, file ekspor Firestore, atau file ekspor Datastore. Saat Anda memuat file ini ke BigQuery, skema tabel akan otomatis diambil dari data sumber yang mendeskripsikan sendiri.
Untuk menggunakan deteksi otomatis skema saat Anda memuat data JSON atau CSV:
Konsol
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:
- Untuk Create table from, pilih jenis sumber yang Anda inginkan.
Di kolom sumber, cari bucket File/Cloud Storage, atau masukkan Cloud Storage URI. Perhatikan bahwa Anda tidak dapat menyertakan beberapa URI di Konsol Google Cloud, tetapi karakter pengganti didukung. Bucket Cloud Storage harus berada di lokasi yang sama dengan set data yang berisi tabel yang Anda buat.
Untuk File format, pilih CSV atau JSON.
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.
Klik Create table.
bq
Berikan perintah bq load
dengan parameter --autodetect
.
(Opsional) Berikan flag --location
dan tetapkan nilainya ke lokasi Anda.
Perintah berikut memuat file menggunakan deteksi otomatis skema:
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE
Ganti yang berikut ini:
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
atauCSV
.DATASET
: set data yang berisi tabel tempat Anda memuat data.TABLE
: nama tabel tempat Anda memuat data.PATH_TO_SOURCE
: adalah lokasi file CSV atau JSON.
Contoh:
Masukkan perintah berikut untuk memuat myfile.csv
dari mesin lokal Anda ke tabel bernama mytable
yang disimpan dalam set data bernama mydataset
.
bq load --autodetect --source_format=CSV mydataset.mytable ./myfile.csv
Masukkan perintah berikut untuk memuat myfile.json
dari mesin lokal Anda ke tabel bernama mytable
yang disimpan dalam set data bernama mydataset
.
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable ./myfile.json
API
Buat tugas
load
yang mengarah ke data sumber. Untuk informasi tentang cara membuat tugas, lihat Menjalankan tugas BigQuery secara terprogram. Tentukan lokasi Anda di propertilocation
di bagianjobReference
.Tentukan format data dengan menetapkan properti
sourceFormat
. Untuk menggunakan deteksi otomatis skema, nilai ini harus ditetapkan keNEWLINE_DELIMITED_JSON
atauCSV
.Gunakan properti
autodetect
untuk menyetel deteksi otomatis skema ketrue
.
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.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mengaktifkan deteksi otomatis skema, tetapkan properti LoadJobConfig.autodetect ke True
.
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.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Ruby API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Deteksi otomatis skema untuk sumber data eksternal
Deteksi otomatis skema dapat digunakan dengan sumber data eksternal CSV, JSON, dan Google Spreadsheet. Ketika deteksi otomatis skema diaktifkan, BigQuery akan melakukan upaya terbaik untuk secara otomatis menyimpulkan skema dari data sumber. Jika tidak mengaktifkan deteksi otomatis skema untuk sumber ini, Anda harus memberikan skema eksplisit.
Anda tidak perlu mengaktifkan deteksi otomatis skema saat membuat kueri file ekspor eksternal Avro, Parquet, ORC, Firestore, atau Datastore. Format file ini menentukan deskripsi secara mandiri, sehingga BigQuery otomatis menyimpulkan skema tabel dari data sumber. Untuk file Parquet, Avro, dan Orc, Anda dapat secara opsional menyediakan skema eksplisit untuk mengganti skema yang diinferensi.
Dengan menggunakan Konsol Google Cloud, Anda dapat mengaktifkan deteksi otomatis skema dengan mencentang opsi Schema and input parameters untuk Auto detect.
Dengan menggunakan alat command line bq, Anda dapat mengaktifkan deteksi otomatis skema saat membuat file definisi tabel untuk data CSV, JSON, atau Google Spreadsheet. Saat menggunakan alat bq untuk membuat file definisi tabel, teruskan --autodetect
kemkdef
untuk mengaktifkan deteksi otomatis skema, atau teruskan --noautodetect
untuk menonaktifkan deteksi otomatis.
Saat Anda menggunakan flag --autodetect
, setelan autodetect
akan ditetapkan ke true
dalam file definisi tabel. Saat Anda menggunakan flag --noautodetect
, setelan autodetect
ditetapkan ke false
. Jika Anda tidak memberikan definisi skema untuk sumber data eksternal saat membuat definisi tabel, dan Anda tidak menggunakan flag --noautodetect
atau --autodetect
, autodetect
disetel secara default ke true
.
Saat Anda membuat file definisi tabel menggunakan API, tetapkan nilai properti autodetect
ke true
atau false
. Menyetel autodetect
ke true
akan mengaktifkan deteksi otomatis. Menyetel autodetect
ke false
akan menonaktifkan deteksi otomatis.
Detail deteksi otomatis
Selain mendeteksi detail skema, deteksi otomatis juga akan mengenali hal-hal berikut:
Kompresi
BigQuery mengenali kompresi file yang kompatibel dengan gzip saat membuka file.
Nilai tanggal dan waktu
BigQuery mendeteksi nilai tanggal dan waktu berdasarkan format data sumber.
Nilai di kolom DATE
harus dalam format berikut: YYYY-MM-DD
.
Nilai dalam kolom TIME
harus dalam format berikut: HH:MM:SS[.SSSSSS]
(komponen pecahan detik bersifat opsional).
Untuk kolom TIMESTAMP
, BigQuery mendeteksi beragam format stempel waktu, termasuk, tetapi tidak terbatas pada:
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSSSSS
YYYY/MM/DD HH:MM
Stempel waktu juga dapat berisi offset UTC atau penentu zona UTC ('Z').
Berikut adalah beberapa contoh nilai yang akan dideteksi secara otomatis oleh BigQuery sebagai nilai stempel waktu:
- 2018-08-19 12:11
- 2018-08-19 12:11:35.22
- 2018/08/19 12:11
- 2018-08-19 07:11:35.220 -05:00
Jika BigQuery tidak mengenali formatnya, BigQuery akan memuat kolom sebagai jenis data string. Dalam hal ini, Anda mungkin perlu melakukan pra-pemrosesan data sumber sebelum memuatnya. Misalnya, jika Anda mengekspor data CSV dari spreadsheet, setel format tanggal agar sesuai dengan salah satu contoh yang ditampilkan di sini. Atau, Anda dapat mengubah data setelah memuatnya ke BigQuery.
Deteksi otomatis skema untuk data CSV
Pembatas CSV
BigQuery mendeteksi pembatas berikut:
- koma ( , )
- garis vertikal ( | )
- tab ( \t )
Header CSV
BigQuery menyimpulkan header dengan membandingkan baris pertama file dengan baris lain dalam file. Jika baris pertama hanya berisi string, dan baris lainnya berisi jenis data lain, BigQuery mengasumsikan bahwa baris pertama adalah baris header. BigQuery menetapkan nama kolom berdasarkan nama kolom di baris header. Nama mungkin diubah agar memenuhi aturan penamaan untuk kolom di BigQuery. Misalnya, spasi akan diganti dengan garis bawah.
Jika tidak, BigQuery akan menganggap baris pertama sebagai baris data, dan menetapkan nama kolom generik seperti string_field_1
. Perhatikan bahwa setelah tabel dibuat, nama kolom tidak dapat diperbarui dalam skema, meskipun Anda dapat mengubah nama secara manual setelah tabel dibuat. Pilihan lainnya adalah menyediakan skema eksplisit daripada menggunakan deteksi otomatis.
Anda mungkin memiliki file CSV dengan baris header, dengan semua kolom datanya berupa string. Dalam hal ini, BigQuery tidak akan secara otomatis mendeteksi bahwa baris pertama adalah sebuah header. Gunakan opsi --skip_leading_rows
untuk melewati baris header. Jika tidak, header akan diimpor sebagai data. Dalam kasus ini, pertimbangkan juga untuk memberikan skema eksplisit sehingga Anda dapat menetapkan nama kolom.
Baris baru yang dikutip CSV
BigQuery mendeteksi karakter baris baru yang dikutip dalam kolom CSV dan tidak menafsirkan karakter baris baru yang dikutip sebagai batas baris.
Deteksi otomatis skema untuk data JSON
Kolom bertingkat dan berulang JSON
BigQuery menyimpulkan kolom bertingkat dan berulang dalam file JSON. Jika nilai kolom adalah objek JSON, BigQuery akan memuat kolom sebagai jenis RECORD
. Jika nilai kolom adalah array, BigQuery akan memuat kolom tersebut sebagai kolom berulang. Untuk contoh data JSON dengan data bertingkat dan berulang, lihat Memuat data JSON bertingkat dan berulang.
Konversi string
Jika Anda mengaktifkan deteksi otomatis skema, BigQuery akan mengonversi string menjadi jenis Boolean, numerik, atau tanggal/waktu jika memungkinkan. Misalnya, dengan menggunakan data JSON berikut, deteksi otomatis skema akan mengonversi kolom id
menjadi kolom INTEGER
:
{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}
Untuk informasi selengkapnya, baca bagian Memuat data JSON dari Cloud Storage.
Deteksi otomatis skema untuk Google Spreadsheet
Untuk Spreadsheet, BigQuery akan otomatis mendeteksi apakah baris pertama merupakan baris header, mirip dengan deteksi otomatis untuk file CSV. Jika baris pertama diidentifikasi sebagai header, BigQuery akan menetapkan nama kolom berdasarkan nama kolom dalam baris header dan melewati baris tersebut. Nama mungkin diubah agar memenuhi aturan penamaan untuk kolom di BigQuery. Misalnya, spasi akan diganti dengan garis bawah.
Keamanan tabel
Untuk mengontrol akses ke tabel di BigQuery, lihat Pengantar kontrol akses tabel.