数仓--理论知识

名词解释

数据仓库

  • 数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的并且是时变的

主题域

  • 数仓建设的一个上层分类概念
  • 比较接近的业务过程或者属性接近内容划分为一个大的整体,称之为主题域。

数据域

  • 指面向业务,将业务过程或者维度进行抽象的集合。
  • 其中,业务过程可以概括为一个个不可拆分的行为事件,在业务过程之下,可以定义指标,维度是指度量的环境,如买家下单事件,买家是维度,为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不宜轻易变动,在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响的被包含进已有的数据域中和扩展新的数据域

数据集市

  • 数据仓库只限于单个主题的区域,例如顾客、部门、地点等。数据集市在从数据仓库获取数据时可以依赖于数据仓库,或者当它们从操作系统中获取数据时就不依赖于数据仓库。

数据清洗

对数据仓库系统无用的或者不符合数据格式规范的数据称之为脏数据。清洗的过程就是清除脏数据的过程。

数据采集

数据仓库系统中后端处理的一部分。数据采集过程是指从业务系统中收集与数据仓库各指标有关的数据。

数据转换

解释业务数据并修改其内容,使之符合数据仓库数据格式规范,并放入数据仓库的数据存储介质中。数据转换包括数据存储格式的转换以及数据表示符的转换(如产品代码到产品名称的转换)

指标

原子指标

  • 基于业务过程度量值,顾名思义是不可以再进行拆分的指标
  • 原子指标=业务过程(动作)+度量,如支付(事件)金额(度量)
  • 一般为可累加的度量值

派生指标

  • 派生指标=原子指标+业务限定【做筛选】+统计周期+维度的组合(统计粒度)
  • 举例 → 派生指标:最近一周更省份手机品类订单的总额
    • 原子指标:订单总额 (定义业务过程、度量值聚合逻辑)
    • 统计周期:最近一周(限定统计的范围 是一个特殊的业务限定)
    • 业务限定:品类为手机(限定统计范围,相当于SQL中的where条件)
    • 统计粒度:省份(定义统计粒度,相当于SQL中的group by)

衍生指标

  • 衍生指标是在一个或多个派生指标的基础上,通过各种逻辑运算符合成的。
  • 比如比率比例等等类型的指标

宽表

  • 宽表从字面意义上讲就是字段比较多的表。
  • 通常是指业务主题相关的指标、维度、属性关联在一起的表。

粒度

  • 粒度问题是设计数据仓库的一个最重要方面。
  • 粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。
  • 笼统的说,粒度就是维度的组合

度量

  • 度量是业务流程节点上的一个数值。比如销量,价格,成本等等。
  • 事实表中的度量可分为三类:完全可加,半可加,不可加
  • 完全可加的度量是最灵活,最有用的,比如说销量,销售额等,可进行任意维度汇总;
  • 半可加的度量可以对某些维度汇总,但不能对所有维度汇总
    • 差额是常见的半可加度量,它除了时间维度外,可以跨所有维度进行加法操作;
  • 还有一种是完全不可加的,例如:比率。对于这类非可加度量,一种好的方法是,尽可能存储非可加度量的完全可加分量,并在计算出最终的非可加事实前,将这些分量汇总到最终的结果集中。

口径

  • 口径就是取数逻辑(如何取数的)
  • 比如要取的数是10岁以下儿童中男孩的平均身高,这就是统计的口径。

标签

  • 标签是人为设定的、根据业务场景需求,对目标对象运用一定的算法得到的高度精炼的特征标识。
  • 可见标签是经过人为再加工后的结果
    • 如网红、白富美、萝莉。
  • 对于有歧义的标签,我们内部可进行标签区分
    • 比如:苹果,我们可以定义苹果指的是水果,苹果手机才指的是手机。

T+0与T+1

  • 概念最早来自于股市。T+0和T+1交易制度是中国股市的一种交易制度,T+0交易指的是当天买入股票可当天卖出,当天卖出股票又可当天买入。
  • 在大数据中:T+0代表实时处理的数据。T+1代表处理昨天的数据

退化维度

  • 将一些常用的维度属性直接写到事实表中的维度操作称为维度退化

维度层次

  • 维度中的一些描述属性以层次方式或一对多的方式相互关联,可以被理解为包含连续主从关系的属性层次。层次的最底层代表维度中描述最低级别的详细信息,最高层代表最高级别的概要信息。维度常常有多个这样的嵌入式层次结构

联机分析处理(OLAP OnlineAnalytical Processing )

  • OLAP是一种多维分析技术,用来满足决策用户在大量的业务数据中,从多角度探索业务活动的规律性、市场的运作趋势的分析需求,并辅助他们进行战略发展决策的制定。
  • 按照数据的存储方式分OLAP又分为ROLAP、MOLAP和HOLAP。在客户信息数据仓库CCDW的数据环境下,OLAP提供上钻、下钻、切片、旋转等在线分析机制。
  • 完成的功能包括多角度实时查询、简单的数据分析,并辅之于各种图形展示分析结果。

