本发明涉及数据处理,特别涉及一种基于数仓数据一执性的枚举值治理方法。
背景技术:
1、数据仓库中数据一致性是质量保障的一个重要方面,如果数据一致性保证不了,用户在多个地方看到的结果是不一致的,将会对数据产生质疑,数据失去可信度将毫无意义。
2、业务系统开发过程中定义枚举值,是常见的技术。首先可以用枚举值替代判断常量,统一定义化,减少代码写死常量的情况发生。其次用枚举值定义和数据库字段进行统一,控制业务代码中传递无效值事件的发生,保证数据库字段合法性。
3、这样因为业务系统与数据仓库系统是两个独立的系统,在数据仓库计算任务开发过程中因业务系统存储的各种code值的原因就不可避免的需要进行将业务系统中的枚举值转换成对应的中文进行展示。数仓中常见的转换方式为任务开发过程中在代码里将当时的枚举值中文映射写死,后续业务系统每次新增变更都需要通知到数据仓库系统,同步相关研发进行修改代码逻辑、上线。
4、现有技术的缺陷和不足:
5、数据仓库开发过程中将代码里的映射写死存在的问题有:
6、1.业务系统每次变更,数据仓库系统中的定时任务均需要修改上线,流程复杂增加上线过程中的风险。
7、2.业务系统变更每次需要人为通知到数据仓库系统研发人员进行修改,这个环节保证不了每次修改都一定能通知到,人治的流程不严谨。
8、3.数据仓库系统中有多个任务都是用到这个业务表和业务枚举值,在不同的任务代码里均需要写一次映射逻辑,就可能存在不同的任务的映射逻辑是不一样的情况,如映射错误,少映射。
9、如果业务系统枚举值变更,需要修改数据仓库中的枚举值涉及到的下游任务,需要人为的阅读代码并进行人为判断,对下游使用情况分析存在困难,为此,提出一种基于数仓数据一执性的枚举值治理方法。
技术实现思路
1、有鉴于此,本发明实施例希望提供一种基于数仓数据一执性的枚举值治理方法,以解决或缓解现有技术中存在的技术问题,至少提供一种有益的选择。
2、本发明实施例的技术方案是这样实现的:一种基于数仓数据一执性的枚举值治理方法,包括以下步骤:
3、s1、开发和维护数据字典,得出结果表a;
4、s2、基于数据字典结果表a进行etl加工,存成每个枚举值名称一条记录,得出结果表b;
5、s3、根据数据字典结果表b开发udf函数;
6、s4、在数据仓库系统中使用udf函数;
7、s5、根据数据字典结果表a、数据字典结果表b和构建监控的配置表c配置枚举值监控。
8、在一些实施例中,在所述s1中,数据字典可在数据仓库系统中维护一份用到的枚举值对应的code和中文的映射(初始化时需要和业务系统拉齐一致),此种方式能更快速的落地,得出结果表a。
9、在一些实施例中,结果a表包含枚举值全局唯一key、枚举值名称、枚举值code和枚举值中文字段。
10、在一些实施例中,在所述s2中,结果表b包含枚举值全局唯一key、枚举值名称和枚举值映射关系。
11、在一些实施例中,在所述s3中,udf函数逻辑是读取数据字典结果表b的所有枚举值唯一key和映射关系;
12、构建json数据结构;
13、{"唯一索引":{"code1":"va l ue1","code2":"va l ue2"..},...}格式;
14、根据udf传入的参数唯一索引key取到json中的对应的唯一索引的code和va l ue的映射;
15、基于此映射关系根据传入的udf传入的参数code值,返回对应的枚举值中文。
16、在一些实施例中,在所述s4中,在数据仓库系统中的计算任务将存量的使用写死的映射关系替换为使用udf函数映射,对于增量的直接使用udf函数映射即可。
17、在一些实施例中,在所述s5中,构建一个需要监控的配置表c存储需要监控的数据仓库贴源层表(表名,枚举值字段名,现有已知的枚举值l i st),遍历配置表生成执行sq l对监控表的枚举值字段,并与配置表中现存已知的枚举值l i st对比,有差异时,则通过群机器人、钉钉或者邮箱报警到研发侧,研发介入判断是否修改数据字典结果表a和b以及监控配置表c的已知枚举值li st。
18、在一些实施例中,监控表配置原则为有准实时收容或者b i n l og收容优先使用,没有则监控t+1收容的表。
19、本发明实施例由于采用以上技术方案,其具有以下优点:
20、一、本发明通过本系统会使枚举值一致性的治理保障方案,保证用户在各个页面看到的中文枚举值都是一样的,不会产生理解上的歧义,通过数据字典、通用枚举值映射udf、枚举值变化监控等技术手段保证枚举值在各业务系统之间的映射是一致的,通过数据字典的能力,保证数据仓库和业务之间、业务与业务之间的枚举值中文保持一致,通用枚举值映射udf函数手动能够使得数仓之中的枚举值保持一致,保证用户看到的数仓提供的数据枚举值是一致的。
21、二、本发明通过本系统使业务系统每次变更,数据仓库系统不需要进行修改上线,自动能进行映射,节省开发上线成本。
22、三、本发明通过本系统中的监控能力能有效避免业务系统变更没有通知到下游数据仓库系统而导致的数据错误的问题。
23、四、本发明通过本系统中的数据仓库系统多个任务使用同一个枚举值,只需使用udf函数传参枚举值全局唯一key和所要映射的字段即可,减少开发工作量及避免不同的映射逻辑出现,上游业务系统枚举值出现问题,排查下游使用情况及场景,只需要记性代码搜索,搜索枚举值的全局唯一key即能搜到所有使用到的这个枚举值的所有下游任务。
24、上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
1.一种基于数仓数据一执性的枚举值治理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于数仓数据一执性的枚举值治理方法,其特征在于:在所述s1中,数据字典可在数据仓库系统中维护一份用到的枚举值对应的code和中文的映射(初始化时需要和业务系统拉齐一致),此种方式能更快速的落地,得出结果表a。
3.根据权利要求2所述的基于数仓数据一执性的枚举值治理方法,其特征在于:结果a表包含枚举值全局唯一key、枚举值名称、枚举值code和枚举值中文字段。
4.根据权利要求1所述的基于数仓数据一执性的枚举值治理方法,其特征在于:在所述s2中,结果表b包含枚举值全局唯一key、枚举值名称和枚举值映射关系。
5.根据权利要求1所述的基于数仓数据一执性的枚举值治理方法,其特征在于:在所述s3中,udf函数逻辑是读取数据字典结果表b的所有枚举值唯一key和映射关系;
6.根据权利要求1所述的基于数仓数据一执性的枚举值治理方法,其特征在于:在所述s4中,在数据仓库系统中的计算任务将存量的使用写死的映射关系替换为使用udf函数映射,对于增量的直接使用udf函数映射即可。
7.根据权利要求1所述的基于数仓数据一执性的枚举值治理方法,其特征在于:在所述s5中,构建一个需要监控的配置表c存储需要监控的数据仓库贴源层表(表名,枚举值字段名,现有已知的枚举值list),遍历配置表生成执行sql对监控表的枚举值字段,并与配置表中现存已知的枚举值list对比,有差异时,则通过群机器人、钉钉或者邮箱报警到研发侧,研发介入判断是否修改数据字典结果表a和b以及监控配置表c的已知枚举值list。
8.根据权利要求7所述的基于数仓数据一执性的枚举值治理方法,其特征在于:监控表配置原则为有准实时收容或者binlog收容优先使用,没有则监控t+1收容的表。
