Skip to content

数据开发

开发环境

数帆提供基于 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} — 上周同天

实时数据开发

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 等)
  • 注释自动生成

网易智企产品解决方案知识库