专业书籍精读 · Fundamentals of Data Engineering · 第 8 章

查询、建模与转换

Fundamentals of Data Engineering · Ch 8 · Queries, Modeling, and Transformation · Reis & Housley · 2022

EN →

这一章讲什么?

上一章把订单、支付、点击这些数据搬进了公司的数据仓库。可搬进来的只是一堆原料,就像超市后仓刚卸下的货。这一章讲的是怎么把原料变成货架上能直接拿走的商品:怎么提问(查询)、怎么定规矩(建模)、怎么加工(转换)。数据真正产生价值,就在这一步。

先说个怪事

老板问「上个月卖了多少钱」,市场部报一个数,财务部报另一个数,差了好几个百分点。没人算错——市场部把退货也算了进去,财务部只算已到账的。数字打架,往往不是算错,而是大家对「一笔订单」的理解不一样。这一章最重要的一件事,就是先把这些词的意思定死。

旧世界为什么难

核心机制直觉

带来了什么 / 该怎么选

多数团队的做法是:先和业务一起把关键名词定义清楚,用「流水账 + 名册」的方式组织数据,把加工步骤写成可以反复运行的代码统一管理;只有真需要秒级答案的地方才在流上直接计算。一句诚实的代价:前期定口径、建模型要花不少时间和沟通,跳过它会更快出第一张报表,但之后会在一次次数字打架里加倍还回来。

一句话记住

数据的价值不在搬进来,而在加工好:查询要会「少翻」,建模要先把口径定死、历史别改写,转换要写成能重做的菜谱。

想看一条查询的一生、列裁剪与分区裁剪、流上的三种窗口与水位线、范式化、Inmon · Kimball · Data Vault · 宽表四种建模、缓慢变化维、分布式 join 与 upsert 的代价,以及 dbt、Trino、Flink 的实证? → 切到精读版