3 puntos por xguru 4 시간 전 | 1 comentarios | Compartir por WhatsApp
  • Un lenguaje de modelado semántico y también de consultas, con una naturaleza dual que ejecuta consultas usando motores SQL existentes
  • Las consultas escritas en Malloy se compilan a SQL optimizado para la base de datos en uso y luego se ejecutan
  • Cuando se presentó en 2022, era un lenguaje experimental bajo Looker, pero ahora se separó como malloydata y ha crecido hasta alcanzar unas 2.5k estrellas
  • Los backends compatibles también se expandieron desde BigQuery y Postgres en ese entonces a BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto, con soporte nativo para DuckDB agregado
  • Nomenclatura concisa y reutilización: ahorra tiempo al evitar escribir definiciones repetitivas, mientras se refina iterativamente el modelo al consultar
  • Evita resultados que parecen correctos pero están mal: previene casos donde una consulta aparentemente válida termina produciendo valores incorrectos
  • Nested Queries (consultas anidadas): permite crear fácilmente vistas jerárquicas ricas de los datos; la propia consulta funciona como un componente reutilizable, sin necesidad de reescribirla para generar jerarquías
  • Symmetric Aggregates (agregados simétricos): evita automáticamente agregaciones erróneas en sumas/promedios/conteos y resuelve a nivel del lenguaje problemas de trampas de unión como Fan Trap y Chasm Trap
  • Freedom and Safety (libertad y seguridad): combina la flexibilidad completa de SQL con la seguridad de un modelo semántico de datos, en contraste con LookML, que ofrece seguridad pero limita la libertad
  • Ofrece una extensión para VS Code: ayuda a construir modelos, hacer consultas y transformaciones, además de crear visualizaciones y dashboards simples; también se puede probar directamente en el navegador
  • Ejemplo de sintaxis: una consulta que agrega vuelos que salen de SFO por aerolínea; es más concisa que la estructura SELECT/COUNT/AVG/GROUP BY de SQL y se ordena automáticamente según el primer agregado, por lo que no requiere 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 comentarios

 
click 33 분 전

Quizá sea porque estoy acostumbrado a SQL, pero no estoy muy de acuerdo con que sea más conciso que SQL.
LINQ de C# me parece más cómodo, y además soporta más tipos de bases de datos.