往期推荐
名词汇总
实体
- 实体是指依附的主体,就是我们分析的一个对象,比如分析华为手机近半年的销售量是多少,那华为手机就是一个实体;我们分析用户的活跃度,用户就是一个实体。
- 实体可以是现实中不存在的,比如虚拟的业务对象,活动,会员等都可看做一个实体。
- 实体的存在是为了业务分析,作为分析的一个筛选的维度,拥有描述自己的属性,本身具有可分析的价值。
维度
维度就是看待问题的角度,分析业务数据,从什么角度分析,就建立什么样的维度。所以维度就是要对数据进行分析时所用的一个量,比如分析产品销售情况,可以选择按商品类别来进行分析,这就构成一个维度,把所有商品类别集合在一起,就构成了维度表。
度量
度量是业务流程节点上的一个数值。比如分析产品销售情况,产品ID、生产时间、生产商就是维度,而销量、价格、成本这些可度量的值就是度量。
事实表
订单金额就是度量值,因此事实表=维度+度量
粒度
- 业务流程中对度量的单位,比如商品是按件记录度量,还是按批记录度量。
- 例如:数仓建设中,我们说这是用户粒度的事实表,那么表中每行数据都是一个用户,无重复用户;例如还有销售粒度的表,那么表中每行都是一条销售记录。
- 选择合适的粒度级别是数据仓库建设好坏的重要关键内容,在设计数据粒度时,通常需重点考虑以下因素:
1. 要接受的分析类型、可接受的数据最低粒度和能存储的数据量;
2. 粒度的层次定义越粗,就越不能在该仓库中进行更细致的分析;
3. 如果存储资源有一定的限制,就只能采用较粗的数据粒度划分;
4. 数据粒度划分策略一定要保证:数据的粒度确实能够满足用户的决策分析需要,这是数据粒度划分策略中最重要的一个准则;
口径
口径就是取数逻辑(如何取数的),比如要取的数是10岁以下儿童中男孩的平均身高,这就是统计的口径,类似于要统计的数据范围。
指标
指标是口径的衡量值,也就是最后的结果。比如最近七天的订单量,一个促销活动的购买转化率等。一个指标具体到计算实施,有以下几部分组成:
- 指标加工逻辑:比如count ,sum, avg 维度,比如按部门、地域进行指标统计,对应sql中的group by
- 业务限定/修饰词:比如以不同的支付渠道来算对应的指标,微信支付的订单退款率,支付宝支付 的订单退款率 。对应sql中的where。
除此之外,指标还可以分为如下几种:
- 原子指标:基本业务事实,没有业务限定词、没有维度。比如订单表中的订单量、订单总金额都算原子指标。
- 业务方更关心的指标是有实际业务含义可以直接取数据的指标。比如店铺近1天订单支付金额,这就是一个派生指标,会被直接在产品上展示给商家看。 但是这个指标却不能直接从数仓的统一中间层里取数(因为没有现成的事实字段,数仓提供的一般都是大宽表)。需要有一个桥梁连接数仓中间层和业务方的指标需求,于是便有了派生指标。
- 派生指标:维度+修饰词+原子指标。店铺近1天订单支付金额,店铺是维度,近1天是一个时间类型的修饰词,支付金额是一个原子指标; 维度:观察各项指标的角度; 修饰词:维度的一个或某些值,比如维度性别下,男和女就是2种修饰词。
- 衍生指标:比如某一个促销活动的转化率就是衍生指标,因为需要促销投放人数指标和促销订单数指标进行计算得出。
标签
- 标签是人为设定的、根据业务场景需求,对目标对象运用一定的算法得到的高度精炼的特征标识。
- 可见标签是经过人为再加工后的结果,如网红、下头男、小仙女。对于有歧义的标签,我们内部可进行标签区分,比如:苹果,我们可以定义苹果指的是水果,苹果手机才指的是手机。
自然键
由现实中已经存在的属性组成的键,它在业务概念中是唯一的,并具有一定的业务含义,比如商品ID, 员工ID。
以数仓角度看,来自于业务系统的标识符就是自然键,比如业务库中员工的编号。
持久键
保持永久性,不发生变化。有时也被叫做超自然持久键。比如身份证号属于持久键。 自然键和持久键区别:举个例子就明白了,比如说公司员工离职之后又重新入职,他的自然键也就是员工编号发生了变化,但是他的持久键身份证号是不变的。
代理键
不具有业务含义的键。代理键有许多其他的称呼:无意义键、整数键、非自然键、人工键、合成键等。 代理键就是简单的按照顺序序列生产的整数表示。产品行的第1行代理键为1,则下一行的代理键为 2,如此进行。代理键的作用仅仅是连接维度表和事实表。
退化维度
- 退化维度,就是那些看起来像是事实表的一个维度关键字,但实际上并没有对应的维度表,就是维度属性存储到事实表中,这种存储到事实表中的维度列被称为退化维度。与其他存储在维表中的维度一样, 退化维度也可以用来进行事实表的过滤查询、实现聚合操作等。
- 那么如何定义退化维度?比如说订单ID,这种量级很大的维度,没必要用一张维度表来进行存储,而我们进行数据查询或者数据过滤的时候又非常需要,所以这种就冗余在事实表里面,这种就叫退化维度。
下钻
这是在数据分析中常见的概念,下钻可以理解成增加维的层次(升维),从而可以由粗粒度到细粒度来观察数据,比如对产品销售情况分析时,可以沿着时间维从年到月到日更细粒度的观察数据。从年的维度可以下钻到月的维度、日的维度等。
上卷
知道了下钻,上卷就容易理解了,它俩是相逆的操作(降维),所以上卷可以理解为删掉维的某些层,由细粒度到粗粒度观察数据的操作或沿着维的层次向上聚合汇总数据。
维度立方体
维度立方体包含了下钻和上卷的所有操作,站在多个维度角度取看待事情,那么就会有不同的结果,所以维度立方体统计可以满足任何维度需求,不过缺点是结果过多,导致程序运行速度大大降低。
数据集市
数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。其实就是从数据仓库中抽取出来的子集。
名词关系
实体表、事实表、维度表的联系
在Kimball维度建模中有维度与事实,在Inmon范式建模中有实体与关系,事实表和实体表之间有怎样区别与联系,先看下它们各自概念:
- 维度表:维度表可以看成是用户用来分析一个事实的窗口,它里面的数据应该是对事实的各个方面描述,比如时间维度表,地域维度表,维度表是事实表的一个分析角度。
- 事实表:事实表=维度+度量,事实表其实就是通过各种维度和一些指标值的组合来确定一个事实的,比如通过时间维度、地域维度可以确定某时某地的一些指标值的事实。事实表的每一条数据都是几条维度表的数据和指标值交汇而得到的。
- 实体表:实体表就是一个实际对象的表,实体表放的数据一定是一条条客观存在的事物数据,比如说各种商品,它就是客观存在的,所以可以将其设计一个实体表。实时表只描述各个事物,并不存在具体的事实,所以也有人称实体表是无事实的事实表。
举个例子: 比如说手机商场中有苹果手机,华为手机等各品牌各型号的手机,这些数据可以组成一个手机实体表,但是表中没有可度量的数据。某天苹果手机卖了15台,华为手机卖了20台,这些手机销售数据属于事实,组成一个事实表。这样就可以使用日期维度表和地域维度表对这个事实表进行各种维度分析。
指标与标签的区别
概念不同
- 指标是客观的,用来定义、评价和描述特定事物的一种标准或方式。比如:新增用户数、累计用户数、用户活跃率等是衡量用户发展情况的指标;
- 标签是主观的、人为设定的,根据业务场景需求,对目标对象运用一定的算法得到的高度精炼的特征标识。 可见标签是经过人为再加工后的结果,如网红、下头男、高富帅。
构成不同
- 指标名称是对事物质与量两方面特点的命名;指标取值是指标在具体时间、地域、条件下的数量表现,如人的体重,指标名称是体重,指标的取值就是120斤;
- 标签名称通常都是形容词或形容词+名词的结构,标签一般是不可量化的,通常是孤立的,除了基础类标签,通过一定算法加工出来的标签一般都没有单位和量纲。如将超过200斤的称为大胖子。
分类不同
- 对指标的分类: 按照指标计算逻辑,可以将指标分为原子指标、派生指标、衍生指标三种类型; 按照对事件描述内容的不同,分为过程性指标和结果性指标;
- 对标签的分类: 按照标签的变化性分为静态标签和动态标签; 按照标签的指代和评估指标的不同,可分为定性标签和定量标签;
指标最擅长的应用是监测、分析、评价和建模。 标签最擅长的应用是标注、刻画、分类和特征提取。 特别需要指出的是,由于对结果的标注也是一种标签,所以在自然语言处理和机器学习相关 的算法应用场景下,标签对于监督式学习有重要价值,只是单纯的指标难以做到的。而指标在任 务分配、绩效管理等领域的作用,也是标签无法做到的。
维度和指标的区别联系
维度就是数据的观察角度,即从哪个角度去分析问题,看待问题。 指标就是从维度的基础上去衡量结果值。
- 维度:一般是一个离散的值,比如时间维度上每一个独立的日期或地域,因此统计时,可以把维 度相同记录的聚合在一起,应用聚合函数做累加、均值、最大值、最小值等聚合计算。
- 指标:就是被聚合的通计算,即聚合运算的结果,一般是一个连续的值。
自然键与代理键在数仓的使用区别
- 维度表的唯一主键应该是代理键而不应该是自然键。有时建模人员不愿意放弃使用自然键,因为他们希望与操作型代码查询事实表,而不希望与维度表做连接操作。然而,应该避免使用包含业务含义的多维键,因为不管我们做出任何假设最终都可能变得无效,因为我们控制不了业务库的变动。
- 所以数据仓库中维度表与事实表的每个连接应该基于无实际含义的整数代理键。避免使用自然键作为维度表的主键。
数据集市和数据仓库的关系
- 数据集市是企业级数据仓库的一个子集,他主要面向部门级业务,并且只面向某个特定的主题。为了解决灵活性和性能之间的矛盾,数据集市就是数据仓库体系结构中增加的一种小型的部门或工作组级别的数据仓库。数据集市存储为特定用户预先计算好的数据,从而满足用户对性能的需求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
- 数据集市和数据仓库的主要区别:数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手 段;而数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因 此是部门级的,一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库。