CN114791916B - 一种临床试验数据的快速比对方法 - Google Patents

一种临床试验数据的快速比对方法 Download PDF

Info

Publication number
CN114791916B
CN114791916B CN202210709642.3A CN202210709642A CN114791916B CN 114791916 B CN114791916 B CN 114791916B CN 202210709642 A CN202210709642 A CN 202210709642A CN 114791916 B CN114791916 B CN 114791916B
Authority
CN
China
Prior art keywords
row
file
hash
target file
key hash
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.)
Active
Application number
CN202210709642.3A
Other languages
English (en)
Other versions
CN114791916A (zh
Inventor
康灿平
邓亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Jiena Pharmaceutical Technology Co ltd
Tianjin Gena Pharmaceutical Technology Development Co ltd
Original Assignee
Tianjin Gena Pharmaceutical Technology Development Co ltd
Guangdong Jiena Pharmaceutical Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Gena Pharmaceutical Technology Development Co ltd, Guangdong Jiena Pharmaceutical Technology Co ltd filed Critical Tianjin Gena Pharmaceutical Technology Development Co ltd
Priority to CN202210709642.3A priority Critical patent/CN114791916B/zh
Publication of CN114791916A publication Critical patent/CN114791916A/zh
Application granted granted Critical
Publication of CN114791916B publication Critical patent/CN114791916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种临床试验数据的快速比对方法,通过生成键哈希表和行哈希表,在比较时,可以以接近O(R)(R是目标文件行数)的时间复杂度完成一次文件比对,并且可以应对数据库导出时各行随机排列的情况。其次通过建立键哈希簇,保证了在键哈希发生变化时,依然能够快速的查找到对应的行,避免了键哈希的个别改动导致该行记录被标记为删除和新增的情况,能够最大限度的让数据管理人员精确追踪到各个数据点的变化。再次,通过改进的行哈希比对方法,能够在数据集中发生整行变动时,依然能够以接近O(R)的时间复杂度完成比对,而不至于退化成一个逐值比对的算法。本发明针对CRO的数据库变化特性设计的,CRO业务场景中具有非常良好的应用前景与商业价值。

Description

一种临床试验数据的快速比对方法
技术领域
本发明涉及数据比对领域,更具体地,涉及一种临床试验数据的快速比对方法。
背景技术
在医药CRO企业中,需要对临床实验中产生的各种实验数据进行分析、处理,产生的数据一般以sas7bdat或者excel格式存储。sas7bdat/excel都是一种典型的结构化数据,具有以下特点:1)以行为单位;2)行与行之间是独立关系,但存在关联,数据的每一行代表着一个受试者的个人信息、用药记录或者不良反应等等。但某些行的特定列依赖共同的数据,如若发生变化,会一起变化;3)有部分列是固定且一定会存在的,而其他列则有可能随着实验的进展新增或者被删除。随着实验的推进,一个sas7bdat/excel数据文件可能存储数十万行甚至数百万行的数据,统计分析员通常需要对两份数据进行比对,以此找出数据变化的位置,从而快速分析解决问题。
临床实验中产生的大量试验数据大多数是靠临床运营人员手工录入到数据库中。临床试验数据对准确性要求极高,因此会反复对数据进行核查和订正。因此在数据库中的各个数据点也会频繁变动,数据库也会经历较多的版本变化。在不同版本的数据库文件中,不存在唯一的数据行ID,各版本数据库中,数据行间也并不保证顺序一致,因此常见的逐行比对算法无法应用于这个任务当中。
CRO的数据清理任务通常需要保存每一个版本的数据集文件,并跟踪所有数据的变化,以判断存在的问题是否已经被修复,或者是否因数据修改出现新的问题。数据库通常到试验后期会累计起数十万行甚至数百万行的数据,如何快速准确的在行顺序不固定的数据库中找出两份数据的差异性,是CRO数据清理任务中的基本需求。
针对少量的数据,最直接的文件比对方法是逐行比对,但是随着数据量的增多,逐行比对的时间复杂度高,计算资源消耗大,几十万行或者上百万行的数据,可能得花费数十分钟才能完成,严重降低工作效率(假设基准文件的行数为m,属性列为k,待目标文件的行数为n,属性列为g,那么时间复杂度为
Figure 433010DEST_PATH_IMAGE002
)。目前针对这种大量数据的比对,存在几种相似的解决方案。
现有技术公开一种文件比对方法,首先通过参数文件确定文件中的一列或者多列组成唯一标识,并通过哈希算法计算出这些唯一标识列的哈希值,得到内容标识编码KEY,同理将需要对比的列的值,通过哈希算法得到内容标识编码VALUE,通过对KEY和VALUE的对比,来找到基准文件和目标文件的内容差异。这种方法相对于逐行比较,确实可以显著降低算法复杂度,但是存在两个主要的问题:1. 没有考虑当唯一标识列改变,而对比列没有变化或者只有很小部分改变的情况下,此时此行并不是删除,而是属于属性或属性值修改。2.该专利只考虑了基准文件和目标文件行之间的删除和新增,以及列之间的属性修改,并没有考虑列的新增和删除,换而言之,该专利只考虑了两个文件属性一致的情况,而对于属性列可以新增或者删除的情况,则没有办法解决。
另一种现有技术中提出一种文件差异的对比方法和装置,提出将变更前以及变更后的文件内容转化为第一矩阵以及第二矩阵,并将第一矩阵和第二矩阵的第一特征列和第二特征列转换为哈希表再进行比较,该专利主要是为了比较非结构化数据差异对比的问题,并没有利用到结构化或者半结构化数据的特点,因而并不适用于本申请的情景。
发明内容
本发明的首要目的是提供一种临床试验数据的快速比对方法,快速定位结构化或半结构化文件差异位置,不仅可以更加精准的计算出行与行之间的变化,同时还能计算出每行中属性(列)的差异性。
为解决上述技术问题,本发明的技术方案如下:
一种临床试验数据的快速比对方法,临床试验数据以sas7bdat或者excel格式存储,存储时以行为单位,每一行均包含多列,将原始的存储文件为基准文件,修改后的存储文件为目标文件,所述比对方法包括以下步骤:
S1:选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;
S2:根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;
S3:分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;
S4:根据步骤S3求出的哈希值,分别构建基准文件以及目标文件的键哈希表;
S5:将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;
S6:将目标文件的键哈希表与基准文件的键哈希表进行比对,构建基准文件独有键哈希表和目标文件独有键哈希表;
S7:判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入步骤S8,若至少一个哈希表为空时,则结束比对;
S8:根据所述基准文件独有键哈希表,构建键哈希簇;
S9:将目标文件独有键哈希表与键哈希簇进行比对,标记有修改的行,并将基准文件中的对应的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的对应的键哈希从所述目标文件独有键哈希表中删除;
S10:基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。
优选地,步骤S3中分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值,具体为:
首先对特征列进行排序,按照特征列的列名来对特征列进行排序;
对每行数据,按序取出各特征列的值,根据值的类型计算其哈希值,对于能够提升至64位整型或双精度浮点型数据的数据类型,或者少于8个byte的字符串,将这些数据类型补齐至8byte,转换为16进制字符串后作为哈希值;对于其他数据类型,通过哈希算法将值转换为长度为8byte的哈希值。
优选地,步骤S6中构建基准文件独有键哈希表和目标文件独有键哈希表,具体为:
如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;
如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;
如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中。
优选地,步骤S7中判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若至少一个哈希表不为空,则结束比对,具体为:
当基准文件独有键哈希表与目标文件独有键哈希表均为空时,结束比对;
当目标文件独有键哈希表为空,只有基准文件独有键哈希表有值时,表明原本存在于基准文件中的行已经被删除,将这些被删除的行标记并输出后,结束比对;
当基准文件独有键哈希表为空,只有目标文件独有键哈希表有值时,表明这些行是在目标文件中新增的行,将这些新增行标记后,结束比对。
优选地,步骤S8中根据所述基准文件独有键哈希表,构建键哈希簇,具体为:
对基准文件独有键哈希表,遍历该表,将每个键哈希拆回对应特征列的哈希值序列,同时,维护C_k个哈希字典,其中,C_k为特征列的数量,每个哈希字典的KEY为对应特征列的哈希值,value则为一个由行号构成的集合;将键哈希拆出的N个特征列哈希值后,使用这些哈希值将行号插入到所述C_k个哈希字典中,所述C_k个哈希字典合起来称为键哈希簇。
优选地,步骤S9具体为:
将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;
按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除。
优选地,步骤S6开始比对时,先判断目标文件的行数是否小于设定值,若小于设定值,执行步骤S6,若不小于设定值,从目标文件中随机抽取10%的行进行对比,并计算占比值和改进算法阈值,若占比值小于改进算法阈值,执行步骤S6,若占比值大于等于改进算法阈值,执行改进算法;
所述改进算法包括以下步骤:
从目标文件中随机抽取10%的行进行对比得到存在修改数据的总行数N_mod,取出修改行数超过N_mod/2的列形成集合C_d,将集合C_d中的列的列号记录下来,作为单独比对列集合;
通过键哈希匹配,找到基准文件与目标文件的对应行,将基准文件的该行中的单独比对列集合内的值取出,直接与目标文件对应行中的这些列的值比较,求得单独比对列中的不一致情况,然后将目标文件中对应位置的值替换成基准文件中的单独比对列的值,再对目标文件中的对应行计算行哈希,与基准文件的行哈希进行对比,如果对比一致则说明单独比对列以外不存在不同的值,不一致则逐值对比,找到所有不匹配的值。
优选地,所述计算占比值和改进算法阈值,具体为:
从目标文件中随机抽取10%的行进行对比,统计被修改的行中,各列的被修改次数,即各列的修改行数;
所述占比值R_Cd_mod的计算方式如下:
R_Cd_mod=N_Cd_mod/N_mod
式中,N_Cd_mod为集合C_d各列有修改的行数;
所述改进算法阈值R_th的计算方式如下:
R_th=(C-1-|C_d|)/(C-1)
式中,C为目标文件的总列数,|C_d|为集合C_d中的列数。
优选地,在改进算法中,将当前目标文件中求出的哈希和单独比对列的列号一起保存,在下一次比对时,将当前的目标文件记录为基准文件1,而将当前的基准文件记为基准文件0;在下一次比对的目标文件中,应当先使用基准文件1中的单独比对列与目标文件的对应列比对,然后将基准文件0中的单独比对列的值填充到目标文件的对应列中,计算行哈希,然后再与基准文件1的行哈希进行比对,如果行哈希一致,则目标文件与基准文件1中除单独比对列以外的其他列的值均一致,如果行哈希不一致,再逐值比对,由此可获得下一次比对时候的比对结果。
优选地,在改进算法的下一次比对中,发现有一列单独比对列在基准文件1与目标文件中超过90%一致,在比对完毕后调整单独比对列,将完全一致的列剔除出单独比对列,然后重新计算各行的行哈希,待下一次比对时使用。
一种快速临床试验数据比对系统,包括:
配置文件生成模块,所述配置文件生成模块选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;
共有特征列确定模块,所述共有特征列确定模块根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;
共有特征列哈希模块,所述共有特征列哈希模块用于分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;
键哈希表模块,所述键哈希表模块用于根据共有特征列哈希模块求出的哈希值,分别构建基准文件以及目标文件的键哈希表;
行哈希表模块,所述行哈希表模块用于将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;
第一次比对模块,所述第一比对模块将目标文件的键哈希表与基准文件的键哈希表进行比对,有以下情况:
如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;
如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;
如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中;
判断模块,所述判断模块判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入键哈希簇模块,若至少一个哈希表为空时,则结束比对;
键哈希簇模块,所述键哈希簇模块根据所述基准文件独有键哈希表,构建键哈希簇;
第二次比对模块,所述第二次比对模块将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;
按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除;
比对完成模块,所述比对完成模块用于将基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。
与现有技术相比,本发明技术方案的有益效果是:
针对结构化或者半结构化的数据,本发明所实现的比对算法可以快速高效的计算出文件的差异。首先,本发明算法实现过程中产生的中间数据如键哈希表,行哈希表,在比较时,可以以接近O(R) (R为目标文件行数),的时间复杂度完成一次文件比对,并且可以应对数据库导出时各行随机排列的情况。其次本发明通过建立键哈希簇,保证了在键哈希发生变化时,依然能够快速的查找到对应的行,避免了键哈希的个别改动导致该行记录被标记为删除和新增的情况,能够最大限度的让数据管理人员精确追踪到各个数据点的变化。再次,本发明通过改进的行哈希比对方法,能够在数据集中发生整行变动时,依然能够以接近O(R)的时间复杂度完成比对,而不至于退化成一个逐值比对的算法。这些算法都是针对CRO的数据库变化特性设计的,因此本发明在CRO业务场景中具有非常良好的应用前景与商业价值。
附图说明
图1为本发明的方法流程示意图。
图2为本发明的改进算法条件判断方法示意图。
图3为改进算法流程示意图。
图4为本发明的系统模块示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提供一种临床试验数据的快速比对方法,如图1所示,临床试验数据以sas7bdat或者excel格式存储,存储时以行为单位,每一行均包含多列,将原始的存储文件为基准文件,修改后的存储文件为目标文件,所述比对方法包括以下步骤:
S1:选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;
本实施例中,特征列的取值具有唯一性,但并不能认为特征列的值是不会被修改的。一个典型的例子是,通常在临床试验中,受试者ID会被取作特征列,但也存在临床运营人员看错受试者ID,错误的将一名受试者的数据记录到另一名受试者的数据表中的情况,经CRO发起数据质疑后,需要在数据库中更正受试者ID。
本发明相对于前述各专利的一大特征就是当特征列的取值发生改变时,也能追踪到是某一行的数据发生了变动,而不是认为是删除了一行旧数据,新增了一行新数据。
S2:根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;
S3:分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;
S4:根据步骤S3求出的哈希值,分别构建基准文件以及目标文件的键哈希表;
S5:将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;
S6:将目标文件的键哈希表与基准文件的键哈希表进行比对,构建基准文件独有键哈希表和目标文件独有键哈希表;
S7:判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入步骤S8,若至少一个哈希表为空时,则结束比对;
S8:根据所述基准文件独有键哈希表,构建键哈希簇;
S9:将目标文件独有键哈希表与键哈希簇进行比对,标记有修改的行,并将基准文件中的对应的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的对应的键哈希从所述目标文件独有键哈希表中删除;
S10:基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。
实施例2
本实施例在实施例1的基础上,继续公开以下内容:
步骤S3中分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值,具体为:
首先对特征列进行排序,按照特征列的列名来对特征列进行排序;
对每行数据,按序取出各特征列的值,根据值的类型计算其哈希值,对于能够提升至64位整型或双精度浮点型数据的数据类型,或者少于8个byte的字符串,将这些数据类型补齐至8byte,转换为16进制字符串后作为哈希值;对于其他数据类型,通过哈希算法(例如sha1算法,但不仅限于sha1算法,其他哈希算法都可以)将值转换为长度为8byte的哈希值。
步骤S6中构建基准文件独有键哈希表和目标文件独有键哈希表,具体为:
如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;
如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;
如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中。
步骤S7中判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若至少一个哈希表不为空,则结束比对,具体为:
当基准文件独有键哈希表与目标文件独有键哈希表均为空时,结束比对;
当目标文件独有键哈希表为空,只有基准文件独有键哈希表有值时,表明原本存在于基准文件中的行已经被删除,将这些被删除的行标记并输出后,结束比对;
当基准文件独有键哈希表为空,只有目标文件独有键哈希表有值时,表明这些行是在目标文件中新增的行,将这些新增行标记后,结束比对。
步骤S8中根据所述基准文件独有键哈希表,构建键哈希簇,具体为:
对基准文件独有键哈希表,遍历该表,将每个键哈希拆回对应特征列的哈希值序列,同时,维护C_k个哈希字典,其中,C_k为特征列的数量,每个哈希字典的KEY为对应特征列的哈希值,value则为一个由行号构成的集合;将键哈希拆出的N个特征列哈希值后,使用这些哈希值将行号插入到所述C_k个哈希字典中,所述C_k个哈希字典合起来称为键哈希簇。
步骤S9具体为:
将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;
按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除。
实施例3
本实施例针对表格中可能出现的新增列,或者整列删除,或者整列改变的情况,在实施例1和实施例2基本算法流程的基础上,还提供一种优化的处理方法。
当对比表格中出现了整列的变动时(包括新增列、整列删除、整列修改),步骤S6中的“如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出”这个流程将会对每一次行比对中执行,会使得算法在这种情况下的复杂度由O(R)退化为O(R*C),其中R为表行数,C为表列数。整行/列变更在数据集变化中非常常见,为保障算法在这种情况下的效率,本实施例在上述步骤S6的基础上提出了改进算法如下:
步骤S6开始比对时,先判断目标文件的行数是否小于设定值,若小于设定值,执行步骤S6,若不小于设定值,从目标文件中随机抽取10%的行进行对比,并计算占比值和改进算法阈值,若占比值小于改进算法阈值,执行步骤S6,若占比值大于等于改进算法阈值,执行改进算法;
所述改进算法如图3所示,包括以下步骤:
从目标文件中随机抽取10%的行进行对比得到存在修改数据的总行数N_mod,取出修改行数超过N_mod/2的列形成集合C_d,将集合C_d中的列的列号记录下来,作为单独比对列集合;
通过键哈希匹配,找到基准文件与目标文件的对应行,将基准文件的该行中的单独比对列集合内的值取出,直接与目标文件对应行中的这些列的值比较,求得单独比对列中的不一致情况,然后将目标文件中对应位置的值替换成基准文件中的单独比对列的值,再对目标文件中的对应行计算行哈希,与基准文件的行哈希进行对比,如果对比一致则说明单独比对列以外不存在不同的值,不一致则逐值对比,找到所有不匹配的值。
如图2所示,所述计算占比值和改进算法阈值,具体为:
从目标文件中随机抽取10%的行进行对比,统计被修改的行中,各列的被修改次数,即各列的修改行数;
所述占比值R_Cd_mod的计算方式如下:
R_Cd_mod=N_Cd_mod/N_mod
式中,N_Cd_mod为集合C_d各列有修改的行数;
所述改进算法阈值R_th的计算方式如下:
R_th=(C-1-|C_d|)/(C-1)
式中,C为目标文件的总列数,|C_d|为集合C_d中的列数。
阈值R_th为根据原算法执行计算量与执行改进算法预估的计算量比较后得出的阈值,高于此阈值代表执行改进算法流程较为节省计算时间,低于此阈值代表执行原算法较为节省计算时间。
在改进算法中,将当前目标文件中求出的哈希和单独比对列的列号一起保存。
当前的目标文件,在下次比对时,会变为基准文件,因此需要将当前目标文件中求出的哈希保存,以备下次使用。在原步骤中,每次计算的行哈希可以直接留存待下次对比,在改进步骤中,行哈希的计算排除了单独比对列,因此需要将单独比对列的列号也存储下来。
在改进算法中,在下一次比对时,将当前的目标文件记录为基准文件1,而将当前的基准文件记为基准文件0;在下一次比对的目标文件中,应当先使用基准文件1中的单独比对列与目标文件的对应列比对,然后将基准文件0中的单独比对列的值填充到目标文件的对应列中,计算行哈希,然后再与基准文件1的行哈希进行比对,如果行哈希一致,则目标文件与基准文件1中除单独比对列以外的其他列的值均一致,如果行哈希不一致,再逐值比对,由此可获得下一次比对时候的比对结果。
在改进算法的下一次比对中,发现有一列单独比对列在基准文件1与目标文件中超过90%一致,在比对完毕后调整单独比对列,将完全一致的列剔除出单独比对列,然后重新计算各行的行哈希,待下一次比对时使用。
经过上述改进步骤后,当数据集中出现频繁且影响较广泛的变化列时(例如记录时间戳的列),本算法依然能高效的以接近O(R)的时间复杂度执行。而当发生偶发性的整列改动后,本改进算法也能够保证增加的单独比对列能够在这一列变化完毕后2个版本内,能够重新回归到行哈希的比对,不至于随着比对次数的增多,单独比对列会逐渐增加,导致算法退化。
实施例4
本实施例提供一种快速临床试验数据比对系统,如图4所示,包括:
配置文件生成模块,所述配置文件生成模块选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;
共有特征列确定模块,所述共有特征列确定模块根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;
共有特征列哈希模块,所述共有特征列哈希模块用于分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;
键哈希表模块,所述键哈希表模块用于根据共有特征列哈希模块求出的哈希值,分别构建基准文件以及目标文件的键哈希表;
行哈希表模块,所述行哈希表模块用于将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;
第一次比对模块,所述第一比对模块将目标文件的键哈希表与基准文件的键哈希表进行比对,有以下情况:
如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;
如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;
如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中;
判断模块,所述判断模块判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入键哈希簇模块,若至少一个哈希表为空时,则结束比对;
键哈希簇模块,所述键哈希簇模块根据所述基准文件独有键哈希表,构建键哈希簇;
第二次比对模块,所述第二次比对模块将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;
按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除;
比对完成模块,所述比对完成模块用于将基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (8)

