13 poin oleh GN⁺ 2025-02-18 | 3 komentar | Bagikan ke WhatsApp

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, dan ORDER 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

    1. Dimulai dengan klausa FROM
    1. Tambahkan operasi setelah |> (operator pipe)
    1. Hubungkan beberapa operator |> untuk menyusun kueri secara bertahap
      (contoh: urutan pemfilteran → agregasi → join dapat diubah)
  • 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 |>

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

 
carnoxen 2025-02-18

https://github.com/tc39/proposal-pipeline-operator

Operator ini terasa cukup familier, ya

 
halfenif 2025-02-18

Setelah melihat prql lebih dulu lalu melihat sintaks pipeline Google. Agak sedikit terasa berantakan.

 
GN⁺ 2025-02-18
Pendapat Hacker News
  • Sintaks pipe SQL telah diimplementasikan di Databricks sejak 30 Januari 2025

    • Sebelumnya, SQL sulit diperluas dan fungsi nilai tabel cukup rumit
    • Kini hal-hal seperti pengayaan data, prediksi, dan pengelompokan dapat dilakukan dengan fungsi orde tinggi
    • Misalnya, pesanan setelah tanggal tertentu dapat difilter, lalu total pengeluaran per pelanggan dapat diagregasikan, kemudian pelanggan di atas jumlah tertentu dapat difilter dan di-join dengan informasi pelanggan
    • SQL berulang yang menggunakan pipe dapat bekerja lebih baik bersama GenAI
  • PRQL adalah ide serupa yang dikompilasi ke SQL

    • Misalnya, data faktur dapat difilter, biaya dapat dihitung, lalu data dengan pendapatan di atas jumlah tertentu dapat difilter
  • Jika perluasan sintaks SQL terus berlanjut, kompleksitas dapat meningkat

    • Akan lebih baik jika para implementator SQL berfokus pada hal-hal seperti source map agar sintaks alternatif eksternal bisa didukung dengan lebih baik
    • Ini memungkinkan tiap proyek atau individu memilih variasi sintaks SQL yang paling cocok bagi mereka
  • Saat sintaks pipe pertama kali diumumkan, tim SQLite sempat mencobanya

    • Mereka menemukan bahwa karakter pipe tidak wajib, dan sintaksnya tetap berfungsi meskipun karakter pipe bersifat opsional
    • Secara pribadi, menurut saya cara ini terlihat lebih baik
  • PRQL adalah sintaks berorientasi pipe untuk DB SQL, dan karena merupakan bahasa baru, tidak memiliki kompatibilitas mundur dengan SQL

    • Meski tidak didukung perusahaan besar seperti Google, sintaksnya lebih rapi
  • Juga bisa digunakan di DuckDB

  • Mengetik ">" setelah pipe bisa terasa merepotkan

  • Bahasa Malloy bukan sintaks pipe, tetapi memiliki sintaks analitis yang mirip

    • Dikembangkan oleh Lloyd Tabb, salah satu pendiri Looker
  • Sejak menggunakan Kusto Query Language, saya berharap SQL memiliki kemampuan seperti ini

    • Jika cukup banyak DB mendukungnya sebagai ekstensi, hal itu mungkin terjadi