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

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 数仓的建模和BI的建模有啥区别? by彭文华

产品这是彭文华的第175篇原创

我现在是真的认识到:一个好问题,胜过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产品的建模,目的是进行业务与数据之间的翻译。所以重点在于如何用现有数据满足业务的需求。于是就有了选择数据源、表间关联、传参、过滤、确定维度、确定度量、新增维度、新增度量等乱七八糟的操作。这两个“建模”本来就是一件事情,只不过一个侧重数据的逻辑建模,一个侧重于数据的业务建模;一个是在数据仓库阶段,一个是在数据业务输出阶段;一个目的是为了数据组织和存储,一个目的是为了数据的业务表达。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
6月前
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之分区表创建冷热分层后,查询语法会与原先有区别吗
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
7月前
|
SQL 搜索推荐 数据挖掘
一文详解报表工具和BI工具的区别
一文详解报表工具和BI工具的区别
|
7月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之ADB MySQL湖仓版和 StarRocks 的使用场景区别,或者 ADB 对比 StarRocks 的优劣势
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
4月前
|
数据挖掘 OLAP OLTP
深入解析:OLTP与OLAP的区别与联系
【8月更文挑战第31天】
1439 0
|
4月前
|
DataWorks 调度 数据库
实时数仓 Hologres产品使用合集之通用和计算组型有什么区别
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
存储 SQL 分布式计算
离线数仓(五)【数据仓库建模】(4)
离线数仓(五)【数据仓库建模】
|
6月前
|
SQL 存储 关系型数据库
离线数仓(五)【数据仓库建模】(1)
离线数仓(五)【数据仓库建模】
离线数仓(五)【数据仓库建模】(1)
|
7月前
|
存储 数据挖掘 大数据
大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
数据仓库建模是组织和设计数据以支持数据分析的过程,包括ER模型和维度建模。ER模型通过实体和关系描述数据结构,遵循三范式减少冗余。维度建模,特别是Kimball方法,用于数据仓库设计,便于分析和报告。事实表存储业务度量,如销售数据,分为累积、快照、事务和周期性快照类型。维度表提供描述性信息,如时间、产品、地点和客户详情。数仓通常分层为ODS(源数据)、DWD(明细数据)、DIM(公共维度)、DWS(数据汇总)和ADS(应用数据),以优化数据管理、质量、查询性能和适应性。
1802 3
|
6月前
|
SQL 存储 关系型数据库
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
120 0
离线数仓(五)【数据仓库建模】(3)
离线数仓(五)【数据仓库建模】

热门文章

最新文章