1.一种临床试验数据的快速比对方法,其特征在于,临床试验数据包括有若干行,每一行包括若干列,将原始的存储文件为基准文件,修改后的存储文件为目标文件,所述比对方法包括以下步骤:
S1:选择临床试验数据中的取值组合在一起在数据库内具有唯一性的几列作为特征列,形成特征列配置文件;
S2:根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;
S3:分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;
S4:根据步骤S3求出的哈希值,分别构建基准文件以及目标文件的键哈希表;
S5:将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;
S6:将目标文件的键哈希表与基准文件的键哈希表进行比对,构建基准文件独有键哈希表和目标文件独有键哈希表;
S7:判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入步骤S8,若至少一个哈希表为空时,则结束比对;
S8:根据所述基准文件独有键哈希表,构建键哈希簇;
S9:将目标文件独有键哈希表与键哈希簇进行比对,标记有修改的行,并将基准文件中的对应的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的对应的键哈希从所述目标文件独有键哈希表中删除;
S10:基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对;
步骤S6中构建基准文件独有键哈希表和目标文件独有键哈希表,具体为:
如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;
如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;
如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中;
步骤S8中根据所述基准文件独有键哈希表,构建键哈希簇,具体为:
对基准文件独有键哈希表,遍历该表,将每个键哈希拆回对应特征列的哈希值序列,同时,维护C_k个哈希字典,其中,C_k为特征列的数量,每个哈希字典的KEY为对应特征列的哈希值,value则为一个由行号构成的集合;将键哈希拆出的N个特征列哈希值后,使用这些哈希值将行号插入到所述C_k个哈希字典中,所述C_k个哈希字典合起来称为键哈希簇。
2.根据权利要求1所述的临床试验数据的快速比对方法,其特征在于,步骤S3中分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值,具体为:
首先对特征列进行排序,按照特征列的列名来对特征列进行排序;
对每行数据,按序取出各特征列的值,根据值的类型计算其哈希值,对于能够提升至64位整型或双精度浮点型数据的数据类型,或者少于8个byte的字符串,将这些数据类型补齐至8byte,转换为16进制字符串后作为哈希值;对于其他数据类型,通过哈希算法将值转换为长度为8byte的哈希值。
3.根据权利要求1所述的临床试验数据的快速比对方法,其特征在于,步骤S7中判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若至少一个哈希表不为空,则结束比对,具体为:
当基准文件独有键哈希表与目标文件独有键哈希表均为空时,结束比对;
当目标文件独有键哈希表为空,只有基准文件独有键哈希表有值时,表明原本存在于基准文件中的行已经被删除,将这些被删除的行标记并输出后,结束比对;
当基准文件独有键哈希表为空,只有目标文件独有键哈希表有值时,表明这些行是在目标文件中新增的行,将这些新增行标记后,结束比对。
4.根据权利要求3所述的临床试验数据的快速比对方法,其特征在于,步骤S9具体为:
将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;
按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除。
5.根据权利要求4所述的临床试验数据的快速比对方法,其特征在于,步骤S6开始比对时,先判断目标文件的行数是否小于设定值,若小于设定值,执行步骤S6,若不小于设定值,从目标文件中随机抽取10%的行进行对比,并计算占比值和改进算法阈值,若占比值小于改进算法阈值,执行步骤S6,若占比值大于等于改进算法阈值,执行改进算法;
所述改进算法包括以下步骤:
从目标文件中随机抽取10%的行进行对比得到存在修改数据的总行数N_mod,取出修改行数超过N_mod/2的列形成集合C_d,将集合C_d中的列的列号记录下来,作为单独比对列集合;
通过键哈希匹配,找到基准文件与目标文件的对应行,将基准文件的该行中的单独比对列集合内的值取出,直接与目标文件对应行中的对应列的值比较,求得单独比对列中的不一致情况,然后将目标文件中对应位置的值替换成基准文件中的单独比对列的值,再对目标文件中的对应行计算行哈希,与基准文件的行哈希进行对比,如果对比一致则说明单独比对列以外不存在不同的值,不一致则逐值对比,找到所有不匹配的值。
6.根据权利要求5所述的临床试验数据的快速比对方法,其特征在于,所述计算占比值和改进算法阈值,具体为:
从目标文件中随机抽取10%的行进行对比,统计被修改的行中,各列的被修改次数,即各列的修改行数;
所述占比值R_Cd_mod的计算方式如下:
R_Cd_mod=N_Cd_mod/N_mod
式中,N_Cd_mod为集合C_d各列有修改的行数;
所述改进算法阈值R_th的计算方式如下:
R_th=(C-1-|C_d|)/(C-1)
式中,C为目标文件的总列数,|C_d|为集合C_d中的列数。
7.根据权利要求6所述的临床试验数据的快速比对方法,其特征在于,在改进算法中,将当前目标文件中求出的哈希和单独比对列的列号一起保存,在下一次比对时,将当前的目标文件记录为基准文件1,而将当前的基准文件记为基准文件0;在下一次比对的目标文件中,应当先使用基准文件1中的单独比对列与目标文件的对应列比对,然后将基准文件0中的单独比对列的值填充到目标文件的对应列中,计算行哈希,然后再与基准文件1的行哈希进行比对,如果行哈希一致,则目标文件与基准文件1中除单独比对列以外的其他列的值均一致,如果行哈希不一致,再逐值比对,由此可获得下一次比对时候的比对结果。
8.根据权利要求7所述的临床试验数据的快速比对方法,其特征在于,在改进算法的下一次比对中,发现有一列单独比对列在基准文件1与目标文件中超过90%一致,在比对完毕后调整单独比对列,将完全一致的列剔除出单独比对列,然后重新计算各行的行哈希,待下一次比对时使用。
CN202210709642.3A 2022-06-22 2022-06-22 一种临床试验数据的快速比对方法 Active CN114791916B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210709642.3A CN114791916B (zh) 2022-06-22 2022-06-22 一种临床试验数据的快速比对方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210709642.3A CN114791916B (zh) 2022-06-22 2022-06-22 一种临床试验数据的快速比对方法

