13 puan yazan GN⁺ 2025-02-18 | 3 yorum | WhatsApp'ta paylaş

Pipe Query Syntax nedir?

  • GoogleSQL'in genişletilmiş bir sözdizimi olarak, okunması kolay ve bakımı pratik doğrusal yapıda sorgular yazmayı sağlar
  • Mevcut GoogleSQL (Standard SQL) ile aynı işlemleri destekler (seçim, gruplama, join, filtreleme vb.)
  • İşlem sırası serbestçe belirlenebilir ve iç içe alt sorgular olmadan da karmaşık sorgular yazılabilir

Standard SQL ve Pipe Query Syntax

  • Standard SQL
    • Belirli bir sözdizimi sırasını takip etmek gerekir
    • Birden çok agregasyon kullanıldığında CTE (Common Table Expression) veya iç içe alt sorgular gerekir
    • SELECT, GROUP BY, ORDER BY içinde aynı sütunları tekrar etmek gerekir
  • Pipe Query Syntax
    • Pipe operatörü istenen herhangi bir sırada uygulanabilir
    • Yalnızca pipe operatörü ekleyerek kolayca çoklu agregasyon yapılabilir
    • Sütunları yalnızca bir kez tanımlamak yeterlidir

Pipe Query Syntax temel yapısı

    1. FROM ifadesiyle başlar
    1. |> (pipe operatörü) sonrasına işlem eklenir
    1. Birden fazla |> operatörü bağlanarak sorgu adım adım oluşturulur
      (ör.: filtreleme → agregasyon → join sırası değiştirilebilir)
  • Temel özellikler
    • Herhangi bir sorguya pipe operatörü eklenebilir → mevcut GoogleSQL sorgusunun sonuna |> operatörü eklenerek genişletilebilir
    • İşlem sırası serbesttir → operatörler istenen sırada ve istenen sayıda uygulanabilir
    • GoogleSQL desteklenen tüm ortamlarda kullanılabilir → sorgular, görünümler, tablo döndüren işlevler vb. içinde kullanılabilir
    • Mevcut SQL sözdizimiyle karışık kullanılabilir → alt sorgular Standard SQL, ana sorgu ise Pipe sözdizimiyle yazılabilir
    • Önceki adımda tanımlanan tüm takma adlara (alias) başvurulabilir
    • FROM ifadesiyle başlanabilir → ardından |> operatörleri eklenerek sorgu kademeli olarak genişletilebilir

Pipe Query Syntax ile Standard SQL arasındaki farklar

  • Sorgu FROM ifadesiyle başlayabilir
  • SELECT pipe operatörü agregasyon yapmaz. Agregasyon için ayrıca AGGREGATE pipe operatörü kullanılır
  • Filtreleme WHERE pipe operatörüyle yapılır. Bu yapı, Standard SQL'deki WHERE, HAVING ve QUALIFY işlevlerini tek bir yapıda birleştirir. Her aşamada filtreleme yapılabildiği için daha esnek sorgular yazılabilir

Pipe Query Syntax'in avantajları

  • Sorgular mantıksal sırayla yazılabilir → sorgu okunabilirliği artar
  • Bakım kolaylaşır → iç içe alt sorgular olmadan da karmaşık işlemler yapılabilir
  • Esnek işlem sırası → işlemler istenen sırada uygulanabilir
  • Filtreleme daha sezgiseldir → WHERE kullanılarak farklı aşamalarda veri filtrelenebilir
  • Karmaşık agregasyon sorguları daha kolay yazılır → AGGREGATE operatörüyle açık ve net agregasyon yapılabilir

Pre-GA aşamasında desteklenmektedir ve destek hâlâ sınırlıdır

3 yorum

 
carnoxen 2025-02-18

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

Oldukça tanıdık bir operatöre benziyor

 
halfenif 2025-02-18

Önce prql'a bakıp sonra Google'ın pipeline sözdizimini görünce biraz dağınık geldi.

 
GN⁺ 2025-02-18
Hacker News görüşü
  • SQL'in pipe sözdizimi 30 Ocak 2025 itibarıyla Databricks'te kullanıma sunuldu

    • Daha önce SQL'i genişletmek zordu ve tablo değerli fonksiyonlar karmaşıktı
    • Artık yüksek dereceli fonksiyonlarla veri zenginleştirme, tahmin, gruplama gibi işlemler yapılabiliyor
    • Örneğin, belirli bir tarihten sonraki siparişler filtrelenebilir, ardından müşteri başına toplam harcama toplanabilir, sonra belirli bir tutarın üzerindeki müşteriler filtrelenip müşteri bilgileriyle join edilebilir
    • Pipe kullanılan yinelemeli SQL, GenAI ile birlikte daha iyi çalışabilir
  • PRQL, SQL'e derlenen benzer bir fikir

    • Örneğin, fatura verileri filtrelenebilir, komisyon hesaplanabilir, ardından geliri belirli bir tutarın üzerinde olan veriler filtrelenebilir
  • SQL sözdizimi genişlemeye devam ederse karmaşıklık artabilir

    • SQL uygulayıcılarının harici alternatif sözdizimlerini daha iyi destekleyebilmesi için source map gibi konulara odaklanması iyi olurdu
    • Böylece her proje veya kişi kendine uygun SQL sözdizimi varyasyonunu seçebilir
  • Pipe sözdizimi ilk duyurulduğunda SQLite ekibi bunu denemişti

    • Pipe karakterinin zorunlu olmadığını ve karakter isteğe bağlı olsa bile sözdiziminin çalıştığını fark ettiler
    • Kişisel olarak bunun daha iyi göründüğünü düşünüyorum
  • PRQL, SQL veritabanları için pipe odaklı bir sözdizimi; yeni bir dil olduğu için SQL ile geriye dönük uyumluluğu yok

    • Google gibi büyük şirketlerin desteğini almıyor ama sözdizimi daha temiz
  • DuckDB'de de kullanılabiliyor

  • Pipe'tan sonra ">" yazmak zahmetli olabilir

  • Malloy dili pipe sözdizimi kullanmıyor ama benzer bir analitik sözdizime sahip

    • Looker'ın kurucu ortaklarından Lloyd Tabb tarafından geliştirildi
  • Kusto Query Language kullandıktan sonra SQL'in de buna benzer yetenekler kazanmasını bekliyorum

    • Yeterince fazla veritabanı bunu bir uzantı olarak desteklerse mümkün olabilir