首页 / 数据分析表达式

数据分析表达式无效专利 发明

技术内容

数据分析表达式 [0001] 多维数据分析(例如,从多个观点查看和分析数据)在企业中已经逐渐变得流行。 然而,当前多维数据分析应用通常要求用户精通诸如多维表达式语言(MDX)等复杂的语义语言,因为MDX表达式用于组织和分析数据。因此,未经MDX训练的企业雇员可能难以执行多维数据分析。此外,尽管企业雇员可能熟悉由通常可用的电子表格应用提供的数据分析公式,但这些公式通常不像多维数据分析程序一样强大。例如,这些公式只可启用一维(例如,顺序)数据聚集。因此,基于多个因素来作出决策的企业可能面临在以下两个昂贵的替换方案之间进行选择:对现有雇员进行诸如MDX等复杂语言的训练或者雇用专攻多维数据分析的分析员。 [0002] 概述 [0003] 公开了用于接收并处理数据分析表达式(DAX)的方法和系统。DAX可以以类似于电子表格公式的表达式语言定义,并且可以在电子表格在运算以执行多维数据分析以及针对关系数据模型的数据分析。由此,DAX可使得熟悉现有电子表格应用的人能够执行多维数据分析以及针对关系数据模型的数据分析(例如,在现有电子表格应用中)。不像常规的电子表格公式,DAX有益地独立于电子表格的特定单元格范围。 [0004] 例如,可以在电子表格应用的数据透视表处接收并执行DAX。对数据透视表的特定单元格执行DAX可包括确定该特定单元格的上下文、计算对应于该特定单元格的DAX的值、以及在该特定单元格处输出DAX的计算出的值。 [0005] DAX可支持多表执行。例如,DAX可引用第一数据表和第二数据表,执行DAX可包括遍历第一数据表和第二数据表之间的关系(例如,遵循可存在于第一表中的一列和第二表中的一列之间的关系)。DAX还可支持动态重新执行。例如,可响应于对存储在一数据表的行集中的数据的用户修改来对该行集自动重新执行DAX。 [0006] 提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。 本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。 [0007] 附图简述 [0008] 图1是示出计算机系统接收并处理数据分析表达式的特定实施例的框图; [0009] 图2是示出计算机系统接收并处理数据分析表达式的另一特定实施例的框图; [0010] 图3示出了可由图1的系统使用的数据表的特定实施例; [0011] 图4示出了基于图3的数据表的数据透视表的特定实施例; [0012] 图5示出了可由图1的系统使用的数据表的另一特定实施例; [0013] 图6示出了基于图3的数据表和图5的数据表的数据透视表的特定实施例; [0014] 图7是示出接收并处理数据分析表达式的方法的特定实施例的流程图; [0015] 图8是示出接收并处理数据分析表达式的方法的另一特定实施例的流程图; [0016] 图9是示出接收并处理数据分析表达式的方法的另一特定实施例的流程图; [0017] 图10是计算环境的框图,该计算环境包括可用于支持如图1-9所示的计算机实现的方法、计算机程序产品和系统组件的实施例的计算设备。 [0018] 详细描述 [0019] 数据分析表达式(DAX)可使得能够在诸如电子表格应用等常规的数据处理应用处进行多维数据分析。例如,可接收DAX作为电子表格的一列的列定义或作为数据透视表处的度量。DAX可被执行以填充列,其中每一单元格中的值都是基于该单元格的行上下文来计算的。或者,数据透视表的单元格可通过执行DAX来填充,其中数据透视表的每一单元格中的值是基于与该单元格相关联的上下文(例如,过滤上下文)来计算的。 [0020] 在一特定实施例中,公开了一种计算机实现的方法,包括在电子表格的数据透视表处接收数据分析表达式。该计算机实现的方法还包括对电子表格的至少一个数据表执行数据分析表达式。对数据透视表的特定单元格执行数据分析表达式可通过以下操作来执行:确定与该特定单元格相关联的上下文、基于该上下文来计算数据分析表达式的值、以及在该单元格处输出计算出的值。 [0021] 在另一特定实施例中,公开了包括指令的计算机可读介质,这些指令在被处理器执行时使得处理器接收包括第一电子表格的特定列的列定义的输入。该输入包括基于电子表格的至少一列和基于第二电子表格的至少一列的数据分析表达式。计算机可读介质包括在被处理器执行时使得处理器执行以下操作的指令:确定第一电子表格和第二电子表格之间的关系并且通过执行数据分析表达式来填充特定列。对第一电子表格的特定行执行数据分析表达式包括:基于该第一电子表格的特定行中的第一数据以及从第二电子表格中检索到的基于同该特定行相关联的行上下文的第二数据,计算数据分析表达式的值。执行数据分析表达式还包括:在作为特定列和特定行的成员的单元格处输出计算出的值。 [0022] 在另一特定实施例中,公开了一种系统。该系统包括存储器和数据接口,该数据接口被配置成接收数据,以基于接收到的数据来创建一个或多个数据表,并且将数据表存储在基于列的存储器中存储中(例如,映射到在线分析处理(OLAP)多维数据集(cube)结构的结构)。该系统还包括被配置成基于数据表来生成数据透视表的数据透视表模块。该系统还包括分析模块,该分析模块被配置成接收数据分析表达式并对数据表中的至少一列执行该数据分析表达式。对数据透视表的特定单元格执行数据分析表达式包括确定与该特定单元格相关联的过滤上下文以及检索与数据表的一行或多行相关联的、对应于该特定单元格的过滤上下文的数据。执行数据分析表达式还包括基于检索到的数据来计算数据分析表达式的值,并且在单元格处输出计算出的值。 [0023] 图1是示出计算机系统100接收并处理数据分析表达式(DAX)的特定实施例的框图。计算机系统100包括数据接口110和存储器114。计算机系统100包括电子表格分析模块126和电子表格数据透视表模块118。一般而言,计算机系统100可接收并处理DAX,诸如说明性的DAX 104。DAX可具有类似于现有电子表格公式的句法,并且可使得能够在计算机系统100处进行多维(例如,多表和/或多列)数据分析。 [0024] 计算机系统100包括被配置成接收数据102的数据接口110。在一特定实施例中,数据102由计算机系统100的用户提供。或者,数据102可以从另一计算机系统、网络存储设备或网络共享接收到。数据接口110还被配置成使用存储器中基于列的存储来基于在存储器114处接收到的数据创建数据表112。例如,数据接口110可以在电子表格应用中创建表(例如,电子表格),其中该表包括数据102。在线分析处理(OLAP)多维数据集116数据结构可基于存储器中基于列的存储来在存储器114处构造。OLAP多维数据集可存储数据,这些数据被排列以使得OLAP多维数据集的三个维度(即,轴)中的每一个都提供不同的数据排列。例如,OLAP多维数据集可构造按日期、产品标识符和客户标识符排列的销售数据,如此处参考图3-6进一步描述的。或者,数据表112可被存储在诸如OLAP超多维数据集(例如,具有不止三个维度的OLAP数据结构)等另一数据结构或某一其他存储器中列存储中。将数据表112存储在存储器114(例如,计算机系统100的随机存取存储器(RAM))处的OLAP多维数据集116中可有助于方便如此处描述的多维数据分析和数据透视表运算。 数据表参考图3和5进一步描述。 [0025] 计算机系统100还包括电子表格数据透视表模块118。在一说明性实施例中,电子表格数据透视表模块118是计算机系统100的电子表格应用的一部分。电子表格数据透视表模块118包括基于由OLAP多维数据集116引用的数据表112来生成数据透视表122的逻辑120。数据透视表122可支持“数据透视”运算,其中数据透视表122的行标题、列标题、过滤器或切片器(slicer)被改变并且数据透视表122中的数据值自动更新以反映改变。在一特定实施例中,响应于数据透视运算而更新数据透视表122包括重新执行存储器中OLAP多维数据集116的查询,以使得来自OLAP多维数据集的数据沿着OLAP多维数据集的不同纬度排列和查看。数据透视表参考图4和6进一步描述。 [0026] 计算机系统100还包括电子表格分析模块126。在一说明性实施例中,电子表格分析模块126是计算机系统100的电子表格应用的一部分。电子表格分析模块126被配置成接收DAX 104并且包括被配置成执行DAX 104的DAX执行逻辑128。例如,电子表格分析模块126可以对数据表112执行DAX 104。对数据透视表122的特定单元格执行DAX包括确定该特定单元格的过滤上下文以及DAX 104所引用的表的行上下文、从OLAP多维数据集 116中检索基于行上下文的数据124(例如,与数据表112的一行或多行相关联的数据)、基于检索到的数据来计算DAX 104的值130、以及在数据透视表的单元格处输出计算出的值 130。由此,填充数据透视表122可包括针对多个数据表的不同的上下文和交叉过滤自动递归地执行DAX 104。或者,计算可以按块模式执行,以使得对数据透视表的多个单元格的计算可以同时执行。 [0027] 在一特定实施例中,DAX 104包括对数据表112的多行进行合计的公式。该公式可以是用包括模块118、126的电子表格应用的固有公式语言表达的用户定义的公式,而非引用电子表格应用的特定单元格范围。由此,DAX(例如,DAX 104)可使得能够进行基于表(例如,基于列)的多维数据分析(与常规的电子表格基于单元格的分析形成对比),同时结合用户熟悉的现有电子表格公式。例如,DAX 104可包括合计(例如,总和、均值、最小值、最大值或计数)、基于时间的函数(例如,天、星期、月、季度、年、第一个和最后一个日期、第一个和最后一个非空白日期、月份/季度/年份的起始和结束、增加的天数、之间的天数、时间段内的天数、并行时间段、前一天/月/季度/年、后一天/月/季度/年、到当前日期的月份/季度/年份/天数、前一年的相同时间段、对月/季度/年的合计、或者打开和关闭月度/季度/年度余额)或其任意组合。DAX还可包括应用函数、分组函数、半联结函数、查找值函数、较早/最早函数(例如,为了引用单元格处的前一个值)、交函数、异常函数、并函数、选择函数、联结函数、前N个函数、排名函数、或其任意组合。DAX 104还可包括具有与常用电子表格公式类似的句法的基于表的专用函数。例如,DAX 104可包括相关表函数、相关表函数、过滤表函数、不同表函数、值表函数、所有表函数、所有异常表函数、所有非空行表函数、或其任意组合。 [0028] 在操作中,数据表112可基于数据接口110接收到的数据102来创建。应当注意,对单个数据表112的操作只是出于说明的目的而示出的。可以存在任何数量的数据表和数据源。数据表112可以用作存储器114中的OLAP多维数据集116的数据源。电子表格应用用户可能期望通过使用数据透视表122来对数据表112执行分析。数据透视表122可由电子表格数据透视表模块118来生成。在定义由数据透视表122输出的度量时,用户可输入DAX 104。电子表格分析模块126可通过执行DAX 104来填充数据透视表122的单元格。 填充数据透视表122的特定单元格可包括确定与该特定单元格相关联的过滤上下文、基于该上下文来计算特定单元格的DAX值130、以及在该单元格处输出计算出的DAX值130。 [0029] 在一特定实施例中,执行DAX涉及混合的基于迭代器和基于查找的执行策略。在另一特定实施例中,执行DAX可包括用于DAX的执行树的正则形式(例如,非关系型代数形式)的交叉应用。在另一特定实施例中,DAX执行可包括依赖关系分析以确定计算出的列依赖什么子计算。基于依赖关系分析,可确定计算子计算的次序。例如,如果计算出的列中的值A依赖于三个子计算B、C和D的结果,则可生成在尝试计算A之前产生B、C和D中的每一个的计算的规则。 [0030] 应当注意,尽管图1所示的特定实施例描绘了在数据透视表中使用DAX,但还可以在没有数据透视表的情况下使用DAX。例如,DAX 104可以在电子表格应用处作为数据表 112的特定列的列定义来输入。DAX 104可基于数据表112(以及可能的附加表)中除了特定列之外的一列或多列。填充特定列的单元格可包括确定该单元格的行上下文、基于行上下文来计算DAX 104的值、以及在该单元格处输出DAX 104的计算出的值。在另一实施例中,DAX 104还可基于第二数据表的至少一列。在这一实施例中,计算DAX的值可包括基于数据表112和第二数据表之间的关系来从第二数据表中检索数据。例如,数据表112可包括包含可以在第二数据表的相关列(例如,索引列)中找到的值的列。在一特定实施例中,即使当不存在关系时,计算中也涉及第二数据表。例如,执行DAX 104可包括对第二数据表进行过滤以包括涉及数据表112中的数据值的行。所得的经过滤的行然后可由DAX进行合计。应当注意,即使相关列在数据表112中具有与第二数据表中不同的名称,数据表112和第二数据表之间的关系(例如,相关列)也可存在。数据表之间的关系查看图5-6进一步描述。 [0031] 将会理解,图1的系统100可经由DAX来使得能够进行一般电子表格公式所不允许的高级数据分析。还会理解,图1的系统100可基于多个表来启用这样的高级分析,而非引用电子表格的特定单元格范围。 [0032] 图2是示出计算机系统100接收并处理DAX的另一特定实施例的框图。系统200包括被配置成接收用户输入202的电子表格应用210。电子表格应用210还包括分析模块 220。在一说明性、非限制性实施例中,分析模块220是图1的电子表格分析模块126,并且包括类似于图1的DAX执行逻辑128的DAX执行逻辑222。 [0033] 电子表格应用210可包括被配置成响应于电子表格应用210处的数据透视表处的改变来接收查询201。例如,逻辑204可响应于用户改变图1的数据透视表122处的设置来接收查询201。响应于接收到查询201,逻辑204可以自动生成重新计算与数据透视表相关联的DAX的命令208并将命令208发送到分析模块220。 [0034] 电子表格应用210可包括被配置成检测电子表格应用210处的一个或多个数据表中的改变的逻辑206。例如,逻辑206可被配置成检测诸如图1的数据透视表112等数据表处的改变。改变可基于用户输入202来检测。例如,用户输入202可包括数据表的单元格的新值。响应于检测到数据表中的改变,逻辑206可自动生成重新计算与改变后的数据表相关联的DAX(例如,列定义DAX)的命令208,并将命令208发送到分析模块220。 [0035] 响应于接收到命令208,分析模块220可自动重新计算电子表格应用处的一个或多个DAX。例如,分析模块220可自动重新计算电子表格应用210的数据表处的列定义DAX、电子表格应用210的数据透视表处的DAX或其任意组合。 [0036] 应当理解,图2的系统200可通过启用DAX的自动重新计算来改善电子表格应用 210处的用户体验。由此,电子表格应用的用户可以对数据表和数据透视表作出改变并且观察DAX值中的相应改变,而不重新定义和手动重新执行DAX。因此将会理解,一旦输入,就可使用DAX来对改变数据多次执行多维数据分析。 [0037] 图3-4示出了图1的数据表112(被示为销售表300)和基于销售表300生成的数据透视表400的特定实施例。销售表300包括一行或多行310以及列320、330、340、350、 360和370。在一说明性实施例中,销售表300包括图1的数据表112。 [0038] 销售表300的行310中的每一个可表示销售交易,而销售表300的每一列320-370可表示与销售交易相关联的数据。例如,列320可表示特定销售的日期(Date),列330可表示指示哪一个顾客为特定销售付费的顾客标识符(CustID),列340可表示指示为哪一个产品付费的产品标识符(ProdID),列350可表示销售的产品的数量(Qty),列360可表示为销售的每一个产品收取的价格(Price),而列370可表示销售产生的总金额(Amount)370。 在一特定实施例中,金额列370由电子表格公式(例如,“=Qty*Price”)来定义。销售表 300还包括对金额列370的静态总计(Total)380。 [0039] 应当注意,DAX中所包括的列引用可以是多态的。即,当在列计算中使用时,DAX中的列引用可以针对列,而当在标量计算中使用时,可以针对存储在列的特定行处的值。例如,当在列计算中使用时,列引用“Amount”可针对列370,而当在标量计算中使用时,引用“Amount”可针对存储在图3的行310中的特定行处的Qty*Price的值。还应注意,DAX或其一部分可包括函数或公式,这些函数或公式可产生可用作标量计算的中间结果的表。 [0040] 在图4所示的特定实施例中,数据透视表400对图3的销售表300的数据列320以及ProdID列340和CustID列330的组合进行数据透视。即,数据透视表400可基于来自图3的销售表300的日期和ProdID/CustID上下文来合计数据。例如,可以在数据透视表400处接收到DAX 410“SUM[Amount]”,该DAX指示以下需求:数据透视表400的单元格包含针对图3的销售表300的Date、ProdID和CustID的各种组合(即,上下文)的图 3的金额列370的总计。因此,数据透视表400的第一说明性单元格412指示z不管顾客的情况下从2009年销售“456Red”产品收到的金额,而第二说明性单元格414指示在2008年将“789Green”产品销售给顾客“Jon200”收到的金额。即,与第一单元格412相关联的第一上下文可以是“Time[Year]=2009;Product[ProdID]=’456Red’”,而与第二单元格 414相关联的第二上下文可以是“Time[Year]=2008;Product[ProdID]=’789Green’; Customer[CustID]=’Jon200’”。 [0041] 应当注意,上下文还可包括不等式。例如,由顾客“Jon200”购买的花费超过$200的产品可使用上下文“Customer[CustID]=’Jon200’;Product[Price]>200.00”来确定。 [0042] 还应注意,数据透视表400还可使用与DAX 410不同的DAX来生成。例如,如果图 3的金额列370不存在,则数据透视表400可通过将金额列370的“=Qty*Price”公式结合到DAX 410中来生成。例如,DAX 410可以是“SUM[Qty*Price]”。 [0043] 应理解,图4的数据透视表的多个单元格可基于与图3的销售表300相关联的上下文来填充,而不多次输入图4的DAX 410。图4的DAX 410可改为基于与图4的数据透视表400的每一个单元格相关联的不同上下文来对图4的数据透视表400的每一个单元格自动地、递归地重新执行。还应理解,静态总计380可指示已销售的所有产品的总和,但DAX 410可改为用来提供已销售产品的多维视图(例如,产品总和、年度总和以及按照产品和年度的组合的总和)。 [0044] 图5-6示出了图1的数据表112(被示为库存表500)以及基于图3和图5的数据表(例如,图3的销售表300和图5的库存表500)的数据透视表600的特定实施例。库存表 500的行510中的每一个都可表示可供销售的特定产品,并且列520-540可表示与特定产品相关联的数据。例如,列520可表示特定产品的产品标识符(ProdID),列530可表示特定产品的描述(Description),而列540可表示特定产品有多少单位当前在库存中(In-Stock)。 [0045] 库存表500的一列或多列还可包括DAX列定义。例如,已销售(Sold)单位列550具有相关联的DAX列定义“SUM[Qty]”560。已销售单位列550的各行可通过对图3中的对应于各种产品的Qty列350进行合计来填充。例如,单元格552可通过对图3的销售表300进行过滤以获得ProdID为‘789Green’的行然后对其余的行的Qty列进行合计,来填充。将会理解,为了填充单元格552,可自动标识和遍历图3的销售表300和图5的库存表500(图 3的ProdID列370和图5的列520是相关的)之间的关系(例如,先前用户定义的关系)。 应当注意,过滤表(例如,图3的销售表300)可包括布尔过滤器以及基于表的过滤器。 [0046] 数据透视表600可以对多个数据表的各列进行数据透视。在图6所示的特定实施例中,数据透视表600对图3的日期列320以及图5的描述列530和图3的CustID列330的组合进行透视。即,尽管数据透视表600对来自一个表,即图3的销售表300的数据进行合计,但该合计可基于来自图3的销售表300和图5的库存表500两者的上下文。 [0047] 数据透视表600可接收类似于图4的DAX 410的DAX 610“SUM[Amount]”,并且可以递归地计算DAX 610的值以填充数据透视表600的单元格。填充数据透视表600可包括标识图3的销售表300和图5的库存表500之间的关系,以及从图3的销售表300和图 5的库存表500两者中检索数据。例如,在图6所示的特定实施例中,可以自动标识图3的表300和图5的表500之间的关系。该关系可包括图3和图5的相关列340和520,这两列都是产品标识符(ProdID)列。在一特定实施例中,相关列是索引列。因此,数据透视表600的行标题612“Blue Bike”可基于图3的销售表300和图5的库存表500之间的所标识的关系来填充。数据透视表600的第一说明性单元格614可以与第一上下文“Time[Year]= 2009;Product[Description]=’Red Bike’”相关联,而数据透视表600的第二说明性单元格616可以与第二上下文“Time[Year]=2008;Product[Description]=’Green Trike’; Customer[CustID]=’Jon200’”相关联。 [0048] 由此,将会理解,DAX(例如,图5的DAX 560和图6的DAX 610)可允许跨多个表(例如,图3的销售表300和图5的库存表500)进行多维数据分析。还将理解,这样的多维数据分析可以在表本身处(例如,在图5的列550处)以及在数据透视表(例如,图6的数据透视表600)处进行。 [0049] 图7是示出接收并处理数据分析表达式的方法700的特定实施例的流程图。在一说明性实施例中,方法700可由图1的系统100执行。 [0050] 方法700包括在702,在电子表格的数据透视表处接收DAX。例如,在图1中,DAX 104可以在数据透视表122处接收。为了阐释,参考图4,DAX可以是DAX“SUM[Amount]”410。 [0051] 方法700还包括在704,执行DAX。例如,在图1中,电子表格分析模块126可执行DAX 104。对于数据透视表的特定单元格,执行DAX包括在706确定与特定单元格相关联的上下文、在708基于该上下文来计算DAX的值以及在710在特定单元格处输出计算出的值。例如,在图1中,可确定上下文,可检索基于上下文的数据124,并且可以在数据透视表122的特定单元格处计算和输出DAX值130。为了阐释,参考图4,特定单元格可以是图4的单元格414,上下文可以是“Time[Year]=2008;Product[ProdID]=’789Green’; Customer[CustID]=’Jon200’”,并且在单元格414处输出的DAX的计算出的值可以是“$1,500”。 [0052] 图8是示出接收并处理数据分析表达式的方法800的另一特定实施例的流程图。 在一说明性实施例中,方法800可由图1的系统100或图2的系统200执行。 [0053] 方法800包括在802,在电子表格的数据透视表处接收DAX。DAX包括用电子表格的固有公式语言表达的用户定义的公式(例如,DAX可包括现有电子表格函数并且可包括类似于现有电子表格函数的句法)。例如,在图1中,DAX 104可以在数据透视表122处接收。 [0054] 方法800还包括在804,执行DAX。例如,在图1中,电子表格分析模块126可执行DAX 104。对于数据透视表的特定单元格,执行DAX 104包括在806,确定与该特定单元格相关联的上下文,包括基于特定单元格来过滤至少一个数据表。执行DAX 104还包括在808,基于上下文来计算DAX 104的值,以及在810,在特定单元格处输出计算出的值。例如,在图 1中,可确定上下文,可基于上下文来过滤数据表112(例如,不匹配上下文的行可被临时隐藏或忽略),可检索基于上下文的数据124,并且可以在数据透视表122的特定单元格处计算和输出DAX值130。 [0055] 方法800还包括在812响应于数据透视表处的改变来接收查询,或者在814检测至少一个数据表处的改变。例如,在图1中,可进行数据透视表122的数据透视操作,或者可检测数据表112中的改变。在一说明性实施例中,接收查询(如此处参考图2的逻辑204所描述的),并且检测至少一个数据表处的改变(如此处参考图2的逻辑206所描述的)。 [0056] 方法800包括在816,通过返回到806来自动重新执行DAX 104。例如,在图1中,电子表格分析模块126可自动重新执行DAX 104。在一说明性实施例中,如此处参考图2的命令208和模块220所描述的,执行DAX 104的自动重新执行。 [0057] 图9是示出接收并处理数据分析表达式的方法900的另一特定实施例的流程图。 在一说明性实施例中,方法900可由图1的系统100执行。 [0058] 方法900包括在902接收输入,该输入包括第一电子表格的特定列的列定义。该输入包括基于第一电子表格的至少一列和基于第二电子表格的至少一列的DAX。例如,参考图5,可接收DAX“SUM[Qty]”560作为列550的列定义,其中DAX 560引用图3的销售表 300和图5的库存表500。 [0059] 方法900还包括在904,基于DAX来确定第一电子表格和第二电子表格之间的关系。在一特定实施例中,关系是相关列,索引列或在两个电子表格中具有不同名称的列。例如,可标识图3的销售表300和图5的库存表500之间的关系,诸如将图3的ProdID列340和图5的列520标识为相关列。 [0060] 方法900还包括在906,通过执行DAX来填充特定列。对第一电子表格的特定行执行DAX包括:在908计算DAX的值以及在910在作为特定列和特定行的成员的单元格处输出计算出的值。该值基于第一电子表格的特定行中的第一数据并基于从第二表中检索到的基于同特定行相关联的行上下文的第二数据,来计算。例如,参考图5,单元格552可通过对销售表300中的匹配行上下文“Product[ProdID]=’789Green’”的行进行合计并在单元格552处输出所得值来填充。 [0061] 方法900包括在912接收对第一电子表格的各行的子集的选择,以及在914通过返回到908来自动对所选行子集重新执行DAX。例如,参考图5,可接收对行510中的一个或多个的选择并且可以对所选行重新执行DAX 560。 [0062] 图10描绘了计算环境1000的框图,该计算环境包括可用于支持根据本发明的计算机实现的方法、计算机程序产品和系统组件的实施例的计算设备1010。在一说明性实施例中,计算设备1010可包括图1的数据接口110、图1的存储器114、图1的模块118、126、图2的逻辑204-206或图2的模块220。图1的数据接口110、图1的存储器114、图1的模块118、126、图2的逻辑204-206或图2的模块220中的每一个都可包括计算设备1010或其一部分。 [0063] 计算设备1010包括至少一个处理器1020和系统存储器1030。取决于计算设备的配置和类型,系统存储器1030可以是易失性的(诸如随机存取存储器,即“RAM”)、非易失性的(诸如只读存储器,即“ROM”)、闪存以及即使在未提供电源时也保持已存储数据的类似存储器设备)或两者的某种组合。系统存储器1030通常包括操作系统1032、一个或多个应用平台1034、一个或多个应用(例如,电子表格应用1036),并且可包括与一个或多个应用相关联的程序数据(例如,OLAP多维数据集数据结构1038)。在一说明性实施例中,电子表格应用1036是图2的电子表格应用210,而OLAP多维数据集数据结构1038是图1的OLAP多维数据集数据结构116。在一说明性实施例中,系统存储器1030可以包括此处所公开的一个或多个逻辑组件或模块。例如,系统存储器1030可包括图1的模块118、126、图2的逻辑204-206或图2的模块220中的一个或多个。 [0064] 计算设备1010还可具有附加特征或功能。例如,计算设备1010还可包括可移动和/或不可移动附加数据存储设备,诸如磁盘、光盘、磁带和标准大小的或微型闪存卡。在图10中通过可移动存储1040和不可移动存储1050示出这样的附加存储。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序组件或其他数据的信息的任何方法和/或技术实现的易失性和/或非易失性存储器、可移动和/或不可移动介质。系统存储器1030、可移动存储1040和不可移动存储1050都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、电可擦除可编程只读存储器(EEPROM)、闪存或其它存储器技术、紧致盘(CD)、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储信息且可以由计算设备1010访问的任何其它介质。任何这样的计算机存储介质都可以是计算设备1010的一部分。计算设备1010也可包括输入设备1060,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。也可包括输出设备1070,如显示器、扬声器、打印机等等。 [0065] 计算设备1010还包含允许该计算设备1010通过有线或无线网络与其它计算设备 1090进行通信的一个或多个通信连接1080。在一说明性实施例中,通信连接1080包括图1的数据接口110,并且图1的数据102是从诸如共享网络存储设备等其他计算设备1090处接收到的。 [0066] 可以理解,并非所有图10所示或以其他方式在先前的附图中描述的组件或设备都必须支持此处所描述的实施例。例如,输入设备1060和输出设备1070可以是任选的。 [0067] 这里所描述的实施例的说明旨在提供对各实施例的结构的一般理解。说明不旨在作为利用这里所描述的结构或方法的装置和系统的所有元素和特征的完整描述。许多其他实施例对本领域的技术人员在审阅本发明后是显而易见的。也可以利用其他实施例,并从本发明派生出其他实施例,以便可以在不偏离本发明的范围的情况下作出结构和逻辑上的替换和改变。相应地,本发明和附图应被视为说明性的,而不是限制性的。 [0068] 本领域技术人员将进一步理解,结合这里所公开的实施例所描述的各种说明性逻辑块、配置、模块、以及进程或指令步骤,可以作为电子硬件、计算机软件或两者的组合来实现。各种说明性组件、框、配置、模块或步骤已经大致按照其功能来描述。此类功能性是被实现为硬件还是软件取决于具体应用和加诸于整体系统的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能集,但此类实现决策不应被解释为致使脱离本公开的范围。 [0069] 结合此处所公开的各实施例所描述的方法的各个步骤可直接用硬件、由处理器执行的软件模块、或两者的组合来实现。软件模块可驻留在诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、寄存器、硬盘、可移动盘、CD-ROM、或本领域内已知的任何其他形式的存储介质等计算机可读介质中。示例性的存储介质耦合到处理器,使得处理器可从存储介质上读取信息,并向存储介质写入信息。在替换方案中,存储介质可集成到处理器或处理器并且存储介质可作为分立组件驻留在计算设备或计算机系统中。 [0070] 虽然这里显示和描述了具体的实施例,但是,应该了解,被设计为实现相同或类似的目的的任何随后的安排都可以代替所示出的具体实施例。本说明书计划涵盖各种实施例的任何随后的修改或变化。 [0071] 提交本发明的摘要的同时要明白,将不用它来解释或限制权利要求的范围或含义。此外,在前面的具体实施例中,出于将本公开连成一个整体的目的,各种特征可以组合到一起,或在一个实施例中进行描述。本发明不应被解释为反映带权利要求的实施例需要比每一个权利要求中明确地记载的特征更多的特点的意图。相反,如下面的权利要求所反映的,本发明的主题可以涉及少于所公开的实施例中的任一个的所有特征。 [0072] 提供前面对各实施例的描述是为了使本领域技术人员能制作或使用各实施例。对这些实施例的各种修改对于本领域技术人员将是显而易见的,并且本文中定义的普适原理可被应用于其他实施例而不会脱离本公开的范围。因此,本发明并不旨在限于此处所示出的各实施例,而是按照与所附权利要求书所定义的原理和新颖特征相一致的尽可能最宽的范围。