CN114969215A - 数据仓库贴源层自动批量装载数据的方法及相关设备 - Google Patents
数据仓库贴源层自动批量装载数据的方法及相关设备 Download PDFInfo
- Publication number
- CN114969215A CN114969215A CN202210315813.4A CN202210315813A CN114969215A CN 114969215 A CN114969215 A CN 114969215A CN 202210315813 A CN202210315813 A CN 202210315813A CN 114969215 A CN114969215 A CN 114969215A
- Authority
- CN
- China
- Prior art keywords
- data
- loading
- source
- target
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据仓库贴源层自动批量装载数据的方法及相关设备,调度程序启动时读取配置表和需求表,将对应信息作为参数传入数据装载模板程序,生成多个不同源端不同目标端的装载程序,多个不同源端不同目标端的装载程序并行执行,完成源端数据的数据装载。解决无法兼容多种国产数据库间的数据抽取问题。解决不同数据源不同目标端的同表结构的数据装载需要多次开发问题,实现开发一个即可自动完成所有分公司的数据装载。解决数据仓库贴源层针对多数据源多目标端只能手工单表单库装载的问题,实现自动、批量完成数据仓库贴源层对多数据源、多目标端的数据装载。解决装载失败需手工重启的问题,减少人工干预,提高装载效率,保证数据装载完整性。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据仓库贴源层自动批量装载数据的方法及相关设备。
背景技术
数据仓库贴源层是数据仓库的一个数据分层,数据源中的数据经过抽取、洗净、传输,也就是ETL(数据仓库技术)过程之后进入贴源层,贴源层存放的数据需要与源端保持一致。数据的抽取的过程需要面临的以下几个问题:
(1)数据从多个业务系统中来,如何兼容各业务系统不同的数据库。
(2)如何实现自动、批量地完成多系统多表的数据抽取。
(3)如何解决抽数过程中会遇到源端数据库短暂不可用的问题。
相关的任一ETL工具都无法解决以上全部问题,它们或实现了多数据源的支持,或实现了数据的自动抽取,且数据抽取过程中因任何原因失败的记录都需要人工进行重启,这大大增加了人工成本,降低了抽取效率。
发明内容
有鉴于此,本申请的目的在于提出一种数据仓库贴源层自动批量装载数据的方法及相关设备,用于解决上述问题。
基于上述目的,本申请的第一方面提供了一种数据仓库贴源层自动批量装载数据的方法,包括:
通过预设的调度程序读取配置表和需求表;
将所述配置表和所述需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个所述装载程序并行执行;
在任意一个所述装载程序中:
基于所述配置表和所述需求表对所述源端的源端数据进行装载;
响应于确定所述源端数据装载完毕,进行数据核对;
响应于确定所述数据核对完毕,根据所述需求表记录的的需求方进行用户赋权;
将所述装载程序的运行过程进行记录,得到装载日志;
响应于确定存在装载失败的所述源端数据,基于所述装载日志,执行日志解析和分析重启程序。
本申请的第二方面提供了一种数据仓库贴源层自动批量装载数据的装置,包括:
调度模块,被配置为:通过预设的调度程序读取配置表和需求表;
将所述配置表和所述需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个所述装载程序并行执行;
数据装载模块,被配置为:在任意一个所述装载程序中:
基于所述配置表和所述需求表对所述源端的源端数据进行装载;
响应于确定所述源端数据装载完毕,进行数据核对;
响应于确定所述数据核对完毕,根据所述源端数据的需求方进行用户赋权;
将所述装载程序的运行过程进行记录,得到装载日志;
失败重启模块,被配置为:响应于确定存在装载失败的所述源端数据,基于所述装载日志,执行日志解析和分析重启程序。
本申请的第三方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本申请第一方面所述的方法。
本申请的第四方面提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如本申请第一方面所述的方法。
从上面所述可以看出,本申请提供的数据仓库贴源层自动批量装载数据的方法及相关设备,首先,通过调度程序读取配置表和需求表。然后,将配置表和需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个装载程序并行执行,通过读取不同配置表和需求表解决无法兼容多种国产数据库间的数据抽取问题。通过生成多个不同源端、不同目标端的装载程序解决不同分公司(不同数据源端不同目标端)同表结构的数据装载需要多次开发问题,实现开发一个即可自动完成所有分公司的数据装载的技术效果。在任意一个装载程序中:基于配置表和需求表对源端的源端数据进行装载;响应于确定源端数据装载完毕,进行数据核对;响应于确定数据核对完毕,根据需求表记录的的需求方进行用户赋权;将装载程序的运行过程进行记录,得到装载日志。解决数据仓库贴源层针对多数据源多目标端只能手工单表单库装载的问题,实现自动、批量完成数据仓库贴源层对多数据源、多目标端的数据装载。响应于确定存在装载失败的源端数据,基于装载日志,执行日志解析和分析重启程序。解决装载失败需手工重启的问题,减少人工干预,提高装载效率,保证数据装载完整性。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的数据仓库贴源层自动批量装载数据的方法的流程图;
图2为本申请实施例的源端数据装载的流程图;
图3为本申请实施例的主键信息获取的流程图;
图4为本申请实施例的表建立的流程图;
图5为本申请实施例的源端数据下载的流程图;
图6为本申请实施例的数据仓库贴源层自动批量装载数据的装置的结构图;
图7为本申请实施例的电子设备的结构图;
图8为本申请实施例的另一种数据仓库贴源层自动批量装载数据的方法流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
相关技术中的数据仓库贴源层数据抽取的方法有很多种,常用的有以下两种:
第一种是SQL(结构化查询)方式实现,优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。
第二种是借助ETL工具,ETL工具可以快速的建立起ETL工程,屏蔽复杂的编码任务,提高速度,降低难度,但是欠缺灵活性。ETL工具在很大程度上节省了资金和时间。SSIS(SQL Server Integration Services,构建企业级数据集成和数据转换解决方案平台)可以使用图形化的集成服务工具来创建解决方案,但其无法兼容主流的国产数据源。DataX(阿里云DataWorks数据集成的开源版本)实现了各种异构数据源之间高效的数据同步功能,但无法实现异源同表json文件的自动生成,需人工干预。即相关技术存在以下缺点:
(1)无法兼容PolarDB(云原生关系型数据库)、高斯数据库、OceanBase(企业级分布式关系数据库)、达梦数据库等国产数据库。
(2)对于不同分公司(不同数据源不同目标端)同表结构的数据装载,需要针对每个分公司进行开发,无法实现开发一个自动完成所有分公司的数据装载。
(3)装载效率低:数据仓库贴源层针对多数据源多目标端只能手工单表单库装载,不能实现自动、批量的数据装载。
(4)需要人工干预,无法保证数据装载完整性:对于装载失败的记录不能自动重启,需手工重启,否则将丢失数据。
而本申请提供的数据仓库贴源层自动批量装载数据的方法及相关设备,调度程序启动时读取配置表和需求表,将对应信息作为参数传入数据装载模板程序,生成多个不同源端不同目标端的装载程序,多个不同源端不同目标端的装载程序并行执行,完成源端数据的数据装载。以实现批量、自动、并行地完成数据装载。配置表存储数据库连接的信息,包括系统代码、源端连接信息、目标端连接信息、分公司机构号、分公司批次号等。需求表存储数据装载需求的表信息,包括系统代码、表名、schema(数据库的组织和结构)、数据库类型,需求类型、需求方等。数据装载程序是一个SSIS项目,通过执行SQL语句、存储过程和调用python程序来完成整个数据装载过程。解决无法兼容多种国产数据库间的数据抽取问题。解决不同分公司(不同数据源不同目标端)同表结构的数据装载需要多次开发问题,实现开发一个即可自动完成所有分公司的数据装载。解决数据仓库贴源层针对多数据源多目标端只能手工单表单库装载的问题,实现自动、批量完成数据仓库贴源层对多数据源、多目标端的数据装载。解决装载失败需手工重启的问题,减少人工干预,提高装载效率,保证数据装载完整性。
在一些实施例中,如图1所示,数据仓库贴源层自动批量装载数据的方法,包括:
步骤100:通过预设的调度程序读取配置表和需求表。
在该步骤中,通过调度程序读取配置表和需求表,来获取输入参数,其中,配置表存储数据库连接的信息,包括系统代码、源端连接信息、目标端连接信息、分公司机构号、分公司批次号等。需求表存储数据装载需求的表信息,包括系统代码、表名、schema(数据库的组织和结构)、数据库类型,需求类型、需求方等。
步骤200:将配置表和需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个装载程序并行执行。
在该步骤中,将配置表和需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个装载程序并行执行,通过读取不同配置表和需求表解决无法兼容多种国产数据库间的数据抽取问题。通过生成多个不同源端、不同目标端的装载程序解决不同分公司(不同数据源端不同目标端)同表结构的数据装载需要多次开发问题,实现开发一个即可自动完成所有分公司的数据装载的技术效果。解决数仓贴源层针对多数据源多目标端只能手工单表单库装载的问题,实现自动、批量完成数仓贴源层对多数据源、多目标端的数据装载。
在任意一个装载程序中:
步骤300:基于配置表和需求表对源端的源端数据进行装载。
在该步骤中,数据源中的源端数据经过抽取、洗净、传输,也就是ETL过程之后进入数据仓库的贴源层,数据仓库的贴源层是数据仓库的一个数据分层,贴源层里存放的数据需要与源端的源端数据保持一致。
进一步地,数据装载是指将转换好的数据保存到数据仓库中去。一般情况下,数据装载应该在系统完成了更新之后进行。在数据仓库中的数据来自多个相互关联的操作系统,则应该保证在这些系统同步工作时移动数据。
其中,数据装载方式包括:
(1)基本装载:按照装载的目标表,将转换的过的数据输入到目标表中去。若目标表中已有数据,装载时会先删除这些数据,再装入新数据。
(2)追加装载:如果目标表中已经存在数据,在保存已有的数据的基础上增加新的数据。当一个输入的数据记录与已经存在的记录重复时,输入记录可能会作为副本增加进去,或者丢弃新输入的数据。
(3)破坏性合并:如果输入数据记录的主键与一条已经存在的记录的主键相匹配,则用新输入数据更新目标记录数据。如果输入记录是一条新的记录,没有任何与之匹配的现存记录,那么就将这条输入的记录添加到目标表中。
(4)建设性合并:输入的记录主键与已有的记录的主键相匹配,则保留已有的记录,增加输入的记录,并标记为旧记录的替代。
数据装载类型包括:
(1)最初装载:指的是第一次对整个数据仓库进行装载。在装载工作完成以后建立索引,这样可以减少创建索引时间。
(2)增量装载:指向已运行的数据仓库中装载源系统中已变化的数据。增量装载可以采用建设性合并的装载方式,也可以采用破坏性合并装载方式。
(3)完全刷新:用于周期性重写数据仓库。可选地,也可以对一特定的表进行刷新。完成刷新与初始装载比较相似,不同点在于完全刷新之前,目标表中已经存在的数据。初始装载和追加装载都可以应用于完全刷新中。也可以选用批量装载程序进行数据装载,以提高数据装载的效率。
步骤400:响应于确定源端数据装载完毕,进行数据核对。
在该步骤中,因为贴源层里存放的数据需要与源端的源端数据保持一致。所以在数据装载完毕后对贴源层内存放的源端数据进行核对,将装载前后的源端数据进行核对,以确保装载的源端数据的完整性和准确性,对于不完整的源端数据和装载错误的源端数据进行记录,将这些记录作为装载失败的未成功清单。
步骤500:响应于确定数据核对完毕,根据需求表记录的的需求方进行用户赋权。
在该步骤中,在确定数据核对完毕后,根据需求表中记录的需求方对该需求方进行用户赋权,使该需求方有权利调用该数据仓库中的源端数据,即将表的查询权限赋给需求方,保证需求方可以正常使用该源端数据。
步骤600:将装载程序的运行过程进行记录,得到装载日志。
在该步骤有中,记录整个源端数据装载过程的完成情况,为后续失败重启程序提供依据。
步骤700:响应于确定存在装载失败的源端数据,基于装载日志,执行日志解析和分析重启程序。
其中,日志解析具体包括:
基于预设的关键字解析装载日志。
获取装载日志中的数据下载日志。
将数据下载日志存储在日志表中。
分析重启具体包括:
基于预设的源端数据的总下载数和装载日志中的实际下载数,计算总下载数和实际下载数的差值。
获取差值对应的未成功清单。
基于未成功清单,重启装载程序。
在该步骤中,日志解析程序是由python语言开发的,主要功能是根据特定关键字解析datax日志,获取datax所有数据下载的日志,包括下载状态、下载数据量、下载时间、失败原因等,并将相关信息存储在日志表中。重启程序是一个存储过程,主要功能是根据SSIS项目日志获取总记录数,计算总记录与datax成功下载记录的差值,根据未成功清单与重启标准自动重启装载程序,再次进行数据装载。解决装载失败需手工重启的问题,减少人工干预,提高装载效率,保证数据装载完整性。
在一些实施例中,如图2所示,步骤300:基于配置表和需求表对源端的源端数据进行装载,具体包括:
步骤310:基于配置表和需求表,根据预设的python程序获取主键信息、唯一索引信息和目标端表结构信息。
在该步骤中,利用构建好的python程序判断源端数据的数据源类型,根据不同数据源类型读取对应的系统表,获取该系统表的主键信息和唯一索引信息,将主键信息、唯一索引信息存储在主键信息表内。
步骤320:基于目标端表结构信息,在目标端进行建表。
在该步骤中,根据不同数据源的类型读取对应系统表获取源端的表结构信息,按照源端目标端字段类型对照规则将源端的表结构信息类型转换目标端类型,并根据用户需求生成对应的建表语句,判断目标端是否已经存在相应表,若不存在,读取建表语句并在目标端建表,否则不进行建表。
步骤330:基于唯一索引信息、主键信息和表,将源端数据下载到txt文件。
步骤340:对源端数据进行清洗,得到有效源端数据。
在该步骤中,数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。
其中,残缺数据主要是一些本应该有的信息存在缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。
错误数据产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
重复数据,需要将重复数据记录的所有字段导出来,让客户确认并整理。
步骤350:将有效源端数据存入目标端的数据仓库,完成装载。
在一些实施例中,如图3所示,步骤310:基于配置表和需求表,根据预设的python程序获取主键信息、唯一索引信息和目标端表结构信息,具体包括:
步骤311:基于配置表和需求表确定源端的数据源类型。
步骤312:通过python程序读取数据源类型对应的系统表,得到主键信息、唯一索引信息和源端表结构信息。
其中,数据装载需要兼容不同的数据库,所以在进行数据装载前,需要根据配置表和需求表确定源端的数据源类型,进而确定对应不同数据源的不同的主键信息、唯一索引信息和源端表结构信息,实现不同数据源的不同数据库的连接,进而实现不同数据库的兼容。
在一些实施例中,如图4所示,步骤320:基于目标端表结构信息,在目标端进行建表,具体包括:
步骤321:基于源端表结构信息,通过源端-目标端字段类型对照规则,将源端表结构信息转换为目标端表结构信息。
步骤322:基于目标端表结构信息,根据用户需求生成建表语句。
步骤323:响应于确定目标端不存在相应的表,读取建表语句,构建表。
其中,根据不同数据源的类型读取对应系统表获取源端的表结构信息,通过源端-目标端字段类型对照规则,将源端表结构信息转换为目标端表结构信息,并根据用户需求生成对应的建表语句,然后判断目标端是否已经存在相应表,若不存在,读取建表语句并在目标端建表,否则不进行建表
在一些实施例中,如图5所示,步骤330:基于唯一索引信息、主键信息和表,将源端数据下载到txt文件,具体包括:
步骤331:提取配置表内源端的数据库连接信息和目标端数据库连接信息。
步骤332:根据源端数据库连接信息、源端表结构信息、目标端数据库连接信息、目标端表结构信息、主键信息,利用python程序生成json文件。
步骤333:基于唯一索引,调用预设的datax程序按照json文件的格式将源端数据下载到txt文件。
其中,json(JavaScript对象简谱)是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种数据仓库贴源层自动批量装载数据的装置。
参考图6,所述数据仓库贴源层自动批量装载数据的装置,包括:
调度模块10,被配置为:通过调度程序读取配置表和需求表;
将配置表和需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个装载程序并行执行;
数据装载模块20,被配置为:在任意一个装载程序中:
基于配置表和需求表对源端的源端数据进行装载;
响应于确定源端数据装载完毕,进行数据核对;
响应于确定数据核对完毕,根据源端数据的需求方进行用户赋权;
将装载程序的运行过程进行记录,得到装载日志;
失败重启模块30,被配置为:响应于确定存在装载失败的源端数据,基于装载日志,执行日志解析和分析重启程序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的数据仓库贴源层自动批量装载数据的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的数据仓库贴源层自动批量装载数据的方法。
图7示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的数据仓库贴源层自动批量装载数据的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的数据仓库贴源层自动批量装载数据方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的数据仓库贴源层自动批量装载数据方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
需要说明的是,如图8所示,本申请的实施例还可以以下方式进一步描述:
调度程序启动时读取配置表和需求表,将对应信息作为参数传入数据装载模板程序,生成多个不同源端不同目标端的装载程序并执行,完成数据装载。可以实现批量、自动、并行地完成数据装载。配置表存储数据库连接信息,包括系统代码、源端连接信息、目标端连接信息、分公司机构号、分公司批次号等。需求表存储数据装载需求的表信息,包括系统代码、表名、schema、数据库类型,需求类型、需求方等。
数据装载程序是一个SSIS项目,通过执行SQL语句、存储过程和调用python程序来完成整个数据装载过程。数据装载程序的功能包括:
读取源端表主键信息(python程序),判断数据源类型,根据不同数据源类型读取对应系统表获取表的主键信息和唯一索引信息,将主键信息、唯一索引信息存储在主键信息表内。
处理唯一索引(SqlServer存储过程),根据用户需求对唯一索引进行特殊处理,包括按字段字典顺序排序、对排序后的唯一索引做相关处理。
生成目标端建表语句(python程序),判断数据源类型,根据不同数据源类型读取对应系统表获取源端表结构信息,按照源端目标端字段类型对照规则将源端类型转换目标端类型,并根据用户需求生成对应的建表语句。
在目标端进行建表(SQL语句),判断目标端是否已经存在相应表,若不存在在读取建表语句并在目标端建表,否则不进行建表。
生成json文件(python程序),根据源端、目标端的数据库连接信息、表的结构信息、主键信息等生成可以供datax程序调用的json文件。
数据下载。调用datax程序按照json文件将源端数据下载到txt文件。
数据清洗(SQL语句),将下载的数据进行清洗后导入目标库。
数据核对(SQL语句),将装载前后数据进行核对,保证数据的完整性、准确性。
用户赋权(SQL语句),将表的查询权限赋给需求方,保证需求方可以正常使用数据。
记录相关日志(SQL语句),记录整个过程的完成情况,为后续失败重启程序提供依据。
失败重启,失败重启程序由日志解析和分析重启两个子程序构成。日志解析程序是由python语言开发的,主要功能是根据特定关键字解析datax日志,获取datax所有数据下载的日志,包括下载状态、下载数据量、下载时间、失败原因等,并将相关信息存储在日志表中。重启程序是一个存储过程,主要功能是根据SSIS项目日志获取总记录数,计算总记录与datax成功下载记录的差值,根据未成功清单与重启标准自动重启装载程序,再次进行数据装载。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据仓库贴源层自动批量装载数据的方法,其特征在于,包括:
通过预设的调度程序读取配置表和需求表;
将所述配置表和所述需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个所述装载程序并行执行;
在任意一个所述装载程序中:
基于所述配置表和所述需求表对所述源端的源端数据进行装载;
响应于确定所述源端数据装载完毕,进行数据核对;
响应于确定所述数据核对完毕,根据所述需求表记录的的需求方进行用户赋权;
将所述装载程序的运行过程进行记录,得到装载日志;
响应于确定存在装载失败的所述源端数据,基于所述装载日志,执行日志解析和分析重启程序。
2.根据权利要求1所述的方法,其特征在于,所述基于所述配置表和所述需求表对所述源端的源端数据进行装载,具体包括:
基于所述配置表和所述需求表,根据预设的python程序获取主键信息、唯一索引信息和目标端表结构信息;
基于所述目标端表结构信息,在所述目标端进行建表;
基于所述唯一索引信息、所述主键信息和所述表,将源端数据下载到txt文件;
对所述源端数据进行清洗,得到有效源端数据;
将所述有效源端数据存入所述目标端的数据仓库,完成装载。
3.根据权利要求2所述的方法,其特征在于,所述基于所述配置表和所述需求表,根据预设的python程序获取主键信息、唯一索引信息和目标端表结构信息,具体包括:
基于所述配置表和所述需求表确定所述源端的数据源类型;
通过所述python程序读取所述数据源类型对应的系统表,得到所述主键信息、所述唯一索引信息和所述源端表结构信息。
4.根据权利要求3所述的方法,其特征在于,所述基于所述目标端表结构信息,在所述目标端进行建表,具体包括:
基于所述源端表结构信息,通过源端-目标端字段类型对照规则,将所述源端表结构信息转换为所述目标端表结构信息;
基于所述目标端表结构信息,根据用户需求生成建表语句;
响应于确定所述目标端不存在相应的表,读取所述建表语句,构建所述表。
5.根据权利要求4所述的方法,其特征在于,所述基于所述唯一索引信息、所述主键信息和所述表,将源端数据下载到txt文件,具体包括:
提取所述配置表内源端的数据库连接信息和目标端数据库连接信息;
根据所述源端数据库连接信息、所述源端表结构信息、所述目标端数据库连接信息、所述目标端表结构信息、所述主键信息,利用所述python程序生成json文件;
基于所述唯一索引,调用预设的datax程序按照所述json文件的格式将所述源端数据下载到所述txt文件。
6.根据权利要求4所述的方法,其特征在于,所述日志解析,具体包括:
基于预设的关键字解析所述装载日志;
获取所述装载日志中的数据下载日志;
将所述数据下载日志存储在日志表中。
7.根据权利要求4所述的方法,其特征在于,所述分析重启,具体包括:
基于预设的所述源端数据的总下载数和所述装载日志中的实际下载数,计算所述总下载数和所述实际下载数的差值;
获取所述差值对应的未成功清单;
基于所述未成功清单,重启所述装载程序。
8.一种数据仓库贴源层自动批量装载数据的装置,其特征在于,包括:
调度模块,被配置为:通过预设的调度程序读取配置表和需求表;
将所述配置表和所述需求表输入装载模板程序,生成多个不同源端、不同目标端的装载程序,其中,多个所述装载程序并行执行;
数据装载模块,被配置为:在任意一个所述装载程序中:
基于所述配置表和所述需求表对所述源端的源端数据进行装载;
响应于确定所述源端数据装载完毕,进行数据核对;
响应于确定所述数据核对完毕,根据所述源端数据的需求方进行用户赋权;
将所述装载程序的运行过程进行记录,得到装载日志;
失败重启模块,被配置为:响应于确定存在装载失败的所述源端数据,基于所述装载日志,执行日志解析和分析重启程序。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210315813.4A CN114969215A (zh) | 2022-03-28 | 2022-03-28 | 数据仓库贴源层自动批量装载数据的方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210315813.4A CN114969215A (zh) | 2022-03-28 | 2022-03-28 | 数据仓库贴源层自动批量装载数据的方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114969215A true CN114969215A (zh) | 2022-08-30 |
Family
ID=82976425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210315813.4A Pending CN114969215A (zh) | 2022-03-28 | 2022-03-28 | 数据仓库贴源层自动批量装载数据的方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114969215A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964375A (zh) * | 2023-03-15 | 2023-04-14 | 深圳迅策科技有限公司 | 一种用于DataX系统的json文件生成方法、装置及电子设备 |
-
2022
- 2022-03-28 CN CN202210315813.4A patent/CN114969215A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115964375A (zh) * | 2023-03-15 | 2023-04-14 | 深圳迅策科技有限公司 | 一种用于DataX系统的json文件生成方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918666B (zh) | 一种区块链上的数据同步方法和系统 | |
CN111104392B (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN112488855B (zh) | 一种基于规则模板的业务校验方法及设备 | |
CN110351325B (zh) | 一种数据处理方法及相关设备 | |
CN110955432B (zh) | 持续集成的发布方法、装置及系统 | |
CN1976320B (zh) | 数据访问控制方法及系统 | |
CN114969215A (zh) | 数据仓库贴源层自动批量装载数据的方法及相关设备 | |
CN115757629A (zh) | 多源异构数据增量同步方法、系统、存储介质和电子设备 | |
CN109634585B (zh) | 一种基于表单自适应展示和更新服务端数据的方法 | |
CN112948473A (zh) | 数据仓库的数据处理方法、装置、系统及存储介质 | |
CN115202711B (zh) | 数据发布方法及系统 | |
CN110888863A (zh) | 一种状态字段优化方法、装置、电子设备及存储介质 | |
CN115269548A (zh) | 一种数据仓库开发模型的生成方法、系统及相关设备 | |
CN115438024A (zh) | 数据导入中台的方法、装置、系统、电子设备、存储介质 | |
CN114356945A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111080209B (zh) | 一种bom的验证方法、系统、设备以及存储介质 | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
CN108920749B (zh) | 管线二三维数据更新方法、装置与计算机可读存储介质 | |
CN116339717B (zh) | 一种数据执行方法、装置、设备和介质 | |
CN110175116B (zh) | 一种测试日期切换方法、装置及系统 | |
CN112395850A (zh) | 一种检查数据定义一致性的方法、装置和电子设备 | |
WO2023055292A2 (en) | A module and method for integrating data across disparate business applications | |
CN117909336A (zh) | 基于自然语言处理的数据融合方法及相关设备 | |
CN115374209A (zh) | 一种web页面的数据抽取、转换和加载的方法、系统及装置 | |
CN117132413A (zh) | 基于网络直播场景下的对账方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |