3 pontos por xguru 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Uma linguagem de modelagem semântica e também de consulta, com natureza dupla: executa consultas usando engines SQL existentes
  • As consultas Malloy escritas são compiladas para SQL otimizado para o banco de dados em uso e então executadas
  • Quando foi apresentada em 2022, era uma linguagem experimental sob a Looker, mas agora foi transferida separadamente para malloydata e cresceu para cerca de 2,5 mil estrelas
  • Os backends suportados também se expandiram dos dois da época, BigQuery e Postgres, para BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto, com adição de suporte nativo a DuckDB
  • Nomenclatura concisa e reutilização: economiza tempo evitando escrever definições repetitivas, permitindo refinar o modelo iterativamente enquanto se consulta
  • Evita resultados que parecem corretos, mas estão errados: previne problemas em que consultas aparentemente corretas levam a valores incorretos
  • Nested Queries (consultas aninhadas): cria facilmente visualizações hierárquicas ricas dos dados; a própria consulta funciona como um componente reutilizável, sem necessidade de reescrevê-la para criar hierarquias
  • Symmetric Aggregates (agregações simétricas): evita automaticamente agregações incorretas de soma/média/contagem etc.; resolve no nível da linguagem problemas de armadilhas de relacionamento (Fan/Chasm Trap)
  • Freedom and Safety (liberdade e segurança): combina a flexibilidade total do SQL com a segurança de um modelo semântico de dados, em contraste com o LookML, que oferece segurança mas restringe a liberdade
  • Oferece extensão para VS Code: dá suporte à construção de modelos, consultas e transformações, visualizações simples e criação de dashboards; pode ser testado diretamente no navegador
  • Exemplo de sintaxe: consulta que agrega voos partindo de SFO por companhia aérea; é mais concisa que a estrutura SELECT/COUNT/AVG/GROUP BY do SQL e é ordenada automaticamente pelo primeiro aggregate, dispensando 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 comentários

 
click 5 분 전

Não sei se é porque estou acostumado com SQL, mas não concordo muito que seja mais conciso que SQL.
O LINQ do C# parece mais conveniente, e também dá suporte a mais tipos de bancos de dados.