这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战
如何评判我们的建模是成功的,或者说是有意义的呢,这个就需要建立一些规则区制约,还需要对模型进行检测。
这样的方式有很多,在实际建模过程中不断发现问题,积累问题,解决问题是至关重要的。
首先对于表字段名称、表的名称和模型的名称,如何做到规范化,我们需要先对历史数据进行分析,比如字段名称,city_code出现在业务表中的备注名称按照数量进行排序,最多的是城市编码,第二是业务城市编码,第三是省市区编码,那么我们就统一规定遇到city_code的时候就是以城市编码作为备注信息,当这样规定后,其他人来用到这个字段时,默认也会这样备注。如果是new_city_code,也会比较顺势的用新城市编码,这样做可以尽可能的让模型中的字段保持一致。
当然表名称有一些特殊的规则,比如将业务表名称组合在一起,再加上层级的缩写,组合成hive表的名称。
比如rpt_city_distinct_student,包含学生和城市编码的业务信息。
另外如何判定我们设计的模型的合理性和成功,最直观的方式就是每一层之间的依赖是非常紧密还是松散的,如歌依赖非常紧密,每一层表的利用率都很高,那么说明模型建设越成功,因为只有利用率越高,说明表创建的越符合需求,并且在模型中的作用非常到位,但是如果层层之间关联很微小,有的表甚至没有几个字段被使用,说明表创建的很差,字段都是无用的。
为了让表与表,层级与层级之间依赖紧密,在创建表的时候,就要纵观全局考虑全面,在设计之初就要按照主题-事件-维度-应用的思路去拆解需求,设计模型结构。
其次就是写sql如何保证规范且不出错,一个特别容易出错的地方就是分区,比如写sql的时候时间使用的是具体的时间,而不是用默认符号代替,就很容易直接放到模型中,导致计算错误。这种常见问题,可以通过一些工具去规避掉。
总之就是发现问题,解决问题,制定规范标准,保证模型设计的高可用性。