数据开发
开发环境
数帆提供基于 Web 的数据开发 IDE,无需本地安装任何工具:
数据开发 IDE 功能
├── SQL 编辑器
│ ├── 语法高亮、自动补全
│ ├── 表结构提示
│ └── 执行计划查看
├── 任务管理
│ ├── 离线任务(Hive/Spark SQL)
│ ├── 实时任务(Flink SQL)
│ └── 脚本任务(Shell/Python)
├── 调度配置
│ ├── Cron 表达式
│ ├── 依赖配置
│ └── 重试策略
└── 版本管理
├── 任务版本历史
└── 回滚能力离线数据开发
数仓建设规范
sql
-- ODS 层:贴源建表,保留原始数据
CREATE TABLE ods_orders (
id BIGINT COMMENT '订单ID',
user_id BIGINT COMMENT '用户ID',
amount DECIMAL(10,2) COMMENT '订单金额',
status STRING COMMENT '订单状态',
created_at STRING COMMENT '创建时间'
)
COMMENT '订单原始数据'
PARTITIONED BY (dt STRING COMMENT '数据日期')
STORED AS ORC;
-- DWD 层:清洗标准化
CREATE TABLE dwd_orders_clean AS
SELECT
id,
user_id,
amount,
CASE status
WHEN '1' THEN 'pending'
WHEN '2' THEN 'paid'
WHEN '3' THEN 'cancelled'
END AS status,
TO_DATE(created_at) AS order_date
FROM ods_orders
WHERE dt = '${bizdate}'
AND id IS NOT NULL
AND amount > 0;
-- DWS 层:按用户汇总
CREATE TABLE dws_user_order_daily AS
SELECT
user_id,
dt,
COUNT(1) AS order_cnt,
SUM(amount) AS total_amount,
AVG(amount) AS avg_amount
FROM dwd_orders_clean
WHERE dt = '${bizdate}'
GROUP BY user_id, dt;参数化开发
数帆支持任务参数,实现代码复用:
sql
-- 使用 ${bizdate} 参数,调度时自动替换为执行日期
INSERT OVERWRITE TABLE dwd_orders_clean
PARTITION (dt = '${bizdate}')
SELECT ...
FROM ods_orders
WHERE dt = '${bizdate}';常用内置参数:
${bizdate}— 业务日期(昨天)${today}— 今天${yesterday}— 昨天${lastweek}— 上周同天
实时数据开发
Flink SQL 开发
sql
-- 实时统计每分钟订单量
CREATE TABLE orders_stream (
order_id BIGINT,
user_id BIGINT,
amount DECIMAL(10,2),
event_time TIMESTAMP(3),
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH (
'connector' = 'kafka',
'topic' = 'orders',
'properties.bootstrap.servers' = 'kafka:9092',
'format' = 'json'
);
CREATE TABLE order_stats_sink (
window_start TIMESTAMP,
window_end TIMESTAMP,
order_cnt BIGINT,
total_amount DECIMAL(10,2)
) WITH (
'connector' = 'clickhouse',
'url' = 'clickhouse://ck:8123',
'table-name' = 'order_stats_realtime'
);
-- 1 分钟滚动窗口统计
INSERT INTO order_stats_sink
SELECT
TUMBLE_START(event_time, INTERVAL '1' MINUTE),
TUMBLE_END(event_time, INTERVAL '1' MINUTE),
COUNT(1),
SUM(amount)
FROM orders_stream
GROUP BY TUMBLE(event_time, INTERVAL '1' MINUTE);任务调度
DAG 依赖配置
任务依赖示例(电商日报)
[01:00] ods_orders_sync(同步订单数据)
↓
[02:00] dwd_orders_clean(清洗)
↓
[03:00] dws_user_order_daily(用户汇总)
↓
[04:00] ads_daily_report(日报指标)
↓
[06:00] send_email_report(发送邮件报表)调度策略
调度配置项
├── 触发方式
│ ├── 定时触发(Cron)
│ ├── 依赖触发(上游完成后触发)
│ └── 手动触发
├── 重试策略
│ ├── 失败重试次数(默认 3 次)
│ └── 重试间隔(默认 5 分钟)
├── 超时配置
│ └── 任务超时时间(超时自动告警/终止)
└── 告警配置
├── 失败告警(钉钉/邮件/短信)
└── 超时告警AI 辅助开发(2023+)
NL2SQL
用自然语言描述需求,AI 自动生成 SQL:
用户输入:
"查询上个月每天的订单量和销售额,按日期排序"
AI 生成 SQL:
SELECT
DATE(created_at) AS order_date,
COUNT(1) AS order_cnt,
SUM(amount) AS total_amount
FROM dwd_orders_clean
WHERE dt BETWEEN DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-01')
AND DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), '%Y-%m-%d')
GROUP BY DATE(created_at)
ORDER BY order_date;AI 代码补全
在 SQL 编辑器中,AI 根据上下文自动补全:
- 表名、字段名补全
- 常用 SQL 模式补全(GROUP BY、JOIN 等)
- 注释自动生成