数据仓库概念梳理

数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。


数据仓库是分析数据的平台,而不是创造数据的平台。我们是通过数仓去分析数据中的规律,而不是去创造修改其中的规律。因此数据进入数据仓库后,它便稳定且不会改变。
在这里插入图片描述




一、BI平台分为事实表、维表,然后两种表聚合成一个宽表。(注意这里取的BI平台是Davinci:https://edp963.github.io/davinci/)

其维表、事实表的关系图如下:

在这里插入图片描述

一个维表会对应多个事实表,而维表和事实表所有关联起来就形成一个宽表,其关系如同mysql中的外键索引,如A表中有B_id,A作为维表,B作为事实表,A(维表)可通过B_id来关联B(事实表),然后关联汇总生成的SQL就是宽表。


BI系统中可根据事实表和维度表的关系,应遵循如下两种模型的规范:星型模型和雪花型模型
星型表:反范式,数据冗余,查询效率高。
雪花型:数据不冗余,但引用层级深,维护复杂,查询效率较低。
下面举一个星型模型(体验课上课预约记录)的例子来说明如下:
在这里插入图片描述

上图以user_table_course_schedule的部分字段(user_id、table_course_schedule_id、teacher_id、gmt_create)来作为维度,并分别关联到了userinfo、tablec_course_schedule、teacherinfo这三张事实表,然后形成一张宽表。

以上面星型模型的例子,对其进行修改,举一个雪花模型例子来说明如下:

在这里插入图片描述

上面雪花模型中,学生信息事实表的orderId还继续关联了下一个层级体验课记录表,体验课报名记录表还可能会继续往下关联,对于复杂的系统而言,一般会采用雪花模型,关键层级会较多,而星型模型的关联过于单一,层级不够深,无法支持这种操作。

 
理解了上面两种模型的设计,接下来需要确定维度和指标的用法:
维度与指标的规范:
维度:维度用于关联事实表,也可用于做冗余显示(如gmt_create),用于数据检索,所以对于维度设计时,可将其进行分类(看业务扩展需要):
时间维:将时间进行维度细分,如gmt_create划分为年维度、月维度、日维度。
地域维:将地域划分为省维度、市维度、区维度。反例:把省市区 只作为一个维度,而没有拆分,后面进行筛选就不方便。
其他维度按业务进行扩招
指标:用于统计(如总和、平均数、最大值、最小值)、排序等。

可见之前做的那个daac的查询sql就是在利用不同的维度表dim和事实表fact进行雪花模型的关联,然后查出需要的事实表,查询的sql就是宽表。
宽表从字面意义上讲就是字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。需要维度和指标!而不是机械得认为把维度拆多了,就叫宽表!这个说法才是对的。




二、数据仓库分层

数据仓库架构分层设计包括STG(数据缓冲层)、ODS(数据操作层)、DWD(数据明细层)、DWS(主题汇总层)和ADM(数据应用层)。
在这里插入图片描述

1、STG层
主要完成业务系统结构化数据引入到数据中台,保留业务系统原始数据,缓冲层设计主要保持和数据源的一致性,不做任何类型转换和数据加工处理,为ODS层提供基础数据服务。
2、ODS层
对STG层数据进行类型转换或增量合并处理,得到的全量明细数据,为DWD、DWS和ADM层提供数据服务。
3、DWD层
明细宽表层,用于存放完整详细历史数据。面向业务过程建模,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。其设计目标是为后续的Data Warehouse Model提供灵活性和扩展性的基础,同时可以在DW层无法支持需求时直接为应用层提供数据。DWD层由于与业务系统耦合程度较高,其稳定性会受到业务系统的影响。
4、DWS层
存放详细历史数据的公共汇总数据层,面向分析主题建模。DWS是核心数据层,是为应用层提供足够的灵活性和扩展性的基础。
5、ADM层
提供直接面向业务或应用的数据,主要对个性化指标数据进行架构处理,如无公用性或复杂性(如指数型、比值型、排名型等指标数据)的指标数据加工。同时为方便实现数据应用、数据消费的诉求,进行面向应用逻辑的数据组装(如打宽表集市、横表转纵表、趋势指标串等)。
6、DIM维度层:主要存储公共的属性数据,比如产品类别、地理位置、时间详情等信息。综上所述,数据仓库建设的主要工作,就是对原始业务数据进行汇聚,进行分层次的数据处理,生成业务需要的数据,提供给前端业务使用。


三 、 具体的看一下数据仓库的各个层级

①STG层是为了从各个数据源接收数据,并保持和源数据的一致。

1、首先是从不同地方收集数据,一般就是客户的数据库,网页和手机端的API, 用户自己手动上传的excel。
SAP的核心产品是ERP系统,是目前世界排名第一的ERP软件,同时也有其他如供应链管理、财务、CRM、支出、人力资源管理等多个企业管理平台。致力于帮助企业高效处理整个企业范围内的数据,实现无缝的信息流。世界500强中有超过80%的公司使用SAP。中国的大型国营、民营企业 90%使用SAP。2003年9月份,SAP公司特意推出SAP Business One中文版ERP软件,专门为中国中小型企业服务。
EPR: ERP系统是企业资源计划(Enterprise Resource Planning )的简称,是指建立在信息技术基础上,集信息技术与先进管理思想于一身,以系统化的管理思想,为企业员工及决策层提供决策手段的管理平台。
CRM: 客户关系管理 ,CRM库是企业集成管理各种客户数据、整理客户行为数据及一切客户相关数据的中心,为市场分析提供依据。
OMS :订单管理系统
WMS和TMS:都是Web地图服务协议。

②进入一些数据清洗,比如类型转换,数据合并之类的存入ODS层
也就是我们常说的ETL过程:抽取,转换,加载

进入cdm层
按照阿里巴巴的数据体系,ods是数据引入层,将非结构化的数据结构化,而cdm层中包含了dim(维度表),dws(公共汇总表),dwd(明细事实表)。简单理解,dim是将需要观察的角度写出来(维度表),dws是将ods的数据汇总(事实表),dwd则是在dim和dws的基础上写出部分指标(明细宽表);

进入ads层,展示给用户看的报表之类的
接着到ADS层,进行面向应用逻辑的数据组装(如打宽表集市、横表转纵表、趋势指标串等),生成一些直接给业务用的表。(我这里接触的一般是用于生成power bi报表和tableau报表)



四 数据工厂
一般情况下,我们数据ETL过程是通过编写本地的sql存储过程或者sparksql进行代码处理的
,然后部署到服务器上自动定时运行。
或者我们也可以将这些ETL的过程放在云上运行,称作数据工厂。


这里我们看看azure微软云的架构
在这里插入图片描述


Infrastructure Architecture

The solution will use following key Azure native products:

*Azure Blob Storage: exist as landing zone for API outputs and outbound zone for exports
*Azure Data Factory: ETL tool to connect to source systems via database direct connection or API call. Load raw data into data warehouse. Schedule job and Monitor

Azure SQL DB:
*data warehouse physical carrier that contains
*staging tables with raw data,
*meta tables with meta control data,
*target tables with cleansed/transformed data,
*export tables, etc

我们可以看到,这里azure并不是直接把数据存入了stg层,而是先放入了azure data factory,再从数据工厂通过缓存blog或者直接的存入azure sql DB。
那什么是数据工厂呢,数据工厂起什么作用呢?
在大数据环境中,原始、散乱的数据通常存储在关系、非关系和其他存储系统中。 但是,就其本身而言,原始数据没有适当的上下文或含义来为分析师、数据科学家或业务决策人提供有意义的见解。
大数据需要可以启用协调和操作过程以将这些巨大的原始数据存储优化为可操作的业务见解的服务。 Azure 数据工厂是为这些复杂的混合提取-转换-加载 (ETL)、提取-加载-转换 (ELT) 和数据集成项目而构建的托管云服务。

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

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

相关文章

初入职场的你,为何频繁跳槽?

大数据统计,初入职场的人跳槽频率相当高,而对于工作了2~3年的来说,跳槽频率也就没有那么频繁了,是什么原因导致了频繁跳槽?如何避免频繁跳槽呢? 是什么原因导致了跳槽? 不适应 从学校毕业&…

【算法与数据结构】200、695、LeetCode岛屿数量(深搜+广搜) 岛屿的最大面积

文章目录 一、200、岛屿数量1.1 深度优先搜索DFS1.2 广度优先搜索BFS 二、695、岛屿的最大面积2.1 深度优先搜索DFS2.2 广度优先搜索BFS 三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、200、岛屿数量 1.1 深度优先搜…

Redis篇----第十一篇

系列文章目录 文章目录 系列文章目录前言一、Redis 如何做内存优化?二、Redis 回收进程如何工作的?三、都有哪些办法可以降低 Redis 的内存使用情况呢?四、Redis 的内存用完了会发生什么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【算法与数据结构】1020、LeetCode飞地的数量

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:   程序如下: 复杂度分析: 时间复杂度: O ( ) O() O()。空间复杂…

快速清理_卸载docker_找到不用的进程_centos磁盘爆满_清理磁盘---Linux工作笔记071

查看大文件,并且按照大小排名 cd / | du -h |sort -hr|head -30 可以看到根据不用的结果进行删除 可以看到在/data/dict目录很大,里面的都可以删除 然后再去卸载docker,要不然,没有磁盘是卸载不了的 systemctl stop docker systemctl stop docker.socket yum remove docker-…

【2024上半年数学建模推荐】2024年第九届数维杯大学生数学建模挑战赛报名通知

2024上半年数模人必打的数学建模竞赛:数维杯全国大学生数学建模挑战赛已经开始报名。 赛题难度:四颗星 含金量:国家级二类 参赛对象:在校专科、本科、研究生 推荐理由:获奖率高,赛题难度比国赛略微简单…

Qt _day1

1.思维导图 2.设计一个简单登录界面 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->setWindowTitle("原神启动"); // this->setStyleSheet("background-color:rgb(255,184,64)");this->setStyl…

XSS攻击原理与解决方法

参考: web安全之XSS攻击原理及防范_xss攻击原理与解决方法-CSDN博客 跨站脚本攻击(XSS)分类介绍及解决办法_反射型跨站脚本解决方案-CSDN博客 一、概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏…

【竞技宝】DOTA2-喀山:莫言帕克毁天灭地 IG让一追二力克Neon

北京时间2024年2月21日,喀山未来运动会DOTA2项目在昨天迎来第二个比赛日。本日第二轮第二场比赛由IG对阵Neon。本场比赛两队在前两局各取一胜,决胜局IG的防守反击多次击溃Neon,最终IG让一追二击败Neon。以下是本场比赛的详细战报。 第一局: 首局比赛,IG在天辉方,Neon在夜魇方。…

算法项目(2)—— LSTM、RNN、GRU(SE注意力)、卡尔曼轨迹预测

本文包含什么? 项目运行的方式(包教会)项目代码LSTM、RNN、GRU(SE注意力)、卡尔曼四种算法进行轨迹预测.各种效果图运行有问题? csdn上后台随时售后.项目说明 本文实现了三种深度学习算法加传统算法卡尔曼滤波进行轨迹预测, 预测效果图 首先看下不同模型的指标: 模型RM…

unity学习(33)——角色选取界面(原版)

10ARPG网络游戏编程实践(十):角色选择UI及创建面板制作(一)(流畅)_哔哩哔哩_bilibili 角色选择界面教程中是这样的!(这个美工肯定是不能拿出去卖的,但是是有…

IP协议及相关技术协议

一、IP基本认识 1. IP的作用 IP在TCP/IP模型中处于网络层,网络层的主要作用是实现主机与主机之间的通信,而IP的作用是在复杂的网络环境中将数据包发送给最终目的主机。 2. IP与MAC的关系 简单而言,MAC的作用是实现“直连”的两个设备之通信…

77、Spring、Spring Boot和Spring Cloud的关系

77、Spring、Spring Boot和Spring Cloud的关系 随着 Spring、Spring Boot 和 Spring Cloud 的不断发展,越来越多的开发者加入 Spring 的大军中。对于初学者而言,可能不太了解 Spring、Spring Boot 和 Spring Cloud 这些概念以及它们之间的关系&#xff…

10个行锁、死锁案例⭐️24张加锁分析图彻底搞懂Innodb行锁加锁规则!

10个行锁、死锁案例⭐️24张加锁分析图🚀彻底搞懂Innodb行锁加锁规则! 上篇文章 我们描述原子性与隔离性的实现,其中描述读操作解决隔离性问题的方案时还遗留了一个问题:写操作是如何解决不同的隔离性问题? 本篇文章…

linux CentOs 安装docker 推荐生产环境使用

目录 1. 在CentOs上安装docker所需的系统环境 2. 卸载旧版本 2.1 查看是否已安装docker 2.2 卸载已安装的docker 3. 安装方式 3.1 使用rpm存储库安装(推荐使用该方法) 3.2 从包中安装 4. 开始docker 1. 在CentOs上安装docker所需的系统环境 需要以下CentOS版本之一的维…

数据结构-邻接链表

介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…

测试环境搭建整套大数据系统(四:ubuntu22.4创建普通用户)

一:创建用户,修改密码,增加sudo权限。 useradd dolphinscheduler #输入密码 passwd dolphinscheduler # 配置 sudo 免密 sed -i $adolphinscheduler ALL(ALL) NOPASSWD: NOPASSWD: ALL /etc/sudoers sed -i s/Defaults requirett/#Defa…

C++ 八数码问题理解 `IDA*` 算法原则:及时止损,缘尽即散

1.前言 八数码是典型的状态搜索案例。如字符串转换问题、密码锁问题都是状态搜索问题。 状态搜索问题指由一种状态转换到到最终状态,求解中间需要经过多少步转换,或者说最小需要转换多少步,或者说有多少种转换方案。本文和大家聊聊八数码问…

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…