← 全部文章

简单聊聊DBT

从 dbt 与 Cube 的不同侧重点出发,聊聊数据模型、Semantic Layer,以及统一业务语义对 Agent 的意义。

最近了解了 dbt 这样一个东西,比起产品本身,我觉得更有意思的是它背后的技术方向。

简单来说,它服务于数据分析。我们原本的数据可能散落在很多原始底表里,字段、关联关系和业务逻辑都比较复杂。

dbt 可以先通过 transformation,把这些原始数据整理成 view、table、incremental table 等数据模型;在这些模型之上,还可以继续通过 Semantic Layer 定义统一的 metrics、dimensions 等业务语义。

这样,上层的数据分析工具或者 Agent 就不需要每次重新理解底层表结构,也不需要自己重新计算“GMV”“活跃用户”“转化率”到底是什么意思,而是直接使用已经定义好的业务指标。

类似方向的还有 Cube。

Cube 更聚焦于 Semantic Layer 和查询这一层:先定义 metrics、dimensions、join 等业务语义,上层发起查询后,Cube 再把这些语义请求编译成实际 SQL,到数据仓库里执行;同时还可以通过预聚合、缓存等方式做查询加速。

所以如果粗略理解:

dbt 更像是:先把数据模型整理好,再在上面建立业务语义。

Cube 更像是:在数据仓库之上直接建立一层统一的业务语义和查询入口。

两者其实都指向同一个趋势:不要让 Agent 直接面对复杂的原始数据库,而是先给数据建立一层稳定、统一的语义上下文。

对 Agent 来说,这层 Semantic Layer 可能会越来越重要。