BigQuery, kini mendukung sintaks pipe SQL
(cloud.google.com)Apa itu Pipe Query Syntax?
- Ekstensi sintaks GoogleSQL yang memungkinkan penulisan kueri dengan struktur linear yang mudah dibaca dan mudah dipelihara
- Mendukung operasi yang sama seperti GoogleSQL yang ada (Standard SQL), seperti pemilihan, pengelompokan, join, pemfilteran, dan lainnya
- Urutan operasi dapat ditentukan secara bebas, dan kueri kompleks dapat ditulis tanpa subkueri bertingkat
Standard SQL vs Pipe Query Syntax
- Standard SQL
- Harus mengikuti urutan sintaks tertentu
- Jika menggunakan banyak agregasi, diperlukan CTE (Common Table Expression) atau subkueri bertingkat
- Kolom yang sama harus diulang di
SELECT,GROUP BY, danORDER BY
- Pipe Query Syntax
- Operator pipe dapat diterapkan dalam urutan apa pun
- Banyak agregasi dapat dilakukan dengan mudah hanya dengan menambahkan operator pipe
- Kolom cukup dideklarasikan sekali
Struktur dasar Pipe Query Syntax
-
- Dimulai dengan klausa
FROM
- Dimulai dengan klausa
-
- Tambahkan operasi setelah
|>(operator pipe)
- Tambahkan operasi setelah
-
- Hubungkan beberapa operator
|>untuk menyusun kueri secara bertahap
(contoh: urutan pemfilteran → agregasi → join dapat diubah)
- Hubungkan beberapa operator
- Karakteristik utama
- Operator pipe dapat ditambahkan ke kueri apa pun → dapat diperluas dengan menambahkan operator
|>di akhir kueri GoogleSQL yang ada - Urutan operasi fleksibel → operator dapat diterapkan dalam urutan yang diinginkan, sebanyak yang diperlukan
- Dapat digunakan di semua lingkungan yang mendukung GoogleSQL → bisa dimanfaatkan dalam kueri, view, fungsi pengembalian tabel, dan lainnya
- Dapat dipakai bersama sintaks SQL yang ada → subkueri bisa ditulis dengan Standard SQL, sementara kueri utama menggunakan sintaks pipe
- Dapat merujuk ke semua alias yang didefinisikan pada tahap sebelumnya
- Dapat dimulai dari klausa
FROM→ lalu kueri diperluas secara bertahap dengan menambahkan operator|>
- Operator pipe dapat ditambahkan ke kueri apa pun → dapat diperluas dengan menambahkan operator
Perbedaan antara Pipe Query Syntax dan Standard SQL
- Kueri dapat dimulai dari klausa
FROM - Operator pipe SELECT tidak melakukan agregasi. Agregasi dilakukan secara terpisah menggunakan operator pipe AGGREGATE
- Pemfilteran dilakukan dengan operator pipe WHERE. Ini menyatukan fungsi WHERE, HAVING, dan QUALIFY pada Standard SQL menjadi satu. Pemfilteran dapat dilakukan di tahap mana pun → memungkinkan penulisan kueri yang lebih fleksibel
Kelebihan Pipe Query Syntax
- Kueri dapat ditulis dalam urutan yang logis → meningkatkan keterbacaan kueri
- Mudah dipelihara → operasi kompleks dapat dilakukan tanpa subkueri bertingkat
- Urutan operasi fleksibel → operasi dapat diterapkan dalam urutan yang diinginkan
- Pemfilteran lebih intuitif → data dapat difilter di berbagai tahap menggunakan WHERE
- Kueri agregasi kompleks lebih mudah ditulis → agregasi dilakukan dengan jelas menggunakan operator AGGREGATE
Didukung pada tahap Pre-GA, sehingga dukungannya masih terbatas
3 komentar
https://github.com/tc39/proposal-pipeline-operator
Operator ini terasa cukup familier, ya
Setelah melihat prql lebih dulu lalu melihat sintaks pipeline Google. Agak sedikit terasa berantakan.
Pendapat Hacker News
Sintaks pipe SQL telah diimplementasikan di Databricks sejak 30 Januari 2025
PRQL adalah ide serupa yang dikompilasi ke SQL
Jika perluasan sintaks SQL terus berlanjut, kompleksitas dapat meningkat
Saat sintaks pipe pertama kali diumumkan, tim SQLite sempat mencobanya
PRQL adalah sintaks berorientasi pipe untuk DB SQL, dan karena merupakan bahasa baru, tidak memiliki kompatibilitas mundur dengan SQL
Juga bisa digunakan di DuckDB
Mengetik ">" setelah pipe bisa terasa merepotkan
Bahasa Malloy bukan sintaks pipe, tetapi memiliki sintaks analitis yang mirip
Sejak menggunakan Kusto Query Language, saya berharap SQL memiliki kemampuan seperti ini