Dynamic application builder for multidimensional database environments
By dynamically generating customized applications systems and methods, using weighting algorithms and API calls to automatically group and generate code, the time-consuming and inefficient development of multi-dimensional database applications is solved, and efficient and accurate data query and processing is achieved.
Patent Information
- Application Number
- CN202280023689.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-01-26
- Filing Date
- 2022-01-24
- Publication Date
- 2024-12-17
- Estimated Expiration
- 2042-01-24
AI Technical Summary
The prior art is time-consuming, inefficient and error-prone to the development process when developing customized applications for multi-dimensional databases due to its complexity and massive data content, resulting in low precision and high error rate of generated applications.
Provide a system and method to dynamically generate customized applications for querying multidimensional databases through at least one processor and memory device, use API calls to retrieve the hierarchical structure of multidimensional databases, apply weighting algorithms to automatically group target outputs, and dynamically generate machines. Write code to generate application packages to query multidimensional databases.
It significantly reduces development time, and the generated application package resources are efficient and can be completed within 15 minutes. It is 50%-80% less code than traditional methods, which improves the speed and efficiency of querying and processing data.
Smart Images

Figure CN117043743B_ABST
Abstract
Description
Background Art
[0001] Due to the technical complexity, massive data content, and varying structures of multidimensional databases, applications for querying and processing data from such databases are usually developed through ad hoc, manual, and time-consuming processes, which often result in inefficient applications with low accuracy and high error rates. Summary of the invention
[0002] In one example, a system for generating a customized application for querying a multidimensional database of a target platform is provided. The system includes at least one processor and at least one memory device. The at least one memory device stores computer executable instructions, which, when executed by the at least one processor, cause the at least one processor to: receive a request to build a customized application for querying a multidimensional database of a target platform, and discover the application definition of the customized application by: making an API call to a master data source associated with the multidimensional database. The API call retrieves master data indicating a hierarchical structure of the multidimensional database, and at least one processor uses the master data to determine the application definition. The application definition indicates the target output to be generated by the customized application based on data stored in the multidimensional database, influencers of each target output in the target output corresponding to members of one or more first dimensions of the multidimensional database, and a granularity definition of each influencer in the influencers relative to a second dimension of the multidimensional database. When executed, the computer executable instructions also cause the at least one processor to automatically group the target outputs into a plurality of mutually exclusive groups by applying a weighting algorithm to the application definition, each group including two or more target outputs in the target outputs. The weighting algorithm assigns a first weight to each influencer relative to the second dimension based on the granular definition of the influencer, assigns a second weight to each target output relative to the second dimension, the second weight corresponding to the first weight assigned to the influencer of the target output, and identifies the target output of each group based on the second weight assigned to each target output. The computer executable instructions, when executed, also cause at least one processor to dynamically generate machine-written code, the machine-written code comprising a different code block for each group of target outputs, wherein the different code block for each group comprises a first portion and a second portion. The first portion of the code block for each group is generated based on the second weight assigned to the target output of the group and is configured to retrieve a section of the multidimensional database corresponding to the second weight assigned to the target output of the group. The second portion of the code block for each group is generated based on the first weight assigned to the influencer of the target output of the group and is configured to generate the target output of the group based on the retrieved section. The computer executable instructions, when executed, further cause at least one processor to: compile the machine-written code into an application package corresponding to the target platform, the application package being configured to query data from the multidimensional database and generate the target output based on the queried data according to the code block; and deploy the application package to the target platform for execution on the multidimensional database.
[0003] In another example, a method for generating a customized application for querying a multidimensional database of a target platform is provided. The method includes: receiving a request for building a customized application for querying a multidimensional database of a target platform by at least one processor; and discovering the application definition of the customized application by the at least one processor in the following manner: making an API call to a master data source associated with the multidimensional database. The API call retrieves master data indicating the hierarchical structure of the multidimensional database, which is used to determine the application definition. The application definition indicates the target output to be generated by the customized application based on the data stored in the multidimensional database, the influencers of each target output in the target output corresponding to the members of one or more first dimensions of the multidimensional database, and the granularity definition of each influencer in the influencers relative to the second dimension of the multidimensional database. The method also includes: automatically grouping the target outputs into a plurality of mutually exclusive groups by the at least one processor applying a weighting algorithm to the application definition, each group including two or more target outputs in the target outputs. The weighting algorithm assigns a first weight to each influencer relative to the second dimension based on the granular definition of the influencer, assigns a second weight to each target output relative to the second dimension, the second weight corresponding to the first weight of the influencer assigned to the target output, and identifies the target output of each group based on the second weight assigned to each target output. The method also includes: dynamically generating machine-written code by the at least one processor, the machine-written code including a different code block for each group of target outputs, wherein the different code block for each group includes a first portion and a second portion. The first portion of the code block for each group is generated based on the second weight assigned to the target output of the group and is configured to retrieve a section of the multidimensional database corresponding to the second weight assigned to the target output of the group. The second portion of the code block for each group is generated based on the first weight of the influencer assigned to the target output of the group and is configured to generate the target output of the group based on the retrieved section. The method also includes: compiling the machine-written code into an application package corresponding to the target platform by the at least one processor, the application package being configured to query data from the multidimensional database and generate the target output based on the queried data according to the code block; and deploying the application package to the target platform for execution on the multidimensional database by the at least one processor.
[0004] In another example, a computer program for generating a customized application for querying a multidimensional database of a target platform is provided. The computer program includes a non-transitory computer-readable medium storing computer executable instructions, which, when executed by one or more processors, causes the one or more processors to: receive a request to build a customized application for querying a multidimensional database of a target platform, and discover the application definition of the customized application by: making an API call to a master data source associated with the multidimensional database. The API call retrieves master data indicating a hierarchical structure of the multidimensional database, which is used to determine the application definition. The application definition indicates the target output to be generated by the customized application based on data stored in the multidimensional database, influencers of each target output in the target output corresponding to members of one or more first dimensions of the multidimensional database, and a granularity definition of each influencer in the influencers relative to a second dimension of the multidimensional database. When executed, the computer executable instructions also cause the one or more processors to group the target outputs into a plurality of mutually exclusive groups by applying a weighted algorithm to the application definition, each group including two or more target outputs in the target outputs. The weighting algorithm assigns a first weight to each influencer relative to the second dimension based on the granular definition of the influencer, assigns a second weight to each target output relative to the second dimension, the second weight corresponding to the first weight assigned to the influencer of the target output, and identifies the target output of each group based on the second weight assigned to each target output. The computer executable instructions, when executed, also cause one or more processors to dynamically generate machine-written code, the machine-written code comprising a different code block for each group of target outputs, wherein the different code block for each group comprises a first portion and a second portion. The first portion of the code block for each group is generated based on the second weight assigned to the target output of the group and is configured to retrieve a section of the multidimensional database corresponding to the second weight assigned to the target output of the group. The second portion of the code block for each group is generated based on the first weight assigned to the influencer of the target output of the group and is configured to generate the target output of the group based on the retrieved section. When executed, the computer executable instructions also cause one or more processors to: compile the machine-written code into an application package corresponding to the target platform, the application package being configured to query data from the multidimensional database and generate the target output based on the queried data according to the code block; and deploy the application package to the target platform for execution on the multidimensional database. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Figure 1 An operating environment for dynamically and automatically generating custom applications for execution in a multidimensional database environment is shown.
[0006] Figure 2 It shows that it can be Figure 1 A drive definition template generated for the operating environment.
[0007] Figure 3 shows the application of a weighted algorithm to the Figure 1 The application definitions discovered by the operating environment are used to generate customized application results.
[0008] Figure 4 A method for dynamically and automatically generating a customized application for execution in a multidimensional database environment is presented.
[0009] Figure 5 shows that it can be used to implement Figure 1 components of the operating environment and Figure 4 The computing environment of the method. DETAILED DESCRIPTION
[0010] Figure 1 An operating environment 10 for automatically and dynamically generating customized applications for execution in a multidimensional database environment is shown. The operating environment 10 may include a user device 12, a target platform 14, and an application builder server 16. Each of these systems may communicate with each other via one or more private and / or public networks 18 (e.g., the Internet).
[0011] The user device 12 may be a computing device that enables a user to access a remote system, such as the target platform 14 or the application builder server 16, through one or more networks 18. For example, the user device 12 may be a laptop, a desktop, a thin client terminal, a mobile device, or a tablet. The user device 12 may include a web browser or one or more apps for connecting to a remote system through one or more networks 18.
[0012] The target platform 14 may be a computing platform on which it is desired to deploy and execute custom applications. The target platform 14 may be a multidimensional database environment, and may include a combination of hardware and / or software configured to maintain multidimensional databases associated with various applications. In one example, the target platform 14 may be configured to provide organizational and analytical services to various operational aspects of an enterprise using one or more multidimensional databases. The target platform 14 may be locally hosted by a user of the target platform 14, such as at an enterprise served by the target platform 14. Alternatively, the target platform 14 may be provided as a cloud service, and multiple enterprise users may subscribe to and access the cloud service via the Internet.
[0013] In some examples, the target platform 14 may include a master data management (MDM) server 20 configured to implement an enterprise's master data management (MDM) system 22, and may include an enterprise performance management (EPM) server 24 configured to implement an enterprise's EPM system 26. In an alternative example, the enterprise's MDM system 22 and EPM system 26 may be hosted on separate target platforms 14.
[0014] The MDM system 22 can be configured to implement and maintain a master data source 28 that stores the master data 30 of an enterprise. The master data 30 may generally indicate the assets, liabilities, accounts, and structure of the enterprise and the relationships between these different items. For example, the master data 30 may indicate the hierarchical structure of the enterprise's products, accounts, customers, business scope, reporting time periods, etc. The master data 30 may also indicate the hierarchical structure of one or more multidimensional databases 32 of the enterprise, which will be described in more detail below. Portions of the stored master data 30 may involve and be affected by various business units and applications across the enterprise. The MDM system 22 can be communicatively coupled to these business units and applications, and can be configured to update the master data 30 when operations across the enterprise cause the master data 30 to change, so as to ensure the timeliness, accuracy, and completeness of the master data 30.
[0015] The EPM system 26 may be configured to implement one or more multidimensional databases 32 (which may also be referred to as cubes) of an enterprise, and may be configured to plan, budget, forecast, and report on the operating performance of the enterprise using the multidimensional databases 32. Each multidimensional database 32 may be conceptualized as a multidimensional matrix (e.g., three or more dimensions), where each dimension represents the highest level of consolidation of the multidimensional database 32. Exemplary dimensions of the enterprise's multidimensional database 32 may include an account dimension, a product dimension, a location dimension, a customer dimension, a sales channel dimension, a period dimension, and a currency dimension, to name a few.
[0016] Each dimension may include multiple members, and each member may also include multiple members. Therefore, each dimension may be organized into a hierarchical tree structure, wherein the dimension itself serves as a root node and a parent node of one or more members, and each parent node may be a leaf node or a parent node of one or more other members, and so on. For example, the account dimension may include a volume member, a unit price member, a premium member, and a military discount member and be a parent node thereof. The product dimension may include a member of each product line of an enterprise and be a parent node thereof, and the member may in turn include a member of each product of the product line and be a parent node thereof. A given combination of members of different dimensions, all from a multidimensional database 32, may represent the intersection of those members within the multidimensional database 32, and may point to a data value corresponding to the combination in the multidimensional database 32.
[0017] Members below a parent node of a dimension may be referred to as descendants of the parent node, and members above a given member of a dimension (and the root node) may be referred to as ancestors of the given member. Members one level below a parent node of a dimension may be referred to as child nodes of the parent node, and the multidimensional database 32 may store computational logic (e.g., summation, subtraction, mathematical formulas) that defines how the child nodes of a parent node relate to the parent node.
[0018] Different levels of consolidation within a dimension can be considered as different generations of the dimension, with the root node of the dimension belonging to the first generation of the dimension and the members of each subsequent level belonging to a different iteration numbered generation of the dimension. More specifically, each member at the same distance from the root node of the dimension can be part of the same generation of the dimension, with generations having a gradually increasing number as the distance from the root node between members of the generation increases. For example, referring to the product dimension above, the first generation can include product dimensions, the second generation can include product line members, and the third generation can include the products of each product line member.
[0019] The complex structures and large amounts of data supported by the multidimensional database 32 enable data to be organized and processed at a scale far beyond what is actually possible with human thought or using pen and paper. Accordingly, computer executable applications can be developed and executed for the multidimensional database 32 for querying and processing data therefrom to derive useful information. For example, when the target platform 14 is serving an enterprise, such applications can be used for the purpose of planning, budgeting, forecasting, and reporting business performance at different levels of granularity. For example, an application can be developed that is configured to generate and display a comprehensive view of the net sales revenue of the enterprise when executed on the target platform 14, which is subdivided by one or more members of one or more dimensions of the multidimensional database 32 (e.g., by product, entity, customer, sales channel, period, etc.).
[0020] Due to the significant differences between industries and even between enterprises within the same industry, applications often need to be customized for the specific structure of an enterprise and the enterprise's multidimensional database 32. In order to provide such customization, an enterprise may hire a developer who spends a large amount of time (e.g., multiple days) manually analyzing the structure of the enterprise to identify the computational logic associated with the desired target output of the application relative to the structure of the enterprise's multidimensional database 32, and writes a separate computer code for each desired target output, which is configured to query and process data from the multidimensional database 32 when executed to generate the target output. Given the technical complexity, large amounts of data content, and uniqueness of the multidimensional database 32 across different enterprises, developing and deploying such applications in this manner is a relatively lengthy process, which may result in inefficient applications with low accuracy and high error rates.
[0021] For example, the chart of accounts used by an automobile manufacturing company may differ significantly from the chart of accounts used by a pharmaceutical company, both of which may desire an application configured to query and process data from their multidimensional database 32 to derive net sales revenue with a specified level of granularity. The calculation of net sales revenue for the automobile manufacturing company may depend on the number of vehicles sold, the price of each vehicle, seasonal discounts applied during certain months of the year, and promotional costs (e.g., 0% interest financing). In contrast, the calculation of net sales revenue for a pharmaceutical company may depend on sales volume, licensing / royalty income, commercial rebates, employer-sponsored or self-insured health plans, and regulatory price adjustments. Therefore, the drivers and calculation logic used to determine net sales revenue for each of these businesses may vary greatly.
[0022] The granularity of data for each desired target output also adds to the complexity of the above problems. Data granularity is a subtle and layered challenge for both computers and humans. A given enterprise's multidimensional database 32 may have ten to fifteen dimensions, each with a hierarchy of thousands of members based on the complexity of the enterprise. Manually analyzing such relationships to determine the appropriate source data and calculation logic to provide the desired target output is cumbersome, imprecise, and often error-prone.
[0023] For example, continuing with the above example, the number of vehicles sold by an automobile manufacturing company may be further defined in its multidimensional database 32 by the following: legal entity, nameplate (e.g., vehicle brand and model), transaction currency, sales channel (e.g., retail or fleet), customer, and whether the customer is an external entity (e.g., a car dealer) or represents an internal asset transfer (e.g., a factory in Singapore shipping finished goods to a factory in Canada for sale in the Canadian market). The latter may be relevant to whether sales are double-counted. Conversely, the sales volume of a pharmaceutical company may be further defined in its multidimensional database 32 by the following: sales location, the entity that recognizes the sale as revenue, the hospital system that prescribes the drug resulting in the sale, the rebate rate corresponding to the sale, and any additional discounts applicable to the sale under a contract with a pharmacy benefit manager (PBM).
[0024] The granularity of the data may also vary between accounts in a business's chart of accounts. For example, the number of people in a manufacturing workforce may be further broken down by entity / location rather than by product. Because the workforce may produce multiple products, it may not be possible to track the per capita cost of each individual product produced at the factory. As a further example, sales volume may be further broken down by product name rather than by cost center (e.g., information technology, general services, accounting, and manufacturing).
[0025] The above examples highlight the complexity and technical difficulties of developing applications for querying and exporting target outputs from the multidimensional database 32 of each enterprise. The application builder server 16 overcomes these technical difficulties by providing a simplified customized application generation solution for the multidimensional database environment. Specifically, the application builder server 16 is configured to implement an algorithm that helps to automatically generate customized, stable and resource-efficient applications for querying the unique multidimensional database 32 of the enterprise and accurately providing the target output expected by the enterprise. Compared with the above manual process, the application builder server 16 is usually able to generate and deploy application packages for the multidimensional database environment in about fifteen minutes or less, and such application packages usually include 50%-80% less code than the application previously developed for the multidimensional database environment. Therefore, the application package developed by the application builder server 16 consumes less resources of the target platform 14, and queries and processes data from the multidimensional database 32 with increased speed and efficiency. The operating environment 10 or more specifically the application builder server 16 therefore greatly enhances the technical field of databases.
[0026] The application builder server 16 may host an application creation engine 34 configured to generate customized applications for querying and exporting target outputs from the enterprise's multidimensional database 32. The application creation engine 34 may include a discovery module 36, a decision module 38, and a deployment module 40. These modules may be defined by different sets of computer program instructions executed on a processor of the application builder server 16, and may be configured to implement algorithms for automatically generating resource-efficient customized applications for multiple enterprises across various industries. These modules may be configured to collaborate with each other, various databases, and various external systems (e.g., user devices 12, MDM systems 22, and EPM systems 26) to facilitate the creation of dynamic machine-written applications.
[0027] The discovery module 36 may be configured to: discover application definitions 42 that define various configuration parameters of the requested custom application, including dimensions, user inputs, dashboards, and computational logic of the custom application; and store the application definitions for machine-driven analysis and decision making. For example, the discovery module 36 may be configured to discover application definitions 42 based on user input 44 received from a user via the user device 12 and / or master data 30 retrieved from the master data source 28.
[0028] For example, the application definition 42 may indicate a number of target outputs generated by the custom application based on: data stored in the multidimensional database 32, influencers of each target output that affect the calculation of the target output, calculation logic for each target output that defines influencers of the target output and relationships between the target output, and granular data for each target output.
[0029] Each target output may indicate a data item (e.g., an account) to be calculated and output by the custom application based on data retrieved from the multidimensional database 32, such as in a form that allows the data item to be viewed and digested by the user at different levels of granularity (e.g., by product, sales channel, month). For example, the custom application may be configured to output a multidimensional data cube similar to the multidimensional database 32 for each target output. Thus, the target output may define the left side (LHS) of an equation that is machine-written by the application creation engine 34 for the custom application.
[0030] The influencers, calculation logic, and granularity data may define the right side (RHS) of the machine-written equation. The influencers indicated for each target account may correspond to members of one or more dimensions of the multidimensional database 32 that influence the target account (e.g., constituent accounts that combine to form a target output). The calculation logic for each target output may indicate a formula (e.g., addition, multiplication, division, subtraction) used to calculate the target output from the influencers. The granularity data for each target output may indicate the level of granularity of each influencer used to calculate the target output (e.g., using influencer data broken down by product, entity, customer, channel, time period, and currency within the multidimensional database 32) relative to the target output of other dimensions of the multidimensional database 32. The granularity data for each target output may also indicate the level of granularity at which the target output is provided relative to other dimensions (e.g., generating a target output broken down by product, entity, customer, channel, time period, and currency).
[0031] The discovery module 36 may be coupled to a template database 46 and a front-end portal 48, such as a website, hosted by the application builder server 16. A user may access the front-end portal 48 via the user device 12 and thereby may submit a request to the discovery module 36 to build a custom application for the target platform 14, or more specifically, for the EPM system 26 of the target platform 14. The user may also provide user input 44 through the front-end portal 48 indicating selected configuration parameters for the custom application, such as application type, currency processing type, currency rate method, offset strategy, cube information, period granularity, financial calendar, dimensions, driver definitions, table definitions, security matrix, and master data source.
[0032] The application type configuration parameter may indicate the type of target platform 14 for which the custom application is desired. Different target platforms 14 may support different programming languages and storage structures (e.g., data blocks, indexes, hybrids), and a given target platform 14 may offer different subscription levels that support different programming languages and storage structures. The application type may thus indicate the programming languages and storage structures that are compatible with a given user's target platform 14. The application type may also indicate one or more purposes of the application, such as driver-based forecasting, what-if scenarios, long-term planning, variance analysis, and rolling forecasts. The application type may also indicate the target output of the custom application.
[0033] The currency handling type configuration parameter can define the conversion / transaction logic for the custom application. Multinational companies may perform their revenue and expense planning in local currencies, and financial statements may need to be converted into the company reporting currency (usually the company's location) for management reporting and analysis. In addition, while most business units conduct transactions in the local currency of the business unit's actual location, there are times when a business unit executes purchase orders and revenue contracts in a non-local currency. These exceptions introduce complexity into the currency conversion process and require different treatment when calculating from the transaction currency to the business unit currency and then to the reporting currency. Therefore, the currency handling type configuration parameter can define this conversion / transaction logic generated by the decision module 38 for the requested application.
[0034] The currency exchange rate method configuration parameter may define how the requested custom application will load the currency conversion rate. As an example, this information may be used by the application creation engine 34 or more specifically the decision module 38 to determine whether to multiply or divide the conversion rate to convert from transaction / entity currency to reporting currency. This configuration parameter may work in conjunction with the above-mentioned currency handling type configuration parameter.
[0035] Elimination policy configuration parameters may be designed to eliminate double counting of internal company transactions by custom applications. While such transactions may be relevant to tracking and measuring the performance of each business unit / unit, it may be desirable to eliminate them when reporting performance externally to the company. For example, elimination policy configuration parameters may indicate elimination of transactions between buyers and sellers within the company, and may indicate elimination of transactions between business units or lines of business of the company. Elimination policy configuration parameters may collaborate with the internal and external customer hierarchies identified by the discovery module 36, for example, from the master data 30 and / or user input 44, to enable the decision module 38 to generate machine-written elimination code for the requested custom application and to support the hierarchical structure for management and external reporting.
[0036] The cube information configuration parameters may indicate the number, name and type of cubes forming the enterprise's multidimensional database 32. The decision module 38 may utilize the parameters to generate machine-written code specifically for accessing and querying data from the enterprise's multidimensional database 32.
[0037] The period granularity configuration parameter may define the time granularity at which the enterprise plans its financial situation, such as by year, quarter, month, week, day, or a combination thereof. The financial calendar configuration parameter may indicate the first month of the enterprise's calendar year, such as defined in the enterprise's EPM system 26. The decision module 38 may be configured to utilize these configuration parameters to establish appropriate calculation logic for rolling balances, inventory, establishing reporting periods, etc.
[0038] Dimension configuration parameters may define the granularity of data that a company uses to organize its assets and accounts and to plan its finances. For example, dimension configuration parameters may instruct an enterprise to plan its sales by product, forecast its revenue by business line, plan its headcount by cost center, etc. Dimension configuration parameters may include information derived from retrieved master data 30, such as identification of dimensions of the enterprise's multidimensional database 32 and the structure of such dimensions (e.g., members, hierarchies, dimension calculation logic).
[0039] The driver definition configuration parameters may indicate target outputs to be output by the custom application, and may indicate influencers, calculation logic, and granular data for each target output as described above. The driver definition configuration parameters may also indicate any exceptions to be applied to influencers in the calculation of the target outputs, as described in more detail below.
[0040] The form definition configuration parameters may indicate how the output of the application is presented to the user. For example, the form definition configuration parameters may define, for each target output, how the target output is represented in a table format (e.g., what data content is placed in the rows and columns of the table). The security matrix configuration parameters may indicate who can access which entries of each target output. For example, the security matrix configuration parameters may indicate that users from a particular business unit of the enterprise can access portions of the target output related to that business unit, but cannot access other portions.
[0041] The master data source configuration parameters may identify the location (e.g., Internet address) of the enterprise's MDM system 22 and the master data source 28. The discovery module 36 may be configured to determine the application definition 42 based on a combination of master data 30 retrieved from the master data source 28 using the master data configuration parameters and user input 44 provided via the user device 12.
[0042] A user may access the discovery module 36 and submit a request to build a custom application for the target platform 14, or more specifically, the EPM system 26, for querying and processing data from one or more multidimensional databases 32 of the EPM system 26 via the user device 12 and the front-end portal 48. In response to receiving the request for the custom application, the discovery module 36 may be configured to generate a graphical user interface (GUI) 50 and transmit the graphical user interface (GUI) 50 to the user device 12 via the front-end portal 48. The GUI 50 may enable the user to submit user input 44 for defining the above-mentioned application definition 42. The discovery module 36 may also be configured to dynamically update the GUI 50 when the user input 44 is entered to simplify providing data for the application definition 42 and guide the user to provide data for the application definition 42. For example, the discovery module 36 may be configured to build a Visual Basic for Applications (VBA) template of the GUI 50 on the fly based on the user input 44 received through the GUI 50, the user input 44 being optimized for collecting the above-mentioned configuration parameters from the user. These templates may also have built-in validation to check the entered data for errors.
[0043] As an example, in response to receiving a request to generate a custom application for querying and processing data from one or more multidimensional databases 32 of a target platform 14, the discovery module 36 can be configured to transmit a GUI 50 to a user device 12 that provides fields for entering target outputs for the custom application, the location (e.g., Internet address) of the MDM system 22 (and primary data source 28) and EPM system 26 (and multidimensional database 32) of the enterprise of the user requesting the application, and credentials for those systems.
[0044] In response to receiving the location and credentials of the MDM system 22, the discovery module 36 may be configured to make an API call to the MDM system 22, e.g., via a master data API 54 provided by the MDM system 22, to retrieve master data 30 from the master data source 28, the master data 30 indicating the dimensions, members, hierarchies, and internal calculation logic of the multidimensional database 32. The discovery module 36 may then be configured to dynamically update the GUI 50 to list these dimensions, e.g., in one or more drop-down lists, as user-selectable options for defining driver-defined configuration parameters for a custom application.
[0045] In particular, the user may interact with the GUI 50 to select one or more of the listed dimensions that are relevant to the custom application. For example, the user may select one or more of the listed dimensions as influencer dimensions, whose members may provide influencers for the target output, and may select one or more of the dimensions as granularity dimensions, whose members may provide granular definitions of the selected influencers. In response to selecting one or more of the listed dimensions, the discovery module 36 may be configured to dynamically update the GUI 50 to list the members of the selected dimensions as selectable options for defining influencers and granular definitions for each target output, such as in the form of a drop-down list. The discovery module 36 may also be configured to dynamically update the GUI 50 to include fields for defining the calculation logic for each target output when an influencer for each target output is selected.
[0046] As an example, in response to receiving user input 44 indicating target outputs and associated dimensions submitted via GUI 50, discovery module 36 may be configured to dynamically generate a driver definition template that is optimized based on the received data to guide the user in defining a driver definition for a custom application. Specifically, the driver definition template generated by discovery module 36 may have a tabular format with rows pre-populated with target outputs and columns pre-populated with indicated dimensions. Discovery module 36 may then be configured to update GUI 50 with the driver definition template, with which the user may interact to define a driver definition for a custom application.
[0047] At least one of the dimensions (e.g., a dimension corresponding to a measure of the enterprise (e.g., an account dimension)) may be labeled as an influencer dimension (e.g., a dimension from which an influencer may be selected) within the driver definition template, and the remaining dimensions may be labeled as granular dimensions (e.g., dimensions that provide granularity to influencers) within the driver definition template. Such labeling may be performed manually by a user via the GUI 50 as described above, or may be performed automatically by the discovery module 36 based on the type of dimension (e.g., currency, account, period, product), which may be indicated in the retrieved master data 30 and / or manually defined by the user via the GUI 50. Specifically, the template database 46 may store data that associates various dimension types with either an influencer dimension label or a granular dimension label. The driver definition template may then enable the user to modify the default label, if desired.
[0048] The discovery module 36 may also be configured to pre-populate the driver definition template with the structure of each dimension, such as the members, hierarchies, and / or internal calculation logic of each dimension, which may be indicated in the master data 30 retrieved from the master data source 28. As an example, for each target output, the driver definition template may provide one or more influencer drop-down lists that list the members, hierarchies, and / or calculation logic of each influencer dimension. A user may then interact with the influencer drop-down list associated with each target output to select a member of the influencer dimension to serve as an influencer of the target output.
[0049] In response to the selection of an influencer for a given target output, the driver definition template can be configured to automatically generate granularity drop-down lists in association with the selected influencer, wherein each granularity drop-down list is used to define a granularity definition of the influencer relative to a different granularity dimension. To this end, each granularity drop-down list can be pre-populated with the structure of the granularity dimension associated with the drop-down list, such as members, generations, and child node groups of the granularity dimension. The user can then interact with the drop-down list to select one or more of the listed items as the granularity definition of the influencer relative to the granularity dimension.
[0050] In response to the selection of an influencer for a given target output, the driver definition template may also be configured to automatically display another drop-down list that enables the user to define another influencer for the target output if desired, and displays fields for defining the calculation logic for the target output relative to the selected influencer. In some examples, the driver definition template may also be configured to provide a granularity drop-down list for each target output that enables the user to select a granularity definition for each target output relative to each granularity dimension.
[0051] In some cases, the discovery module 36 may be configured to receive additional driver definition data via the GUI 50 before generating the pre-populated driver definition template. For example, the discovery module 36 may be configured to dynamically generate a driver definition template after the user also submits user input 44 indicating the influencers and calculation logic for each target output via the GUI 50. In response to thereby receiving user input 44 indicating the target output, influencers, calculation logic, and granularity dimensions, the discovery module 36 may be configured to generate a driver definition template having a tabular format, wherein the rows are pre-populated with the target outputs and influencers and the calculation logic for each target output, and the columns are pre-populated with the granularity dimensions. Each target output and / or each influencer may be associated within the driver definition template with a drop-down list for each granularity dimension, the drop-down list being pre-populated with the structure of the granularity dimension, such as the members, generations, and child node groups of the granularity dimension. The user may then interact with the drop-down list to define the granularity definition for each target output and the influencers relative to each granularity dimension.
[0052] In some cases, the discovery module 36 may also be configured to suggest dimensions of the multidimensional database 32 for use as influencers and granularity dimensions of the target output, and members of these dimensions for use as influencers and granularity definitions of the target output, for example, via the GUI 50 and / or within the driver definition template. To this end, the template database 46 may store data indicating previous driver definitions used to build the verified custom application. In response to receiving a user input 44 identifying the target output of the custom application, the discovery module 36 may be configured to query the data from the template database 46 to identify a previous driver definition that includes at least one of the identified target outputs. The discovery module 36 may then be configured to determine whether the granularity and influencer dimensions of at least one target output within the identified previous driver definition match the dimensions of the current multidimensional database 32 that may be indicated in the retrieved master data 30, and whether the influencers and granularity definitions of at least one target output within the identified previous driver definition match the members within the current multidimensional database 32, such as members of matching dimensions, which may also be indicated in the retrieved master data 30. The discovery module 36 may then be configured to suggest matching dimensions, influencer and granularity definitions for the custom applied driver definition and calculation logic associated with the matching influencers.
[0053] In some cases, an enterprise may not implement a master data source 28 containing the enterprise's master data 30. If the user indicates that no such master data source 28 is available, the discovery module 36 may be configured to dynamically generate a master data template based on previously received user input 44 (e.g., user-submitted dimensions), which enables the user to manually enter the structure of each dimension (e.g., members, hierarchies, calculation logic). In some cases, the template database 46 may store data indicating standard master data for various types of enterprises, and the discovery module 36 may be configured to pre-populate the master data template with the dimensions indicated by the user and the standard structure of these dimensions based on the standard master data corresponding to the user's enterprise type stored in the template database 46. The user can then interact with the master data template via the GUI 50 to add to, delete from, and modify the standard master data to suit the user's specific enterprise.
[0054] Figure 2An exemplary driver definition template 70 is shown, which can be dynamically generated on the fly by the discovery module 36 based on previously received user input 44, and thereafter completed by the user via the GUI 50 to define driver definition configuration parameters for a custom application requested by the user. The driver definition template 70 can list the target outputs 72 submitted for the requested application via the GUI 50, such as a net sales revenue target output 72A and a third-party licensing revenue target output 72B. The driver definition template 70 can also set forth influencers 74 selected for each target output 72 via the GUI 50 and / or the driver definition template 70. The influencers 74 can correspond to members of one or more dimensions of the multidimensional database 32 that are labeled as influencer dimensions, such as dimensions of a metric type (e.g., an account dimension). In the illustrated example, the influencers 74 selected for the net sales revenue target output 72A include quantity influencer 74A, unit price influencer 74B, premium influencer 74C, and military discount influencer 74D, and the influencers 74 selected for the third-party licensing revenue target output 72B include quantity influencer 74E, cost per unit influencer 74F, and overhead influencer 74G.
[0055] The driver definition template 70 may also include calculation logic 76 selected for the target output 72, for example, via the GUI 50 and / or the driver definition template 70, indicating a relationship between the influencers 74 and the target output 72. More specifically, the calculation logic 76 selected for each target output 72 may indicate a formula for determining the target output 72 based on the influencers 74 defined for the target output 72. For example, the calculation logic 76 for the net sales revenue target output 72A may include a multiplication relationship 76A, an addition relationship 76B, and a subtraction relationship 76C to indicate that the net sales revenue target output 72A may be calculated as the quantity influencer 74A multiplied by the unit price influencer 74B plus the premium influencer 74C minus the military discount influencer 74D. As a further example, the calculation logic 76 selected for the third-party license revenue target output 72B may include a multiplication relationship 76D and an addition relationship 76E to indicate that the third-party license revenue target output 72B may be calculated as the quantity influencer 74E multiplied by the cost per unit influencer 74F plus the overhead influencer 74G.
[0056] The driver definition template 70 may also include granularity data 78 for the target output 72. The granularity data 78 may specify a granularity dimension 80 selected for the custom application and, for each influencer 74, a selected influencer granularity definition 82 indicating what data in the multidimensional database 32 each influencer 74 uses in the calculation of the target output 72. More specifically, each influencer 74 may include multiple values within the multidimensional database 32, each value being associated with a different combination of members from one or more granularity dimensions 80. In other words, each influencer 74 may be broken down within the multidimensional database 32 by members of the granularity dimensions 80.
[0057] In general, if the data values stored for a given influencer 74 vary within the multidimensional database 32 depending on the members of a given dimension, then that dimension may provide a certain degree of granularity to the influencer 74 and, therefore, may be listed as a granularity dimension 80 in the driver definition template 70. Alternatively, if the data values stored for a given influencer 74 within the multidimensional database 32 do not vary depending on the members of a given dimension, then that dimension may not provide any level of granularity for the influencer 74. The granularity dimensions 80 of the driver definition template 70 may include each dimension of the multidimensional database 32 that provides a level of granularity to at least one of the influencers 74 of the driver definition template 70. Accordingly, each granularity dimension 80 of the driver definition template 70 may not provide a level of granularity for each influencer 74.
[0058] For example, refer to Figure 2 In the illustrated example, the unit price influencer 74B may include granularity levels relative to members of the product granularity dimension 80A, entity granularity dimension 80B, customer granularity dimension 80C, channel granularity dimension 80D, period granularity dimension 80E, currency granularity dimension 80F, and attribute granularity dimension 80G within the multidimensional database 32. In other words, the unit price influencer 74B may be broken down by product, entity, customer, sales channel, period, currency, and attribute within the multidimensional database 32. The quantity influencer 74A may include granularity levels within the multidimensional database 32 by all of the above granularity dimensions 80 except the currency granularity dimension 80F, and the premium influencer 74C and the military discount influencer 74D may each include granularity levels within the multidimensional database 32 by all of the above granularity dimensions 80 except the product granularity dimension 80A. In other words, quantity within the multidimensional database 32 may not be tracked by currency, and premiums and military discounts within the multidimensional database 32 may not be tracked by product.
[0059] As previously described, the user may manually select the granular dimensions 80 to populate the driver definition template 70, for example, via the user input 44 provided to the GUI 50. Additionally or alternatively, in response to the user indicating the influencer 74 via the GUI 50, the discovery module 36 may be configured to suggest dimensions of the multidimensional database 32 for the granular dimensions 80 based on the retrieved identification of the master data 30 and / or the multidimensional database 32. For example, the discovery module 36 may be configured to make an API call to the multidimensional database 32 (e.g., using the EPM API 56 provided by the EPM system 26 hosting the multidimensional database 32), and traverse the multidimensional database 32 to identify the dimensions by which the values of the influencer 74 vary. Additionally or alternatively, the discovery module 36 may be configured to identify such dimensions from the master data 30, which may indicate the dimensions that provide a level of granularity for each influencer 74. The discovery module 36 may also be configured to identify which dimensions of the multidimensional database 32 are suggested as granular dimensions 80 based on previous driver definitions stored in the template database 46, as described above. When generating a driver definition template 70 for a user's data input, the discovery module 36 may be configured to pre-populate the driver definition template 70 with suggested dimensions as granular dimensions 80 of the driver definition template 70, which may then be confirmed or modified by the user.
[0060] In response to the discovery module 36 generating and updating the GUI 50 with the driver definition template 70, the user can interact with the driver definition template 70 to select an influencer granularity definition 82 for each influencer 74. In some cases, in response to determining the granularity dimension 80 for a given custom application, the discovery module 36 can be configured to determine the structure of the granularity dimension 80 within the multidimensional database 32, including the members, hierarchical structure, and internal calculation logic of the granularity dimension 80, for example, based on the retrieved master data 30. Thereafter, when generating the driver definition template 70, the discovery module 36 can be configured to pre-populate the driver definition template 70 with potential influencer granularity definitions 82 for the granularity dimension 80 based on the determined structure. For example, for each influencer 74, the driver definition template 70 can display a drop-down list for each granularity dimension 80, which lists each member, each generation, each parent node, and each child member group under the parent node of the granularity dimension 80 as a potential influencer granularity definition 82 for the influencer 74 with respect to the granularity dimension 80. The user may then interact with the drop-down list for each influencer 74 to select a given member, generation, parent node, child node group, or a custom combination of members of each granularity dimension 80 to use as the influencer granularity definition 82 for the influencer 74 relative to the granularity dimension 80 .
[0061] As previously described, each granularity dimension 80 of the driver definition template 70 may not provide a level of granularity for each influencer 74 of the driver definition template 70 within the multidimensional database 32. In such a case, a user may interact with the driver definition template 70 to set the influencer granularity definition 82 of the influencer 74 relative to the granularity dimension 80 to a null indicator, such as "none". Alternatively, the discovery module 36 may be configured to automatically pre-populate the driver definition template 70 with such influencer granularity definitions 82, such as based on the master data 30 or parsing of the multidimensional database 32, as described above. For a given granularity dimension 80, the influencer granularity definition 82 may therefore indicate the influencers 74 to which members of the granularity dimension 80 apply and the influencers 74 to which members of the granularity dimension 80 do not apply relative to the calculation of the target output 72. As described in more detail below, this data may enable the decision module 38 to determine how to construct the right hand side (RHS) of each equation generated by the decision module 38.
[0062] As previously described, the influencer granularity definition 82 selected for the influencer 74 associated with a given target output 72 may indicate the value of the influencer 74 used to calculate the target output 72. More specifically, the influencer granularity definition 82 selected for the influencer 74 may indicate that the target output 72 is calculated using the value of the influencer 74 for each possible combination of members indicated in the influencer granularity definition 82 within the multidimensional database 32. If a given influencer granularity definition 82 indicates a certain level of granularity with respect to the granularity dimension 80 (e.g., indicates one or more members of the granularity dimension 80), such an influencer granularity definition 82 may be referred to as providing a non-zero level of granularity. Alternatively, if a given influencer granularity definition 82 indicates no level of granularity with respect to the granularity dimension 80 (e.g., "none"), such an influencer granularity definition 82 may be referred to as providing an empty level of granularity.
[0063] For example, refer to Figure 2 In the example shown, the influencer granularity definition 82 set for the quantity influencer 74A may indicate that the net sales revenue target output 72A is calculated using the value of the quantity influencer 74A for each combination of product (granularity definition 82A-1), entity (granularity definition 82B), customer (granularity definition 82C-1), channel (granularity definition 82D-1), and month (granularity definition 82E-1) within the multidimensional database 32, but not for any specific currency (granularity definition 82F-1) in the multidimensional database 32. The influencer granularity definition 82G-1 for the quantity influencer 74A may also indicate that the data for the quantity influencer 74A should be limited to the data associated with the "DepA" attribute within the multidimensional database 32. Any other values for the quantity influencer 74A within the multidimensional database 32 may be omitted from the calculation.
[0064] As yet another example, the influencer granularity definition 82 for premium influencer 74C may indicate that the net sales revenue target output 72A is calculated using the values of premium influencer 74C within the multidimensional database 32 for each combination of entity (granularity definition 82B-3), customer (granularity definition 82C-3), channel (granularity definition 82D-3), month (granularity definition 82E-3), and currency (granularity definition 82F-3) within the multidimensional database 32 and not for any particular product (granularity definition 82A-3). The influencer granularity definition 82G-3 for premium influencer 74C may similarly indicate that the data for premium influencer 74C should be limited to data associated with the “DepA” attribute within the multidimensional database 32.
[0065] The completed driver definition template 70 may thus represent an equation for each target output 72 indicated in the application definition 42. The left side (LHS) of the equation may be the target output 72, while the right side (RHS) of the equation may be defined by the influencers 74, the calculation logic 76, and the granular data 78 for the target output 72. Examples of such equations are described in more detail below.
[0066] In some cases, the granularity data 78 for each target output 72 may also indicate a target output granularity definition 84 for the target output 72 relative to each granularity dimension 80. The target output granularity definition 84 may generally indicate a level of granularity that should be output by the custom application for each target output 72. A user may interact with the driver definition template 70 to set the target output granularity definition 84, e.g., similar to how the influencer granularity definition 82 may be defined as described above (e.g., a pre-populated drop-down list for each granularity dimension 80).
[0067] Additionally or alternatively, the driver definition template 70 may be configured to dynamically determine the target output granularity definition 84 for each target output 72, for example, based on the influencer granularity definition 82 defined for the influencers 74 of the target output 72. For example, in response to setting a non-zero influencer granularity definition 82 (e.g., an influencer granularity definition 82 other than "none") for a given target output 72 relative to a given granularity dimension 80, the driver definition template 70 may be configured to automatically set the target output granularity definition 84 for the given granularity dimension 80 to the set non-zero influencer granularity definition 82. The driver definition template 70 may also be configured to automatically limit the selectable options for other influencer granularity definitions 82 for the target output 72 relative to the granularity dimension 80 to the set influencer granularity definition 82 or "none". In this manner, to the extent that the influencer granularity definitions 82 for the target output 72 relative to the granularity dimension 80 indicate a non-zero level of granularity, such influencer granularity definitions 82 may all indicate the same non-zero level of granularity.
[0068] Discovery module 36 may be coupled to decision module 38 and application definition database 58. In response to capturing application definition 42, discovery module 36 may be configured to write application definition 42 to application definition database 58, and transmit a notification to decision module 38 that application definition 42 is ready for processing. In response to receiving the notification, decision module 38 may be configured to read the application definition from application definition database 58, and analyze the application definition 42 to automatically generate resource-efficient machine-written code for querying multidimensional database 32 and providing target output 72 defined by application definition 42.
[0069] More specifically, the decision module 38 may be configured to automatically group the target outputs 72 into a plurality of mutually exclusive groups, each group including two or more target outputs 72, by applying a weighting algorithm to the application definition 42, the weighting algorithm assigning an influencer weight to each influencer 74 relative to a granularity dimension 80 based on an influencer granularity definition 82 for the influencer 74, assigning a target output weight to each target output 72 relative to a granularity dimension 80 corresponding to the influencer weight of the influencer 74 assigned to the target output 72, and identifying the target output 72 of each group based on the target output weight assigned to each target output 72. The decision module 38 may then be configured to dynamically generate machine-written code including a different code block for each group of target outputs 72, the different code block for each group including a fixed portion and a calculated portion. The fixed portion may be generated based on the target output weight assigned to the target output 72 of the group, and may be configured to retrieve a portion of the multidimensional database 32 corresponding to the target output weight assigned to the target output 72 of the group. The calculated portion may be generated based on influencer weights assigned to influencers 74 for the target output 72 for the group, and may be configured to generate the target output 72 for the group based on the retrieved portion.
[0070] To this end, the decision module 38 may include three different modules, namely a weight-based logic (WbL) module 60, an automatic matching sequence module (AMS) 62, and a driver-based decision engine (DbDe) module 64. Each of these modules may be embodied by a different set of computer-executable instructions within the computer-executable instructions that embody the decision module 38.
[0071] The WbL module 60 may be configured to apply a weighting algorithm to the application definitions 42 that determines and assigns an influencer weight 86 to each influencer 74 relative to each granularity dimension 80, e.g., based on an influencer granularity definition 82 set for each influencer 74 relative to the granularity dimension 80. For example, with reference to 3, the WbL module 60 may be configured to use a binary weighting system, wherein the WbL module 60 assigns one influencer weight 86 value (e.g., one) to each influencer granularity definition 82 to indicate a non-zero level of granularity, and assigns another influencer weight 86 value (e.g., zero) to each influencer granularity definition 82 to indicate a null level of granularity (e.g., "none"). The WbL module 60 may also be configured to generate and store in the application definitions database 58 a weight index 61 that tracks the influencer granularity definitions 82 to which previous influencer weight 86 values were assigned. Specifically, for each assigned influencer weight 86 of a previous value, WbL module 60 may be configured to generate an entry in weight index 61 indicating influencer 74 , granularity dimension 80 , and influencer granularity definition 82 associated with the assigned influencer weight 86 .
[0072] In some examples, the WbL module 60 may be configured to assign influencer weight 86 values in addition to or in addition to those values described above. For example, the WbL module 60 may be configured to assign a unique non-zero influencer weight 86 value to each influencer granularity definition 82 to indicate a member or group of members that is different from the granularity dimension 80, where each influencer granularity definition 82 indicates that the same one or more members are assigned the same non-zero influencer weight 86 value. In this case, the WbL module 60 may be configured to generate an entry in the weight index 61 that tracks the member or group of members corresponding to each assigned non-zero influencer weight 86 value.
[0073] Additionally or alternatively, the WbL module 60 may be configured to assign a unique non-zero influencer weight 86 value to each influencer granularity definition 82 that indicates a member of a different generation number of the granularity dimension 80, wherein each influencer granularity definition 82 indicating the same generation number is assigned the same influencer weight 86 value regardless of the granularity dimension 80 associated with the influencer granularity definition 82. In this case, the WbL module 60 may be configured to generate an entry in the weight index 61 that associates each assigned non-zero influencer weight 86 value with the generation number associated with the influencer weight 86 value.
[0074] Additionally or alternatively, the WbL module 60 may be configured to assign a unique non-zero influencer weight 86 value to each influencer granular definition 82 corresponding to an influencer 74 that includes a calculation exception. More specifically, the GUI 50 and / or the driver definition template 70 may enable a user to define an exception for each influencer 74, such as a portion of the calculation logic 76 for that influencer 74. Such an exception may include a conditional rule that is applied to the value of the influencer 74 within the multidimensional database 32 relative to the calculation of the target output 72. For example, if a user desires to calculate the target output 72 as a function of only positive values of a given influencer 74 within the multidimensional database 32, the user may apply an exception to the influencer 74 that indicates that the value of a given intersection influencer 74 for the granular dimension 80 is determined in conjunction with the target output 72 to be negative. If so, the exception may indicate that the value is set to zero for the purpose of calculating the target output 72.
[0075] For each influencer 74 to which a given exception applies, the WbL module 60 may be configured to assign a unique non-zero influencer weight 86 value to each influencer granularity definition 82 of the influencer 74 to indicate a non-zero level of granularity. More specifically, influencer granularity definitions 82 of influencers 74 having the same exception and indicating the same one or more members of the granularity dimension 80 may be assigned the same non-zero influencer weight 86 value, and influencer granularity definitions 82 of influencers 74 having the same exception but indicating different one or more members of the granularity dimension 80 may be assigned different non-zero influencer weight 86 values. Furthermore, a non-zero influencer weight 86 value assigned to an influencer granularity definition 82 of an influencer 74 without any exceptions and indicating one or more members of a granularity dimension 80 may be different from a non-zero influencer weight 86 value assigned to an influencer granularity definition 82 of an influencer 74 with an exception and indicating the same one or more members of a granularity dimension 80, and a non-zero influencer weight 86 value assigned to an influencer granularity definition 82 of an influencer 74 with one exception and indicating one or more members of a granularity dimension 80 may be different from a non-zero influencer weight 86 value assigned to an influencer granularity definition 82 of an influencer 74 with a different exception and indicating the same one or more members of a granularity dimension 80. In such a case, the WbL module 60 may be configured to generate an entry in the weight index 61 that tracks the member or group of members corresponding to each assigned non-zero influencer weight 86 value and the influencer 74 exception, if any.
[0076] The WbL module 60 may also be configured to assign a target output weight 88 to each target output 72 with respect to each granularity dimension 80, the target output weight 88 corresponding to the influencer weight 86 of the influencer 74 assigned to the target output 72. For example, the WbL module 60 may be configured to assign the target output weight 88 in a manner similar to how the influencer weight 86 is assigned based on the target output granularity definition 84 defined for each target output 72. As an example, when a binary weighting system is used, the WbL module 60 may be configured to assign a zero value to each target output granularity definition 84 to indicate an empty granularity level, and to assign a one value to each target output granularity definition 84 to indicate a non-zero granularity level.
[0077] As yet another example, the WbL module 60 may be configured to assign a target output weight 88 based on a target output granularity definition 84 defined for each target output 72 and an influencer weight 86 assigned to an influencer 74 of the target output 72, such as indicated in the weight index 61. For example, if a given influencer granularity definition 82 and a target output granularity definition 84 indicate the same one or more members of the granularity dimension 80, the WbL module 60 may be configured to assign the influencer weight 86 value indicated for the one or more members in the weight index 61 as the target output weight 88 value for the given target output granularity definition 84.
[0078] As another example, the WbL module 60 may be configured to set the target output weight 88 of each target output 72 relative to each granularity dimension 80 to one of the influencer weights 86 assigned to the influencers 74 of the target output 72 relative to the granularity dimension 80 corresponding to the non-zero granularity level, e.g., the highest influencer weight 86. Figure 3 In the example shown, the WbL module 60 may be configured to set the target output weight 88A- 1 of the net sales revenue target output 72A to the highest of the influencer weights 86A- 1 through 86A- 4 (eg, 1).
[0079] As described in more detail below, the decision module 38 can be configured to dynamically generate resource-efficient machine-written code for generating the target output 72 based on the assigned influencer weights 86 and target output weights 88. In some examples, the WbL module 60 can be configured to assign influencer weights 86 and target output weights 88 relative to all granular dimensions 80 except any attribute granular dimension 80G. Members of the attribute granular dimension 80G can be assigned to members of other granular dimensions 80 within the multidimensional database 32 to further characterize data stored in relation to members of the other granular dimensions 80. When the WbL module 60 is configured to assign influencer weights 86 and target output weights 88 relative to all granular dimensions 80 except any attribute granular dimension 80G, the decision module 38 can be configured to generate resource-efficient machine-written code based on the assigned influencer weights 86 and target output weights 88 and the attribute influencer granularity definition 82G and the attribute target output granularity definition 84G (if any) set for the attribute granular dimension 80G.
[0080] After assigning the influencer weights 86 and the target output weights 88, the WbL module 60 may pass control to the AMS module 62, which may generally be configured to create weights for each target output 72 and influencer 74 based on a combination of selected modules, Boolean selections, hierarchies, and / or other user and machine-computed inputs. For example, the AMS module 62 may be configured to generate a weighted influencer identifier 90 for each influencer 74 based on the influencer weights 86 assigned to the influencers 74, and to generate a weighted target output identifier 92 for each target output 72 based on the target output weights 88 assigned to the target output 72. Based on the influencer weights 86, the weighted influencer identifier 90 assigned to each influencer 74 for the target output 72 may indicate a level of data granularity for the influencer 74 relative to the calculation of the target output 72. Similarly, the weighted target output identifier 92 assigned to each target output 72 may indicate a level of data granularity desired for the target output 72.
[0081] In some examples, the AMS module 62 may be configured to generate each weighted influencer identifier 90 for each influencer 74 by forming a string that includes each influencer weight 86 assigned to the influencer 74. If the driver definition also includes one or more attribute influencer granularity definitions 82G for the influencer 74 that indicate attributes from one or more attribute granularity dimensions 80G for the influencer 74, the AMS module 62 may also be configured to append the indicated attributes to the influencer weight 86 as part of the weighted influencer identifier 90 for the influencer 74.
[0082] The influencer weights 86 and / or attributes of each weighted influencer identifier 90 may be arranged in the same order relative to the granularity dimension 80. For example, referring to Figure 3 In the example shown, each weighted influencer identifier 90 for each influencer 74 may list the influencer weight 86 and the attributes of the influencer 74 in the following order: influencer weight 86A for product granularity dimension 80A, influencer weight 86B for entity / location granularity dimension 80B, influencer weight 86C for customer / dealer granularity dimension 80C, influencer weight 86D for channel granularity dimension 80D, influencer weight 86E for period granularity dimension 80E, influencer weight 86F for currency granularity dimension 80F, and the attributes indicated in the attribute influencer granularity definition 82G for attribute granularity dimension 80G. The AMS module 62 may be configured to generate each weighted target output identifier 92 for each target output 72 in the same manner and order as the weighted influencer identifier 90 for the influencer 74.
[0083] In response to assigning weighted target output identifiers 92 to target outputs 72, the AMS module 62 may be configured to automatically group the target outputs 72 into mutually exclusive groups based on the weighted target output identifiers 92. Each group may include, for example, two or more target outputs 72 calculated at the same or similar level of granularity based on the weighted target output identifiers 92. For example, the AMS module 62 may be configured to identify and group target outputs 72 having the same weighted target output identifier 92. The decision module 38, or more specifically the DbDe module 64, may then be configured to utilize this information to dynamically write resource-efficient code for the requested custom application.
[0084] Thus, in response to assigning the weighted identifiers 90, 92 and grouping the target outputs 72, the AMS module 62 may pass control to the DbDe module 64, which may generally be configured to analyze system-generated data coupled with information provided by user input and synthesize / create recommendations using a complex weighted schematic to provide improved accuracy across a range of predicted outputs. More specifically, the DbDe module 64 may be configured to dynamically generate resource-efficient machine-written source code for querying data from the multidimensional database 32 and generating target outputs 72 based thereon, for example based on the influencers 74, the calculation logic 76, and the weighted identifiers 90, 92 determined for each target output 72. The DbDe module 64 may then be configured to generate one or more artifacts 66 for the requested application including the machine-written source code. The artifacts 66 may include one or more of XML, JSON, XPAD, CSV, rules, and any other file format compatible with the target platform 14.
[0085] Specifically, the DbDe module 64 can be configured to generate different code blocks for each group of target outputs 72. Different code blocks for each group can include a fixed portion and a calculation portion. The DbDe module 64 can be configured to generate the fixed portion of each code block based on the target output weight 88 and / or the attribute target output granularity definition 84G, or more specifically based on the weighted target output identifier 92 assigned to each target output 72 corresponding to the code block. The DbDe module 64 can be configured to generate the calculation portion of each code block based on the influencer 74, calculation logic 76 and influencer weight 86 and / or the attribute influencer granularity definition 82 of each target output 72 corresponding to the code block, or more specifically based on the weighted influencer identifier 90.
[0086] The fixed portion of each code block can be configured to retrieve into memory a section or "segment" of the multidimensional database 32 defined by the target output weights 88 and / or attribute target output granularity definitions 84G or more specifically weighted target output identifiers 92 assigned to the target outputs 72 corresponding to the code block. Specifically, the weighted target output identifiers 92 assigned to each target output 72 of a given code block can indicate which granular dimensions 80 are applicable to calculating the target output 72 (e.g., by virtue of the weighted target output identifiers 92 including non-zero target output weights 88 of the granular dimensions 80), and correspondingly, which are not applicable (e.g., by virtue of the weighted target output identifiers 92 including target output weights 88 of the granular dimensions 80 having a value of zero). For each granular dimension 80 indicated as applicable, the weighted target output identifiers 92 can also indicate the members and / or groups of members (e.g., generations) of the granular dimensions 80 that are applicable to the target output 72, such as via an association between the non-zero target output weights 88 of the granular dimensions 80 and the applicable members and / or groups in the weight index 61, as described above.
[0087] The DbDe module 64 can therefore be configured to dynamically generate a fixed portion of each code block by determining each granularity dimension 80 applicable to the target output 72 corresponding to the code block based on the weighted target output identifier 92 assigned to the target output 72 and determining the members and / or member groups of the applicable granularity dimensions 80 applicable to the target output 72 by querying the weight index 61 with the non-zero target output weight 88 indicated in the weighted target output identifier 92 assigned to the target output 72. Then, the DbDe module 64 can be configured to generate the fixed portion of the code block so that the section of the multidimensional database 32 retrieved by the fixed portion is limited to or consists of data within the multidimensional database 32 corresponding to the granularity dimensions 80, members, and / or groups determined to be applicable to the target output 72. In other words, the fixed portion of each code block can be configured to obtain data within the multidimensional database 32 for each possible combination of members of the granularity dimensions 80 indicated as applicable to the target output 72 corresponding to the code block by the weighted target output identifier 92 assigned to the target output 72. The computational portion of each code block may then be configured to operate on the data received by the fixed portion to generate all target outputs 72 corresponding to that code block while avoiding querying and processing other data stored in the multidimensional database 32 that is not related to the target outputs 72 .
[0088] Grouping the code for multiple target outputs 72 in this manner limits the processing of the grouped target outputs 72 to those data cells of the multidimensional database 32 that correspond to the level of granularity indicated for the target outputs 72 within the driver definition of the customized application, and thus minimizes the number of passes through the cells of the multidimensional database 32 to generate the target outputs 72 of the customized application. Accordingly, such grouping increases the speed of the resulting application and reduces the hardware resources used by the resulting application when querying and processing data from the multidimensional database 32 to provide the target outputs 72.
[0089] The DbDe module 64 may be configured to generate a computational portion of each code block by being configured to generate an equation for computing the target output 72 based on the influencers 74, the computational logic 76, and the weighted influencer identifier 90 of the influencer 74 assigned to each target output 72 corresponding to the code block. More specifically, similar to the weighted target output identifier 92, the weighted influencer identifier 90 of each influencer 74 may indicate which granular dimensions 80 are and are not applicable to the influencer 74, and may also indicate which members and / or groups of members of the applicable granular dimensions 80 are applicable to the influencer 74, for example, via the weight index 61. The DbDe module 64 may thus be configured to generate an equation for each target output 72 by being configured to determine the granularity dimensions 80, members, and / or groups of members applicable to each influencer 74 for each target output 72 corresponding to the code block by querying the weight index 61 using the non-zero influencer weight 86 assigned to the weighted influencer identifier 90 of the influencer 74, and generate a code for each influencer 74 of the target output 72 that indicates an intersection of the influencer 74 with the members of the granularity dimensions 80 determined to be applicable to the influencer 74. The DbDe module 64 may then be configured to combine the generated intersections based on the calculation logic 76 of the target output 72.
[0090] For example, refer to Figure 3 In the example shown, the AMS module 62 may group the net sales revenue target output 72A and the third-party licensing revenue target output 72B based on the same weighted target output identifier 92 assigned to each of these target outputs 72. The DbDe module 64 may then be configured to generate the following code block for the group based on the influencer 74, the calculation logic 76, the weighted target output identifier 92, and the weighted influencer identifier 90 of the target output 72:
[0091] Fix(all products, all locations, all customers, all channels, all months, all currencies, DepA)
[0092] Net Sales Revenue = Sales Volume->Product->Location->Customer->Channel>Month->DepA->No Currency*Unit Price->Product->Location->Customer->Channel->Month->Currency->DepA+Premium->Location->Customer->Channel->Month->Currency->DepA->No Product – Military Discount->Location->Customer->Channel->Month->Currency->DepA->No Product;
[0093] Third-party license revenue = quantity->product->location->customer->channel->month->DepA->no currency*unit price->product->location->customer->channel->month->currency->DepA+expense->location->customer->channel->month->currency->DepA->no product;
[0094] End fix
[0095] The DbDe module 64 may also be configured to dynamically generate additional code for each code block and / or artifact 66 based on other application configuration parameters (e.g., currency-related parameters, elimination policy parameters, application type parameters, and security matrix parameters). To this end, the DbDe module 64 may be coupled to a code template database 68 that includes code templates for each of these other configuration parameters. Each code template may include extensible code that the DbDe module 64 may retrieve and customize as a configuration parameter of the application definition 42. For example, the code template database 68 may store model code templates, each of which includes extensible code for further analyzing various target outputs 72, such as providing what-if scenarios, long-term planning, variance analysis, and rolling forecasts relative to the target outputs 72. The code template database 68 may also store exception code templates, each of which includes extensible code for implementing exceptions applied to influencers 74, as described above.
[0096] The DbDe module 64 can therefore be configured to retrieve an extensible code template corresponding to the current configuration parameters and / or the applied influencer exceptions, such as indicated by the weighted influencer identifier 90 in combination with the weight index 61 as described above, to dynamically generate machine-written code by inserting the configuration parameters into the retrieved code. The DbDe module 64 can then be configured to integrate the machine-written code into the previously described code blocks and / or one or more additional artifacts 66. For example, the DbDe module 64 can be configured to integrate any elimination policy code, currency-related code, and influencer exception code into the computational portion of the relevant code block. The DbDe module 64 can be configured to integrate model-related code as additional artifacts 66.
[0097] The DbDe module 64 may be configured to transmit the generated artifacts 66 to the deployment module 40. The deployment module 40 may be configured to feed the data output from the DbDe module 64 and other text, Boolean, and data file inputs, such as from the application definition 42, to generate the application package 96. To this end, the deployment module 40 may also be coupled to a code template database 68, which may additionally store code templates for generating the application package 96 from the artifacts 66 received from the decision module 38 and the data items from the application definition 42. In addition to the machine-written code, the application package 96 generated by the deployment module 40 may also include metadata of the customized application based on the application definition 42. Such metadata may indicate application settings, such as the starting year, the currency used, and the dimension names written into XML, JSON, XPAD, CSV, and / or other files readable by the target platform 14.
[0098] In response to generating the application package 96, the deployment module 40 may be configured to deploy the application package 96 to the target platform 14, or more specifically the EPM system 26, for validation and execution against the multidimensional database 32. More specifically, for example, the deployment module 40 may be configured to initiate an API call to the EPM system 26 via the EPM API 56 to transfer the application package 96 to the EPM system 26, and then cause the EPM system 26 to execute the application package 96 on the multidimensional database 32. In response to such execution, the EPM system 26 may be configured to generate a target output file corresponding to the target output 72 and a log file indicating any errors encountered by the EPM system 26 when executing the application package 96. The deployment module 40 may then be configured to check the log file for errors and apply error checking to the target output file, such as by validating the target output file against configuration parameters of the application definition 42 and / or metadata of the application package 96.
[0099] During operation of the decision module 38 and the deployment module 40, the application creation engine 34 may be configured to cause the front-end portal 48 to display a status bar on the user device 12, the status bar indicating the percentage of completion of the running of the customized application. In response to the deployment module 40 finding no validation errors, the deployment module 40 may be configured to turn the status bar green to indicate that the customized application is ready to be executed by the user on the target platform 14. Alternatively, in response to the deployment module 40 finding validation errors, the deployment module 40 may be configured to turn the status bar red and indicate the found errors to the user, who may then resolve the errors, for example, by modifying the configuration parameters of the application definition 42.
[0100] Figure 4A method 100 is shown for generating a customized application for operating in a multidimensional database environment such as a target platform 14 or an EPM system 26. The application creation engine 34 may be configured to implement the method 100, for example, when a computer executable instruction set embodying the application creation engine 34 is executed by at least one processor of the application builder server 16. Each block of the method 100 may be implemented with any one or more features corresponding to the functionality of the block as described above.
[0101] In block 102, a request to build a custom application for querying one or more multidimensional databases 32 of a target platform 14 may be received, such as by a discovery module 36, from a user device 12. In block 104, an application definition 42 of the custom application may be discovered, such as by the discovery module 36. For example, an API call may be made to a master data source 28 associated with the multidimensional database 32 to retrieve master data 30 from the master data source 28, the master data 30 indicating a hierarchical structure of the multidimensional database 32. The application definition 42 may then be determined based on the retrieved master data 30 and one or more user inputs 44. The application definition 42 may indicate a target output 72 to be generated by the custom application based on data stored in the multidimensional database 32, an influencer 74 for each target output 72 corresponding to a member of one or more influencer dimensions of the multidimensional database 32, and an influencer granularity definition 82 of a granularity dimension 80 of the multidimensional database 32 relative to each influencer 74.
[0102] In some examples, each granularity dimension 80 may include members within the multidimensional database 32 organized into mutually exclusive generations of the granularity dimension 80, each generation corresponding to a different distance from the root node of the granularity dimension 80, and the application definition 42 may be discovered by generating a GUI 50 having fields for receiving identification of target outputs 72, influencers 74, and granularity dimensions 80. In response to receiving this data, a driver definition template 70 may be dynamically generated for defining an influencer granularity definition 82 and / or a target output granularity definition 84 relative to the granularity dimensions 80 of the multidimensional database 32. The generation of each granularity dimension 80 may also be determined from the retrieved master data 30, and the driver definition template 70 may be pre-populated with the determined generation by associating a drop-down list of each granularity dimension 80 with each influencer 74 and / or each target output 72 within the driver definition template 70. Each drop-down list may include the generation determined for the granularity dimension 80 associated with the drop-down list as a selectable option for defining an influencer granularity definition 82 and / or a target output granularity definition 84. The GUI 50 may then be updated with pre-populated driver definition templates 70 for user selection.
[0103] Thereafter, method 100 may group the target outputs 72 into a plurality of mutually exclusive groups, each group comprising two or more target outputs 72, by applying a weighting algorithm to the application definition 42, the weighting algorithm assigning an influencer weight 86 to each influencer 74 relative to a granularity dimension 80 based on an influencer granularity definition 82 of the influencer 74, assigning a target output weight 88 to each target output 72 relative to a granularity dimension 80 corresponding to the influencer weight 86 of the influencer 74 assigned to the target output 72, and identifying the target output 72 for each group based on the target output weight 88 assigned to each target output 72.
[0104] To this end, in block 106, influencer weights 86 and target output weights 88 may be assigned to influencers 74 and target outputs 72, respectively, as described above. For example, each target output weight 88 assigned to a given target output 72 may correspond to a different one of the granular dimensions 80, and the target output weight 88 assigned to each target output 72 may be set to the maximum influencer weight 86 assigned to the influencers 74 of the target output 72 relative to the granular dimension 80 to which the target output weight 88 corresponds.
[0105] Thereafter, in block 108, the target outputs 72 may be grouped into a plurality of mutually exclusive groups, each group including two or more target outputs 72, based on the target output weights 88 assigned to each target output 72. A weighted target output identifier 92 may be generated for each target output 72 based on the target output weights 88 assigned to the target output 72, and target outputs 72 having the same weighted target output identifier 92 may be grouped together. A weighted influencer identifier 90 may also be generated for each influencer 74 based on the influencer weight 86 assigned to the influencer 74 for each target output 72.
[0106] In frame 110, resource-efficient machine-written code can be dynamically generated based on grouping. More specifically, machine-written code including different code blocks for each group of target outputs 72 can be generated, and the different code blocks for each group include a fixed portion and a calculation portion. The fixed portion of the code block of each group can be generated based on the target output weight 88 and / or the weighted target output identifier 92 assigned to the target output 72 of the group, and can be configured to retrieve the target output weight 88 and / or the weighted target output identifier 92 corresponding to the target output weight 88 and / or the weighted target output identifier 92 of the target output 72 assigned to the group of the multidimensional database 32. The calculation portion of the code block of each group can be generated based on the influencer weight 86 and / or the weighted influencer identifier 90 of the influencer 74 of the target output 72 assigned to the group, and can be configured to generate the target output 72 of the group based on the retrieved section of the multidimensional database 32.
[0107] In some examples and as described above, the weighted target output identifier 92 generated for each target output 72 can indicate which granularity dimensions 80 are applicable to the target output 72, where at least one of the granularity dimensions 80 is indicated as applicable to the target output 72, and a fixed portion of the code block for each group can be dynamically generated such that the segment of the multidimensional database 32 retrieved by the fixed portion is limited to data within the multidimensional database 32 corresponding to at least one granularity dimension 80 indicated as applicable by the weighted target output identifier 92 generated for each target output 72 of the group.
[0108] Additionally or alternatively, and as described above, each granularity dimension 80 may include members within the multidimensional database 32, and the weighted target output identifier 92 generated for each target output 72 may indicate which members of the granularity dimension 80 are applicable to the target output, wherein at least one member of the granularity dimension 80 is indicated as applicable to the target output 72. In this example, the fixed portion of the code block for each group may be dynamically generated such that the section of the multidimensional database 32 retrieved by the fixed portion is limited to data within the multidimensional database 32 corresponding to at least one member indicated as applicable by the weighted target output identifier 92 generated for each target output 72 of the group.
[0109] Additionally or alternatively, and as described above, the members of each granularity dimension 80 may be organized into mutually exclusive generations of the granularity dimension 80, each generation corresponding to a different distance from the root node of the granularity dimension 80, and the weighted target output identifier 92 generated for each target output 72 may indicate which generations of the granularity dimension 80 are applicable to the target output 72, wherein at least one generation of the granularity dimension 80 is indicated as applicable to the target output 72. In this example, the fixed portion of the code block for each group may be dynamically generated such that the section of the multidimensional database 32 retrieved by the fixed portion is limited to data within the multidimensional database 32 corresponding to at least one generation indicated as applicable by the weighted target output identifier 92 generated for each target output 72 of the group.
[0110] In some examples and as described above, the application definition 42 may also indicate a calculation logic 76 for each target output 72, the calculation logic 76 defining a relationship between the target output 72 and the influencers 74 of the target output 72, and the calculation portion of the code block for each group may be generated by dynamically generating machine-written code for deriving each target output 72 of the group based on the calculation logic 76 for the target output 72 and the weighted target output identifier 94 generated for each influencer 94 of the target output 72. In some examples, each granular dimension 80 may include members within the multidimensional database 32, and the weighted influencer identifier 90 generated for each influencer 74 of each target output 72 may indicate which members of the granular dimension 80 are applicable to the influencer 74, wherein at least one of the members of the granular dimension 80 is indicated as applicable to the influencer 74. In this case, machine-written code for deriving each target output 72 based on the calculation logic 76 of the target output 72 and the weighted influencer identifier 90 generated for each influencer 74 of the target output 72 can be dynamically generated in the following manner: generating machine-written code for each influencer 74 of the target output 72, the code providing the intersection of the influencer 74 and at least one member indicated as applicable to the influencer 74 by the weighted influencer identifier 90 generated for the influencer 74; and combining the machine-written code generated for each influencer 74 for the target output 72 based on the calculation logic 76 of the target output.
[0111] In block 112, the machine-written code including the different code blocks of each group may be compiled, for example, by the deployment module 40 as described above, into an application package 96 corresponding to the target platform 14, the target platform 14 being configured to query data from the multidimensional database 32 and generate target output 72 based on the queried data according to the code blocks. In block 114, the application package 96 may be deployed to the target platform 14, for example, by the deployment module 40 as described above, for execution on the multidimensional database 32. In block 116, the application package 96 may then be executed and verified, for example, by the deployment module 40 as described above.
[0112] Figure 1 Components of the operating environment 10 and Figure 4 The blocks of method 100 may be implemented by one or more computing devices, such as Figure 5. Each component or block may be implemented by a single computing device or multiple computing devices cooperating in a distributed environment, and two or more components or blocks may be implemented by the same computing device or devices. For example, the MDM server 20, the EPM server 24, and / or the application builder server 16 may each be provided via multiple computing devices arranged in a distributed environment, which together provide the functionality of the components described herein. As another example, the MDM server 20 and the EPM server 24 may be implemented by the same computing device or devices.
[0113] Figure 5 An exemplary computing system 200 is shown, which can provide a suitable computing environment for implementing the above-described devices, systems, components, features, processes, methods, and modules. The computing system 200 may include a processor 202, a memory 204, a mass storage memory device 206, an input / output (I / O) interface 208, and a human-machine interface (HMI) 210. The computing system 200 may also be operably coupled to one or more external resources 212 via a network 214 or the I / O interface 208. The external resources 212 may include, but are not limited to, servers, databases, mass storage devices, peripheral devices, cloud-based network services, or any other suitable computer resources that may be used by the computing system 200.
[0114] Processor 202 may include one or more devices selected from the following: a microprocessor, a microcontroller, a digital signal processor, a microcomputer, a central processing unit, a field programmable gate array, a programmable logic device, a state machine, a logic circuit, an analog circuit, a digital circuit, or any other device that manipulates signals (analog or digital) based on operating instructions stored in memory 204. Memory 204 may include a single memory device or multiple memory devices, including but not limited to read-only memory (ROM), random access memory (RAM), volatile memory, non-volatile memory, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, cache memory, or any other device capable of storing information. Mass storage memory device 206 may include a data storage device, such as a hard drive, an optical drive, a tape drive, a non-volatile solid-state device, or any other device capable of storing information.
[0115] The processor 202 may operate under the control of an operating system 216 residing in the memory 204. The operating system 216 may manage computer resources so that computer program code embodied as one or more computer software applications (e.g., application 218 residing in the memory 204) may have instructions executed by the processor 202. In an alternative example, the processor 202 may directly execute the application 218, in which case the operating system 216 may be omitted. One or more data structures 220 may also reside in the memory 204 and may be used by the processor 202, the operating system 216, or the application 218 to store or manipulate data.
[0116] The I / O interface 208 may provide a machine interface that operably couples the processor 202 to other devices and systems, such as a network 214 or one or more external resources 212. The application 218 may thus provide the various features, functions, applications, processes, or modules described above by working in conjunction with the network 214 or external resources 212 by communicating via the I / O interface 208. The application 218 may also have program code that is executed by one or more external resources 212, or otherwise rely on functions or signals provided by other systems or network components external to the computing system 200.
[0117] The HMI 210 may be operably coupled to the processor 202 of the computing system 200 in a known manner to allow a user to interact directly with the computing system 200. The HMI 210 may include a video or alphanumeric display, a touch screen, a speaker, and any other suitable audio and visual indicator capable of providing data to the user. The HMI 210 may also include input devices and controls capable of accepting commands or input from a user and sending the entered input to the processor 202, such as an alphanumeric keyboard, a pointing device, a keypad, buttons, a control knob, a microphone, etc.
[0118] The database 222 may reside on the mass storage memory device 206 and may be used to collect and organize data used by the various systems and modules described herein. The database 222 may include data and supporting data structures for storing and organizing data. Specifically, the database 222 may be arranged with any database organization or structure, including but not limited to a relational database, a hierarchical database, a network database, or a combination thereof. A database management system in the form of a computer software application of instructions executed on the processor 202 may be used to access information or data stored in records of the database 222 in response to a query, wherein the query may be dynamically determined and executed by the operating system 216, other applications 218, or one or more modules.
[0119] In general, routines executed to implement embodiments of the present invention, whether implemented as part of an operating system or as a specific application, component, program, object, module or sequence of instructions, or even a subset thereof, may be referred to herein as "computer program code", or simply "program code". Program code typically includes computer-readable instructions that reside at various times in various memories and storage devices in a computer, and when read and executed by one or more processors in a computer, cause the computer to perform operations necessary to perform the operations and / or elements embodying various aspects of embodiments of the present invention. Computer-readable program instructions for performing operations of embodiments of the present invention may be source code or object code written, for example, in assembly language or in any combination of one or more programming languages.
[0120] The program code embodied in any application / module described herein can be distributed separately or collectively as a program product in various forms. Specifically, a computer-readable storage medium having computer-readable program instructions for causing a processor to perform various aspects of an embodiment of the present invention can be used to distribute the program code.
[0121] The computer-readable storage medium, which is non-transitory in nature, may include volatile and non-volatile, and removable and non-removable tangible media implemented in any method or technology for storing information (e.g., computer-readable instructions, data structures, program modules, or other data). The computer-readable storage medium may also include random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other solid-state memory technology, portable compact disk read-only memory (CD-ROM) or other optical storage, cassettes, tapes, disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and can be read by a computer. The computer-readable storage medium should not be interpreted as a transient signal itself (e.g., a radio wave or other propagated electromagnetic wave, an electromagnetic wave propagated through a transmission medium such as a waveguide, or an electrical signal transmitted through a wire). The computer-readable program instructions can be downloaded from the computer-readable storage medium to a computer, another type of programmable data processing device, or another device, or downloaded to an external computer or external storage device via a network.
[0122] Computer-readable program instructions stored in a computer-readable medium can be used to direct a computer, other type of programmable data processing apparatus, or other device to operate in a particular manner, so that the instructions stored in the computer-readable medium produce instructions including an article of manufacture that implements the functions / actions specified in the flowchart, sequence diagram, and / or block diagram. The computer program instructions can be provided to one or more processors of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, so that the instructions executed via one or more processors cause a series of calculations to be performed to implement the functions and / or actions specified in the flowchart, sequence diagram, and / or block diagram.
[0123] In some alternative embodiments, the functions and / or actions specified in the flow chart, sequence diagram and / or block diagram can be reordered, processed serially and / or processed concurrently without departing from the scope of the embodiments of the present invention. In addition, any flow chart, sequence diagram and / or block diagram may include more or less frames than those shown in accordance with the embodiments of the present invention.
[0124] The terms used herein are only used for the purpose of describing specific embodiments, and are not intended to limit embodiments of the present invention. As used herein, the singular forms "one", "an" and "the" are also intended to include plural forms, unless the context clearly states otherwise. It should also be understood that the terms "include" and / or "comprise" when used in this specification specify the existence of stated features, integers, steps, operations, elements and / or components, but do not exclude the existence or addition of one or more other features, integers, steps, operations, elements, components and / or their groups. In addition, with respect to the terms "include", "have", "have", "with", "consist of" or their variants used in the specific embodiments or claims, these terms are intended to be inclusive in a manner similar to the term "comprise".
[0125] Although the present invention has been illustrated by the description of various embodiments, and although these embodiments have been described in considerable detail, it is not the intention of the applicant to limit or in any way restrict the scope of the appended claims to such details. Additional advantages and modifications will be readily apparent to those skilled in the art. Therefore, the present invention in its broader aspects is not limited to the specific details, representative devices and methods, and illustrative examples shown and described. Therefore, departures from these details may be made without departing from the spirit or scope of the applicant's overall inventive concept.
Claims
1. A system for generating a customized application for querying a multidimensional database of a target platform, the system include: at least one processor; as well as at least one memory device storing computer-executable instructions that, when executed by the at least one processor, cause the at least one processor to: receiving a request for building a custom application for querying a multidimensional database of a target platform, the multidimensional database stored at the at least one memory device; Find the application definition of the custom application by doing the following: making an API call to a master data source associated with the multidimensional database to retrieve master data indicating a hierarchical structure of the multidimensional database; as well as determining the application definition based on the retrieved master data, the application definition indicating target outputs to be generated by the custom application based on: data stored in the multidimensional database, influencers of each of the target outputs corresponding to members of one or more first dimensions of the multidimensional database, and a granularity definition of each of the influencers relative to a second dimension of the multidimensional database; Automatically grouping the target outputs into a plurality of mutually exclusive groups, each group including two or more of the target outputs, by applying a weighting algorithm to the application definition, wherein: assigning a first weight to each influencer relative to the second dimension based on the granular definition of the influencer; assigning a second weight to each target output with respect to the second dimension, the second weight corresponding to the first weight assigned to the influencer of the target output; as well as identifying a target output for each respective mutually exclusive group based on a second weight assigned to each target output; For each corresponding mutually exclusive group in the plurality of mutually exclusive groups, dynamically generating machine-written code including a different code block for the corresponding mutually exclusive group by: generating a first portion of the different code block based on a second weight assigned to the target output of the respective mutually exclusive group, the first portion of the different code block being configured to retrieve a corresponding section of the multidimensional database for the respective mutually exclusive group and to restrict data retrieval to only the corresponding section of the multidimensional database based on the second weight assigned to the target output of the group; as well as generating a second portion of the different code block based on first weights assigned to influencers of the target output of the respective mutually exclusive group, the second portion of the different code block being configured to generate the target output of the respective mutually exclusive group based on the corresponding section of the multidimensional database; compiling the machine-written code into an application package corresponding to the target platform, the application package being configured to query data from the multidimensional database and generate the target output by executing a different code block of each corresponding mutually exclusive group of the plurality of mutually exclusive groups; as well as The application package is deployed to the target platform for execution on the multidimensional database.
2. The system according to claim 1, in, The computer executable instructions, when executed, cause the at least one processor to identify, via the weighted algorithm, a target output for each respective mutually exclusive group by causing the at least one processor to: generating a weighted identifier for each target output based on a second weight assigned to the target output; and Group target outputs with the same weight identifier.
3. The system according to claim 2, in, A weighted identifier generated for each target output indicates which of the second dimensions are applicable to the target output, wherein at least one of the second dimensions is indicated as applicable to the target output, and the computer-executable instructions, when executed, cause the at least one processor to dynamically generate a first portion of a different code block for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first portion is limited to the following data within the multidimensional database: which corresponds to at least one of the second dimensions indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
4. The system according to claim 2, in, Each second dimension includes members within the multidimensional database, and a weighted identifier generated for each target output indicates which of the members of the second dimension are applicable to the target output, wherein at least one of the members of the second dimension is indicated as applicable to the target output, and the computer-executable instructions, when executed, cause the at least one processor to dynamically generate a first portion of a different code block for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first portion is limited to the following data within the multidimensional database: it corresponds to the at least one member of the members indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
5. The system according to claim 2, in, The members of each second dimension are organized into mutually exclusive generations of the second dimension, each generation corresponding to a different distance from a root node of the second dimension, a weighted identifier generated for each target output indicates which of the generations of the second dimension are applicable to the target output, wherein at least one of the generations of the second dimension is indicated as applicable to the target output, and the computer-executable instructions, when executed, cause the at least one processor to dynamically generate a first portion of a different code block for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first portion is limited to the following data within the multidimensional database: which corresponds to the at least one generation of the generations indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
6. The system according to claim 1, in, Each second weight assigned to each target output corresponds to a different second dimension in the second dimensions, and the computer executable instructions, when executed, cause the at least one processor to set each second weight assigned to each target output to the maximum first weight assigned to the influencer of the target output relative to the second dimension to which the second weight corresponds.
7. The system according to claim 1, in, The application defines a calculation logic indicating each target output, the calculation logic defining a relationship between an influencer of the target output and the target output, and the computer executable instructions, when executed, cause the at least one processor to: dynamically generate, as a second part of a different code block for the corresponding mutually exclusive group, machine-written code for deriving the target output based on the calculation logic for each target output of each corresponding mutually exclusive group and a first weight assigned to each influencer of the target output relative to the second dimension.
8. The system according to claim 7, in, The computer executable instructions, when executed, cause the at least one processor to: generating, via the weighting algorithm, a weighted identifier for each influencer for each target output based on a first weight assigned to the influencer; as well as Machine-written code for deriving each target output of each respective mutually exclusive group based on the calculation logic for the target output and the weighted identifier generated for each influencer of the target output is dynamically generated as a second portion of the distinct code blocks of the respective mutually exclusive groups.
9. The system according to claim 8, in, Each second dimension includes members within the multidimensional database, a weighted identifier generated for each influencer of each target output indicates which of the members of the second dimension are applicable to the influencer, wherein at least one of the members of the second dimension is indicated as applicable to the influencer, and the computer-executable instructions, when executed, cause the at least one processor to dynamically generate machine-written code for deriving each target output based on the calculation logic for the target output and the weighted identifier generated for each influencer of the target output by causing the at least one processor to: generating, for each influencer of the target output, machine-written code that provides an intersection of the influencer and the at least one of the members indicated as applicable to the influencer by a weighted identifier generated for the influencer; and Based on the computational logic for the target output, the machine-written code generated for each influencer of the target output is combined.
10. The system according to claim 1, in, Each second dimension includes members within the multidimensional database, the members being organized into mutually exclusive generations of the second dimension, each generation corresponding to a different distance from a root node of the second dimension, and the computer-executable instructions, when executed, cause the at least one processor to generate a graphical user interface (GUI) configured to display an application definition of the customized application.
11. A method for generating a customized application for querying a multidimensional database of a target platform, the method include: receiving, by at least one processor, a request for building a custom application for querying a multidimensional database of a target platform, the multidimensional database stored at a memory device; The at least one processor discovers the application definition of the custom application by performing the following operations: making an API call to a master data source associated with the multidimensional database to retrieve master data indicating a hierarchical structure of the multidimensional database; as well as determining the application definition based on the retrieved master data, the application definition indicating target outputs to be generated by the custom application based on: data stored in the multidimensional database, influencers of each of the target outputs corresponding to members of one or more first dimensions of the multidimensional database, and a granularity definition of each of the influencers relative to a second dimension of the multidimensional database; The at least one processor automatically groups the target outputs into a plurality of mutually exclusive groups, each group including two or more of the target outputs, by applying a weighting algorithm to the application definition, wherein: assigning a first weight to each influencer relative to the second dimension based on the granular definition of the influencer; assigning a second weight to each target output with respect to the second dimension, the second weight corresponding to the first weight assigned to the influencer of the target output; as well as identifying a target output for each respective mutually exclusive group based on a second weight assigned to each target output; For each corresponding mutually exclusive group in the plurality of mutually exclusive groups, the at least one processor dynamically generates machine-written code including different code blocks for the corresponding mutually exclusive group by: generating a first portion of the different code block based on a second weight assigned to the target output of the respective mutually exclusive group, the first portion of the different code block being configured to retrieve a corresponding section of the multidimensional database for the respective mutually exclusive group and to restrict data retrieval to only the corresponding section of the multidimensional database based on the second weight assigned to the target output of the group; as well as generating a second portion of the different code block based on first weights assigned to influencers of the target output of the respective mutually exclusive group, the second portion of the different code block being configured to generate the target output of the respective mutually exclusive group based on the corresponding section of the multidimensional database; compiling, by the at least one processor, the machine-written code into an application package corresponding to the target platform, the application package being configured to query data from the multidimensional database and generate the target output by executing a different code block of each corresponding mutually exclusive group of the plurality of mutually exclusive groups; as well as The application package is deployed, by the at least one processor, to the target platform for execution on the multidimensional database.
12. The method according to claim 11, further comprising: include: generating a weighted identifier for each target output based on a second weight assigned to the target output; as well as Group target outputs with the same weight identifier.
13. The method according to claim 12, in, A weighted identifier generated for each target output indicates which of the second dimensions are applicable to the target output, wherein at least one of the second dimensions is indicated as applicable to the target output, and also includes dynamically generating a first portion of different code blocks for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first portion is limited to the following data within the multidimensional database: which corresponds to at least one of the second dimensions indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
14. The method according to claim 12, in, Each second dimension includes members within the multidimensional database, and a weighted identifier generated for each target output indicates which members of the second dimension are applicable to the target output, wherein at least one of the members of the second dimension is indicated as applicable to the target output, and also includes a first part that dynamically generates different code blocks for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first part is limited to the following data within the multidimensional database: it corresponds to the at least one member of the members indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
15. The method according to claim 12, in, The members of each second dimension are organized into mutually exclusive generations of the second dimension, each generation corresponding to a different distance from a root node of the second dimension, a weighted identifier generated for each target output indicates which generations of the second dimension are applicable to the target output, wherein at least one generation of the generations of the second dimension is indicated as applicable to the target output, and also includes dynamically generating a first part of different code blocks for each corresponding mutually exclusive group, so that the corresponding segment of the multidimensional database retrieved by the first part is limited to the following data within the multidimensional database: which corresponds to the at least one generation of the generations indicated as applicable by the weighted identifier generated for each target output of the corresponding mutually exclusive group.
16. The method according to claim 11, in, Each second weight assigned to each target output corresponds to a different second dimension in the second dimensions, and also includes setting each second weight assigned to each target output to the maximum first weight assigned to the influencer of the target output relative to the second dimension to which the second weight corresponds.
17. The method according to claim 11, in, The application definition indicates calculation logic for each target output, the calculation logic defining a relationship between the influencers of the target output and the target output, and also includes dynamically generating a second part of machine-written code for deriving the target output based on the calculation logic for each target output of each corresponding mutually exclusive group and a first weight assigned to each influencer of the target output relative to the second dimension as different code blocks of the corresponding mutually exclusive group.
18. The method according to claim 17, further comprising: include: generating, via the weighting algorithm, a weighted identifier for each influencer for each target output based on a first weight assigned to the influencer; as well as Machine-written code for deriving each target output of each respective mutually exclusive group based on the calculation logic for the target output and the weighted identifier generated for each influencer of the target output is dynamically generated as a second portion of the distinct code blocks of the respective mutually exclusive groups.
19. The method according to claim 18, in, Each second dimension includes members within the multidimensional database, a weighted identifier generated for each influencer of each target output indicates which of the members of the second dimension are applicable to the influencer, wherein at least one of the members of the second dimension is indicated as applicable to the influencer, and dynamically generating machine-written code for deriving each target output based on calculation logic for the target output and the weighted identifier generated for each influencer of the target output comprises: generating, for each influencer of the target output, machine-written code that provides an intersection of the influencer and the at least one of the members indicated as applicable to the influencer by a weighted identifier generated for the influencer; and Based on the computational logic for the target output, the machine-written code generated for each influencer of the target output is combined.
20. The method according to claim 11, in, Each second dimension includes members within the multidimensional database, the members are organized into mutually exclusive generations of the second dimension, each generation corresponds to a different distance from a root node of the second dimension, and discovering the application definition includes generating a graphical user interface (GUI) configured to display the application definition of the customized application.
21. A non-transitory computer readable medium storing a computer program for generating a customized application for querying a multidimensional database of a target platform, the platform comprising computer executable instructions stored on the non-transitory computer readable medium, the computer executable instructions when executed by one or more processors causing the one or more processors to: receiving a request for building a custom application for querying a multidimensional database of a target platform, the multidimensional database stored at a memory device; Find the application definition of the custom application by doing the following: making an API call to a master data source associated with the multidimensional database to retrieve master data indicating a hierarchical structure of the multidimensional database; as well as determining the application definition based on the retrieved master data, the application definition indicating target outputs to be generated by the custom application based on: data stored in the multidimensional database, influencers of each of the target outputs corresponding to members of one or more first dimensions of the multidimensional database, and a granularity definition of each of the influencers relative to a second dimension of the multidimensional database; Automatically grouping the target outputs into a plurality of mutually exclusive groups, each group including two or more of the target outputs, by applying a weighting algorithm to the application definition, wherein: assigning a first weight to each influencer relative to the second dimension based on the granular definition of the influencer; assigning a second weight to each target output with respect to the second dimension, the second weight corresponding to the first weight assigned to the influencer of the target output; as well as identifying a target output for each respective mutually exclusive group based on a second weight assigned to each target output; For each corresponding mutually exclusive group in the plurality of mutually exclusive groups, dynamically generating machine-written code including a different code block for the corresponding mutually exclusive group by: generating a first portion of the different code block based on a second weight assigned to the target output of the respective mutually exclusive group, the first portion of the different code block being configured to retrieve a corresponding section of the multidimensional database for the respective mutually exclusive group and to restrict data retrieval to only the corresponding section of the multidimensional database based on the second weight assigned to the target output of the group; as well as generating a second portion of the different code block based on first weights assigned to influencers of the target output of the respective mutually exclusive group, the second portion of the different code block being configured to generate the target output of the respective mutually exclusive group based on the corresponding section of the multidimensional database; compiling the machine-written code into an application package corresponding to the target platform, the application package being configured to query data from the multidimensional database and generate the target output by executing a different code block of each corresponding mutually exclusive group of the plurality of mutually exclusive groups; as well as The application package is deployed to the target platform for execution on the multidimensional database.
