发明内容
本发明的主要目的在于提供一种数据仓库中的维度处理方法和装置,以解决在对历史维度表更新的情况下,快照维度表的更新速度慢的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据仓库中的维度处理方法。
根据本发明的数据仓库中的维度处理方法包括:在数据仓库中存储有预先创建的第一维度表和预先创建的第二维度表,其中,第一维度表用于存储数据仓库中的所有历史数据,第二维度表用于根据第一维度表进行更新以存储第一维度表中最近一个维度处理时间周期的数据,方法包括:获取数据仓库的待更新数据;将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新。
进一步地,基于待更新数据对第一维度表进行更新包括:获取待更新数据;获取第三维度表,其中,第三维度表是将待更新数据添加至第二维度表中生成的维度表;将第三维度表添加至第一维度表对第一维度表进行更新。
进一步地,获取数据仓库的待更新数据包括:在数据仓库中查找数据源,其中,数据源存储在数据仓库中;对数据源进行去重处理,得到待更新数据。
进一步地,基于待更新数据对第一维度表进行更新包括:将待更新数据添加第一维度表;判断第一维度表是否存在唯一索引;在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值;在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理;在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理;通过对第一维度表执行去重处理对第一维度表进行更新。
进一步地,获取数据仓库的待更新数据之前,方法还包括:获取第二维度表的代理键,其中,第二维度表的代理键包括多个数值;确定第二维度表的代理键中的最大数值;将第二维度表的代理键中的最大数值设置为第二维度表的种子;查找第一维度表的代理键,其中,第一维度表的代理键包括多个数值;确定第一维度表的代理键中的最大数值;将第一维度表的代理键中的最大数值设置为第一维度表的种子;判断第二维度表的代理键中的最大数值是否大于第一维度表的代理键中的最大数值;在第二维度表的代理键中最大数值大于第一维度表的代理键中最大数值的情况下,通过第二维度表种子设置第一维度表种子以使第一维度表和第二维度表种子相同;在第二维度表的代理键中最大数值小于第一维度表的代理键中最大数值的情况下,通过第一维度表种子设置第二维度表种子以使第二维度表和第一维度表种子相同;其中,基于待更新数据对第一维度表进行更新包括:在确定第二维度表的种子和第一维度表的种子相同之后,获取第四维度表,其中,将待更新数据添加至第二维度表中经过去重处理后,第二维度表中得到新添加的数据,第四维度表是用于存储第二维度表中新添加的数据的维度表;将第四维度表添加至第一维度表对第一维度表进行更新。
为了实现上述目的,根据本发明的另一方面,提供了一种数据仓库中的维度处理装置。该装置包括:在数据仓库中存储有预先创建的第一维度表和预先创建的第二维度表,其中,第一维度表用于存储数据仓库中的所有历史数据,第二维度表用于根据第一维度表进行更新以存储第一维度表中最近一个维度处理时间周期的数据,装置包括:获取单元,用于获取数据仓库的待更新数据;更新单元,用于将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新。
进一步地,更新单元包括:第一获取模块,用于获取待更新数据;第二获取模块,用于获取第三维度表,其中,第三维度表是将待更新数据添加至第二维度表中生成的维度表;第一更新模块,用于将第三维度表添加至第一维度表对第一维度表进行更新。
进一步地,获取单元包括:第一查找模块,用于在数据仓库中查找数据源,其中,数据源存储在数据仓库中;第一处理模块,用于对数据源进行去重处理,得到待更新数据。
进一步地,更新单元包括:添加模块,用于将待更新数据添加第一维度表;第一判断模块,用于判断第一维度表是否存在唯一索引;第二判断模块,用于在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值;第二处理模块,用于在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理;第三处理模块,用于在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理;第二更新模块,用于通过对第一维度表执行去重处理对第一维度表进行更新。
进一步地,获取单元之前,装置还包括:第三获取模块,用于获取第二维度表的代理键,其中,第二维度表的代理键包括多个数值;第一确定模块,用于确定第二维度表的代理键中的最大数值;第一设置模块,用于将第二维度表的代理键中的最大数值设置为第二维度表的种子;第二查找模块,用于查找第一维度表的代理键,其中,第一维度表的代理键包括多个数值;第二确定模块,用于确定第一维度表的代理键中的最大数值;第二设置模块,用于将第一维度表的代理键中的最大数值设置为第一维度表的种子;第三判断模块,用于判断第二维度表的代理键中的最大数值是否大于第一维度表的代理键中的最大数值;第三设置模块,用于在第二维度表的代理键中最大数值大于第一维度表的代理键中最大数值的情况下,通过第二维度表种子设置第一维度表种子以使第一维度表和第二维度表种子相同;第四设置模块,用于在第二维度表的代理键中最大数值小于第一维度表的代理键中最大数值的情况下,通过第一维度表种子设置第二维度表种子以使第二维度表和第一维度表种子相同;其中,更新单元包括:第四获取模块,用于在确定第二维度表的种子和第一维度表的种子相同之后,获取第四维度表,其中,将待更新数据添加至第二维度表中经过去重处理后,第二维度表中得到新添加的数据,第四维度表是用于存储第二维度表中新添加的数据的维度表;第三更新模块,用于将第四维度表添加至第一维度表对第一维度表进行更新。
通过本发明,获取数据仓库的待更新数据,将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本领域的技术人员更好的理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,在本领域普通技术人员没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
在数据仓库中存储有预先创建的第一维度表和预先创建的第二维度表,其中,第一维度表用于存储数据仓库中的所有历史数据,第二维度表用于根据第一维度表进行更新以存储第一维度表中最近一个维度处理时间周期的数据,图1是根据本发明的数据仓库中的维度处理方法的第一实施例的流程图。如图1所示,该数据仓库中的维度处理方法包括如下的步骤S101至步骤S102:
步骤S101,获取数据仓库的待更新数据。
数据仓库,英文名称Data Warehouse,简称DW或DWH。检测DW中待更新数据,获取DW中待更新数据。其中,待更新数据是指需要添加在维度表中对维度表进行更新的数据源。
步骤S102,将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新。
通过将获取的待更新数据添加至第二维度表,第二维度表通过对待更新数据进行去重处理对第二维度表进行更新。
通过将获取的待更新数据添加至第一维度表中,第一维度表通过对待更新数据进行去重处理对第一维度表中进行更新。或者通过将获取的待更新数据添加至第二维度表中,第二维度表通过对待更新数据进行去重处理得到第二维度表新添加的数据,将该新添加的数据存储在第三维度表中,将第三维度表添加至第一维度表对第一维度表进行更新。
本发明的实施例中提供的数据仓库中的维度处理方法,在数据仓库中存储有预先创建的第一维度表和预先创建的第二维度表,其中,第一维度表用于存储数据仓库中的所有历史数据,第二维度表用于根据第一维度表进行更新以存储第一维度表中最近一个维度处理时间周期的数据,通过获取数据仓库的待更新数据;将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
图2是根据本发明的数据仓库中的维度处理方法的第二实施例的流程图。如图2所示,该数据仓库中的维度处理方法包括如下的步骤S201至步骤S208:
步骤S201,获取数据仓库的待更新数据。
该步骤同上述步骤S101。
步骤S202,将待更新数据添加至第二维度表中以对第二维度表进行更新。
该步骤同上述步骤S102。
步骤S203,将待更新数据添加第一维度表。
步骤S204,判断第一维度表是否存在唯一索引。
唯一索引是一种不允许具有索引值相同的行的索引。检测第一维度表中是否已存在唯一索引,即检测第一维度表中已建立唯一索引。在第一维度表中如果已建立唯一可忽略索引即可,待更新数据添加至第一维度表中时,会自动执行去重处理。一种具体实现代码如下:
CREATE UNIQUE NONCLUSTERED INDEX[UIX_Hash]ON[dbo].[DimSiteResource]
([Hash]ASC)WITH(IGNORE_DUP_KEY=ON)ON[PRIMARY])
步骤S205,在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值。
步骤S206,在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理。
步骤S207,在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理。
步骤S208,通过对第一维度表执行去重处理对第一维度表进行更新。
在检测到第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库将通过加载预设的表数据对第一维度表执行去重处理。一种具体加载预设的表数据的去重方式如下:
INSERT INTO[WebDissectorDW].dbo.DimClick
(SnapshotID,
PageVersion,
PageRegionID,
Hash)
SELECT DISTINCT
通过上述自动执行去重处理或加载预设的表数据执行去重处理等操作,对第一维度表数据进行更新处理。
本发明的实施例中提供的数据仓库中的维度处理方法,通过获取数据仓库的待更新数据。将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新。将待更新数据添加第一维度表;判断第一维度表是否存在唯一索引;在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值;在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理;在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理;通过对第一维度表执行去重处理对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
图3是根据本发明的数据仓库中的维度处理方法的第三实施例的流程图。如图3所示,该数据仓库中的维度处理方法包括如下的步骤S301至步骤S313:
步骤S301,获取第二维度表的代理键,其中,第二维度表的代理键包括多个数值。
代理键用于维度表与事实表的连接,此处的代理键是第二维度表的自增长代理键,对于一个维度表中的维度列可以设置为自增长的维度列,当维度列定义为自增长后,那么这个维度列的值就不需要用户输入数据,而由数据仓库系统根据设置自动赋值。当增加一条记录时,代理见主键会自动的以相同的步长来进行数据增长,该步长是用户在建立维度表的时候,预先设置的步长。
第二维度表为最近一个维度处理时间周期的数据,即快照维度表。获取快照维度表上的自增长代理键。其中快照维度表的自增长代理键包括多个数值。
步骤S302,确定第二维度表的代理键中的最大数值。
步骤S303,将第二维度表的代理键中的最大数值设置为第二维度表的种子。
获取第二维度表的代理键中的最大数值,将该最大数值设置为第二维度表的种子,其中,当数据源添加至第二维度表时,第二维度表的种子用于将该数据源从维度表种子的数据进行数据增长。
步骤S304,查找第一维度表的代理键,其中,第一维度表的代理键包括多个数值。
步骤S305,确定第一维度表的代理键中的最大数值。
步骤S306,将第一维度表的代理键中的最大数值设置为第一维度表的种子。
步骤S307,判断第二维度表的代理键中的最大数值是否大于第一维度表的代理键中的最大数值。
步骤S308,第二维度表的代理键中最大数值大于第一维度表的代理键中最大数值的情况下,通过第二维度表种子设置第一维度表种子以使第一维度表和第二维度表种子相同。
步骤S309,第二维度表的代理键中最大数值小于第一维度表的代理键中最大数值的情况下,通过第一维度表种子设置第二维度表种子以使第二维度表和第一维度表种子相同。
步骤S310,获取数据仓库的待更新数据。
该步骤同上述步骤S101。
步骤S311,将待更新数据添加至第二维度表中以对第二维度表进行更新。
该步骤同上述步骤S102。
步骤S312,确定第二维度表的种子和第一维度表的种子相同之后,获取第四维度表。
将待更新数据添加至第二维度表中经过自动去重处理或者加载预先设置的表数据进行去重处理后,得到新添加的数据,将该新添加的数据存储在预先创建的第四维度表中,获取第四维度表。
步骤S313,将第四维度表添加至第一维度表对第一维度表进行更新。
将第四维度表添加至第一维度表,第一维度表通过自动去重处理或者加载预先设置的表数据对新添加的第四维度表进行去重处理,对第一维度表中数据进行更新。
本发明的实施例中提供的数据仓库中的维度处理方法,通过将第一维度表和第二维度表的种子设置相同,保证了其增长的代理主键与历史维度表一致。解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明的实施例,提供了一种数据仓库中的维度处理装置。图4是根据本发明的数据仓库中的维度处理装置的第一实施例的示意图。如图4所示,该数据仓库中的维度处理装置包括:获取单元20和更新单元40。
获取单元20,用于获取数据仓库的待更新数据。
更新单元40,用于将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新。
本发明的实施例中提供的数据仓库中的维度处理装置,该装置通过获取单元20用于获取数据仓库的待更新数据,更新单元40用于将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
图5是根据本发明的数据仓库中的维度处理装置的第二实施例的示意图。如图5所示,该数据仓库中的维度处理装置包括:获取单元20和更新单元40。其中更新单元40包括:更新模块400、添加模块401、第一判断模块404、第二判断模块403、第二处理模块404、第三处理模块405和第二更新模块406。
获取单元20和更新单元40的作用与上述实施例中作用相同,在此不再赘述。
更新模块400,用于将待更新数据添加至第二维度表中以对第二维度表进行更新。
添加模块401,用于将待更新数据添加第一维度表。
第一判断模块402,用于判断第一维度表是否存在唯一索引。
第二判断模块403,用于在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值。
第二处理模块404,用于在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理。
第三处理模块405,用于在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理。
第二更新模块406,用于通过对第一维度表执行去重处理对第一维度表进行更新。
本发明的实施例中提供的数据仓库中的维度处理装置,该装置通过获取单元20用于获取数据仓库的待更新数据,更新单元40用于将待更新数据添加至第二维度表中以对第二维度表进行更新,添加模块401用于将待更新数据添加第一维度表;第一判断模块402用于判断第一维度表是否存在唯一索引;第二判断模块403用于在第一维度表存在唯一索引的情况下,判断唯一索引的属性是否是可忽略唯一值;第二处理模块404用于在唯一索引属性是可忽略唯一值的情况下,数据仓库对第一维度表执行自动执行去重处理;第三处理模块405用于在第一维度表不存在唯一索引的情况下或唯一索引属性不是可忽略唯一值的情况下,数据仓库通过加载预设的表数据对第一维度表执行去重处理;第二更新模块406用于通过对第一维度表执行去重处理对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
图6是根据本发明的数据仓库中的维度处理装置的第三实施例的示意图。如图6所示,该数据仓库中的维度处理装置包括:第三获取模块101、第一确定模块102、第一设置模块103、第二查找模块104、第二确定模块105、第二设置模块106、第三判断模块107、第三设置模块108、第四设置模块109、第四获取模块100、第三更新模块110、获取单元20和更新单元40。
获取单元20和更新单元40的作用与上述实施例中作用相同,在此不再赘述。
第三获取模块101,用于获取第二维度表的代理键,其中,第二维度表的代理键包括多个数值。
第一确定模块102,用于确定第二维度表的代理键中的最大数值。
第一设置模块103,用于将第二维度表的代理键中的最大数值设置为第二维度表的种子。
第二查找模块104,用于查找第一维度表的代理键,其中,第一维度表的代理键包括多个数值。
第二确定模块105,用于确定第一维度表的代理键中的最大数值。
第二设置模块106,用于将第一维度表的代理键中的最大数值设置为第一维度表的种子。
第三判断模块107,用于判断第二维度表的代理键中的最大数值是否大于第一维度表的代理键中的最大数值。
第三设置模块108,用于在第二维度表的代理键中最大数值大于第一维度表的代理键中最大数值的情况下,通过第二维度表种子设置第一维度表种子以使第一维度表和第二维度表种子相同。
第四设置模块109,用于在第二维度表的代理键中最大数值小于第一维度表的代理键中最大数值的情况下,通过第一维度表种子设置第二维度表种子以使第二维度表和第一维度表种子相同。
第四获取模块100,用于在确定第二维度表的种子和第一维度表的种子相同之后,获取第四维度表,其中,将待更新数据添加至第二维度表中经过去重处理后,第二维度表中得到新添加的数据,第四维度表是用于存储第二维度表中新添加的数据的维度表。
第三更新模块110,用于将第四维度表添加至第一维度表对第一维度表进行更新。
本发明的实施例中提供的数据仓库中的维度处理装置,该装置通过获取单元20用于获取数据仓库的待更新数据;更新单元40用于将待更新数据添加至第二维度表中以对第二维度表进行更新,并基于待更新数据对第一维度表进行更新;第三获取模块101用于获取第二维度表的代理键,其中,第二维度表的代理键包括多个数值;第一确定模块102用于确定第二维度表的代理键中的最大数值;第一设置模块103用于将第二维度表的代理键中的最大数值设置为第二维度表的种子;第二查找模块104用于查找第一维度表的代理键,其中,第一维度表的代理键包括多个数值;第二确定模块105用于确定第一维度表的代理键中的最大数值;第二设置模块106用于将第一维度表的代理键中的最大数值设置为第一维度表的种子;第三判断模块107用于判断第二维度表的代理键中的最大数值是否大于第一维度表的代理键中的最大数值;第三设置模块108用于在第二维度表的代理键中最大数值大于第一维度表的代理键中最大数值的情况下,通过第二维度表种子设置第一维度表种子以使第一维度表和第二维度表种子相同;第四设置模块109用于在第二维度表的代理键中最大数值小于第一维度表的代理键中最大数值的情况下,通过第一维度表种子设置第二维度表种子以使第二维度表和第一维度表种子相同;其中,基于待更新数据对第一维度表进行更新包括:第四获取模块100用于在确定第二维度表的种子和第一维度表的种子相同之后,获取第四维度表,其中,将待更新数据添加至第二维度表中经过去重处理后,第二维度表中得到新添加的数据,第四维度表是用于存储第二维度表中新添加的数据的维度表;第三更新模块110用于将第四维度表添加至第一维度表对第一维度表进行更新,解决了在对历史维度表更新的情况下,快照维度表的更新速度慢的问题,达到了提升快照维度表更新速度的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。