技术领域
[0001] 本发明实施例涉及数据仓库技术领域,尤其涉及一种数据挖掘方法和装置。
相关背景技术
[0002] 现代的商业智能应用集合了数据抽取(Extract-transform-load,ETL)、数据仓库、数据挖掘、关键指标分析、数据展现等新一代数据库技术,是数据库应用领域的未来发展方向和趋势。图1示出了商业智能应用的各个关键环节。参见图1,商业智能应用的目标是将数据转换为知识,通过科学的分析方法,在海量数据中发现对企业具有决定性意义的关键指标和数据。
[0003] 在商业智能应用过程中,有一个环节是数据挖掘,就是要在大量的数据中,通过各种方法找出有用的数据,并最终将数据转换为知识。我们知道,数据仓库本身集成了关于目标对象的海量的数据资源。这些不同的数据项相互之间的逻辑关系纷繁复杂,难于理清。而且,在数据挖掘应用的数据挖掘环节中,会涉及到对大量数据的识别、引用和聚合计算。这些计算过程也就有比较大的难度。所以,在数据仓库这样的大数据系统中实现从数据到知识的自动转换总体难度较高,难于实现。
具体实施方式
[0027] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0028] 第一实施例
[0029] 本实施例提供了数据挖掘方法的一种技术方案。所述数据挖掘方法由数据挖掘装置执行。并且,所述数据挖掘装置集成在数据仓库的服务器内部,或者集成在于所述数据仓库的服务器之间存在网络连接的另一台计算设备中。总之,集成有所述数据挖掘装置的设备能够从数据仓库中读取数据。
[0030] 参见图1,所述数据挖掘方法包括:
[0031] S11,获取数据挖掘模型,所述数据挖掘模型对应于与数据仓库中的数据表,并且所述数据表中记录有进行数据挖掘所依据的数据挖掘规则。
[0032] 传统的数据仓库中的数据处理一般是一些对数据的存储、管理等基本的数据处理。通过这些基本的数据处理,数据仅仅是存储形式上的一些变化,不可能产生新的内容。而商业智能应用则完全不同,通过对数据的钻取、统计、归类、聚合等操作,能够从原有的数据中挖掘到新的知识,实现从数据到知识的转化。例如,在一个专门存储各个地区的发电量数据的数据仓库中,通过对不同地区全年各个阶段的发电量的挖掘,可能会发现不同地区之间的发电量之间存在的相互关系。这种相互关系就是商业智能应用挖掘到的知识。
[0033] 本实施例中对数据仓库中的数据执行的挖掘操作是以一个数据挖掘模型为基础的。图3示出了所述数据挖掘模型的数据结构。参见图3,所述数据挖掘模型包括:事实表模型31、数据行表模型32、数据列表模型33、维度模型34以及指标模型35。更进一步的,所述事实表模型31对应于数据仓库中的事实表;所述数据行表模型32对应于数据仓库中的数据行表;所述数据列表模型33对应于数据仓库中的数据列表;所述维度模型34对应于数据仓库中的维度定义表;所述指标模型35对应于数据仓库中的指标定义表。也就是说,所述数据挖掘模型对应于所述数据仓库中的数据表。
[0034] 所述事实表是用来记录数据仓库中最为基础的事实数据。这些数据也被称为来源数据。所述数据行表用来记录所述事实表中的数据行名称以及维度名称。所述数据列表用来记录所述事实表中的数据列名称以及指标名称。
[0035] 在传统的关系型数据库中,一般采用实体-关系模型(E-R model)对数据进行建模。采取这种建模方法,每一张数据表对应于一个具体的业务。这种建模方式的优点是数据冗余量小,针对具体业务的可操作性强。但同时也存在缺点,这些缺点主要体现在数据的可读性差,对其中存储的数据执行数据分析十分困难。
[0036] 为了方便数据分析,在本实施例中采用数据维度的方式对数据进行建模。在这种建模方式下,数据仓库中不仅存储用于记录数据事实的事实表,还存储用于描述数据维度的维度定义表。
[0037] 所谓维度,是对问题进行观察的一个角度,它提供了对问题进行解构的一种分析手段。比如,在一个专门存储各个地区的发电量数据的数据仓库中,地区就可以是这个数据仓库中的一个维度。
[0038] 同一个事实表可能对应于多个维度定义表。图4给出了一个事实表对应于多个维度定义表的一个示例。参见图4,事实表——元数据定义表41同时对应于地区维度定义表42、时间维度定义表43、产品维度定义表44以及用户维度定义表45。这种一个事实表对应于多个维度定义表的模式被称为星型模式。
[0039] 另外,除了星型模式,事实表与维度定义表之间的对应模式还可以是事实星座模式,或者雪花模式。在事实星座模式下,多个不同的事实表可以对应于同一个维度定义表。在雪花模式下,一个主维度表可以还有自己的子维度表,甚至于子维度表也可以有自己的下一级子维度表。
[0040] 具体的,在本实施例中,所述数据维度表包括:主维度表、子维度表、维度值枚举表以及维度值集合表。主维度表表示一类范围维度。比如地区定义在主维度表里是一个主维度,表示可以把地区划分不同地区。主维度表定义的意义必须是清晰的、经过提炼的,数据经过不同维度的计算、聚合后需要准确地反映出定义的维度意义,在逻辑表述上不能有二义。子维度表与主维度表之间是包含的关系。也就是说,主维度表中可以包含有子维度。维度值枚举表即对维度值列举出来,比如调度类型可以枚举成网调、省调。维度值集合表用于定于维度值的集合运算。维度值的集合运算将数据的检索简化为集合操作,通过并集、交集、全集、补集这几种基础的集合运算,可快速在数据表中查找所需要的数据。与传统的条件查找方式相比,集合运算在表达上更加容易,检索操作的效率也更高。需要说明的是,维度值集合与维度值是互斥的,也就是说在数据行里定义维度值集合就不能再定义维度值。
[0041] 此外,为了降低维度建模的复杂度,减少维度表的数量,本实施例中的各种维度定义表采用真实维度表和虚拟维度表双重模式。具有多重关系的维度存放于事实维度表中,在数据仓库中使用独立的数据表进行存储;独立的维度系统或子维度存放于虚拟维度表中,共用一个数据表进行存储。
[0042] 通过前文所述的维度模型,采用数据与维度相分离的设计方式,将数据的维度定义存储于各种维度定义表中。采用这样的维度模型有如下优点:数据冗余量小,易于维护和管理;数据检索性能高,更适合联机分析处理和数据挖掘;面向多维度表达,维度值具有遗传特性,可对多维数据进行钻取;维度不受版本的影响,数据格式变化不影响维度变化。
[0043] 所述指标模型用于定义商业智能应用的关键指标体系,从而能够描述数值之间的关系,定义数值的计算规则,追踪数值的原始来源。所述指标模型对应于数据仓库中的指标定义表。所述指标定义表包括:指标表、指标类型表、数据粒度表以及指标集合表。
[0044] 所述指标表即可以定义基本指标也可以定义聚合指标,是数据意义的直接的表示。所述指标类型表更多的是完成除基本指标数据以外的特定意义,主要用于定义指标的数据类型。所述数据粒度表定义事实数里的数据的数据粒度。所述指标集合表定义更高一级数据意义,与数据指标、指标类型、数据粒度组成聚类数据的表示。
[0045] 作为一个示例,表1示出了标识数据的时间粒度的一个数据粒度图。参见表1,在这个数据粒度表中,数据的时间粒度可以是日度、月度或者年度。
[0046] 表1
[0047]ID 标题 描述
1 日 日度数据
2 月 月度数据
3 年 年度数据
[0048] 在本实施例中,不同的指标之间存在着计算、总分和依赖这三种关系。图5示出了不同指标之间的关系。参见图5,以电厂的发电量指标为例,发电量指标由计划值、完成值、累计值等具体指标所构成。其中,计划完成率是计划值和完成值的百分比,所以计划完成率与计划值、完成值之间存在计算关系。当期值由计划内完成值和超额完成值构成,所述当期值与计划完成值、超额完成值之间属于总分关系。计划内完成值和超额完成值之间互斥,它们之间属于依赖关系。
[0049] 每个指标由指标类名、指标类型和数据类型三种属性所构成。指标类名所描述的是指标来源数据的分类;指标类型是指标数值的分类;数据类型则定义了数值可能使用的类别。图6示出了指标的三种属性的一个示例。参见图6,示出的指标的指标类名是“上网电量”,指标类型是“上期值”,而数据类型是“月度”。
[0050] 进一步优选的,所述数据挖掘模型还包括数据版本模型。所述数据版本模型用于记录所述数据挖掘模型的版本信息。
[0051] 上述的各种数据表中记录有进行数据挖掘所依据的数据挖掘规则。所述数据挖掘规则包括:数据定义规则、数据取值规则以及挖掘运行规则。所述数据挖掘规则以标记语言进行记录。优选的,所述数据挖掘规则以XML语言进行记录。
[0052] 更进一步的,可以在XML语言中定义不同的标签,用于标识数据挖掘中应当执行的不同操作,从而实现对数据挖掘规则的记录。
[0053] S12,根据所述数据挖掘规则对数据仓库中的事实数据进行挖掘。
[0054] 由于在各种数据表中记录了进行数据挖掘的数据挖掘规则,可以根据所述数据挖掘规则对事实数据进行挖掘,从而从中发现知识。
[0055] 进一步的,由于所述数据挖掘规则通过XML语言进行记录,而XML语言中定义了代表不同操作的标签,当执行对事实数据的挖掘时,可以运用语义网技术,根据所述数据挖掘规则中定义的各种标签,对所述事实数据进行挖掘。
[0056] 更进一步的,在本实施例中,采用语法解析链的方式对事实数据进行挖掘。由于所述语法解析链用于根据XML语言中定义的各种标签以及这些标签的取值对事实数据进行挖掘,它又被称为XML语法解析链。
[0057] 所述语法解析链上可以添加对应于所述数据挖掘规则中的不同标签的解析器。一旦所述语法解析链上添加了一种标签对应的解释器,则所述语法解析链能够用于对包含有此种标签的数据挖掘规则的解析。
[0058] 采用这种模式设计数据挖掘代码,主要是遵循了设计模式中的“开-闭”原则。具体来说,假设在XML语言的数据挖掘规则中新增了一种类型的标签,则只需要添加这种标签对应的解释器的实现代码,而在需要解析这种标签时在所述语法解析链上添加这种新定义的解释器,而不需要更改语法解析链的实现代码。假设一种类型的标签的解释逻辑发生了改变,也只需要更改这种标签对应的解释器的实现代码,不需要更改语法解析链的实现逻辑。显然,这样的代码实现方式能够提高代码的重用率,极大的方便对程序代码的维护。
[0059] 采用语法解析链的代码实现方式的另一个好处在于,不同的标签对应的解释器的逻辑实现相互独立,互不干扰。这样,有利于对外提供统一的程序接口,降低不同对象之间的代码耦合程度。
[0060] 本实施例通过获取数据挖掘模型,以及根据所述数据挖掘模型中的数据挖掘规则对数据仓库中的事实数据进行挖掘,使得在对数据仓库中存储的事实数据进行挖掘的过程中,对数据的识别、钻取、统计、归类、聚合等操作能够自动完成,从而实现了在数据仓库系统中的自动数据挖掘。
[0061] 第二实施例
[0062] 本实施例以本发明上述实施例为基础,进一步的提供了数据挖掘方法中挖掘操作的一种技术方案。在该技术方案中,根据所述数据挖掘规则对数据仓库中的事实数据进行挖掘包括:根据所述事实表获取所述事实表模型;获取所述事实表的数据版本模型;根据所述数据行表及所述数据版本模型,获取所述事实表模型对应的数据行表模型;根据所述维度定义表及所述数据版本模型,获取所述事实表模型对应的维度模型;根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合;根据所述数据列表及所述数据版本模型,获取所述事实表模型对应的数据列模型;根据所述指标定义表及所述数据版本模型,获取所述事实表模型对应的指标模型;根据所述数据列表模型及所述指标模型对应的数据挖掘规则,获取所述事实表的数据列名称,并对所述指标模型中的指标进行筛选、计算、统计和归类。
[0063] 参见图7,根据所述数据挖掘规则对数据仓库中的事实数据进行挖掘包括:
[0064] S71,根据所述事实表获取所述事实表模型。
[0065] 在本发明中,包括事实表模型、数据行表模型、数据列表模型等的数据挖掘模型是根据数据仓库中存储的各种数据表而建立的。所述数据表可以被分为如下的几类:静态表、转储表、中间表、多维表以及视图表。
[0066] 所述静态表是处于最原始形态的表。对于静态表可以定义数据列、维度以及指标。但是,静态表中不能定义任何的数据挖掘规则。所述转储表类似于数据库中的存储过程。对于转储表可以定义数据行和数据列,还可以定义关于数据行和数据列的数据挖掘规则。所述中间表是对原始来源表进行数据处理的过程中产生的表。对于所述中间表可以定义数据列和指标。所述多维表具有多个存储维度。对于所述多维表,可以定义它的数据行和数据列,以及所述数据行和数据列各自对应的数据挖掘规则。所述视图表用于定义对应数据表的不同视图。对于所述视图表,可以定义它的数据行、数据列、维度以及指标,还可以定义它们各自的数据挖掘规则。
[0067] 在利用程序代码实现对上述几种数据表的数据挖掘时,上述几种数据表分别利用不同的类来表示。针对每一个具体的数据表,可以将用来表示不同种类的数据表的类实例化为对象,再通过对这些对象的成员函数的调用实现具体的数据挖掘操作。
[0068] 图8示出了不同类型的数据表对应的类之间的继承关系。参见图8,所述静态表对应于TableModel类81。并且,TableModel类81是图8中示出的其他类的父类,也叫基类。所述转储表对应于TransTableModel类82。所述TransTableModel类82以TableModel类81为基类。所述中间表对应于MiddleTableModel类83。所述MiddleTableModel类83以TableModel类81为基类。所述多维表对应于MultiTableModel类84。所述MultiTableModel类84以TableModel类81为基类。所述视图表对应于ViewTableModel类85。所述ViewTableModel类85以TableModel类81为基类。
[0069] 在获取事实表模型的操作中,利用名称为表管理器(Table Manager)的对象生成事实表模型。所述表管理器以工厂模式被创建。并在其创建之后,依据需要建立事实表模型的事实表的ID号查找具体的事实表,并根据查找到的事实表建立事实表模型。以生成ID号为2000L的事实表对应的事实表模型为例,具体的事实表模型生成代码如下:
[0070] TableManager tm=(TableManager)ac.getBean("TableManager");
[0071] TableModel tableModel=tm.findTableModel(2000L);
[0072] 对象tableModel就是生成的事实表模型。事实表模型的内部成员主要有如下几个:连接(AConn)对象、数据列管理器(ColumnManager)对象、数据行管理器(RowManager)对象、版本管理器(VersionManager)对象以及引用表(refTables)对象。所述连接对象用于连接外部数据库,通常在事实表中采用DATASOURCE字段定义。所述数据列管理器对象管理数据表所定义的列数据。所述数据行管理器对象管理数据表所定义的行。所述版本管理器对象管理数据表所定义的版本。所述引用表对象存数据表所引用的其他数据表。引用数据表的定义保存于事实表的数据挖掘规则中。该对象的数据结构为List
。[0073] S72,获取所述事实表的数据版本模型。
[0074] 由于所述数据表的内部成员包含版本管理器,所以可以通过所述版本管理器获取所述事实表的数据版本模型,也就是VersionModel对象。数据列管理器根据版本模型获取在指定时间中有效的数据行,用于解决数据表存在多个版本的问题。数据表映射时,版本管理器将根据传入的时间选择一个可用的数据版本模型存放于名称为当前版本的成员变量中。
[0075] S73,根据所述数据行表及所述数据版本模型,获取所述事实表模型对应的数据行表模型。
[0076] 在本实施例中,利用RowManager对象获取所述事实表模型对应的数据行表模型,也就是实现代码中的RowModel对象。所述RowManager对象根据数据版本模型获取某个确定时间点上的,用于定义数据行的数据行表模型。
[0077] 所述数据行表模型,也就是实现代码中的RowModel对象实现了ITreeNode接口。因此,所述RowModel对象具有树型的结构。另外,RowModel也实现了Comparable接口。因此,RowManager可以对实例化的RowModel对象进行排序。更为具体的,RowManager在对RowModel对象进行排序时,是根据RowModel对象所对应的数据行表中的SN字段进行的排序。
[0078] S74,根据所述维度定义表及所述数据版本模型,获取所述事实表模型对应的维度模型。
[0079] 与前文描述的各种数据挖掘模型相同,对维度模型的获取也是通过一个维度管理器而实现的。在实现代码中,维度模型对象被称为DimModel对象,而维度管理器对象被称为DimManager对象。
[0080] 图9示出了维度模型中各个对象之间的相互关系。参见图9,维度管理器作为单例注入到TableManager中,在注入前,即构造了完整的维度模型DimModel列表和维度值DimValue列表。DimModel和DimValue均实现了clone接口,因此可以进行深度克隆。DimValueSetModel中所获取的DimValue成员均是克隆对象,以保证DimValue实例的层次关系是可以反向追溯到正确的DimValueSetModel。
[0081] ColumnModel可以与一个DimModel进行关联,也可以与DimValueSetModel进行关联。当ColumnModel具有一个主维度的DimValue时,可将DimValue转换为一个DimValueSetModel。RowManager提供了多个方法查找与维度值相关的行,searchByDimValueSetModel()方法可查找满足作为子集合 的DimValueSetModel所对应的多个行。searchByDimValue()方法可查找与主维度值对应的多个行。findByDimValueSetModel()可查找对应了维度值集合的数据行。
[0082] S75,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合。
[0083] 所述数据挖掘规则是以XML语言定义的。并且,在定义所述数据挖掘规则的XML语言中,预先定义了很多具有一定语义的标签。下面介绍与维度挖掘相关的XML语义标签。
[0084] 维度定义标签
[0085] 维度定义标签用于定义数据维度。它的子标签可以有:条件类型标签、运算类型标签、取值类型标签、统计类型标签。
[0086] 维度取值标签
[0087] 维度取值标签用于指定维度的取值,在维度的计算过程中会使用此标签。它的子属性包括:标识号id,以及对应的取值value。假设一个维度取值标签的标识号是5,取值是18,则这个维度取值标签的代码是:。
[0088] 上述两种标签属于数据维度定义时使用的标签,它们会出现在各种维度定义表中,用于约定维度之间的计算关系。
[0089] 与维度定义标签类似的,在所述数据挖掘规则中还进一步的定义了条件类型标签、运算类型标签、取值类型标签、日期时间定义类标签、统计类型标签以及数据表标签。所述条件类型标签用于定义数据挖掘过程中的条件判别关系。所述运算类型标签用于定义数据挖掘过程中的各种运算符号。所述取值类型标签用于定义数据挖掘过程中的数值类型转换关系。所述日期时间定义类标签用于定义日期类型数据的转换。所述统计类型标签用于定义各种统计运算。所述数据表标签用于定义对数据表的相关操作。
[0090] 在依据数据挖掘规则对数据维度进行挖掘时,可以根据所述数据挖掘规则中定义的上述语法标签执行对数据维度的自动挖掘。
[0091] S76,根据所述数据列表及所述数据版本模型,获取所述事实表模型对应的数据列模型。
[0092] 事实表模型内部持有所述数据列模型对应的数据列管理器对象。因此,可以通过获取所述事实表模型的内部对象的方式而获取所述数据列管理器对象。特别的,所述数据列管理器对象的获取需要参考所述数据版本对象,以避免获取到的树蕨管理器对象存在版本问题。
[0093] 在实现代码中,所述数据列管理器对象又被称为ColumnManager对象。可以通过ColumnManager对象来实例化数据列模型,也就是ColumnModel对象。
[0094] 与RowModel对象相同,ColumnModel对象也实现了ITreeNode接口,所以所述ColumnMode具备树型的结构。ColumnModel同样也实现了Comparable接口,因此ColumnManager可以对ColumnModel进行排序。更为具体的,在对ColumnModel进行排序时,ColumnManager是根据对应的数据列表中的SN字段对ColumnModel进行排序。
[0095] S77,根据所述指标定义表及所述数据版本模型,获取所述事实表模型对应的指标模型。
[0096] 获取所述事实表模型时,也是利用指标管理器实例化指标模型,从而实现对指标模型的获取。所述指标管理器采用单例模式实现,通过依赖注入存放在TableManager对象中。ColumnModel对象实例化时,从指标管理器IndexSetManager中获取指标集合模型IndexSetModel实例。
[0097] IndexSetModel实例采用组合模式将指标模型IndexModel、指标类型模型IndexTypeModel、数据粒度模型GradingSizeModel的实例组合起来。
[0098] IndexTypeModel表示一个数据的统计方式,表示可根据同一个指标所能计算出的不同类型,目前的指标类型定义为三级指标定义。GradingSizeModel用于描述数据的粒度。指标相关类中,提供了一系列的方法用于比较两个指标集合的相似性。在ColumnManager中,searchByIndexModelSet()和findByIndexSetModelId()等方法均是使用指标集合对数据列进行筛选,从而查询到指标相匹配的数据列。
[0099] S78,根据所述数据列表模型及所述指标模型对应的数据挖掘规则,获取所述事实表的数据列名称,并对所述指标模型中的指标进行筛选、计算、统计和归类。
[0100] 在于指标相关的挖掘操作中使用到的XML标签主要有指标定义标签和数据粒度相关标签。所述指标定义标签主要用于数据指标的定义。所述数据粒度相关标签主要用于数据粒度的定义。
[0101] 需要进一步说明的是,前文所述的条件类型标签、运算类型标签、取值类型标签、日期时间定义类标签,以及统计类型标签在指标挖掘的过程中也会被使用。
[0102] 本实施例通过根据所述事实表获取所述事实表模型,获取所述事实表的数据版本模型,根据所述数据行表及所述数据版本模型,获取所述事实表模型对应的数据行表模型,根据所述维度定义表及所述数据版本模型,获取所述事实表模型对应的维度模型,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合,根据所述数据列表及所述数据版本模型,获取所述事实表模型对应的数据列模型,根据所述指标定义表及所述数据版本模型,获取所述事实表模型对应的指标模型,根据所述数据列表模型及所述指标模型对应的数据挖掘规则,获取所述事实表的数据列名称,并对所述指标模型中的指标进行筛选、计算、统计和归类,实现了根据数据仓库中的数据对其中蕴含的知识的自动发现。
[0103] 第三实施例
[0104] 本实施例以本发明的上述实施例为基础,进一步的提供了挖掘操作中维度挖掘的一种技术方案。在该技术方案中,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合包括:为所述数据行创建主语法解析链;在所述主语法解析链上添加解释器;根据所述主语法解析链对所述事实表的数据维度进行挖掘。
[0105] 参见图10,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合包括:
[0106] S101,为所述数据行创建主语法解析链。
[0107] 所述主语法解析链是类型IXmlNodeResolverChain的对象。它负责提供主解析链接口和属性,提供具体实现类的实现方法的具体接口,可作为子解析链的指针。
[0108] S102,在所述主语法解析链上添加解释器。
[0109] 虽然完成了主语法解析链的创建,但要利用创建的主语法解析链完成对数据挖掘规则的解析,还需要在所述主语法解析链上添加解释器。
[0110] 图11示出了解释器之间的继承关系。参见图11,所有的解释器均继承自AbstractRuleResolver抽象类。各种具体的解释器通过实现AbstractRuleResolver抽象类提供的resolve方法实现对不同数据对象的具体解析逻辑。AbstractRuleResolver抽象类的子类包括:用于执行加法运算的加法解释器AddResolver、用于执行减法运算的减法解释器RecResolver、用于执行乘法运算的乘法解释器MulResolver、用于执行除法运算的除法解释器DivResolver、用于执行取最大值运算的最大值解释器MaxResolver,以及用于执行取最小值运算的最小值解释器MinResolver。
[0111] 以在所述主语法解析链的实例resolverChain上添加除法执行器的实例divResolver为例,具体的实现代码如下:
[0112] resolverChain.append(divResolver);
[0113] S103,根据所述主语法解析链对所述事实表的数据维度进行挖掘。
[0114] 在创建了主语法解析链,并在所述主语法解析链上添加了各种解释器之后,根据所述主语法解析链对数据维度进行挖掘。
[0115] 具体的,当调用TableModel对象的mapping方法后,所述主语法解析链被调用,从而执行对事实表的数据维度的挖掘。并且,对数据维度的挖掘结果被保存在TableModel对象的mapData成员参量中。
[0116] 如果TableModel对象有引用表,也就是TableModel对象的refTable成员参数不为空的情况下,调用mapping方法时,也会执行对引用表的数据维度的挖掘。更进一步的,在执行对引用表的数据为度的挖掘的过程中,还会对不同的引用表的数据维度的挖掘结果进行聚合,并将聚合结果存放在RowModel对象的rowMapData成员参量中。然后,ColumnModel对象会从RowModel对象的rowMapData成员中获取聚合结果,并将该结果同样放置在TableModel对象的mapData成员参量中。
[0117] 本实施例通过为所述数据行创建主语法解析连,在所述主语法解析链上添加解释器,以及根据所述主语法解析链对所述事实表的数据维度进行挖掘,从而利用构建语法解析链的方式实现了根据预定义的数据挖掘规则而执行对数据维度的自动挖掘。
[0118] 第四实施例
[0119] 本实施例以本发明上述实施例为基础,进一步的提供了挖掘操作中维度挖掘的另一种技术方案。在该技术方案中,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合还包括:在所述主语法解析链上添加解释器之后,为所述主语法解析链创建子解析链;在所述子语法解析链上添加解释器;根据所述主语法解析链对所述事实表的数据维度进行挖掘包括:
根据所述主语法解析链,及其子语法解析链,对所述事实表的数据维度进行挖掘。
[0120] 参见图12,根据所述数据行表模型及所述维度模型对应的数据挖掘规则,获取所述事实表的数据行名称,并对所述维度模型中的维度进行筛选和聚合包括:
[0121] S121,为所述数据行创建主语法解析链。
[0122] S122,在所述主语法解析链上添加解释器。
[0123] S123,为所述主语法解析链创建子语法解析链。
[0124] 如果事实表的维度模型中存在层级关系,也就是主维度又有自身的子维度的情况下,仅利用主语法解析链将无法完成对不同层级的维度的完整挖掘。为了完成对存在层级关系的数据维度的完整挖掘,对应于维度模型中的子维度,为主语法解析链创建子语法解析链。
[0125] 具体的,子语法解析链的创建代码如下:
[0126] IXmlNodeResolverChain subChain;
[0127] S124,在所述子语法解析链上添加解释器。
[0128] 与主语法解析链类似,要运用创建的子语法解析链对数据挖掘规则进行解析,也需要在子语法解析链上添加解释器。在子语法解析链上添加解释器的逻辑和实现代码与在主语法解析链上添加解释器相类似,在此不再赘述。
[0129] S125,根据所述主语法解析链,及其子语法解析链,对所述事实表的数据维度进行挖掘。
[0130] 本实施例通过在创建主语法解析链之后,为所述主语法解析链进一步的创建子语法解析链,并在所述子语法解析链上添加解释器,从而利用子语法解析链完成了不同层级的数据维度的挖掘。
[0131] 第五实施例
[0132] 本实施例以本发明上述实施例为基础,进一步的提供了挖掘操作中指标挖掘的一种技术方案。在该技术方案中,根据所述数据列表模型及所述指标模型对应的数据挖掘规则,获取所述事实表的数据列名称,并对所述指标模型中的指标进行筛选、计算、统计和归类包括:创建语法解析链;初始化所述语法解析链需要的解释器;在所述语法解析链上添加初始化的解释器;根据所述语法解析链对所述事实表的数据指标进行挖掘。
[0133] 参见图13,根据所述数据列表模型及所述指标模型对应的数据挖掘规则,获取所述事实表的数据列名称,并对所述指标模型中的指标进行筛选、计算、统计和归类包括:
[0134] S131,创建语法解析链。
[0135] 同执行维度挖掘中的操作类似,在执行指标挖掘时,也需要首先创建用于指标挖掘的语法解析链。示例性的,创建语法解析链的代码如下:
[0136] IXmlNodeResolverChain indexSetResolver=new IndexSetResolver();
[0137] resolverChain=indexSetResolver;
[0138] S132,初始化所述语法解析链需要的解释器。
[0139] 同样,在执行指标挖掘的过程中,为了识别数据挖掘规则中定义的不同的语义标签,需要不同类别的解释器。在将这些解释器添加至所述语法解析链上,执行对不同语义标签的识别之前,需要对这些解释器进行初始化。
[0140] 以对加法解释器的一个实例进行初始化为例,其实现代码如下:
[0141] IXmlNodeResolverChain addResolver=new AddResolver();
[0142] S133,在所述语法解析链上添加初始化的解释器。
[0143] 完成了对各种解释器的初始化操作之后,在所述语法解析链上添加进行了初始化之后的解释器。具体的实现代码如下:
[0144] resolverChain.append(addResolver);
[0145] S134,根据所述语法解析链对所述事实表的数据指标进行挖掘。
[0146] 完成了各种解释器的添加操作之后,利用添加了不同解释器的语法解析链对事实表的数据指标进行挖掘。如果根据数据挖掘规则中的定义,需要对指标类型和数据粒度进行挖掘,对指标类型和数据粒度的挖掘也一并完成。
[0147] 本实施例通过创建语法解析链,初始化所述语法解析链需要的各种解释器,在所述语法解析链上添加初始化的解释器,以及根据所述语法解析链对所述事实表的数据指标进行挖掘,实现了对事实表的数据指标的自动挖掘。
[0148] 第六实施例
[0149] 本实施例提供了数据挖掘装置的一种技术方案。参见图14,在该技术方案中,所述数据挖掘装置包括:模型获取模块141以及挖掘模块142。
[0150] 所述模型获取模块141用于获取数据挖掘模型,所述数据挖掘模型对于与数据仓库中的数据表,并且所述数据表中记录有进行数据挖掘所依据的数据挖掘规则。
[0151] 所述挖掘模块142用于根据所述数据挖掘规则对数据仓库中的事实数据进行挖掘。
[0152] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。