切片

一种用来在数据仓库中将一个维度中的分析空间限制为数据子集的技术

切块

一种用来在数据仓库中将多个维度中的分析空间限制为数据子集的技术

下钻

  • 数据明细,粗粒度到细粒度的过程,会细化某些维度
  • 下钻是商业用户分析数据的最基本的方法。下钻仅需要在查询上增加一个维度属性,附加在SQL的GROUP BY语句中。属性可以来自任何与查询使用的事实表关联的维度。下钻不需要存在层次的定义或是下钻路径。

上卷

  • 数据的汇总聚合,细粒度到粗粒度的过程,会无视某些维度

规范化

  • 按照三范式形成设计是事实和纬度表的方式管理数据称为规范化
  • 规范化常用于OLTP系统的设计

反规范化

  • 将维度的属性层次合并到单个维度中的操作称为反规范化
  • 反规范化会产生包含全部信息的宽表,形成数据冗余;实现用维表的空间换取简明性和查询性能的效果,常用于OLAP系统的设计

指标与标签的区别

概念不同

  • 指标是用来定义、评价和描述特定事物的一种标准或方式。比如:新增用户数、累计用户数、用户活跃率等是衡量用户发展情况的指标;
  • 标签是人为设定的、根据业务场景需求,对目标对象运用一定的算法得到的高度精炼的特征标识。可见标签是经过人为再加工后的结果,如网红、白富美、萝莉。

构成不同

  • 指标名称是对事物质与量两方面特点的命名;指标取值是指标在具体时间、地域、条件下的数量表现,如人的体重,指标名称是体重,指标的取值就是120斤;
  • 标签名称通常都是形容词或形容词+名词的结构,标签一般是不可量化的,通常是孤立的,除了基础类标签,通过一定算法加工出来的标签一般都没有单位和量纲。如将超过200斤的称为大胖子。

分类不同

  • 对指标的分类:
    • 按照指标计算逻辑,可以将指标分为原子指标、派生指标、衍生指标三种类型;
    • 按照对事件描述内容的不同,分为过程性指标和结果性指标;
  • 对标签的分类:
    • 按照标签的变化性分为静态标签和动态标签;
    • 按照标签的指代和评估指标的不同,可分为定性标签和定量标签;
  • 指标最擅长的应用是监测、分析、评价和建模。
  • 标签最擅长的应用是标注、刻画、分类和特征提取。
  • 特别需要指出的是,由于对结果的标注也是一种标签,所以在自然语言处理和机器学习相关的算法应用场景下,标签对于监督式学习有重要价值,只是单纯的指标难以做到的。而指标在任务分配、绩效管理等领域的作用,也是标签无法做到的。

维度和指标区别与联系

  • 维度就是数据的观察角度,即从哪个角度去分析问题,看待问题。
  • 指标就是从维度的基础上去衡算这个结果的值。
  • 维度一般是一个离散的值,比如时间或地域维度上每一个独立的日期或地区。因此统计时,可以把维度相同记录的聚合在一起,应用聚合函数做累加、均值、最大值、最小值等聚合计算。
  • 指标就是被聚合的通计算,即聚合运算的结果,一般是一个连续的值。

自然键与代理键在数仓的使用区别

  • 数仓工具箱中说维度表的唯一主键应该是代理键而不应该是自然键。有时建模人员不愿意放弃使用自然键,因为他们希望与操作型代码查询事实表,而不希望与维度表做连接操作。然而,应该避免使用包含业务含义的多维键,因为不管我们做出任何假设最终都可能变得无效,因为我们控制不了业务库的变动。
  • 所以数据仓库中维度表与事实表的每个连接应该基于无实际含义的整数代理键。避免使用自然键作为维度表的主键。

SKU与SPU

  • SPU = Standard Product Unit (标准化产品单元)
    • SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。
  • SKU=stock keeping unit(库存量单位)
    • SKU即库存进出计量的单位, 可以是以件、盒、托盘等为单位
  • 你想要一台iPhone13, 店员也会再继续问: 你想要什么iPhone 13? 64G 银色?128G 白色?
    • 每一台iPhone 13的毛重都是400.00g,产地也都是中国大陆,这两个属性就属于spu属性。
    • 而容量和颜色,这种会影响价格和库存的(比如64G与128G的价格不同,128G白色还有货,绿色卖完了)属性就是sku属性
    • spu属性:
      • 1、毛重420.00 g
      • 2、产地中国大陆
    • sku属性:
      • 1、容量: 16G, 64G, 128G
      • 2、颜色: 银、白、玫瑰金

为什么要分层

  • 分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

清晰数据结构:

  • 每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪:

  • 简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:

  • 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

