查看原文
其他

数仓的建模和BI的建模有啥区别? by彭文华

The following article is from 大数据架构师 Author 彭文华

我现在是真的认识到:一个好问题,胜过100篇回答。因为一个问题产生的原因,是因为他在理解事情的时候,对不上号,顺不起来啊。而为什么会产生问题,本身就是一个问题。
比如这个:


为啥会有这个问题?



乍一眼看上去,这哥们是不是干活干傻了?BI(商务智能)的概念里本来就包含数据仓库的,BI的建模和数仓的建模有啥区别?不是一个东西么?
你莫不是新新新新新新来的吧?
嗯,没错,BI的确包含数仓,但是BI产品就不含数仓了。数仓负责建模,BI产品则提供固定报表、多维分析、驾驶舱等应用。
我15年前刚工作的时候,就是这个逻辑了。那时候的BI产品,除了数据库,其他的功能都自带的,连ETL工具都自带。

不过那时候数据仓库的产品不多,当时如日中天的是Teradata,巨贵无比。反而是BI产品大行其道,为了抢占市场,各大BI厂商不断增强自己的能力,ETL、任务调度、建Cube、做报表、数据展示能做的都做了。所以在绝大多数BI产品中,都设置了“主题建模”的功能,尽量减少数仓层面的依赖。
15年后的今天,得益于开源理念,很多数据仓库产品不但免费,功能也不断强大。比如咱中国人开发并开源的Apache顶级项目-Kylin,就自带Cube。这个时候你就会发现,原来的Teradata就慢慢的没落了。

所以,如果你现在去做BI项目的开发,就会发现很奇怪的事情:数仓这边要建模,这个毋容置疑。但是BI产品里,也会有一个“建模”。这不就让人头大了么?
嘿嘿,开头这哥们说的其实就是BI产品里的“建模”模块和数仓中的“建模”工作之间的联系与区别。



数据仓库建什么模?



我之前写过好多数仓建模的文章,这里就偷个懒,复制几张图过来。数据仓库建模分为4个阶段:业务建模、领域建模、逻辑建模和物理建模。通常意义上来说,我们说的建模狭义上指的是“逻辑建模”。业务建模和领域建模跟业务关系比较紧密,通常会在最开始就完成了。而物理建模就是执行一下脚本,分分钟就搞定了,比业务建模和领域建模还快呢。
而逻辑建模的时候,为了解耦,通常会把数仓进行分层设计。每一层的建模范式都不完全一样。比如:
其实上面的图也不完全正确。在传统数仓建模的时候,DWS其实也是用维度模型建模的。宽表模型是大数据环境下的产物。
啥?你问问建的模型长啥样?其实就是按照一定规则组合起来的一堆数据表。大致是这个德行的:
因为长的像星星,所以叫星型模型。除此之外,还有雪花型、星座型、cube、宽表等等。我这里有一篇文章,写的很详细:【戳我查阅:一口气讲完数据仓建模方法】,你可以去参考一下。



BI建什么模?



前面说了,此BI非彼BI。群里提问的哥们问的不是“商业智能”那个BI,而是BI产品的“BI”。
你想想,我们在数仓里建好模型了,不管是维度模型,还是宽表模型,还是Cube,然后呢?

当然是得有一个地方把这些数据展示出来了,要不放在那里生崽儿么?
这时候就轮到BI产品出马了。BI产品一端连着用户,另一端连着数据仓库。所以BI产品有一个巨大的任务,就是做业务和数据之间的翻译。这个时候就又轮到“建模”哥们出马了,在BI产品中,它是这个德行:
这是永洪网站上截的图,帮他们打个广告,支持一下国产BI产品。
这是QuickBi的说明,也是一个意思。
这个业务和数据之间的翻译工作该咋做呢?其实还是维度建模,就是设置维度和度量了。然后加上各种的个性化操作,什么传入参数了、表间关联关系了、确定维度和度量了、添加过滤条件了,甚至还可以新增维度和度量,比如以年龄字段为基础,新增一个年龄段的维度。
这些都是BI工程师做的偏业务的数据建模。建好模型之后,BI产品会把这些建模的信息保存好。当打开报表的时候,解析引擎会按照刚才建模的结果,解析成SQL语句,挨个执行。做各种查询、关联、传参、过滤,顺带则把新增维度、度量等操作也一并做了。最后把结果展示给用户。



总结



唉,不管是啥工作,都是一脑门子的官司,深究下去无穷无尽。
数据仓库的建模,目的是把数据整理好,所以重点在于实体与实体之间的关系。按照组织关系分类,自然就有星型、雪花型、星座等模型,也有为了加速存在的Cube和大数据环境特有的宽表模型。
BI产品的建模,目的是进行业务与数据之间的翻译。所以重点在于如何用现有数据满足业务的需求。于是就有了选择数据源、表间关联、传参、过滤、确定维度、确定度量、新增维度、新增度量等乱七八糟的操作。
这两个“建模”本来就是一件事情,只不过一个侧重数据的逻辑建模,一个侧重于数据的业务建模;一个是在数据仓库阶段,一个是在数据业务输出阶段;一个目的是为了数据组织和存储,一个目的是为了数据的业务表达。


    数据湖很美好,但并不被需要

    一文讲透数据仓库ODS层

    浅谈大数据的过去、现在和未来

    数据库、数据湖、数据仓库、湖仓一体、智能湖仓,分别都是什么鬼?

    为什么ClickHouse分析数据库这么强?(原理剖析+应用实践)

    解密One ID中的核心技术ID-Mapping

    到底什么是数据湖?全面解读数据湖的缘起、特征、技术、案例和趋势

    5分钟看懂:如何构建一个数据仓库?

    阿里的数据仓库建模是否也是“华而不实”?

    到底什么叫作数据集成?

    如何用最短的时间理解一项数字技术?推荐这7本最新的白皮书(大数据、云原生、区块链、联邦学习等,附下载)

    数据湖,比“数据中台”更需要重视的概念|腾研识者

    Flink + Iceberg 全场景实时数仓的建设实践

    如何理解《2020年大数据白皮书》的大数据技术最新发展趋势?  

    点击左下角“阅读原文”查看更多精彩文章,公众号推送规则变了,如果您想及时收到推送,麻烦右下角点个在看或者把本号置顶 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存