Abstract:
Embodiments relate to systems and methods for analyzing data extracted from a set of data sources. A set of applications such as online analytical processing (OLAP) applications can access the combined data of a set of data sources via an aggregation engine. The set of data sources can be configured with diverse dimensions and associated data. In general the data sources may not be expected to reflect a strictly consistent structure. In embodiments, the aggregation engine can combine or aggregate the set of data sources using common dimensions or data points, and build an index into a transform table reflecting a combined mapping. An OLAP or other application can then perform statistical computations, searches, sorts, and/or other operations on the combined mapping, even when the original data sources do not contain identical dimensions or other formats.

Description:
FIELD 
     The present teachings relate to systems and methods for generating multi-population statistical measures using middleware, and more particularly to platforms and techniques for combining the data or multiple data sources via a middleware aggregation engine to permit applications to run statistical analyses on the combined data. 
     BACKGROUND OF RELATED ART 
     In networked data technologies, the introduction and expanded use of middleware platforms has enabled a wider range of applications access to a wider range of data sources. Middleware platforms in general are known which allow a single application to access diverse or incompatible data sources, by commonizing the data schema used by those separate sources for use by the application. 
     In the realm of data analysis, packages for statistical analysis are known which are configured to receive data in standardized formats. For example, online analytical processing (OLAP) applications in general manipulate data which is stored in a multi-dimensional format, and manipulate multi-dimensional data to generate reports, statistics, and other outputs. Middleware platforms which attempt to combine multiple data sources for purposes of feeding data to one or more OLAP or other statistical applications can encounter difficulties, however. Those issues include the fact that the diverse data sources will typically not be built with completely common or consistent formats or dimensions. A statistical application which wishes to attempt, for example, to generate an average of data that is merged from multiple sources may find it impossible to locate the desired field in each separate source, and generate an average on the combined set of data. It may be desirable to provide methods and systems for the generation of multi-population statistical measures via middleware, in which a middleware aggregation engine generates a combined data object from multiple data sources, and permits statistical applications to generate reports or other outputs based on the combined data object. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present teachings and together with the description, serve to explain the principles of the present teachings. In the figures: 
         FIG. 1  illustrates an overall system for generating multi-population statistical measures using middleware aggregation, according to various embodiments; 
         FIG. 2  illustrates a system for generating multi-population statistical measures using middleware aggregation, according to various embodiments in further regards; 
         FIG. 3  illustrates an illustrative hardware configuration of hardware that can implement an aggregation engine, according to various embodiments; and 
         FIG. 4  illustrates overall data aggregation processing to generate statistical measures on a combined data object created from separate data sources using middleware, according to various embodiments. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     Embodiments of the present teachings relate to systems and methods for generating multi-population statistics using middleware. More particularly, embodiments relate to platforms and techniques for invoking a middleware aggregation engine to identify data sources from a set of data sources that contain data desired by one or more applications. The aggregation engine can for example access one or more online analytical processing (OLAP) or other data sources and extract information responsive to a data request made by a statistical or other application, and combine that information into a larger or aggregate data object. The one or more applications can then run statistical reports or other computations on the combined data object, and produce a set of statistical measures as output. In embodiments, the aggregation engine can allow the original source data in the data sources to remain intact, and only operate on the combined data object. Users of the set of applications can therefore gain outputs and measures on the larger collection of data across separate data sources by generating reports off of the combined data object generated at the middleware level. These and other embodiments described herein address the various noted shortcomings in known database and statistical applications technology, and provide a user operator with an enhanced set of data from which to generate and view statistical and other reports. 
     Reference will now be made in detail to exemplary embodiments of the present teachings, which are illustrated in the accompanying drawings. Where possible the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG. 1  illustrates an overall system  100  in which systems and methods for generating multi-population statistical measures using middleware can operate, according to various embodiments. A set of applications  102  can communicate with an aggregation engine  106  via one or more network  130 . Set of applications  102  can be or include, for example, a set of statistical analysis programs. Set of applications  102  can further include database applications, spreadsheet applications, modeling applications, or other applications. The applications in set of applications can in embodiments be or include online analytical processing (OLAP) applications. One or more network  130  can be or include, for example, the Internet or other public or private networks. Aggregation engine  106  can be, include, or be hosted by a server with associated memory, storage, and other resources configured to receive data requests from one or more application in set of applications  102 , and interpret that request to build an aggregate data mapping or structure to respond to that request. 
     More particularly, and as shown in  FIG. 1 , aggregation engine  106  can communicate with a set of data sources  104  which host data which set of applications  102  wishes to access. The set of data sources  104  can be or include relational databases, or other data sources. In embodiments, set of data sources  104  can be or include online analytic processing (OLAP) data sources, such as multi-dimensional databases or other data stores. According to embodiments, the set of data sources  104  can be multi-dimensional data sources. In embodiments, other numbers, types, or configurations of data sources can be used. 
     Aggregation engine  106  can receive a data request from one or more application in set of applications  102 , and identify which data source or sources in set of data sources  104  contain data corresponding to the data request. Aggregation engine  106  can then communicate with data sources having corresponding data, and extract that data from the data sources. For example, one or more field, value, dimension or other component of each data source can be read out or retrieved by aggregation engine  106 . When all data corresponding to the data request is extracted from set of data sources  104 , aggregation engine  106  can aggregate that data into a combined data object  116  that maps the cumulative data structure to be accessed by the requesting application(s). More particularly, in embodiments aggregation engine  106  can generate a aggregation table  108  containing entries mapping the fields, values, dimensions and/or other information extracted from the data sources in set of data sources  104  to an aggregate representation of the subject data. In embodiments, aggregation table  108  can contain fields including a data source field  110  identifying the data source which contributes a dimension, field, or other data. Aggregation table  108  can also include a field identifier  112  representing the original field of the extracted data in its host data source. Aggregation table  108  can further include an index  114 , representing a row/column location level at which the extracted field, value, dimensions, or other data is placed in the resulting combined data object  116  produced by aggregation engine  106 . 
     As shown, for example, in  FIG. 2 , the combined data object  116  encoding the aggregate information extracted from set of data sources  104  can comprise a relational data structure, such as a flat two-dimensional table or a multiple-level hierarchical network. Other data schema for combined data object  116 , which can be generated, maintained and stored by aggregation engine  106  at the middleware level, can be used. The combined data object  116  can, for instance, be configured as a set of linked nodes, in a linked network configuration. In illustrative embodiments as shown, for example, a combined data object  116  representing a table of all sales collected from regions of a retail, online, mail order, or other sales organization can contain a number of distinct fields reflecting sales figures of different types on a regional level. In embodiments, the regional sales figures for each region can be hosted in a separate data source in set of data sources  104 . According to embodiments, set of applications  102  can run statistical analyses on combined data object  116 , and thereby generate reports or other outputs based on the collective information across set of data sources  104 , in one processing operation. Set of applications  102  can thereby generate more meaningful high-level comparative statistics or other quantitative measures on the constituent data of set of data sources  104 , simultaneously. 
     In embodiments, aggregation engine  106  can for example build combined data object  116  in one regard by identifying common fields, values, dimensions or other data between data sources in set of data sources  104 . In embodiments, the relationships or presumed relationships between other fields or other data structures can be generated or projected using, for example, a set of lookup tables defining presumed hierarchical relationships between different keywords or other definitions of source dimensions. Thus, for instance, a field identified as “regional sales” in multiple data sources can be placed at the same row in combined data object  116 , even when not referring to the same region or sales territory, to permit comparison and statistical measures to be run on the overall complement of regional sales. In embodiments, relationships or presumed relationships between other dimensions can also be generated or projected using statistical inferences, or using neural networks or other self-learning logic. In embodiments, aggregation engine  106  can store combined data object  116  for further reference, for instance to a data store. In embodiments, aggregation engine  106  can generate combined data object  116 , and not store that data to a permanent data store. In embodiments, aggregation engine  106  can extract data from set of data sources  104  and generate combined data object  116 , without altering or destroying the original data contained in the data sources. 
       FIG. 3  illustrates an exemplary configuration of transaction server  118  which can be used in systems and methods for generating multi-population statistical measures using middleware, according to embodiments. Transaction server  118  can, for instance, support or host aggregation engine  106  in part or whole. In embodiments as shown, transaction server  118  can comprise a processor  120  communicating with memory  122 , such as electronic random access memory, operating under control of or in conjunction with operating system  126 . Operating system  126  can be, for example, a distribution of the Linux™ operating system, the Unix™ operating system, or other open-source or proprietary operating system or platform. Processor  120  also communicates with data store  128 , such as a database stored on a local hard drive. Processor  120  further communicates with network interface  124 , such as an Ethernet or wireless data connection, which in turn communicates with one or more network  130 , such as the Internet or other public or private networks. Processor  120  can, for example, communicate with set of applications  102  and set of data sources  104  via one or more network  130 . Processor  120  also communicates with aggregation engine  106  and other resources to control the processing of set of data sources  104 , including to extract the dimensional data from those sources, locate common fields, nodes, dimensions and/or other data components, and build aggregation table  108  reflecting the aggregation of the data sources into combined data object  116 . Other configurations of transaction server  118 , associated network connections, and other hardware and software resources are possible. 
       FIG. 4  illustrates overall processing for the generation of multi-population statistical measures using middleware, according to various embodiments. In  402 , processing can begin. In  404 , a data access request can be generated by one or more application in set of applications  102 . In  406 , the data access request can be received in aggregation engine  106 . In embodiments, aggregation engine  106  can be a middleware resource hosted in or supported by transaction server  118  or other hardware, software, logic, or other resources configured as middleware located between set of applications  102  and set of data sources  104 . In  408 , data corresponding to the data request can be extracted from two or more data sources in set of data sources  104  by aggregation engine  106 . In embodiments, individual data sources in set of data sources  104  can for instance be or include online analytical processing (OLAP) data sources. In embodiments, set of data sources  104  can instead or in addition include other types of data sources, such as, for example, relational databases. 
     In  410 , aggregation engine  106  can identify one or more fields, values, dimensions, or other data components or structures in common between the two or more data sources in set of data sources  104  supplying data in response to the data request. For example, aggregation engine  106  can discover that the data sources share a dimension of “regional sales” which can be used to order or align common dimensions of the subject data sources. 
     In  412 , aggregation engine  106  can generate a combined data object  116  representing an aggregation or combination of the combined dimensions and/or other data of set of data sources  104  responsive to the data request. In embodiments, combined data object  116  can be or include a hierarchical data object, for example, of types described in copending U.S. patent application Ser. No. 12/200,101 entitled “Systems and Methods for Hierarchical Aggregation of Multi-Dimensional Data Sources,” filed of even date herewith, naming the same inventor as this application, assigned or under assignment to the same entity as this application, and which application is incorporated by reference herein. In embodiments, combined data object  116  can in addition or instead be a multi-dimensional data object, such as an online analytic processing (OLAP) database. In embodiments, combined data object  116  can in addition or instead be a relational database, or can have other data schemas. 
     In  414 , aggregation engine  106  can generate an aggregation table  108 , including for example an index reflecting the row and column or other ordering of the extracted fields or other data of the data sources in set of data sources  104  related to the data request. In  416 , one or more application in set of applications  102  can perform a set of statistical analyses on combined data object  116 . For example, an application or applications in set of applications  102  can calculate or generate statistical or numerical measures such as an average, a median, a mean, a linear regression, a least-squares fit, a variance analysis, or other output or measure on any one or more fields or other components of combined data object  116 . The requesting application can further perform a search, sort, or other operation or type of processing on combined data object  116  generated by or recorded in aggregation table  106 . For example, in a retail sales context, a sorting of the top ten or other number of best-selling movies, books, or other media or product category can be sorted for a given sales period. In  418 , aggregation table  108 , combined data object  116 , and/or other data produced by the aggregation of set of data sources  104  can be stored, for example, stored as a table, tree, multi-dimensional or other data structure or format to data store  128 , or other data store or repository. In  420 , processing can repeat, return to a prior processing point, jump to a further processing point, or end. 
     The foregoing description is illustrative, and variations in configuration and implementation may occur to persons skilled in the art. For example, while embodiments have been described in which set of applications  102  contains or comprises a set of statistical applications, in embodiments other numerical or computational applications can be used in set of applications  102 , such as, for example, applications for linear analysis, applications for fuzzy logic or other self-learning networks, or other software or applications. For example, while embodiments have been described in which aggregation engine  106  generates and maintains a combined data object  116  by way of an aggregation table  108 , in embodiments other structures for establishing and storing the relationship between source dimensions, data, and combined data object  116  or other aggregate output can be used. 
     Yet further, while embodiments have been described in which a single aggregation engine  106  generates and manages aggregation table  108 , in embodiments multiple transform engines, for example hosted on multiple servers, can cooperate to generate mappings between data sources and combined data object  116  and/or other output. Other resources described as singular or integrated can in embodiments be plural or distributed, and resources described as multiple or distributed can in embodiments be combined. The scope of the present teachings is accordingly intended to be limited only by the following claims.