会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 商业智能 / 扩展商业智能系统的形式和功能的基于内容的方法

扩展商业智能系统的形式和功能的基于内容的方法

申请号 CN201080043574.7 申请日 2010-09-28 公开(公告)号 CN102576363A 公开(公告)日 2012-07-11
申请人 渣普控股有限公司; 发明人 C·J·里夫斯; T·W·梅宁克;
摘要 商业智能(BI)系统包括通过特定的内容来在项目生命周期之外扩展其功能的能力。复杂的多维查询被解释为被组合在解析树状结构中以形成总查询的原子子表达式的树。每个子树在被提供了适当的上下文时是单独有效的。任何子树可以是存储为应用内容的表达式模板,其在生成时间使用实例特定的参数进行简单的文本替换来产生多维表达式语法。该系统包括对用户隐藏在使用OLAP数据库工作时内在的复杂性的复杂类型系统和语义层。商业智能专家可为被保存为内容的每个表达式模板提供类型和语义提示。
权利要求

1.一种包括作为商业智能查询系统的部分的可执行指令的计算机可读存储介质,所述商业智能查询系统包括在执行期间迭代地处理数据的能力,其中复杂的多维查询被解释为被组合到解析树状结构中以形成总查询的原子子表达式的树,其中每个子树在被提供了适当的上下文时是单独有效的;

其中每个子树存储在应用内容中;

以及一些子树是表达式模板,并且应用于单个表达式模板的类型和语义规则被保存为内容。

2.根据权利要求1所述的包括可执行指令的计算机可读存储介质,其中类型和语义检查在设计时间被执行,并且不在生成时间重新生效。

3.根据权利要求1所述的包括可执行指令的计算机可读存储介质,其中包括默认字段和父层次字段的额外的输入字段被使用。

4.根据权利要求1所述的包括可执行指令的计算机可读存储介质,其包括查询部分可用的上下文菜单,所述上下文菜单显示可应用的表达式模板并且使用类型系统和语义逻辑来过滤可用的表达式模板。

5.一种包括作为商业智能查询系统的部分的可执行指令的计算机可读存储介质,所述商业智能查询系统包括在执行期间迭代地处理数据的能力,其中复杂的多维查询被解释为被组合到解析树状结构中以形成总查询的原子子表达式的树,其中每个子树在被提供了适当的上下文时是单独有效的;

其中每个子树存储在应用内容中;

以及一些子树是表达式模板,所述表达式模板在生成时间使用实例特定的参数进行简单的文本替换来产生多维表达式语法。

6.根据权利要求5所述的包括可执行指令的计算机可读存储介质,其在上下文菜单中显露内容表达式模板,其中使用类型系统和语义逻辑来过滤模板的列表。

7.根据权利要求5所述的包括可执行指令的计算机可读存储介质,其中包括默认字段和父层次字段的额外的输入字段被使用。

8.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其包括在应用级别对所计算的成员进行穿透钻取的解决方案,所述解决方案允许模板设计员指定可替换的穿透钻取集合表达式。

9.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其使用全局唯一标识符在所产生的查询内标记所有别名的元素以使内容表达式模板一般化为实质上多维数据集和上下文不可知的。

10.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其使用所述解析树状结构来递归地执行部件以确定已经引入了错误或性能问题的上下文表达式模板。

11.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其提供在生成时间被替换的多维表达式扩展以使上下文表达式模板充分一般化为多维数据集和上下文不可知的。

12.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其中报告内容和报告函数是可再次使用的。

13.根据权利要求1或权利要求5所述的包括可执行指令的计算机可读存储介质,其使用被保存为内容的四种资源类型,所述资源类型是多维表达式模板、OLAP数据库存储的程序、组合模板、以及数据挖掘算法和工作流。

说明书全文

扩展商业智能系统的形式和功能的基于内容的方法

技术领域

[0001] 本发明涉及从OLAP多维数据集(cube)提取商业智能(BI)信息的系统和方法中的改进以及涉及通过特定的内容扩展的改进的查询生成程序。

背景技术

[0002] 本发明所处理的基本问题是制约当前的商业智能系统的僵化。它们的初始开发、复杂性和维护开支导致非常昂贵的实现和令人沮丧的终端用户体验。它们需要商业领域、数据仓库和OLAP开发领域中的一系列专家专门技术。此外,来自终端用户的需要的任何变化使得在另外的持续时间内需要许多这些专家的参与。
[0003] 传统BI信息实现是完全基于服务的定制的开发工作。创建一般对每个企业是唯一的,且不是可再次使用的。这个评论对当前可用的大多数BI系统是成立的。美国专利说明书20070078823是针对不具有商业智能专门技术的应用开发者而设计的,以为了应用开发目的而提供黑箱多维表达式生成器。商业智能专家创建开发者可编译到其应用中的这些可再次使用的黑箱。表达式生成器是可组成的。最近的专利通常处理在通过查询提取数据中所遇到的问题。美国专利申请2008/0294596通过根据层次生成上下文表达式来处理将具有组合的层次维的查询转换成数据源特定查询。
[0004] 美国专利申请2008/0005689提供了存储可执行指令以图形地显示一个或多个文件对象的文件对象属性的系统。EP2056194公开了接收对行动的请求的可执行指令。搜索一组元数据以找到对应于该行动的元数据,并且该搜索被行动上下文所限制。
[0005] 美国专利7457810通过提供XML封装器(wrapper)而改进了SQL查询,XML封装器以运行中方式查询XML文件,使得只有满足该查询的文件中的父节点被提取。
[0006] 美国专利7296040公开了自动导出查询主题和查询项之间的关系以避免双重计数的方法。
[0007] 美国专利申请20090030915公开了通过收集在多维数据库中的所关注的数据值的上下文来确定所关注的数据值的驱动因子的方法。
[0008] 报告和汇总数据仅仅是分析的一个方面。常常,报告必须是前瞻的,并且有意义的预测对有效地规划和管理现代组织是必要的。虽然存在可用于执行复杂的统计分析的强大的工具,但它们本质上是通用的,并且需要相当程度的数学技巧来操作。结合这一点,操作人员也必须拥有有效的业务领域的深奥知识。
[0009] 本发明的一个目的是解决使这些强大的分析工具可用于商业用户的需要。另一目的是提供一种小企业可负担得起的并且减少对专家的依赖的BI系统。

发明内容

