数据治理系列:数仓建模之数仓主题与主题域

news2025/8/9 5:36:19

背景:

数据仓库之父 Bill Inmon 将数据仓库描述为一个面向主题的、集成的、稳定的、反应历史变化的数据集合,用于支持管理者的决策过程。

从上面的引言里面,我们其实可以知道主题在数仓建设里面绝对是很重要的一环,这的确是的。数仓在建设过程中,对数据的组织管理上,不仅仅要进行横向的分层,也需要根据业务情况进行纵向的主题域划分。看到这里可能就有疑问了,上面明明说的是面向主题,怎么又突然说到主题域了,这里就延伸出主题和主题域的关系了。

下面我就围绕数仓主题、主题域以及两者之间关系、划分方式等,进行更详细的阐述。

 一、数仓主题是什么?主题域又是什么?

1.数仓主题是什么?

数仓主题(Subject) 是在较高层次上将企业信息系统中某一分析对象(重点是分析的对象)的数据进行整合、归类并分析的一种范围,属于一个抽象概念,简单点说每一个主题对应一个宏观分析领域。

下面举例说明一下:对于一个erp系统而言,"销售分析"就是一个分析领域,这个"销售分析"所涉及到的分析对象有商品、供应商、顾客、仓库等,那么数仓主题就确定为商品主题、供应商主题、顾客主题、仓库主题"销售分析"就可以作为一个主题域;

如果"产品分析"是一个分析领域,"产品分析"所涉及到的分析对象为商品、地域、时间、类别等,那么数仓的主题可以确定为商品主题、地域主题、时间主题、类别主题,"产品分析"可以作为一个主题域。

2.数仓主题域是什么呢?

主题域通常是联系较为紧密的数据主题的集合,可以根据业务的关注点,将这些数据主题划分到不同的主题域,这种划分个人感觉与Kimball思想更为相似,自下而上的方式,根据业务需求分析视角进行划分。

其实这里市面上,也有一些不同的描述,上面对主题域的描述被归于集合论,还有一种叫做是边界论,这里稍微扩展下:

边界论的论点是 “主题域是对某个主题进行分析后确定的主题的边界“,这点个人感觉和 Inmon 指导思想类似,理清主题之间的边界,由ER模型进行逻辑转化,对某一主题域的分析,需要先确定这个主题的关系边界,然后再进行逻辑建模。

我的话觉得两者并不矛盾,只是所站的视角不同,边界论是先从细微处也就是微观延伸到宏观,而集合论则是从宏观到微观的过程。

二、主题的划分

主题的划分和设计是对主题域进一步的分解,细化的过程。主题域下面可以有多个主题,主题还可以划分成更多的子主题,主题和主题之间的建设可能会有交叉现象,而实体则是不可划分的最小单位。

主题域、主题、实体的关系如下图所示:

可以显而易见的看出,主题域是一个更大的概念,主题是略次之,实体最小,这里的实体表示的是实体对象(对应企业中某一宏观分析领域所涉及的分析对象),我的理解在维度建模的方法论上也可以说实体和维度某些概念是相似的。

三、主题域划分方法 

在进行数据仓库设计时,一般是先基于一个主题或某部分主题进行优先建设,所以在大多数数据仓库的设计过程中都有一个主题域的选择过程,主题域的确定必须由最终用户和数据仓库的设计人员共同完成。

而在划分主题域时,大家的切入点不同可能会造成一些争论、重构等的现象,考虑的方法有下面一些:

按照所属系统划分:业务系统有几种,就划分几种

1.按照业务(功能模块/业务线)或业务过程划分 

比如一个靠销售广告位置的门户网站主题域可能会有广告域,客户域等,而广告域可能就会有广告的库存,销售分析、内部投放分析等主题;

2.按照部门划分 

比如公司里面的人力、财务、销售、运营等,运营域中可能会有工资支出分析、活动宣传效果分析等主题。

 3.按照行业案例分析划分

在某些行业,比如电信、金融都是最早建设数仓的行业,都有一些规范,比如IBM 公司的 BDWM 九大金融主题模型,Teradata 公司的 FS-LDM 十大金融主题模型,都是行业应用比较广泛的标准,如果是这两个行业就可以参考构建自己的企业数据仓库模型规范。

         

总而言之,切入的出发点逻辑不一样,就可以存在不同的划分逻辑。在建设过程中可采用迭代方式,不纠结于一次完成所有主题的抽象,可先从明确定义的主题开始,后续逐步归纳总结成自身行业的标准模型。

四、数据域是什么?主题域之间的关系?

在很多文档上都有说数据域,反而没有主题域的概念,那数据域到底是什么,又和主题域什么关系呢?

我自己在网上也搜索了很多,也没查到对两者的来源和区别说明让我满意的,但是我在看《阿里大数据之路》和 阿里的官方相关文档 介绍上,看到了这个词,下面可以看下引用的阿里对数据域的介绍:

数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。为保障整个体系的生命力,数据域需要抽象提炼,并长期维护更新。在划分数据域时,既能涵盖当前所有的业务需求,又能让新业务在进入时可以被包含进已有的数据域或扩展新的数据域。数据域的划分工作可以在业务调研之后进行,需要分析各个业务模块中有哪些业务活动。