Publications (2)

Publication Number Publication Date
CN114791916A CN114791916A (zh) 2022-07-26
CN114791916B true CN114791916B (zh) 2022-10-11

Family

ID=82463796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210709642.3A Active CN114791916B (zh) 2022-06-22 2022-06-22 一种临床试验数据的快速比对方法

Country Status (1)

Country Link
CN (1) CN114791916B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678583A (zh) * 2013-12-11 2014-03-26 北京华胜天成科技股份有限公司 结构化数据比较的方法及系统
CN105138635A (zh) * 2015-08-21 2015-12-09 中国人民解放军装备学院 一种利用哈希值比对进行数据增量复制的方法
US10642808B1 (en) * 2015-11-01 2020-05-05 Yellowbrick Data, Inc. System and method for identifying matching portions of two sets of data in a multiprocessor system
CN111258966A (zh) * 2020-01-14 2020-06-09 软通动力信息技术有限公司 一种数据去重方法、装置、设备及存储介质
CN112597158A (zh) * 2020-12-17 2021-04-02 平安普惠企业管理有限公司 数据匹配方法、装置、计算机设备和存储介质
CN113836157A (zh) * 2021-09-18 2021-12-24 上海安钛飞信息技术有限公司 获取数据库增量数据的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803040B2 (en) * 2017-08-28 2020-10-13 International Business Machines Corporation Efficient and accurate lookups of data by a stream processor using a hash table

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678583A (zh) * 2013-12-11 2014-03-26 北京华胜天成科技股份有限公司 结构化数据比较的方法及系统
CN105138635A (zh) * 2015-08-21 2015-12-09 中国人民解放军装备学院 一种利用哈希值比对进行数据增量复制的方法
US10642808B1 (en) * 2015-11-01 2020-05-05 Yellowbrick Data, Inc. System and method for identifying matching portions of two sets of data in a multiprocessor system
CN111258966A (zh) * 2020-01-14 2020-06-09 软通动力信息技术有限公司 一种数据去重方法、装置、设备及存储介质
CN112597158A (zh) * 2020-12-17 2021-04-02 平安普惠企业管理有限公司 数据匹配方法、装置、计算机设备和存储介质
CN113836157A (zh) * 2021-09-18 2021-12-24 上海安钛飞信息技术有限公司 获取数据库增量数据的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
浅析基于 ETL 技术和全表扫描哈希对比的数据同步方法;王志学;《广东轻工职业技术学院学报》;20110615;第10卷(第2期);全文 *

