CN1310824A - 用于数据仓库的选择聚集层和交叉产品层的方法和装置 - Google Patents

用于数据仓库的选择聚集层和交叉产品层的方法和装置 Download PDF

Info

Publication number
CN1310824A
CN1310824A CN00800999A CN00800999A CN1310824A CN 1310824 A CN1310824 A CN 1310824A CN 00800999 A CN00800999 A CN 00800999A CN 00800999 A CN00800999 A CN 00800999A CN 1310824 A CN1310824 A CN 1310824A
Authority
CN
China
Prior art keywords
layer
dimension
attribute
record
sublayer
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.)
Granted
Application number
CN00800999A
Other languages
English (en)
Other versions
CN1144145C (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.)
Computer Partnership Throught Inc.
Original Assignee
Platinum Technology IP Inc
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 Platinum Technology IP Inc filed Critical Platinum Technology IP Inc
Publication of CN1310824A publication Critical patent/CN1310824A/zh
Application granted granted Critical
Publication of CN1144145C publication Critical patent/CN1144145C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Abstract

一种定义用于在具有一个或多个维度的数据存储的聚集的聚集层(图2B)、聚集子层和交叉产品层的方法(图2A)。层根据维度中的属性来定义,因此数据可以根据那些属性的值被聚集成聚集(图3A和3B)。

Description

