热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据仓库_手把手教你如何搭建一个数据仓库

篇首语:本文由编程笔记#小编为大家整理,主要介绍了手把手教你如何搭建一个数据仓库相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了手把手教你如何搭建一个数据仓库相关的知识,希望对你有一定的参考价值。








实用干货来了!



















手把手教你如何搭建一个数据仓库

数仓全景图镇楼 






00




建设过程





手把手教你如何搭建一个数据仓库

数仓建模的过程分为业务建模、领域建模、逻辑建模和物理建模,但是这  些步骤比较抽象。为了便于落地,我根据自己的经验,总结出上面的七个步骤:梳理业务流程、垂直切分、指标体系梳理、实体关系调研、维度梳理、数仓分层以及物理模型建立。每个步骤不说理论,直接放工具、模板和案例。










01




业务流程















1




找到公司核心业务流程,找到谁,在什么环节,做什么关键动作,得到什么结果。


手把手教你如何搭建一个数据仓库
























2





梳理每个业务节点的客户及关注重点,找到数据在哪。


手把手教你如何搭建一个数据仓库























02




分域/主题



















3




决定数仓的建设方式,快速交活,就用自下而上的建设。要全面支撑,就顶层规划,分步实施,交活稍微慢点。


手把手教你如何搭建一个数据仓库




























4





同时按照业务领域划分主题域。主题域的划分方法有:按业务流划分(推荐)、按需求分、按职责分、按产品功能分等。


手把手教你如何搭建一个数据仓库



























03




指标体系























5




指标的意义在于统一语言,统一口径。所以指标的定义必须有严格的标准。否则如无根之水。


手把手教你如何搭建一个数据仓库


指标可分为原子指标、派生指标和衍生指标,其含义及命名规则举例如下:


手把手教你如何搭建一个数据仓库
































6





依照指标体系建设标准,开始梳理指标体系。整个体系同样要以业务为核心进行梳理。同时梳理每个业务过程所需的维度。维度就是你观察这个业务的角度,指标就是衡量这个业务结果 坏的量化结果。手把手教你如何搭建一个数据仓库


请注意,此时不能被现有数据局限。如果分析出这个业务过程应该有这个指标,但是没有数据,请标注出来,提出收集数据的需求。



























04




实体关系























7




每个业务动作都会有数据产生。我们将能够获取到的数据,提取实体,绘制ER图,便于之后的维度建模。


手把手教你如何搭建一个数据仓库




































8





同样以业务过程为起点向下梳理,此时的核心是业务表。把每张表中涉及的维度、指标都整理出来。


手把手教你如何搭建一个数据仓库



























05




维度整理



























9




维度标准化是将各个业务系统中相同的维度进行统一的过程。其字段名称、代码、名字都可能不一样,我们需要完全掌握,并标准化。


手把手教你如何搭建一个数据仓库


维度的标准尽可能参照国家标准、行业标准。例如地区可以参照国家行政区域代码。


另外,有些维度存在层级,如区域的省、市、县。绝大多数业务系统中的级联就是多层级维度。





































06




数仓分层












10





数据仓库一般分为4层,名字可能会不一样,但是其目的和建设方法基本一致:


手把手教你如何搭建一个数据仓库


每一层采用的建模方法都不一样,其核心是逐层解耦。越到底层,越接近业务发生的记录,越到上层,越接近业务目标。































11




依托数仓分层的设计理论,根据实际业务场景,我们就可以梳理出整体的数据流向图。这张图会很清晰的告诉所有人,数据从那来,到哪里去,最终提供什么样的服务。


手把手教你如何搭建一个数据仓库

















07




模型建立






































12





此时才真正进入纯代码阶段。数仓、ETL工具选型;ETL流程开发;cube的建立;任务调度,设定更新方式、更新频率;每日查看日志、监控etl执行情况等等。


手把手教你如何搭建一个数据仓库


前面梳理清楚了,ETL会变的非常清晰











私货




1、数仓建设必须从业务中来,到业务中去;


2、数仓分层的目的是业务解耦;


3、无论哪种建模方式,其核心是业务实体;


4、按领域建设能快速交活,后遗症将会在2年之后爆发,且难以解决;


5、数仓建设应该把75%的时间投入到设计阶段,如果不是,那你就惨了;


6、数仓本身也可以迭代。


7、传统数仓并没有一种叫做“宽表模型”的模型,大数据时代新诞生的名词,因为很多大数据组件join代价极高。实际上是范式退化。














猜你喜欢



1、


2、


3、


4、















推荐阅读
  • 数据仓库中基本概念
    一、数据仓库数据仓库(DataWarehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于支持管理人员的决策面向主题主题就是类型的意思。传统数 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 大数据环境下的存储系统构建:挑战、方法和趋势
    大数据环境下的存储系统构建:挑战、方法和趋势陈游旻,李飞,舒继武清华大学计算机科学与技术系,北京100084摘要:互联网规模的迅速扩展促使 ... [详细]
  • 2022.4.2学习成果
    Flink中的编程模型4.1编程模型在Flink,编程模型的抽象层级主要分为以下4种,越往下抽象度越低,编程越复杂,灵活度越高。这里先不一一介绍,后续会做详细说明。这4层中,一般用 ... [详细]
  • 谁说QLC闪存不堪大用!Intel 670p SSD深度揭秘
    ssd品牌众多,intel可以说是非常优秀的那一个,早些年的x25系列至今都是让人津津乐道的经典,不过近些年,intel固态存储的主要精力转向了企业、数据中心市场,消费级领域产品并 ... [详细]
author-avatar
海尔兄弟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有