大家好,很高兴你能来阅读,过去一年多,我从事天猫国际供应商端数仓开发与数据分析工作。接下来会陆续分享这段经历中的实战问题、对应解决思路,以及数仓基础的进阶学习总结,希望能给有需要的朋友带来参考和帮助~
一、什么是数据仓库?—— 数据的“标准化粮仓”
数据仓库(Data Warehouse,简称DW)是面向分析决策、集成化、稳定化、反映历史变化的数据存储系统,并非简单的“数据容器”,核心是解决“零散数据无法高效支撑分析”的问题。
1. 核心特征(与业务数据库的本质区别)
| 特征维度 | 数据仓库 | 业务数据库(如MySQL/Oracle) |
|---|---|---|
| 核心目标 | 支撑分析决策(如“上月华东地区销售额Top3品类”) | 支撑业务交易(如“用户下单、库存扣减”) |
| 数据来源 | 多业务系统集成(订单、用户、支付、物流等) | 单一业务场景(如仅存储订单数据) |
| 数据特性 | 历史化、结构化、多维度 | 实时性、碎片化、单场景 |
| 访问模式 | 复杂查询、批量分析(如全量数据聚合) | 简单查询、高频读写(如单条订单查询) |
2. 直观理解
如果把业务数据比作“菜市场的零散蔬菜”(来自不同摊位、带泥带水、品类混杂),数据仓库就是“净菜加工厂”——将零散蔬菜(多系统数据)清洗(去重纠错)、分类(标准化)、打包(结构化存储),最终输出“可直接烹饪的净菜”(可用分析数据),供厨师(分析师/业务人员)制作菜品(决策报告)。
二、为什么要构建数据仓库?—— 解决企业数据使用的核心痛点
企业不构建数据仓库,会陷入“数据多但用不了、用不好”的困境,具体痛点及解决方式如下:
1. 痛点1:数据孤岛严重,无法联动分析
某电商企业中,“用户信息”存在于CRM系统,“订单数据”在订单系统,“支付记录”在支付系统,各系统数据格式、指标口径不一(如CRM的“用户”含潜在客户,订单系统的“用户”仅指下单客户)。
数据仓库解决方式:通过ETL(抽取-转换-加载)工具,将多系统数据抽取至仓库,统一“用户”“订单”等核心指标定义,实现“用户行为-下单-支付-复购”全链路数据联动。
- 业务库只存交易明细,没有汇总、关联的数据,分析时还要反复处理,效率极低。
2. 痛点2:数据质量差,分析结果不可信
业务系统中存在大量“脏数据”:如用户手机号为空、订单金额为负数、同一商品有3种不同名称(“华为Mate60”“Mate60”“HUAWEI Mate60”),直接用这些数据分析会得出错误结论(如误判商品销量)。
数据仓库解决方式:在数据进入仓库时,通过清洗规则(如手机号格式校验、异常值过滤)、标准化处理(统一商品名称),输出高质量“干净数据”。
- 直接操作业务系统:可能误删、误改核心数据,造成不可逆损失。
- 多人同时访问分析,也增加了数据泄露的风险。
3. 痛点3:分析效率低,占用业务资源
若直接在业务数据库中执行“统计近一年各品类销售额”的复杂查询,会占用大量数据库资源,导致用户下单、库存更新等核心业务卡顿甚至崩溃。
数据仓库解决方式:独立于业务系统,提前对数据进行汇总计算(如按日/月预聚合销售额),分析师查询时直接调用预处理数据,既提升效率(查询时间从小时级缩至秒级),又不影响业务运行。
-
不可能直接使用业务系统,不可能直接使用业务系统
-
这里非常重要,我们在数据同步的时候都经常遇到抽数,将数据库抽崩的情况。更别何况执行大量的sql查询。
-
数据分析常要跑海量数据的复杂查询,可能占满数据库资源。
-
结果就是用户查看商品慢、供应商查库存卡壳,直接影响业务运转。
4. 痛点4:无法支撑长期决策,缺乏历史视角
业务数据库为节省空间,常清理历史数据,而企业制定“年度品类规划”需要近3年的销售趋势、用户偏好变化等历史数据支撑。
数据仓库解决方式:长期存储历史数据,构建时间维度,支持“同比、环比”等历史分析,为战略决策提供数据依据。
三、为什么需要大数据岗位?—— 数据仓库的“建设者与运营者”
数据仓库不会自动建成,也无法自行产生价值,大数据岗位就是负责“从数据采集到价值输出”全链路落地的专业角色,核心解决“谁来做、怎么做”的问题。传统IT岗位(如后端开发)侧重业务功能实现,无法应对大数据的“海量(Volume)、高速(Velocity)、多类型(Variety)”特性。
简单来说,大数据岗位是“数据与业务之间的桥梁”:没有大数据开发工程师,数据无法进入仓库;没有数据仓库工程师,数据在仓库中杂乱无章;没有数据分析师/挖掘工程师,仓库中的数据就是“沉睡的资产”,无法转化为企业的营收增长、成本降低等实际价值。