Ketersediaan fitur Legacy SQL

Dokumen ini menjelaskan batasan mendatang pada ketersediaan SQL lama BigQuery, yang didasarkan pada penggunaan selama periode evaluasi dan berlaku setelah 1 Juni 2026. Perubahan ini merupakan bagian dari transisi BigQuery dari SQL lama ke GoogleSQL, dialek yang direkomendasikan dan sesuai dengan ANSI untuk BigQuery.

Bermigrasi ke GoogleSQL menawarkan manfaat berikut dibandingkan dengan SQL lama:

Cara kerja ketersediaan fitur

BigQuery memantau penggunaan fitur SQL lama selama periode evaluasi. Untuk organisasi dan project yang tidak menggunakan SQL lama antara 1 November 2025 dan 1 Juni 2026, SQL lama tidak akan tersedia setelah periode evaluasi berakhir. Untuk organisasi dan project yang menggunakan SQL lama selama periode evaluasi, Anda dapat terus menjalankan kueri menggunakan kumpulan fitur SQL lama tertentu yang Anda gunakan.

Penggunaan fitur digabungkan di tingkat organisasi. Jika ada project dalam organisasi yang menggunakan fitur, fitur tersebut akan tetap tersedia untuk semua project lain dalam organisasi. Untuk project yang tidak terkait dengan organisasi, ketersediaan fitur dikelola di level project.

Set fitur Legacy SQL

Kemampuan SQL lama disusun menjadi tiga set fitur: kemampuan bahasa dasar, kemampuan bahasa yang diperluas, dan pengelompokan fungsi. Bagian berikut menjelaskan fitur dalam setiap set.

Kemampuan bahasa dasar

Fitur ini adalah inti dari legacy SQL. Seluruh set fitur ini tersedia untuk organisasi atau project mandiri yang menjalankan setidaknya satu kueri SQL lama selama periode evaluasi.

Kategori Fitur
Sintaksis kueri
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
Logika ekspresi Literal:
  • TRUE
  • FALSE
  • NULL

Operator logika:
  • AND
  • OR
  • NOT

Fungsi perbandingan:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

Pernyataan alur kontrol:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
Operasi dasar Operator aritmetika:
  • +
  • -
  • *
  • /
  • %

Fungsi agregat dasar:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
Elemen data Jenis Data Dasar:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

Jenis data terstruktur dan yang sebagian didukung:
  • Angka Persis: NUMERIC, BIGNUMERIC
  • Waktu Sipil:DATE, TIME, DATETIME
  • Kolom Terstruktur: Kolom bertingkat, kolom berulang

Fungsi Transmisi:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

Pemaksaan: Semua pemaksaan jenis data otomatis disertakan.

Kemampuan bahasa yang ditingkatkan

Kategori ini mencakup fitur SQL lama tertentu yang melampaui set dasar. Tidak seperti kemampuan dasar atau pengelompokan fungsi, setiap fitur dalam kategori ini dilacak secara terpisah. Anda harus menggunakan setiap fitur secara eksplisit selama periode evaluasi agar fitur tersebut tetap tersedia.

Kategori Fitur
Fitur yang diperluas

Pengelompokan fungsi

Fungsi bawaan disusun ke dalam kategori terkait. Penggunaan satu fungsi dalam pengelompokan selama periode evaluasi akan membuat semua fungsi dalam seluruh pengelompokan tersebut tersedia.

Pengelompokan Fungsi Fungsi
Fungsi jendela lanjutan
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • RATIO_TO_REPORT
  • ROW_NUMBER
Fungsi agregat untuk statistik
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
Fungsi agregat yang menampilkan kolom berulang
  • NEST
  • QUANTILES
  • UNIQUE
Fungsi agregat dengan operasi bit
  • BIT_AND
  • BIT_OR
  • BIT_XOR
Fungsi agregat dengan penggabungan
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
Fungsi agregat dengan pengurutan
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
Fungsi jendela dasar
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
Fungsi bitwise
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
Ekspresi bersyarat
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
Fungsi konversi
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
Fungsi waktu saat ini
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
Fungsi pengguna saat ini
  • CURRENT_USER
Fungsi tanggal dan waktu
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
Fungsi RAND
  • RAND
Fungsi yang menampilkan kolom berulang
  • POSITION
  • SPLIT
Fungsi hashing
  • HASH
  • SHA1
  • FARM_FINGERPRINT
Fungsi IP
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
Fungsi JSON
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
Fungsi matematika
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
Fungsi hiperbolik matematika
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
Bagian dari fungsi TIMESTAMP
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
Fungsi ekspresi reguler
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
Fungsi string
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
Fungsi URL
  • HOST
  • DOMAIN
  • TLD
Fungsi stempel waktu UNIX
  • FORMAT_UTC_USEC
  • MSEC_TO_TIMESTAMP
  • PARSE_UTC_USEC
  • SEC_TO_TIMESTAMP
  • STRFTIME_UTC_USEC
  • TIMESTAMP_TO_SEC
  • TIMESTAMP_TO_MSEC
  • TIMESTAMP_TO_USEC
  • USEC_TO_TIMESTAMP
  • UTC_USEC_TO_DAY
  • UTC_USEC_TO_HOUR
  • UTC_USEC_TO_MONTH
  • UTC_USEC_TO_WEEK
  • UTC_USEC_TO_YEAR

Contoh ketersediaan fitur

Contoh berikut menunjukkan cara kerja ketersediaan fitur.

Contoh: Mengakses kemampuan bahasa dasar

Project menjalankan kueri SQL lama selama periode evaluasi. Asumsikan tabel T berisi kolom X jenis INTEGER.