用于数据仓库的选择聚集层和交叉产品层的方法和装置
发明的背景
本发明涉及一种选择在数据仓库中产生的聚集(aggregates)的方法。
数据仓库通常包含关于一种商业结构的大量的数据,从中信息被检索和分析。Ralph Kimball.John Wiley & Sons公司的数据仓库工具箱ISBN 0-471-15337-0对数据库的背景进行了很好地介绍。建立一个成功的数据库的首要的步骤之一是正确地识别商业结构的不同维度(dimension)和事实(fact)集合,通常称之为维度建模。每个维度表示一个参与在事实集合而独立于来自其它维度的实体的唯一的实体的聚集。事实集合通常包括事项处理数据,其中每个事项处理(或记录)由来自每个维度一个的实体的组合识别。图1表示了一个用于超级市场经营的星形模式,该星形模式是维度建模过程的结果。
每个维度是一个表,其中每个记录包括一个唯一地表示每个实体的码(或复合码)和限定或描述相关实体(或码)的属性(attribute)列表。在事实表中的每个事实记录应包括一个外码用于连接到每个维度和表示事项处理数据的测度(measures)列表。因为维度的大小通常比事实表小得多,维度表通常不进一步的规范化(normalized)。因此,通过规范化节约的空间并不显著。并且,OLAP(联机分析处理)查询工具在查询运行期间连接规范化了的维度并不节省时间。
理论上,在上述的星形模式的结构中,OLAP工具可以直接查询包含事项处理数据的数据仓库。但是,为了达到高级查询的快速响应时间,例如,获得一种特定品牌的产品在每个州的月销售量的查询,必须要求数据仓库数据的预聚集。
数据预聚集是重要的,因为它促进了OLAP工具在普通请求的查询(问题)方面的快速查询响应时间。因此,能够定义在数据库中产生的正确的聚集集甚至更为重要。但是,OLAP工具可能不会从预计算的聚集中获益。
为了聚集的目的,每个维度定义有数据层。根据条件每层定义了一组维度登录项(entry)。例如,在商店维度中,对不同的州定义有一个层,因此对每个州层将包含一个聚集维度记录,其中每个聚集记录表示至少一个商店。换句话说,一个特定的州的聚集维度表示在这个州的所有商店的聚集。同样,我们可以在商店维度中定义另一个城市层以便允许建立聚集维度记录,其中每个登录项表示一个特定的城市中所有商店的聚集。层也称为聚集层。
因此,每个层确定在该特定层中产生的聚集组。与每层相关的规则或条件用于识别具体维度记录和聚集维度记录之间的包含关系。条件还将各种分组的具体层维度记录确定成不同的聚集。
每个聚集维度记录包括一个替换(或合成)码,因为在输入维度表中它的维度记录原先没有被提供。码用于将聚集维度记录同输出事实表中产生的聚集相结合。在多数情况下,也产生替换码以用于输入维度记录以便聚集和输入维度记录两者有同样的格式。在此,所有的事实聚集记录也可以有一种格式,因为它们可以连接到的每个维度聚集中或具有相同类型码的输入层记录中。
对于一个聚集维度记录,不是所有的属性是有效或有意义的。在某些情况下,某些属性值被删除。例如,在商店维度中,州层中的聚集维度记录将使它的街道地址和城市属性删除,因为这些属性描述单个的商店。删除的属性可以填为无效值或用户定义的缺省值。
在输出事实数据中需要的聚集由要聚集的,来自每个维度一个的层的组合来定义。用于定义聚集的层的组合还称为层的交叉产品,以上述的星形模式中的查询某州某品牌的产品月销量为例,相关的层需要在每个维度中定义,同时根据三个特定的层的交叉产品,事项处理数据的聚集需要被要求。用户可以定义一个它们需要聚集的交叉产品的列表。输入层(或具体)的交叉产品表示输入或具体(detan)事实数据。
通常在具有一个包括所有的维度记录的单个成员的维度中定义一个“维度”层。使用在交叉产品中的这个层可以有效地从交叉产品删除该维度。例如,如果在上述的交叉产品的产品维度中定义维度层,就可以产生州的月查询。
在此文件中所介绍的技术涉及在维度中定义层。
今天,许多OLAP工具允许用户定义简单的聚集层。这些层通常建立在表的一个或多个列(column)的不同的值的基础上。此技术满足了大多数重复和单一的OLAP查询的需要。但是,通过列的组合和或使用多重选择标准的更先进的查询可以从更高级的预产生的聚集获益。在某些情况下,这些更高级的查询是规范(norm)。
以前的由当前的代理人建立的产品提供了在具体维度记录和聚集维度记录间进行识别包含关系和进行事实数据聚集的咨询服务。用于识别聚集维度记录的层规则严格地以不同的属性值为基础。每个层规则可以有零或多个规则项。如果在层规则中没有定义规则项,就意味着所有的维度记录可以无条件地聚集成聚集记录。每个规则项表示一个不同的维度属性并且规则项既可以是有条件的也可以是无条件的。
无条件的规则项仅包括来自相关维度的一个属性。例如,商店维度可以有一个州属性的无条件规则项的层。意味着将对每个输入维度的州属性的不同值产生一个聚集维度记录。
有条件的规则项包括一个属性,一个相等或不等的运算符和一个值。例如,如果有条件规则项商店维度为“州等于TX(德克萨斯)”,于是有州等于TX维度记录,就产生一个聚集维度。如果有条件规则项是“州不等于TX”,于是除了TX每个州属性的不同(distinct)值产生一个聚集维度记录。
多规则项的层规则对于规则项聚集的每个不同的组合属性值产生一个聚集维度记录。定义的多规则项考虑了在属性或层的实际分层顺序未知时识别分层层。例如,层规则可以有两个无条件的规则项:一个用于州属性,另一个用于城市属性。如果两个城市有相同的名称,但是却来自不同的州,它们将适当地产生两个不同的聚集记录。另一方面,如果层规则只有一个城市属性的无条件规则项,则两个城市的事实数据将错误地聚集为一个记录。
另一个提供聚集的产品是微软的SQL Server 7.0 Beta OLAP服务器,代号为Plato。每层与一维属性关联。但是,所有的层按分层的顺序定义,所以当前的和所有的更高的层的每个特殊属性值组合产生一个聚集记录。因此,它类似于上述的当前代理人的以前产品的无条件的层规则。
OLAP和聚集产品需要一个识别聚集层的精确和灵活的方法。通常的运算是根据在维度表的一个或多个列中提供的不同值识别层。每个唯一的层列的组合表示在此层的一个聚集。例如,层列的城市和州可以是休斯顿和德克萨斯州唯一的组合,其表示在城市聚集层的一个聚集。
由于以下一些原因,通常在实践中不太灵活:
需要的功能有能够定义可以限制产生的聚集的层以便不产生所有的组合。重要的是控制数据仓库的增长,并产生不太有用的聚集或不包含过多的昂贵又浪费空间的数据的聚集。例如,如果在德克萨斯州的奥斯汀只有一个商店,用户应该能够防止奥斯汀的聚集记录被增加到维度中。以此方式,用户可以调整到真正需要加速OLAP分析的聚集。先前的产品在一定程度上提供了选择的功能,但是它们用起来很麻烦。
需要的功能有能够定义不是容易地从维度属性导出的层。例如,给定的州、城市和人口属性,我们可以需要州的小城镇的聚集。虽然可以容易地建立包括城市、州和人口<50000的层(容易假设你有基于表达式的层识别),这产生单个的聚集维度记录,如那瓦沙达、德克萨斯、23450和巴黎、德克萨斯、34982。没有迅速的方法以获得州的所有的人口<50000的城市的单个聚集。这意味着OLAP工具将采取查询更多的行的手段。
需要的功能还有要能够给层分组以便层的交叉产品(早先介绍的)可以较容易而方便地定义。如果你有三个维度,每个维度仅有十个层,所有的组合导致层的交叉产品有1000个登录项长。
要求的功能还有定义属性不充分的层。例如,如果具有男性人口、女性人口、男性平均年龄和女性平均年龄的属性,但是条件要求“平均年齿>50”,“平均年龄”属性不能直接用于建立这个层,即使理论上有充足的信息建立此层。一些产品通过提供“导出的属性(derived attributes)”解决这个问题,“导出的属性”不能在维度表上持久地保持,但是为聚集的目的而产生。在某些情况下,这可以工作得很好,但是会在系统中造成超时间跟踪属性的问题。例如,在维度表中表示层单元的复合码经常持久地存储在维度表中。与某属性关联的复合码从不改变,在不同时间产生的聚集会有相同的码值。聚集维持相同码的事实会非常有用。但是,如果使用在聚集之间本来不持久的导出的属性,在不同时间产生的聚集将不可避免地有不同的码用于不同的属性值。由于这个原因,许多结构避免使用导出的属性,因此维持不变的合成码,但仍经常需要此导出的属性提供的优点。
本发明概述
本发明一方面提供了基于表达式的层识别,允许更简单和功能更强大的层选择。为每个属性提供每层规则的表达式限制贡献于层的属性的值,而不是通过在相关的维度中简单地定义属性来定义层。
本发明另一个方面提供了子层,子层被根据与它们的父层相同的属性值分组。但是根据能够包括任何或所有的列的组合属性的规则而缩小参与此层的具体登录项的规则。这不同于现有的分组层的概念,而可以根据使用两个或多个列的层规则而定义分组层,但现有的分组层的概念不允许不同的列的值被组合。因此,子层概念允许不能满足一个单独的层规则的附加的层。例如,通过使用子层选择标准,可以根据其它的属性,诸如:女性平均年龄、男性平均年龄、女性人口和男性人口,采用其它的值计算平均年龄,并用此作为聚集记录产生的基础。当“南部”属性不具备时,一个简单的例子可以用来计算南部的州的聚集。可以采用一个子层检测是否州在南部州的列表中。
子层可以起到象父层的哪里(where)条件一样的作用以支持这个功能。采用子层,州层可以被定义,同时在子层可以增加人口<50000的条件。这会产生聚集维度记录如德克萨斯、<无效(null)>,对“州的所有的小城镇”子层为<无效>。OLAP的用户可以查询此层并比较结果。
本发明还有一个方面提供了层组,其相当大地简化了定义需要产生的层的交叉产品的层。层组允许整个组在交叉产品的单一登录项的说明。这使交叉产品容易维持。
附图的简要说明
如下参见附图介绍本发明的特别实施例,其中:
图1表示了可以采用本发明处理的一个简单超级市场经营的星形模式的例子。
图2A&2B表示本发明的第一个实施例的第一个例子的层成员映射表的维度表和具体码。
图3A&3B表示本发明的第二个实施例的第二个例子的层成员映射表的维度表和具体码。
本发明的详细说明
传统的层由层规则识别,层规则是列的列表,列的值定义了该层中的聚集记录,如图1所示的商店维度,城市层和州层定义如下:
城市层规则=城市,州
州层规则=州
定义的每个列是一个规则项。(注意:采用此传统技术的产品使用不同的术语,但事实上方法是相同的。)城市层规则表示对于每个城市和州的唯一组合,城市层包含一个聚集维度。州层规则表示对每个唯一的州,州层包含一个聚集维度记录。
规则项表示一个并只有一个属性列。层规则中的每个规则项必须从余下的层规则中引用不同的列。通过使用多规则项,可以建立分层层。对于使“所有的总和”采用一个单一的层,层规则将有零规则项。
自动产生聚集维度记录的产品通过提取具体维度数据的层规则定义的唯一组合进行此运算。
这些产品大多数有删除不完全的或空的数据的方法。例如,如果州字段是空的,通常“空白”州聚集是不要求的。
本发明通过详细具体地表述每个规则项增强了传统的层规则的概念。如果属性符合条件,每个表达式判断为真,否则为假。每个规则项必须引用一个并只有一个列,并且每个规则项必须引用一个不同的列。
重要的是要注意规则项的表达式不改变属性,但是它们限制维度中的数据组合具有聚集记录。例如,当州的第一个字母为“T”时,规则项可以判断为真。在此情况下,建立“德克萨斯”的聚集记录而不是“密西根”。如果大多数的数据涉及“德克萨斯”,就可以防止数据被不必要的聚集。
规则项表达式的特别实现采用逆波兰表示法(reverse-polish notation)简单表达式语言。此语言包括数学运算、字符串运算、数据运算、列引用、登记变量和其他属性。此语言是适合的,因为它可以有效直接地执行,容易被用户接口分析;不给用户显示任何表达式语言就可以进入大多数的典型情况。但是,特殊的表达式语言语法对实现并不很重要。其它合适的语言可以是JavaScript、BASIC、Perl、Java或其它。主要的要求是语言必须具有访问列变量的手段(或者有将它增加到该语言的手段)。
虽然逆波兰表示法语言在内部应用,为了清楚说明,所述的例子可以采用标准数学类型插入表达式。
在实现中,虽然采用表达式可以产生无穷多的各种测试,但层规则项只有四个普通分类:1)相等(Equal),不等(not equal),大于(greater than)、小于(less than),大于或等于、小于或等于
这些比较运算符每个包括两个运算数:一个属性列表达式和一个值表达式。列表达式必须引用一个属性列。值表达式必须判断与属性列表达式相同数据类型的常数值。比较运算符基本确定是否条件为真。2)空(Empty)、非空(not empty)
这些运算符要求引用一个属性列和一个可选择的空值作为它们的运算数。用户可以定义一个把属性列视为空的值。例如,“N/A”值表示重量属性列在产品维度中为空。如果参考属性列中没有定义为空值,无效值被认为是属性的空值。这两个运算测试具体记录属性是否满足空或非空的条件。3)存在(Exists),不存在(not exists)
这些运算符基本上与“空”和“非空”相同,除了它们还利用一个称为“聚集空值”的程序设置。程序设置规定应该为通常认为是空的值建立聚集记录。“存在”运算符与传统的层规则项完全等价。4)包括列表(Include list),排除列表(exclude list)
这些运算符要求两个运算数:一个属性列表达式和一个值表达式列表。给定的具体记录,它们确定是否属性列表达式的结果值分别在或不在值列表中。对“包括列表”,具有判断为在列表中的一个值的属性的所有具体记录满足条件,对“排除列表”具有不能判断为在列表中的任何值的属性的所有具体记录满足条件。
当然,规则项的隐含类型不局限于上述列表中,但是列表定义了更普通的需要。规则项也可具有组合测试。规则项可以同逻辑运算符如与、或、非组合。采用表达式语言使规则项非常灵活,如一些例子所示:
规则项=年龄组>30和年龄组<=90
规则项=非(年龄组>30和年龄组<=90)
规则项=品牌="品牌名称"或品牌="另外的品牌名称"(可以用包括列表达到相同的结果)
规则项=word_cap(品牌)在("品牌名称","另外的品牌名称")中
当产生聚集记录列表时,扫描具体维度记录看是否它们出现在层里。出现在层里意味着具体记录的属性符合层规则的要求;其含义是给定的具体记录识别必须“求和”的事实数据以获得此层的聚集维度记录识别的聚集。
如果具体维度记录符合层规则的所有规则项的条件,就认为它有资格进入层中。可以给每个在层中使用的属性的属性值的不同的组合产生一个聚集维度记录。注意聚集记录的产生是根据特殊原始属性值而不是规则项的属性表达式。例如,如果规则项是“Age div 10=2”,属性表达式的结果“Age div 10”对于年龄属性值范围20到29而言总是2。有10个不同的属性值。如果此规则项是层规则的唯一项,将产生10个不同的聚集维度记录(从20到29的值中的一个值)。
基于表达式的层识别提供了一个以简单的方式产生聚集的优秀灵活的限制方法。
子层(sublevel)表示了在层上放置附加的规定的方法。子层允许不能在单独的层规则达到的附加的运算。每个聚集层可以有任意多个子层。子层通过限制哪些具体记录实际上加入子层,起到一个哪里条件的作用。
每个子层可以产生零个或多个维度聚集记录,直到父层产生的记录的数目(子层总是受限于父层)。对于来自父层的每个唯一的维度聚集记录,根据是否符合子层条件,子层将产生零或一维聚集记录。
每个子层规则包括一个布尔表达式(即,该表达式必须判断真或假的值)。布尔表达式必须引用一个或多个属性列。在本实施例的执行中,表达式可以利用任何语言支持运算。子层规则表达式还过滤加入聚集层规则产生的每个聚集记录的具体记录。
此外,子层还提供给用户选择以产生另外要求的维度中的附加的属性列。下述的例子说明了不能被单独的聚集层规则代替的子层的灵活性和功能性。例1.
图2A和2B表示此例子。图2A表示一个产品维度表,图2B表示在该维度中的层定义。产品维度具有以下属性;UPC(通用产品编码)、产品名称、价格、类别、品牌和制造商。
层规则:品牌存在、制造商存在。
子层规则:价格>10.00和类别=“食品”
在上述的层规则中,为每个品牌和制造商属性的不同组合产生一个聚集维度记录(记录8-11)。子层规则应用到包含层规则以产生附加的聚集记录(记录12-13)。当且仅当在聚集记录中存在至少一个具体记录并且类别为食品价格大于10美元时,就对品牌和制造商属性值产生一个聚集记录。因此,子层可以产生比封闭的聚集层更少的聚集记录。在此情况下,只有与四个层记录比较的两个子层记录。子层的每个聚集记录表示一特定的品牌和制造商的大于10美元的所有食品项的聚集。(注意:为了使子层的聚集记录为唯一的聚集结果,在层的交叉产品中不选择父聚集层。)
注意上述的子层条件不能由层规则单独表示,因为对每个在层规则中采用的属性的每个不同组合产生一个聚集记录。因此,如果在层规则中加入条件,对于所有的相同价格相同品牌和制造商的食品项产生一个聚集记录。在层规则中用的分组技术不足以定义一个如子层规则的哪里(where)条件。
此外,当聚集产生期间不应用子层规则时(即,哪里条件),子层规则产生的聚集不能从由层规则单独产生的聚集集中得出。层规则产生的聚集将不包括任何的价格或类别信息。这些属性被抑制因为它们正被聚集到更高的品牌和制造商层中。因此,它将不能发现在聚集中的哪个具体记录的价格大于10美元或属于商品类,除非OLAP工具也分析具体记录,。这将使产生聚集的全部目的失败。
另一个解决方法涉及具有一个层规则,如:品牌存在、制造商存在、价格存在、类别=“食品”。在此情况下,对每个类别为“食品”的品牌、制造商和价格的特殊组合产生一个聚集记录。OLAP工具于是将“价格>10.00”的哪里条件应用到产生的聚集上并进一步聚集价格>10.00的记录。但是,这不会从预聚集获益,因为很可能每个产品有不同的价格。在此情况下,产生的聚集的数目几乎与具体记录的数目相同。
子层允许在聚集阶段哪里(WHERE)条件的应用,其会极大地有利于OLAP查询工具,尤其是当哪里条件是用户组的普通过滤条件时。例如,对在不同的年龄组的雇员产生聚集,对一特定的价格范围的所有的产品产生聚集等等。例2
图3A和3B表示了此例子。雇员维度提供了如下属性:SSN(规格序号)、姓名、性别、地址和电话号码。
层规则:
子层1规则:子字符串(1,3,电话号码)=“281”
子层2规则:子字符串(1,3,电话号码)=“213”
子层3规则:子字符串(1,3,电话号码)=“713”
在此例子中,层规则没有规则项,这意味着来自维度的所有具体记录可以聚集到一个聚集记录中(如图所示3B,此情况为聚集记录8)。因此,只产生一个聚集记录。这个层规则包括三个子层规则。每个子层规则同一特定的值比较电话号码开始的三位数字(即,区号)。基本上,第一个子层规则为所有的区号=“281”的具体记录建立了一个聚集记录。同样,第二和第三子层规则为所有的区号分别为“213”和“713”的具体记录建立聚集记录(记录10,11)。
而且,仅采用层规则不能实现这些聚集。采用层规则中的子层规则条件会错误地对每个确定区号的不同电话号码产生聚集。
采用上述的子层规则,假设用户可以列出所有的区号,每个子层一个,用户实际上可以对每个区号建立一个聚集记录。从长远考虑,用户可能还希望在维度中建立一个分离的区号属性以便他们可以将层规则应用到属性上。这将避免对每个新增的区号必须手工建立一个子层。但是,子层确实可以迅速地解决不具有附加的属性的问题。
在另一个实施例中,在处理中为聚集的目的可以定义导出的属性,其不随着实际维度表存储到输入事实数据。在图3A和3B中的虚线表示了导出的属性。例如,可以通过数据的属性列函数定义属性,这导出的属性可以为了聚集的目的起到与聚集一样的作用,可以采用同样的方法在层规则和子层规则中引用。例如,称为电话号码前缀的导出属性可以用属性定义函数子字符串(1,3,电话号码)定义。通过包括此属性的层规则(在此例中指前缀层规则),数据可以直接聚集到电话号码前缀。实际上,采用导出的属性不方便,通常属性随时间存储在主文件中以便它们连接从不变化的特定的复合码。因此,增加的属性要求重新处理许多旧数据。为了简化处理,本较佳实施例没有提供属性,此实施例是在本发明范围内的。
子层也证明在其它类似的情况下是有用的。如果用户想为三个最大的客户建立一个聚集,用户可以为所有的客户建立一个聚集并用一个子层规则列出三个最大的客户。这允许用户在没有为了此目的建立一个新属性的情况下将所有的三个客户的聚集看作为一个。它还允许“前三个”客户随时间变化而仍然维持相同的聚集维度记录(这使得趋向于更容易分析)。
一旦为所有的维度定义了层规则和子层规则,聚集层可用于层的交叉产品。层的交叉产品允许用户定义哪个交叉维度的聚集需要被增加到数据库中。
层交叉产品仅为登录项的列表,每个登录项有每维度的层。对于早先介绍的商店、产品和时期维度,层的交叉产品可能看上去如:
商店x产品x天(具体或输入数据)
商店x所有_产品x月
所有_商店x产品x月
所有_商店x所有_产品x月
商店x所有_产品x季度
所有_商店x产品x季度
所有_商店x所有产品x季度
这一列表虽短,但实际上它可以增加到很长。如果用户对于三个维度每个维度仅定义十个层,当需要所有的组合时,列表的长度可以增加到1000个登录项长。
为解决此问题,发明还提供了层组(Level group)。一个层组是一个维度的层的列表,可以作为层的交叉产品的一个登录项。软件自动扩展层组表示的所有组合。通过定义包括“月”和“季度”的层组“时期组”,上述的列表可以缩短为:
商店x产品x天(具体或输入数据)
商店x所有_产品x时期_组
所有_商店x产品x时期_组
所有_商店x所有_产品x时期_组
缩短的列表的含义与先前的列表相同。此技术具有使它更容易维持交叉产品的主要效果,因为用户可以将层分组为单个的实体。在此例子中,用户一直想按月和季度聚集;使用层组仅需要增加一个登录项以表示所有的需要的时期聚集。
层组可以包括聚集层、具体层和子层。注意上述的层交叉产品可以表示成百甚至上千的实际聚集记录,因为每层有许多与它结合的聚集记录。
层组还可以被定义成覆盖多于一个维度,并可以扩展到包括在每个维度中的层/子层的交叉产品。但是,这样的一个层组实际上只是在所涉及的每个维度中写出层组的简化方式,因此不会缩减产生交叉产品列表的交叉产品定义的数目。提供这样的选项会使界面更复杂(由于每个登录项不对应于单一维度),因此它的实现不被认为是有利的。
接下来是对实现基于表达式层识别、子层和层组的系统元件的说明。在被称为维度处理的处理过程中描述了层识别和子层,在此期间输入维度记录(表示事项处理)被处理,层规则被应用到每个记录。处理的结果是维度聚集记录的导出表,具体和聚集记录间的包含关系(即具体记录必须被结合以计算由聚集记录表示的聚集)。此信息在事实处理过程中被使用(在此时读取事实记录)从而实际上根据用户定义的层交叉产品产生聚集。
根据扩展的层交叉产品描述层组以获得完全的用于计算的交叉产品的列表。
维度处理必须对星形模式的每个维度执行,有如下的输入要求:1)输入维度记录的列表
对每个维度有一个维度记录列表。每个维度记录包括:一系列的主码和属性列表。下述图表显示维度记录的逻辑图。
码l  码K  属性i 属性s
码字段包括每个维度记录的主码。一些维度可以仅有一个码字段,而其它需要
将多字段结合从而唯一地识别一个记录。属性l到属性a表示一个记录的属性值。这些属性限定码的值并描述每个维度记录的特性。2)维度记录定义相关的输入维度记录列表的是维度记录定义。它定义每个码的位置和属性字段。它还定义每个字段的名称和数据类型。这些对于分析和解析层和子层规则是需要的。字段名称被用于规则中以表示相关的字段值。数据类型被要求检查是否不同的字段定义的运算是有效的(例如,算法运算不能在字符类型的字段执行。)
3)层和子层规则有一系列与维度的相关的层和子层规则。这些规则根据1.2节的说明被定义。用户必须调查要产生的聚集集合,然后为了产生这些聚集定义在每个维度中要求的层或子层。
4)层的交叉产品用户定义聚集计算处理(称为事实处理)使用的层交叉产品以确定建立哪种聚集。此交叉产品将包括对层组的引用,层组需要在事实处理之前(或期间)被扩展。
为了本文件的目的,下述的简单对象被假定为存在的(或可以容易地开发)。假定读者有丰富的C++编程经验,熟悉这些对象的实现和目的。
1)标准模板库(Standard Template Library)在本实施例中的许多组件对于容器(container)对象利用标准模板库,现在有部分C++语言标准。模板向量类被用于执行简单对象数组。
2)字符串(string)简单字符串类(采用适当运算方法)被用于支持规则项表达式和其它文本。
3)值(Value)值对象是可以包含各种不同数据类型的值的对象。在数据库系统中,典型的值为字符串、数字、日期或二进制大对象(BLOB)这一简单类可以包括所有的相关类型并“知道”它当前所包含的对象类型。这个类通过允许我们利用一个表示在数据库系统中的各种数据类型的简单的对象而简化开发。值类的方法包括:A)bool IsNull()-表示是否设置无效值。B)void SetNull()-将值设为无效C)DateType GetDateType()-返回当前值的数据类型D)void SetValue(datetype v)-赋值。对每个支持的数据类型有一个赋值方法(datetype表示任一支持的数据类型)E)void GetValue(datetype&v)-返回值。对每个支持的数据类型有一个返回值的方法(datetype表示任一支持的数据类型)。如果当前值为不同的数据类型并且不能转换为要求的类型,就作为例外而删除。
4)记录(Record)记录只是值对象的向量。此类表示从输入维度表中读取的记录。通过采用值对象表示每个相关的列中的值,不必要考虑不同的数据类型。记录类的方法包括:●int FieldCount()-返回在记录中的字段(或列)的数目。●void GetValue(int i,Value&v)-返回给定的索引i的值。●void SetValue(int i,const Value&v)-为给定的索引赋值。●void Reset(int n)-清除全部记录,对n字段确定空间。
5)ColumnDefColumnDef是列定义。ColumnDef最重要的属性是列的名称和它的数据类型,但是ColumnDef还包括关于如何从它的表中读取列的信息。信息是特别执行的。方法包括:●DataType GetDataType()-返回列的数据类型●void GetName(String&name)-获得列的名称
6)RecordDefRecordDef是记录定义。它主要是ColumeDef对象的向量,但是还包括其的关于如何读取表的特别执行的方法。方法包括:●int ColumnCount()-返回列的数目●void ResetColumns()-清除所有的列●void RemoveColumn(inti)-册除索引i的列●void SwapColumn(int i,int j)-交换索引i和j的列●ColumnDef*GetColumn(int i)-获得索引i的列定义。●Void AddColumn(ColumnDef*pColDef)-增加列定义。对象还有索引过载运算符以使它更容易地访问数据库。
7)RecordProviderRecordProvider是给维度处理提供记录的抽象对象。它可以是一个读取平面文件、网络端口或SQL查询结果的对象。为了我们的目的,在此RecordProvider的具体内容并不重要,但是下面的方法(或等价)是有用的:●void Open(const RecordDef&recDef)-对给定的记录定义打开提供器。●bool ReadRecord(Record&record)-读取记录,当没有更多的记录时返回真。●bool IsAtEnd()-当没有更多的记录时返回真。●void Close()-关闭提供器。
8)RecordCollectorRecordCollector是知道如何处理具体处理结果的抽象对象。RecordCollector接收表示聚集维度记录和具体维度记录的记录。在本较佳实施例中,系统在大数据文件中保存产生的聚集记录和原始具体记录。记录的特别利用是特别实现;文件描述如何通过层规则识别聚集记录。RecordCollector有如下方法(或等价):●void WriteAggregate(Const Record&detail,const Record&aggregate,constLevel&aggrLevel)
此方法接收对给定的具体记录产生的聚集记录。对相同的具体或聚集记录,它可以被调用多次。(注意:层类型在本文件中稍后被定义一它是用于聚集层的对象。)
RecordCollector概念上可以接收两个事物。首先,它接收对维度产生的所有的聚集记录。第二,它接收具体记录和聚集记录间的关系。(通过观察方法参数,可以看到给定的具体(detail)是产生的聚集的一部分。)由RecordCollector知道如何处理此信息。那些具体是特别实现的。
在本较佳软件的执行中,层具有分配给它们的整型代码,所有的具体和聚集维度记录被分配给代替的(或合成)整型码。具体和聚集的关系被写入包含有聚集层代码、具体合成码和聚集合成码的记录的数据文件,在事实处理过程中采用数据文件确定具体必须组合哪个聚集。此外,所有的具体和聚集维度记录在数据文件中保存。关键是本实施例中的特定的RecordCollector是如何工作的,它允许事实处理在稍后完成因为在维度处理完成后存储所有的相关数据。
定义输入要求和假定对象的目的是描述基于表达式的层识别、子层和层组运算的结构;上述的全部结构是执行聚集的典型系统。记录被从RecordCollector中读取,根据层规则和具体数据,聚集记录被“发现”,通过RecordCollector聚集维度记录和它们与具体记录的关系被存储。在对所有的维度执行本运算后,在层交叉产品中的层组扩展以准备事实处理。
本发明的此特定实施例利用的对象如下:
1)表达式(Expression)Expression对象编译和执行表达式。在建立一个表达式时通过一个RecordDef,你可以通知它应该有哪些列。●Expression(const RecordDef&recordDef)-建立表达式的构造器。记录定义存储在表达式中;那些列可以用于此对象编译的表达式文本。●void Compile(const String&exprText)-将给定的文本编译为内部执行的格式。●bool IscolumnReferenced(int i)-如果记录定义中的索引i的列被表达式引用返回true。●iht GetFirstColumnRef()-获得此表达式引用的第一列的记录定义的索引。●int GetColumnRefCount()-获取本表达式引用的特殊列的数目。(如果系统的列被引用多于一次,它仅计一次。)●void SetAggrEmptyValues(intindex,bool yesNo)-如本文件中早先所述,它对每个列控制exists和not exists运算符是如何工作的。如果Yesno对一个列设置为true,对空列存在就返回真。●void Execute(Value&result,const Record*detaillRecord,constRecord*emptyReeord)-执行表达式,将结果放入result。detailrecord包括当前具体记录的列的值。emptyrecord包括表示空字段(象“N/A”)的值。
2)LeveRuleDefLevelRuleDef维持规则项表达式列表。●const BaseLevelDef*GetLevel()-返回指针给含有本层规则定义的层。●void Reset()-将所有的规则项复位。●int GetNumRuleItem()-返回规则项的数目。●const String&GetRuleItem(int i)-在索引i返回规则项文本。●void InsertItem(const String&rule,int i=-1)-在索引i插入给定的规则项,或者如果i没有被定义,就在末端插入。●void SetItem(const String&rule,inti=0)-在索引i设置规则项文本,其默认值为0。●void DeleteItem(int i)-在索引i删除规则项。
3)BaseGroupLevelDefBaseGroupLevelDef是所有的层定义的包括组的基本类。它包括识别层类的方法。●boolIsAggrLevel()-如果层定义对应聚集层就返回真。●boolIsSubLevel()-如果层定义对应一个子层就返回真。●boolIsGroup()-如果层定义对应层组就返回真。
4)BaseL evelDef:BaseGroupL evelDefBaseLevelDef是具有规则项、名称和编码的层定义的基类。●const String&GetLevelName()-返回层名称。●void SetLevelName(const String&name)-设置层名称。●int GetLevelCode()-返回层代码。●void SetLevelCode(int code)-设置层代码●const LevelRuleDef*GetLevelRule-返回指针给层定义的层规则。返回值是只读的。LevelRuleDef*GetLevelRule()-返回指针给层定义的层规则。返回的对象用于给层定义增加层规则项。
5)LevelDer:BaseLevelDefLevelDef是层的基类,其具有对聚集记录产生说明的表达式。这是本执行中的特别的属性。●const String&GetDeseRule()-返回说明规则的文本。●void SetDescRule(const String&descRule)-设置说明规则的文本。
6)AggrLevelDef:LevelDefAggrLevelDef对象表示聚集层定义并包含规则项表达式、层名称和层代码(层的整型标识符)的文本。对象还维持它的子层列表。●SubLevelDef*CreateSubLevel(eonst String&name)-用给定的名称建立子层定义。●void DeleteSubLevel(SubLevelDef*&pLevel)-从聚集层移动给定的子层,并删除它。●void DeleteSubLevel(const String&name)-从聚集层移出给定的名称的子层,并删除它。●bool ContainSubLevel(const SubLevelDef&sublevel)-当聚集层包含给定的子层就返回真。●void TransferSubLevel(SubLevelDef&sublevel,AggrLevelDef&newlevel)-将子层从此聚集移动到newlevel。●void TransferSubLevel(eonst String&subname,AggrLevelDef&newlevel)-将子层(由它的名称确定)从本聚集层移动到newlevel。●int GetNumSubLevels()-返回子层的数目。●void GetSubLevels(vector<SublevelDef*>&vSubLevels)-使所有的子层进入向量。子层可以被修改。●void GetSubLevels(vector<const SubLevelDef*>&vSublevels)-使所有的子层进入向量。子层为只读。
7)SubLevelDef:BaseLevelDefSubLevelDef是子层的定义。除了聚集层的属性之外,它知道哪个层包括它。●const LevelDef*GetRefLevel()-返回包含层的层定义。
8)GroupDef:BaseGroupLevelDefGroupDef对象维持组中的层和子层的列表。●void AddLevel(const BaseLevelDef&level)-在组中增加一个层。层自变量可以是聚集层或子层。●void AddLevels(const vector<cont LevelDef*>&plevels)-在组中增加层列表。●void AddLevels(const vector<const SubLevelDef*>&plevels)-在组中增加子层列表。●void RemoveLevel(const BaseLevelDef&rlevel)-从组中移去给定的子层。●void Reset()-从组中移去所有的层和子层。●bool ContainLevel(const BaseLevelDef&rlevel)-如果组包含给定的层返回真。●vector<const LevelDef*>GetLevels()-返回包含此组的聚集层的向量。●vector<const SubLevelDef*>GetSubLevels()-返回包含此组的子层的向量。●vector<eonst BaseLevelDef*>GetAllLvels()-返回包含此组的层和子层的向量。●vector<const LevelDef*>GetLevelByCode()-返回包含此组的层和子层的由层代码分类的向量。●boolIsEmpty()-如果组不包含任何层或子层返回真。
9)CrossProductCrossProduct对象维持层定义列表,对于交叉产品列表的一个单个登录项,每个维度一个CrossProduct对象。●void SetGroup(const GroupDef&rGrp)-在交叉产品设置一个层组。对维度删除任何先前的组。●void SetLevel(const BaselevelDef&rLevel)-在交叉产品设置一个层或子层定义。对维度删除任何先前的组。●void SetGroupAndLevels(const vector<const BaseGroupLevelDef*>&vObjs)-对交叉产品设置层、子层或组定义的列表。列表应包含每个维度的一个定义。它代替任何存在的定义。●vector<eonst BaseGroupLevelDef*>GetGroupAndLevelsByDimName()-获得由维度名称命令的层、子层或组定义的列表。●vector<const BaseGroupLevelDef*>GetGroupAndLevelsByName()-获得由层名称命令的层、子层或组定义的列表。●void RemoveGroup(const GroupDef&rGrp)-移去层或子层组定义。●void RemoveLevel(const BaseLevelDef&rLevel)-移去层或子层定义。●bool ContainGroup(const GroupDef&rGrp)-当交叉产品包含给定的组就返回真。●bool ContainLevel(const BaseLevelDef&rLvl)-当交叉产品包含给定的层或子层就返回真。●bool operator=(const CrossProduct&inprod)-当此交叉产品与给定的交叉产品相同就返回真给比较运算符。●int GetSize()-返回交叉产品的登录项的数目,其应该与维度的数目相同。●void Reset()-从交叉产品删除所有的层定义。
10)LevelLevel对象包含被需要识别和处理聚集层和子层的信息。建立了给定的聚集层定义或子层定义。对于聚集层,mpSublevelRule数据成员为无效。对于子层,mvLevelRule和mpSublevelRule的表达式全被判断。●Level(Dimension&dimension,const AggrLevelDef*pLeve()-建立给定的维度和聚集层定义的层对象的构造器。●Dimension&GetDimension()-返回此层的维度。●const Dimension&GetDimension()-返回此层维度,但是为只读。●const String&GetName()-获得此层的名称。●boolIsSubLevel()-当从子层定义建立层就返回true。●boolIsAggrLevel()-当从聚集层定义建立层就返回true。●int GetLevelCode()-返回层的整数层代码。●void MakeDescription(const Record&rec,String&desc)-用说明规则对给定的记录建立说明并在desc放置说明文本。此特点是本发明执行的所特有的。●bool MatchRecord(const Record&rec)-如果给定的输入具体记录加入层就返回真。在此方法中,通过执行规则项表达式判断层规则。对于子层,必须评价父层规则和子层规则两者。●void PopulateRecord(const Record&inputRec,Record&popRec)-给定的输入具体记录inputRec,此方法建立了包含聚集维度记录的属性的记录。如果列没有被层规则引用,列被填为无效,在此情况列是从inputRec复制的。●bool DescRuleUsesColumn(int index)-如果说明规则在索引index引用列就返回true。●bool LevelRuleUsesColumn(intindex)-如果层规则在索引index引用列就返回true。层对象的数据成员包括:●Dimension&mDimension-引用支持层的维度对象。●const BaseLevelDef*mpLevel-此层的层定义的指针,其可以是AggrLevelDef或SubLevelDef。●Expression*mpDescRule-评价说明的表达式对象的指针。●vector<Expression*>mvLevelRule-此层的规则项表达式的指针vector。对聚集层,有0或多个规则项表达式,每个引用一个和仅有一个特殊列。对子层,此数据元被从父聚集层置于规则项表达式。●Expression*mpSublevelRule-评价子层规则的表达式的指针。此表达式引用一个或多个列。如果Level对象不是子层,其为无效。
11)DimensionDimension对象是对维度处理有兴趣的信息的持有器。信息包括对维度的Level对象和对维度表的记录定义。●const RecordDef*GetSourceTable()-获得源维度表的记录定义。●int GetNumSourceColumns()-获得源列的数目。。●const ColumnDef*GetSourceColumn(int i)-在给定的索引i获得源列定义。●int GetNumAggrLevels()-获得聚集层和子层的数目。●Level&GetAggrLevel(int i)-在给定的索引i获得Level对象。●const Record&GetEmptyValueRecord()-获得包含被认为是空的值(如“N/A”)的记录。Dimension对象的数据成员包括:●RecordDef mSourceTableDef-对维度的记录定义。●vector<Level*>mvAggrLevels-包含聚集层和子层的向量。●Record mEmptyRecord-获得包含被认为是空的值(如“N/A”)的记录。
有专门用于维持层定义的对象的类分组。这些被系统用于建立用来测试具体记录由哪些聚集构成的实际层对象。
基于表达式的层识别和子层的核心是输入具体记录如何与层匹配。这发生在维度处理过程中。在维度处理之后层组通过扩展层交叉产品被处理。本部分介绍前述的对象如何被利用和关于它们如何工作的细节。
维度处理是一个循环,其读取所有输入具体记录,使它们与层匹配,将相关的聚集记录送到记录收集器。此过程用下面的C++类型伪码来描述:
∥Create and populate Dimention
Dimension dim;
∥(population not shown)
∥Create reader
RecordProvider reader;
∥Open reader
reader.Open(dim.GetSourceTable());
∥create recorder collector
RecordCollector collector,
∥loop through all records
Record sourceRec;
int n=dim.GetNumAggrLevels();
while(reader.ReadRecord(sourceRec)!=true){
				
				<dp n="d25"/>
∥loop through each level

for(intj=0;j<n;j++){

    ∥get the next level

    Level&amp;level=dim.GetAggrLevel(j);

    ∥Match the record against the level

    if(level.MatchRecord(sourceRec)=true)

{

      ∥Populate an aggregate record

       Record aggrRec;

    Level.PopulateRecord(sourceRec,aggrRec);
    ∥Pass the data to the record collector

    collector.WriteAggregate(sourceRec,

                           aggrRec,

                           level);

    }

} 
}
∥Close reader
reader.Close();
在MatchRecord方法进行基于表达式的层识别和子层的工作。注意记录收集器仅在它的列表中保持唯一的聚集记录,因为WriteAggregate可以调用相同的聚集许多次。
匹配记录包括执行规则项表达式,如下面的C++类型伪码的描述:
bool Level∷MatchRecord(constRecord&amp;rec)
				
				<dp n="d26"/>
{
Value val;

bool b;

∥Test level rule expressions

  vector<Expression*>∷interator iter=mvLevelRule.begin();

while(iter!=mvLevelRule.end ()){

 (*inter)->Execute(val,&amp;rec,

&amp;(rnDimension.GetEmptyValueRecord()));

    val. GetVAlue(b);

    if(b!=true)

       return false;

      iter++;

}

∥Test sublevel rule

if(IssubLevel()){

mpsublevelRule->Execute(val,&amp;rec,

 &amp;(mdimension.GetEmptyValueRecord()));

      val.GetValue(b);

      if(b!=true)

          return false;

   }

return true;
  }
