BigQuery में अब SQL pipe syntax उपलब्ध
(cloud.google.com)Pipe Query Syntax क्या है?
- यह GoogleSQL का एक extended syntax है, जिससे पढ़ने में आसान और maintain करने में सुविधाजनक linear structure वाले queries लिखे जा सकते हैं
- यह मौजूदा GoogleSQL(Standard SQL) के समान operations को support करता है (selection, grouping, join, filtering आदि)
- operations के क्रम को स्वतंत्र रूप से तय किया जा सकता है, और nested subquery के बिना भी complex queries लिखी जा सकती हैं
Standard SQL vs Pipe Query Syntax
- Standard SQL
- इसमें एक निश्चित syntax order का पालन करना पड़ता है
- multiple aggregation का उपयोग करने पर CTE(Common Table Expression) या nested subquery की आवश्यकता होती है
SELECT,GROUP BY,ORDER BYमें duplicate columns को दोहराना पड़ता है
- Pipe Query Syntax
- Pipe operator को किसी भी क्रम में apply किया जा सकता है
- सिर्फ Pipe operator जोड़कर आसानी से multiple aggregation की जा सकती है
- columns को केवल एक बार declare करना होता है
Pipe Query Syntax की मूल संरचना
-
FROMclause से शुरू करें
-
|>(pipe operator) के बाद operation जोड़ें
-
- कई
|>operators को जोड़कर step-by-step query बनाएं
(उदाहरण: filtering → aggregation → join का क्रम बदला जा सकता है)
- कई
- मुख्य विशेषताएँ
- किसी भी query में Pipe operator जोड़ा जा सकता है → मौजूदा GoogleSQL query के अंत में
|>operator जोड़कर उसे विस्तारित किया जा सकता है - operation order लचीला है → इच्छित क्रम में, जितनी बार चाहें operator apply किए जा सकते हैं
- सभी GoogleSQL supported environments में उपयोग संभव → query, view, table-returning function आदि में इस्तेमाल किया जा सकता है
- मौजूदा SQL syntax के साथ mixed use संभव → subquery को standard SQL में और main query को Pipe syntax में लिखा जा सकता है
- पिछले चरण में परिभाषित सभी aliases को refer किया जा सकता है
FROMclause से शुरुआत संभव → उसके बाद|>operators जोड़कर query को धीरे-धीरे विस्तारित किया जा सकता है
- किसी भी query में Pipe operator जोड़ा जा सकता है → मौजूदा GoogleSQL query के अंत में
Pipe Query Syntax और Standard SQL के बीच अंतर
- query की शुरुआत
FROMclause से की जा सकती है SELECTpipe operator aggregation नहीं करता। aggregation के लिए अलग सेAGGREGATEpipe operator का उपयोग करना होता हैWHEREpipe operator filtering करता है। यह standard SQL केWHERE,HAVING,QUALIFYfeatures को एक में समाहित करता है। किसी भी चरण में filtering संभव है → इससे query लिखना अधिक लचीला हो जाता है
Pipe Query Syntax के फायदे
- query को logical order में लिखा जा सकता है → readability बेहतर होती है
- maintenance आसान → nested subquery के बिना भी complex operations किए जा सकते हैं
- flexible operation order → इच्छित क्रम में operations apply किए जा सकते हैं
- filtering अधिक intuitive →
WHEREका उपयोग करके विभिन्न चरणों में data filter किया जा सकता है - complex aggregation queries को अधिक आसानी से लिखा जा सकता है →
AGGREGATEoperator के साथ स्पष्ट aggregation संभव है
यह Pre-GA चरण में supported है, इसलिए अभी support सीमित है
3 टिप्पणियां
https://github.com/tc39/proposal-pipeline-operator
यह काफ़ी जाना-पहचाना operator लग रहा है
पहले prql को देखने के बाद, Google का pipeline syntax कुछ हल्का बिखरा-बिखरा सा लगता है।
Hacker News राय
SQL का pipe syntax 30 जनवरी 2025 से Databricks में लागू हो गया है
PRQL एक मिलती-जुलती अवधारणा है जो SQL में compile होती है
अगर SQL syntax का विस्तार लगातार होता रहा, तो complexity बढ़ सकती है
जब pipe syntax पहली बार घोषित किया गया था, तब SQLite टीम ने इसे आज़माया था
PRQL, SQL DBs के लिए एक pipe-oriented syntax है, लेकिन यह एक नई भाषा है इसलिए SQL के साथ backward compatibility नहीं है
यह DuckDB में भी इस्तेमाल किया जा सकता है
pipe के बाद ">" टाइप करना झंझट भरा हो सकता है
Malloy भाषा pipe syntax नहीं है, लेकिन इसकी analytical syntax मिलती-जुलती है
Kusto Query Language इस्तेमाल करने के बाद से उम्मीद थी कि SQL में भी ऐसी क्षमता आए