数据仓库上下游表间数据质量检查产生于下游表生成过程中,也是下游表本身的数据质量控制问题,上下游的关系并不仅限于数据仓库各层数据表,还包括同一层的有上下游关系的数据表。主要有三个方面:字段合法性、数据一致性和逻辑一致性
1、字段合法性
字段合法性是检查字段本身是否符合预期,一般只在上游数据做检查,除非该字段是对于上游数据来说是新字段。对于从上游数据得到的同一维度字段,在数仓数据表的同一层只检查一遍即可。有新逻辑加入的时候,可以不做字段合法性检查。需做合法性检查的字段可以大致的分为可枚举类型和非可枚举类型
可枚举类型
可枚举类型字段包括枚举类型、类枚举字符串、类枚举事实表外健等。在实际操作中,会分为两种情况进行合法性检查。其一,如果可枚举类型的取值在50个左右,通常会把所有取值及其计数统计出来,一方面可以检查该字段取值本身是否合法,另一方面还可以检查计数本身是否符合预期。数据检查中,尽可能用最少取数次数查看最多的检查项。其二,如果可枚举类型取值较多,有几百甚至是千级万级,检查时可以按计数进行排序,然后按字段取值排序,检查排序靠前与靠后字段取值及其计数,这样就可以定位大多数问题了。
非可枚举类型
非可枚举类型字段,一般会包含很多种情况,比如:一些32位和64位的标识,时间戳、连续性数值、搜索关键词等。这样在检查时除了可以对字段和字段计数值进行排序外,还可以设定字段取值范围、字段本身长度等对字段进行检查。
2、数据一致性
数据一致性是检查从上下游表间数据是否一致。任何一份数据表生成时都应该保持上下游一致,不一致就意味着数据本身或验证过程可能有问题。该检查一般可以按先粗后细原则,先查看粗粒度数据,没有问题才查看更细粒度数据查看。比如,dau数据,可以先对比上下游数据的总dau, 总dau没有问题,再查看几个主要维度数据,如果不是聚合数据,最后拿上下游数据中同一个用户的明细记录做下对比。数据更新做一致性检查时,如果可以在新老数据之间进行,则在新老数据之间进行,不能在新老数据之间进行则在上下游之间进行。如果可能,一定要做取几条明细数据做检查。
3、逻辑合法性
逻辑一致性是检查数据本身所包含的字段及字段之间的关系是否符合一定的预设逻辑。例如:uid与session_id为一对多关系,但反之不成立。也跟字段合法性检查一样,逻辑一致性检查一般发生在上游数据里,下游数据,尤其是不添加新的维度字段的下游数据,一般不进行逻辑一致性检查。对于从上游数据得到的同一维度字段,在数仓数据表的同一层只检查一遍即可。在该项检查中,具体可以检查多少项,因人而异,因为每个人对数据生成机制、业务用途等了解情况不一样,能想到的检查项也就会有很大不同。
综上,数仓数据表的质量检查,包括字段合法性、数据一致性、逻辑合法性3个方面,当并不是左右数据都要做3方面的数据检查。另外,所有的数据质量控制都是对最终交付数据做的,对非交付的中间数据如无必要,不做质量检查。
网友评论