- Mevcut SQL motorlarını kullanarak sorgu çalıştıran, ikili karaktere sahip bir semantik modelleme dili ve sorgu dili
- Yazılan Malloy sorguları, kullanılan veritabanı için optimize edilmiş SQL’e derlenerek çalıştırılır
- 2022’de tanıtıldığında Looker bünyesinde deneysel bir dil idi; bugün ise ayrı olarak malloydata altında taşındı ve 2,5 bin Star ölçeğine ulaştı
- Desteklenen backend’ler de o dönemdeki BigQuery, Postgres ikilisinden BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto seçeneklerine genişledi ve yerel DuckDB desteği eklendi
- Kısa ve net adlandırma ile yeniden kullanılabilirlik: Tekrarlayan tanımlar yazmaktan kaçınarak zaman kazandırır; sorgulama sırasında modeli yinelemeli olarak iyileştirirsiniz
- Doğru gibi görünen ama hatalı sonuçları önler: Dışarıdan doğru görünen sorguların yanlış değerlere yol açması sorununu engeller
- Nested Queries (iç içe sorgular): Verinin zengin hiyerarşik görünümlerini kolayca oluşturur; sorgunun kendisi yeniden kullanılabilir bir bileşen gibi çalıştığından hiyerarşi oluşturmak için yeniden yazım gerekmez
- Symmetric Aggregates (simetrik agregasyonlar): Toplam/ortalama/sayı gibi değerlerde hatalı agregasyonu otomatik olarak önler; Fan/Chasm Trap bağlantı tuzağı sorununu dil düzeyinde çözer
- Freedom and Safety (özgürlük ve güvenlik): SQL’in tam esnekliği ile semantik veri modelinin güvenliğini birleştirir; LookML’in yalnızca güvenlik sunup özgürlüğü kısıtlamasıyla karşıtlık oluşturur
- VS Code eklentisi sunar: Model oluşturma, sorgu ve dönüşüm, basit görselleştirme ve dashboard oluşturmayı destekler; tarayıcıda doğrudan denenebilir
- Sözdizimi örneği: SFO çıkışlı uçuşları havayoluna göre gruplayan sorgu; SQL’deki SELECT/COUNT/AVG/GROUP BY yapısından daha kısadır ve ilk aggregate’e göre otomatik sıralandığı için
ORDER BYgerekmezrun: 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 yorum
Ben SQL'e alışkın olduğum için böyle geliyor olabilir ama SQL'den daha kısa olduğu görüşüne pek katılmıyorum.
C#'ın LINQ'u bana daha kullanışlı görünüyor, desteklenen veritabanı türü de daha fazla.