Jenis data legacy SQL
Dokumen ini menjelaskan jenis data yang didukung oleh sintaksis kueri legacy SQL dari BigQuery. Sintaksis kueri yang lebih disukai untuk BigQuery adalah GoogleSQL. Untuk informasi tentang jenis data di GoogleSQL, lihat Jenis data GoogleSQL.
Jenis data legacy SQL
Data Anda dapat mencakup jenis data berikut:
Jenis data | Nilai yang memungkinkan | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | Data karakter dengan panjang variabel (UTF-8). | ||||||||||||
BYTES |
Data biner dengan panjang variabel.
|
||||||||||||
INTEGER |
Bilangan bulat 64-bit yang telah ditandai. Jika Anda menggunakan BigQuery API untuk memuat bilangan bulat di luar rentang [-253+1, 253-1] (dalam sebagian besar kasus, berarti lebih besar dari 9.007.199.254.740.991), ke dalam kolom integer (INT64), Anda harus meneruskannya sebagai string untuk menghindari kerusakan data. Masalah ini disebabkan oleh batasan ukuran integer di JSON/ECMAScript. Untuk informasi lebih lanjut, lihat bagian Angka pada RFC 7159. |
||||||||||||
FLOAT | Format floating point presisi ganda. | ||||||||||||
NUMERIC | Legacy SQL memiliki dukungan terbatas untuk NUMERIC. Untuk mengetahui informasi selengkapnya, lihat Numerik persis dalam legacy SQL. | ||||||||||||
BIGNUMERIC | Legacy SQL memiliki dukungan terbatas untuk BIGNUMERIC. Untuk mengetahui informasi selengkapnya, lihat Numerik persis dalam legacy SQL. | ||||||||||||
BOOLEAN |
|
||||||||||||
RECORD | Kumpulan satu atau beberapa kolom lain. | ||||||||||||
TIMESTAMP |
Anda dapat mendeskripsikan jenis data TIMESTAMP sebagai stempel waktu UNIX atau tanggal dan waktu kalender. BigQuery menyimpan data TIMESTAMP secara internal sebagai stempel waktu UNIX dengan presisi mikrodetik. Stempel waktu UNIX Bilangan desimal positif atau negatif. Angka positif menentukan jumlah detik sejak epoch (1970-01-01 00:00:00 UTC), dan angka negatif menentukan jumlah detik sebelum epoch. Hingga 6 angka di belakang koma (presisi mikrodetik) akan dipertahankan. String tanggal dan waktu String tanggal dan waktu dalam format Anda dapat memberikan offset zona waktu pada string tanggal dan waktu, tetapi BigQuery tidak mempertahankan offset setelah mengonversi nilai ke format internalnya. Jika Anda perlu mempertahankan data zona waktu asli, simpan offset zona waktu di kolom terpisah. Angka nol di awal wajib ada saat Anda menentukan offset zona waktu satu digit. String tanggal dan waktu harus dikutip saat menggunakan format JSON. Contoh Contoh berikut menunjukkan cara yang identik untuk mendeskripsikan tanggal tertentu, dalam format stempel waktu UNIX serta format string tanggal dan waktu.
|
||||||||||||
DATE | Legacy SQL memiliki dukungan terbatas untuk DATE. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL. | ||||||||||||
TIME | Legacy SQL memiliki dukungan terbatas untuk TIME. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL. | ||||||||||||
DATETIME | Legacy SQL memiliki dukungan terbatas untuk DATETIME. Untuk informasi selengkapnya, lihat Waktu sipil dalam legacy SQL. |
Numerik yang tepat dalam legacy SQL
Anda dapat membaca nilai NUMERIC atau BIGNUMERIC dalam klausa yang tidak dapat diubah seperti SELECT list (with aliases)
, GROUP BY keys
, dan kolom pass-through di fungsi jendela, dan seterusnya. Namun, setiap komputasi pada nilai NUMERIC atau BIGNUMERIC, termasuk perbandingan, memberikan hasil yang tidak ditentukan.
Fungsi transmisi dan konversi berikut didukung di legacy SQL:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Waktu sipil dalam legacy SQL
Anda dapat membaca jenis data waktu sipil—DATE, TIME, dan DATETIME—serta memprosesnya dengan operator yang tidak dapat diubah seperti SELECT list (with aliases)
, GROUP BY keys
, dan kolom pass-through di fungsi jendela, dll. Namun, komputasi lain apa pun atas nilai waktu sipil, termasuk perbandingan, memberikan hasil yang tidak ditentukan.
Fungsi konversi dan transmisi berikut didukung di legacy SQL:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
Dalam praktiknya, legacy SQL menafsirkan nilai waktu sipil sebagai bilangan bulat, dan operasi pada bilangan bulat yang menurut Anda merupakan nilai waktu sipil akan memberikan hasil yang tidak terduga.
Untuk menghitung nilai menggunakan jenis data waktu sipil, pertimbangkan GoogleSQL, yang mendukung semua operasi SQL pada jenis data DATE, DATETIME, dan TIME.
Langkah selanjutnya
- Untuk menetapkan jenis data kolom menggunakan API, lihat
schema.fields.type
. - Untuk jenis data GoogleSQL, lihat jenis data.