本项目实现了一个可用于生产环境的数据栈,结合了用于ELT编排的Meltano、高性能分析的DuckDB以及用于数据转换的dbt Core。
# 克隆项目并进入项目目录
cd claude-data-stack-mcp
# 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate # 在Windows上使用: venv\Scripts\activate
# 安装所有依赖项
pip install -r requirements.txt
# 步骤1: 使用Meltano进行提取和加载
meltano run tap-csv target-duckdb
# 步骤2: 使用dbt进行转换
cd transform
DBT_PROFILES_DIR=./profiles/duckdb dbt run --profile data_stack --project-dir .
# 步骤3: 使用数据质量测试进行验证
DBT_PROFILES_DIR=./profiles/duckdb dbt test --profile data_stack --project-dir .
# 检查转换后的数据
python -c "
import duckdb
conn = duckdb.connect('data/warehouse/data_stack.duckdb')
print('=== 部门统计信息 ===')
result = conn.execute('SELECT * FROM main.agg_department_stats').fetchall()
for row in result: print(row)
"
CSV数据 → Meltano (提取/加载) → DuckDB → dbt Core (转换) → 分析表
数据流:
tap-csv 读取示例员工数据target-duckdb 将原始数据加载到DuckDB中| 属性 | 详情 |
|---|---|
| 工具名称 | 版本详情 |
| Meltano | 3.8.0 - 用于ELT管道的数据运维平台 |
| DuckDB | 1.3.2 - 高性能进程内分析数据库 |
| dbt Core | 1.10.4 - 数据转换框架 |
| dbt-duckdb | 1.9.4 - 用于dbt的DuckDB适配器 |
├── data/
│ ├── sample_data.csv # 示例员工数据
│ └── warehouse/ # DuckDB数据库文件
├── transform/ # dbt项目
│ ├── models/
│ │ ├── staging/ # 临时模型
│ │ │ ├── stg_employees.sql
│ │ │ └── sources.yml
│ │ └── marts/ # 分析模型
│ │ ├── dim_employees.sql
│ │ └── agg_department_stats.sql
│ ├── profiles/duckdb/ # 项目包含的配置文件
│ └── dbt_project.yml
├── meltano.yml # Meltano配置文件
├── requirements.txt # Python依赖项
└── README.md # 本文件
stg_employees:从原始CSV文件中清理并进行类型转换后的员工数据dim_employees:包含薪资层级(初级/中级/高级)的员工维度表agg_department_stats:部门级别的聚合数据(员工数量、平均/最低/最高薪资、总工资)# 浏览可用的提取器
meltano discover extractors
# 添加新的提取器(例如,PostgreSQL)
meltano add extractor tap-postgres
# 在meltano.yml中进行配置并运行
meltano run tap-postgres target-duckdb
-- transform/models/marts/new_model.sql
{{ config(materialized='table') }}
select
department,
count(*) as employee_count,
avg(annual_salary) as avg_salary
from {{ ref('stg_employees') }}
group by department
# 测试单个dbt模型
cd transform
DBT_PROFILES_DIR=./profiles/duckdb dbt run --models stg_employees --profile data_stack --project-dir .
# 仅运行分析模型
DBT_PROFILES_DIR=./profiles/duckdb dbt run --models marts --profile data_stack --project-dir .
# 生成文档
DBT_PROFILES_DIR=./profiles/duckdb dbt docs generate --profile data_stack --project-dir .
tap-csv 配置为读取 data/sample_data.csvtarget-duckdb 配置为写入 data/warehouse/data_stack.duckdbdata_stack,使用项目包含的配置文件data/warehouse/ 中的DuckDB数据库“表不存在”错误:
data/warehouse/data_stack.duckdb 是否存在dbt配置文件错误:
transform/ 目录下DBT_PROFILES_DIR=./profiles/duckdb 标志Python依赖冲突:
# 检查Meltano配置
meltano config list
# 验证dbt设置
cd transform
DBT_PROFILES_DIR=./profiles/duckdb dbt debug --profile data_stack
# 直接检查DuckDB
python -c "import duckdb; conn = duckdb.connect('data/warehouse/data_stack.duckdb'); print(conn.execute('SHOW TABLES').fetchall())"
新特性:Claude Code MCP服务器,提供智能dbt协助!
# 启动用于Claude Code集成的dbt MCP服务器
./scripts/start_dbt_mcp.sh
功能:
dbt_run、dbt_test、dbt_compile、dbt_build文档:
此数据栈已通过全面测试进行了系统实现和验证。所有组件均使用最新兼容版本,并遵循最佳实践。通过集成Claude Code MCP提供智能开发协助。