Visitran:AI 驱动的 Python 数据转换平台
Visitran 是一个开源的数据转换工具,支持无代码(可视化拖放)和AI 辅助(自然语言)的数据建模方法。它连接你的数据仓库,让你通过可视化方式或简单的英语描述来构建转换管道,并将结果物化回数据库。
现代化的 Pythonic 数据转换
使用 Python 构建数据转换管道——搭配可视化 IDE 和 AI 助手。
什么是 Visitran?
Visitran 是一个开源的数据转换工具,支持无代码(可视化拖放)和AI 辅助(自然语言)的数据建模方法。它连接你的数据仓库,让你通过可视化方式或简单的英语描述来构建转换管道,并将结果物化回数据库。
支持的数据库
| 数据库 | 状态 | 数据库 | 状态 |
|---|---|---|---|
| PostgreSQL | ✅ | DuckDB | ✅ |
| Snowflake | ✅ | BigQuery | ✅ |
| Trino | ✅ | Databricks | ✅ |
如果 Visitran 对你有帮助,请给这个仓库点个星——这能帮助其他人发现这个项目!
核心功能
面向数据工程师
- 基于 Python 的完整转换模型,支持 Ibis SQL 生成
- 6 个数据库适配器,支持表、视图和增量物化
- 带依赖解析的 DAG 执行引擎
- 支持 cron/interval 触发器、重试和链式调度的任务调度
面向分析师和无代码用户
- 带 Monaco 编辑器、文件资源管理器 和 DAG 可视化的可视化 IDE
- 无代码模型构建器——连接、过滤、聚合、窗口函数、透视、联合
- 用于自然语言到数据转换的 AI 助手
- 内置的模型验证测试框架
快速开始
选择你喜欢的安装方式:
- Docker Compose——推荐用于快速评估
- 直接安装(本地)——用于开发和自定义
选项 1:Docker Compose
这是运行 Visitran 最快的方式。需要安装 Docker 和 Docker Compose。
# 克隆仓库
git clone https://github.com/Zipstack/visitran.git
cd visitran
# 设置后端环境变量
cp backend/sample.env backend/.env
编辑 backend/.env——默认值已提供,便于快速启动。生产环境请替换这些密钥:
| 变量 | 默认值 | 如何生成(生产环境) |
|---|---|---|
SECRET_KEY | 已提供 | 使用 djecrety.ir 或运行:python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" |
VISITRAN_ENCRYPTION_KEY | 已提供 | 运行:python -c "from base64 import b64encode; from cryptography.fernet import Fernet; print(b64encode(Fernet.generate_key()).decode())" |
VISITRAN_RSA_PRIVATE_KEY | 已提供 | 生成 2048 位 RSA 密钥对(见 sample.env 中的命令) |
VISITRAN_RSA_PUBLIC_KEY | 已提供 | 从上述私钥派生 |
VISITRAN_AI_KEY | 空 | 可选——从 app.visitran.com 获取以启用 AI 功能 |
注意: sample.env 已为 Docker 预配置——
DB_HOST=postgres和REDIS_HOST=redis指向 Docker Compose 服务名称。无需更改主机名。复制后可直接运行docker compose up --build -d。
# 构建并启动所有服务
cd docker
docker compose up --build -d
这会启动:
| 服务 | 端口 | 描述 |
|---|---|---|
| 前端 | 3000 | React UI (Nginx) |
| 后端 | 8000 | Django REST API (Gunicorn) |
| PostgreSQL | 5432 | 数据库 |
| Redis | 6379 | WebSockets 和异步任务代理 |
| Celery Worker | — | 后台作业处理 |
| Celery Beat | — | 计划任务处理 |
在浏览器中打开 http://localhost:3000。
首次设置: 首次启动时,点击 Sign Up 创建本地管理员账户。没有默认的用户名/密码——你需要在注册时设置自己的凭证。
停止服务:
docker compose down
停止并删除所有数据(PostgreSQL 卷):
docker compose down -v
选项 2:直接安装(本地)
用于开发或当你希望完全控制每个组件时。
先决条件
- Python 3.10.x (
>=3.10, <3.11.1——pyproject.toml要求) - Node.js 16+
- uv(Python 包管理器)
- Git LFS(克隆后运行
git lfs install && git lfs pull) - Redis(用于 WebSockets 和 Celery)——通过
brew install redis(macOS)或你的操作系统包管理器安装
后端
# 克隆仓库
git clone https://github.com/Zipstack/visitran.git
cd visitran
# 设置环境变量
cp backend/sample.env backend/.env
编辑 backend/.env 用于本地开发:
| 变量 | 必需 | 本地主机的值 |
|---|---|---|
SECRET_KEY | 是 | 默认已提供——生产环境替换 |
VISITRAN_ENCRYPTION_KEY | 是 | 默认已提供——生产环境替换 |
DB_HOST | 否 | 留空使用 SQLite(无需 PostgreSQL),或 localhost 如果你有 PostgreSQL 在运行 |
REDIS_HOST | 是 | localhost |
DB_SAMPLE_HOST | 否 | localhost(启用示例项目——需要 PostgreSQL)或留空跳过 |
本地主机重要提示: 将
DB_HOST=postgres改为DB_HOST=(空值使用 SQLite)或DB_HOST=localhost(用于本地 PostgreSQL)。将REDIS_HOST=redis改为REDIS_HOST=localhost。
# 安装后端依赖
cd backend
pip install uv
uv sync
# 激活虚拟环境
source .venv/bin/activate
# 运行数据库迁移
python manage.py migrate
# 启动后端服务器(端口 8000)
python manage.py runserver
前端
cd frontend
# 设置环境变量
cp sample.env .env
编辑 frontend/.env(如果需要):
| 变量 | 默认值 | 描述 |
|---|---|---|
REACT_APP_BACKEND_URL | http://localhost:8000 | 后端 API URL |
REACT_APP_SOCKET_SERVICE_BASE_URL | http://localhost:4000 | WebSocket 服务器 URL |
# 安装依赖
npm install
# 启动开发服务器(端口 3000)
npm start
在浏览器中打开 http://localhost:3000 并注册创建你的账户。
项目结构
backend/
├── backend/ # Django 应用
│ ├── core/ # 模型、视图、REST API
│ ├── application/ # 业务逻辑、配置解析器、解释器
│ └── server/settings/ # Django 设置
├── visitran/ # 核心转换引擎(独立)
│ ├── adapters/ # 数据库适配器(postgres、duckdb、snowflake 等)
│ ├── templates/ # VisitranModel 基类
│ └── visitran.py # DAG 执行引擎
frontend/src/
├── base/ # 应用外壳、路由、项目列表
├── ide/ # 主工作区(编辑器、文件资源管理器、SQL 抽屉)
│ ├── chat-ai/ # AI 助手界面
│ └── editor/ # 无代码可视化模型构建器
├── store/ # Zustand 状态管理
├── service/ # API 服务(axios、socket)
└── widgets/ # 可复用的 UI 组件
docker/
├── dockerfiles/ # 后端和前端 Dockerfiles
└── docker-compose.yaml # Docker Compose 配置
开发
后端
# 带热重载运行服务器
cd backend && python manage.py runserver
# 运行迁移
python manage.py migrate
# 代码检查和类型检查
inv checks
inv type_check
# 运行测试(需要 Docker 用于测试数据库)
docker compose up --wait
uv run pytest -vv --dist loadgroup -n 5 tests
docker compose down
前端
cd frontend
npm start # 开发服务器
npm run build # 生产构建
npm test # 运行测试
npm run test:coverage # 带覆盖率的测试
npm run lint # ESLint 检查
npm run lint:fix # ESLint 自动修复
云服务与企业版
适用于需要托管基础设施、高级功能或企业级安全性的团队。
- SSO & RBAC——基于 SAML/OIDC 的单点登录和基于角色的访问控制
- 托管 AI——内置 AI 服务,无需设置 API 密钥
- 任务调度——支持重试、链式调用和通知的 Cron/interval 触发器
- 云存储——带版本控制的托管文件存储
- 多租户——组织级隔离和团队管理
- 优先支持——带 SLA 保证的专属支持
AI 助手可以从自然语言生成数据转换。在 OSS 模式下,AI 访问需要 Visitran AI 订阅密钥:
- 在 app.visitran.com 注册
- 订阅 AI 计划并生成 API 密钥
- 在本地实例中进入 Settings > Visitran AI 并输入你的密钥
- 在 IDE 中打开 Chat AI 抽屉开始使用 AI
云网关验证你的密钥,通过 LLM 模型(Claude、GPT-4o、Gemini)路由提示,并流式返回响应——无需本地 AI 设置或 LLM 凭证。
技术栈
| 组件 | 技术 |
|---|---|
| 后端 | Python、Django、Django REST Framework、Celery |
| 前端 | React、Ant Design、Zustand、Monaco Editor |
| SQL 生成 | Ibis |
| 数据库 | PostgreSQL、DuckDB、Snowflake、BigQuery、Trino、Databricks |
| 基础设施 | Docker、Redis、Gunicorn |
贡献
我们欢迎贡献!详见 CONTRIBUTING.md 获取详细指南。
- 复刻仓库并从
main创建功能分支 - 进行更改
- 运行代码检查:
- 前端:
npm run lint - 后端:
inv checks
- 前端:
- 运行测试:
- 前端:
npm test - 后端:
uv run pytest
- 前端:
- 提交拉取请求
社区
加入 Visitran 社区:
关于分析
Visitran 集成了 Posthog 以跟踪最少的用户分析。通过在前端的 .env 文件中设置 REACT_APP_ENABLE_POSTHOG=false 来禁用。
许可证
Visitran 根据 GNU Affero 通用公共许可证 v3.0 (AGPL-3.0) 授权。你可以根据 AGPL-3.0 的条款自由使用、修改和分发此软件。如果你将修改版本作为网络服务运行,则必须向该服务的用户提供源代码。
觉得有用?分享给更多人