组合记录包括从源记录复制层规则项利用的列,如以下的C++类型的伪码所描述:
void Level∷PopulateRecord(const Record&amp; inputRec,

                           Record&amp;popRec)

{

//Loop through the fields

int sz=inputRec.FieldCount();

popRec.Reset(sz);

for(int i=0;i<sz;i++){

if(isColumnReferenced(i))

popRec[i]=inputRec[i];

else

popRec[i].SetNull();

}
}
在此引用的isColumnReferenced方法执行如下:
bool Level∷isColumnReferenced(intindex){

vector<Expression*>∷const_iterator iter=
mvLevelRule.begin();

while(iter!=mvLevelRule.end()){

     if((*iter)->IsColumnReferenced(index))

        return true;

  iter++;

}

retum false;}
它利用表达式的功能检测列是否被引用。
具体和聚集维度记录被RecordCollector所收集。正如所提到的,记录收集器负责“获知”如何处理从维度处理获得的信息。根据定义的层,记录收集器对给定的具体记录哪些聚集记录存在的信息。此外,收集器接受关于什么具体记录同哪些聚集记录“匹配”的信息。当实际上产生聚集时,在事实处理的后面步骤的过程中采用了所有的信息。
扩展层交叉产品的处理过程十分简单。无论何时遇到层组,所有的组合在一个大循环中产生。全部过程的伪码如下:
For each entry in the cross-product oflevels{

Expand the entry into a list of entries with noGroups;

For each entry in the expanded list{

    If the entry is unique

        Add the entry to the target cross-product;

}
}
在单一交叉产品登录项扩展层组的伪码如下:
Expand(SourceEntry,TargetList){

//SourceEntry is the source cross-product entry,

a vector of

∥pointers to levels.

∥TargetList is the target cross-product list,a

vector of

∥(vectors of pointers to levels).

Clear out TargetList

Add one blank entry to TargetList

For each dimentionD{

Get the index I of the level for dimension D;
				
				<dp n="d29"/>
If the level SourceEntry[I]is a group{

Get the size S of TargetList;

    Get the number of levels N in groupSourceEntry[I];

IfN is Zero {

Remove all entries from TargetList;

Return;

}

Make TargetList larger by N times;

For values J from O to N-1{

        Get Jth level L from group

SourceEntry[I];

    For values K from O to S-1{

       TargetList[J*S+K]=TargetList[K];

          TargetList[J*S+K][I]=L;

   }

}
 }
Else{

Get the size S of TargetList;

For values K from O to S-1{

   TargetList[K][I]=SourceEntry[I];

     }

  }
   }
上述过程可以用简单例子说明。假定我们有三个维度和一个交叉产品登录项象{L1,G1,G2},其中L1是一个层,G1是包含层L2和L3的组,G2是包含层L4和L5的组。(注意:重面积表示增加的登录项;粗体文本表示增加的层。)在第一维度循环后,目标表包含:
L1 空白 空白
在第二维度后,目标表包含:
L1  L2 空白
L1  L3 空白
在第三维度后目标表包含最后全部扩展的交叉产品表:
L1 L2 L4
L1 L3 L4
L1 L2 L5
L1 L3 L5
在初始的交叉产品表的所有登录项被扩展后,它们被合并入最后目标表中(但仅保留唯一的登录项)。
在此介绍的技术的优点是提供了非常灵活和功能强大的方法为数据仓库选择聚集数据,并且还直接执行。
基于表达式的层识别通过允许用户方便和灵活地选择它们真正需要聚集的数据解决了与大型数据仓库有关的问题。
子层允许用户选择必须被导出的属性的层:当聚集不在源数据中或当希望改变聚集规则时,这是有帮助的。
通过用户分组相关的层和处理基本上较短的交叉产品列表,层组使层交叉产品的选择更加简单。
有详细介绍一些本较佳表达式语言的属性和一些执行提醒。这部分列出了在本较佳表达式中允许的所有的运算。额外的运算可以被支持以扩展层或子层规则的功能。
比较运算
这些运算有两个运算数。它们比较两个运算数,判断是否条件是真或假,返
回得到的布尔值。用于比较的两个运算数必须是可比较的数据类型。
运算符 说明
=,eq 等于
◇,ne 不等于
>,gt 大于
>=,ge 大于或等于
<,lt 小于
<=,le 小于或等于
算法运算这些运算根据运算符采用一个或两个运算数。它们执行计算并返回得到的数值。
运算符 说明
add 两个运算数的值相加
Sub 左边的(第一)运算数减去右边的(第二)运算数
Mult 两个运算数的值相乘
Div 左边的(第一)运算数除以右边的(第二)运算数
Idiv 左边的(第一)运算数整除以右边的(第二)运算数
Imod 左边的(第一)运算数除以右边的(第二)运算数,返回除后的余数
Abs 返回数字运算数的绝对值
Neg 对数字运算数的值求反
Trunc 对数字运算数的值截断
字符串处理运算
这些运算在字符串运算数上执行各种不同的字符串处理。它们还采用其它运
算数执行任务。如下是运算的列表。
运算符 运算数 说明
Substr  index,count,string 返回在index开始的string的count个字符的子字符串
Concat  string1,sreing2 连接字符串string1和string2并返回得到值
Touppertolower  string 把string相应地转换成全部大号字或小号字的情况
parsenumber  stringforrnatstring 用formatstring特定的格式分析string并返回得出的数值
parsedate  stringformatsteing 用formatstring特定的格式分析string并返回得出的日期值
Leftpadrightpad  string,padcharcount 反复地用padchar字符贴在string的左边或右边count次。
Trimlefttrimrighttrimboth  string 从string分别移去第一个、结尾的,或第一个和结尾的空格字符
Insert  stringinsertstringindex 在string的index位置插入insertstring。
Delete  string,indexcount 从string的在index开始的位置删除字符的count号
Replace  stringsearchStringreplaceString,count 在string检索searchString模式,为count发生用replaceString代替它。如果count=1,意味着对所有的replaceString发生。
Length  string 返回string的长度
Char  charCode 将数字charCode单一代码标准代码转换为仅包括单一标准代码字符的字符串。
目期运算
这些运算执行各种不同的日期算法和日期转换。
运算符 运算数 说明
now  N/A 返回包括当前日期和时间的Datetime值
Date  year,month,day 建立和返回包含特定的year,month和day的Datetime值。其时间被设置为全零。
Datetime  Year,month,dayHour,minute,Second 建立和返回包含特定的year,month和day,hour,minute和Second的Datetime值。
Year,month,Day,hour,Minute,second  DateTime 分别从dateTime值提出和返回Year,month,dayHour,minute,Second项
Diffyears,diffmonthsdiffdays,diffhours,diffminutes,diffseconds  DateTime1DateTime2 分别返回DateTime1和DateTime2间的Year,month,dayHour,minute或Second的区别
Dayofweek  DateTime 计算和返回DateTime值的在星期中的天数。
Dayofyear  DateTime 计算和返回DateTime值的在年中的天数。
Dayleftinyear  dateTiue 计算和返回在dateTime中特定的年中剩下的天数。
格式化运算
这些运算格式化字符串、日期时间和字符串中的数值。它们格式化基于格式
化字符串的值。为了相应地格式化值,表达式系统必须懂得格式化字符串的
语法。
运算符 运算数 说明
formatchar  String formatString 用在formatString中的特定的格式格式化String
Formatdate  DateTime,formatString 用在formatString中的特定的格式转换和格式化DateTime值为一个字符串
Formatnumer  Number,formatString 用在formatString中的特定的格式转换和格式化Number值为一个字符串
逻辑运算
支持三个常用的逻辑运算符:与、或、非。它们全部采用布尔运算数,返回
布尔值的结果。
常数值
支持三个特殊常数值:真、假和无效。布尔表达式采用真或假常数值。无效
值用于表示无效列(或字段)的值。
寄存器(Registers)
允许寄存器或变量的使用。每个寄存器与一个名称相关。只有分配因子可以
修改寄存器内的值。寄存器可以用于保存任何类型的暂时值,可以用于任何
合适的运算中。
由于在每个维度执行的运算是独立的,维度处理的多种情况可以并行执行(每
个维度一个)以同时处理多个或所有的维度。
在本较佳实施例中,RPN(逆波兰表示法)表达式用于表示层和子层规则。
其它表达式语言可以方便地替换。
虽然本发明的较佳实施例被表示和介绍,显而易见,对于那些本技术领域的熟练人员在不脱离本发明的精神和附加的权利要求所限定的范围的情况下可以做一些变化和修改。

Claims (6)

1.一种对应于数据库中的具体数据登录项的分组定义至少一个维度的聚集层的方法,所述的维度具体登录项表示所述的维度的实体的集合,其中每个维度具体登录项包括至少一个属性字段,所述的属性对每个所述的实体是共同的,所述的定义聚集层的方法包括如下步骤:
在所述的维度中定义与所述的层有关的至少一个属性的一个层规则,这里所述的层至少有一个成员,每个成员对应于所述的至少一个属性的每个中的一个属性值,每个成员相关于至少一个与层成员具有相同属性值的所述维度的具体登录项;其中
所述的规则中的至少一个包括根据在所述的层定义中合成的一个属性的属性值的逻辑表达式并判断是否满足所述的逻辑表达式的表示属性值的层成员存在于层中;
在所述的数据库中聚集的数据可以基于在所述的层规则中合成的属性值被分组,并且可以作出如是否一个特别的数据登录项根据它是否满足与所述的层规则相关的逻辑表达式应该对对应的组有贡献的决定。
2.一种对应于数据库中的具体数据登录项的分组定义至少一个维度的聚集层的方法,所述的维度具体登录项表示所述的维度的实体的集合,其中每个维度具体登录项包括至少一个属性字段,其中存储在所述的属性字段中的值对于每个所述的实体普通的属性值,其中所述的数据库包括每一个都伴有一个所述的维度的具体登录项的事实数据,所述的对一个维度定义聚集子层的方法包括如下步骤:
通过定义与所述的层相关的所述的维度的至少一个属性定义一个层,这里所述的层有至少一个成员,每个成员对应所述的至少一个属性中的每个属性的
一个属性值,每个成员伴随至少一个与层成员具有相同属性的所述维度的具体登录项;其中
定义一个逻辑表达式,其中每个所述的维度的具体登录项能够或不能满足定义一个对所述的层有贡献的具体登录项的子集从而形成所述的子层,这里子层中的层成员是层的层成员的子集,每个所述的子层的成员与所述的层的相应层成员的具体登录项的子集相关联;
所述的子层起到层的作用并且还在所述的数据库的事实数据登录项在聚集过程中贡献子层的成员中提供控制。
3.根据权利要求2中的方法,其中所述的维度中的层的每一个被一系列的规则限定,每个规则定义了所述的被分组的层上的所述的维度的一个属性。
4.根据权利要求2中的方法,其中所述的维度中的子层的每一个被至少一个限定条件的规则所定义,限定了维度的哪个具体登录项可以与子层中的层成员相关联。
5.根据权利要求4的方法,其中所述的规则根据所述的具体规则项的字段值限定了条件。
6.一种定义用于聚集包括数据库中的事实数据登录项的输入事实数据的一系列层交叉产品的方法,其中所述的数据库包括一系列的维度,每个维度表示一系列的实体并包含维度具体登录项,每个维度具体登录项表示一个所述的实体;其中每个维度具体登录项包括至少一个属性字段,其中存贮在所述的属性字段的值是一个属性的值,所述的属性对于每个所述的实体是共同的;其中通过限定结合在所述的层上的至少一个所述的维度的属性,在每个所述的维度定义所述的层;这里所述的层有至少一个成员,每个成员对应所述的至少一个属性的每一个的属性值,每个成员结合具有限定层成员的相同属性值的所述的维度的至少一个具体登录项;所述的方法包括以下步骤:
用一个层组表示所述的维度中的一个的至少两个所述的层;
从所述的维度的每一个选择至多一个层或层组,所述的维度中至少一个是定义层组交叉产品的层组;
通过对交叉产品的层组的每个层组合产生一个层交叉产品将所述的层交叉产品转换成所述的一系列层交叉产品,在所述的层组交叉产品中的所产生的每个交叉产品结合每个层组的一个层,并且结合在不包括层组的所述的交叉产品中的任何层;
采用此方法,所述的数据库的用户可以产生包括维度的第一层的层交叉产品的第一集合和除了所述的第一层的替换外与所述的维度的第二层相同的层交叉产品的第二集合,没有明确地限定所述的第一和第二集合。
CNB008009996A 1999-05-24 2000-05-19 用于数据仓库的选择聚集层和交叉产品层的方法和装置 Expired - Fee Related CN1144145C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/317,247 US6163774A (en) 1999-05-24 1999-05-24 Method and apparatus for simplified and flexible selection of aggregate and cross product levels for a data warehouse
US09/317,247 1999-05-24

Publications (2)

Publication Number Publication Date
CN1310824A true CN1310824A (zh) 2001-08-29
CN1144145C CN1144145C (zh) 2004-03-31

Family

ID=23232791

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008009996A Expired - Fee Related CN1144145C (zh) 1999-05-24 2000-05-19 用于数据仓库的选择聚集层和交叉产品层的方法和装置

Country Status (14)

Country Link
US (1) US6163774A (zh)
EP (1) EP1131744B1 (zh)
JP (1) JP2003500748A (zh)
KR (1) KR20010072019A (zh)
CN (1) CN1144145C (zh)
AT (1) ATE459926T1 (zh)
AU (1) AU780565B2 (zh)
BR (1) BR0006145A (zh)
CA (1) CA2337519C (zh)
DE (1) DE60043925D1 (zh)
HK (1) HK1042346A1 (zh)
IL (1) IL140867A (zh)
WO (1) WO2000072201A1 (zh)
ZA (1) ZA200100522B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100393044C (zh) * 2005-06-20 2008-06-04 南京大学 一种基于ip掩码技术的属性值聚集方法
CN101944116A (zh) * 2010-09-20 2011-01-12 常州伊冉科技有限公司 一种数据仓库中复杂多维层次的连接和聚集方法
CN101542478B (zh) * 2006-06-26 2012-07-18 尼尔森(美国)有限公司 提高数据仓库性能的方法和装置
CN102142039B (zh) * 2004-12-17 2012-12-26 亚马逊科技公司 用于进行数据仓储的系统和方法

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073134A (en) * 1997-05-29 2000-06-06 Oracle Corporation Method article of manufacture, and apparatus for generating a multi-dimensional record management index
US6442554B1 (en) * 1999-01-29 2002-08-27 I2 Technologies Us, Inc. System and method for generating dependent data
US6356214B1 (en) 1999-02-02 2002-03-12 Cisco Technology, Inc. Fast look-up table based scheme for NRZI encoding/decoding and zero insertion/removal in serial bit streams
US8321411B2 (en) 1999-03-23 2012-11-27 Microstrategy, Incorporated System and method for management of an automatic OLAP report broadcast system
US6567796B1 (en) 1999-03-23 2003-05-20 Microstrategy, Incorporated System and method for management of an automatic OLAP report broadcast system
US9208213B2 (en) 1999-05-28 2015-12-08 Microstrategy, Incorporated System and method for network user interface OLAP report formatting
US8607138B2 (en) 1999-05-28 2013-12-10 Microstrategy, Incorporated System and method for OLAP report generation with spreadsheet report within the network user interface
US6385604B1 (en) * 1999-08-04 2002-05-07 Hyperroll, Israel Limited Relational database management system having integrated non-relational multi-dimensional data store of aggregated data elements
US6408292B1 (en) 1999-08-04 2002-06-18 Hyperroll, Israel, Ltd. Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions
US6964012B1 (en) 1999-09-13 2005-11-08 Microstrategy, Incorporated System and method for the creation and automatic deployment of personalized, dynamic and interactive voice services, including deployment through personalized broadcasts
US6873693B1 (en) 1999-09-13 2005-03-29 Microstrategy, Incorporated System and method for real-time, personalized, dynamic, interactive voice services for entertainment-related information
US6829334B1 (en) 1999-09-13 2004-12-07 Microstrategy, Incorporated System and method for the creation and automatic deployment of personalized, dynamic and interactive voice services, with telephone-based service utilization and control
US8130918B1 (en) 1999-09-13 2012-03-06 Microstrategy, Incorporated System and method for the creation and automatic deployment of personalized, dynamic and interactive voice services, with closed loop transaction processing
US6836537B1 (en) 1999-09-13 2004-12-28 Microstrategy Incorporated System and method for real-time, personalized, dynamic, interactive voice services for information related to existing travel schedule
US6484179B1 (en) 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US7107284B1 (en) * 1999-12-28 2006-09-12 Ncr Corporation Method of generating user customized document incorporating at least a portion of discovery information recorded in the system of record database in data warehouse environment
US20020029207A1 (en) 2000-02-28 2002-03-07 Hyperroll, Inc. Data aggregation server for managing a multi-dimensional database and database management system having data aggregation server integrated therein
US6768986B2 (en) * 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
AU2001257077A1 (en) 2000-04-17 2001-10-30 Brio Technology, Inc. Analytical server including metrics engine
US6941311B2 (en) * 2000-04-27 2005-09-06 Hyperion Solutions Corporation Aggregate navigation system
US7167859B2 (en) * 2000-04-27 2007-01-23 Hyperion Solutions Corporation Database security
US6732115B2 (en) 2000-04-27 2004-05-04 Hyperion Solutions Corporation Chameleon measure and metric calculation
US6748394B2 (en) 2000-04-27 2004-06-08 Hyperion Solutions Corporation Graphical user interface for relational database
US7080090B2 (en) * 2000-04-27 2006-07-18 Hyperion Solutions Corporation Allocation measures and metric calculations in star schema multi-dimensional data warehouse
US7072897B2 (en) * 2000-04-27 2006-07-04 Hyperion Solutions Corporation Non-additive measures and metric calculation
AU2001261227A1 (en) * 2000-05-05 2001-11-20 Raytheon Company Method and system for accessing data in a database warehouse
WO2002001416A2 (en) * 2000-06-23 2002-01-03 The Johns Hopkins University Architecture for distributed database information access
US7043457B1 (en) 2000-06-28 2006-05-09 Probuild, Inc. System and method for managing and evaluating network commodities purchasing
US6721749B1 (en) * 2000-07-06 2004-04-13 Microsoft Corporation Populating a data warehouse using a pipeline approach
US7165065B1 (en) * 2000-07-14 2007-01-16 Oracle Corporation Multidimensional database storage and retrieval system
US20020049792A1 (en) * 2000-09-01 2002-04-25 David Wilcox Conceptual content delivery system, method and computer program product
US20020083072A1 (en) * 2000-12-22 2002-06-27 Steuart Stacy Rhea System, method and software application for incorporating data from unintegrated applications within a central database
US6842753B2 (en) * 2001-01-12 2005-01-11 Microsoft Corporation Sampling for aggregation queries
US6954760B2 (en) * 2001-02-01 2005-10-11 Hitachi, Ltd. Method and system for multidimensional database management
US20020161778A1 (en) * 2001-02-24 2002-10-31 Core Integration Partners, Inc. Method and system of data warehousing and building business intelligence using a data storage model
WO2002075598A1 (en) * 2001-03-19 2002-09-26 Exie As Methods and system for handling mulitple dimensions in relational databases
US6988104B2 (en) 2001-04-02 2006-01-17 I2 Technologies U.S., Inc. System and method for allocating data in a hierarchical organization of data
US6606621B2 (en) * 2001-05-30 2003-08-12 Oracle International Corp. Methods and apparatus for aggregating sparse data
US6643653B1 (en) * 2001-06-01 2003-11-04 Oracle International Corporation Method and apparatus for identifying a data sequence related to a given data sequence
US20020184043A1 (en) * 2001-06-04 2002-12-05 Egidio Lavorgna Systems and methods for managing business metrics
US6873994B2 (en) 2001-08-31 2005-03-29 I2 Technologies Us, Inc. Conflict detection and resolution in association with data allocation
US6738762B1 (en) 2001-11-26 2004-05-18 At&T Corp. Multidimensional substring selectivity estimation using set hashing of cross-counts
US6871198B2 (en) 2001-12-21 2005-03-22 Requisite Technology, Inc. Composing and cataloging item configuration data
US7720795B2 (en) 2002-02-05 2010-05-18 General Electric Company Digital cockpit
US20070226155A1 (en) * 2002-03-29 2007-09-27 Jai-Jein Yu Extended attribute-based pricing system and method
US7366730B2 (en) 2002-04-26 2008-04-29 Oracle International Corporation Registration of solved cubes within a relational database management system
US7415457B2 (en) * 2002-04-26 2008-08-19 Oracle International Corporation Using a cache to provide cursor isolation
US7171427B2 (en) * 2002-04-26 2007-01-30 Oracle International Corporation Methods of navigating a cube that is implemented as a relational object
US8868544B2 (en) * 2002-04-26 2014-10-21 Oracle International Corporation Using relational structures to create and support a cube within a relational database system
US8001112B2 (en) * 2002-05-10 2011-08-16 Oracle International Corporation Using multidimensional access as surrogate for run-time hash table
US20040181518A1 (en) * 2003-03-14 2004-09-16 Mayo Bryan Edward System and method for an OLAP engine having dynamic disaggregation
US8200612B2 (en) * 2003-05-07 2012-06-12 Oracle International Corporation Efficient SQL access to multidimensional data
US8612421B2 (en) 2003-05-07 2013-12-17 Oracle International Corporation Efficient processing of relational joins of multidimensional data
US8209280B2 (en) * 2003-05-07 2012-06-26 Oracle International Corporation Exposing multidimensional calculations through a relational database server
US7117218B2 (en) * 2003-06-26 2006-10-03 Microsoft Corporation System and method for expressing and calculating a relationship between measures
US8200775B2 (en) * 2005-02-01 2012-06-12 Newsilike Media Group, Inc Enhanced syndication
US7225195B2 (en) * 2003-08-27 2007-05-29 Gil Avrahami Method for a dynamic information messaging system
JP5328099B2 (ja) 2003-09-15 2013-10-30 アビニシオ テクノロジー エルエルシー データプロファイリング
US10325272B2 (en) * 2004-02-20 2019-06-18 Information Resources, Inc. Bias reduction using data fusion of household panel data and transaction data
US7949639B2 (en) * 2004-02-20 2011-05-24 Symphonyiri Group, Inc. Attribute segments and data table bias reduction
US8572221B2 (en) 2004-05-26 2013-10-29 Facebook, Inc. System and method for managing an online social network
US20060149739A1 (en) * 2004-05-28 2006-07-06 Metadata, Llc Data security in a semantic data model
US7076493B2 (en) * 2004-05-28 2006-07-11 Metadata, Llc Defining a data dependency path through a body of related data
US8140482B2 (en) 2007-09-19 2012-03-20 Moore James F Using RSS archives
US9202084B2 (en) 2006-02-01 2015-12-01 Newsilike Media Group, Inc. Security facility for maintaining health care data pools
US8306986B2 (en) * 2005-09-30 2012-11-06 American Express Travel Related Services Company, Inc. Method, system, and computer program product for linking customer information
US20070124316A1 (en) * 2005-11-29 2007-05-31 Chan John Y M Attribute selection for collaborative groupware documents using a multi-dimensional matrix
US7831617B2 (en) * 2006-07-25 2010-11-09 Microsoft Corporation Re-categorization of aggregate data as detail data and automated re-categorization based on data usage context
US20080052162A1 (en) * 2006-07-27 2008-02-28 Wood Charles B Calendar-Based Advertising
KR100848264B1 (ko) * 2006-11-23 2008-07-25 연세대학교 산학협력단 강교량의 데이터베이스 구축방법
US8160984B2 (en) 2007-01-26 2012-04-17 Symphonyiri Group, Inc. Similarity matching of a competitor's products
US9262503B2 (en) 2007-01-26 2016-02-16 Information Resources, Inc. Similarity matching of products based on multiple classification schemes
US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
US20080263000A1 (en) * 2007-01-26 2008-10-23 John Randall West Utilizing aggregated data
US8504598B2 (en) * 2007-01-26 2013-08-06 Information Resources, Inc. Data perturbation of non-unique values
US20090006309A1 (en) 2007-01-26 2009-01-01 Herbert Dennis Hunt Cluster processing of an aggregated dataset
US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
US20080208735A1 (en) * 2007-02-22 2008-08-28 American Expresstravel Related Services Company, Inc., A New York Corporation Method, System, and Computer Program Product for Managing Business Customer Contacts
US20080301016A1 (en) * 2007-05-30 2008-12-04 American Express Travel Related Services Company, Inc. General Counsel's Office Method, System, and Computer Program Product for Customer Linking and Identification Capability for Institutions
US8060502B2 (en) 2007-10-04 2011-11-15 American Express Travel Related Services Company, Inc. Methods, systems, and computer program products for generating data quality indicators for relationships in a database
US8244667B1 (en) * 2007-10-18 2012-08-14 Google Inc. Querying multidimensional data with independent fact and dimension pipelines combined at query time
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US10210234B2 (en) * 2008-03-24 2019-02-19 Jda Software Group, Inc. Linking discrete dimensions to enhance dimensional analysis
US7916295B2 (en) * 2008-09-03 2011-03-29 Macronix International Co., Ltd. Alignment mark and method of getting position reference for wafer
US8369523B2 (en) * 2009-11-24 2013-02-05 International Business Machines Corporation Surrogate key generation using cryptographic hashing
KR101889120B1 (ko) 2011-01-28 2018-08-16 아브 이니티오 테크놀로지 엘엘시 데이터 패턴 정보 생성
US8676772B2 (en) 2011-12-09 2014-03-18 Telduráðgevin Sp/f Systems and methods for improving database performance
US10235441B1 (en) * 2012-06-29 2019-03-19 Open Text Corporation Methods and systems for multi-dimensional aggregation using composition
US10169442B1 (en) 2012-06-29 2019-01-01 Open Text Corporation Methods and systems for multi-dimensional aggregation using composition
US9886460B2 (en) * 2012-09-12 2018-02-06 International Business Machines Corporation Tuple reduction for hierarchies of a dimension
WO2014047681A1 (en) * 2012-09-25 2014-04-03 Vizdynamics Pty Ltd System and method for processing digital traffic metrics
KR102129643B1 (ko) 2012-10-22 2020-07-02 아브 이니티오 테크놀로지 엘엘시 소스 추적으로 데이터 프로파일링
US9430453B1 (en) 2012-12-19 2016-08-30 Emc Corporation Multi-page document recognition in document capture
US9892026B2 (en) * 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9390162B2 (en) * 2013-04-25 2016-07-12 International Business Machines Corporation Management of a database system
US20140330691A1 (en) * 2013-05-01 2014-11-06 Life Dreams, Inc. Devices, methods and systems related to automation that provides financial planning advice
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
AU2015225694B2 (en) 2014-03-07 2019-06-27 Ab Initio Technology Llc Managing data profiling operations related to data type
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US9836480B2 (en) 2015-01-12 2017-12-05 Qumulo, Inc. Filesystem capacity and performance metrics and visualizations
US11132336B2 (en) * 2015-01-12 2021-09-28 Qumulo, Inc. Filesystem hierarchical capacity quantity and aggregate metrics
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US10346398B2 (en) * 2017-03-07 2019-07-09 International Business Machines Corporation Grouping in analytical databases
US10318401B2 (en) 2017-04-20 2019-06-11 Qumulo, Inc. Triggering the increased collection and distribution of monitoring information in a distributed processing system
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
US10614033B1 (en) 2019-01-30 2020-04-07 Qumulo, Inc. Client aware pre-fetch policy scoring system
US11151092B2 (en) 2019-01-30 2021-10-19 Qumulo, Inc. Data replication in distributed file systems
US10725977B1 (en) 2019-10-21 2020-07-28 Qumulo, Inc. Managing file system state during replication jobs
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US11151001B2 (en) 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US10860414B1 (en) 2020-01-31 2020-12-08 Qumulo, Inc. Change notification in distributed file systems
US10936551B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Aggregating alternate data stream metrics for file systems
US10936538B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Fair sampling of alternate data stream metrics for file systems
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
US11675764B2 (en) * 2020-10-16 2023-06-13 Salesforce, Inc. Learned data ontology using word embeddings from multiple datasets
US11625395B2 (en) * 2021-01-25 2023-04-11 Qliktech International Ab Methods and systems for undetermined query analytics
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5713020A (en) * 1993-09-02 1998-01-27 Microsoft Corporation Method and system for generating database queries containing multiple levels of aggregation
US5692107A (en) * 1994-03-15 1997-11-25 Lockheed Missiles & Space Company, Inc. Method for generating predictive models in a computer system
US5999192A (en) * 1996-04-30 1999-12-07 Lucent Technologies Inc. Interactive data exploration apparatus and methods
US5822751A (en) * 1996-12-16 1998-10-13 Microsoft Corporation Efficient multidimensional data aggregation operator implementation
US5940818A (en) * 1997-06-30 1999-08-17 International Business Machines Corporation Attribute-based access for multi-dimensional databases
US5978796A (en) * 1997-06-30 1999-11-02 International Business Machines Corporation Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database
US6032146A (en) * 1997-10-21 2000-02-29 International Business Machines Corporation Dimension reduction for data mining application
US5918232A (en) * 1997-11-26 1999-06-29 Whitelight Systems, Inc. Multidimensional domain modeling method and system
US6009432A (en) * 1998-07-08 1999-12-28 Required Technologies, Inc. Value-instance-connectivity computer-implemented database

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102142039B (zh) * 2004-12-17 2012-12-26 亚马逊科技公司 用于进行数据仓储的系统和方法
CN100393044C (zh) * 2005-06-20 2008-06-04 南京大学 一种基于ip掩码技术的属性值聚集方法
CN101542478B (zh) * 2006-06-26 2012-07-18 尼尔森(美国)有限公司 提高数据仓库性能的方法和装置
CN101944116A (zh) * 2010-09-20 2011-01-12 常州伊冉科技有限公司 一种数据仓库中复杂多维层次的连接和聚集方法
CN101944116B (zh) * 2010-09-20 2013-01-16 常州伊冉科技有限公司 一种数据仓库中复杂多维层次的连接和聚集方法

Also Published As

Publication number Publication date
JP2003500748A (ja) 2003-01-07
EP1131744B1 (en) 2010-03-03
CN1144145C (zh) 2004-03-31
KR20010072019A (ko) 2001-07-31
ATE459926T1 (de) 2010-03-15
IL140867A (en) 2005-11-20
BR0006145A (pt) 2001-04-03
IL140867A0 (en) 2002-02-10
HK1042346A1 (zh) 2002-08-09
AU5154500A (en) 2000-12-12
WO2000072201A1 (en) 2000-11-30
EP1131744A1 (en) 2001-09-12
CA2337519A1 (en) 2000-11-30
AU780565B2 (en) 2005-04-07
US6163774A (en) 2000-12-19
EP1131744A4 (en) 2003-09-10
CA2337519C (en) 2005-01-25
ZA200100522B (en) 2002-05-20
DE60043925D1 (de) 2010-04-15

Similar Documents

Publication Publication Date Title
CN1310824A (zh) 用于数据仓库的选择聚集层和交叉产品层的方法和装置
CN1198220C (zh) 用于在单聚集过程中载入多数据集市的方法
CN1138222C (zh) 在线数据库挖掘的方法和设备
US6578028B2 (en) SQL query generator utilizing matrix structures
CN1653452A (zh) 管理数据库系统中的表达式
CN1768325A (zh) 公开内容的抽象数据库抽象中的规则应用管理
US9015194B2 (en) Root cause analysis using interactive data categorization
CN1139885C (zh) 数据检索装置
CN1132564A (zh) 用于数据存储与检索的方法与装置
CN1781093A (zh) 用于存储和访问互锁树数据仓库中的数据的系统和方法
CN1647076A (zh) 查询关系数据库的方法和设备
CN1759397A (zh) 对数据的函数应用的结果进行结构化索引
CN1650295A (zh) 用于数据库查询和信息提交的方法和系统
CN101036141A (zh) 具有持久性、用户可访问的位图值的数据库管理系统
CN1392954A (zh) 缺陷知识库
WO2002075598A1 (en) Methods and system for handling mulitple dimensions in relational databases
CN1360700A (zh) 用于链接表格式数据的方法以及表现链接的表格式数据的方法
CN1846207A (zh) 类型路径索引
CN1666196A (zh) 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制
CN111160658B (zh) 一种协同制造资源优配方法、系统和平台
CN1677399A (zh) 分级数据库管理的系统、方法和程序
CN1173933A (zh) 建立通信网络数据库的一种方法和设备
CN1650327A (zh) 可训练可扩充的自动数据-知识转换器
CN1896994A (zh) 用于显示零件信息的装置、系统和方法
WO2009032770A2 (en) Systems and methods for providing a confidence-based ranking algorithm

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: COMPUTER JOINT CONCEPT CO.,LTD.

Free format text: FORMER OWNER: PLATINUM TECHNOLOGY IP. INC.

Effective date: 20050617

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20050617

Address after: American New York

Patentee after: Computer Partnership Throught Inc.

Address before: Illinois Illinois

Patentee before: Platinum Technology IP. INC.

C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee