2C4G 跑通数据全链路:从数据接入、指标建模到智能问数的实战指南
你有多个电商平台,想知道每天卖得怎么样。用传统数据平台?Hadoop + Flink + ClickHouse 搭起来就要好几台机器。 现在换 DataY:一台 2 核 4G 的服务器,20 分钟跑完整条链路 —— 数据接入 → 维度建模 → 指标定义 → 自然语言问数。 本文就是这条链路的手把手实操。
你将跑通什么
订单CSV文件 ──ETL──▶ DuckDB 数仓 ────▶ 维度建模
│
▼
指标(销售额/毛利率/客单价…)
│
┌─────────────────┴─────────────────┐
▼ ▼
公共指标查询面板 智能问数(自然语言)
"我选几个指标看看" "上个月北京销售额?"
└───────────► 数据结果 ◄────────────┘
跑完之后你能得到:
| 能力 | 效果 |
|---|---|
| 📥 数据接入 | 订单/商品/门店数据自动同步到数仓,定时增量 |
| 🏗️ 维度建模 | 商品品类(3 级层级)、门店、时间(年/季/月/日)维度建好 |
| 📊 指标管理 | 销售额、毛利率、客单价等 12 个业务口径指标,团队统一用 |
| 🤖 智能问数 | 一句话拿数:"上个月各品类的销售额和毛利率" |
1. 环境准备(5 分钟)
最低要求
- 一台 2 核 4G 的服务器(或你的笔记本)
- Java 17+,Maven 3.6+
启动
# 1. 克隆仓库
git clone https://cnb.cool/yuyuejia/datay
# 2. 构建项目
cd datay
mvn clean package -DskipTests
# 3. 启动(单机模式,调度+执行合一),AI 能力需要提供 AI API Key,默认为 Deepseek 原厂Key
java -jar datay-web/target/*.jar --DATAY_AI_API_KEY=sk-xxxxxxxxx
# 4. 浏览器打开 http://localhost:8080,默认账号 admin/admin
在线演示地址:datay-demo.yuyuejia.com.cn/
开箱即用:已预置好的电商资产
平台启动时自动通过数据库迁移脚本预置了一整套电商示例,登录就能看到:
| 类型 | 预置内容 |
|---|---|
| 数据源 | 电商数仓(DuckDB) |
| 维度表 | dim_date、dim_customer、dim_store、dim_product、dim_brand、dim_category(3 级层级)、dim_time(年/季/月/日) |
| 事实表 | fact_sales_order、fact_sales_order_item、fact_customer_member |
| 指标 | 销售额、销量、成本、毛利、毛利率、客单价等 12 个 |
| 同步任务 | EC_DIM_* / EC_FACT_* 系列,文件 → 模型 |
2. 数据接入(10 分钟)
目标:把源数据(文件 / MySQL / API)同步进数仓物理表。
2.1 注册数据源
导航:数据源 → 数据源管理。
- 点击「新建数据源」
- 填写名称、类型(示例用
DUCKDB)、连接 URL、默认 schema - 点「测试连接」确认后保存
2.2 编排同步任务
两种方式选一种:
方式 A:可视化 ETL 画布(适合复杂任务)
数据集成 → 新建任务 → 拖拽 FileInput(或 StreamJdbcInput)和 ModelWrite → 连线 → 双击节点配置 → 保存。
方式 B:数据同步(适合简单表同步) 数据同步 页面选源表和目标,自动建表全量/增量同步。
2.3 执行并校验
任务「执行一次」或「上线」后,到 任务实例 页看状态;在 数据源元数据浏览 里确认目标表已生成且有数据。
3. 维度建模(10 分钟)
目标:用星型模型定义维度表和事实表的关联关系,让后续指标和问数有业务语义。
导航:数据模型 → 维度建模。
3.1 三种维度类型
创建维度模型时,选对类型能省很多事:
| 类型 | 自动生成什么 | 什么时候用 |
|---|---|---|
| 普通维度 | 基础字段 + member_id/member_name | 客户、门店、商品 |
| 层级维度 | level1_id/level1_name … 自动层级字段 | 品类(一级/二级/三级) |
| 时间维度 | year/month/day 粒度字段 + 预置日期数据 | 按时间趋势分析 |
3.2 时间维度
- 新建模型,类型选 时间维度
- 勾选粒度:
年 / 季 / 月 / 日(自动按由粗到细排序) - 填日期范围(如
2024-01-01 ~ 2024-12-31) - 保存后自动生成:
year_id/month_id/day_id+ 主键date_key+ 层级路径hierarchy - 点「物化」→ 勾选「生成预置数据」→ 建表并写入日期数据
3.3 事实表关联维度
- 新建事实模型,类型选
DWD 明细层 - 用「注册模式」从物理表自动导入字段
- 对每个外键字段,在「关联维度」列指向对应维度模型
- 选一个时间字段作为「时间周期字段」
示例:fact_sales_order_item.order_date_sk → dim_date、product_sk → dim_product、store_sk → dim_store
4. 指标管理(10 分钟)
目标:用统一的公式定义业务指标口径,问数有依据、报表对得上。
导航:数据模型 → 指标管理。
4.1 原子指标(基础度量)
- 新建指标,类型选 原子指标
- 填名称、编码、单位(如
销售额 sales_amount,单位「元」) - 选绑定的事实表(如
fact_sales_order_item) - 写计算公式:
SUM(amount)、COUNT(DISTINCT order_id)等 - 可选配置「业务限定」(只算已支付订单等)
- 点「预览 SQL」核对口径后保存
4.2 衍生指标(组合公式)
类型选 衍生原子指标,用 ${指标编码} 引用已有指标:
毛利率 = ${gross_profit} / ${sales_amount}
客单价 = ${sales_amount} / ${order_count}
5. 智能问数(真正的亮点,5 分钟体验)
目标:用自然语言直接拿数,不需要会写 SQL。
导航:数据模型 → 智能问数。
5.1 构建知识索引
首次使用点 「重建知识索引」,平台会把以下内容向量化:
- 指标(名称 + 编码 + 口径描述)
- 维度字段
- 维度成员值(门店城市、品类名称等)
索引完成后,AI 才能正确理解你的业务语义。
5.2 开始问数
在输入框里像跟老板说话一样描述需求:
各品类的销售额和毛利率
最近一周北京的销售额
每个月的销售额趋势对比
今年一季度 vs 去年一季度的客单价
AI 会自动完成:知识检索 → 指标匹配 → 维度/时间识别 → 业务限定解析 → 取数, 最终用 Markdown 表格 给你答案。
6. 不依赖 AI 的公共指标查询
如果你想直接选指标手动查,或需要校验 AI 口径:指标管理 → 指标查询
- 选指标(可多选,自动求共同维度)
- 加维度(层级/时间维度可选具体层级)
- 设业务限定和时间范围
- 预览 SQL 或直接查询