把复杂问题简单化:

  • 将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常:

  • 屏蔽业务的影响,不必改一次业务就需要重新接入数据

数仓中分组的思想

  • 我们的项目中分层主要分为3层:
    • 数据贴源层(原始数据的直接映射,额外添加分区字段) ODS层
    • 数据明细层 DWD层
    • 数据聚合层 DWS层
    • 指标层(存放最终结果的) ADS层.
    • 维度层 DIM层
      在这里插入图片描述

ODS层

  • 数据贴源层
  • 对应着外部数据源ETL到数仓体系之后的表!
  • 例如
    • MySQL的业务数据,比如订单/用户/商家,都是由Kettle/Datax采集过来的
    • 点击流数据: 由Flume采集过来,经过Spark处理后放入ODS层.
    • 我们的ods层采用外部分区表,存储格式为orc

DWD层

  • 数仓明细层;
  • 一般是对ODS层的表按主题进行加工和划分;本层中表记录的还是明细数据
  • 存放事实表/维度表/临时表.这一层也是我们进行开发的时候核心层.在这一层我们会对数据进行聚合/统计等相关操作.主要还是为了方便后面进行指标的计算.

DWS层

  • 数仓汇总层
  • 主题建模,顾名思义,围绕某一个业务主体进行数据建模,将相关数据抽离提取出来.
    • 如,将流量会话按照天,月进行聚合
    • 将每日新用户进行聚合
    • 将每日活跃用户进行聚合
  • 维度建模,其实也差不多,不过是根据业务需要,提前将后续数据查询处理需要的维度数 据抽离处理出来,方便后续查询使用.
    • 如将运营位维度数据聚合
    • 将渠道拉新维度数据聚合

ADS层

  • 应用层
  • 主要是一些结果报表!
  • 这是最顶层,一般都是结果类型数据,可以直接拿去使用或者展示的数据了.也是对数据抽离分析程度最高的一层数据
  • 这一层是需求最明确的一层,根据业务需求来决定数据维度和结果分析.类似代码最外层,接口是相对最固化的.

阿里的数仓分层方式

在这里插入图片描述

数据仓库和数据集市的区别:

  • 数据仓库面向整个公司的所有数据
  • 数据集市面向某个业务部门或者业务线的数据.比如财务数据.
  • 数据仓库比数据集市要大.

数仓中表的分类

  • 数仓中的表我们分为事实表和维度表,但是我们还可以按照表中的数据是否发生改变继续进行细分:
  • 维度表:
    • 不会变化的维度: 数据一旦产生,后期不会发生改变, 比如日期维度 / 身份证号
    • 会变化的维度: 比如商品表/用户表.
  • 事实表:
    • 事务事实表
      • 事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。
      • 事务事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。用户可以通过事务事实表对事务行为进行特别详细的分析。
    • 周期快照事实表
      • 确定的周期的数据
      • 周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。
      • 周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表。周期快照事实表的维度个数比事务事实表要少,但是记录的事实要比事务事实表多。
      • 周期快照事实表的日期维度通常是记录时间段的终止日,记录的事实是这个时间段内一些聚集事实值。事实表的数据一旦插入即不能更改,其更新方式为增量更新。
    • 累积快照事实表
      • 不确定的周期的数据
      • 累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息。
特点事务事实表周期快照事实累积快照事实
时间/时期时间时期时间跨度较短的多个时点
粒度每行代表一个交易事件每行代表一个时间周期每行代表一个业务周期
事实表加载新增新增新增和修改
事实表更新不更新不更新新事件产生时更新
时间维业务日期时期末多个业务过程的完成日期
事实交易活动时间周期内的绩效限定多个业务阶段内的绩效

数仓中表的同步策略⭐⭐⭐⭐

  • 表的同步策略就是指,我们应该采用什么样的方式来同步数据.
  • 同步数据: 从MySQL中获取数据 => Hive中(ODS层) , 或者 从ODS => DW层

不会变化的维度

  • 因为数据也不会发生改变,我们全量同步1次即可.比如日期维度

会变化的维度

  • 比如商品维度,原来有一个IPhone手机,商品分类为电子产品, 在20190909的时候,将商品的分类更新为智能手机.如果这些数据发生改变,我们要不要记录? 如何记录?
  • 全量同步1次
    • 这种方式不行.丢失后续的数据变更信息.
  • 每天全量同步
    • 这种方式可以解决. 但是如果维度数据的量特别大.但是每天发生数据变更的数据量很小,这时候会产生很多的冗余数据.所以一般我们也不采用这种方式.
    • 如果数据量很小,可以采用这用方式.
  • 采用拉链表方式

一般性事实表

  • 先全量同步一次.后期每天增量同步, 比如点击流数据.

周期性事实表

  • 可以先全量同步一次
    • 新增数据: 每天新增的订单数据
    • 修改数据: 比如订单已收货/未付款等状态信息
  • 采用拉链表进行同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值