从各个网格单元将数据写回数据提供者的制作方法

文档序号:6435433阅读:206来源:国知局
专利名称:从各个网格单元将数据写回数据提供者的制作方法
技术领域
本发明涉及计算机应用,尤其涉及数据写回技术。
背景技术
公司实体、大学、公共部门组织、研究设施等中的信息工作者普遍使用诸如带有对称数据结构(诸如数据透视表(用于数据可视化的数据概括工具))的电子表格等数据网格以及OLAP (在线分析处理)立方体函数用于业务过程分析和决策支持。存在许多这样的情况业务模型中所使用的数据值必需由知道数据的被授权用户手动地输入,否则该数据值不能用于任何自动化的数据源。例如,可能不存在跟踪覆盖各国特定月份中的游戏系统游戏的媒体文章的数据源。不是在电子表格中所创建的所有业务模块都符合数据透视表的固定表格式结构。 许多用户使用数据检索函数(例如,内置OLAP电子表格函数)来创建非对称视图和布局。 数据写回功能启用多个高度期望的业务情形来更新所存储的并且从数据分析服务中检索到的表格数据。许多真实世界写回情形和单元值更新要求对没有被组织成数据透视表的各个单元更新的支持。由此,期望具有可从任何数据网格单元执行的数据写回的机制。

发明内容
下面提供了简化的概述,以便提供对此处所描述的一些新颖实施例的基本理解。 本概述不是详尽的概述,并且它不旨在标识关键/重要元素或描绘本发明的范围。其唯一的目的是以简化形式呈现一些概念,作为稍后呈现的更详细描述的序言。所公开的体系结构提供将数据从具有非对称单元布局的电子表格中写回至 OLAP(在线分析处理)数据提供者的能力。更具体地,该体系结构找出将数据写回处理 UPDATE CUBE (更新立方体)语句的OLAP提供者的适用性。更具体地,在数据网格的第一单元中提供用于从立方体来访问的数据的坐标。在第二单元,用户提供期望发回该立方体的值以及对第一单元中所提供的坐标的引用。计算被触发以确定在第一单元中所提供的坐标处的值与在第二单元中用户所提供的值是否存在不同。如果存在不同,则使用与第一单元相关联的函数的属性并且构造UPDATE CUBE (更新立方体)语句。该算法创建发回用户所提供的值所必需的代码。通过将来自能够包含存有坐标的属性的第一网格单元的引用中的后端数据存储中的原始数据值位置的坐标与第二单元中新数据值集相结合来构造更新语句。在更具体的实现中,通过利用带有OLAP函数的电子表格单元的MDX(多维表达式) 属性、用户数据输入单元和对应的更新触发单元解决了该问题,该对应的更新触发单元包含“触发”函数(例如,用户定义的函数(UDF)),该“触发”函数可执行实时更新或评估来更新触发单元值以便与后续故意的用户动作一起工作来提交更新的值。如本文更详细地描述的,触发函数(例如,UDF)可以(任选地)被参数化以支持分配规则(例如,被OLAP立方体支持)。
为了为实现上述及相关目的,本文结合下面的描述和附图来描述某些说明性方面。这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。结合附图阅读下面的详细描述,其他优点和新颖特征将变得显而易见。


