数据处理方法及装置、数据来源获取方法及装置
文献发布时间:2023-06-19 11:02:01
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法及装置、数据来源获取方法及装置。
背景技术
DW(Data Warehouse,数据仓库)是为企业所有级别的决策制定过程提供所有类型数据支持的战略集合。数据仓库是单个数据存储出于分析性报告和决策支持目的而创建的,能够为需要业务智能的企业提供指导业务流程改进、监视时间、成本、质量以及控制的信息。
在数据仓库中,数据以表的形式存储。在不同应用场景中,通常需要对数据表进行加工处理,得到新的数据表。加工处理的链路越长,得到的数据表数量越多。当某个加工处理后的数据表出现错误时,需要向上溯源,以找到问题的源头。
发明内容
为克服相关技术中存在的问题,本发明提供了一种数据处理方法及装置、数据来源获取方法及装置。
根据本发明实施例的第一方面,提供一种数据处理方法,包括:
在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
根据本发明实施例的第二方面,提供一种来源获取方法,包括:
针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息;
根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
根据本发明实施例的第三方面,提供一种数据处理装置,包括:
单元标识获取模块,用于在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列;
添加模块,用于将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
根据本发明实施例的第四方面,提供一种数据来源获取装置,包括:
值获取模块,用于针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息;
来源确定模块,用于根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
本发明实施例提供的技术方案可以包括以下有益效果:
本发明实施例,通过在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息,所述单元标识信息用于指示所述单元所在的表、行和列,将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,可以在目标数据表中记录数据的单元级别的来源位置,从而在对数据表进行问题溯源时,能够准确、快速地定位到问题所在的具体数据表的具体单元。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本发明实施例提供的数据处理方法的流程示例图。
图2是本发明实施例提供的数据来源获取方法的流程示例图。
图3是本发明实施例提供的数据处理装置的功能方块图。
图4是本发明实施例提供的数据来源获取装置的功能方块图。
图5是本发明实施例提供的电子设备的一个硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
在本发明实施例使用的术语是仅仅出于描述特定本发明实施例的目的,而非旨在限制本发明实施例。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面通过实施例对本发明提供的数据处理方法进行详细说明。
图1是本发明实施例提供的数据处理方法的流程示例图。
S101,在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列。
S102,将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
其中,数据字段是指数据表中用于存储业务数据的字段,例如学生信息数据表中的数据字段可以包括学号、姓名、年龄等。
本实施例中,单元标识信息能够指示数据表中数据字段的每个单元所在的表、行和列,因此,通过单元标识信息,就可以知道相应单元在哪个数据表中,以及在该数据表的哪一行哪一列。
其中,单元是指由数据表中的行和列确定的数据表中的存储单位。例如,本文中,将下面表1所示的数据表记为数据表t1,其中,填写“甲”的单元格即为数据表t1的一个单元,“甲”为该单元中的值。数据表t1中,字段“name”、“age”为数据字段。
表1未扩展的数据表t1
本实施例中,通过将源数据表中数据单元的单元标识信息添加到目标数据表中数据字段的相应单元对应的来源字段的单元中,使得可以根据目标数据表中数据字段的单元对应的来源字段的单元的值,确定目标数据表中数据字段的单元中的值的来源数据位于源数据表中的哪个单元。
其中,来源字段用于存储目标数据表对应的源数据表中数据单元的单元标识信息。
在一个示例中,来源字段可以属于所述目标数据表。
在另一个示例中,来源字段可以属于所述目标数据表对应的辅助数据表。
本实施例中,数据仓库中的任一个数据表可以包括数据字段、行标识字段、列标识字段和来源字段。
因此,在一个示例中,所述源数据表和所述目标数据表均包括数据字段、行标识字段、列标识字段和来源字段;
其中,行标识字段中每个单元的值为该单元所在行的行标识,同一数据表中不同行的行标识不同;
列标识字段中每个单元的值为所述列标识字段所在数据表的数据字段中相应单元的单元标识信息;
来源字段中每个单元的值为该单元对应的源数据表中数据字段的相应单元的单元标识信息。
其中,最原始的源数据表中来源字段的值为空。例如,假设对数据表a进行加工处理得到数据表b,对数据表b进行加工处理得到数据表c,对数据表c进行加工处理得到数据表d,则数据表a为最原始的源数据表,数据表b既是数据表a的目标数据表,又是数据表c的源数据表,依次类推。该4个数据表中,数据表a的来源字段的值为空,数据表b、数据表c、数据表d的来源字段的值不为空。
例如,假设数据表t1为最原始的源数据表,在前述表1所示的数据表t1的基础上扩展出行标识字段、列标识字段和来源字段后,得到的新的数据表t1可以如表2所示。这些扩展出的列本文中称为辅助列
表2扩展后的数据表t1
表2中,字段“rowkey”为行标识字段,字段“t_name”为数据字段“name”对应的列标识字段,字段“t_age”为数据字段“age”对应的列标识字段,字段“s_name”为数据字段“name”对应的来源字段,字段“s_age”为数据字段“age”对应的来源字段。
假设对表2所示的数据表t1进行去重处理,得到数据表t1对应的目标数据表为数据表t0,数据表t0的内容如表3所示。
表3数据表t0
在上述基础上(指所述源数据表和所述目标数据表均包括数据字段、行标识字段、列标识字段和来源字段),在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,可以包括:
在所述源数据表的列标识字段的各个单元中,确定所述单元对应的第一单元;
读取所述第一单元中的值,所述第一单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表的来源字段中确定所述第二单元对应的第三单元,并将所述单元标识信息添加到所述第三单元中。
例如,上述表2所示的数据表t1为源数据表,上述表3所示的数据表t0为目标数据表。请参见表2和表3,数据表t1中数据字段“name”中的单元“甲”对应数据表t1中的列标识字段“t_name”的单元“t1#key1$name”,该值“t1#key1$name”即为数据字段“name”中的单元“甲”对应的单元标识信息;在数据表t0中确定与数据表t1中单元“甲”对应的数据字段“username”的单元“甲”,在数据表t0中确定与数据字段“username”的单元“甲”对应的来源字段“s_username”的单元(表3中值“t1#key1$name”所在单元),将值“t1#key1$name”添加到该单元中。
本实施例中,数据仓库中的任一个数据表可以作为主数据表,每个主数据表可以配置对应的辅助数据表。
因此,在一个示例中,所述源数据表和所述目标数据表均有对应的辅助数据表,所述源数据表和所述目标数据表作为主数据表,主数据表包括数据字段,辅助数据表包括行标识字段、列标识字段和来源字段;
辅助数据表中,所述行标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元所在行的行标识,同一主数据表中不同行的行标识不同;
辅助数据表中,所述列标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元的单元标识信息;
辅助数据表中,所述来源字段中每个单元的值为该单元对应的主数据表的源数据表中数据字段的相应单元的单元标识信息。
例如,表1所示数据表t1为主数据表时,对应的辅助数据表可以如表4所示。
表4表1所示数据表t1对应的辅助数据表
表4中,字段“rowkey”为行标识字段,字段“t_name”为表1中数据字段“name”对应的列标识字段,字段“t_age”为表1中数据字段“age”对应的列标识字段,字段“s_name”为表1中数据字段“name”对应的来源字段,字段“s_age”为表1中数据字段“age”对应的来源字段。
相应地,数据表t0对应的主数据表和辅助数据表可以分别如表5、表6所示。
表5数据表t0对应的主数据表
表6数据表t0对应的辅助数据表
在上述基础上(指所述源数据表和所述目标数据表均有对应的辅助数据表,所述源数据表和所述目标数据表作为主数据表,主数据表包括数据字段,辅助数据表包括行标识字段、列标识字段和来源字段),在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,可以包括:
在所述源数据表对应的辅助数据表的列标识字段的各个单元中,确定所述单元对应的第四单元;
读取所述第四单元中的值,所述第四单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表对应的辅助数据表的来源字段中确定所述第二单元对应的第五单元,并将所述单元标识信息添加到所述第五单元中。
例如,请参见表1、表4、表5、表6,对于数据表t1的主数据表(如表1所示)的数据字段“name”中的单元“甲”,在数据表t1的辅助数据表(如表4所示)中确定对应的列标识字段“t_name”的单元“t1#key1$name”,读取值“t1#key1$name”,该值即为表1中数据字段“name”中的单元“甲”对应的单元标识信息;在数据表t0的主数据表(如表5所示)中,确定与表1中数据字段“name”的单元“甲”对应的数据字段“username”的单元“甲”,在数据表t0的辅助数据表(如表6所示)中,确定与表5中数据字段“username”的单元“甲”对应的单元(表6中值“t1#key1$name”所在单元,处于来源字段“s_username”下),将值“t1#key1$name”添加到该单元中。
在一个示例中,所述行标识字段中各个单元中的行标识的获取过程包括:
获取该单元所在数据表的表名或者该单元所在辅助数据表对应的主数据表的表名;
确定该单元在所在数据表中所处的目标行,或者该单元在所在辅助数据表所处行对应的主数据表的目标行;
获取所述目标行对应的第一数值;同一数据表中不同行对应的第一数值不同;
根据所述表名和所述目标行对应的第一数值,确定该单元的行标识。
例如,表2中行标识字段“rowkey”的第2个单元(表2中值为“t1#key2”的单元),所在数据表的表名为“数据表t1”,该单元在数据表t1中所处的行为第2行,该行对应的值为“ID00002”。假设根据值“ID00002”获得的第一数值为key2,则该单元的行标识可以为“t1#key2”。
再例如,表4所示的数据表t1的辅助数据表中,行标识字段“rowkey”的第3个单元(表3中值为“t1#key3”的单元),该单元在数据表t1的辅助数据表中所处的行为第2行,对应的主数据表为表1,目标行对应的值为“ID00003”。表1中数据字段“name”的单元“乙”所在数据表的表名为“数据表t1”,单元“乙”在数据表t1中所处的行为第2行,该行对应的值为“ID00003”。假设根据值“ID00003”获得的第一数值为key3,则该单元的行标识可以为“t1#key3”。
在一个示例中,所述行标识包括所述表名、第一连接符和所述第一数值。
例如,行标识“t1#key2”中,“t1”为表名,“#”为第一连接符,“key2”为第一数值。需要说明的是,行标识中表名、第一连接符和第一数值的排列顺序不限于行标识“t1#key2”所表示的顺序,还可以采用其他的排列顺序,例如排列顺序还可以是:第一数值、第一连接符、表名。
当然,第一连接符不限于“#”,也可以采用其他的符号作为第一连接符。
其中,第一数值可以通过对各行的值进行MD5摘要计算得到,或者使用UUID()函数生成,确保每行的rowkey唯一不重复即可。
在一个示例中,所述列标识字段中每个单元的单元标识信息的获取过程可以包括:
获取该单元在所在数据表中对应的数据字段的字段名称或者该单元所在辅助数据表对应的主数据表中对应的数据字段的字段名称;
获取该单元在所在数据表中所处行的行标识或者该单元所在辅助数据表对应的主数据表中对应行的行标识;
根据所述字段名称和所述行标识,确定该单元的单元标识信息。
例如,表2中列标识字段“t_name”的第4个单元(表2中值为“t1#key4$name”的单元),所在数据表的表名为“数据表t1”,该单元在数据表t1中对应的数据字段的字段名称为“name”,该单元在数据表t1中所处行的行标识为“t1#key4”,根据字段名称“name”和行标识“t1#key4”可以确定该单元的单元标识信息为“t1#key4$name”。
再例如,表4所示的数据表t1的辅助数据表中,列标识字段“t_age”的第5个单元(表4中值“t1#key5$age”所在的单元),该单元所在辅助数据表对应的主数据表为表1,该单元在数据表1中对应的数据字段的字段名称为“age”,该单元在数据表1中对应行的行标识为“t1#key5”,根据字段名称“age”和行标识“t1#key5”可以确定该单元的单元标识信息为“t1#key5$age”。
其中,第二连接符不限于“$”,也可以采用其他的符号作为第二连接符。
在一个示例中,所述单元标识信息包括所述字段名称、第二连接符和所述行标识。
以上述的单元标识信息“t1#key5$age”为例,单元标识信息“t1#key5$age”包括字段名称“age”、第二连接符“$”和行标识“t1#key5”。需要说明的是,单元标识信息中字段名称、第二连接符和行标识的排列顺序不限于单元标识信息“t1#key5$age”所表示的顺序,还可以采用其他的排列顺序,例如排列顺序还可以是:字段名称、第二连接符和行标识。
在一个示例中,第二连接符与前述的第一连接符不同。
在一个示例中,源数据表的数量为一个或多个。也就是说,可以由一个源数据表生成一个目标数据表,也可以由两个或两个以上源数据表生成一个目标数据表。例如由表2所示的数据表t1生成表3所示的数据表t0的过程,即是由一个源数据表(表2所示的数据表t1)生成一个目标数据表(表3所示的数据表t0)。
假设数据表t2的内容如表7所示。
表7数据表t2
以表2所示的数据表t1和表7所示的数据表t2为源数据表,经过加工处理得到表8所示的数据表t3。
表8数据表t3
表8中,数据表t3的数据字段“username”来源于表2所示的数据表t1中的数据字段“name”,数据表t3的数据字段“userAge”来源于表7所示的数据表t2中的数据字段“age”,因此,数据表t3的来源字段“s_username”的值等于表2所示的数据表t1中列标识字段“t_name”的值,数据表t3的来源字段“s_userAge”的值等于表7所示的数据表t2中列标识字段“t_age”的值。
本实施例中,对源数据表的加工处理可以通过SQL(Structured Query Language,结构化查询语言)语句进行。
在对源数据表的加工处理过程中,可以通过修改后的SQL语句将源数据表的单元标识信息填入到目标数据表的来源字段。修改SQL语句的核心原理是在原始SQL语句的基础上,根据SQL语句中不同的SQL算子,添加对应的辅助执行语句。例如,不同类型的SQL算子的处理方法如下:
(1)DDL(Data Definition Language,数据库模式定义语言)语句:对需要添加的辅助字段的创建、删除、变更操作。
DDL语句为建表SQL语句,可以在原始DDL语句的基础上添加对应辅助列的处理语句。例如用于创建表2所示的数据表t1的修改后的DDL语句为:
CREATE TABLE t1(column1 int,
column2 int,
rowkey string,
t_column1 string,
t_column2 string,
s_column2 string,
s_column2 string)
(2)Select、Union、Join等操作:需要增加相应的处理语句
例如,对表2所示的数据表t1进行select操作,将数据从t1投影插入到目标数据表t0时,原始Select语句为:
nsert into t0(username,userAge)select name,age from t1;
修改后的Select语句为:
insert into t0(rowkey,username,userAge,t_username,t_userAge,s_username,s_userAge)
select concat('t0','#',uuid())as rowkey,
name,age,
concat('t0','#',uuid(),’$’,’username’),concat('t0','#',uuid(),’$’,’userAge’),
t_name,t_age from t1;
(3)去重语句(distinct)
原始去重语句:
insert into t0(username,userAge)
select a.name,a.age from
(
select distinct name,age
from t1
)as a;
修改后的去重语句:
insert into t0(rowkey,username,userAge,t_username,t_userAge,s_username,s_userAge)
select concat('t0','#',uuid())as rowkey,a.name,a.age,
concat('t0','#',uuid(),‘$’,‘username’),concat('t0','#',uuid(),‘$’,‘userAge’)
t_name,t_age
from
(
select name,age,t_name,t_age
row_number()over(partition by name order by name)as row_num
from t0
)as a
where a.row_num=1;
对表2所示的数据表t1使用修改后的去重语句进行加工处理后,得到表3所示的目标数据表t0。
(4)两表内关联语句(inner join)
原始的两表内关联SQL语句为:
insert into t0(username,userage)
select a.name b.age
from t1 a
inner join t2 b
on a.id=b.id;
修改后的两表内关联SQL语句为:
insert into t0(rowkey,username,userAge,t_username,t_userAge,s_username,s_userAge)
select concat('t0','#',uuid())as rowkey,
a.name,b.age,
concat('t0','#',uuid(),’$’,’username’),concat('t0','#',uuid(),’$’,’userAge’),
a.t_name,b.t_age from t1 a inner join t2 b on a.id=b.id;
例如,对表2所示的数据表t1和表7所示的数据表t2使用修改后的两表内关联语句进行加工处理后,得到前述表8所示的目标数据表t3。
(5)左右关联语句(left join/right join/all join)
例如,当将表2所示的数据表t1的数据字段“name”与表7所示的数据表t2的数据字段“age”进行左右关联时,原始的左右关联语句为:
insert into t0(username,userage)
select a.name b.age
from t1 a
left join t2 b
on a.id=b.id;
修改后的左右关联语句为:
insert into t4(rowkey,username,userAge,t_username,t_userAge,s_username,s_userAge)
select concat('t4','#',uuid())as rowkey,
a.name,b.age,
concat('t4','#',uuid(),’$’,’username’),concat('t4','#',uuid(),’$’,’userAge’),
a.t_name,b.t_age from t1 a left join t2 b on a.id=b.id;
上述修改后的左右关联语句被执行后,得到表9所示的数据表t4。
表9数据表t4
(6)假设语句(Case When)
原始的假设语句如下:
Insert into t0(name)select case when name=’甲’then age else name endfrom t1;
修改后的假设语句如下:
Insert into t0(rowkey,name,t_name,s_name)
select concat('t0','#',uuid())as rowkey,
case when name=’甲’then age else name end,
concat('t0','#',uuid(),’$’,’username’),
case when name=’甲’then t_age else t_name end
from t1;
(7)处理函数
处理函数包括数据函数、字符串函数、日期函数、窗口函数、聚合函数等。各处理函数的处理原则如下:
对于聚合函数,例如count、average、min、max等函数,其血缘关系是多到一的映射,不存储其血缘关系。因此聚合函数不需要修改。
其他函数的处理原则如下:
a、如果函数未引用源数据表字段,则无需处理。
b、如果函数引用单个源数据表字段,则处理方式同单个字段的处理。例如abs,asin,acos函数。
c、如果函数引用多个源数据表字段,此时有两种情形:
(1)如果输出值是多个源数据表字段的综合计算结果,则目标数据表的来源字段记录这些源数据表字段的信息。将这些信息通过特定方式组合存储。例如t1#key1$name,t2#key2$name,则来源字段存储的信息为t1#key1$name-t2#key2$name。典型的函数例如concat(string$A,string$B...)。
(2)如果输出值是多个源数据表字段的选择性结果,则修改为Case When的形式,且目标数据表的来源字段记录最终选择的源数据表字段的信息。例如coalesce函数。
需要说明的是,本实施例中并非所有的SQL语句都需要修改,不涉及数据血缘信息的SQL语句例如DML(Data Manipulation Language,数据库操作语句)语句不需要修改。
本发明实施例提供的数据处理方法,通过在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息,所述单元标识信息用于指示所述单元所在的表、行和列,将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,可以在目标数据表中记录数据的单元级别的来源位置,从而在对数据表进行问题溯源时,能够准确、快速地定位到问题所在的具体数据表的具体单元。
图2是本发明实施例提供的数据来源获取方法的流程示例图。如图2所示,数据来源获取方法可以包括:
S201,针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息。
S202,根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
例如,对于表3所示的数据表t3中的值“乙”所在的数据单元,对应的来源字段的单元是表3中的“t1#key2$name”所在单元,根据单元标识信息“t1#key2$name”,可以确定数据“乙”来源于数据表t1中行标识为“t1#key2”的行、字段名称为“name”的列对应的单元。
本发明实施例提供的数据来源获取方法,通过针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息,根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列,能够准确、快速地定位与目标数据表中数据单元对应的源数据表的具体单元,提高数据表问题溯源的速度。
图3是本发明实施例提供的数据处理装置的功能方块图。如图3所示,本实施例中,数据处理装置可以包括:
单元标识获取模块310,用于在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列;
添加模块320,用于将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
在一个示例中,所述来源字段属于所述目标数据表;或者,所述来源字段属于所述目标数据表对应的辅助数据表。
在一个示例中,所述源数据表和所述目标数据表均包括数据字段、行标识字段、列标识字段和来源字段;
所述行标识字段中每个单元的值为该单元所在行的行标识,同一数据表中不同行的行标识不同;
所述列标识字段中每个单元的值为所述列标识字段所在数据表的数据字段中相应单元的单元标识信息;
所述来源字段中每个单元的值为该单元对应的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表的列标识字段的各个单元中,确定所述单元对应的第一单元;
读取所述第一单元中的值,所述第一单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表的来源字段中确定所述第二单元对应的第三单元,并将所述单元标识信息添加到所述第三单元中。
在一个示例中,所述源数据表和所述目标数据表均有对应的辅助数据表,所述源数据表和所述目标数据表作为主数据表,主数据表包括数据字段,辅助数据表包括行标识字段、列标识字段和来源字段;
辅助数据表中,所述行标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元所在行的行标识,同一主数据表中不同行的行标识不同;
辅助数据表中,所述列标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元的单元标识信息;
辅助数据表中,所述来源字段中每个单元的值为该单元对应的主数据表的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表对应的辅助数据表的列标识字段的各个单元中,确定所述单元对应的第四单元;
读取所述第四单元中的值,所述第四单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表对应的辅助数据表的来源字段中确定所述第二单元对应的第五单元,并将所述单元标识信息添加到所述第五单元中。
在一个示例中,所述行标识字段中各个单元中的行标识的获取过程包括:
获取该单元所在数据表的表名或者该单元所在辅助数据表对应的主数据表的表名;
确定该单元在所在数据表中所处的目标行,或者该单元在所在辅助数据表所处行对应的主数据表的目标行;
获取所述目标行对应的第一数值;同一数据表中不同行对应的第一数值不同;
根据所述表名和所述目标行对应的第一数值,确定该单元的行标识。
在一个示例中,所述行标识包括所述表名、第一连接符和所述第一数值。
在一个示例中,所述列标识字段中每个单元的单元标识信息的获取过程包括:
获取该单元在所在数据表中对应的数据字段的字段名称或者该单元所在辅助数据表对应的主数据表中对应的数据字段的字段名称;
获取该单元在所在数据表中所处行的行标识或者该单元所在辅助数据表对应的主数据表中对应行的行标识;
根据所述字段名称和所述行标识,确定该单元的单元标识信息。
在一个示例中,所述单元标识信息包括所述字段名称、第二连接符和所述行标识。
在一个示例中,所述源数据表的数量为一个或多个。
图4是本发明实施例提供的数据来源获取装置的功能方块图。如图4所示,本实施例中,数据来源获取装置可以包括:
值获取模块410,用于针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息;
来源确定模块420,用于根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
本发明实施例还提供了一种电子设备。图5是本发明实施例提供的电子设备的一个硬件结构图。如图5所示,电子设备包括:内部总线501,以及通过内部总线连接的存储器502,处理器503和外部接口504。
在一个示例中,该电子设备为数据处理设备,此时,所述处理器503,用于读取存储器502上的机器可读指令,并执行所述指令以实现如下处理:
在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
在一个示例中,所述来源字段属于所述目标数据表;或者,所述来源字段属于所述目标数据表对应的辅助数据表。
在一个示例中,所述源数据表和所述目标数据表均包括数据字段、行标识字段、列标识字段和来源字段;
所述行标识字段中每个单元的值为该单元所在行的行标识,同一数据表中不同行的行标识不同;
所述列标识字段中每个单元的值为所述列标识字段所在数据表的数据字段中相应单元的单元标识信息;
所述来源字段中每个单元的值为该单元对应的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表的列标识字段的各个单元中,确定所述单元对应的第一单元;
读取所述第一单元中的值,所述第一单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表的来源字段中确定所述第二单元对应的第三单元,并将所述单元标识信息添加到所述第三单元中。
在一个示例中,所述源数据表和所述目标数据表均有对应的辅助数据表,所述源数据表和所述目标数据表作为主数据表,主数据表包括数据字段,辅助数据表包括行标识字段、列标识字段和来源字段;
辅助数据表中,所述行标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元所在行的行标识,同一主数据表中不同行的行标识不同;
辅助数据表中,所述列标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元的单元标识信息;
辅助数据表中,所述来源字段中每个单元的值为该单元对应的主数据表的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表对应的辅助数据表的列标识字段的各个单元中,确定所述单元对应的第四单元;
读取所述第四单元中的值,所述第四单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表对应的辅助数据表的来源字段中确定所述第二单元对应的第五单元,并将所述单元标识信息添加到所述第五单元中。
在一个示例中,所述行标识字段中各个单元中的行标识的获取过程包括:
获取该单元所在数据表的表名或者该单元所在辅助数据表对应的主数据表的表名;
确定该单元在所在数据表中所处的目标行,或者该单元在所在辅助数据表所处行对应的主数据表的目标行;
获取所述目标行对应的第一数值;同一数据表中不同行对应的第一数值不同;
根据所述表名和所述目标行对应的第一数值,确定该单元的行标识。
在一个示例中,所述行标识包括所述表名、第一连接符和所述第一数值。
在一个示例中,所述列标识字段中每个单元的单元标识信息的获取过程包括:
获取该单元在所在数据表中对应的数据字段的字段名称或者该单元所在辅助数据表对应的主数据表中对应的数据字段的字段名称;
获取该单元在所在数据表中所处行的行标识或者该单元所在辅助数据表对应的主数据表中对应行的行标识;
根据所述字段名称和所述行标识,确定该单元的单元标识信息。
在一个示例中,所述单元标识信息包括所述字段名称、第二连接符和所述行标识。
在一个示例中,所述源数据表的数量为一个或多个。
在另一个示例中,该电子设备为数据来源确定设备,此时,所述处理器503,用于读取存储器502上的机器可读指令,并执行所述指令以实现如下处理:
针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息;
根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
在根据源数据表生成目标数据表时,针对所述源数据表中数据字段的每个单元,获取所述单元在所述源数据表中对应的单元标识信息;所述单元标识信息用于指示所述单元所在的表、行和列;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中。
在一个示例中,所述来源字段属于所述目标数据表;或者,所述来源字段属于所述目标数据表对应的辅助数据表。
在一个示例中,所述源数据表和所述目标数据表均包括数据字段、行标识字段、列标识字段和来源字段;
所述行标识字段中每个单元的值为该单元所在行的行标识,同一数据表中不同行的行标识不同;
所述列标识字段中每个单元的值为所述列标识字段所在数据表的数据字段中相应单元的单元标识信息;
所述来源字段中每个单元的值为该单元对应的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表的列标识字段的各个单元中,确定所述单元对应的第一单元;
读取所述第一单元中的值,所述第一单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表的来源字段中确定所述第二单元对应的第三单元,并将所述单元标识信息添加到所述第三单元中。
在一个示例中,所述源数据表和所述目标数据表均有对应的辅助数据表,所述源数据表和所述目标数据表作为主数据表,主数据表包括数据字段,辅助数据表包括行标识字段、列标识字段和来源字段;
辅助数据表中,所述行标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元所在行的行标识,同一主数据表中不同行的行标识不同;
辅助数据表中,所述列标识字段中每个单元的值为该单元对应的主数据表中数据字段的相应单元的单元标识信息;
辅助数据表中,所述来源字段中每个单元的值为该单元对应的主数据表的源数据表中数据字段的相应单元的单元标识信息。
在一个示例中,获取所述单元在所述源数据表中对应的单元标识信息,包括:
在所述源数据表对应的辅助数据表的列标识字段的各个单元中,确定所述单元对应的第四单元;
读取所述第四单元中的值,所述第四单元的值即为所述单元在所述源数据表中对应的单元标识信息;
将所述单元标识信息添加到所述目标数据表中数据字段的相应单元对应的来源字段的单元中,包括:
在所述目标数据表的数据字段中确定所述单元对应的第二单元;
在所述目标数据表对应的辅助数据表的来源字段中确定所述第二单元对应的第五单元,并将所述单元标识信息添加到所述第五单元中。
在一个示例中,所述行标识字段中各个单元中的行标识的获取过程包括:
获取该单元所在数据表的表名或者该单元所在辅助数据表对应的主数据表的表名;
确定该单元在所在数据表中所处的目标行,或者该单元在所在辅助数据表所处行对应的主数据表的目标行;
获取所述目标行对应的第一数值;同一数据表中不同行对应的第一数值不同;
根据所述表名和所述目标行对应的第一数值,确定该单元的行标识。
在一个示例中,所述行标识包括所述表名、第一连接符和所述第一数值。
在一个示例中,所述列标识字段中每个单元的单元标识信息的获取过程包括:
获取该单元在所在数据表中对应的数据字段的字段名称或者该单元所在辅助数据表对应的主数据表中对应的数据字段的字段名称;
获取该单元在所在数据表中所处行的行标识或者该单元所在辅助数据表对应的主数据表中对应行的行标识;
根据所述字段名称和所述行标识,确定该单元的单元标识信息。
在一个示例中,所述单元标识信息包括所述字段名称、第二连接符和所述行标识。
在一个示例中,所述源数据表的数量为一个或多个。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
针对目标数据表的数据字段中的任一单元,获取所述单元对应的来源字段中相应单元的值;该值为用于指示所述单元对应的源数据表中数据字段的相应单元所在的表、行和列的单元标识信息;
根据所述单元标识信息,确定所述目标数据表的源数据表,以及确定所述单元的源数据在所述源数据表中的行和列。
对于装置和设备实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
- 数据处理方法及装置、数据来源获取方法及装置
- 数据处理方法和装置、处理权限的获取方法和装置