数据建模:维度设计基础知识(上)

说到维度设计,我们先得了解什么是维度?维度是维度建模的基础和灵魂。

数据建模:维度设计基础知识(上)

什么是维度

说到维度设计,我们先得了解什么是维度?

维度是维度建模的基础和灵魂。在维度建模中,我们将度量称作“事实”,将环境描述为“维度”,维度是用于分析事实所需要的多样环境。例如,在分析线上打车过程中,可以通过乘客、司机、地点和时间等维度描述打车发生的环境。

维度所包含的表示维度的列,称作维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。例如,查询请求中,获取某类目的文章、正常状态的商品等,是通过约束文章类目属性和商品状态属性来实现的;统计公众号不同文章类目的每日阅读量,是通过文章维度的类目属性进行分组的。所以维度的作用一般是查询约束、分类汇总以及排序等。

如何获取维度或维度属性?一方面,我们可以在报表中获取;另一方面,我们可以在和业务人员的交谈中发现维度或维度属性。因为它们经常出现在查询或报表请求中的“by”语句(即按照的意思)内。例如,用户需要“按照”文学和文章来查看阅读量,那么用来描述其业务的方法自然应该作为维度或维度属性包括在维度模型中。

维度使用主键标识其唯一性,主键也是确保与之相连的任何事实表之间存在引用完整性的基础。主键包含两种:代理键和自然键,它们都是用于标识某维度的具体值。但是,代理键不具有业务含义,一般用于处理缓慢变化维;自然键是具有业务含义的。比如,文章,在ETL过程中,对于文章维表的每一行,可以生成一个唯一的代理键与之对应,文章本身的自然键可能是文章ID等。其实对于前台应用系统来说,文章ID是代理键;而对于数据仓库来说,文章ID则属于自然键。

维度的设计方法

维度的设计过程就是确定维度属性的过程,如何生成维度属性,以及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库易用性的关键。数据仓库的能力直接与维度属性的质量和深度成正比。

设计方法

第一步,选择维度或新建维度。作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性;

第二步,确定主维表。此处的主维表一般是ODS表,与业务系统直接同步;

第三步,确定相关维表。数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在观临行。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。

第四步,确定维度属性。本步骤包括两个阶段,第一阶段是从主维表中选择维度属性或生成新的维度属性;第二阶段是从相关维表中选择维度属性或生成新的维度属性。

确定维度属性的几个要点

1)尽可能生成丰富的维度属性

2)尽可能多地给出包括一些富有意义的文字性描述

3)区分数值型属性和事实

数值型字段是作为事实还是维度属性,可以参考字段的一般用途。如果通常用于查询约束条件或分组统计,则是作为纬度属性;如果通常用于参与度量的计算,则是作为事实。另外,如果数值型字段是离散值,则作为纬度属性存在的可能性比较大;如果数值型字段是连续值,则作为度量存在的可能性比较大,但并不绝对,需要同时参考字段的具体用途。

4)尽量沉淀出通用的维度属性

有些维度属性获取需要进行比较复杂的逻辑处理,有些需要通过多表关联得到,或者通过单表的不同字段混合处理得到,或者通过对单表的某个字段进行解析得到。此时需要将尽可能多的通用的维度属性进行沉淀。一方面,可以提高下游使用的方便性,减少复杂度;另一方面,可以避免下游使用解析时由于各自逻辑不通而导致口径不一致。

总结

以上就是笔者关于——“数据建模:维度设计基础知识(上)”的分享内容,希望对大家有所帮助,敬请期待下篇。

业界动态

项目复盘:从设计层面建立品牌体系

2020-11-26 9:36:29

业界动态

万字长文:谈谈我对视频号的思考

2020-11-26 9:41:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索