在瞬息万变的商业环境中,每一位业务决策者都在追问:我们的业务是在增长还是萎缩? 过去,分析师们需要手动编写复杂 SQL、反复核对数据,才能得到一份同环比报告。现在,我们的指标平台全新升级,让你零代码、一键获取精准同环比分析,让数据洞察更高效、决策更精准。
一、功能背景:从 “看数” 到 “看懂数” 的必然升级
1. 业务痛点
效率低下:分析师需手动编写多表关联 SQL,计算同环比耗时耗力,一份报告往往需要数小时。
易出错:人工计算易出现日期偏移、公式错误等问题,导致数据失真,误导决策。
场景受限:传统查询仅能返回指标原始值,无法直观体现业务趋势变化,难以满足精细化运营需求。
2. 需求场景
以本次需求为例:
- 查询粒度:月粒度
- 时间范围:2026-01 至 2026-03
- 查询指标:某银行贷款余额
- 同环比类型:月环比增长值
业务方希望直观看到:2026 年 1-3 月的贷款余额,环比上月分别增长了多少,从而快速评估业务表现。
二、技术方案:基于 SQL 自关联的高效实现
核心思路:表自关联法
我们采用数据自关联的技术方案,将当前周期与对比周期的数据在同一行进行关联计算,完美兼容 Doris、StarRocks、Trino 等主流引擎。
🔍 改造前后 SQL 对比
select
res_idx_drps2.drps2 as drps2,
res_idx_drps2.pt as pt
from (
select date_format(t0.order_date, '%Y-%m') as pt, round(coalesce(sum(order_amount), 0), 2) as drps2
from internal.AI_demo_index_0721.fact_orders_new t0
where (t0.order_time is not null
and ((t0.order_date between date('20260101') and date('20260331'))))
group by date_format(t0.order_date, '%Y-%m')) res_idx_drps2
order by pt ASC
limit 0,1001
-- 这里基本还是原始查询sql,只加了一层with as语法方便后续做连接,以及where的条件变更
WITH ori_data_table AS (
select
res_idx_drps2.drps2 as drps2,
res_idx_drps2.pt as pt
from (
select date_format(t0.order_date, '%Y-%m') as pt,round(coalesce(sum(order_amount), 0), 2) as drps2
from internal.AI_demo_index_0721.fact_orders_new t0
where (t0.order_time is not null and
-- 这里除了会查询原始的查询时间范围,还会根据同环比的配置来查询所需要比较的时间范围的数据
((t0.order_date between date('20260101') and date('20260331')) or
(t0.order_date between date('20251201') and date('20260228'))))
group by date_format(t0.order_date, '%Y-%m')) res_idx_drps2)
-- 这里的查询都是新加新构建的
SELECT
-- 同环比的表达式
(b1.drps2 - b3.drps2) as drps2_month_on_year_grow,
-- b1的pt还是原始的查询pt
b1.pt
FROM ori_data_table b1
-- 这里会有1个或多个left join,比如这里是月同比那就是减去一个月
LEFT JOIN ori_data_table b3 ON b1.pt = date_format(date_add(str_to_date(concat(b3.pt, '-01'), '%Y-%m-%d'), INTERVAL 1 MONTH), '%Y-%m')
-- 如果同时还查询了季同比,那就需要再left join一个b表,on条件是减去3个月
-- LEFT JOIN ori_data_table b4 ON b1.pt = date_format(date_add(str_to_date(concat(b4.pt, '-01'), '%Y-%m-%d'), INTERVAL 3 MONTH), '%Y-%m')
-- 需要再限制一下pt的最终范围,因为会存在单独只查询同环比指标,那多余的pt需要过滤掉
WHERE b1.pt between '2026-01' and '2026-03'
-- order by做了自定义排序的适配,其中原值和pt恒定从b1表取值,其余的直接使用as后的字段别名
order by b1.pt ASC,drps2_month_on_year_grow DESC,b1.drps2 ASC
limit 0,1001
📊 技术实现图解
关键技术亮点
- 多引擎兼容:基于标准 SQL 语法,完美适配 Doris、StarRocks、Trino 等引擎,无需额外改造。
- 灵活扩展:支持日 / 月 / 季 / 年等多种粒度,以及值 / 增长值 / 增长率等多种同环比类型。
- 性能优化:通过 CTE 预汇总 + 精准时间过滤,避免全表扫描,保证查询性能。
- 空值安全:使用 coalesce 处理空值,避免计算错误。
三、业务价值:让数据驱动决策更高效
1. 效率提升:从 “小时级” 到 “秒级”
告别手动 SQL:业务人员无需懂技术,在界面上勾选 “同环比” 类型,即可一键获取结果。
节省人力成本:替代了分析师 2 小时 / 次的手工核算工作,让团队聚焦更有价值的分析。
2. 决策精准:让趋势一目了然
直观洞察:同环比指标直接反映业务变化,例如 “2026 年 1 月贷款余额同比增长 500 万”,比单纯看数字更有指导意义。
风险预警:通过环比波动及时发现业务异常,例如 “本月环比下降 10%”,快速定位问题并干预。
3. 场景全覆盖
经营分析:销售、财务、运营等部门均可快速获取业绩同环比,评估目标完成情况。
指标监控:在看板、报表中直接展示同环比,实现业务数据的实时监控。
汇报材料:一键生成标准化同环比报告,大幅提升汇报效率和专业性。
四、结语
同环比分析是业务监控的 “晴雨表”,它让冰冷的数据变成有温度的洞察。我们希望通过这次功能升级,让每一位业务伙伴都能轻松看懂数据、快速做出决策,共同推动业务高质量增长。