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.
  • Data BYTES yang diimpor harus berenkode base64, kecuali untuk data Avro BYTES, yang dapat dibaca dan dikonversi oleh BigQuery.
  • Data BYTES yang dibaca dari tabel BigQuery berenkode base64, kecuali jika Anda mengekspor ke format Avro, dalam hal ini jenis data Avro bytes berlaku.
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
  • Format CSV: 1 atau 0, true atau false, t atau f, yes atau no, atau y atau n (semua tidak peka huruf besar/kecil).
  • Format JSON: true atau false (tidak peka huruf besar/kecil).
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 YYYY-MM-DD HH:MM:SS. Penentu UTC dan Z didukung.

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.

Peristiwa Format stempel waktu UNIX Format string tanggal/waktu
Gempa bumi kecil (M4.2) di dekat Kota Oklahoma
1408452095.220
1408452095.220000
2014-08-19 07:41:35.220 -05:00
2014-08-19 12:41:35.220 UTC
2014-08-19 12:41:35.220
2014-08-19 12:41:35.220000
2014-08-19T12:41:35.220Z
Neil Armstrong menginjakkan kaki di bulan
-14182916
1969-07-20 20:18:04
1969-07-20 20:18:04 UTC
1969-07-20T20:18:04
Batas waktu untuk memperbaiki bug Y10k
253402300800
2.53402300800e11
10000-01-01 00:00
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 berikutnya