登录
首页大数据时代这些基本的维度表技术,你都了解吗?
这些基本的维度表技术,你都了解吗?
2020-08-10
收藏

上一篇文章给大家分享了一些关于维度表事实表的内容,今天给大家带来的是关于维度表技术的一些内容,希望对大家有所帮助。

一、维度表结构

1.每个维度表都包含单一的主键列。

2.维度表的主键可以作为与之关联的任何事实表的外键。

3.维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。

二、常见维度表技术

1.维度代理键

DW/BI需要申明对所有的维度的主键的空置,无法采用自然键或者附加日期的自然键。最好是建立无语意的整型主键。

2.自然键、持久键、超自然键

自然键,例如员工编号

持久键,有时也被叫做超自然持久键。数据仓库为员工编号创建一个单一键,这个单一键保持永久性不会发生变化。

最后的持久键应该独立于原始的业务过程。

3.下钻

商业分析的基本方法:

上卷(roll-up):上卷是沿着维的层次向上聚集汇总数据。 例如,对产品销售数据,沿着时间维上卷,可以求出所有产品在所有地区每月 (或季度或年或全部)的销售额。

下探(drill-down):下探是上卷的逆操作,它是沿着维的层次向下,查看更详细的数据。

3.空值属性

推荐采用标识性标识空值,例如unknown。因为不同数据库对空值处理不同。

4.日历日期维度

用YYYYMMdd更容易划分。

5.维度子集

一些需求是不需要最细节的数据的,那么此时事实数据需要关联特定的维度,这些特定维度包含在从细节维度选择的行中,因此就叫做维度子集。

细节维度和维度子集具有相同的属性或内容,具有一致性。

(1)建立包含属性子集的子维度

例如需要上钻到子维度。

(2)建立包含行子集的子维度

在两个维度处于同一细节粒度的情况下,如果其中一个仅仅是行的子集,那么就会产生另外一种一致性维度构造子集。

在某些版本的Hive中,对ORC表使用overwrite会出错,为了保持兼用性,通常会使用truncate 。

(3)使用视图实现维度子集

这种方式存在着两个主要问题:一是新创建的子维度是物理表,因此需要额外的存储空间;二是存在数据不一致的潜在风险。

通常的解决方法是在基本维度上建立视图生成子维度。

优点:

a.可以简单实现,不需要修改原来脚本的逻辑;

b.因为视图不真正存储数据,因此不会占用存储空间;

c.将数据不一致的可能消除掉。

缺点:

a.如果基本维度和子维度表数据量相差悬殊的话,性能比物理表差很多;

b.如果定义视图查询,并且视图很多,可能对元数据存储系统造成压力,严重影响查询性能。

6.层次维度

通常我们使用grouping__id 二进制序列,rollup,collect_set,concat_ws等函数。

层次关系方法:固定深度层次进行分组和钻取查询,递归层次结构数据装载、展开与平面化,多路径层次和参差不齐处理

7.退化维度

除了业务主键外没有其他内容的维度表

8.杂项维度

包含数据具有很少可能值的维度。有时与其为每个标志或属性定义不同的维度,不如建立单独的讲不同维度合并到一起的杂项维度。

9.维度合并

如果几个相关维度的基数都很小,或者具有多个公共属性时,可以考虑合并。

10.分段维度

包含连续的分段度量值,通常用作客户维度的行为标记时间序列,分析客户行为。

数据分析咨询请扫描二维码

客服在线
立即咨询