Week-1c-Why We Need Data Warehousing
本页目录· 8 条
为什么在构建数据产品(报表/仪表板或机器学习)时,需要数据工程/数据仓库(Data Warehousing, DW)作为框架与方法来确保质量与规模化
1) 背景与目标
文稿以现实中的数据产品开发为切入点:当要做仪表板或训练机器学习模型时,直觉流程通常包含五步——先理解数据、再发现并修复错误,然后准备并构建最终产物。此流程看似合理,但当数据来源多、批次多、周期性到来时,一次性的数据临时处理就会显得脆弱。
2) 医院案例(动机)
- 数据场景:来自维州 5 家医院、为期 2 年的手术病人数据(CSV)。
- 业务需求:构建仪表板,既要横向比较各医院某指标的数量,又要展示按月变化趋势。
- 一次性处理流程:合并各院导出、查错并修错,然后做仪表板。
- 问题提示:在“数据整理(wrangling)”过程中发现了许多问题,提出**“这种做法哪里不对?”**的反思——意味着仅靠临时清洗/拼接难以长期保障质量。
3) 更现实的长期场景(而非一次性)
文稿强调,这类项目往往不是一次性:
- 未来还会有更多数据从“防火墙背后”不断到来;
- 到来的节奏可能是周期性的,也可能是偶发的;
- 新批数据会带来不同类型的问题;
- 由于新需求/新指标,提取内容可能细微变化。
这意味着单批次的临时处理在下一轮会被重复,且问题会持续出现。
4) 如果继续“临时处理”,会发生什么?
- 团队不得不重复“探索—清洗—制作仪表板”的工作流;
- 可能由不同的人在做或重做,导致产物可维护性与一致性更差;
- 质量保证(QA)难以落地,产物质量不稳定。
这些都呼唤一套可复用、可审计、可扩展的工程化流程。
5) 从软件工程得到的启示
- 单人 vs. 团队:小项目可以一人完成;大项目则过于庞大与困难,需要质量控制与协作。
- 模块化思想:软件在项目/程序/函数等多层级模块化,并依赖抽象(如 API、运算符、库函数)来避免总在底层实现细节里挣扎。模块化的核心价值在于抽象、质量控制与过程分层,其目的在于专业化分工与质量保障。
6) 将“模块化”迁移到数据工程
- 需要一个框架来支撑专业化、质量保障与抽象。
- 按数据流/数据管道划分职责:将数据清洗、建模/可视化(仪表板)以及中间环节解耦为独立过程,形成清晰的端到端流水线。
- 文稿以“数据工程框架(Data Engineering Framework)”作为统摄性概念提出,强调以工程化方式组织整个数据生命周期。
7) 结论与主张
- 流程/数据的质量保障 是首要目标;
- 为此需要一个框架;
- 需要专业化分工与清晰的职责边界;
- 数据工程工作量很大(“Data Engineering = 80%”),体现其在真实项目中的主体工作占比与重要性;
- 如果项目足够小,一个人也许能从头到尾完成,未必需要 DW;
- 但即使在小项目中,DW 仍能提供框架与方法论,因此仍然“非常重要”。
以上观点构成为什么需要数据仓库/数据工程框架的核心回答。
8) 本资料的关键要点(提炼)
- 一次性脚本 ≠ 可持续方案:数据批次与需求变化会不断带来新问题,临时合并/清洗难以维持质量与效率。
- 工程化/模块化是解法:借鉴软件工程,通过抽象与模块化把数据清洗、建模、可视化等步骤拆分并标准化,利于复用、协作与 QA。
- DW 的角色:不仅是技术栈,更是过程框架,帮助统一接口、约定与质量标准,降低“换人重做”的风险。
- 资源配置现实:在多数非玩具级项目中,数据工程占比高达 80%,足见其重要性与必要性。