3 ポイント 投稿者 xguru 4 시간 전 | 1件のコメント | WhatsAppで共有
  • セマンティックモデリング言語でありクエリ言語でもある、既存の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()  
    }  
    

1件のコメント

 
click 33 분 전

私がSQLに慣れているからかもしれませんが、SQLより簡潔だという点にはあまり同意できません
C# の LINQ のほうが便利そうですね。対応しているDBの種類も多いですし