- Semantic modeling language और query language के रूप में, यह एक दोहरे स्वभाव वाली भाषा है जो मौजूदा SQL engine का उपयोग करके query चलाती है
- लिखी गई Malloy query उपयोग में मौजूद DB के लिए optimized SQL में compile होकर चलती है
- 2022 में परिचय के समय यह Looker के अंतर्गत एक experimental language थी, लेकिन अब अलग होकर malloydata में स्थानांतरित हो चुकी है और 2.5k Star तक बढ़ चुकी है
- समर्थित backend भी उस समय के BigQuery, Postgres दो विकल्पों से बढ़कर BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto तक विस्तार कर चुके हैं, और DuckDB native support भी जुड़ गया है
- संक्षिप्त naming और reusability: बार-बार definitions लिखने से बचाकर समय बचाता है, और query करते हुए model को बार-बार निखारा जा सकता है
- सही दिखने वाले लेकिन गलत नतीजों को रोकता है: ऊपर से सही लगने वाली query के गलत values तक पहुंचने की समस्या को पहले ही रोकता है
- Nested Queries: डेटा का समृद्ध hierarchical view आसानी से बनाता है, और query खुद reusable component की तरह काम करती है, इसलिए hierarchy बनाने के लिए दोबारा लिखने की जरूरत नहीं होती
- Symmetric Aggregates: sum/average/count जैसी गलत aggregation को अपने-आप रोकता है, और join trap (Fan/Chasm Trap) समस्या को language स्तर पर हल करता है
- Freedom and Safety: SQL की पूरी flexibility और semantic data model की safety को जोड़ता है, जो LookML के केवल safety देने और freedom सीमित करने से अलग है
- VS Code extension उपलब्ध है: model बनाना, query/transform, सरल visualization और dashboard creation को support करता है, और browser में सीधे आज़माया जा सकता है
- Syntax उदाहरण: SFO से उड़ान भरने वाली flights को airline के आधार पर aggregate करने वाली query, SQL की SELECT/COUNT/AVG/GROUP BY संरचना से अधिक संक्षिप्त है, और पहले aggregate के आधार पर अपने-आप sort होने से
ORDER BYकी जरूरत नहीं पड़तीrun: bigquery.table('malloydata-org.faa.flights') -> { where: origin = 'SFO' group_by: carrier aggregate: flight_count is count() average_flight_time is flight_time.avg() }
1 टिप्पणियां
शायद इसलिए कि मैं SQL से परिचित हूँ, लेकिन यह SQL से ज़्यादा संक्षिप्त है—इस बात से मैं ज़्यादा सहमत नहीं हूँ।
C# का LINQ ज़्यादा सुविधाजनक लगता है, और यह ज़्यादा तरह के DB भी सपोर्ट करता है।