Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

322 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

数据仿真生成器

一图概览

Meriad在线编辑

---
title: DataForge - AI仿真数据生成工具
config:
  look: handDrawn
  theme: normal
  layout: elk
  elk:
    mergeEdges: false
    nodePlacementStrategy: NETWORK_SIMPLEX
    cycleBreakingStragy: MODEL_ORDER
---

flowchart TD
    START@{shape: circle, label: "start"}
    END@{shape: circle, label: "END"}
    INPUT_TABLE:::UserInputClass@{shape: manual-input, label: "期望生成表名称"}
    INPUT_SQL:::UserInputClass@{shape: manual-input, label: "业务查询SQL" }
    LLMS:::LLMClass@{shape: procs, label: "LLM服务\n(Deepseek、QWen)"}
    PARSE_COL_PROMPT_TEMPLATE:::templateClass@{ shape: doc, label: "字段映射填充提示词模板"}
    PARSE_COL_PROMPT:::promptClass@{ shape: odd, label: "字段映射填充提示词" }
    PARSE_COL_AGNET:::agentClass@{shape: lin-rect, label: "字段映射填充Agent" }
    SAMPLE_DATA["字段样例数据集"]:::importantClass
    GEN_PROMPT_TEMPLATE:::templateClass@{ shape: doc, label: "仿真测试数据生成提示词模板" }
    GEN_PROMPT:::promptClass@{ shape: odd, label: "仿真测试数据生成提示词" }
    GEN_FAKE_DATA_AGENT:::agentClass@{ shape: lin-rect, label: "仿真测试数据生成Agent" }
    FAKE_DATA_SAMPLE:::DBClass@{shape: rect, label: "仿真测试数据集"}
    FAKE_DATA_DB:::DBClass@{shape: lin-cyl, label: "仿真测试数据存储库"}
    FAKER_FACTORY_SERVER:::OutServerClass@{shape: tag-rect, label: "仿真数据生成服务\n身份证、手机号、地市编码" }
    UDF_CHECKER:::OutServerClass@{shape: tag-rect, label: "udf函数执行服务" }
    DATA_META_DOCS:::OutServerClass@{ shape: tag-rect, label: "数仓知识库服务\n(表结构和治理任务SQL)" }
    TABLE_COL_INFO:::metaClass@{shape: lin-doc, label: "表字段信息" }
    JOB_SQL_INFO:::metaClass@{shape: lin-doc, label: "治理SQL信息" }
    SQL_PARSER:::OutServerClass@{ shape: tag-rect, label: "SQL解析服务" }
    SQL_CONDITION:::metaClass@{shape: rect, label: "where条件
    join条件
    udf函数字段
    ……"}
    LANGUFSE:::LangFuseClass@{ shape: tag-rect, label: "LangFuse监测感知评估" }
    OUTPUT_SERVER:::DBClass@{ shape: tag-rect, label: "数据输出器" }
    CHECKER_AGENT:::agentClass@{ shape: lin-rect, label: "仿真数据校验Agent" }


    START --> INPUT_TABLE
    START -.-> INPUT_SQL --> SQL_PARSER
    INPUT_TABLE --> DATA_META_DOCS
    DATA_META_DOCS --> TABLE_COL_INFO & JOB_SQL_INFO
    JOB_SQL_INFO --> SQL_PARSER --> SQL_CONDITION

    PARSE_COL_PROMPT_TEMPLATE & TABLE_COL_INFO --> PARSE_COL_PROMPT --> PARSE_COL_AGNET
    PARSE_COL_AGNET <--> LLMS & FAKER_FACTORY_SERVER
    PARSE_COL_AGNET --> SAMPLE_DATA

    SQL_CONDITION & JOB_SQL_INFO & TABLE_COL_INFO & GEN_PROMPT_TEMPLATE --> GEN_PROMPT --> GEN_FAKE_DATA_AGENT
    SAMPLE_DATA --> GEN_FAKE_DATA_AGENT
    GEN_FAKE_DATA_AGENT <--> LLMS
    GEN_FAKE_DATA_AGENT --> FAKE_DATA_SAMPLE


    CHECKER__PROMPT_TEMPLATE:::templateClass@{ shape: doc, label: "数据校验提示词模板"}
    CHECKER__PROMPT:::promptClass@{ shape: odd, label: "数据校验提示词" }
    CHECKER__PROMPT_TEMPLATE & SQL_CONDITION & JOB_SQL_INFO & TABLE_COL_INFO --> CHECKER__PROMPT
    FAKE_DATA_SAMPLE & CHECKER__PROMPT --> CHECKER_AGENT <-->|校验生成的数据是否满足udf where条件| UDF_CHECKER
    CHECKER_AGENT <--> LLMS
    CHECKER_AGENT -->|校验通过入库存储| FAKE_DATA_DB

    CHECKER_AGENT -.->|校验不通过时给出修改建议| GEN_FAKE_DATA_AGENT & PARSE_COL_AGNET

    FAKE_DATA_DB --> OUTPUT_SERVER --> END

    GEN_FAKE_DATA_AGENT & CHECKER_AGENT & PARSE_COL_AGNET -.-> LANGUFSE

    classDef agentClass fill:#f9f,font-weight:bold;
    classDef importantClass fill:#6ED391FF,font-weight:bold;
    classDef templateClass fill:#BEE6888F,font-weight:bold;
    classDef promptClass fill:#83D70E8F,font-weight:bold;
    classDef OutServerClass fill:#6CC9E6B8,font-weight:bold;
    classDef LLMClass fill:#E8D38180,font-weight:bold;
    classDef metaClass fill:#E8818180,font-weight:bold;
    classDef DBClass fill:#BB81E880,font-weight:bold;
    classDef LangFuseClass fill:#003BFE57,font-weight:bold;
    classDef UserInputClass fill:#DAD65E8A,font-weight:bold;
Loading
---
title: DataForge - AI仿真数据生成工具
config:
  look: handDrawn
  theme: normal
  layout: elk
  elk:
    mergeEdges: false
    nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart TD
    START@{shape: circle, label: "start"}
    END@{shape: circle, label: "END"}
    A@{ shape: braces, label: "1、数仓表结构信息\n2、数仓数据治理任务SQL" }
    B@{shape: braces, label: "身份证、手机号、地市编码等" }
    C@{shape: manual-input, label: "业务查询SQL" }
    D@{shape: manual-input, label: "期望生成表名称"}
    E@{ shape: braces, label: "表where条件、join条件等信息" }
    F(提示词模板)
    G1@{ shape: odd, label: "仿真数据生成提示词" }
    G[[提示词生成器]]
    H@{shape: procs, label: LLM服务}
    I:::pinkClass@{ shape: rect, label: "数据生成Agent
    (使用LangGraph实现)" }
    J[MCP-仿真数据生成服务]
    K[MCP-数仓知识库]
    L[MCP-UDF函数执行服务]
    O[MCP-SQL解析服务]
    M@{shape: lin-cyl, label: "仿真数据"}
    N[[数据输出器]]
    P["LangFuse
    监测感知评估"]
    R@{shape: braces, label: "执行udf函数输出结果" }

    START --> C & D
    C -.-> G
    D --> G
    subgraph DataForge
    F --> G
    G --> G1 --> I
    end

    subgraph "MCP服务矩阵"
    I <-.-> J & K & L & O & K
    K --> A
    O --> E
    L --> R
    J --> B
    end

    subgraph "输出数据"
    I --> M --> N --> END
    end

    I <--> H
    I -.-> P

    classDef pinkClass fill:#f9f,font-weight:bold;
    classDef importantClass fill:#eb6d6f,font-weight:bold;
Loading

项目概述

本项目是一个基于数据仓库元数据信息自动生成仿真数据的工具,支持两种表类型:

  • ODS(原始数据表):外部系统接入的原始数据
  • ADM(知识库表):经过治理任务处理的业务数据

通过LLM(大语言模型)技术根据表定义生成符合业务逻辑的测试数据,并保持表间关联关系,为开发和测试提供高质量的数据支持。

核心功能

  • 元数据驱动:解析数据仓库的表定义信息(字段名、类型、约束等)
  • 智能数据生成:利用LLM根据字段语义生成合理的仿真数据
  • 关联数据构建:根据表的血缘关系保持数据间的业务逻辑一致性
  • 测试支持:生成的数据可直接用于单元测试、集成测试和开发自测

技术特点

  1. 采用Python作为主要开发语言
  2. 集成大语言模型API进行智能数据生成
  3. 支持多种数据源元数据解析
  4. 可配置的数据生成规则和关联策略
  5. 提供命令行和API两种使用方式
  6. 使用uv进行高效的Python依赖管理

使用场景

  • 开发环境数据准备
  • 自动化测试数据生成
  • 数据可视化演示
  • 系统性能测试

快速开始

前置条件

  • 已安装Python 3.10+
  • 已安装uv (可通过pip install uv安装)

安装与运行

# 安装项目依赖
uv pip install -e .

# 或开发模式安装(包含测试依赖)
uv pip install -e ".[dev]"

# 运行数据生成
python main.py --metadata /path/to/metadata.json --output /path/to/output

常用uv命令

# 更新所有依赖
uv pip install --upgrade -r requirements.txt

# 检查依赖冲突
uv pip check

# 导出依赖列表
uv pip freeze > requirements.txt

配置说明

在pyproject.toml中配置:

  • LLM API密钥
  • 数据生成规则
  • 关联关系策略
  • 输出格式选项

prompt demo

数据库表名称:
fmdbmeta.NB_APP_EVIDENCE_EMAILRELATE
期望生成数据条数:
fmdbmeta.NB_APP_EVIDENCE_EMAILRELATE: 5
期望条件:
fmdbmeta.NB_APP_EVIDENCE_EMAILRELATE:
1. CERTIFICATE_CODE is not null AND MSISDN like '139%' and AGE <100 and SEXCODE is not null
2. CERTIFICATE_CODE身份证号码要和AGE年龄、SEXCODE性别逻辑匹配
数据库表名称:
massdata.ADM_REL_MOBILE
期望生成数据条数:
massdata.ADM_REL_MOBILE: 5

About

AI Generate Mock Data

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages