CN103262076A - 分析数据处理 - Google Patents
分析数据处理 Download PDFInfo
- Publication number
- CN103262076A CN103262076A CN2011800601915A CN201180060191A CN103262076A CN 103262076 A CN103262076 A CN 103262076A CN 2011800601915 A CN2011800601915 A CN 2011800601915A CN 201180060191 A CN201180060191 A CN 201180060191A CN 103262076 A CN103262076 A CN 103262076A
- Authority
- CN
- China
- Prior art keywords
- user
- defined function
- function
- olap
- expression formula
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供用于将用户定义函数集成到分析数据处理框架中的系统和装置。查询编译器(22)识别对用户定义函数(28)的调用以及与该用户定义函数相关联的GROUP BY表达式和定义的联机分析处理(OLAP)窗口中之一。数据库引擎(24)与由GROUP BY表达式和定义的OLAP窗口中所述之一定义的分区集一起运行用户定义函数(28),使得用户定义函数对该分区集进行操作以产生函数输出。
Description
技术领域
本发明涉及信息处理,更具体地,涉及用户定义函数向分析数据处理框架中的集成。
背景技术
分析处理系统耗用数据表,数据表典型地通过使数据存储简化和使数据查询更高效的关系链接在一起。像结构化查询语言(SQL)这样的标准化查询语言能够用于创建关系数据库和对关系数据库进行操作。分析学是应用计算机技术和统计学来解决商业和工业中的问题。分析学科学涉及使用可计算的函数提取数据的有用属性,一般而言,涉及从大型数据库中提取数据集的期望属性。因此,分析学联系到计算机科学学科、统计学学科和数学学科。
附图说明
图1图示用户定义函数(UDF)已被集成到联机分析处理(OLAP)框架中的分析数据处理系统的示例。
图2图示分析处理系统向数据库系统中的集成的一个示例,使得用户定义函数(UDF)已被集成到联机分析处理(OLAP)和GROUP BY处理框架中。
图3图示一种用于运行查询的方法。
图4是图示由能够实现图1-3中公开的用于用户定义函数集成的系统和方法示例的硬件部件组成的示例性系统的示意性框图。
具体实施方式
许多数据库具有用于使用GROUP BY和OLAP窗口子句处理查询中有限数量的内建分析函数的框架。不幸的是,数据库中真实世界的分析问题超出本身支持的分析函数,并且数据库中需要密集分析处理的数据集经常使用用于分析处理的第三方分析软件包结束。在数据集大的情形下,由于数据库中可用的有限的分析能力,数据集经常被拦在数据库外部。这些软件包需要从数据库中检索数据、将数据继续在数据库外部并且在处理之前对数据进行重新格式编排。由于这些方法将数据从数据库表中移动到与分析处理相关联的位置,所以结果是相同的大量原始数据集以不同格式复制在多个位置上,同时对保密数据具有伴随的安全性和数据管理风险。进一步,该方法导致用于数据获取、管理和存储的过多人力和硬件成本以及处理时的显著延迟,这使得其对实时分析不实用。
图1图示分析处理系统10的示例,在该示例中,用户定义函数(UDF)已被集成到联机分析处理(OLAP)框架中。例如,图1的系统10能够表示数据库系统、数据仓库、数据集市、内存数据库、独立OLAP引擎、商业智能报告生成系统、数据挖掘系统或联邦查询处理系统。一般来说,分析系统能够被表示为多个功能部件22、24、26和28,每个功能部件都能够被实现为硬件和编程的被配置成执行它们关联功能的任何合适组合。在所图示的示例中,查询编译器22、处理引擎24、数据表26和用户定义函数28中的每个都被存储在非瞬态介质上并由关联的处理器运行,但是将理解,可以使用功能部件的其它实现,例如作为专用硬件或者作为硬件与机器可读指令的组合。
示例系统10包括连接至通信接口16的处理器12和存储器14。将进一步理解,存储器14能够是通过合适的端口或驱动器(例如光驱、USB端口或其它合适的接口)连接至处理器12和通信接口16的可移除存储器。进一步,存储器14能够远离处理器12,此时在该存储器上存储的机器可读指令经由通信链路提供给处理器。将理解,通信接口16能够包括用于从关联的查询源(未示出)接收数据库查询并向查询源返回查询结果的任何合适的硬件和机器可读指令。相应地,通信接口16能够包括计算机系统内或者有线或无线网络适配器内的总线或类似数据连接中的任一种或全部。存储器14能够包括与计算机系统相关联的任何合适的标准存储设备,例如磁存储介质和光存储介质。
设备存储器14能够包括查询编译器22,编译和运行对数据表26的查询的处理引擎24,以及用户定义函数(UDF)28。查询编译器22能够使用任何合适的查询语言,例如结构化查询语言(SQL)或多维表达式(MDX)语言。在一种实现中,用户定义函数28被存储作为共享对象和动态链接库之一。查询编译器22识别对用户定义函数28的调用和定义的数据分区。例如,查询编译器22能够根据与对用户定义函数28的调用相关联的GROUP BY和OLAP窗口表达式中之一,识别定义的数据分区。处理引擎24运行用户定义函数作为加窗函数,使得该函数对定义的分区集操作来产生函数输出。
将理解,OLAP处理不适合于所有用户定义函数。相应地,用户定义函数28具有暴露给查询编译器22和处理引擎24的元数据,该元数据指示用户定义函数可在OLAP窗口或GROUP BY表达式内运行的元数据。该元数据能够进一步包括用于用户定义函数的定义的输入、输出和参数。在一种情况中,所暴露的元数据能够进一步包括应用程序编程接口(API),该应用程序编程接口(API)包括用于验证和解析对用户定义函数的调用内的参变量的规则。然而,将理解,对于大多数用户定义函数来说,元数据中普适的API函数指针会验证和解析参变量,除非用户定义函数需要特殊处理来解析输入、输出和/或参数参变量。用户定义函数元数据进一步包括第二函数指针来在运行查询期间构建用于处理的对象。
用户定义函数向OLAP框架中集成的一项优点在于,每个用户定义函数的输出都被投影回查询的SELECT列表中,因此可用于其它用户定义函数和给定查询内的内建函数。相应地,用户定义函数28能够是查询编译器22在查询内识别的多个用户定义函数之一,并且处理引擎24能够运行多个用户定义函数作为查询的一部分,使得一个用户定义函数耗用由多个用户定义函数中另一用户定义函数输出的字段作为输入。用户定义函数中的每个用户定义函数能够具有相关联的定义的OLAP窗口,并且每个函数的定义的OLAP窗口能够在定义的窗口之间不同。
图2图示分析处理系统向数据库系统50中的集成的一个示例,使得用户定义函数(UDF)已被集成到联机分析处理(OLAP)和GROUP BY处理框架中。系统50包括连接至通信接口56的处理器52和存储器54。将理解,通信接口56能够包括用于从相关联的查询源(未示出)接收数据库查询并向查询源返回查询结果的任何合适的硬件和机器可读指令。相应地,通信接口56能够包括计算机系统内或者有线或无线网络适配器内的总线或类似数据连接中的任一种或全部。存储器54能够包括与计算机系统相关联的任何合适的标准存储设备,例如磁存储介质和光存储介质。
设备存储器54能够包括查询编译器62和数据库引擎64,以编译和运行对数据库表66的查询。查询编译器62识别对用户定义函数的调用和用于该用户定义函数的定义的数据分区(被表达为例如联机分析处理(OLAP)窗口或GROUP BY表达式),如果该用户定义函数具有合适的用于集成的OLAP处理的类类型。如果提供定义的OLAP数据分区,则数据库引擎64运行该用户定义函数来提供具有由一个或多个输出字段组成的组的输出并且将被返回的输出字段投影回选择列表内。在OLAP框架内执行处理的一种益处在于:多个用户定义函数能够被运行作为单个查询的一部分。这些函数还能够通过一个用户定义函数耗用另一用户定义函数的输出而嵌套。
在操作期间,查询编译器62使用标准化的用户定义函数句法来处理数据库查询中对用户定义函数的调用,以有区别地将输入表达式、输出表达式和参数表达式映射至合适的对象。输入表达式和输出表达式中的字段列表限定能够构成到表格内的数据行。在改进的句法中,输入被呈现为紧随用户定义函数名称的括号内的字段列表。输入从查询字段中被提取出,并且被构成作为输入表格。输出通过关键字OUTPUT和括号内的字段列表来表示。查询编译器62将这些输入和输出字段结构化为具有字段名、数据类型和数据大小的自描述表格对象,以对能够同时应对多条记录的所有用户定义函数类类型的处理进行标准化。每个表格对象都具有从该表格对象的每个字段的名称、数据类型和数据长度方面描述该字段的元数据。表格还具有根据行号存储和检索数据行的能力。它们能够以管理存储器溢出到磁盘文件中的能力应对大的行集。
查询编译器62包括查询剖析器74,其从每个用户定义函数中提取输入表格、输出表格和任何参数对象中的每一个。将理解,无论用于所有用户定义函数的关联类如何,都可以将所有用户定义函数的基本句法标准化,使得在查询剖析器74处以类似的方式对这些基本句法进行剖析。这种标准化的句法的一个示例可能包括像下面这样的语句:
<UDF name>([<Input Expression List>])[OUTPUT(<Output Expression List>)][[WITH]PARAMETER(<key=valueExpression>[:…])]
在上面的语句中,方括号内的条目是可选的,圆括号内的条目是必需的,并且尖括号(<>)内给出的条目由合适的表达式替换。用户定义函数的名称是唯一的并且不区分大小写。用户定义函数支持被构成作为表格对象的可变的输入和输出字段。各种表达式列表能够包括一系列由逗号隔开的条目。输入表达式列表如果存在的话可能包括使用来自查询表的列构成的列或者表达式。使用关键字OUTPUT提供用户定义函数的输出的映射,输出表达式列表包括一个或多个输出字段或一个或多个由输出字段构成的表达式。输出字段是来自用户定义函数输出元数据的字段名称或使用“$#”句法的字段位置识别符,其中$代表特殊字符,#代表输出字段的从1开始的从左到右的序号。当查询中没有明确地映射输出时,能够返回在用户定义函数中定义的默认输出字段。在需要时,参数被给定作为使用WITH PARAMETER句法通过冒号隔开的“key=valueExpression”。“key”是用户定义函数参数元数据中的字段名。“valueExpression”是常量或估算为常量的表达式。表达式中定义的参数能够是日期、时间、时间戳、整数、小数值(例如浮点值、双精度值或长双精度值)、字符串或由逗号隔开的由这些数据类型之一形成的数组常量。
在一种实现中,用户定义函数被构建在UDF库68中例如作为共享对象或动态链接库,并且向数据库引擎登记。每个共享对象以查询编译器62能够检索的自描述UDF元数据69的形式暴露用户定义函数。UDF元数据69能够包括用户定义函数的名称,描述,关联的类类型,创建运行时处理对象实例的工厂构建器函数指针,用于输入、输出和参数的验证和解析的函数指针,和其它运行时优化参数,以及该函数的定义的输入、输出和参数字段。查询编译器64访问这些字段,以进行查询解析和验证。输入和输出字段能够是固定字段或可变字段。每个固定字段仅代表查询运行期间的一个字段,而每个可变字段能够代表运行期间的零个、一个或多个字段。当输入和输出字段被标记为可变时,它们能够在查询处理时被重复零次、一次或多次。将理解,可变字段能够出现在任何输入或输出位置,并且在输入和输出中能够存在多个可变字段。给定实例函数的可变字段的大小能够被提供作为例如参数表达式。参数表达式还能够用来定义标量值或数组值和用于在用户定义函数本身中处理的字符参数。
输入和输出字段被标记为每个用户定义函数的输入和输出元数据中的固定类型或可变类型。将理解,给定的用户定义函数需要在该函数的输入元数据中定义的输入的标准顺序和序号。每个字段在查询中由对应的输入参变量字段引用。具体地,在查询中,固定字段将仅具有一个对应的输入参变量字段,而可变字段能够具有零个、一个或多个连续的输入参变量字段。输入和输出字段能够在元数据内具有固定的或未定义的数据类型。当输入字段的数据类型是未定义的时,该字段从查询中的输入字段参变量的数据类型中获取其数据类型。查询输入字段定义该字段是否具有空值。对于具有固定数据类型的字段来说,当数据类型不匹配且数据类型提升有效时,来自输入查询字段的数据在运行时被转换为用户定义函数的所需输入字段类型。当数据类型在输出字段中是未定义的时,其被设置为依赖于输入字段来解析。在查询编译器62处,根据输入字段解析未定义的输出字段。元数据还能够包括默认输出字段,默认输出字段是在查询未明确指派输出字段时返回的。
在仅存在单输入可变字段时,其在查询编译器62处根据查询中的输入参变量被解析。具体地,可变字段的重复数(repetition number)能够被确定为输入参变量的总数与在用户定义函数元数据中定义的固定输入字段的数量之间的差。当存在多个输入或输出可变字段时,参数字段用来提供重复数,每个可变字段具有相应的参数字段。当处理查询时,参数输入用于验证和解析可变字段的重复数。可变输入和输出字段的名称能够通过用从一开始递增的数量扩展可变字段的基本名称而顺序地生成。所有可变输入和输出字段的固定数据类型与被标记为“可变的”字段相同。可变输入字段的未定义数据类型是通过查询中输入字段的数据类型解析的。当用户定义函数未提供明确的函数作为元数据中的函数指针时,系统提供的通用函数能够用来在查询编译器62处验证输入和输出字段和解析它们的数据类型和长度。
输出表达式中列出的字段允许用户定义函数的输出被映射至在输出元数据内提供的字段列表。当查询中的输出字段的数量少于来自用户定义函数的输出字段的数量时,用户定义函数仅返回在查询中被映射的字段。在查询中,输出字段能够使用或字段名称或字段位置识别符以任何顺序映射。如果使用位置识别符映射输出可变字段,则验证和解析函数用输出字段名称替代位置识别符并且在查询编译时间设置输出表对象中的数据类型和大小。
改变顺序和映射对嵌套的用户定义函数处理尤其有用,以允许内部的用户定义函数以外部的用户定义函数所需的顺序返回字段作为输入。在投影列表中,来自用户定义函数的输出映射以它们被映射的顺序与投影列表中的其余字段合并在一起。当查询中出现多个用户定义函数时,投影字段通过OLAP多维和多个窗口函数类似地被映射到查询。
每个用户定义函数的元数据69能够包括多个函数类72中每个函数的关联类,以协助查询的优化。用户定义函数类类型隐含地设置数据库引擎中的数据处理规则连同它们的输出结果的基数。例如,属于一些类的用户定义函数将在OLAP窗口中处理,而这样的处理对于其它函数类来说是不切实际的或者是不必要的。与仅返回一个输出字段的内建函数不同,所有的用户定义函数类类型可以返回一个或多个输出字段。
在一个实例中,用户定义函数能够与十个类中的任一类相关联。1)聚合(aggregate)的用户定义函数对由GROUP BY表达式或OLAP窗口表达式分区的一行集进行处理,并且每个输入行集仅返回一个输出行。若没有GROUP BY表达式或OLAP窗口,则来自查询的全部表格数据被视作输入集。)排名型(rank-type)用户定义函数对由OLAP窗口分区的且以ORDER BY子句排序的一行集进行处理,并且每个输入行仅返回一行。3)串联的(series)用户定义函数由ROWS或RANGE子句的子集窗口框架中的OLAP PARTITION BY处理。将理解,聚合类和串联类不是互斥的,并且给定的用户定义函数能够属于这些类中的任一种或者两种。
4)除了具有内建窗口框架(Inbuilt Window Frame)的串联用户定义函数(SIWF)使用用于移动窗口聚合处理的内建窗口框架以外,具有内建窗口框架的串联用户定义函数(SIWF)与串联用户定义函数相类似。SIWF用户定义函数通过参数规范接收窗口框架大小。该函数一次接收一个输入行,并且对使用给定的窗口框架大小生成的结果返回一个输出聚合返回行。SIWF类支持用于将窗口聚合从OLAP窗口框架中移走的快速计算。如果输入需要呈被排列的顺序,则SIWF的函数类能够使用OLAP PARTITION BY表达式或OLAP ORDER BY子句。
5)除多行返回聚合用户定义函数(MRRA)每个所处理的行集返回多于一行以外,多行返回聚合用户定义函数(MRRA)类似聚合函数。MRRA函数能够处理由GROUP BY或OLAP PARTITION BY子句分区的一行集,或者在没有这种子句的情况下,来自查询的全部表格数据能够被视为输入集。6)N至M用户定义函数(NTM)是特殊的一类用户定义函数,其处理由N个输入行组成的集并且生成M个输出行。NTM函数能够使用OLAP PARTITION BY处理和ORDER BY处理。输出行的数量能够多于、少于或等于输入行的数量。
7)一至M用户定义函数(OTM)是一类用户定义函数,其一次处理一个输入行并产生多行输出。OTM函数不需要OLAP窗口支持。8)值生成用户定义函数每一行的输入生成一行输出,通常执行像log10这样的简单数学计算。9)行发送UDF是不返回任何输出但是向外部过程供应数据的UDF。行发送UDF能够在SELECT查询语句中用来向外部过程发送一行集。为了与SELECT查询语句一起工作,行发送UDF能够返回被发送的行的数量。在一个实例中,数据库能够被配置为每当数据库表被修改时通过行发送函数自动发送任何经修改的行。
10)表值用户定义函数(TVUDF)出现在SQL查询的FROM子句中,其中它们返回的表格能够与规则的数据库表类似参加关系集处理。TVUDF多半连接至外部结构化或未结构化的数据源,并且返回用于查询处理的结构化的表格数据。TVUDF没有输入参变量,并且用于根据外部数据源生成表格。在这种情况下,多半以查询语句的形式提供用于表格提取的输入作为参数,并且该函数接收空的输入表格对象以填充来自外部源的输出表格。当TVUDF已对外部数据库中用于处理的外部查询参数化时,它们将具有来自本地查询的与外部查询参数相对应的输入字段。输入参变量字段为外部数据库中的外部查询处理提供参数值。在这样的情况下,TVUDF准确地表现为OTM函数,并且被标记为元数据中的OTM类的成员。能够存在没有与CURRENT_DATE()或PI()类似的输入参变量的值生成用户定义函数。
查询剖析器74能够审阅输入查询,以确保对每个用户定义函数的调用都是有效的。为此,查询剖析器74能够从元数据69中检索每个用户定义函数的关联的类,并且向查询应用一组逻辑规则以评估每个函数调用的有效性。属于除值生成类和表值类以外的任何类的用户定义函数,在与GROUP BY或OLAP窗口函数类似的SQL查询的投影列表中出现。属于值生成用户定义函数类的用户定义函数能够出现在表达式在SQL查询中能够出现的任何地方。表值用户定义函数出现在SQL查询的FROM子句中,或者出现在子查询被允许的地方。
类似地,属于聚合、排名、串联和SIWF类的用户定义函数能够以与内建的GROUP BY或OLAP窗口函数类似的方式,以任何组合出现在具有多个用户定义函数的查询中。属于MRRA、NTM和OTM类的在本申请中被称为单例(singleton)用户定义函数的用户定义函数,必须是其关联的查询或子查询中唯一的用户定义函数。单例用户定义函数具有不确定的输出行数。然而,在查询中没有对单例用户定义函数子查询的数量的限制。行发送用户定义函数也属于单例用户定义函数类型,但是其输出在查询中是确定的。在排名型分析OLAP函数的情况下,函数没有输入参变量。
然而,ORDER BY子句中的字段列表隐含地被视作内建的排名型分析函数的输入参变量。然而,将理解,当存在用于该函数的ORDER BY表达式时,在UDF中能够存在输入参变量。在这种情况下,该函数中的输入参变量被视作唯一的输入参变量,并且ORDER BY子句中的字段列表被视作仅数据排序用途需要的字段。然而,在将来自ORDER BY子句的字段用作UDF中的输入参变量时,没有限制。
查询优化器76建立用于运行所接收的查询的计划,该计划包括查询中的任何用户定义函数。查询优化器76检索描述用户定义函数的关联类的元数据,并且使用每个用户定义函数的关联类来确定该函数的输出中的行数量是否是已知的或到该函数的输出是否是不确定的。对于具有已知输出的类来说,查询优化器76可以正常进行。具有不确定输出的函数被处理为可替代优化过程的一部分,在可替代优化过程中,具有大量输出行的函数的潜在影响被减轻。由查询剖析器72提取的数据对象中的每个数据对象和在查询优化器76处开发的查询计划被提供给数据库引擎64,以运行包括用户定义函数的查询。
数据库引擎64使用所提取的数据对象来运行被调用的函数,并且返回该函数的结果作为映射的数据字段。以输入字段在用户定义函数输入字段元数据中被定义的顺序,向数据库引擎64提供输入字段。由于输入字段元数据名称仅仅是占位符,所以来自查询的输入字段名称没有必要与UDF元数据中的输入字段名称相匹配。在连续的位置上利用正确的重复数扩展可变输入或输出字段。经扩展的可变字段的字段名称被附加从一开始的字段序号。使用来自UDF元数据的字段名称或$#句法中的字段位置识别符将来自用户定义函数的输出字段映射在查询中。能够使用合适的句法(例如<$#/字段名称>[AS]<用户定义的名称>)重新命名输出字段。当输出表达式中没有重新命名字段位置识别符时,查询编译器62用从用户定义函数元数据中获得的输出字段名称替换字段位置识别符。用户查询可以以与它们在元数据中的顺序无关的任何顺序,映射来自用户定义函数的输出字段的一子集。当输出没有明确地被映射在查询中时,返回元数据中被标记为默认输出字段的那些输出字段的结果。这些方法简化了用于具有对象类的用户定义函数开发的应用程序编程接口(API);该对象类具有用于登记参数输入的一个成员函数,具有输入和输出表格对象以初始化处理的第二成员函数,以及用一个或多个记录迭代地处理输入表格对象并根据用户定义函数的类类型向输出表格对象中发出输出行的第三成员函数。
数据库引擎64运行查询计划以提供查询结果,并且通过通信接口56将查询结果返回给查询源。在运行时期间,根据用户定义函数类类型将数据加载到输入表格对象中。当输入和输出表格对象作为参变量时,用户定义函数的数据处理API被调用以处理数据。用户定义函数向输出表格对象中发出每次调用处理函数时检索的输出。如果没有输入,如在一些表值用户定义函数的情况下,用空输入表格对象调用处理函数。
在数据库系统中能够实现的分析函数的一个示例是多元回归用户定义函数。将理解,在多元回归分析中,自变量的数目根据在下面的示例中图示的拟合的回归模型而变化。相应地,执行该功能的用户定义函数将具有用于贝塔(beta)系数的可变输出字段和用于自变量的平均值,这些可变字段的大小由代表期望模型中自变量的数量的参数值定义。用户定义函数例如能够被实现为聚合类用户定义函数,因为其对所处理的N个输入行返回一个输出行。
下面呈现使用一般多元回归函数的特定例证的示例查询。例如,查询可以用于使用销售和成本数据库表来研究三个自变的开销如何影响因变的销售额,该销售和成本数据库具有例如十年的数据,每年的数据具有每个国家的每个地区和城市的四个季度的数据:
在上面的示例中,第一输入字段是因变量,其是固定字段。第二输入字段是被标记为可变字段的自变量的起始点,对用户定义函数提供两个输入字段。第一输出字段是阿尔法(alpha)截距‘alphaIntercept’,第二输出是因变量‘avgDependent’的平均值,第一输出字段和第二输出每个都是固定字段。第三输出字段‘countObservations’是代表观察值数量的固定字段。将被标记为可变字段的第四字段命名为‘贝塔’且代表由回归分析产生的贝塔系数。将也被标记为可变字段的第五字段命名为‘avgIndependent’并且代表自变量的平均值。
注意,第四字段能够重复,直到所有贝塔系数字段都被映射。如前所述,字段的名称是通过附加从一开始的整数生成的。因此,在下面的示例中,有三个具有字段名称beta1、beta2和beta3的贝塔系数字段。第五字段avgIndependent仅在所有贝塔字段被映射以后开始,并且随附加到其上的从一开始的数目一起类似地重复。
用户定义函数需要一个参数且在参数对象中查找COUNT_INDEPENDENT_VAR关键字或参数字段名称,以判定拟合哪个多元回归模型。在没有给出参数的情况下,由于仅存在一个输入可变字段,所以验证和解析API函数计算重复数。在该给出的示例中,模型规定了三个自变量,因此对‘beta’和‘avgIndependent’每个均产生三个输出字段。注意,在元数据中,根据第二输入可变字段为因变性解析标记可变输出字段beta和avgIndependent。如果查询没有根据自变变量或任何其它字段映射‘avgIndependent’,则用户定义函数理解“avgIndependent”来自由输出表格对象中的用户查询所请求的字段,并且不会为它们投影结果。
所图示的数据库系统使得有可能对SQL查询中包括统计应用在内的复杂分析应用进行建模。由于用户定义函数开发者知道其类类型、输入、输出和参数,所以UDF元数据被构建作为用于在查询编译时动态检测和验证其用法的句法和语义的用户定义函数的一部分。可能存在在用于管理用户定义函数的数据库中捕获的附加元数据,例如用户定义函数用法和安装权限。参数字段的使用允许用户定义函数足够全面,以允许仅通过改变查询中的参数来处理很多分析应用模型。诸如多元回归、最小均方、多变量分析和频率分布之类的统计应用,能够简单地通过改变查询的参数字段利用依赖于特定分析需求的不同统计模型来实现。因此,参数化使得以简单的参数关键字对/值对代表复杂模型更加容易。
系统50进一步提供根据用户定义函数以任何顺序映射仅所需的输出字段的能力,使得具有嵌套用户定义函数查询更加容易,在嵌套用户定义函数查询中,内部用户定义函数返回外部用户定义函数的输入所需的输出。这有助于根据应用需求构建查询中部分的由嵌套构成的复杂应用。用户定义函数到SQL中的严密集成使分析应用处理更接近于数据,实现数据安全性以及数据跨越系统的较少移动。还使得以编程语言通过SQL建立用于服务垂直应用的用户定义函数。通过可在查询的用于从外部源收集数据的FROM子句中使用的表值用户定义函数结合分析用户定义函数,用户会发现在SQL中使用来自外部源的数据对很多分析应用进行建模和处理更容易。
图3示出一种用于运行查询的方法100。在102,在结构化查询语言(SQL)查询中识别对用户定义函数的调用。在104,在SQL查询内识别与用户定义函数相关联的数据分区。例如,能够从与对用户定义函数的调用相关联的GROUP BY和或OLAP窗口表达式(例如ROWS或RANGE规范中的PARTITION BY、ORDERBY以及数据框架)之一中提取数据分区规范。在106,在OLAP框架内对所识别的数据分区运行用户定义函数,以产生输出。
图4是图示由能够实现图1-3中公开的用于用户定义函数集成的示例系统和方法的硬件部件组成的示例性系统200的示意性框图。系统200能够包括各种系统和子系统。系统200能够是个人计算机、膝上型计算机、工作站、计算机系统、器具、专用集成电路(ASIC)、服务器、服务器刀片中心、服务器群或任何其它合适的处理部件。
系统200能够包括系统总线202、处理单元204、系统存储器206、存储器设备208和210、通信接口212(例如网络接口)、通信链路214、显示器216(例如显示屏)以及输入设备218(例如键盘和/或鼠标)。系统总线202能够与处理单元204和系统存储器206通信。诸如硬盘驱动器、服务器、独立数据库或其它非易失性存储器之类的附加存储器设备208和210也能够与系统总线202通信。系统总线202可操作地互连处理单元204、存储器设备206-210、通信接口212、显示器216和输入设备218。在一些示例中,系统总线202还可操作地互连像通用串行总线(USB)端口这样的附加端口(未示出)。
处理单元204能够是计算设备,并且能够包括专用集成电路(ASIC)。处理单元204运行一组指令,以实现本申请中所公开的示例的操作。处理单元能够包括处理核。
附加存储器设备206、208和210能够存储数据、程序、指令、呈文本或编译形式的数据库查询以及操作计算机可能需要的任何其它信息。存储器206、208和210能够被实现为计算机可读介质(集成的或可移除的),例如存储卡、磁盘驱动器、光盘(CD)或可通过网络访问的服务器之类。在特定的示例中,存储器206、208和210能够包括文本、图像、视频和/或音频。
另外,存储器设备208和210能够用作数据库或数据存储。另外或可替代地,系统200能够通过可与系统总线202和通信链路214通信的通信接口212访问外部数据源或查询源。
在操作时,系统200能够用来实现数据库系统,该数据库系统响应于合适的查询在联机分析处理(OLAP)框架内运行用户定义函数。查询能够根据包括SQL在内的各种查询数据库协议被格式编排。根据特定示例,用于实现实时分析系统的计算机可运行逻辑驻留在系统存储器206和存储器设备208、210中的一个或多个上。处理单元204运行从系统存储器206以及存储器设备208和210中获得的一个或多个计算机可运行指令。本发明中使用的术语“计算机可读介质”指参与向处理单元204提供用于运行的指令的介质。
上面已描述的是本发明的示例。当然,不可能为了描述本发明而描述部件或方法的每种可想象到的组合,但是本领域普通技术人员将认识到,本发明的很多进一步组合和排列是可能的。因此本发明旨在包含落在所附权利要求范围内的所有这样的变化、修改和改变。
Claims (15)
1.一种分析数据处理系统(10),包括:
处理器(12);和
存储机器可读指令的非瞬态计算机可读介质(14),所述机器可读指令包括:
查询编译器(22),识别对用户定义函数(28)的调用以及与所述用户定义函数相关联的GROUP BY表达式和定义的联机分析处理(OLAP)窗口中之一;以及
处理引擎(24),与由所述GROUP BY表达式和定义的OLAP窗口中所述之一定义的分区集一起运行所述用户定义函数(28),使得所述用户定义函数对所述分区集进行操作以产生函数输出。
2.根据权利要求1所述的分析数据处理系统,所述用户定义函数(28)具有暴露给所述查询编译器和所述处理引擎(24)的元数据(69),所述元数据(69)指示所述用户定义函数(28)能在所述GROUP BY表达式和定义的OLAP窗口中所述之一内运行。
3.根据权利要求2所述的分析数据处理系统,所暴露的元数据(69)包括应用程序编程接口,所述应用程序编程接口包括用于验证和解析对所述用户定义函数(28)的调用内的参变量的规则。
4.根据权利要求1所述的分析数据处理系统,所述对所述用户定义函数(28)的调用是查询内由所述查询编译器(22)识别的对各个用户定义函数的多个调用中之一,并且所述处理引擎(24)运行多个用户定义函数作为所述查询的一部分。
5.根据权利要求4所述的分析数据处理系统,所述用户定义函数(28)耗用由所述多个用户定义函数中另一用户定义函数输出的字段作为输入。
6.根据权利要求4所述的分析数据处理系统,所述分区集是查询中的第一分区集,并且所述查询编译器(22)进一步识别与所述多个用户定义函数中另一用户定义函数相关联的第二分区集,所述第一分区集不同于所述第二分区集。
7.根据权利要求4所述的分析数据处理系统,所述多个用户定义函数中的另一用户定义函数具有暴露给所述查询编译器(22)的元数据(69),所述元数据(69)指示该用户定义函数应当在不引用GROUP BY表达式和OLAP窗口二者任一的情况下被运行。
8.根据权利要求1所述的分析数据处理系统,所述查询编译器(22)从与所述对所述用户定义函数的调用相关联的OLAP窗口表达式中,识别所述GROUP BY表达式和定义的联机分析处理(OLAP)窗口中所述之一。
9.一种分析处理系统,包括:
处理器(12);和
存储机器可读指令的非瞬态计算机可读介质(14),所述机器可读指令包括:
查询编译器(22),识别结构化查询语言(SQL)查询内对多个用户定义函数(68)的各个调用,所述查询编译器(22)识别多个数据分区,每个数据分区与所述多个用户定义函数中之一相关联并且从GROUP BY表达式和OLAP窗口表达式中之一中被识别,使得所述多个数据分区中之一不同于所述多个数据分区中另一数据分区;以及
处理引擎(24),运行所述多个用户定义函数作为SQL查询的一部分,使得所述多个用户定义函数中之一耗用由所述多个用户定义函数中另一用户定义函数输出的字段作为输入;
其中每个用户定义函数(68)具有暴露给所述查询编译器(22)和所述处理引擎(24)的元数据(69),所述元数据(69)指示该用户定义函数能在所述GROUP BY表达式和OLAP表达式中所述之一内运行。
10.一种存储机器可运行指令的非瞬态计算机可读介质,所述机器可运行指令包括:
查询编译器(62),识别对多个用户定义函数(68)的调用以及SQL查询内与所述用户定义函数相关联的GROUP BY表达式和定义的联机分析处理(OLAP)窗口中之一;以及
数据库引擎(64),与由所述GROUP BY表达式和定义的OLAP窗口中所述之一定义的数据分区一起运行所述多个用户定义函数(68),使得所述多个用户定义函数中的用户定义函数对所述数据分区进行操作以产生函数输出。
11.根据权利要求10所述的非瞬态计算机可读介质,所述多个用户定义函数(68)中之一耗用由所述多个用户定义函数中另一用户定义函数输出的字段作为输入。
12.根据权利要求10所述的非瞬态计算机可读介质,所述查询编译器(62)从与对所述多个用户定义函数中之一的调用相关联的OLAP窗口表达式中,识别GROUPBY表达式和定义的联机分析处理(OLAP)窗口中所述之一。
13.根据权利要求10所述的非瞬态计算机可读介质,所述多个用户定义函数(68)中每个用户定义函数具有暴露给所述查询编译器(62)和所述数据库引擎(64)的元数据(69),每个函数的元数据(69)指示该用户定义函数能在所述GROUP BY表达式和定义的OLAP窗口中所述之一内运行。
14.根据权利要求13所述的非瞬态计算机可读介质,所述元数据(69)包括用于验证和解析对所述多个用户定义函数中所述之一的调用内的参变量的通用应用程序编程接口函数指针。
15.根据权利要求10所述的非瞬态计算机可读介质,定义的数据分区是所述SQL查询中与所述多个用户定义函数(68)中之一相关联的第一数据分区,并且所述查询编译器(62)进一步识别由与所述多个用户定义函数中另一用户定义函数相关联的另一OLAP窗口定义的第二数据分区,所述第一数据分区不同于所述第二数据分区。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/022437 WO2012102707A1 (en) | 2011-01-25 | 2011-01-25 | Analytical data processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103262076A true CN103262076A (zh) | 2013-08-21 |
Family
ID=46581072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800601915A Pending CN103262076A (zh) | 2011-01-25 | 2011-01-25 | 分析数据处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20130238548A1 (zh) |
EP (1) | EP2668598A4 (zh) |
CN (1) | CN103262076A (zh) |
WO (1) | WO2012102707A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104635910A (zh) * | 2014-12-30 | 2015-05-20 | 宁波江东波莫纳电子科技有限公司 | 一种计算机功率管理控制系统 |
CN104699742A (zh) * | 2013-12-03 | 2015-06-10 | 商业对象软件有限公司 | 使能扩展大型数据集的极端可视化 |
CN106547883A (zh) * | 2016-11-03 | 2017-03-29 | 北京集奥聚合科技有限公司 | 一种用户定义函数udf运行情况的处理方法及系统 |
CN108780485A (zh) * | 2016-01-22 | 2018-11-09 | 弗塞克系统公司 | 基于模式匹配的数据集提取 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9355145B2 (en) | 2011-01-25 | 2016-05-31 | Hewlett Packard Enterprise Development Lp | User defined function classification in analytical data processing systems |
CN103430144A (zh) * | 2011-03-17 | 2013-12-04 | 惠普发展公司,有限责任合伙企业 | 数据源分析 |
US9472015B2 (en) * | 2012-05-15 | 2016-10-18 | Sap Se | Real-time visualization of transactional data objects |
US9760599B2 (en) | 2014-04-09 | 2017-09-12 | International Business Machines Corporation | Group-by processing for data containing singleton groups |
US9454571B2 (en) | 2014-06-26 | 2016-09-27 | Sap Se | Optimization of parallelization of user-defined functions with flexible partitioning |
US10248688B2 (en) * | 2014-06-26 | 2019-04-02 | Sap Se | Annotations for parallelization of user-defined functions with flexible partitioning |
EP2977918A1 (en) * | 2014-07-24 | 2016-01-27 | Tata Consultancy Services Limited | A system and method for executing a sparql query |
US10380266B2 (en) * | 2014-08-11 | 2019-08-13 | InMobi Pte Ltd. | Method and system for analyzing data in a database |
US9830373B2 (en) * | 2015-01-06 | 2017-11-28 | Entit Software Llc | Data transfer requests with data transfer policies |
US20180316641A1 (en) * | 2017-04-28 | 2018-11-01 | Ca, Inc. | Publish/subscribe system incorporating derivation actions |
US11385874B2 (en) * | 2020-02-03 | 2022-07-12 | Sap Se | Automatic type determination for database programming |
US11797521B1 (en) * | 2020-06-30 | 2023-10-24 | Amazon Technologies, Inc. | Associating a function with a table in a database system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758248A (zh) * | 2004-10-05 | 2006-04-12 | 微软公司 | 用于提供个性化搜索和信息访问的系统、方法和接口 |
US20060136415A1 (en) * | 2004-12-21 | 2006-06-22 | International Business Machines Corporation | Method, system, and program product for executing a scalar function on a varying number of records within a RDBMS using SQL |
CN101582079A (zh) * | 2009-06-23 | 2009-11-18 | 用友软件股份有限公司 | 一种对象查询方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324533B1 (en) * | 1998-05-29 | 2001-11-27 | International Business Machines Corporation | Integrated database and data-mining system |
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 |
US6473750B1 (en) * | 1999-10-15 | 2002-10-29 | Microsoft Corporation | Adaptive query execution in a distributed database system |
US7024414B2 (en) * | 2001-08-06 | 2006-04-04 | Sensage, Inc. | Storage of row-column data |
US7562086B2 (en) * | 2004-07-09 | 2009-07-14 | Microsoft Corporation | Custom grouping for dimension members |
US20100036801A1 (en) * | 2008-08-08 | 2010-02-11 | Behzad Pirvali | Structured query language function in-lining |
US20100241893A1 (en) * | 2009-03-18 | 2010-09-23 | Eric Friedman | Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment |
US9305057B2 (en) * | 2009-12-28 | 2016-04-05 | Oracle International Corporation | Extensible indexing framework using data cartridges |
US9183253B2 (en) * | 2012-06-27 | 2015-11-10 | Nec Laboratories America, Inc. | System for evolutionary analytics |
-
2011
- 2011-01-25 WO PCT/US2011/022437 patent/WO2012102707A1/en active Application Filing
- 2011-01-25 US US13/885,032 patent/US20130238548A1/en not_active Abandoned
- 2011-01-25 CN CN2011800601915A patent/CN103262076A/zh active Pending
- 2011-01-25 EP EP11856881.5A patent/EP2668598A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758248A (zh) * | 2004-10-05 | 2006-04-12 | 微软公司 | 用于提供个性化搜索和信息访问的系统、方法和接口 |
US20060136415A1 (en) * | 2004-12-21 | 2006-06-22 | International Business Machines Corporation | Method, system, and program product for executing a scalar function on a varying number of records within a RDBMS using SQL |
CN101582079A (zh) * | 2009-06-23 | 2009-11-18 | 用友软件股份有限公司 | 一种对象查询方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699742A (zh) * | 2013-12-03 | 2015-06-10 | 商业对象软件有限公司 | 使能扩展大型数据集的极端可视化 |
CN104635910A (zh) * | 2014-12-30 | 2015-05-20 | 宁波江东波莫纳电子科技有限公司 | 一种计算机功率管理控制系统 |
CN108780485A (zh) * | 2016-01-22 | 2018-11-09 | 弗塞克系统公司 | 基于模式匹配的数据集提取 |
CN108780485B (zh) * | 2016-01-22 | 2022-03-04 | 弗塞克系统公司 | 基于模式匹配的数据集提取 |
CN106547883A (zh) * | 2016-11-03 | 2017-03-29 | 北京集奥聚合科技有限公司 | 一种用户定义函数udf运行情况的处理方法及系统 |
CN106547883B (zh) * | 2016-11-03 | 2021-02-19 | 北京集奥聚合科技有限公司 | 一种用户定义函数udf运行情况的处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130238548A1 (en) | 2013-09-12 |
WO2012102707A1 (en) | 2012-08-02 |
EP2668598A1 (en) | 2013-12-04 |
EP2668598A4 (en) | 2015-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103262076A (zh) | 分析数据处理 | |
JP6985279B2 (ja) | パターン分解を通してデータ変換を推論するためのシステムおよび方法 | |
US10127278B2 (en) | Processing database queries using format conversion | |
US8538954B2 (en) | Aggregate function partitions for distributed processing | |
CN107533570B (zh) | 用于从表格数据自动推断立方体模式的系统和方法 | |
US9355145B2 (en) | User defined function classification in analytical data processing systems | |
US8943059B2 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
KR102134494B1 (ko) | 위치 정보를 가진 데이터 프로파일링 | |
CN104205039B (zh) | 使用兴趣驱动数据管线进行数据分析的兴趣驱动商业智能系统和方法 | |
US8219581B2 (en) | Method and system for analyzing ordered data using pattern matching in a relational database | |
US20100017395A1 (en) | Apparatus and methods for transforming relational queries into multi-dimensional queries | |
US9785725B2 (en) | Method and system for visualizing relational data as RDF graphs with interactive response time | |
CN106874426B (zh) | 基于Storm的RDF流式数据关键词实时搜索方法 | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
CN112912872A (zh) | 用于多维数据库环境中的依赖性分析的系统和方法 | |
Petermann et al. | BIIIG: enabling business intelligence with integrated instance graphs | |
CN113553341A (zh) | 多维数据分析方法、装置、设备及计算机可读存储介质 | |
Goasdoué et al. | An Evaluation Framework For Data Quality Tools. | |
US20230126509A1 (en) | Database management system and method for graph view selection for a relational-graph database | |
Tsoukanara et al. | Skyline-based temporal graph exploration | |
US11036730B2 (en) | Business intelligence language type representing result structure | |
Winberg et al. | A comparison of relational and graph databases for crm systems | |
Al-Ghezi | Universal Workload-based Graph Partitioning and Storage Adaption for Distributed RDF Stores | |
Stefanov | Methods for heterogeneity detection during multi-dimensional data mart integration | |
US20110016158A1 (en) | Generation of dimensional metadata based on rdbms data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130821 |