#legacySQL
SELECT X FROM T

Penggunaan ini memastikan bahwa semua project dalam organisasi tetap dapat menjalankan kueri yang menggunakan fitur apa pun dari set kemampuan bahasa dasar. Misalnya, kueri berikut akan terus berfungsi:

#legacySQL
SELECT X FROM T WHERE X > 10

Contoh: Menggunakan pengelompokan fungsi

Project menggunakan satu fungsi dari pengelompokan fungsi tertentu. Asumsikan tabel T berisi kolom X dengan jenis FLOAT.

#legacySQL
SELECT SIN(X) FROM T

Penggunaan fungsi SIN() membuat seluruh pengelompokan fungsi matematika tersedia. Oleh karena itu, semua project dalam organisasi dapat menggunakan fungsi lain dari pengelompokan tersebut, seperti COS().

#legacySQL
SELECT COS(X) FROM T

Sebaliknya, kueri berikut akan gagal setelah periode evaluasi jika tidak ada project dalam organisasi yang menggunakan fungsi apa pun dari fungsi agregat untuk pengelompokan statistik.

#legacySQL
SELECT STDDEV(X) FROM T

Contoh: Retensi fitur di berbagai tabel

Anggaplah tabel X memiliki kolom A (INTEGER) dan tabel Y memiliki kolom B (FLOAT). Project menjalankan kueri berikut selama periode evaluasi:

#legacySQL
SELECT SIN(A) FROM X

Organisasi dapat menjalankan kueri berikut setelah periode evaluasi berakhir. Kueri berfungsi karena fitur fungsi matematika dipertahankan oleh kueri pertama. Retensi tidak bergantung pada tabel, nama kolom, atau jenis data tertentu yang digunakan, karena INTEGER dan FLOAT adalah bagian dari kemampuan bahasa dasar.

#legacySQL
SELECT COS(B) FROM Y

Contoh: Kueri kompleks

Asumsikan tabel T berisi kolom X dengan jenis STRING. Project menjalankan kueri berikut selama periode evaluasi:

#legacySQL
SELECT value, AVG(FLOAT(value)) OVER (ORDER BY value) AS avg
 FROM (
  SELECT LENGTH(SPLIT(X, ',')) AS value
    FROM T
)

Kueri ini menggunakan fitur dari kemampuan bahasa dasar dan tiga pengelompokan fungsi: fungsi jendela dasar, fungsi string, dan fungsi yang menampilkan nilai berulang. Semua project dalam organisasi mempertahankan fitur ini. Oleh karena itu, kueri baru yang menggunakan kombinasi fungsi yang berbeda dari kumpulan fitur yang sama yang dipertahankan akan berhasil.

#legacySQL
SELECT value, COUNT(STRING(value)) OVER (ORDER BY value) as count
 FROM (
  SELECT CONCAT(SPLIT(X, ','), '123') AS value
    FROM T
)

Pertanyaan umum (FAQ)

Dapatkah organisasi baru menggunakan legacy SQL?

Setelah periode evaluasi, SQL lama tidak tersedia untuk organisasi atau project baru. Dalam kasus khusus, Anda dapat meminta pengecualian. Jika Anda tidak dapat mengakses Google Formulir, kirimkan email ke bq-legacysql-support@google.com dengan menyertakan ID organisasi, tingkat penggunaan saat ini, tanggal penggunaan terakhir, tantangan migrasi, dan perkiraan jadwal untuk beralih ke GoogleSQL.

Apakah kueri legacy SQL yang ada akan berhenti berfungsi?

Kueri yang ada akan terus berfungsi selama semua fitur SQL lama yang digunakan oleh kueri tersebut digunakan oleh setidaknya satu project di organisasi Anda selama periode evaluasi. Kueri mungkin gagal jika mengandalkan fitur yang tidak digunakan selama periode ini, jadi sebaiknya pastikan semua kueri penting dijalankan.

Dapatkah organisasi yang sudah ada dan menggunakan legacy SQL membuat project baru yang juga menggunakan legacy SQL?

Ya. Semua fitur yang diakses oleh project mana pun di organisasi Anda selama periode evaluasi akan tetap tersedia untuk semua project, lama dan baru, di organisasi Anda.

Apakah ada alat untuk memeriksa fitur SQL lama yang digunakan organisasi saya?

Tidak ada alat untuk mengaudit penggunaan fitur tertentu. Anda dapat melacak penggunaan SQL lama dengan membuat kueri tampilan INFORMATION_SCHEMA.JOBS seperti yang dijelaskan dalam Jumlah tugas kueri SQL lama per project. Anda juga dapat meninjau log kueri di Cloud Logging untuk memeriksa penggunaan sintaksis tertentu.

Apakah saya harus bermigrasi ke GoogleSQL?

Migrasi tidak wajib, tetapi disarankan. GoogleSQL adalah dialek modern, berfitur lengkap, dan direkomendasikan.

Bagaimana jika kueri SQL lama yang jarang digunakan tidak berjalan selama periode evaluasi?

Untuk memastikan kueri terus berfungsi, jalankan kueri tersebut sekali selama periode evaluasi. Jika Anda tidak dapat menjalankannya saat itu, Anda dapat meminta pengecualian. Jika Anda tidak dapat mengakses Google Formulir, kirimkan email ke bq-legacysql-support@google.com yang berisi ID organisasi, tingkat penggunaan saat ini, tanggal penggunaan terakhir, tantangan migrasi, dan perkiraan jadwal transisi ke GoogleSQL.

Langkah berikutnya

  • Untuk memigrasikan kueri dari legacy SQL ke GoogleSQL, lihat panduan migrasi.