我个人理解其实主题域和数据域差异不大,在实际过程中可以把主题域和数据域都当做一种域来处理了,不必纠结。 

当我我也查到网上,有人总结的一段话,是将两者描述为一种包含关系,姑且可以看下:

主题域:面向业务过程,将业务活动事件进行抽象的集合,如下单、支付、退款都是业务过程,针对公共明细层(DWD)进行主题划分。数据域:面向业务分析,将业务过程或者维度进行抽象的集合,针对公共汇总层(DWS)进行数据域划分。

五、主题域及主题划分的准则

为保证整个数仓体系的生命力,数据域需要抽象提炼,长期维护及更新,但不要轻易变动,在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务接入时无影响的包含进已有的数据域中或者扩展出新的数据域,这是划分的一个准则。

特别说明的是,主题域是无法一次划分完整的,在大多数数据仓库的设计过程中都有一个主题域的选择过程。业务一直发展的,设计之初就想着一次把所有主题全部划分完整,是不太可能,也不太适用的,我们可以遵循上面说的划分主题域的准则,以不断迭代的方式进行。

六、案例介绍

1.马蜂窝数仓主题、主题域划分案例

以马蜂窝订单交易模型的建设为例,基于业务生产总线的设计是常见的模式,首先调研订单交易的完整过程,定位过程中的关键节点,确认各节点上发生的核心事实信息。

 2.网易云音乐数仓主题、主题域划分案例

网易云音乐将一级主题域划分为参与者、服务及产品,版权及协议、公共、事实这5个大的主题域,二级细节分类按照业务过程抽象获得。

 3.个人工作中的案例介绍

之前在一家互联网医疗公司工作,主题域的划分是按照部门bu进行划分的,这种方式适合较大的集团公司,各个事业部或者业务交叉不大的,不同的bu使用不同的数据域,这种架构它是一种小型的、部门级数据仓库,企业的不同部门有不同的 “主题域”,因而就有不同的独立性数据集市。

实际操作是按照部门划分了独立的数据集市,也就是主题域之后,再利用业务过程抽象出细分的主题。

 a.扩展下独立性数据集市的概念

独立型数据集市的实质,是为了满足企业内各部门的分析需求而建立的微型数据仓库。有些企业在实施数据仓库项目时,为了节省投资,尽快见效,针对不同部门的需要,分步建立起这类数据集市,以解决一些较为迫切的问题。

但是,当多个独立的数据集市增长到一定规模后,由于没有统一的数据仓库协调,企业只会又增长出一些新的信息孤岛,仍然不能以整个企业的视角来分析数据,所以就延伸出另外一种企业级的数据仓库架构,后面有时间再单独分析这块。

4.我的一些建议

结合我参与过的数仓项目建设经验和踩过的坑,对于数仓主题、主题域划分个人比较推荐按照业务系统划分或者bu部门来划分主题域(一级主题),这样的话边界较为清晰,数据仓库开发过程也不会因为模型主题的归属引发扯皮和不同意见,然后根据各个系统中的业务过程抽象整合出主题(叫二级主题域也可以)。

总结

数仓建设是一整套方法论,但方法论不一定是真理,每个公司都有自己的业务场景及需求,方法论或别人的方案不一定适用自己的公司,我们需要学习利用这些方法论,然后结合自己公司实际的业务场景来制定自己的主题及主题域划分规范。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/34157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

警惕,11月这6本期刊已被剔除SCI/SSCI

2022年11月22日晚,科睿唯安更新了Web of Science核心期刊目录,SCIE/SSCI期刊数据库剔除(Dropped)或停止检索(Ceased)了6本期刊,被剔除的6本期刊中,有4本期刊是信息更改,其中1本期刊更改了名称和ISSN号,2本期…

S4 image save:save_image_lzo函数分析

save_image_lzo函数分析 save_image_lzo在S4中运行,运于保存image数据,函数的调用逻辑如下: hibernate()->swsusp_write()->save_image_lzo()1. 基本流程 该函数实现了S4中内核image压缩的功能,大致流程如下图所示&#…

35+程序员该怎么办?有哪些破局方法?

在互联网行业一直有一种说法,如果35岁还没到管理岗,基本就是被裁的命运了。作为互联网行业的主力军,程序员的职业发展,也被人总结成,三年升高工、七年做架构、十年送外卖。虽然是个段子,也透露了大家对于年…

Python列表类型详解

今天继续给大家介绍Python相关知识,本文主要内容是Python列表类型 一、列表类型定义与创建 在Python中,列表类型是序列类型的一种,也是一种非常重要、非常常用的数据类型。列表使用方括号[]或list()函数创建,列表中的元素使用逗…

如何转变固定资产管理方式,让企业降本增效?

作为企业资产的重要组成部分,固定资产管理直接影响到企业的运营和核心的支出。固定资产的科学管理是企业管理者很关心问题。传统的纸质表格固定资产管理方式,通常是企业在成立之初采取的方式。因为成立之初企业需要节省成本,而且资产数量和种…