[0010] 为此目的,本发明提供了包括作为商业智能查询系统的部分的可执行指令的计算机可读存储介质,该商业智能查询系统包括在执行期间迭代地处理数据的能力,其中[0011] 复杂的多维查询被解释为被组合在解析树状结构中以形成总查询的原子子表达式的树,其中每个子树在被提供了适当的上下文时是单独有效的;
[0012] 其中每个子树存储在应用内容中;
[0013] 以及一些子树是表达式模板,且应用于单个表达式模板的类型和语义规则被保存为内容。
[0014] 类型和语义检查优选地在设计时间被执行,且不在生成时间重新生效。
[0015] 上下文菜单优选地用于查询部分,其中,该上下文菜单显示可应用的表达式模板并使用类型系统和语义逻辑来过滤可用的表达式模板。
[0016] 在另一方面,本发明提供了包括作为商业智能查询系统的部分的可执行指令的计算机可读存储介质,该商业智能查询系统包括在执行期间迭代地处理数据的能力,其中[0017] 复杂的多维查询被解释为被组合在解析树状结构中以形成总查询的原子子表达式的树,其中每个子树在被提供了适当的上下文时是单独有效的;
[0018] 其中每个子树存储在应用内容中;
[0019] 以及一些子树是表达式模板,其在生成时间使用实例特定的参数进行简单的文本替换来产生多维表达式语法。
[0020] 优选地在上下文菜单中提供内容表达式模板,其中使用类型系统和语义逻辑来过滤模板的列表。
[0021] 系统还优选地包括在应用级别处在对计算成员进行穿透钻取(drill through)的解决方案,其允许模板设计员指定可替换的穿透钻取集合表达式。
[0022] 声明性的传统OLAP查询语言没有在执行期间迭代地处理数据的能力。将所存储的程序添加到OLAP数据库补充并丰富了其解决问题的能力。优选地,类型和语义检查在设计时间被执行,且不在生成时间重新生效。
[0023] 本发明通过在整个内容中提供表达式模板功能来采取以用户为中心的方法。再次,商业智能专家创建模板,但重要地,它被存储为应用内容且可由其创建者和其他用户立即采用。没有生成步骤。
[0024] 为了将表达式模板实现为内容,一些附加输入字段是必要的。两个必须的这样的字段是默认字段和父层次字段。
[0025] 在申请USA 20070078823中的方法涉及元数据生成步骤的场合,本发明利用简单的文本替换。虽然这个方法通常非常容易产生错误,但这通过健壮型系统和语义层的交叠而被避免。
[0026] 这两种方法都支持可组成的表达式,但这是多维表达式的可组成性质的自然结果,而不是基本的发明。
[0027] 在这里提出的创新消除了对初始实现之外的专家帮助的需要。它们提供同时隐藏OLAP报告的复杂性、授权用户执行复杂的分析并且交付动态可扩展的系统的架构,其中该动态可扩展的系统允许用户捕获通常使用的报告结构并重新使用和管理它们。
[0028] 本发明所展示的以内容为中心的方法是重要的,因为它提供从任何特定的OLAP多维数据集的细节提取的可重新分配的逻辑。此外,常规应用安全可用于定制设计体验。例如,可给安全组“设计员1”提供“设计员2”组全部可利用的上下文菜单的最小子集。
[0029] 在本发明的优选实施例中,终端用户面对这些扩展性点:
[0030] ·在查询的上下文中在适当的位置的查询部分或在查询的上下文中被移动到适当位置的查询部分可用的上下文菜单。上下文菜单显示可应用于场景的表达式模板。非常重要地,该内容菜单使用类型系统来基于查询部分类型和占位符类型智能地过滤可用的表达式模板。上下文菜单还使用语义逻辑来进一步过滤模板。菜单的内容、结构和细节全部从被保存为应用内容的表达式模板得到。
[0031] ·每占位符可用的工具栏,其中被保存为应用内容的表达式模板指定它们应用的工具栏。
[0032] ·表达式模板浏览器,其是导航活跃的用户有足够的安全权限来查看的所有表达式模板的非上下文手段。
[0033] ·可扩展性的菜单和子菜单点,其中被保存为应用内容的表达式模板指定在其中要显示它们的应用菜单和应用子菜单。
[0034] 有权力的用户可通过下列项扩展功能:
[0035] ·作为资源的多维表达式模板,其使商业智能专家能够分发可分配的表达式逻辑。
[0036] ·作为资源的OLAP数据库存储的程序,其使商业智能专家能够分发可分配的迭代解决方案作为内容。
[0037] ·组合模板,其使商业用户能够组合来自内容库的表达式模板,并组成新的“组合”表达式模板。
[0038] ·作为内容的数据挖掘算法和工作流,其基于上面的三种资源而构建,以提供解决复杂的业务问题的手段。
[0039] 插入架构是提供售后市场可定制化的常用手段。这样的架构依赖于应用开发者,其依靠自身的力量编码要由主应用托管的计算机程序。本发明采用不同的方法,并替代地允许扩展被设计并保存在应用中作为内容。本专利设想将四种资源类型保存为内容,其共同提供可扩展性。该内容方法具有以下益处:
[0040] ·易于创建——所有扩展在一个地方创建:在应用内部。
[0041] ·易于维护——所有扩展存储在一个地方:在应用内部。基本应用安全可控制对它们的访问。相同的基本应用安全可用于通过限制为了可用性目的而暴露的扩展来使接口个性化。
[0042] ·易于分发——内容可被导出到文件并通过常规手段例如电子邮件而被分发。
[0043] 意图是读者应在基于内容的方法的上下文内解释整个这个讨论,以扩展商业智能应用。
[0044] 要报告的中间件的新颖介绍引入了抽象层,其允许被开发一次并且甚至能够在不同的数据库上被再次使用的报告和度量。
[0045] 值得强调的是,不仅报告内容是可再次使用的,而且报告功能(例如,计算毛利润率或平均存货周转率)可被开发一次并被重复地再次使用。
[0046] 该可重用性准许现有的基于BI服务的企业提供捕获其行业知识的价值的供应品,并帮助它们调整其企业。在BI系统曾经很难修改和扩展的场合,本发明的内容驱动的可扩展性意味着可以由终端用户动态地扩展任何配置。
[0047] 大多数查询语言本质上是声明性的,所以不能容易地在查询过程期间对数据执行迭代的操作。数据库储存的程序可向查询语言提供迭代补充。在没有这两种语言范式的组合的情况下,很多任务是缓慢或不可能的。本发明提供用于无缝地将这两种方法聚拢在一起,并即时地向终端用户提供更多权利的内容驱动的方法。
[0048] 数据类型
[0049] 大多数编程语言包括对于表达式和/或对象的类型的概念。类型用于两种主要的目的:
[0050] 1.类型为很多操作提供隐含上下文,所以用户不必明确地指定该上下文。在MDX中,例如,如果a和b是Double型,则表达式a+b将使用浮点加法;如果a和b是类型集合,则它将使用集合加法(并集)。
[0051] 2.类型限制了可在语义上有效的程序中执行的一组操作。它们防止程序设计员例如乘以字符和记录、或对集合进行反正切、或将文件作为参数传递到期望整数的子例程。虽然没有类型系统能够保证捕获程序设计员可能错误地放到程序中的每个无意义的操作,但是捕获足够多错误的好的类型系统在实践中也是非常可贵的。
[0052] 类型系统
[0053] 在其最基本的层,计算机硬件处理1和0的流。在处理器内的各种单元可以将比特解释为不同长度的指令、地址、字符、整数和浮点数以及其他。然而,比特本身是没有被赋予类型;在大多数机器上的硬件不试图记录哪些解释对应于存储器中的哪些位置。汇编语言反映了类型的这种缺失:可以将任何种类的操作应用于任意位置上的值。另一方面,高级语言几乎总是使类型与值相关,以提供刚刚描述的上下文信息和错误检查。
[0054] 非正式地,类型系统由下列项组成:
[0055] ·定义类型并将类型与特定语言结构相关联的机制;必须具有类型的这些结构精确的是具有值的那些结构或可以指代具有值的对象的结构。
[0056] ·对下列项的一组规则:
[0057] ο类型等价(当两个值的类型相同时)。
[0058] ο类型兼容(确定给定类型的值何时可用在给定的上下文中)。
[0059] ο类型推断(基于表达式的组成部分或(有时)基于周围的上下文来定义表达式的类型)。
[0060] 类型检查
[0061] 类型检查是确保程序遵守语言的类型兼容规则的过程。语言被认为是强类型的,如果它禁止使用语言实现可以实施将任何操作应用到意图不支持该操作的任何对象的方式。语言被认为是静态类型的,如果它是强类型的并且在编译时执行类型检查。
[0062] 类型的定义
[0063] 类型是由具有明确定义和相互一致的语义的一组操作组成的接口。
[0064] 类型的分类
[0065] 编程语言常常支持两种类型:引用类型和值类型。更简单的结构例如单整型一般被对待为值类型——它们本身没有标识且它们的值包含关于它们的所有重要信息。它们是可互换的:一个整型7等于任一其它整型7。相反,引用类型指类型的特定实例(通常更复杂的类型,例如对象或集合)。每个引用类型指向类型的唯一实例。
[0066] 装箱(boxing)和拆箱值类型
[0067] 常常,一些结构期望引用类型作为某些操作的参数。
[0068] 可以通过使用称为装箱的机制来将值类型转换成引用类型。值类型被封装在封装器对象和返回的对它的引用中。
[0069] 定义
[0070] 商业智能(BI)
[0071] 通过以将行动导向期望目标的方式提供信息来提高业务决策制定的方法。
[0072] 递归(可组成)类型
[0073] 递归类型是其对象可包含对同一类型的其它对象的一个或多个引用的类型。大多数递归类型是记录,因为它们除了引用以外还需要包含暗示异类字段的存在的一些东西。递归类型可用于构造包括列表和树的各种“链接的”数据结构。
[0074] 指针
[0075] 指针(也称为引用类型)是保存存储器地址的特殊类型的变量。通常,这是另一标量变量或数组的地址,但也可以是函数的地址。
[0076] 编译器
[0077] 编译器是采用以高级语言编写的代码并将它转换成另一(一般较低级的)语言的一个软件。今天通常使用的一个例子是微软的C#编译器,其采用以高级C#语言编写的代码并将它转换成微软中间语言(MSIL)指令。当这个软件被执行时,微软公共语言运行时(CLR)(.NET框架的一部分)又将这些MSIL指令编译成英特尔处理器能够解释的低级汇编语言。
[0078] 可组成的
[0079] 将一个元素嵌套在另一元素内的能力
[0080] 内容
[0081] 更完整地,应用内容——也就是说,相当确切地,应用的内容。例如,字处理文件可被认为是字处理软件的内容。本发明的关键概念是,内容是通常通过电子手段容易创建并容易传播的。
[0082] 交叉联接/交叉相乘
[0083] 作为两个集合的乘积的一个集合,使得第一集合的每个成员与第二集合的每个成员合并。例如,(January,February)与(car,bike)交叉联接将返回(January car,January bike,February car,February bike)。
[0084] 多维数据集
[0085] 优化用于数据的快速检索和聚合的多维数据库。
[0086] 穿透钻取
[0087] 穿透钻取使客户应用能够访问聚合到所关注的单元(或多个单元)的最低级别的数据。
[0088] DSV
[0089] 数据源视图——比原始数据更自然地映射到多维数据集中其定义的基本系统数据的视图。
[0090] ERP
[0091] 企业资源计划是对于多模块应用软件所支持的一组广泛的活动的行业术语,该软件帮助制造商或其它企业管理其企业的重要部分,包括产品计划、部件购买和维持库存。
[0092] 可扩展性
[0093] 扩展的能力。
[0094] KPI——关键绩效指标——用于对照基准来监控并测量业务统计的度量。
[0095] MDX——多维表达式:MDX是多维数据库的领先查询语言。MDX被创建来查询OLAP数据库,并且在OLAP应用的领域正在被广泛地采用。
[0096] OLAP——在线分析处理系统使管理人员能够通过提供对信息的各种可能视图的快速的交互式访问来深入了解数据。
[0097] 下面的定义介绍了反映多维视图并且对OLAP是基本的概念。
[0098] “维”是给数据分类的结构。例如,客户、产品和时间。一般,维包含—个或多个层次。用度量结合的几个不同的维使终端用户能够回答业务问题。例如,按月对数据分类的时间维帮助回答问题:“我们在一月还是六月售出更多小配件?”
[0099] 数字数据对分析是重要的,但在本发明中如何处理它取决于其测量尺度。通常存在必须被考虑的四种测量尺度:
[0100] ·标称
[0101] ·顺序
[0102] ·间隔
[0103] ·比
[0104] “度量”包括通常是数字的并在比例尺度上的数据,其可被检查和分析。一般,一个或多个维对给定的度量分类,且它被描述为被他们“维化”。
[0105] “层次”是使用有序的级别作为组织父子关系中的维成员的方法的逻辑结构。一般,终端用户可通过在其级别上向下钻取或向上钻取来扩大或压缩层次。
[0106] “级别”是在层次中的位置。例如,时间维可能具有表示日、月、季度和年级别的数据的层次。
[0107] “属性”是终端用户可指定来选择数据的维的元素的描述性特征。例如,终端用户可使用性别属性来选择产品。这将产生所有匹配的性别数据的聚合。一些属性可以表示其它表格中的键或关系。
[0108] “查询”是用于从较大的集合获得特定的数据集合的规范,该特定的数据集合也称为查询的结果集合。规范需要选择、聚合、计算或以其它方式操纵数据。如果这样的操纵是需要的,则它是查询的内在部分。
[0109] 占位符字段
[0110] OLAP客户端工具常见的用户界面元素,其允许用户将其它元素放在它上面,以便组成对象,例如元组或集合。占位符可以包含选项卡,且这些选项卡映射到查询部分,所以例如,Row(行)占位符可以具有“January(一月)”选项卡和“Aggregate of Bike and Car(自行车和汽车的聚合)”选项卡。
[0111] 查询块或查询部分
[0112] 查询树的组成部分,可能是表达式模板实例,例如一月和二月的聚合,但不是必须这样,例如度量。查询部分使用OLAP多维数据集对象粗略地映射1到1,例如成员到成员,集合到集合,虽然表达式模板违反这种映射。
[0113] 资源
[0114] 对于BI报告元素例如KPI、计分卡或分析报告或其组成部分(例如指定的集合或所计算的成员)的一般术语。
[0115] 内容由资源组成。
[0116] 模板化
[0117] 提供在其中可以放置实例细节的骨架逻辑结构。该术语不需要对表达式模板是特定的,但在本文件的内容中它应被认为是这样。例如,普通的表达式可以是Sum(@Set),其中在以后的点处将用特定的实例值来代替@Set标记。
[0118] 用户界面
[0119] 用户与应用软件进行交互(或连接)的手段。
[0120] 回写
[0121] 可能通过回写操作来物理地修改多维数据集。如果维具有回写权力,则可在层次内创建、删除和移动成员或更新客户成员公式和特性。也可更新多维数据集内的数据单元。