图1示出了根据所公开的体系结构的计算机实现的写回系统。图2示出了根据所公开的体系结构的采用写回的一般系统。图3示出了根据所公开的体系结构的计算机实现的写回方法。图4示出了图3的方法的其他方面。图5示出了根据所公开的体系结构的执行写回的计算系统的框图。
具体实施例方式所公开的体系结构提供将数据从具有非对称单元布局的电子表格中写回至 OLAP(在线分析处理)数据提供者的能力。更具体地,该体系结构找出将数据写回处理 UPDATE CUBE (更新立方体)语句的OLAP提供者的适用性。支持UPDATE CUBE (更新立方体)语句的OLAP数据源可被配置成接受用户输入并且被用于将数据从对称数据结构(例如,数据透视表)中写回。由此,所公开的体系结构克服了对要有诸如数据透视表等对称结构来启用可更新的数据写回的需要。数据结构利用带有OLAP函数的电子表格单元、用户数据输入单元、以及对应的更新触发单元的属性,该更新触发单元包含可执行实时更新或评估来更新触发单元数据值的函数/UDF(用户定义的函数),以便与后续故意的用户动作一起工作来提交更新的值。触发函数可被参数化以支持OLAP立方体所支持的值分配规则。现在将参考附图,全部附图中相同的附图标记用于表示相同的元件。在下面的描述中,为了进行说明,阐述了很多具体细节以便提供对本发明的全面理解。然而,显而易见, 可以没有这些具体细节的情况下实施各新颖实施例。在其它情况下,以框图形式示出了公知的结构和设备以便于描述它们。本发明将涵盖落入所要求保护的主题的精神和范围内的所有修改、等效方案和替换方案。图1示出了根据所公开的体系结构的计算机实现的写回系统100。系统100包括具有与函数106 (例如,立方体值函数)相关联的第一单元104 (许多单元中之一)。函数 106从后端数据存储112(例如,相关联的)的数据位置110检索数据值108,并且将数据值 108插入第一单元104。系统100还包括写回组件114,该写回组件114利用写回函数116 来将第二单元120(手写数据输入单元)的新数据值118写回数据存储112中的数据位置 108。写回组件114从第一单元104获取包含数据位置110的坐标的属性,并且另选地,写回组件114从第二单元120获取新数据值118。写回组件114随后将语句(例如,UPDATE CUBE (更新立方体)语句)写回提供者(后端数据存储11 以供将新数据值118写回数据位置110。尽管被示为在数据网格102以外,但写回函数116可与数据网格102的第三单元 122内部地相关联。第一单元104与包含从中检索数据值108的数据位置110的坐标的属性(包含定义语句)相关联。新数据值118与数据输入单元120相关联,并且写回是响应于第一单元 104中的数据值108与第二单元120中的新数据值118不同而被触发的。如先前指示的,写回组件114与数据输入单元120以及触发单元122相关联。触发单元122可具有相关联的用户定义的函数,作为构造、确认并且在计算期间执行更新语句的写回函数116。或者、或与之组合,写回组件114与数据输入单元120和触发单元122相关联。触发单元122具有相关联的用户定义的函数,作为构造、确认并且返回更新触发指示的写回函数116。写回组件114利用写回函数116来将与第一单元104相关联的属性的坐标以及手动输入数据单元120的新数据值118变换成向数据存储112发送的供新数据值118的写回的语句。该语句可以是与数据存储112兼容的UPDATE CUBE (更新立方体)语句,数据存储112可以是OLAP(在线分析处理)数据存储。数据网格102可以是电子表格。换言之,写回系统包括具有维护单元支持函数中数据值的坐标的第一单元的数据网格、以及写回组件,该支持函数从坐标所定义的数据存储的数据位置检索数据值并且更新第一单元的数据值属性,该写回组件利用写回函数来将新数据值从数据输入单元写回数据存储中的数据位置,该写回是响应于新数据值不同于该数据值而被实时触发的。写回组件利用写回函数来将与第一单元相关联的属性的坐标以及数据输入单元的新数据值变换成向数据存储发送的供新数据值的写回的语句。写回组件与数据输入单元以及作为构造、确认并且在计算期间执行更新语句的写回函数的用户定义的函数相关联。 写回组件与数据输入单元以及作为构造、确认并且返回更新触发指示的写回函数的用户定义的函数相关联。写回组件采用可任选地包括作为参数的分配规则的函数。图2示出了根据所公开的体系结构的采用写回的一般系统200。系统200包括数据网格102、数据分析立方体202以及后端数据存储122(例如相关联的),该数据网格可以是电子表格文件(也被称为工作簿)。数据网格102可以是单元可与适用于访问立方体202 中的数据值的立方体函数相关联的非对称结构。数据网格102还可包括数据输入单元、包含触发函数的单元、以及UDF来构造立方体语句。立方体202是能够支持更新语句(例如, UPDATE CUBE(更新立方体)语句)的OLAP数据源。立方体202可以是在单元级受保护的立方体。现在可更详细地描述这些和其他细节。在使用电子表格的常规实现中,用户输入等号(“=”)并且利用立方体值函数。 第一参数可以是指向OLAP数据提供者的实例的连接参数。该句法以逗号继续,之后是启用特定数据值的检索的维度列表。例如,可作出对2010年5月美国的销售的请求。一旦闭括号被输入,则值被接收到指示该时间段的销售量的单元。使用在以上步骤上建立的所公开的体系结构,除了第一存在的单元(立体值函数单元)以外,用户还创建并且利用第二单元(手动数据输入单元)。位于相同电子表格文件(通常也被称为工作簿)中的第二单元不需要但可以与第一单元相邻。用户可将用户感兴趣的任何期望的新数据值输入到数据输入单元。在第三单元(触发单元)中,用户创建公式,该公式参考第一单元(带有立方体值函数)并且检索两个项并提供对两个项的访问。 一个所检索的项是从后端数据存储进入电子表格的原始值,在这一示例中为2010年5月的销售量。第二所检索的项是通过程序暴露的MDX属性,该MDX属性担当后端数据存储中的值的坐标,先前被定义成立方体函数中该数据源的第一参数。属性包含这些维度。
该函数中的第二参数是用户(在数据输入单元中)已输入的值。内部上,函数(也被称为触发函数)评估两个值(即立方体值函数中的值与用户所输入的值)是否不同或相同。如果不同,则触发函数自动地启动更新过程。如果没有不同,则什么都不发生。与这一触发函数相关联的单元被称为写回触发单元。更新过程可取决于实现者想要做的事情而变化。例如,更新过程可以是后端数据存储中的实时更新,或该过程可以是对UDF将放入该单元作为该单元的值的指令(也是处理指示)。在这两种情况下,该过程都可被称为对更新后端数据存储的触发。更具体地,从立方体访问的数据的坐标是从一个单元中提供的。在第二单元中,用户提供期望被输入回到立方体的值。随后进行确定是否发生了改变的计算。如果存在改变, 则使用立方体值函数(支持函数)的属性。UPDATE CUBE(更新立方体)语句随后被生成, 以便进一步创建发回用户所提供的值所必须的算法和代码。更具体地,这是引用能够包含后端数据存储中数据值的坐标的单元的更新语句。包含OLAP函数(例如,CUBEMEMBER (立方成员)、CUBEVALUE (立方体值)、 CUBERANKEDMEMBER (立方体排序的成员)等)(并且没有评估成错误)的单元具有可通过程序访问的属性,该属性包含电子表格确认的MDX(多维表达)语句,计算引擎使用该语句来将数据从OLAP数据源拉到该单元。所返回的属性不是完整的SELECT(选择)语句,但可以是看上去类似于以下的元组表达(或定义)([Geography]. [Geography Hierarchy] · &[United States], [Time]. [Time]. [Fiscal Month]·&[July],[KPI]· [Scorecards]· [KPI] ·&[1]&[101],[Measures]· [Actual])当使用MDX(多维表达)时,利用这一属性值以供写回情形,因为用于数据检索的同一单元的MDX语句也可用于数据写回而无需任何修改。注意到,尽管数据检索不要求用户将所有立方体维度包括在函数中以供检索数据,但所有维度被用于数据写回。例如,分层结构(Geography Hierarchy (地理分层结构))和平面维度(GeographySecurityManual ( 理安全手动))可用于动态维度安全。尽管将维度Geograph於ecurityManual包括在 CUBEVALUE函数中以供数据检索不是必须的,因为该维度拉取相同的值作为地理分层结构 (标识符是相同的),但维度被包括在UPDATE CUBE(更新立方体)语句中,以避免由跨所排除的维度的所有成员的写回值的OLAP引擎的可能默认分配。关于创建数据写回的基本UDF,单个OLAP立方体单元的简单的更新立方体语句看上去可与以下类似
UPDATE CUBE [ManualCube] SET (.[Geography Hierarchy].&[United States], [Time]. [Time]. [Fiscal Month] .&[ July],[KPI] .[Scorecards]. [KPI] .&[1]&[101], [Measures]. [Actual] )=1000;可在写回触发单元中使用UDF来构造、确认、以及或是在计算期间执行更新语句或是返回更新触发指示。展示该概念的OLAP写回UDF的最简单的设置可仅具有两个参数,并且返回UPDATE CUBE (更新立方体)语句的成功或失败。该参数包括对包含CUBEVALUE (立方体值)函数的源单元的引用以及对手动数据输入单元的引用(例如=CubeffriteBack(H20,E20))oUDF后的代码检查MDX属性在所引用的源单元(在上面的示例中为H20)中的存在,确认手动输入单元(在该示例中为E20)不为空,评估两个所引用的单元的值的等同性, 以及如果值不相等则构造并且执行UPDATE CUBE (更新立方体)语句。此时将不进行永久更新(例如,直到之后是在相同用户会话中所执行的COMMIT TRANSACTION(提交交易)语句)。UDF获取与所尝试的更新的结果有关的OLAP数据源响应。这一响应在UDF代码中被评估并且结果被放在触发单元中,以向用户通知单元值更新操作的成功或失败。基于触发单元的写回的替换技术是通过创建批量执行更新语句的基于指示的 OLAP数据源写回UDF。为支持批量更新情形,UDF不在计算期间执行更新语句,而是评估可针对由另一过程所使用的指示。该指示包含指示批量更新过程使用包含在触发单元中的信息以在通过程序建立更新语句的指令。一旦用户完成了作出手动数据输入并且决定提交该数据,就可向用户提供请求批量更新过程的用户界面(UI)选项。基于指示的OLAP写回UDF利用两个单元引用作为参数,但是写回指示被返回,而不是在单元计算期间发放更新语句。两个引用包括对包含CUBEVALUE函数的源单元的引用以及对手动数据输入单元的引用。“在触发单元指示中”版本的写回函数=CubeffriteBack(H20, E20)可返回表示处理指示的以下值#"UPDATE I MDXRetention ! $H$20 | MDXRetention ! $E$20,,·这是包含三部分的管道定界指示。指示的第一部分=UPDATE (更新),指示批量更新过程发放UPDATE CUBE (更新立方体)语句。第二部分包含担当MDX语句的源的单元引用。第三部分是包含数据源中用户想要更新的新值的单元引用。#"No Update from =MDXRetention ! $H$20 (MDXRetention ! $H$20 中没有更新)”其中单元H20是带有立方体函数的单元,MDX属性及其单元值等于用户输入单元值 (在该示例中为E20)。 如果手动输入单元E20为空或存有某一其他非数字值,则可返回“Input Range is Not Numeric !(输入范围不是数字!)”。 如果单元H20不具有有效的MDX属性,则可返回“Value Range doesn ‘ t contain valid MDX !(值范围不包含有效MDX !) ”。在除第一种情况以外的所有情况下,批量更新过程不将触发单元包括在更新语句建立过程中。
以下是返回指示的触发单元UDF的样本代码 CubeffriteBack User-Defined Function (立方体写回用户定义函数)Function CubeffriteBack(valTestRange As Variant, inputRange As Variant) As StringDim InputCell As RangeDim ValueCell As Range‘测试有效数据范围输入On Error GoTo ICellRangeErrorHandlerSet InputCell = inputRange‘测试有效测试值范围输入On Error GoTo VCe11RangeErrorHandlerSet ValueCell = valTestRange‘范围无效‘需要确认在OLAP立方体更新语句中所使用的测试值单元中的MDXOn Error GoTo ErrorHandler‘确认两个范围都仅包含一个单元
IflnputCell.Cells.Count〉1 Then
CubeWriteBack = "Input Range contains multiple cells!(输入范围
包含多个单元!)“
Exit Function End If
IfValueCell.Cells.Count> 1 Then
CubeWriteBack 二 "Value Range contains multiple cells!(输入范围
包含多个单元!)“
Exit Function End If‘确认用户输入为数字IfNot (IsNumeric(InputCell.Value)) Or _ IsEmpty(InputCell) Then
CubeWriteBack = "Input Range is Not Numeric!(输入范围不是数

