维度表技术常见:增加列,维度子集,角色扮演维度,层次维度,退化维度,杂项维度,维度合并,分段维度等基本维度表技术。
一.增加列
事实表和维度表上增加列。
Hive上增加列,慎用alter table。原因老版本的hive对ORC格式表的模式修改,尤其是增加列的支持存在很多问题。
JIRA上说2.0.0修复了ORC表模式修改问题。
空值处理:<=>
二.维度子集
有些需求不需要最细节的数据。此时事实数据需要关联特定的维度,这些特定维度包含在从细节维度选择的行中,所以叫维度子集。
细节维度和维度子集具有相同的属性或内容,具有一致性。
1.建立包含属性子集的子维度
比如需要上钻到子维度。
2.建立包含行子集的子维度
当两个维度处于同一细节粒度,但是其中一个仅仅是行的子集,会产生另外一种一致性维度构造子集。
某些版本的Hive中,对ORC表使用overwrite会出错,为保持兼用性,使用truncate 。
3.使用视图实现维度子集
实现维度子集,这种方式两个主要问题:一需要额外的存储空间,因为新创建的子维度是物理表;二是存在数据不一致的潜在风险。
为解决上述问题,常用做法是在基本维度上建立视图生成子维度。
优点:实现简单,不需要修改原来脚本的逻辑;不占用存储空间,因为视图不真正存储数据;消除数据不一致的可能。