【技术实现步骤摘要】
一种生成FlinkSQL字段血缘的方法及系统
[0001]本专利技术涉及数据处理
,具体而言,涉及一种生成FlinkSQL字段血缘的方法及系统。
技术介绍
[0002]在大数据技术中,实时数据仓库技术在企业里面得到了广泛应用,各大企业机构都建立或探索符合自己业务场景下的实时数据仓库。随着对实时的要求性越来越高,Apache Flink越来越成为很多企业建设实时数据仓库的首选;其中针对Flink SQL的使用越来越多。因此针对基于Flink SQL产生的元数据管理就变得越来越重要,特别是字段级别的血缘关系,清晰明了知道源表字段对应的最终目标表字段。通过字段级别的血缘关系,可以便捷对表做出影响性范围分析,可以实现任务依赖的自动拉起和实现针对敏感数据的字段级别的脱敏。
[0003]目前,针对基于Flink SQL产生的元数据的管理方法不能生成Flink SQL字段血缘。
[0004]有鉴于此,特提出本申请。
技术实现思路
[0005]本专利技术所要解决的技术问题是:目前,针对基于Flink S ...
【技术保护点】
【技术特征摘要】
1.一种生成FlinkSQL字段血缘的方法,其特征在于,包括以下步骤:S1:定义链表数组和过滤选择字段数组;S2:解析SQL语句,得到多个列名、多个过滤条件列名和多个表名;S3:针对每一个列名,将列名和列名与表名的映射关系存入一个链表数组,多个列名对应多个链表数组;S4:针对每一个过滤条件列名,将过滤条件列名和过滤条件列名与表名的映射关系存入一个过滤选择字段数组,多个过滤条件列名对应多个过滤选择字段数组;S5:定义全局链表数组和全局过滤选择字段数组;S6:对每一个链表数组的多个链表数据求解,得到列名与表名的映射关系,更新所述全局链表数组;S7:对每一个过滤选择字段数组进行处理,得到过滤条件列名与表名的映射关系,更新所述全局过滤选择字段数组;S8:将更新后的全局链表数组和全局过滤选择字段数组进行合并后求差;S9:对求差后得到数据进行展示,根据展示结果获得FlinkSQL字段血缘。2.根据权利要求1所述的一种生成FlinkSQL字段血缘的方法,其特征在于,所述S3具体为:针对每一个列名,执行以下步骤,得到多个链表数组:S3.1:按照“列名%表名”的形式,将列名与表名的映射关系作为key值写入一个临时的Map数组;S3.2:如果列名存在别名,则将别名作为value值写入所述Map数组;如果列名不存在别名,则将列名作为value值写入所述Map数组;S3.3:将存储有key值和value值的Map数组添加到一个链表数组。3.根据权利要求1所述的一种生成FlinkSQL字段血缘的方法,其特征在于,所述S4具体为:针对每一个过滤条件列名,执行以下步骤,得到多个过滤选择字段数组:S 4.1:按照“过滤条件列名%表名”的形式,将过滤条件列名与表名的映射关系作为key值添加到过滤选择字段数组;S4.2:如果SQL语句中,过滤条件语句的“=”右边是SQL子查询语句,则将过滤选择字段数组的value值赋值为FlinkTable对象;如果SQL语句中,过滤条件语句的“=”右边不是SQL子查询语句,则将过滤选择字段数组的value值赋值为Null。4.根据权利要求1所述的一种生成FlinkSQL字段血缘的方法,其特征在于,所述S4之后,执行以下步骤:针对每一个表名,将表名对应的链表数组和过滤选择字段数组合并为FlinkTable对象,多个表名对应多个FlinkTable对象;将所述多个FlinkTable对象写入ListTable数组。5.根据权利要求4所述的一种生成FlinkSQL字段血缘的方法,其特征在于,所述S5之后,执行以下步骤:遍历所述ListTable数组,取出所述多个FlinkTable对象;判断每一个FlinkTable对象中的链表数组是否为空;若所有FlinkTable对象中的链表数组均为空,则不再执行所述S6至所S8;否则,执行所述S6。6.根据权利要求1、4或5所述的一种生成FlinkSQL字段血缘的方法,其特征在于,所述
S6具体为:采用向上递归合并算法对多个链表数组求解,包括:S6.1:取出多个FlinkTable对象对应的多个链表数组;S6.2:定义局部链表数组;S6.3:迭代遍历多个链表数组,取出链表数组;若局部链表数组为空,则用取出的链表数组对局部链表数组赋值...
【专利技术属性】
技术研发人员:谭巍,陈卫,田浩兵,张奎,翟恩荣,
申请(专利权)人:四川新网银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。