Exit Function End If
确认在值测试范围中MDX的存在
IfLen(ValueCell.MDX) 二 0 Then
CubeWriteBack = "Value Range doesn't contain valid MDX!(值范围不包含有效MDX!) ’’ Exit Function End If‘ TODO :为性能首先移动此?评估!
IfInputCell = ValueCell Then
CubeWriteBack = "No Update from: “ & InputCell.Worksheet.Name & "!" & InputCell.Address Else
TODO这里建立更新语句? ‘修改8/4/09以防止可能返回的MDX攻击
CubeWriteBack = "UPDATEf & InputCell.Worksheet.Name & "!“ & InputCell.Address & & _
ValueCell.Worksheet.Name & "!“ & ValueCell.Address ’&
& InputCell.Value
'ValueCelLMDX & “丨“& InputCell.Value & “丨“& AllocRule TODO这里处理更新 End If
Exit Function丨错误处理程序ICellRangeErrorHandler:
CubeWriteBack = inputRange & “ is not a valid range!(不是有效范围!)
Exit Function VCellRangeErrorHandler:
CubeWriteBack = valTestRange & “ is not a valid range!(不是有效范
围!)“
Exit Function ErrorHandler:
CubeWriteBack = "#N/A" End Function 基于指示的更新语句可通过在每一工作簿的表上所使用的范围中扫描所有单元来构造。如果该过程发现单元包含CubefeiteBack(单元写回)函数,则该过程检查单元值是否包含更新指示并且建立累积更新语句。以下是样本代码片段
氺‘建立更新语句的函数
氺氺氺
Function GetAllUpdate Statements() As StringDim strMDX As String Dim rangeAddress As String Dim rangeWithUpdate As Range Dim wks As Worksheet Dim cubeName As String
For Each wks In This Workbook. Worksheets
Set rangeWithUpdate = GetRangeForUpdate(wks)
IfNot rangeWithUpdate Is Nothing Then
rangeAddress = range WithUpdate.Address
strMDX = strMDX & ConstructUpdates(rangeWithUpdate)
End If
Next 如果不存在要发送的更新语句,则中止更新
IfLen(strMDX) = 0 Then Exit Function cubeName = Range("CUBE_NAME")
GetAllUpdateStatements = "UPDATE CUBE [M & cubeName & ··] SET " GetAllUpdateStatements = GetAllUpdateStatements & strMDX
’执行清除
If Right(GetAllUpdateStatements, 3) = "," & vbCr & vbCr Then
GetAllUpdateStatements = Left(GetAllUpdateStatements,Len(GetAllUpdateStatements) - 3) & ";·· End If
End Function
氺氺氺‘用于检索包含OLAP更新的值的单元范围的函数
氺氺氺Function GetRangeForUpdate(wks As Worksheet)As RangeDim rangeffithCWBFunc As RangeDim rCell As RangeDim i As Integer‘迭代通过每一单元以获得包含CWBOLAP更新函数的所有单元的列表fech rCellIn wks. UsedRange. Cells‘收集包含UDF的所有单元
IfInStr(rCell.Formula, "CubeWriteBack") > 0 Then
Testing to see if the range contains UPDATE directive If Not Left(rCell.Value, 7) = ’’UPDATE|" Then GoTo
SkipRange‘添加到要更新的收集单元
IfNot rangeWithC WBFunc Is Nothing ThenSetrangeWithCWBFunc
Application.Union(rangeWithCWBFunc, rCell)
Else
Set rangeWithCWBFunc = rCell End If
End If
SkipRange:
Next
‘返回范围
Set GetRangeForUpdate 二 rangeWithCWBFunc End Function氺氺氺氺氺氺氺氺氺氺氺氺‘用于构造更新语句串的函数氺氺氺氺氺氺氺氺氺氺氺氺Function ConstUpctUpdates(updateRange As Range)Dim rCell As RangeDim updateStatement As StringDim params () As StringFor Each rCell In updateRange‘使用GetUpdateMatement(获得更新语句)来拆分和处理‘在这里添加提交交易?params = Split(rCell.Value,
updateStatement=update Statement&
GetUpdateStatement(Range(params( 1)), Range(params(2))) & & vbCr & vbCr
Next
ConstructUpdates = updateStatement End Function‘用于建立个别OLAP更新语句的函数Function GetUpdateStatement(valueRange As Range, mdxRange As Range)As StringGetUpdateStatement = mdxRange. MDX‘修改12/18/09以解决非美国地点的十进制分隔符丨valueRange(值范围)已被UDF确认为数字,因此对逗号的直线替换是有效的GetUpdateStatement= GetUpdateStatement& “ =〃 &R印lace (valueRange. Value,〃,〃,"."、End Function....用于更新两个单元中所输入的值的所得语句可能看上去与以下类似(注意到个别的值更新片段被逗号分开)UPDATE CUBE[ManualCube]SET([Geography]. [Geography Hierarchy] ·&[United States], [Time]. [Time]. [FiscalMonth]·&[July],[Measures]· [Actual],[KPI] · [KPI Name]·&[1]&[101]) =9280,([Geography]. [Geography Hierarchy]·&[779], [Measures]. [Actual], [KPI]. [KPIName]·&[1]&[101],[Time], [Time], [Fiscal Month].&[July]) = 9681 ;UPDATE CUBE(更新立方体)语句支持分配准则。最终用户将分配准则参数包括在 UDF中。支持分配准则的UDF可引用将包含分配准则的串的命名范围。例如= CubeffriteBack (Jl 102, El 102,USE_EQUAL_ALL0CAT I ON),其中,USE_EQUAL_ALL0CATI0N是包含串 USE_EQUAL_ALL0CATI0N 的命名范围。命名范围引用能够支持更复杂(非恒定)的分配准则,诸如USE_WEIGHTED_ALL0CATI0N BY...以及USE WEIGHTED INCREMENT BY...,其中复杂分配准则可在单个单元被定义一次,并且可通过引用该单元来在许多数据写回触发单元中使用。来自以上示例的带有简单相等的分配准则的所得更新语句可看上去与以下类似.[Time].[Fiscal Quarter].&[Q 1-2011], [KPI]. [Scorecards]. [KPI] &[1]&[101], [Measures]. [Actual] )=8228 USE—EQUAL—ALLOCATION;当采用基于触发单元的写回方法时,用于数据检索的相同语句(例如MDX)还用于数据写回,从而使得数据网格(例如电子表格)设置更简单并且由此更不易出错。另外地,除了支持自由形式网格布局(非对称)以外,基于单元级的OLAP写回方法还允许网格的作者构造复杂语句以供高级数据检索和写回情形。例如,对于特定度量的数据不必卷起到下一分层结构级的情形,用户可构造CUBEVALUE函数来直接写回到.DATAMEMBER(数据成员)。在若干情况下,用户可输入不卷起到其他分层结构成员的任意百分比目标。通过将以下CUBEVALUE函数输入到源单元来容易地使用这一情形= CUBEVALUE (ConnectionFile, “ [Geography], [Geography Hierarchy]·&[“ &GeoID& 〃 ]· DATAMEMBER〃,“ [GeographySecurityFlatFile]. [Geo graphy Security FlatFile]·&[“ &GeoID&〃 ] 〃, E$9, $C 11, Time, Currency, Forecast, DS, Customer)这一单元的MDX数据可看上去与以下类似([Geography], [Geography Hierarchy] ·&[United States].DATAMEMBER, [Measures]. [Actual], [KPI], [KPI Name] ·&[1]&[10 1 ], [Time]· [Time]· [FiscalMonth]· &[July])更新语句直接针对该分层结构成员来写该单元值。所公开的写回方法还允许用单元引用来对布局更强大的控制。业务用户可具有对手动数据输入表的专用引用,这使用单元引用是容易实现的。带有用另一单元中的等号 (“=”)来引用的CUBE(立方体)函数的任何单元继承父单元的属性。作为一般概述,CUBE函数结合触发单元UDF以及支持UPDATE CUBE (更新立方体) 语句的OLAP数据源可使得带有复杂公式驱动的业务规则的电子表格成为具有实时协作的数据输入工具。高级情形包括分配、写或修改分层结构的特定成员的值等。如果用户可以写MDX语句,则触发单元UDF允许用户将该语句写回数据源并使其对该数据源的所有用户实时可用。此处所包括的是一组代表用于执行所公开的体系结构的新颖方面的示例性方法的流程图。尽管出于解释简明的目的,此处例如以流图或流程图形式示出的一个或多个方
16法被示出并描述为一系列动作,但是可以理解和明白,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其它动作同时发生。例如,本领域技术人员将会明白并理解,方法可被替换地表示为一系列相互关联的状态或事件,诸如以状态图的形式。此外,并非在方法中示出的所有动作都是新颖实现所必需的。图3示出了根据所公开的体系结构的计算机实现写回方法。在300处,接收数据网格的第一单元,所述第一单元具有数据值。在302处,在从中检索该数据值的数据存储中与第一单元相关联地维护数据位置的坐标。在304处,将新数据值插入第二单元。在306 处,检查该数据值与新数据值的不同。在308处,响应于所检测的不同,自动地执行将新数据值写回数据位置。图4示出了图3的方法的其他方面。注意,该箭头标向指示每一个框表示可被单独地或与其他框组合地且作为图3的流程图所表示的方法的附加方面来包括的步骤。在 400处,使用UPDATE CUBE(更新立方体)语句来执行到数据立方体的写回。在402处,使用写回函数来执行新数据值到数据位置的写回,该写回函数至少将坐标以及新数据值作为输入。在404处,使用与数据存储兼容的语句来执行写回,该数据存储是OLAP数据存储。在 406处,用户定义的函数与构造、确认并在计算过程期间执行更新语句的第二单元相关联。 在408处,用户定义的函数与构造、确认并返回写回指示的第二单元相关联。在410处,结合更新语句来提交交易。如在本申请中所使用的,术语“组件”和“系统”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于,诸如处理器、芯片存储器、大容量存储设备(例如,光驱、固态驱动器、和/或磁存储介质驱动器)、以及计算机等有形组件,以及诸如运行在处理器上的进程、对象、可执行码、(存储在易失性或非易失性存储介质上的)数据结构、模块、执行的线程和/或程序等软件组件。作为说明,在服务器上运行的应用程序和该服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或更多的计算机之间。词语“示例性”此处可用于表示用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。现在参考图5,示出了执行根据所公开的体系结构的写回的计算系统500的框图。 为了提供用于其各方面的附加上下文,图5及以下讨论旨在提供对其中可实现各方面的合适的计算系统500的简要概括描述。尽管以上描述是在可在一个或多个计算机上运行的计算机可执行指令的一般上下文中进行的,但是本领域的技术人员将认识到,新颖实施例也可结合其它程序模块和/或作为硬件和软件的组合来实现。用于实现各方面的计算系统500包括计算机502,其具有处理单元504、诸如系统存储器506等的计算机可读存储、以及系统总线508。处理单元504可以是各种市场上可买到的处理器中的任一种,诸如单处理器、多处理器、单核单元以及多核单元等。此外,本领域的技术人员将明白,各新颖方法可用其它计算机系统配置来实施,包括小型计算机、大型计算机、以及个人计算机(例如、台式、膝上型等)、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可在操作上耦合到一个或多个相关联的设备。系统存储器506可包括计算机可读存储(物理存储介质),如易失性(VOL)存储器510(例如,随机存取存储器(RAM))和非易失性存储器(NON-VOL) 512(如ROM、EPR0M、 EEPROM等)。基本输入/输出系统¢10 可以被存储在非易失性存储器512中,并且包括诸如在启动期间便于在计算机502内的组件之间传递数据和信号的基本例程。易失性存储器510还可以包括诸如静态RAM等高速RAM来用于高速缓存数据。系统总线508提供了用于包括,但不限于系统存储器506的系统组件对处理单元 504的接口。系统总线508可以是若干种总线结构中的任一种,这些总线结构还可使用各类可购买到的总线体系结构中的任一种互连到存储器总线(带有或没有存储器控制器)以及外围总线(例如,PCI, PCIe, AGP, LPC等)。计算机502还包括用于机器可读存储子系统514以及将存储子系统514接口到系统总线508和其他所需计算机组件的存储接口 516。存储子系统514(物理存储介质)可包括例如硬盘驱动器(HDD)、磁软盘驱动器(FDD)和/或光盘存储驱动器(例如,CD-ROM驱动器、DVD驱动器)中的一种或多种。存储接口 516可以包括诸如,例如EIDE、ATA、SATA和 IEEE 1394等接口技术。一个或多个程序和数据可被存储在存储器子系统506、机器可读和可移动存储器子系统518(例如,闪存驱动器形状因子技术)和/或存储子系统514(例如,光、磁、固态) 中,包括操作系统520、一个或多个应用程序522、其他程序模块524以及程序数据526。一个或多个应用程序522、其他程序模块5 以及程序数据5 可包括例如图1的系统100的实体和组件、图2的系统200的实体和组件以及图3和图4的流程图所表示的方法。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、方法、数据结构、其它软件组件等。操作系统520、应用程序522、模块5M和/或数据526的全部或部分也可以被高速缓存在诸如易失性存储器510等存储器中。应当明白,所公开的体系结构可以用各种市场上可购得的操作系统或操作系统的组合(例如,作为虚拟机)来实现。存储子系统514和存储器子系统(506和518)用作用于数据、数据结构、计算机可执行指令等的易失性和非易失性存储的计算机可读介质。这些指令当由计算机或其他机器执行时,可使得计算机或其他机器执行方法的一个或多个动作。执行动作的指令可被存储在一个介质上,或者可跨多个介质存储,使得指令共同出现在一个或多个计算机可读存储介质上,而不管所有指令是否都在同一介质上。计算机可读介质可以是可由计算机502访问的任何可用介质,且包括易失性和非易失性、可移动和不可移动的内部和/或外部介质。对于计算机502,介质容纳适当的数字格式的数据的存储。本领域的技术人员应当理解,可使用其他类型的计算机可读介质,如 zip驱动器、磁带、闪存卡、闪存驱动器、磁带盒等来存储用于执行所公开的体系结构的新颖方法的计算机可执行指令。用户可以使用诸如键盘和鼠标等外部用户输入设备5 来与计算机502、程序和数据交互。其它外部用户输入设备5 可以包括话筒、IR(红外)遥控器、操纵杆、游戏手柄、照相机识别系统、指示笔、触摸屏、姿势系统(例如,眼移动、头移动等)和/或类似物。 在计算机502是例如便携式计算机的情况下,用户可以使用诸如触摸垫、话筒、键盘等板载用户输入设备530来与计算机502、程序和数据交互。这些和其他输入设备通过输入/输出 (I/O)设备接口 532经由系统总线508连接到处理单元504,但也可通过其他接口连接,如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口、近程无线(例如,蓝牙)以及其他个人区域网(PAN)技术等等。I/O设备接口 532还便于使用输出外围设备534,诸如打印机、音频设备、照相机设备等,诸如声卡和/或板载音频处理能力。一个或多个图形接口 536(通常也称为图形处理单元(GPU))提供计算机502和外部显示器538(例如,LCD、等离子)和/或板载显示器MO (例如,对于便携式计算机)之间的图形和视频信号。图形接口 536也可作为计算机系统板的一部分来制造。计算机502可以使用经由有线/无线通信子系统542到一个或多个网络和/或其他计算机的逻辑连接在联网环境(例如,基于IP的)中操作。其他计算机可包括工作站、 服务器、路由器、个人计算机、基于微处理器的娱乐设备、对等设备或其他常见的网络节点, 并且通常包括以上相对于计算机502描述的许多或所有元件。逻辑连接可以包括到局域网 (LAN)、广域网(WAN)、热点等的有线/无线连接。LAN和WAN联网环境常见于办公室和公司, 并且方便了诸如内联网等企业范围计算机网络,所有这些都可连接到诸如因特网等全球通信网络。当在联网环境中使用时,计算机502经由有线/无线通信子系统542 (例如,网络接口适配器、板载收发机子系统等)连接到网络来与有线/无线网络、有线/无线打印机、 有线/无线输入设备544等通信。计算机502可包括用于通过网络建立通信的调制解调器或其他装置。在联网环境中,相对于计算机502的程序和数据可以被存储在远程存储器/ 存储设备中,如与分布式系统相关联。应当明白,所示网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其它手段。计算机502可以用于使用诸如IEEE 802. xx标准家族等无线电技术来与有线/ 无线设备或实体通信,例如在操作上安置在与例如打印机、扫描仪、台式和/或便携式计算机、个人数字助理(PDA)、通信卫星、任何一件与无线可检测标签相关联的设备或位置(例如,电话亭、报亭、休息室)以及电话的无线通信(例如,IEEE 802. 11空中调制技术)中的无线设备。这至少包括用于热点的Wi-Fi (即无线保真)、WiMax和蓝牙TM无线技术。由此,通信可以是如对于常规网络那样的预定义结构,或者仅仅是至少两个设备之间的自组织(adhoc)通信。Wi-Fi网络使用称为IEEE 802. llx(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将计算机彼此连接、连接到因特网以及连接到有线网络(使用IEEE 802. 3相关介质和功能)。所示和所描述的各方面可以在其中某些任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和/或远程存储器和/或存储设备中。以上描述的包括所公开的体系结构的各示例。当然,描述每一个可以想到的组件和/或方法的组合是不可能的,但本领域内的普通技术人员可以认识到,许多其它组合和排列都是可能的。因此,该新颖体系结构旨在涵盖所有这些落入所附权利要求书的精神和范围内的更改、修改和变化。此外,就在详细描述或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡词时所解释的相似的方式为包含性的。
权利要求
1.一种计算机实现的写回系统(100),具有存储由处理器执行的可执行指令的计算机可读介质,所述系统包括具有与函数相关联的第一单元的数据网格(102),所述函数从后端数据存储中检索数据值,并且将所述数据值插入所述第一单元;以及利用写回函数来将新数据值写回所述数据存储中的数据位置的写回组件(114)。
2.如权利要求1所述的系统,其特征在于,所述第一单元与包含从中检索所述数据值的数据位置的坐标的属性相关联。
3.如权利要求1所述的系统,其特征在于,所述新数据值与数据输入单元相关联,并且写回是响应于所述第一单元中的数据值不同于所述数据输入单元中的新数据值而被触发的。
4.如权利要求3所述的系统,其特征在于,所述写回组件与所述数据输入单元和触发单元相关联,所述触发单元与用户定义的函数相关联,该用户定义的函数作为构造、确认并在计算期间执行更新语句的所述写回函数。
5.如权利要求3所述的系统,其特征在于,所述写回组件与所述数据输入单元和触发单元相关联,所述触发单元与用户定义的函数相关联,该用户定义的函数作为构造、确认并返回更新触发指示的所述写回函数。
6.如权利要求1所述的系统,其特征在于,所述写回组件利用所述写回函数来将与所述第一单元相关联的属性的坐标和手动数据输入单元的新数据值变换成向所述数据存储发送的供对所述新数据值的写回的语句。
7.如权利要求6所述的系统,其特征在于,所述语句是更新立方体语句,所述更新立方体语句与所述数据存储兼容,所述数据存储是OLAP (在线分析处理)数据存储。
8.如权利要求6所述的系统,其特征在于,所述数据网格是电子表格。
9.一种由处理器执行的计算机实现的写回方法,包括接收数据网格的第一单元,所述第一单元具有数据值(300);在从中检索所述数据值的数据存储中与所述第一单元相关联地维护数据位置的坐标 (302);将新数据值插入第二单元(304);检查所述数据值和所述新数据值之间的不同(306);以及响应于所检测的不同,自动地执行将所述新数据值写回所述数据位置(308)。
10.如权利要求9所述的方法,其特征在于,还包括使用更新立方体语句来执行到数据立方体的写回。
11.如权利要10所述的方法,其特征在于,还包括使用写回函数来将所述新数据值写回到所述数据位置,所述写回函数至少将所述坐标以及所述新数据值作为输入。
12.如权利要求9所述的方法,其特征在于,还包括使用与所述数据存储兼容的语句来执行所述写回,所述数据存储是OLAP数据存储。
13.如权利要求9所述的方法,其特征在于,还包括将用户定义的函数与构造、确认并在计算过程中执行更新语句的第二单元相关联。
14.如权利要求9所述的方法,其特征在于,还包括将用户定义的函数与构造、确认并返回写回指示的第二单元相关联。
15.如权利要求9所述的方法,其特征在于,还包括结合更新语句提交交易。
全文摘要
本发明涉及从各个网格单元将数据写回数据提供者。提供用于将数据写回后端数据存储的非对称的数据方法的体系结构。实现了从网格单元到处理更新立方体语句的数据提供者(例如,OLAP(在线分析处理))的写回。在第一单元中提供用于从该立方体来访问的数据的坐标。在第二单元,用户提供期望发回该立方体的值以及对包含数据值坐标属性的第一单元的引用。计算被触发以确定第一单元中所提供的坐标处的值与第二单元中用户供应的值是否存在不同。如果存在不同,则与第一单元相关联的立方体值函数被用于构造更新立方体语句,以便将用户提供的值发会由坐标所定义的数据位置。
文档编号G06F9/44GK102402434SQ20111030861
公开日2012年4月4日 申请日期2011年9月29日 优先权日2010年9月30日
发明者P·T·蒙特马约尔, S·桑特古达, S·贡多罗夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1