Android入门第33天-Android里的弹出式对话框

简介 Android Studio里在4.0前有一种ProgressDialog,这个已经淘汰了。我们完全可以使用ProgressBar来取代。但是还有一种Dialog叫PopWindow,它是一种“可阻塞式Dialog”。即弹出后除非你给它一个“动作”否则就一直显示在那。 今天我们就来看看这种Dia…

python面向对象(下)

python面向对象下封装封装的方法获取私有属性继承单一继承语法格式同名的情况私有属性的调用方法多重继承语法格式小例子同名的情况多态持续更新中~~~~~~~~~封装 封装是面向对象的核心思想。它是指将对象的属性和行为封装起来,其载体就是类,类通常对客户…

linux搭建git服务器,windows客户端配置git

Linux服务器配置之Git服务器搭建步骤: 一、配置环境 1、服务器:CentOS 8.2(64位) Git (version 2.27.0) 2、客户端:Windows 10 (64位) Git(version 2.38.…

基于深度学习的AI绘画为何突然一下子火了?

CLIP |Midjourney | dreamstudio AIGC | Stable Diffusion | Imagen 随着Disco、Midjourney、dreamstudio 、AIGC、Stable Diffusion、Imagen、深度学习、高性能计算、数据分析、数据挖掘等技术的快速发展,AI绘画技术得到迅速发展。 即使今年年初的AI绘…

Redis String类型使用方法

String 类型 String 类型,也就是字符串类型,是Redis中最简单的存储类型。 其value是字符串,不过根据字符串的格式不同,又可以分为3类: string:普通字符串int:整数类型,可以做自增、…

国际站、速卖通、Lazada店铺运营技巧?如何提升销量?

现在国际站、速卖通、Lazada平台开店的卖家越来越多,如何让店铺稳定的使用下去,是每一个卖家都需要思考的问题。现在我们一起来看一看,有哪些运营上需要注意的事项。 1选择产品 不管什么平台都是一样,产品是根本,只有…

Handler 原理

线程的应用场景 Android是单线程模型,Activity、Service、Broadcast等组件的创建,都是在主线程完成的,即UI线程。但如果需要执行一些耗时的操作时,比如:I/O的读写、大文件的读写、数据库操作以及网络上传和下载等操作都…

Linux登陆配置虚拟机

启用虚拟机一、启动虚拟机1、登录虚拟机2、查看IP地址3、能否PING通外网二、配置静态IP地址1、修改网卡配置文件2、重启网络服务3、重启虚拟机4、查看修改后的IP地址5、测试虚拟机能否Ping通外网三、测试宿主机与虚拟机能否相互Ping通1、测试宿主机能否Ping通虚拟机2、测试虚拟…

信创产业多点开花,AntDB数据库积极参与行业标准研制,协同价值链伙伴共促新发展

11月,AntDB数据库积极参与多项数据库行业标准研讨会,助推行业规范建立;凭借领先的技术研发能力与企业创新能力,在今年9月入选了《2022爱分析数据智能厂商全景报告》,此次又凭借在信创市场的深入推广,入选《…

反转链表问题的递归解法

目录 一、反转整个链表 二、反转部分链表 一、反转整个链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 首先在方法中我们需要判断递归终止的情况,如果headnull或者head.nextnull,那么我们就可以直接返回hea…

【快速上手系列】保姆级Layuimini与SSM的联合使用教程(数据表格操作)

【快速上手系列】保姆级Layuimini与SSM的联合使用教程(数据表格操作) 使用步骤 导入layuimini 下载layuimini文件 这个并不是直接运行的,需要用HBuilder导入 layuimini的项目路径 我用的是iframe版,个人更喜欢这种的&#x1…

Git -- submoudule子模块使用

文章目录子模块的作用添加子模块拉取带子模块的项目修改子模块代码子模块的作用 通常情况下,我们做项目时会有几个业务功能区分比较明确的模块,比如简单来说,一个项目我们可以分为认证授权模块、工具类模块、常规业务模块。 而像认证…

【外卖项目实战开发一】

文章目录1、软件开发整体介绍2、外卖项目介绍3、环境搭建数据库环境搭建创建数据库执行SQL脚本数据表maven项目搭建添加依赖:application.yml配置application启动类4、后台登录功能开发需求分析代码开发5、后台退出功能开发1、软件开发整体介绍 软件开发流程 角色分工 软件…

基于JAVA的企业人力人事资源管理系统OA,部门、人员、薪资、招聘功能齐全的项目【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86427647 摘要 随着知识经济的崛起,掌握了高新技术和具有现代管理理念的人已成为经济发展的原动力。一个企业要在市场竞争中取得优势地位,依靠的主要不是物质资源&…

FCPX插件:Stupid Raisins Title Pop (78个动画标题+2个额外背景)

fcpx插件:Stupid RAIsins Title Pop for Mac激活版是兼容Final Cut Pro x的一款动画标题字幕插件。Stupid RAIsins Title Pop mac版包含78个fcpx动画标题2个额外背景,可以快速拖放编辑,使用基本,连续,充满活力&#xf…