13 पॉइंट द्वारा GN⁺ 2025-02-18 | 3 टिप्पणियां | WhatsApp पर शेयर करें

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 की मूल संरचना

    1. FROM clause से शुरू करें
    1. |> (pipe operator) के बाद operation जोड़ें
    1. कई |> 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 किया जा सकता है
    • FROM clause से शुरुआत संभव → उसके बाद |> operators जोड़कर query को धीरे-धीरे विस्तारित किया जा सकता है

Pipe Query Syntax और Standard SQL के बीच अंतर

  • query की शुरुआत FROM clause से की जा सकती है
  • SELECT pipe operator aggregation नहीं करता। aggregation के लिए अलग से AGGREGATE pipe operator का उपयोग करना होता है
  • WHERE pipe operator filtering करता है। यह standard SQL के WHERE, HAVING, QUALIFY features को एक में समाहित करता है। किसी भी चरण में 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 को अधिक आसानी से लिखा जा सकता है → AGGREGATE operator के साथ स्पष्ट aggregation संभव है

यह Pre-GA चरण में supported है, इसलिए अभी support सीमित है

3 टिप्पणियां

 
carnoxen 2025-02-18

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

यह काफ़ी जाना-पहचाना operator लग रहा है

 
halfenif 2025-02-18

पहले prql को देखने के बाद, Google का pipeline syntax कुछ हल्का बिखरा-बिखरा सा लगता है।

 
GN⁺ 2025-02-18
Hacker News राय
  • SQL का pipe syntax 30 जनवरी 2025 से Databricks में लागू हो गया है

    • पहले SQL का विस्तार करना मुश्किल था, और table-valued functions जटिल थे
    • अब higher-order functions की मदद से data enrichment, prediction, grouping आदि किए जा सकते हैं
    • उदाहरण के लिए, किसी खास तारीख के बाद के orders को filter किया जा सकता है, फिर customer के हिसाब से total spend aggregate किया जा सकता है, उसके बाद एक निश्चित राशि से अधिक खर्च करने वाले customers को filter करके customer information के साथ join किया जा सकता है
    • pipe का उपयोग करने वाला iterative SQL, GenAI के साथ बेहतर काम कर सकता है
  • PRQL एक मिलती-जुलती अवधारणा है जो SQL में compile होती है

    • उदाहरण के लिए, invoice data को filter करके, fees calculate करने के बाद, एक निश्चित राशि से अधिक revenue वाले data को filter किया जा सकता है
  • अगर SQL syntax का विस्तार लगातार होता रहा, तो complexity बढ़ सकती है

    • अच्छा होगा अगर SQL implementers source maps जैसी चीज़ों पर ध्यान दें ताकि external alternative syntaxes को बेहतर समर्थन मिल सके
    • इससे हर project या व्यक्ति अपने लिए उपयुक्त SQL syntax variant चुन सकेगा
  • जब pipe syntax पहली बार घोषित किया गया था, तब SQLite टीम ने इसे आज़माया था

    • उन्होंने पाया कि pipe character अनिवार्य नहीं है, और syntax तब भी काम करता है जब pipe character optional हो
    • व्यक्तिगत रूप से, मुझे यह तरीका ज़्यादा अच्छा दिखता है
  • PRQL, SQL DBs के लिए एक pipe-oriented syntax है, लेकिन यह एक नई भाषा है इसलिए SQL के साथ backward compatibility नहीं है

    • इसे Google जैसी बड़ी कंपनियों का समर्थन नहीं मिला है, लेकिन syntax ज़्यादा साफ़-सुथरा है
  • यह DuckDB में भी इस्तेमाल किया जा सकता है

  • pipe के बाद ">" टाइप करना झंझट भरा हो सकता है

  • Malloy भाषा pipe syntax नहीं है, लेकिन इसकी analytical syntax मिलती-जुलती है

    • इसे Looker के सह-संस्थापक Lloyd Tabb ने बनाया है
  • Kusto Query Language इस्तेमाल करने के बाद से उम्मीद थी कि SQL में भी ऐसी क्षमता आए

    • अगर पर्याप्त DBs इसे extension feature के रूप में support करें, तो यह संभव हो सकता है