3 Punkte von xguru 4 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Eine semantische Modellierungssprache und Abfragesprache mit Doppelnatur, die Abfragen über bestehende SQL-Engines ausführt
  • Geschriebene Malloy-Abfragen werden in für die jeweils genutzte Datenbank optimiertes SQL kompiliert und dann ausgeführt
  • Bei der Vorstellung im Jahr 2022 war es noch eine experimentelle Sprache unter Looker, inzwischen wurde es als malloydata ausgelagert und ist auf rund 2,5k Stars gewachsen
  • Die unterstützten Backends wurden von damals BigQuery und Postgres auf BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto erweitert, zusätzlich kam native DuckDB-Unterstützung hinzu
  • Prägnante Benennung und Wiederverwendbarkeit: spart Zeit, indem wiederholte Definitionen vermieden werden, und verfeinert das Modell iterativ beim Abfragen
  • Verhindert korrekt aussehende, aber falsche Ergebnisse: beugt Problemen vor, bei denen scheinbar richtige Abfragen zu falschen Werten führen
  • Nested Queries (verschachtelte Abfragen): erzeugen mühelos reichhaltige hierarchische Ansichten von Daten; die Abfrage selbst fungiert als wiederverwendbare Komponente, sodass für die Hierarchieerstellung kein Umschreiben nötig ist
  • Symmetric Aggregates (symmetrische Aggregationen): verhindert automatisch Fehlaggregationen bei Summen/Durchschnitten/Anzahlen und löst Join-Fallen wie Fan Trap und Chasm Trap auf Sprachebene
  • Freedom and Safety (Freiheit und Sicherheit): kombiniert die volle Flexibilität von SQL mit der Sicherheit semantischer Datenmodelle, im Gegensatz zu LookML, das nur Sicherheit bietet und die Freiheit einschränkt
  • VS-Code-Erweiterung verfügbar: unterstützt Modellaufbau, Abfragen und Transformationen sowie einfache Visualisierungen und Dashboard-Erstellung; direkt im Browser testbar
  • Syntaxbeispiel: eine Abfrage, die Flüge ab SFO nach Fluggesellschaft aggregiert; kompakter als die SQL-Struktur aus SELECT/COUNT/AVG/GROUP BY und automatisch nach dem ersten Aggregate sortiert, daher ist kein ORDER BY nötig
    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 Kommentare

 
click 15 분 전

Vielleicht liegt es daran, dass ich SQL gewohnt bin, aber dass es prägnanter als SQL sein soll, überzeugt mich nicht wirklich.
C# LINQ wirkt auf mich bequemer, und es unterstützt auch mehr Datenbanktypen.