Malloy - 데이터 관계/변환/모델링을 위한 모던 오픈소스 언어

10 hours ago 2
  • 시맨틱 모델링 언어이자 쿼리 언어로, 기존 SQL 엔진을 사용해 쿼리를 실행하는 이중 성격의 언어
  • 작성한 Malloy 쿼리는 사용 중인 DB에 최적화된 SQL로 컴파일되어 실행됨
  • 2022년에 소개 할 때는 Looker 산하의 실험적 언어였으나, 현재 malloydata로 별도 이관되어 Star 2.5k 규모로 성장
  • 지원 백엔드도 당시 BigQuery,Postgres 2종에서 BigQuery/Snowflake/PostgreSQL/MySQL/Trino/Presto로 확장되고 DuckDB 네이티브 지원 추가
  • 간결한 명명과 재사용성: 반복적인 정의 작성을 피해 시간 절약, 쿼리하면서 모델을 반복적으로 다듬음
  • 정확해 보이지만 틀린 결과를 방지: 겉보기엔 맞는 쿼리가 잘못된 값으로 이어지는 문제를 예방
  • Nested Queries(중첩 쿼리): 데이터의 풍부한 계층적 뷰를 손쉽게 생성, 쿼리 자체가 재사용 가능한 컴포넌트로 동작해 계층 생성을 위한 재작성 불필요
  • Symmetric Aggregates(대칭 집계): 합계/평균/개수 등의 오집계를 자동 방지, 연결함정(Fan/Chasm Trap) 문제를 언어 차원에서 해결
  • Freedom and Safety(자유와 안전): SQL의 완전한 유연성과 시맨틱 데이터 모델의 안전성을 결합, LookML이 안전성만 주고 자유를 제약하는 것과 대비
  • VS Code 확장 제공 : 모델 구축, 쿼리·변환, 간단한 시각화 및 대시보드 생성 지원, 브라우저에서 바로 시험 가능
  • 문법 예시 : SFO 출발 항공편을 항공사별로 집계하는 쿼리, SQL의 SELECT/COUNT/AVG/GROUP BY 구조보다 간결하며 첫 번째 aggregate 기준으로 자동 정렬되어 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() }
Read Entire Article