METHOD AND SYSTEM FOR PERFORMING DATA MANIPULATIONS ASSOCIATED WITH BUSINESS PROCESSES AND OPERATIONS
A method and apparatus for accessing, processing and manipulating data in an OLAP database. According to one aspect, the present invention comprises a user interface configured for accessing, processing and manipulating data in an OLAP cube. According to another aspect, the present invention comprises a calculation engine for manipulating and managing data in the OLAP cube.
The present invention relates to computer systems and more particularly, to a method and system for performing data manipulations and data processing associated with financial and/or operational data stored in a database.
BACKGROUND OF THE INVENTIONOnline analytical processing or OLAP is a technique in business intelligence applications and comprises providing answers to analytical queries that are multidimensional in nature. Examples of OLAP applications include business reporting for sales, marketing, management reporting, business process management, budgeting and forecasting, financial reporting and the like.
Databases configured for OLAP applications typically comprise a multidimensional data model, often referred to as a “cube”. A multidimensional data model allows for complex analytical queries with rapid execution time. The cube structure comprises aspects of navigational databases and hierarchical databases.
An OLAP cube can be thought of as an extension of the two-dimensional array of a spreadsheet, and comprises dimensions. In the context of an OLAP cube, dimensions provide additional methods for analyzing data. For example, an OLAP cube can be configured to allow a company to analyze financial data by product, by time-period, by city, by type of revenue and cost, and by comparing actual data with a budget. In a further aspect, a user, for example, a financial analyst, may want to view the data in various ways, such as displaying all the cities down the page and all the products across a page. This could be for a specified period, version and type of expenditure. Having seen the data in this particular way the analyst might then immediately wish to view it in another way. The cube structure provides the capability to re-orient the display so that the data displayed now had periods across the page and type of cost down the page. Because this re-orientation involved re-summarizing very large amounts of data, this new view of the data had to be generated efficiently to avoid wasting the analyst's time, i.e. within seconds, rather than the hours a relational database and conventional report-writer might have taken.
According to another aspect, data in a cube may be updated at times, perhaps by different people. Techniques are therefore often needed to lock parts of the cube while one of the users is writing to it and to recalculate the cube's totals. Other facilities may allow an alert that shows previously calculated totals are no longer valid after the new data has been added, but some products only calculate the totals when they are needed.
It will be appreciated that while an OLAP cube provides a flexible and multidimensional structure data model, there remains a need in the art for improvements, such as, applications including data acquisition and processing techniques capable of exploiting the capabilities of an OLAP cube.
SUMMARY OF THE INVENTIONThe present invention provides a method and system for accessing data, configuring data processing and manipulations involving the data. According to an embodiment, the data comprises information associated business processes and operations stored in an OLAP database.
According to one aspect, there is provided a system for processing data in an OLAP database, the system comprises: a user interface module; a calculation engine; the user interface comprising a screen configured for specifying a data process to be performed on data in the OLAP database in response to one or more user inputs; and the calculation engine being configured to interface to the OLAP database and execute the data process and generate a data process output.
According to another aspect, there is provided a computer-implemented method for processing data stored in an OLAP cube, the method comprises the steps of: characterizing data in the OLAP cube according to a common dimension, and the common dimension comprising one or more common dimension members; characterizing data in the OLAP cube according to a non-common dimension, and the non-common dimension comprising one or more non-common dimension members; specifying a combination comprising selected common dimension members and selected non-common dimension members; selecting cells in the OLAP cube based on the specified combination, and reading data from the selected cells; applying a processing operation to the data read from the selected cells; and writing data from the processing operation back to the OLAP cube.
According to a further aspect, there is provided a computer program product for processing data in an OLAP database, the computer program product comprises: a storage medium configured to store computer readable instructions; the computer readable instructions including instructions for, characterizing data in the OLAP cube according to a common dimension, and the common dimension comprising one or more common dimension members; characterizing data in the OLAP cube according to a non-common dimension, and the non-common dimension comprising one or more non-common dimension members; specifying a combination comprising selected common dimension members and selected non-common dimension members; selecting cells in the OLAP cube based on the specified combination, and reading data from the selected cells; applying a processing operation to the data read from the selected cells; and writing data from the processing operation back to the OLAP cube.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of embodiments of the invention in conjunction with the accompanying figures.
Reference will now be made to the accompanying drawings which show, by way of example, embodiments of the present invention, and in which:
Like reference numerals indicate like or corresponding elements or components in the drawings.
DETAILED DESCRIPTION OF THE EMBODIMENTS OF THE INVENTIONEmbodiments according to the present invention are described in the context of data or information used by companies for planning, budgeting, monthly financial reporting and/or consolidation of financial results. In the context of the present description, numerical data is stored in an OLAP database, and comprises one or more cubes. Each cube comprises a structure based on dimensions and members.
The cubes and dimensions will vary from company to company. In addition, the names of dimensions within cubes can vary. For instance, a cube can have dimensions named “Accounts”, “Versions” and “Time”, and a number of other dimensions with other names. Each dimension comprises a list of members. For example, an “Organization” dimension in a cube comprises a list of departments and reporting entities for a company. The dimensions can also have a calculation structure that describes data aggregation, e.g. ‘East Region’=‘New York’ plus ‘Boston’, or a calculation structure that describes a more complex calculation, e.g. ‘Benefits’=10% of ‘Salaries’. It will be appreciated that calculations can also be different for each company.
In the context of the present description, data is stored in an OLAP database as a single numerical value for each dimension combination. For example, if the dimensions are ‘Time’, ‘Accounts’, ‘Version’ and ‘Organization’, each of which has a member called ‘Jan08’, ‘Salaries’, ‘Plan’ and ‘Boston’ respectively, then one numeric value is stored for this combination of members. Similarly, a different number is stored in the database for ‘Feb08’, ‘Salaries’, ‘Plan’ and ‘Boston’.
Typically, data is accessed (i.e. imported) in an OLAP database at a detailed level, for example, using the ‘Time’, ‘Accounts’, ‘Version’ and ‘Organization’ dimensions (e.g. ‘Jan08’, ‘Salaries’, ‘Plan’ and ‘Boston’). The data is then processed and reported at an aggregated level to provide historical information, for example, according to the dimensions, ‘Total Year’, ‘Total Expenses’, ‘Plan’ and ‘Total Company’.
As will be described in more detail below, the present invention comprises embodiments of a system and method for accessing data in an OLAP database or cube, configuring operations (i.e. data processes) to process the data, and configuring manipulations involving the data.
In the context of the present description, a process generally refers to data manipulation operations, and is referred to as “processes” or “data processes”. A typical process involves collecting data within a cube, performing an operation on it (e.g. an allocation, averaging or increasing/decreasing the amounts) and then storing data back in the cube. As will be described in more detail below, the present invention according to one aspect provides a structured approach and generalized interface configured for performing operations, such as, data collection, aggregation and storage, and combinations thereof, according to a variety of customer needs without the need for customization. According to a further aspect, the capability to handle exception conditions or customer specific operations is provided. Process in the context of the present description will also refer to a computer-implemented process (i.e. a computer function or software configuration) to execute an algorithm or perform other computer-implemented or configured operations or functions.
In accordance with embodiments of the present invention a system and techniques (e.g. computer-implemented processes) are described in more detail below for accessing data in an OLAP database and configuring processes for manipulating and processing the data.
Reference is made to
According to an embodiment, the system 100 includes a storage module indicated generally by reference 134. The storage module 134 is configured to store data process definitions, for example, as defined by a user. According to an embodiment, the storage module 134 is implemented using a relational data structure or configuration.
As shown in
The client interface module 124 is configured to provide an interface with the client machines 110. According to an embodiment, the client interface module 124 is implemented with a user interface or GUI (Graphical User Interface) which runs on each of the client machines 110 as indicated generally by reference 112. According to an embodiment, the client interface module 124 and the user interface 112 comprise logic and processes configured to provide a user with the capability to specify a processing request for data in the database 140, i.e. a process for querying structural component(s) associate with one of the cubes. According to an embodiment, the application 122 includes a module for storing processes specified by a user in the database, for example, in the storage module 134.
The calculation engine module 126 comprises a computer-implemented process(es) or function(s) that runs on the server 120 and performs manipulation of data in the cube 142 according to a specification, i.e. a data process specified and provided by the user through the user interface 112. According to an embodiment, the execution of a data process is independent of the specification of the data process. For example, a data process can be executed multiple times and the execution of a data process can be scheduled to run at any time. According to an embodiment, the calculation engine is configured to execute process definition(s) retrieved or returned from the storage module 134.
For example, the system and method according to the present invention provides the capability for accessing and/or manipulating data in an OLAP database in order to generate information for planning and reporting purposes. Typical examples include the following:
-
- for each product, calculate monthly 2009 planned unit sales to be 10% greater than the monthly average for January thru September of 2008
- for each product, calculate monthly material unit costs in 2009 to be 15% greater than the average in Quarter 3 of 2008
- for a new product, the 2009 price for customers in the Eastern US is $100; in the West it is $110
- for the optimistic scenario, increase the planned units sold by 100,000 for the whole of 2009, preserving the seasonality and the spread across branches.
- for each month, take the total actual costs of the IT department and allocate them to lines of business based on number of computers in each department. Create a corresponding reversing entry in the IT department
- in a reforecast, assume costs for July 2009 to December 2009 will be the same as in the budget, except in the Atlanta branch where they will be $100,000 less than budget.
The functionality, logic and processes associated with the client interface module 124 and the user interfaces 110 are described in more detail below according to embodiments of the invention. Embodiments of processing modules and functionality of the calculation engine module 126 are also described in more detail below.
In the context of the processes and operations associated with the application 122, i.e. the client interface 124 and the calculation engine 126, “Common Dimensions” are defined as dimensions within which data is not manipulated. The selected members of Common Dimensions determine the member combinations for which data manipulation will take place. For example, if the only Common Dimensions are Time and Products and the selected members are “January; February; March” and “Widgets; Grommets” respectively, then data manipulation will take place for each of the 6 combinations “January, Widgets”, “February, Widgets”, “March, Widgets”, “January, Grommets”, “February, Grommets” and “March, Grommets”.
Source/target dimensions are dimensions within which data is manipulated. The selected source members of Source/Target Dimensions determine the member combinations for which data will be read from the cube. Selected Source dimension members can be calculated, for example, data can be copied from “Total Company” even if Total Company” is the aggregation of many departments. The selected target members of Source/Target Dimensions determine the member combinations for which data will be written back to the cube. Selected Target dimension members must be editable, i.e. leaf members, or non-calculated members into which data can be stored. In the context of the present description, a Source/Target dimension may be referred to as either a Source Dimension or a Target Dimension. Target Dimensions may be further subdivided into Time Target Dimensions and Non-Time Target Dimensions. If Time is a Target Dimension, the Time Target Dimension is the Time Dimension; otherwise it is the NULL dimension. The Non-Time Target Dimension comprises all Target Dimension except the Time Target Dimension.
In accordance with this convention or notation, the address of a data cell or tuple comprises one of the following:
-
- (1) a “Common Dimension” member combination and a “Source Dimension” member combination;
- (2) a “Common Dimension” member combination and a “Target Dimension” member combination;
- (3) a “Common Dimension” member combination, a “Time Target Dimension” member combination (i.e. either NULL or a single member of the Time Dimension) and a “Non-Time Target Dimension” member combination;
- (4) a “Common Dimension” member combination when all dimensions are Common Dimensions, for example, when the operation being performed is “Storing single data value”.
The configuration and operation of the calculation engine 126 and the system 100 is now described in further detail with reference to the user interface depicted in
According to an embodiment, the user interface 112 comprises five screens: a General screen 200 depicted in
The General screen 200 is depicted in
The Common Dimensions screen 300 is depicted in
The Source/Target Members screen 400 according to an embodiment is shown in
Referring still to
The Data Transformation screen 500 according to an embodiment is shown in
As shown in
-
- time is a non-Common Dimension in the cube
- the number (#) of Time source members is the same as the number (#) of Time target members
- the Time source members comprise contiguous leaf members
- the Time target members comprise contiguous leaf members
- one Source Dimension member is selected for all non-Common dimensions other than Time
- one Target Dimension member is selected for all non-Common dimensions other than Time
According to a further aspect, the Data Transformation screen 500 is configured to activate/display the Source data aggregation option 512 based on the following conditions being true: the data process comprises the “Storing/Allocating Data Present in the Cube” operation, and there is more than one member selected from at least one Source Dimension.
According to another aspect, the Data calculation options panel 510 includes a “Delete data from source” option as indicated by reference 516 in
According to another aspect, the Data calculation options panel 510 includes a “Generate contra account entry” option as indicated by reference 518 in
-
- the data process comprises the“Storing/Allocating Data Present in the Cube” operation
- Accounts comprise a non-Common Dimension
- at least one dimension, other than Versions and Accounts, comprises a non-Common Dimension
- only one Source dimension member is selected for the non-Common Dimensions
According to another aspect, the Data calculation options panel 510 includes an “Apply the following transformation to the source data” option as indicated by reference 520 in
-
- “None”
- “Increase by Percentage”
- “Decrease by Percentage”
- “Increase by Absolute Amount”
- “Decrease by Absolute Amount”
- “Multiply by Amount”
According to another aspect, the Data calculation options panel 510 includes a “Target data write” option as indicated by reference 522 in
-
- “Overwrite Existing Data”
- “Add to Existing Data”
- “Subtract from Existing Data”
The Time spread panel indicated by reference 530 in
-
- “Store value to leaf members” indicated by 532
- “Spread based on existing data” indicated by 534
- “Spread based on data in a member property dimension” indicated by 536
- “Spread based on data in a different member combination” indicated by 538
- “Spread evenly” indicated by 540
According to an embodiment, the Data Transformation screen 500 is configured to display/activate the Time spread panel 530 when the following conditions are true:
-
- the operation is not a “Store the following value” operation
- “Time” is non-Common dimension
- there is more than one target member selected from the Time dimension
- the option selected for “Source Data Aggregation” is not “Copy between time members”
As shown in
The Dimension spread panel indicated by reference 550 in
-
- “Store value to leaf members with no spread” indicated by 552
- “Spread based on existing data” indicated by 554
- “Spread based on data in a member property dimension” indicated by 556
- “Spread based on data in a different member combination” indicated by 558
- “Spread evenly” indicated by 560
According to an embodiment, the Data Transformation screen 500 is configured to display/activate the Dimension spread panel 550 when the following conditions are true:
-
- the operation is not a “Store the following value” operation
- there is at least one non-Common Dimension other than the cube dimensions “Time”, “Versions” and “Accounts”
- there is more than one target member selected from at least one non-Common dimension other Time, Versions and Accounts
According to another aspect, the Dimension spread panel 550 is configured to display input boxes 559 for the cube dimensions, i.e. “Account”, “Version” and “Time Periods” for the case of the “Spread Based on the existing data pattern” option 558. According to an embodiment, the cube dimensions, except the dimensions associated with selected multiple Target members, are displayed and the user can select a single member from each. The default selected member for each of the cube dimensions is “Same as Target”.
The Processing Options screen 600 is accessed by the Processing Options tab 250 and an exemplary implementation according to an embodiment is shown in
As shown in
-
- “Spread evenly with no warning”
- “Spread evenly, but generate a warning”
- “Skip this member combination with no warning”
- “Skip this member combination, but generate a warning” as shown in the list box 614 in
FIG. 6 - “Abort the process”
Referring again to
-
- “Spread evenly with no warning”
- “Spread evenly, but generate a warning”
- “Skip this member combination with no warning”
- “Skip this member combination, but generate a warning” as shown in the list box 618 in
FIG. 6 - “Abort the process”
As shown in
-
- “Skip the member combination, but generate a warning” as indicated in the list box 624 in
FIG. 6 - “Skip the member combination with no warning”
- “Abort the process”
- “Skip the member combination, but generate a warning” as indicated in the list box 624 in
The “Details to log” panel 630 is configured to provide user selectable reporting options as indicated by reference 632. According to an embodiment, a drop-down list box 634 is provided to list reporting options, for example, including Minimal (as shown), Moderate, Maximum or Full.
Reference will next be made to
The data flow in accordance with an embodiment may be generalized as follows:
-
- a data process can be executed for multiple combinations of entities. These entities are based on “common” dimensions. For example, the dimensions “Products” and “Customers” comprise common dimensions, and the process is run for each of 10,000 products and for each of 1,000 customers, for a total of 10,000,000 times.
for each combination of Common Dimensions, the following steps occur:
-
- the data is aggregated or averaged from multiple cells in the cube being calculated (based on “Source” members of each non-Common dimension). For example, the average price across all weeks in a quarter, or the total costs for all departments can be calculated. Alternatively, this value can be specified as a fixed value if the process does not involve reading cube data.
- the calculated value can be manipulated further. For example, the average price can be increased by 5%.
- the value is then either stored in multiple cells in the cube or allocated (spread) across multiple cells (based on “Target” members of each non-Common dimension). If the data is allocated, an allocation method is specified; the data can be spread evenly, or based on data that already exists in the cube. For example, in order to forecast seasonality, a sales forecast can be spread across months based on the previous year's sales.
The calculation engine 126 is configured to read data from cells (i.e. tuples) in the cube, and the cells are selected based on combinations of the selected Common Dimension members and the selected source members of Source/Target Dimensions, for example, using the logic as described for the user interface screens. The calculation engine 126 is configured to write data to cells (i.e. tuples) based on combinations of the Common Dimension members and target members of Source/Target Dimensions, which are selected, for example, through the user interface screens as described above.
According to an embodiment, the calculation engine 126 is configured to execute three types of operations: (1) “Store or allocate based on existing data”; (2) “Store single data value”; and (3) “Allocate single data value”. For the Store or allocate based on existing data operation, the calculation engine 126 includes a process or function configured to read from the cube and aggregate, and optionally, average to derive a single data value. The operations “Store single data value” and “Allocate single data value” represent special cases, when the data that is the source of a Process is not present in the cube. For the Store singe data value operation, the calculation engine 126 includes a process or function configured to populate the cube with identical values, e.g. “Product X prices are $100 for all months in all markets”. For the Allocate single data value operation, the calculation engine 126 is configured to allocate a single value across many dimensions, e.g. “Adjust the plan by decreasing planned Total Company Telephone Expenses to $1,000,000 and spread this across departments based on the existing plan”.
In the context of the present description, Common Dimensions comprise a “looping” mechanism that allows data to be read from the cube and written to the cube independently for each combination of selected members from the Common Dimensions.
For each of these combinations, the calculation engine 126 is configured as follows:
-
- (1) for reading data from the cube, the calculation engine 126 is configured to read multiple values from the combinations of all selected source members of Source/Target Dimensions; the values can be either aggregated or averaged, the result of which is one data value for each combination of selected Common Dimension members;
- (2) read data options—the calculation engine 126 is configured to optionally delete data thus read from all combinations of all selected source members of Source/Target Dimensions;
- (3) specified data values—the calculation engine 126 is configured to manipulate data on an individual basis; for example, the calculation engine 126 includes a process for “Storing single data value”, and a process “Allocating single data value”); in these cases, the same data value is used for all combinations of selected Common Dimension members;
- (4) data transformations—the calculation engine 126 is configured to transform a single data value that is, for example, the result of collecting data from the cube, or that, for example, has been entered as a single value; according to another aspect, the calculation engine 126 is configured to add and/or subtract absolute or percentage amounts to the data value, or multiply the data value (by a factor);
- (5) writing data to the cube—the calculation engine 126 is configured to write the data value to the combinations of all selected target members of Source/Target Dimensions. According to a further aspect, the single data value is spread (i.e. allocated) across these combinations or stored in each combination;
- (6) allocations—the calculation engine 126 is configured to allocate data to target dimension members; according to another aspect, the calculation engine 126 is configured to allocate or spread data to the combinations of selected target members of Source/Target Dimensions as follows (for example, as described above the with reference to the user interface 112):
- “Store value to leaf members” (i.e. copy, don't allocate)
- “Spread Based on Existing Data”
- “Spread Based on Data in a dimension Member Property”
- “Spread Based on data in a different member combination”
- “Spread Evenly”
- Data allocation for the Time Dimension is treated differently as described in more detail below. Data allocation according to the “Spread Based on data in a different member combination” is treated as an exception to the methods of addressing cells, as described in more detail below.
- (7) write data options—the calculation engine 126 is configured to write allocated data to the cube according to the following options:
- “Overwrite Existing Data”
- “Add to Existing Data
- “Subtract from Existing Data
According to another aspect, the calculation engine 126 is configured to optionally adjust data in the selected Source dimension members. It will be appreciated that this function allows adjustments to be made, for example, for financial reporting purposes when overheads are allocated between business entities, as described in more detail with respect to “Contra Accounts”.
Reference is now made to
As shown in
As shown in
Reference is next made to
As shown in
Reference is next made to
Reference is next made to
As shown in
If Time is not a Common Dimension (as determined in decision block 1010), then a check is made to determine if the number of Time Target Members is greater than one, as indicated by decision block 1020. If no, then the data to write to the cube, i.e. “Value to Allocate”, is based on the “Value to Process”, as indicated by reference 1060, and because “Time” is a “Common Dimension”, the “Value to Process” is allocated across the non-Time target dimension for the cube in step 1062. The process for writing data to cube 1000 ends as indicated by step 1070. If yes (as determined in decision block 1020), then next a determination is made in decision block 1030 to determine if the “Time Spread Option” is set to “Store value to leaf members”. If no, then a process to calculate time allocation parameters is called as indicated by step 1032, and described in more detail below with reference to
As shown in
Reference is next made to
Referring again to
Referring to
Referring again to
Reference is next made to
Value to Allocate=(Value to Process−Time Non-Editable Values)/# Time Editable Values
Next, the process for calculating time allocated for value to allocate 1200 terminates or ends as indicated by reference 1240, and control returns to the calling process or function.
If no (as determined in decision block 1210), then a check is made in decision block 1212 to determine if the Time Spread Option is set to “Based on Member Properties”. If yes, then the next operation in the process 1200 comprises reading or inputting the “Member Property Value” for the Time Target Dimension Member, as indicated by reference 1214. Next and according to an embodiment, the Value to Allocate is calculated in step 1216 as follows:
ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*MemberPropertyValue/TimeTargetDenominator
Next, the process for calculating time allocated for value to allocate 1200 terminates or ends as indicated by reference 1240.
If the Time Spread Option is not set to the Based on Member Properties (as determined in decision block 1212), then a check is made in decision block 1220 to determine if the Time Spread Option is to the “Spread Based on Existing Data” option. If yes, then the next operation in the process 1200 comprises reading or inputting the “Cell Data Value” for the Common Dimension/Target Dimension Combination, as indicated by reference 1222. Next and according to an embodiment, the Value to Allocate is calculated in step 1224 as follows:
ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*CellDataValue/TimeTargetDenominator
The process for calculating time allocated for value to allocate 1200 then terminates or ends as indicated by reference 1240.
Referring again to
ValueToAllocate=(ValueToProcess−TimeNon-EditableValues)*CellDataValue/TimeTargetDenominator
Next, the process for calculating time allocated for value to allocate 1200 terminates or ends as indicated by reference 1240.
Reference is next made to
Reference is next made to
Referring back to
Reference is next made to
Referring again to
Referring again to
According to an aspect, the process provides the capability to allocate data into non-editable (leaf) cells. For example, if a user wants to allocate a value across the 12 months in a year, but Jan, Feb and Mar contain historical data that is non-editable, then the process is configured to calculate the data values for the non-editable cells (i.e. Jan, Feb, Mar) and subtract the data values (i.e. the sum) from the values to be allocated to the editable cells.
Referring back to
Reference is next made to
ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)/# non-TimeEditableValues
Next, the process for calculating the non-time allocated value to store 1500 terminates or ends as indicated by reference 1540, and control returns to the calling process 1300 in
Referring again to
ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)*MemberPropertyValue/non-TimeTargetDenominator
Next, the process for calculating the non-time allocated value to store 1500 terminates or ends as indicated by reference 1540, and control returns to the calling process 1300 in
Referring again to
ValueToAllocate=(ValueToProcess−non-TimeNon-EditableValues)*CellDataValue/non-TimeTargetDenominator
Next, the process for calculating the non-time allocated value to store 1500 terminates or ends as indicated by reference 1540, and control returns to the calling process 1300 in
If the dimension spread option is not set to Spread Based on Existing Data (as determined in decision block 1520), then the process 1500 operates to calculate the non-time allocated value or data to store based on a different member combination. As indicated by reference 1530, the next operation comprises reading or inputting the “Cell Data Value” for the Different Common Dimension/Target Dimension Combination. Next and according to an embodiment, the Value to Allocate is calculated in step 1532 as follows:
ValueToAllocate=(ValueToProcess−NonTimeNon-EditableValues)*CellDataValue/NonTimeTargetDenominator
Next, the process for calculating the non-time allocated value to store 1500 terminates or ends as indicated by reference 1540, and control returns to the calling process 1300 in
It will be appreciated that according to an aspect, time is treated not the same as other dimensions. For instance, time has an implicit order of its members (e.g. January, February, March) whereas other dimensions have no such implicit order (e.g. Widgets, Grommets, Doodads). Because of this, when manipulating time-related data, the following statement makes sense; “Copy actual sales from January 2008 thru June 2008 into the plan for January 2009 thru June 2009”.
Reference is next made to
It will be appreciated that according to an embodiment, the process for copying data between time members 1700 operates to copy a single value between Time leaf members for each common dimension combination. The single members are selected for all Source and Target dimensions except for Time, which is a non-Common dimension. This requires cell addresses to be made from Common Dimension selected member combinations together with one Source dimension member for the source and one Target dimension member for the target of a single data value being copied. If multiple Time leaf members are selected, then the same number for both Source and Target dimensions are provided, and the Source members are contiguous and all Target members are contiguous. According to an aspect, addressing in the process is indexed through the selected Time members. For example, if the selected Source members are “Jan, Feb, Mar” and the selected Target members are “Jul, Aug, Sep” then data will be copied from Jan to Jul, Feb to Aug and Mar to Sep.
Reference is next made to
The generate contra account entry function is provided to handle an accounting requirement where allocated data needs to be reversed in the entity from which it is being allocated. For example, if total IT department costs in July are $500,000 then this amount can be allocated across lines of business based on the number of PCs used in each. The allocated amounts will be stored in a special allocation account. A reversing entry is made in the IT department so the net effect of this allocation at the total company level is zero. The reversing entry is stored in a Contra Account (which may be the same as the allocation account). According to an embodiment, the contra account functionality may be incorporated into a data process or function.
Reference is next made to
As shown in
If there are no more common dimension members to consider (as determined in step 1914), then the loop through Source Dimension members is performed, as indicated by reference 1920. During the looping operation, the process 1900 checks if the source dimension is equal to accounts, as indicated by reference 1922. If yes, the process 1900 is configured to set the parameter “AlternateFrom Accounts Selection” to the “Accounts Selection”, and the parameter “AlternateTo Accounts Selection” is set as the “Contra Account”, as indicated by reference 1924. After step 1924, a check is made to determine if there are any more Source Dimension members to consider as indicated by reference 1926. If yes, then the next Source Dimension member is considered in step 1928 and the looping operation in step 1920 is repeated. If the source dimension is not set to Accounts (as determined in decision block 1922), then the process 1900 is configured to set the parameter “Alternate Source Dimension Selection” to the “Leaf Members of Source Dimension Selection”, as indicated by reference 1923. A check then is made in step 1926 to determine if there are any more Source Dimension members to consider. If yes, then the next Source Dimension member is considered in step 1928 and the looping operation in step 1920 is repeated.
Referring to
In operation, the generate contra account entry option allows data to be copied back into selected Source dimension members for a single Account member. Because data cannot be stored into non-leaf members, the selected members for both Common and non-Account Source dimension members are adjusted to include leaf members below the selected Source dimension members. Data in these members is then copied from the source account to the contra account.
The functionality and features associated with the server 120 (
The present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Certain adaptations and modifications of the invention will be obvious to those skilled in the art. Therefore, the presently discussed embodiments are considered to be illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.
Claims
1. A system for processing data in an OLAP database, said system comprising:
- a user interface module;
- a calculation engine;
- said user interface comprising a screen configured for specifying a data process to be performed on data in the OLAP database in response to one or more user inputs; and
- said calculation engine being configured to interface to the OLAP database and execute said data process and generate a data process output.
2. The system as claimed in claim 1, wherein said user interface module comprises a data transformation screen, said data transformation screen being configured for specifying the data process according to one or more dimensions, wherein each of said one or more dimensions comprises a characterization of data stored in the OLAP database.
3. The system as claimed in claim 2, wherein said one or more dimensions include one or more common dimensions and each said one or more common dimensions comprises a plurality of members, and one or more non-common dimensions and each of said one or more non-common dimensions comprises a plurality of members.
4. The system as claimed in claim 3, wherein said data process includes a user inputted data value, and said calculation engine is configured to manipulate data in the OLAP database based on said inputted data value.
5. The system as claimed in claim 3, wherein said calculation engine is configured to manipulate data in the OLAP database for selected common dimension members based on a combination of said associated common dimensions.
6. The system as claimed in claim 3, wherein said non-common dimension includes one or more source-target dimensions for specifying data to be manipulated, and said source-target dimensions comprising one or more source members and one or more target members, wherein said one or more source members identify data to be accessed from the OLAP database, and wherein said one or more target members identify data to be written back to the OLAP database.
7. The system as claimed in claim 6, wherein said source-target dimensions comprise time-based target dimensions and non-time based target dimensions.
8. The system as claimed in claim 7, wherein said user interface includes a screen configured for selecting one or more of said common dimensions for a data process or one or more of said source-target dimensions, and said screen including input controls responsive to user input for selecting said one or more of said source members or said target members.
9. The system as claimed in claim 8, wherein said data transformation screen is configured to provide an aggregation option associated with the members of said source-target dimension, and said aggregation option comprising one of an aggregate operation, an average including empty values operation, an average excluding empty values operation, or a copy between time members operation.
10. The system as claimed in claim 9, wherein said data transformation screen is configured to provide a delete data from source operation, and said delete data from source operation being responsive to a user input.
11. The system as claimed in claim 9, wherein said data transformation screen is configured to provide a source data operation, and said source data operation comprising one of an increase by percentage operation, a decrease by operation, an increase by absolute amount operation, a decrease by absolute amount operation, or a multiply by amount operation.
12. The system as claimed in claim 9, wherein said data transformation screen is configured to provide a target data write operation, and said target data write operation comprising one of an overwrite existing data operation, an add to existing data operation, or a subtract from existing data operation.
13. The system as claimed in claim 9, wherein said data transformation screen is configured to provide a time spread operation for allocating data along a time target dimension, and said time spread operation comprising one of a store value to leaf members operation, a spread based on existing data operation, a spread based on data in a member property dimension, or a spread evenly operation.
14. The system as claimed in claim 9, wherein said data transformation screen is configured to provide a data spread operation for allocating data along a non-time target dimension, and said data spread operation comprising one of a store value to leaf members operation with no spread, a spread based on existing data operation, a spread based on data in a member property dimension, or a spread evenly operation.
15. The system as claimed in claim 14, wherein said data spread operation is configured for a data value specified by a user.
16. The system as claimed in claim 2, wherein said user interface includes a processing exception screen, and said processing exception screen being configured to provide a processing options for one or more processing exceptions.
17. The system as claimed in claim 16, wherein said processing exceptions comprise a spread on zero condition, and said processing options comprise one of a spread evenly without a warning operation, a spread evenly with a warning operation, a skip member combination without a warning operation, a skip member combination with a warning operation, or an abort process operation.
18. The system as claimed in claim 16, wherein said processing exceptions comprise a dimension spread invalid value handing condition, and said processing options comprise one of a spread evenly without a warning operation, a spread evenly with a warning operation, a skip member combination without a warning operation, a skip member combination with a warning operation, or an abort process operation.
19. The system as claimed in claim 2, wherein said calculation engine is configured to execute one or more of a store data based on existing data operation, a store single data value operation, or an allocate single data value operation.
20. The system as claimed in claim 2, wherein said calculation engine is configured to generate a contra account entry, and said data transformation screen is configured for a user to specify data for said contra account entry.
21. A computer-implemented method for processing data stored in an OLAP cube, said method comprising the steps of:
- characterizing data in the OLAP cube according to a common dimension, and said common dimension comprising one or more common dimension members;
- characterizing data in the OLAP cube according to a non-common dimension, and said non-common dimension comprising one or more non-common dimension members;
- specifying a combination comprising selected common dimension members and selected non-common dimension members;
- selecting cells in the OLAP cube based on said specified combination, and reading data from said selected cells;
- applying a processing operation to the data read from said selected cells; and
- writing data from said processing operation back to the OLAP cube.
22. The method as claimed in claim 21, wherein said non-common dimensions include one or more of a source-target dimensions, and said source-target dimensions comprise one or more source members and one or more target members, wherein said one or more source members identify data to be accessed from the OLAP database, and wherein said one or more target members identify data to be written back to the OLAP database.
23. The method as claimed in claim 22, wherein said processing operation comprises one of an allocate based on existing operation, a store single data value operation, or an allocate single data value operation.
24. The method as claimed in claim 22, wherein said source-target dimensions comprise time-based target dimensions and non-time based target dimensions.
25. The method as claimed in claim 21, wherein said step of writing data comprises one of overwriting existing data in the OLAP cube with data from said processing operation, adding data from said processing operation to existing data in the OLAP cube, or subtracting data from said processing operation to existing data in the OLAP cube.
26. A computer program product for processing data in an OLAP database, said computer program product comprising:
- a storage medium configured to store computer readable instructions;
- said computer readable instructions including instructions for,
- characterizing data in the OLAP cube according to a common dimension, and said common dimension comprising one or more common dimension members;
- characterizing data in the OLAP cube according to a non-common dimension, and said non-common dimension comprising one or more non-common dimension members;
- specifying a combination comprising selected common dimension members and selected non-common dimension members;
- selecting cells in the OLAP cube based on said specified combination, and reading data from said selected cells;
- applying a processing operation to the data read from said selected cells; and
- writing data from said processing operation back to the OLAP cube.
Type: Application
Filed: May 5, 2016
Publication Date: Oct 4, 2018
Inventors: PAUL GRANT BARBER (Mississauga), Robert John Walker (Mississauga)
Application Number: 15/147,130