Also Published As

Publication number Publication date
CN114791916A (zh) 2022-07-26

Similar Documents

Publication Publication Date Title
US7558725B2 (en) Method and apparatus for multilingual spelling corrections
Bilke et al. Schema matching using duplicates
JP6113740B2 (ja) 変数トークンネットワークに基づくデータクラスタ化
US6636850B2 (en) Aggregate score matching system for transaction records
JP5328808B2 (ja) データをクラスタリングする方法、システム、装置およびその方法を適用するためのコンピュータ・プログラム
US10453559B2 (en) Method and system for rapid searching of genomic data and uses thereof
US20080005106A1 (en) System and method for automatic weight generation for probabilistic matching
US9442991B2 (en) Ascribing actionable attributes to data that describes a personal identity
US20190370368A1 (en) Data consistency verification method and system minimizing load of original database
CN104750852B (zh) 中文地址数据的发现与分类方法
Herranz et al. Optimal symbol alignment distance: A new distance for sequences of symbols
CN114791916B (zh) 一种临床试验数据的快速比对方法
US20030126138A1 (en) Computer-implemented column mapping system and method
EP3629206B1 (en) Code duplicate identification method for converting source code into numeric identifiers and comparison against large data sets
US20040044683A1 (en) Data compiling method
CN106682107B (zh) 数据库表关联关系确定方法及装置
CN114090558A (zh) 针对数据库的数据质量管理方法和装置
KR102013839B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
CN117390064B (zh) 一种基于可嵌入子图的数据库查询优化方法
EP4235453A1 (en) Method for creating an index for reporting large-scale variant clusterings
US20220392578A1 (en) Apparatus and method for genome sequence alignment acceleration
CN117807113A (zh) 一种数据查询方法、装置、设备及介质
CN116186078A (zh) 一种数据检索方法及系统
CN116975031A (zh) 基于数据指标体系快速建立数据质量监测规则标准的方法
CN116150286A (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
TA01 Transfer of patent application right

Effective date of registration: 20220920

Address after: 510663 D105, d107, No. 3, Juquan Road, Huangpu District, Guangzhou, Guangdong

Applicant after: Guangdong Jiena Pharmaceutical Technology Co.,Ltd.

Applicant after: Tianjin Gena Pharmaceutical Technology Development Co.,Ltd.

Address before: Room 701-708, Building H, No. 3, Juquan Road, Huangpu District, Guangzhou City, Guangdong Province, 510670

Applicant before: Guangdong Jiena Pharmaceutical Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant