跳转至

Datus-MetricFlow 介绍

说明:本项目基于 dbt-labs/metricflow 0.140.0 分支继续演进,感谢 dbt Labs 团队对原始项目的出色贡献。

什么是 MetricFlow?

MetricFlow 是一层语义层,用于以代码方式组织与管理“业务指标”的定义。它能根据指标定义自动生成简洁、可复用且一致的 SQL,让全组织范围内的指标口径统一。

借助 MetricFlow 你可以:

  • 将业务指标用标准化方式“一次定义,多处复用”
  • 按不同维度(时间、地域、品类等)一致地查询这些指标
  • 获取针对数据仓库优化生成的 SQL

关键特性

指标管理

  • 集中式定义:使用简洁 YAML 在统一位置维护指标
  • 多种指标类型:简单指标、比率、表达式、累计指标
  • 维度分析:按任意维度拆分(时间、地理、品类等)

智能查询生成

  • 自动 SQL 生成:将指标请求转换为优化 SQL 查询
  • 多跳联接:处理事实表与维表之间的复杂联接
  • 时间粒度:按日/周/月等多粒度聚合

集成与灵活性

  • 多数据仓库:适配多种数据平台
  • API 集成:可与下游工具进行扩展集成
  • 版本控制:像代码一样用 Git 管理指标定义

支持的系统

数据仓库

当前支持:

  • DuckDB — 嵌入式分析数据库(适合本地与 Demo)
  • SQLite — 轻量级嵌入式数据库
  • StarRocks — 高性能分析型数据库

datus-metricflow 的增强

在 0.140.0 的基础上,我们提供了:

  • Python 3.12 支持
  • 新增数据库适配:SQLite、StarRocks
  • 与 Datus 集成:统一配置、无缝协作
  • 独立安装包:可作为依赖单独使用
  • MCP 服务器:通过 Model Context Protocol 让 LLM 应用查询指标

安装

确保系统已安装 Python 3.12,然后执行:

pip install datus-metricflow

下一步

  1. 定义指标:在语义模型目录编写 YAML,或使用 subagent 定义业务指标
  2. 查询指标:使用 mf query 或结合 Datus Agent 进行查询
  3. 工具集成:通过 MCP 服务器将 MetricFlow 接入 LLM 应用