谈笑间学会数据仓库
文章平均质量分 89
MrZhangBaby
世界上并没有完美的程序,
但我们并不因此而沮丧,
因为写程序本来就是一个不断追求完美的过程。
你可以不够优秀,但不要甘于平凡。
展开
-
谈笑间学会数据仓库-为什么要维度建模?
是不是有很多人在学习数据仓库——维度建模的时候会有这种疑问呢?到底有何意义呢?请看下面通俗易懂的描述凡是建设数据仓库,一定会提到维度建模方法。这一方法是Kimball最先提出的,其最简单的描述就是,按照事实表、维度表来构建数据仓库、数据集市。在维度建模方法体系中,维度是描述事实的角度,如日期、商品、地址等,事实是要度量的指标,如用户数、销售额等。按照一般书籍的介绍,维度建模还会分为星型模型、雪花模型等,各有优缺点,但很少直接回答一个问题,也就是数据仓库为什么要采用维度建模?这个...原创 2021-08-20 17:48:58 · 788 阅读 · 0 评论 -
谈笑间学会数仓—大数据建模过程
谈笑间学会数仓—大数据建模过程首先我们先来了解一下,大数据建模都需要遵循哪些原则呢?先来列举一下建模原则高内聚和低辑合将业务相近或者相关、粒度相同的数据设计为一个逻辑或者物理模型:将高概率同 时访问的数据放一起 ,将低概率同时访问的数据分开存储。核心模型与扩展模型分离建立核心模型与扩展模型体系,核心模型包括的宇段支持常用的核心业务,扩展模型包括的字段支持个性化或少量应用的需要 ,不能让扩展模型的宇段过度侵人核心模型,以免破坏核心模型的架构简洁性与可维护性。公共处理逻辑下沉及单一越原创 2021-05-12 18:11:31 · 1302 阅读 · 2 评论 -
谈笑间学会数仓—维度层设计④
谈笑间学会数仓—维度层设计④特殊维度1.1、递归层次上篇博客已经了解了维度的层次结构,即维度属性以层次方式或一对多的方式相互关联;或者描述为不同维度之间的主从关系,比如商品和类目的关系、商品和品牌的关系等。递归层次指的是某维度的实例值的层次关系,比如淘宝类目体系,如下图所示:维度的递归层次,按照层级是否固定分为均衡层次结构和非均衡层次结构。比如类目,有固定数量的级别,分别是叶子类目、五级类目、四级类目、三级类目、二级类目、一级类目;地区,分别是乡镇/街道、区县、城市、省份、国家,对于这种具有固定数原创 2021-01-06 17:05:55 · 755 阅读 · 0 评论 -
谈笑间学会数仓—维度层设计④
谈笑间学会数仓—维度层设计④极限存储1.1、历史拉链存储历史拉链存储是指里用维度模型中缓慢变化维的第二种处理方式。这种处理方式是通过新增两个时间戳字段(start_dt 和 end_dt 命名仅供参考),将所有以天为粒度的变更数据记录下来。通常分区字段也是时间戳字段。举个例子:2020年1月1日,卖家A在淘宝网发布了B、C两个商品,前端商品表将生成两条记录t1、t2 ; 1月2日,卖家A将B商品下架了,同时又发布了商品D,前端商品表将更新记录t1,又新生产记录t3; 采用全量存储方式,在1月1日原创 2021-01-05 17:47:27 · 259 阅读 · 0 评论 -
谈笑间学会数仓—维度层设计③
谈笑间学会数仓—维度层设计③缓慢变化维数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化。与数据增长较为快速的事实表相比,维度变化相对缓慢。在一些情况下,保留历史数据没有什么分析价值;而在另外一些情况下,保留历史数据将会起到至关重要的作用。在Kimball的理论中,有三种处理缓慢变化维的方式,下面通过简单的实例进行说明。第一种处理方式:重写维度值采用此种方式,不保留历史数原创 2020-10-27 18:07:57 · 440 阅读 · 0 评论 -
谈笑间学会数仓—dim层设计②
维度整合数据仓库的定义:数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持管理人员的决策。其中集成是数据仓库的四个特性中最重要的一个。数据仓库的重要数据来源是大量的、分散的面向应用的操作型环境。不同的应用在设计过程中,可以自由决策,主要满足本应用的需求,很少会考虑和其他系统进行数据集成。应用之间的差异具体表现在如下几个方面:应用在编码、命名习惯、度量单位等方面会存在很大的差异。比如不同应用对于用户的性别编码不同,有0和1、F和M等;不同应用的用户ID含义相同,但字段名称不同原创 2020-10-14 15:49:12 · 1071 阅读 · 0 评论 -
谈笑间学会数仓—dim层设计①
谈笑间学会数仓—维度层设计①维度的基本概念维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。例如,在查询请求中,获取某类目的商品、正常状态的商品等,是通过约束商品类目属性和商品状态属性来实现的;统计淘宝不同商品类目的每日成交金额,是通过商品维原创 2020-09-25 18:11:06 · 2603 阅读 · 0 评论 -
谈笑间学会数仓—主题域&&数据域
谈笑间学会数仓—主题域&&数据域在之前的文章里虽然没有按照顺序来,但是基本上都介绍了数据仓库建设的大概流程,比如技术架构方案设计、建模方法论、数仓分层、开发规范、数仓建设中的各种事实表、维度表、事务事实表、累计快照表、周期快照表、流水表、增量表、全量表等常用的表。那么下面再来说一下,漏掉的东西。那就是数仓建设中不可缺少的一环—域的划分。域又分为主题域、数据域,如何划分呢?一起来看一下吧~为什么会有域的概念呢?首先来看看数据仓库的定义吧,数据仓库是一个面向主题的、集成的、相对稳定的、反映原创 2020-09-08 17:01:46 · 7488 阅读 · 0 评论 -
谈笑间学会数仓—开发规范
谈笑间学会数仓—开发规范文章目录谈笑间学会数仓—开发规范前言数据库/表命名规范数据库公共维表 dim公共明细层 dwd公共汇总层 dws应用数据层 ads临时存储层 tmp字段命名规范关键字字段类型规范常用系统词汇SQL 编码规范编码原则基本需求编码规范代码头部字段排序要求select 子句排列与运算符前后间隔要求子查询嵌套编写与别名定义注释总体说明表设计规范表设计分区设计表数据存储规范前言为提高开发的进度,大数据中台开发,需要一套约定的数据库表与字段的命名规范,避免在后续开发中使用原来数据库表时,因原创 2020-09-07 17:37:47 · 493 阅读 · 0 评论 -
谈笑间学会数仓—建模方法论
谈笑间学会数仓—建模方法论ER模型数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计的一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上符合3NF。数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。其具有以下几个特点:需要全面了解企业业务和数据实施周期非常长对建模人员的能力要求非常高采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统原创 2020-09-03 17:34:54 · 663 阅读 · 2 评论 -
谈笑间学会数仓—周期快照表&累积快照表
周期快照表按固定周期对事实表进行统计生成的表,按时间段保存记录,增量更新。应用场景需要统计一个季度的商品成交量怎么取做?如果用一个季度内的事实事务表进行计算,虽然可以得出结果但是效率太低,在实际生产中并不可行,因此,需要定期对指定的度量进行整合,作为周期快照表用于下游应用。一般设计事实表时,事务事实表和周期快照表是成对设计的,大部分的周期表由事务表加工产生,还有部分特殊数据是直接应用系统产生(如订单评价)。概念定义周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年原创 2020-09-01 15:15:06 · 4356 阅读 · 2 评论 -
谈笑间学会数仓—拉链表&&流水表
拉链表 && 流水表前言拉链表:维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录而已,通过拉链表可以很方便的还原出拉链时点的客户记录。流水表: 对于表的每一个修改都会记录,可以用于反映实际记录的变更。适用场景对比拉链表通常是对账户信息的历史变动进行处理保留的结果,流水表是每天的交易形成的历史;流水表用于统计业务相关情况,拉链表用于统计账户及客户的情况数据仓库之拉链表(原理、设计以及在Hive中的实现)原创 2020-08-27 18:54:08 · 1680 阅读 · 0 评论 -
谈笑间学会数仓—全量表&&增量表
全量表全量表增量表数据包含到前一天的全量数据前一天的增量数据分区不分区(ymd为当前日期)(但是也有按天全量设计的,也叫全量表)按照每一天分区保存每天所有的最新状态的数据。(1)全量表,有无变化,都要报(2)每次上报的数据都是所有的数据(变化的 + 没有变化的)一般导入数据时,不进行任何操作导入的数据就是全量表。例如:平时使用sqoop直接导入,或者load加载,不需要任何特殊的操作,全表覆盖或者先删除表再插入数据,就是全量表。以用户表为例,假设该表从2原创 2020-08-24 18:12:05 · 3603 阅读 · 0 评论 -
谈笑间学会数仓—维度表概念及设计案例
维度表维度定义从某个角度观察事实数据的窗口,存储的数据用来从某个角度描述事实。维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,它里面的数据就是一些日,周,月,季,年,日期等数据,维度表只能是事实表的一个分析角度。换句话说 维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。维度的构成维度的元素:维原创 2020-08-21 11:52:35 · 2356 阅读 · 0 评论 -
谈笑间学会数仓—表的种类和特征-事务事实表
谈笑间学会数仓—表的种类和特征-事务事实表事务事实表概念可以看做是保存某一事务的日志数据,事务一旦被提交就成为历史数据,只能以增量的方式维护。事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务记录一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。由于事实表具有稀疏性质 ,因此只有当天数据才会进入 当天的事实表中,相当于每个分区里面都是每天的数据,不包含之前的数据。事务事实表的原创 2020-08-19 11:16:26 · 735 阅读 · 0 评论 -
谈笑间学会数仓-技术架构设计
谈笑间学会-数仓技术架构设计1、前言为何要谈数据仓库技术架构设计呢?技术架构设计是建设数仓的必备因素之一,分层架构为我们捋清了数据的架构及分层规范,并没有真正落地到具体的实施?有人说技术架构有什么好设计的?直接开整呗?事实上并不是如此,成功始于计划,终于变化~总而言之,言而总之,数仓设计是需要有技术方案来落地的。那么主要包含哪些呢?离线、实时、离线+实时呗2、离线技术架构首先我们来看一波架构图吧小结离线技术架构无非包括以下几块内容的技术选型数据采集:data原创 2020-08-10 16:19:36 · 523 阅读 · 2 评论 -
谈笑间学会数仓-分层架构
谈笑间学会-数仓分层架构1、数据仓库1-1、什么是数仓呢? 数据仓库(Data Warehouse)简称DW或DWH,是数据库的一种概念上的升级,可以说是为满足新需求设计的一种新数据库,而这个数据库是需容纳更多的数据,更加庞大的数据集,从逻辑上讲数据仓库和数据库是没有什么区别的。 为企业所有级别的决策制定过程,提供所有类型数据支撑的战略集合,主要是用于数据挖掘和数据分析,以建立数据沙盘为基础,为消灭消息孤岛和支持决策为目的而创建的。1-2、为什么需要数据仓库?原创 2020-08-06 18:00:24 · 2117 阅读 · 4 评论 -
星型模型&&雪花模型
星型模型&&雪花模型星型模型星型模式是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。...原创 2020-03-31 17:39:11 · 1694 阅读 · 0 评论 -
数仓构建维表--行政区域维度表的构建
前言为啥子要花时间搞这个呢? 就是写sql的时候,想要一个省市区维表,在网上找啊找啊找,不是要钱,就是要C币,或者就是别的,竟然没有公益的,共享一下不好吗?太抠了,今天我来分享一个,哈哈... 搞个维表很简单de呦,下面说一下我做的方法:咱也用把(3W)方法来进行分析下。获取行政区域数据What?行政区域数据是什么呢?其实就是 国,省(自治区),市,区县,镇/街道,街、路...原创 2019-11-21 10:51:13 · 4056 阅读 · 7 评论 -
【数据仓库学习】 聊一聊 ETL 的设计
0x00 前言数据仓库体系里面的主要内容也写的差不多了,现在补一点之前遗漏的点。这一篇就来聊一下 ETL。文章结构先聊一下什么是 ETL。 聊一下大致的概念和一般意义上的理解。 聊一聊数据流是什么样子。因为 ETL 的工作主要会体现在一条条的数据处理流上,因此这里做一个说明。 举个具体的例子来说明。0x01 什么是 ETLETL,是英文 Extract-Transform-...转载 2019-10-22 21:26:55 · 299 阅读 · 0 评论 -
【数据仓库学习】 别人家的元数据系统是怎么设计的
0x00 前言本篇分享是元数据管理的内容,主要参考Google在2016年发布的论文《Goods: Organizing Google’s Datasets》以及 Linkedin 在2016年新开源的项目:WhereHows,当然也有笔者的一点理解。Google 的论文整体描述十分详细,可以作为理论来学习,LinkedIn 已经开源了一个版本的系统,可以看成最佳实践。两者结合起来,还是很...转载 2019-10-22 20:55:36 · 1040 阅读 · 0 评论 -
【数据仓库学习】- 如何优雅地设计数据分层?
0x00 前言一、文章主题本文主要讲解数据仓库的一个重要环节:如何设计数据分层!其它关于数据仓库的内容可参考之前的文章。本文对数据分层的讨论适合下面一些场景,超过该范围场景or数据仓库经验丰富的大神就不必浪费时间看了。数据建设刚起步,大部分的数据经过粗暴的数据接入后就直接对接业务。 数据建设发展到一定阶段,发现数据的使用杂乱无章,各种业务都是从原始数据直接计算而得。 各种重...转载 2019-10-22 20:46:07 · 330 阅读 · 0 评论 -
【数据仓库学习】- 缓慢变化维度
0x00 前言本文会分享数据仓库中和缓慢变化维度相关的内容。在看之前建议回顾一下和维度建模相关的知识点。为什么会分享这个听起来很奇怪的东西?因为站在的笔者的视角中,只要是做数据仓库的小伙伴们,在工作中基本上都会接触和维度建模相关的内容,而谈到维度建模,就少不了会和维度表打交道。我们要谈的就是维度表相关的知识点。在正式开始之前,先解释一下什么是缓慢变化维度。笔者个人理解,缓慢变化维度其实...转载 2019-10-22 20:29:46 · 304 阅读 · 0 评论 -
【数据仓库学习】拉链表是什么?
0x00 前言过了半年时间,对数据仓库的理解又有了一些不同的认识,翻出来之前写的关于拉链表的内容,稍作修改重新发出来。本篇将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式。内容全文由下面几个部分组成:先分享一下拉链表的用途、什么是拉链表。 举一个具体的应用场景,来设计并实现一份拉链表,最后并通过一些例子说明如何使用我们设计的这张表(因为...转载 2019-10-22 19:47:33 · 910 阅读 · 0 评论 -
【数据仓库学习】详解维度建模
0x00 前言前一篇已经对常用的几种数据模型做了简单的介绍,本篇主要对其中最常用的维度建模做一个深入的理解。0x01 什么是维度建模维度模型是数据仓库领域另一位大师 Ralph Kimball 所倡导,他的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling,中文名《数据仓库工具箱》,是数据仓库工程领域最...转载 2019-10-22 19:45:15 · 466 阅读 · 0 评论 -
【数据仓库学习】数据仓库中的模型设计
0x00 前言数据仓库包含的内容很多,比如系统架构、建模和方法论。对应到具体工作中的话,它可以包含下面的这些内容:以Hadoop、Spark、Hive等组件为中心的数据架构体系 调度系统、元数据系统、ETL系统这类辅助系统 各种数据建模方法,如维度建模我们暂且不管数据仓库的范围到底有多大,在数据仓库体系中,数据模型的核心地位是不可替代的。因此,本篇会对经典的数据模型做一个大致的介绍,...转载 2019-10-22 19:38:35 · 539 阅读 · 0 评论