具体实施方式

[0122] 现在将参考附图更详细地描述本发明。
[0123] 图1-5示出在本发明的查询树中的基本步骤;
[0124] 图6到13示出使用本发明的方法的样例;
[0125] 图14到18示出根据本发明的使用集合和集合部件进行建模;
[0126] 图19示出根据本发明的一个实施例的查询部分上下文菜单;
[0127] 图20示出根据本发明的一个实施例的一系列当前时期模板;
[0128] 图21示出根据本发明的一个实施例的表达式模板浏览器;
[0129] 图22示出根据本发明的一个实施例的为了表总结的目的在应用格式栏中可用的模板;
[0130] 图23示出根据本发明的一个实施例的在显示维度时的合并操作的使用;
[0131] 图24示出根据本发明的一个实施例的表达式模板中的替换字段的使用;
[0132] 图25示出根据本发明的一个实施例的图24的表达式模板中的当前值Set的下拉框的包含内容;
[0133] 图26提供根据本发明的一个实施例的模板资源的示例性“Save as(保存为)”弹出窗口;
[0134] 图27示出根据本发明的一个实施例的简单分析,其中在该简单分析中,一月、二月和三月被聚合到所计算的成员中;
[0135] 图28展示根据本发明的一个实施例的作为对所有Date(日期)成员的聚合的在Rows(行)上的所计算的成员;
[0136] 图29示出根据本发明的一个实施例的组合模板的可能的设计体验;
[0137] 图30示出在被存储为资源的应用内的所存储的程序的设计体验的一个实施例;
[0138] 图31示出根据本发明的一个实施例的用于根据分析创建热图的计算模板实例;
[0139] 图32是可被创建来测试在本发明的方法中涉及的假设的工作流的例子;
[0140] 图33示出每个候选变量提供的被可视地显示为条形图表的信息的量。
[0141] 图1示出用户试图将四个单元的块拉到单个单元中。明显地,不能在不首先执行诸如对他们求和的操作的情况下将四个单元放置在单个单元中。图5也示出提供该操作的上下文菜单。
[0142] 在本发明中的这个最重要的概念是,这个上下文菜单及其逻辑等效形式不是静态的,而相反是可由应用用户编辑的。在商业智能软件中的当前实践是开发者程序,例如包括指定的操作和逻辑的菜单,即,静态解决方案。这种方法由于所需的专家(领域专家、业务分析、开发者)数量和较慢的产品生命周期而处于困难境地。
[0143] 本文所描述的发明使商业智能专家能够直接将选项添加到该菜单及其逻辑等效形式。图2示出新的选项SDeV,BI专家能够通过使用应用内设计器将SDeV创建为内容。内容暗示扩展是应用内的一项,例如水果可放置在纸板盒中,另一例子:在字处理应用内的字处理文件。该方法省去两个专家,并避免产品生命周期中内在的延迟。
[0144] 图3示出用户试图将单个单元拖到另一单个单元中。假设地理信息被保存在行中(例如,第一行可能包含用于澳大利亚数据的3个单元)。从图2已经改变了可用的选项。虽然单元的块(集合)可以被求和,但对于单条数据求和没有意义。这表明上下文菜单是知道“类型”的。这里所述的发明允许BI专家在定义操作(例如,求和,+)的相同内容中向系统提供信息。当前的BI软件开发实践要求静态地描述和实施这样的检查。
[0145] 图4展示与图3相同的行动,然而我们现在将假设时间信息维持在行中。来自图4的上下文菜单现在包括额外的选项“Previous(上一个)”,其对于这个例子获取以前的时段数据。例如,如果所讨论的单元(中间单元)采取2009作为来自它所在的行的其时间上下文,则Previous操作将返回2008的等效数据。重要地,该选项在图3所描述的场景中是不可用的。地理的语义暗示“以前的地理成员”没有意义,即使它在技术上是可实现的。本文所述的发明允许BI专家在定义操作(例如“Previous”)的相同内容中对系统描述这些语义。当前BI软件开发实践静态地实施这样的逻辑的有限和规定的子集。
[0146] 样例
[0147] 为了展示本发明的核心部件的目的,现在提供一个样例。问题陈述是:使用行中的所有Wheel sales(轮销售额)和Frame sales(框架销售额)的聚合来提供分析栅格。假设的OLAP多维数据集当前没有一个框架成员,而是相反如在图6中能够看到的多个框架成员。
[0148] 值得注意的是,如所设想的,这样的可扩展的BI应用允许多种解决问题的方法,而下面仅仅是一种这样的方法。
[0149] 第一步骤是使用Columns(列)上的默认度量来定义分析并然后利用引用模板(稍后详细描述)来获得Product(产品)维的默认成员的孙子。图6示出在成员上可用的上下文菜单。这是本发明的非常重要的部件。基于表达式模板设计员所提供的类型系统和语义逻辑来过滤上下文菜单。例如,设计员可指定维类型,操作对该维类型有意义。
[0150] 图6示出应用引用模板的结果。
[0151] 下一步骤是将孙子过滤为标题内包含“Frame(框架)”的成员。图7示出应用于Product孙子的集合的上下文菜单。可用的模板是对集合操作并返回对轴有效的对象的模板。
[0152] 用户选择“Contains(包含)”模板,且结果是自动产生的表格,如在图7以其填充状态所示的。注意,为菜单提供上下文的查询部分,即,Product的孙子,现在在表格(在图6中被圈住)的默认字段(在这种情况下仅仅是查询部分字段)中。默认字段的类型是类型系统过滤方程的一侧;另一个是上下文,例如查询部分与行占位符相关的事实意味着它需要一个集合作为输出。这在本文件中的下面的技术讨论中被详细地解释。
[0153] 用户现在点击Apply(应用)按钮,则结果显示在图8中,在图8中Rows轴现在包含在其标题中具有文本“Frame”的所有成员。在图9中是对contains表达式模板资源的另一可能的设计。用户然后从图10所示的上下文菜单选择Aggregate(聚合)模板。
[0154] 集合的聚合是标量,然而这可能被隐性地转换(或用开发者的说法,被装箱)成集合。图11示出针对这个模板的自动产生的表格,默认字段再次被考虑为上下文查询部分。
[0155] 用户点击Apply,则结果是图12。
[0156] 最后一个步骤是简单地将Wheel成员拖到Rows上,如图13所示。
[0157] 值得注意的是,Wheel和所计算的Frame成员被自动合并。表达式模板的启动部件是集合列表(例如轴)将对同一父层次的查询部分合并,并在层次边界处被交叉联接。这在本文件的技术描述被更深入地解释。
[0158] 查询创建的技巧
[0159] 查询部分
[0160] 该系统的核心是相对简单的过程:文本替换。复杂的表达式由MDX专家编写,但某些标记被放置在表达式的文本中以指示它们应当被适当的元素在可用时代替。这些是占位符,并且事实上是函数的参数。
[0161] 这是当前的技术状态。
[0162] 然而,其本身并不是强有效的解决方案。对于什么值可作为参数被传递有很多约束。与这个系统密切关联的必须是严格的约束和类型检查系统。本发明在该基本替换过程之外构造了静态类库。这产生高级和可扩展的类型系统
[0163] 值得强调的是,对系统重要的是像LegoTM块一样起作用的“查询块”或“查询部分”:可被组装和再次使用来创建复杂整体的块。类型系统本身提供这些部分中的一些,例如单个度量。商业智能或领域专家可以创建更复杂和参量化的查询块——被部署为内容的表达式模板。重要地,这个系统不需要任何编程。这样的查询块的例子可以是一组成员的聚合。
最后,更复杂的查询块(组合模板)可由商业用户通过将较简单的查询块(表达式模板)组合在一起来创建。
[0164] 查询树
[0165] 在编译语言的过程中,源文本必须转换成计算机可理解的形式。该过程一般包括经由词法分析将文本分成单词(token)并将它解析成抽象的语法树。例如,考虑下面的数学表达式:
[0166]
[0167] 对于此的语法树可能看起来有点像
[0168]
[0169] 本发明的启动概念是复杂多维查询可以被解释为被组合在解析树状的结构中以形成总查询的原子子表达式的树的事实。这些子树中的每一个在被提供了适当的上下文时实际上是单独有效的。
[0170] 这很重要,因为对于参量化查询的文本替换的标准方法仅可以代替叶节点,而本发明的方法允许任何运算符或子树被代替。根据类推,如果上面的例子是计算器,则本发明Λ允许我们使用新按钮“ ”(指数运算符)作为内容,即使该能力在计算器被投入到市场时不存在。
[0171]
[0172] 嵌套的替换
[0173] 这个的推论是,对多维查询的任何模板化解决方案必须继而确保模板是可组成的。也就是说,它们每一个形成可合并到另一更复杂的表达式中的构造块。这个更复杂的表达式又可以用作另一更复杂的表达式的部分,始终对用户隐藏构造块的内部细节。
[0174] 通过添加允许用户使用这些更复杂的嵌套查询来工作的直观界面,本发明扩展了应用。该界面与在处理单个块时相同地运行。
[0175] 大部分现代应用必须考虑国际化。由于本发明的设计的创新性,针对这个要求也需要新的方法。维持每个查询块的语言特定的拷贝不是可行的。此外,这将在查询定义改变时引入难以负担的同步量,而不是可本地化的文本。
[0176] 包括在本发明中的是以下想法:对于资源(例如组合模板)中的每个字符串,维持所有需要的转换。考虑资源名称和描述:最初查询块将仅保存它被创建的语言的文本。如果设计员现在查看不同的语言的这个资源,所输入的初始值将仍然显示。然而,任何更新将只影响该语言的视图。例如,将标题从“Total Sales”改变成其法语等效形式将不影响原始语言。从这可以看出,资源是可本地化的。
[0177] 对在内容可扩展的BI应用中的所有资源设想这种可本地化方法。除了可维护性以外,所有用户可访问相同的内容,从而简化了内容管理。
[0178] 查询创建过程
[0179] 类型系统和语义层
[0180] 类型概述
[0181] 在类库中规定了查询树可用的对象的类。对象的两种最重要类型是集合和组成集合的组件。在图14和15中示出了使用类接口来对此进行建模的一种方法。除了成员模板实例和集合模板实例以外,这样的建模是当前的技术状态。
[0182] 注意到专利20070078823采用使用从表达式产生的元数据类来扩展这个类库的方法是有价值的。这不提供基于内容的应用可扩展性。
[0183] 在本文件中的发明延伸出现状,并采用具有图16中的类的集合的不同的更强大的方法。模板实例类继承自基础类型的模板实例,该基础类型的模板实例保存对表达式模板资源的引用和键值对的字典。如图17,这些键与表达式模板键与在它们用户输入中所表示的值相关。因此,这是模板资源的“实例”。表达式模板本身(作为内容)除了其它信息以外还保存可替换的文本。在查询生成时刻,应用生成所有可替换的文本的快照,然后执行文本搜索和代替,使键字符串与它们对应的值的文本表示相匹配。注意,类型和语义检查在设计时间被执行,并且不在生成时间重新生效。
[0184] 模板实例子类别化实现类型系统实施。例如,集合模板实例不能放置在布尔字段中。简化的实现可选择省略该子类别化步骤,并且替代地具有类型模板实例,实现必要的接口例如ISetComponent和ISet。
[0185] 模板实例子类
[0186] 成员、元组和集合模板
[0187] 成员、元组和集合模板提供映射到基本OLAP类型的模板类型。为了诸如“children of”、“siblings”等的这些操作的目的,成员模板必须返回在其多维数据集上下文中的实际成员。集合模板显然返回集合,并且与数字模板共同解决绝大多数报告问题。
[0188] 字符串模板
[0189] 为了严格地实施类型系统,数字模板不应返回字符串,并且当对多维数据集执行时,这样的结果将被查询构建器阻止。由于这个原因,需要特定的字符串模板实例。其使用的例子可以是对超过一百万的值返回字符串“Big number(大数)”。
[0190] KPI Pin模板
[0191] 表达式模板作为内容的附带益处是它们在加速产品开发时提供的经济益处。因为它们提供自动产生表格的手段,因此即使对于经典开发,在可能的情况下重新使用架构是有用的。由于这个原因,KPI pin模板是有用的。所需的输入字段被设想为是pin类型的,例如实际相对于目标,以及对于“Show Previous(显示上一个)”的复选框。
[0192] 布尔和数字模板
[0193] 布尔和数字模板相当明显地返回布尔和数字数据。它们有效地与下面的运算符模板组合。
[0194] 运算符模板
[0195] 运算符模板为了一致性而被这样命名,但事实上不接受参数。它们简单地保存多维查询表达式的片断,重要地,不是凭自身力量保存整个表达式。这个原始表达式语法未被解释,而是直接插入最后的查询文本中。它们常常但不排他地用于运算符,例如+、-、×和÷。而且它们的实际灵活性通过封装case语句的五个下面的补充部分来最佳地展示,[0196] If
[0197]CASE WHEN
[0198] Then
[0199]THEN
[0200] Else
[0201]ELSE
[0202] Else if
[0203]WHEN
[0204] End if
[0205]WHEN
[0206] 与布尔和数字模板组合,所设想的BI应用现在对于所有公式要求是完全可扩展的。
[0207] 命令模板
[0208] 重要地,本发明扩展到命令型多维表达式。这些在OLAP领域中对于诸如回写的任务很重要。特定的回写命令可能需要公式来指定新的数据项的分配。命令模板被设想用于这样的目的并可利用本文讨论的不是查询特有的所有表达式模板和查询部分,其中,运算符模板可能包括在任何公式中。
[0209] 计算模板
[0210] 单元计算提供紧接着查询结果进行分层计算的手段。例如,查询的第一遍可能产生美元值,并且单元计算可随后通过将当前年叠加在上一次计算上来将此转换成与上年同期相比的增益。第二遍可能对这些百分数的值进行四舍五入。对于在该领域中的专家,内容表达式模板的可应用性应是立即明显的,并且所设想的BI应用包括这样的能力。
[0211] 类型转换
[0212] 显示转换虽然不是内在的,但可使用模板来实现,例如接受布尔输入并且针对假返回0而针对真返回1的数字模板。类型系统提供一些隐式转换能力。隐式转换的简单例子是通过计算成员和元组类型在多维数据集中的值能够将它们隐式地转换成数字的方式,而所有其他的维不变。
[0213] 存在会导致装箱的隐式转换的两个有趣的例子:它们是数字到集合和成员到集合。将在样例的实例图示部分中说明这二者。由实现ISet并且还保存对ISetComponent的引用的SetComponentContainerSet类实现成员到集合转换。本质上,“mock”集合对象保存成员。数字到集合转换也使用SetComponentContainerSet,但是数值必须首先放置在由FormulaMember保存的公式中。
[0214] FormulaMember实现ISetComponent,并且除此以外,它还保存对公式的引用。图18示出此的例子。
[0215] 样例的实例图示
[0216] 图18是上面样例的最终结果的实例图示。存在一些所关注的点,首先是被装箱在SetComponentContainerSet中以便使它放置在Axis1上的度量层次。这是因为层次类实现ISetComponent而不是ISet。可看到装箱的第二个例子:NumericTemplateInstance在也被放置在SetComponentContainerSet中之前被放置在Formula对象中并继而在FormulaMember对象中。在图示中存在装箱的其它例子。图18中有两种模板实例:SetTempiateInstance和NumericTemplateInstance。 虽然以前的讨论指 示TypeTemplateInstance类保存对模板资源的直接引用,但是图17和18共同展示一种替代方案,其中模板TypedTemplateInstance对象保存对CompositeTemplateInstance或ExpressionTemplateInstance的引用。这扩展了类库以处理稍后要讨论的组合模板。
所识别的模板实例中的每个保存键值对的字典。值又可以是另一模板实例,如在Frame SetTempiateinstance嵌套到Sum中,以展示可组成性的情况。在图18中要注意的最后一点是,Product维实例保存对Grand Children表达式模板资源的引用(同样通过ExpressionTemplateInstance类)。这是下面将讨论的引用模板的例子。
[0217] 事后满足类型系统
[0218] 实现查询构建操作的上下文敏感性的关键创新是“查询部分封装器”。例如,当构建在其中你希望使用集合的平均作为对另一模板的标量数字输入的报告时,只有该集合可用来用作输入参数。通常,类型系统将阻止你将集合放到该占位符,因为集合不能转换成数字输入。然而,我们想延迟这个检查,直到我们有机会将这个集合封装到平均操作中。平均操作将返回数字输入,其将形成有效的输入。
[0219] 查询部分封装器通过充当查询部分“变色龙”(chameleons)来起作用。QueryPartWrapper类实现所有可能的接口,并且从而满足所有可能的类型限制。同时,它保存对(封装)操作查询部分的引用。以这种方式,给用户提供了将其查询部分放置在适当的位置并然后满足在此之后的类型要求的机会。这可被视为临时分离类型转换。
[0220] 引用类型
[0221] 为了满足所有多维查询要求,有时一个查询部分必须对在查询树上不逻辑地在其下面的另一查询部分进行操作。通常,引用是针对在并行分支中的查询部分的。这可以使用假设集合来展示,其中商业用户投入大量时间来定义。用户然后需要在报告中与其相邻的(即,在树的并行分支中)这个集合的聚合。通过对原始集合的参考来满足这个要求。重要地,这使得用户免于复制在原始集合中的投入。
[0222] 优化地搜索模板
[0223] 提供表达式模板作为内容并且仍然提供经典开发驱动的方法的类型和语义检查的能力需要过滤模板的最佳手段。例如,如果系统包含一千个模板,则最容易的方法是将类型和语义规则依次应用于每个模板。结果是满足当前的上下文要求的模板列表。假定这将是核心可用性体验,则这样的搜索可能是不可行地慢的和令人不满意的。所提议的技术是当应用于单个表达式模板时将类型和语义规则封装在其内容XML中。这将被实现为当资源被节省时计算的特性集。下面的XML是这样的实现的例子。
[0224]
[0225] 由这种方法提供的性能益处是现在可对这些XML特性创建索引。通过考虑被放置在数字字段中的集合查询部分将是对具有“真”的SetInNumeric值的所有模板的简单搜索,可以说明该方法的简单性。
[0226] 查询构建器
[0227] 虽然模板上下文菜单被设想为对模板工作的主要手段,但是存在不对类型和语义过滤的可选方案——例如模板浏览器。此外,用于过滤目的的语义仅仅部分是由于性能原因。查询构建器通过执行实际添加到树操作并实施所有限制来完成图片。优选的实施例是具有从最低级别(例如组成公式)一直到在最高级别处的查询特定的构建器(例如KPI和分析创建)的查询构建器的类层次。
[0228] 此外,因为表达式模板从基础查询生成系统的角度看是外部事物,它们包含未经证明的语法。由于这个原因,被提议添加到查询树的任何单个查询部分首先针对OLAP多维数据集被检验(执行)。
[0229] 查询构建器还负责创建对所有查询部分的维度的快照,如在UI中封装维度\层次的情况下讨论的。这个快照通常(虽然不是总是)与验证步骤结合。如果存在这个快照不同步的指示,则可由查询医生对它进行刷新。最后,查询构建器也负责确保来自同一层次的集合被放置在占位符中的相连块中,其也在在UI中封装维度\层次的情况下被讨论。
[0230] 查询医生
[0231] 快速重访:查询构建器类不仅实施类型和语义限制,而且还针对多维数据集测试查询部分,以便在添加之前对它们进行验证。在这么做时,它们也捕获维度快照。
[0232] 对此的补充是测试已经存在于查询树内的所有枝的解决方案。这提供了对被破坏的查询的诊断能力,以及更新维度快照的能力。通过对已被更新或删除的资源(例如表达式模板的文本被破坏)的引用或当下层数据库的结构改变时,可能引入误差。这两个相同的过程可能引入维度变化,其可能或可能不引起误差,但都应当应被处理。
[0233] 可能非常难以确切地查明变化出现的地方。给定这些查询的树状结构,可能在树中的每个节点上迭代,并在其孩子是独立的情况下试图解析和执行它。通过自动化这个过程,应用可以快速判定问题存在的地方并向用户建议补救方法。与这个测试并发的,维度快照被刷新。还设想,这样的方法将用于查询优化目的。
[0234] 在应用功能被扩展的地方(扩展点)
[0235] 优选实施例对商业智能应用设想四个扩展点。这些是在应用中商业智能专家可通过基于内容的手段来扩展即用功能的区域。另一可能的实施例可以是重写系统算法,例如计分卡汇总和趋势计算。
[0236] 查询部分上下文菜单
[0237] 在这些扩展点中最重要的是查询部分上下文菜单。图19示出这样的菜单的一个可能的实现。设想菜单在OLAP占位符(图19中的Rows、Columns和Filters)上和数据透视表本身中将是可用的。基于模板设计员提供的提示,类型和语义过滤器二者都应用于该菜单。菜单的“上下文”是针对其产生菜单的项目(例如图19中的Product选项卡)和将结果放置到其中的占位符字段。查询部分选项卡可从一个占位符被拖到另一占位符(例如,Rows到Filters),或对选项卡显示,而不管它在哪里。
[0238] 占位符工具栏
[0239] 模板功能也被设想为在占位符工具栏中是可用的。设计员将具有指定模板应当应用到哪些占位符的能力。图20示出已被标记为可用于过滤器占位符的当前时期的模板集。
[0240] 表达式模板浏览器
[0241] 表达式模板浏览器(图21)提供了在应用中作为内容可用的模板的经典文件夹视图。这些模板可被拖到适当类型的占位符中(例如布尔模板被拖到布尔字段中)。引用模板不能直接放置在占位符中,因此不可从模板浏览器得到。
[0242] 菜单扩展
[0243] 应用菜单本身也将提供访问模板功能的手段。系统将搜索将本身标记为“可见的应用菜单”的内容模板。模板本身提供关于它应存在于查询结构中的什么地方的提示。为了表总结的目的,图22展示在应用格式栏中可用的模板。
[0244] 模板设计
[0245] 上下文未用过(context-naive)的表达式模板
[0246] 关键创新(可扩展性点的内容性质)也暗示内容是充分地一般的而不是多维数据集特有的要求。一般轴平均模板应对行、列或页(在微软SQL服务器分析服务说法中是轴0、1、2)起作用。内容不应当与查询的OLAP多维数据集的现有部件产生唯一名称冲突的风险。表达式模板不应当假设输入参数的层次,通常这出现在输入与度量组合(交叉联接或包括在元组中)时,以便产生结果作为度量层次中的所计算的成员。最后,当前日期模板不应假设名为“calendar(日历)”的层次的存在。可以给出对表达式模板的这种要求的更多的例子。两种创新解决了大部分问题,并且内容BI专家的明智考虑解决其余问题。
[0247] 表达式语言扩展
[0248] 这些创新中的第一个是表达式语言扩展:
[0249] 对于以前提到的轴平均模板,一种特定的多维查询语言MDX具有用来表示特定的轴的Axis(n)方法。然而,这个方法不满足上面的要求,因为模板设计员不能提前知道模板将用在哪些轴中。对此的解决方案是提供一组表达式语言扩展,其在被传递到OLAP引擎上之前由应用解释。在这种情况下,相当可能地,该解释可能仅仅涉及使用Axis(0)或Axis(1)代替$OppositeAxis文本。接下来是非综合性列表,用于展示表达式语言扩展的可能使用的目的。
[0250] $OppositeAxis
[0251] 用相反的轴的当前元组替换。下面的模板片断展示在等级模板中的使用:
[0252]
[0253] $Dimensionality()
[0254] 用在所提供的集合中的第一非度量层次替换。对于关于维度的讨论,见在UI中封装维度\层次。下面的模板片断展示在Pareto模板中的使用:
[0255]
[0256] $CurrentTupleForSet
[0257] 作为$OppositeAxis.CurrentTuple,但是对于集合。下面的模板片断展示在等级集合模板中的使用:
[0258]
[0259]
[0260] 唯一标记查询元素
[0261] 确保模板是充分一般的第二种重要的手段是使用所产生的全局唯一标识符(GUID)来唯一地标记在所产生的查询字符串中的所有元素。这确保最新创建的所计算的成员、集合别名等不与现有的多维数据集对象冲突。在下面的例子中,来自Product层次的成员被放置在称为“Products of Interest(所关注的产品)”的指定集合中。模板设计员不能知道他们将针对其执行的所有可能的多维数据集,因此在某个点这个指定的集合将非常可能与现有的多维数据集对象冲突。
[0262]
[0263] 如上面所识别的,对此的解决方案是如下地唯一地标记Products of Interest集合。普遍存在的该方法确保模板是“一次写入,在任何地方运行”。
[0264]
[0265] 在UI中封装维度\层次
[0266] BI领域中的最晦涩难解的概念之一是维度(还有取决于OLAP环境的层次)。维度是唯一地识别对象所需的维的有序列表。例如,一月销售额可能是维度(Time、Measures)。商业智能专家必须知道维度何时将暗示合并操作以及何时它将暗示交叉联接操作。它们还必须特别仔细地在适当时匹配维度,例如不可能将[Product].[Car]与[Calendar].[2007]合并。同时,为了充分给BI应用授权表达式模板,必须可能例如将最上面的五个销售额的和放置成最下面的五个销售额的和旁边,并且具有自动合并的结果。用户手工创建并集的要求将是麻烦和不可行的。
[0267] 扩展上面的例子:如果January成员现在被放置成与这两个和相邻,则更可能的是用户需要对于January计算的这些和,而不是January数据的第三行,见图23。这表明了在一些情况下也自动交叉联接的要求。可扩展的BI应用的优选实施例将合并相同维度的所有集合,并在维度边界处交叉联接它们。当集合被添加到集合列表占位符中时,它们将被匹配以确保维度的连续块。由于性能原因,维度快照将被拍摄,然而查询医生将提供重新捕获这个快照的能力。也提供了以上的替代算法,其中除了在用户明确地插入边界标记处之外,所有集合被合并。乘法符号是一个可能的标记。在这些被标记的边界处将发生叉乘。
[0268] 替换字段和模板类型
[0269] 用最简单的术语,模板是被存储为内容的对本发明很重要的可替换文本的逻辑块。因此,对表达式模板的最重要的要求是替换字段。在图24中示出了一个可能的设计员体验。虽然本发明被设想用于任何这样的多维表达式语言,但是在本例中,向用户提供了指定Select(选择)和With从句的能力,如MDX查询语言所要求的。这个例子使用@符号来给替换键加上前缀。在生成时间将用来自模板字段(见下面的字段)的对应生成的文本对这些键进行文本替换。图25还包括当前值集合的下拉框。这是模板类型并针对类型检查的目的确定将在运行时间创建哪个TypedTemplateInstance类(见上文)。
[0270] 特性
[0271] 为了实现作为内容的表达式模板,一些额外的输入字段是必要的。两种基本的这样的字段是默认字段和父层次字段。除了增强设计的一些其它内容以外,这些也在下面被介绍。
[0272] 默认字段
[0273] 当通过模板上下文菜单应用表达式模板时,例如对集合起作用的对象将放置在默认字段中。
[0274] 引用模板稍微不同并在稍后被讨论。
[0275] 优选实施例是在右击时显示模板上下文菜单,并且这种技术用于下面的例子:用户将包含Bike和Car的集合放置在Columns轴上。用户右击该集合,则模板上下文菜单显示。示出了接受集合作为输入并可被放置在轴上的所有模板。用户选择Sum(求和),且Bike和Car集合被放置在该模板的默认字段中。对于更深入的了解,参考样例。
[0276] 从这个可以看出,默认字段定义模板的输入类型,而模板类型(见替换模板和模板类型)定义输出类型。如果这个字段被设置为“无”,则从上下文菜单中不能得到该模板。
[0277] 父层次字段
[0278] 在UI中封装维度\层次下,讨论了维度的重要性。父层次字段允许模板设计员指定从哪个字段提取维度。或者,换句话说,哪个字段将提供用作所计算的成员的父亲的层次。例如,如果下面的MDX片断是假设的“Double it(使它加倍)”模板的结果,则该结果将是无限的递归:
[0279]
[0280] 为了防止这种情况,Double Bike成员应放置在Product层中,且这由父层次字段实现。在前面的MDX中,如果[Product].[Bike]是替换的成员字段,比如@Member1,将针对父层次字段选择该字段,以便纠正这个问题。
[0281] 可能明确地将Measures层次实施为父亲。这仅应用于数字和成员类型模板。
[0282] 格式字段和格式字符串
[0283] 格式字段允许表达式模板明确地覆盖多维数据集的推断的数字格式,其常常对于复杂公式失败。通过使用Simple Moving Average(简单移动平均)模板来最佳地展示这个字段的重要性,针对其的Select表达式在下面示出:
[0284]
[0285] 如果格式字段被设置为“无”且该模板被应用,则对照一些OLAP系统的格式返回8个小数位,并且没有货币符号。将@Formula字段指定为格式主文件纠正了这个问题。如果@Formula字段实例只包括单个度量,则从此处得到格式。如果公式包括嵌套的数字模板,则从其格式字段和格式字符串得到这个嵌套的数字模板的格式,且以递归的方式沿着线继续。当度量和数字模板被应用时,一组优先规则适用。这个解决方案提供了对自动格式的高水平的控制,并对于终端用户得到他们需要的东西而不用进一步的调节是重要的。
[0286] 指定格式字段的替代方案是实施具有格式字符串特性的特定格式。然而最重要的细节是这些字段之一应被设置,并且通常这是格式字段。格式字段实际上允许模板充当格式化导管。在模板的树中,任何单个断裂的管(未指定的或不正确地指定的格式字段)将毁掉系统。例如,如果Simple Moving Average又保存Minimum(最小)模板的实例,(假设)格式字段未被指定,则格式引擎将从Simple Moving Average移步到Minimum,但接着没有发现配置,则简单地回到多维数据集默认,如所解释的,这是不够的。
[0287] 引用模板
[0288] 引用模板(之所以这样命名是因为查询部分引用模板而不是模板引用查询部分)必须是类型成员到成员或集合到集合的单输入模板。用开发者的说法,他们将装饰设计模式应用于模板,从而允许在运行时间添加新的行为。它们通过选取上下文菜单中的项目(在其上标勾号)而被应用,如在样例中所展示的。多个引用模板可应用于单个查询部分。它们有一些附属的字段,其在下面列出:
[0289] 引用顺序-如果多个引用模板被应用,这解决了它们应用于所产生的表达式的顺序。
[0290] 触发器类型-指定引用模板是具有复选框风格还是单选按钮风格(在一组中是互斥的)。
[0291] 触发器组ID-如果单选按钮风格模板,则向其应用将是互斥的组提供唯一ID。
[0292] 引用模板是用户界面方便的。任何引用模板可实际上被转换成非引用模板,并以交替的“封装”方式被使用,如在样例中的。
[0293] 字段
[0294] 字段是模板的可替换的元素。字段必须具有至少三个特性:键、可本地化的名称和字段类型。第四个特性(维类型)是针对语义检查而提供的。图25示出对表达式模板字段的一个可能的设计体验。在本例中,用户被提示使用文本“Set to Filter”输入类型集合列表(见字段类型)。然后,将在查询生成时间使用用户输入的字符串表示来对键文本@FilterSet进行文本替换。
[0295] 维类型特性如果被指定则将限制对所提供的维类型(例如时间)的输入。此外,如果只有所需类型(例如层次)的单个多维数据集对象匹配这个维类型,则该对象的名称将默认地出现在字段中。如果只有一个时间层次存在于多维数据集中,则“当前时期”模板可利用这个能力。所识别的字段特性代表任何可能实现的子集。
[0296] 字段类型
[0297] 如在上面识别的,字段类型是所有字段都需要的。字段类型是提供到类型系统以确保最终产生有效的查询结构的信息。下面的片断展示对于在前面章节中的@FilterSet字段的可能的可替换选择语句。重要地是要注意集合列表字段类型是从MDX Filter(过滤器)函数的输入要求中得到。
[0298]
[0299] 字段类型是模板设计员在表达式本身的限制内自行判断的。例如,在上面的例子中的Filter函数不会接受布尔类型,然而,需要数字输入的任何函数可以使用数字类型或用户输入类型(见下文)。
[0300] 单项目占位符
[0301] 单项目占位符选项卡与OLAP多维数据集对象具有直接的一对一关系。它们包括:
[0302] ·维
[0303] ·层次
[0304] ·级别
[0305] ·度量
[0306] ·维属性
[0307] ·度量组
[0308] ·成员
[0309] 多项目占位符
[0310] 多项目占位符可保存在占位符类型的上下文下组合的多个选项卡。例如在数字占位符中的多个元素组合在一起以形成公式。它们包括:
[0311] ·集合列表-集合列表占位符接受集合列表。这些按需要被合并和交叉联接以导致聚合集合。
[0312] ·元组-元组占位符接受全部来自不同层次的多个成员并且表示多维数据集中的单个数据点。
[0313] ·布尔-接受计算结果为真或假的逻辑公式。
[0314] ·数字-接受计算结果为数字的公式。
[0315] ·所产生的数字-允许用户指定数字字段的数量和每个数字字段的值,例如在KPI资源中的标度盘(dial)彩色编码边界的情况中。
[0316] 控制输入
[0317] 控制输入类型允许用户使用经典UI元素(例如复选框)来输入数据。它们包括:
[0318] ·用户输入
[0319] ·所产生的用户输入
[0320] ·复选框
[0321] ·下拉框
[0322] ·单选按钮
[0323] 所产生的用户输入类型允许用户指定输入字段的数量和每个输入字段的值。它的使用的例子将是KPI的标度盘彩色编码边界。
[0324] 特征
[0325] ·引用成员-查询中的可引用的成员实例的下拉列表。
[0326] ·引用集合-查询中的可引用的集合实例的下拉列表。
[0327] ·特性-输入类型字符串的MDX特性。这个字段可用与With和Select字段能够使用的相同的方式保存可替换的文本。
[0328] ·颜色-用于条件格式编排的颜色输入控制。
[0329] ·字体-用于条件格式编排的字体输入控制。
[0330] 资源特性
[0331] 为了完成表达式模板设计讨论,则在设计过程的自然流程中,现在保存内容。图26提供对于模板资源的“Save As(保存为)”弹出窗口的例子。重要地,设计员可以提供名称和描述,并指定存储内容的位置。资源特性将包括安全信息和常用细节,例如Created By(由谁创建)、Create On(在什么上创建)等。
[0332] 增强的应用
[0333] 垂直
[0334] 本发明提供了一种机制,通过该机制可以“捕获、装瓶和转售”商业智能专门技术。
[0335] 嵌套模板的能力意味着可以通过引入映射层来使报告与其下层数据源分离并能够再次使用。例如,可以针对在所有会计系统中找到的关键度量来创建复杂的财务报告;使用基于参数的查询部分来创建这些关键度量,其中基于参数的查询部分将针对其作报告的关键概念(例如“Sales(销售)额”)映射到数据库中的下层度量。然后可以通过仅将针对“Sales”的映射改变为针对在另一会计系统中的适当度量的映射来在该系统上再次使用这同一个报告。以这种方式,下层报告元素(例如,计算毛利润率的函数)和报告本身可以被创建、共享和再次使用。
[0336] 此外,本发明的架构支持这些报告及其组件中的任一个或全部的参量化,并将在需要的场合用整理的输入组动态地提示用户。为了支持这些纵向报告和性能管理解决方案的商业实现,系统还允许每个报告和报告函数被单独地许可。
[0337] 解决穿透钻取
[0338] 在OLAP领域中一个常见困难是对于所计算的成员(对于这个讨论,仅仅是所计算的任何行或列,而不是未改变地从多维数据集获取的数据)的穿透钻取。通常,OLAP多维数据集将简单地不准许这样的操作。很多实现甚至将穿透钻取限制到单个单元。在本文件中描述的表达式模板架构提供了解决这个长期困难的两种手段。第一种解决方案提供解决对子多维数据集(过滤器)(即,组成数据点的成员的集合)进行穿透钻取的自动手段。图27示出简单的分析,其中January(一月)、February(二月)和March(三月)已经聚合成所计算的成员“Jan,Feb,Mar”。对用户来说直观的是,对于单个数据单元的穿透钻取应当返回对这三个月的所有数据项。相当意外地,甚至这个简单的操作也通常是不可能的。
[0339] 由于内容表达式模板的查询树性质,可以遍历公式定义以找到组成它的顶级多维数据集对象,对于本例是月成员。这些成员然后定义要对其进行穿透钻取的子多维数据集(过滤器)。这个解决方案满足基本的要求。
[0340] 图28示出复杂得多的要求。在Rows上计算的成员现在是对于所有的从年到日的Date(日期)成员的聚合。然而,产生这个结果所需的表达式语法从系统的角度看是难处理的:
[0341]
[0342] 设想表达式模板具有对于该计算提供穿透钻取过滤器的额外的可替换字段。对于上面的表达式,等效的穿透钻取表达式可能是:
[0343]
[0344] 现在,返回到图28,在穿透钻取时,系统将以与前面讨论的相同的方式替换DrillThroughExpression字段(上面),以便提供返回时段到日成员的表达式。这个集合接着用作穿透钻取子多维数据集。结合本文提出的这两种技术,在本领域中的专家可以推断出,所提出的申请已提供了用于对所计算的成员进行穿透钻取的真正解决方案。
[0345] 组合模板
[0346] 尽管表达式模板可被认为在本质上是“基础的”,组合模板允许终端用户(重要地是不需要商业智能专家知识)将表达式模板“组合”成大的逻辑块。例如,上面的样例对过滤的集合计算和。如果确定这是足够一般的要求,则可能创建“Filtered Sum(经过滤的和)”模板。虽然Sum和Contains表达式模板都需要基本查询语言的知识,但是这个新的组合模板的创建却不需要。因此,组合模板降低了进入障碍,并向所有BI应用用户有效地开放模板创建。图29示出组合模板的一个可能的设计体验。在本例中,使用下列框选择组合模板的类型。这个选择又影响它下面的占位符,其变成集合列表占位符。用户然后能够从模板浏览器拖拽组成组合模板的模板。注意,组合模板可包含其它组合模板,使得设计员可以构建越来越大的逻辑块。
[0347] OLAP存储的程序
[0348] 编程语言字段可以不严谨地分成声明式和命令式的。声明式编程陈述逻辑而在流程上是不明确的,而命令性编程明确地陈述流程。声明式的传统OLAP查询语言没有在执行期间迭代地处理数据的能力。将所存储的程序添加到某些OLAP数据库补充并丰富了其解决问题的能力。本发明的另一方面是写复杂的定制存储的程序并使用基于内容的可扩展性方法所暗示的所有益处来分配它们的能力。最终,程序被部署到OLAP数据库。然后,除了查询语言中由数据库厂商提供的原生函数之外,这些程序也是可用的。该创新在这里应用于基于内容的方法,通过该方法,这些存储的程序被分配和部署。在本专利所设想的应用中存储的程序将被存储为资源。这些资源可以被复制和粘贴在应用内,并且可以在外部被分配。
[0349] 图30示出这样的资源的设计体验的一个实施例。在这个非特定的例子中,组合Zap.BI.AnalysisServices包括以所存储的程序的形式的定制。deploy(部署)和remove(移除)按钮使得具有足够权限的用户能够将这些定制部署到其本地多维数据集。这个资源可被导出到任何兼容的系统。
[0350] 表达式模板资源必须暴露这个新的多维数据集定制,因此基于内容的OLAP存储的程序的创新是在基于内容的表达式模板的基础上构建的。这样的模块的核心表达式可能是:
[0351]
[0352] 最终结果可能是根据分析创建热图的计算模板实例,如图31所示。本领域专家的读者从这一点应当能够得出结论,本发明的内容存储的程序部分基于命令式编程来提供扩展商业智能应用并将这个新的功能提供到本领域中的非专家的手段。
[0353] 专家系统设计和交付
[0354] 专家系统是能够建议、分析、分类、交流、咨询、设计、诊断、解释、浏览、预测、形成概念、识别、诠释、验证、学习、管理、监控、计划、提出、获取、调度、测试和辅导的一类计算机程序。它们处理通常被认为需要人类专业人员来得出其解决方案的问题。
[0355] 元向导框架
[0356] 基于目前所概述的所有部件,我们现在将本发明框架扩展为包括过程工作流。诸如预测的很多复杂的任务需要统计方法的深入的知识。此外,可能存在用于解决一般业务问题的被接受的行业约定和方法。
[0357] 系统允许元向导的创建。这些是在复杂的分析任务中引导用户的工作流。提供设计员工具以指定向导中的每个对话,且任何现有的算法内容可以被包括并使用上面讨论的技术从多维数据集细节中提取。
[0358] 例如,考虑线性回归。找到最佳拟合的线对大部分应用是相对简单的。然而,在没有基本数据的彻底检查和所涉及的所有假设的测试的情况下,这个估计的可靠性通常是令人怀疑的。图32是可被创建来处理这个问题的工作流的例子。流程图中的每个框代表被设计用于在该过程的阶段中引导用户的对话框。在如上所述的内容中将需要使针对这些测试中的每一个的算法可用。
[0359] 工作流规范
[0360] 一旦元向导的步骤被定义,则工作流就可被覆盖以定义从一个步骤进行到下一步骤所需的顺序和条件。这是重要的,因为步骤的顺序常常是关键的——例如,在图32中所示的流程图中概述了创建有效的线性回归模型所需的诊断和补救步骤。
[0361] 图32是在开发向导时创建的一种工作流的例子。
[0362] 针对每个向导阶段或步骤的对话设计
[0363] 在用户界面(UI)设计中,“向导”是使用户以正确的顺序在过程工作流中步进的一系列对话框。在优选实施例中,使用BI应用的标准仪表板能力来创建这些对话中的每一个。可以通过将报告嵌入对话中(通过对话他们能够以常见的方式进行交互)以及通过类似于模块实现编辑器中的提示机制的一组提示机制来向用户呈现数据以用于收集用户输入。
[0364] 对于正在被收集的信息,存在基于数据类型的标准UI选项。例如,显示下列框来选择类别设置。在下面提出的例子中,通过logistic回归模型的创建来引导用户预测“customer turn”的概率。每个候选变量提供的关于我们试图预测(customer turn)的量的信息量视觉地显示为如在图23中看到的条形图。用户然后可以结合一些“配合等级”总结统计使用这一点来选择变量的适当子集。
[0365] 结论
[0366] 本发明提供了用于多维数据库的复杂查询和分析的框架,其中,该框架:
[0367] 对于终端用户方不需要查询语言的知识。
[0368] ·允许商业智能和领域专家开发可再次使用的查询“构造块”。
[0369] ·允许商业用户使用这些“构造块”来快速并容易地构造和开发复杂的查询。
[0370] ·允许商业用户通过单独“构造块”的组合来构造更复杂的“构造块”。
[0371] ·从商业用户的角度看,透明地组合声明性查询能力与数据的迭代处理。
[0372] ·将所有用户创建的查询和能力交付为可再次使用的内容。
[0373] ·遍布在本申请中,扩展到KPI查询、穿透钻取查询、仪表板过滤器、积计分卡汇总算法和需要表达式并可能受益于模板化的几乎任何点。
[0374] 从上文中可看到,本发明提供了独特的BI系统,其消除了在初始实现之外对专家辅助的需要。
[0375] 本领域技术人员将认识到,本发明提供了同时隐藏OLAP报告的复杂性、授权用户执行复杂的分析并交付动态可扩展的系统的架构,其中该动态可扩展的系统允许用户捕获用来管理关键业务过程和工作流的通常使用的报告结构,并重用和管理它们。
[0376] 本领域技术人员还将认识到,可以在除了所描述的这些实施例之外的其他实施例中实现本发明而不偏离本发明的核心教导。