BigQuery artık SQL pipe sözdizimini destekliyor
(cloud.google.com)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 BYiç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ı
-
FROMifadesiyle başlar
-
|>(pipe operatörü) sonrasına işlem eklenir
-
- Birden fazla
|>operatörü bağlanarak sorgu adım adım oluşturulur
(ör.: filtreleme → agregasyon → join sırası değiştirilebilir)
- Birden fazla
- 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
FROMifadesiyle başlanabilir → ardından|>operatörleri eklenerek sorgu kademeli olarak genişletilebilir
- Herhangi bir sorguya pipe operatörü eklenebilir → mevcut GoogleSQL sorgusunun sonuna
Pipe Query Syntax ile Standard SQL arasındaki farklar
- Sorgu
FROMifadesiyle 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
https://github.com/tc39/proposal-pipeline-operator
Oldukça tanıdık bir operatöre benziyor
Önce prql'a bakıp sonra Google'ın pipeline sözdizimini görünce biraz dağınık geldi.
Hacker News görüşü
SQL'in pipe sözdizimi 30 Ocak 2025 itibarıyla Databricks'te kullanıma sunuldu
PRQL, SQL'e derlenen benzer bir fikir
SQL sözdizimi genişlemeye devam ederse karmaşıklık artabilir
Pipe sözdizimi ilk duyurulduğunda SQLite ekibi bunu denemişti
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
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
Kusto Query Language kullandıktan sonra SQL'in de buna benzer yetenekler kazanmasını bekliyorum