3 points par xguru 4 시간 전 | 1 commentaires | Partager sur WhatsApp
  • À la fois langage de modélisation sémantique et langage de requête, Malloy exécute les requêtes en s’appuyant sur les moteurs SQL existants
  • Les requêtes Malloy écrites sont compilées en SQL optimisé pour la base de données utilisée, puis exécutées
  • Lors de sa présentation en 2022, c’était un langage expérimental au sein de Looker ; il a depuis été transféré séparément sous malloydata et a atteint 2,5k stars
  • Les backends pris en charge sont passés des deux options BigQuery et Postgres de l’époque à BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto, avec en plus une prise en charge native de DuckDB
  • Nommage concis et réutilisabilité : évite d’écrire des définitions répétitives, fait gagner du temps et permet d’affiner les modèles de manière itérative au fil des requêtes
  • Empêche les résultats qui semblent corrects mais sont faux : prévient les problèmes où une requête apparemment juste produit des valeurs erronées
  • Nested Queries (requêtes imbriquées) : crée facilement des vues hiérarchiques riches des données ; la requête elle-même fonctionne comme un composant réutilisable, sans réécriture nécessaire pour générer la hiérarchie
  • Symmetric Aggregates (agrégats symétriques) : évite automatiquement les mauvaises agrégations de sommes/moyennes/comptages, et résout au niveau du langage les problèmes de pièges Fan/Chasm
  • Freedom and Safety (liberté et sécurité) : combine toute la flexibilité de SQL avec la sécurité d’un modèle de données sémantique, contrairement à LookML qui apporte la sécurité mais limite la liberté
  • Fournit une extension VS Code : prise en charge de la construction de modèles, des requêtes et transformations, de la visualisation simple et de la création de dashboards, avec essai direct dans le navigateur
  • Exemple de syntaxe : requête agrégeant les vols au départ de SFO par compagnie aérienne ; plus concise que la structure SELECT/COUNT/AVG/GROUP BY de SQL, elle est automatiquement triée selon le premier agrégat, sans besoin de 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 commentaires

 
click 28 분 전

Je ne sais pas si c’est parce que je suis habitué au SQL, mais je ne suis pas vraiment d’accord pour dire que c’est plus concis que le SQL.
Le LINQ de C# me paraît plus pratique, et il prend aussi en charge davantage de types de bases de données.