The subject invention relates generally to multi-dimensional data, and more particularly to automatically updating/structuring multi-dimensional data to facilitate solving business-related problems.
The evolution of computers with respect to memory storage expansion and processing capabilities has enabled massive amounts of data to be accumulated and analyzed by complex and intelligent algorithms. For instance, given an accumulation of data, algorithms can analyze such data and locate patterns therein. These patterns can then be extrapolated from the data, persisted as content of a data mining model or models, and applied within a desired context. With the evolution of computers from simple number-crunching machines to sophisticated devices, services can be provided that range from video/music presentment and customization to data trending and analysis.
Accordingly, tasks that at one time required skilled mathematicians to perform complex operations by hand can now be automated through utilization of computers. In a simplistic example, many individuals, rather then utilizing a skilled accountant to compute their tax liability, simply enter a series of numbers into a computer application and are provided customized tax forms from such application. Furthermore, in a web-related application, the tax forms can be automatically delivered to a government processing service. Thus, by way of utilizing designed algorithms, data can be manipulated to produce a desired result.
As complexity between relationships in data increases, however, it becomes increasingly difficult to generate an output as desired by a user. For instance, multiple relationships can exist between data, and there can be a significant number of manners by which to review and analyze such data. To obtain a desired output from the data, one must have substantial knowledge of content and structure of such data and thereafter generate a complex query to receive this data in a desired manner. Furthermore, if the data must be manipulated to obtain a desirable output, the user must have an ability to generate algorithms necessary to make the required manipulations or outsource the task to a skilled professional. Thus, typically expert computer programmers and/or data analysis experts are needed to properly query a database and apply algorithms to results of these queries. Moreover, if data or relationships therebetween are significantly altered, the expert programmers and/or data analysis experts may have to return and reconfigure a database query and algorithms to manipulate data returned therefrom. Furthermore, if a user or entity desires a disparate output (e.g., desires to modify data analyzed and/or modify data output), then the expert must be summoned yet again to make necessary modifications. Due to complexity and number of relationships between data, these tasks can require a substantial amount of time, even with respect to one of utmost skill. Accordingly, cost, both in monetary terms and in terms of time, can become significant to a user and/or entity, particularly in a business setting, where data must be analyzed and manipulated to create a desired output.
Accordingly, there exists a need in the art for a system and/or methodology that can aid a user and/or entity in generating a desired output from a mutli-dimensional data structure without assistance from an expert.
The following presents a simplified summary of the invention in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is intended to neither identify key or critical elements of the invention nor delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.
The subject invention relates to novel systems and/or methods that enable a user that is not an expert in database manipulation to semi-automatically update a multi-dimensional object within a database to generate a desirable output. This is accomplished by way of providing the user with questions/selectable actions that enable the user to logically navigate through alterations that are to be undertaken with respect to the multi-dimensional object. In accordance with one aspect of the subject invention, updates can occur with respect to a data cube, a dimension related to one or more data cubes, attributes relating to a dimension, properties relating to an attribute, dimension, column, or any other suitable entity that can be associated with a multi-dimensional object (e.g., not simply a relational object).
The questions/selectable actions provided to the user can be obtained from a list of acceptable questions/selectable actions that are supported by underlying code. For instance, upon the user selecting a plurality of actions and/or responding to a series of questions, statements and/or commands can be generated that facilitate updating a multi-dimensional object to enable generation of a desired output. An execution engine receives these statements and/or commands and executes such statements/commands against the multi-dimensional object, causing such object to be manipulated as a function of the user's responses/selections to the presented questions/selectable actions. In accordance with an aspect of the subject invention, the questions/selectable actions can be presented to the user as a function of the user's current perspective of the multi-dimensional object. As an example, if the user is navigating through data relating to currency conversion, then the subject invention can provide the user with questions/selectable actions that assist such user in generating a customized currency conversion output (rather than, for example, providing the user with questions relating to sales analysis).
Various aspects of the subject invention can be applied to business-related problems, as such problems are often associated with disparate desired outputs for different customers. For instance, currency conversion may seem like a simple task where a first currency is multiplied by an exchange rate to enable a conversion to a second currency. In actuality, however, such conversion can be complex in view of disparate data types and variables associated with currency conversion. In one example, a bank may receive data relating to several disparate currencies and desirably convert such currencies into other currencies associated with subsidiaries of such bank. Accordingly, complex mapping may be necessarily undertaken to allow these currencies to be converted. Furthermore, different banks can receive data in different formats. For example, with respect to a first bank, a single data packet can indicate that data therein is associated with a particular currency. With respect to a second bank, however, the data packet provides no indication of a currency; rather, a separate data packet associated therewith provides information relating to the currency.
In accordance with another aspect of the subject invention, the questions/selectable answers provided to a user to assist such user in updating a multi-dimensional object and customizing a resultant output are extensible. For instance, over time business needs can alter. A service provider can update the questions/selectable answers to enable more functionality and a wider variety customized outputs for users of one or more aspects of the subject invention.
To the accomplishment of the foregoing and related ends, the invention then, comprises the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative aspects of the invention. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention may be employed and the subject invention is intended to include all such aspects and their equivalents. Other objects, advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
The subject invention is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject invention. It may be evident, however, that the subject invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject invention.
As used in this application, the terms “component,” “handler,” “model,” “system,” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Also, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems via the signal).
Referring now to the drawings,
Upon receipt of the input, the interface component 102 generates commands to update/alter a multi-dimensional object 104 within a data store 106, and an execution engine 108 receives such commands. For example, the selectable questions and/or actions can be associated with templates that are then employed to generate the aforementioned commands. These templates can be associated with commands that are written in a declarative language, such as SQL or MDX, wherein such commands can set properties, create objects, and generate any suitable changes to the multi-dimensional object 104. The execution engine 108, which can reside on a server system with the data store 106, can then cause occurrence of the alterations as specified by the commands. For example, the multi-dimensional object 104 can be a data cube, which enables users to explore and analyze a collection of data from several various perspectives, usually considering three or more dimensions of the cube (or dimensions relating to the cube) at a single instance of time. Data cubes are multidimensional extensions of relational two-dimensional tables, and can be associated with numerous dimensions (e.g., well over three dimensions). Cubes are extremely useful as they can be indexed as a function of any dimension within the cube. Therefore, the commands can relate to appropriate indexing of a data cube (e.g., in accordance with multiple dimensions), processing of a data cube, and the like. It is understood, however, that the multi-dimensional object can be a dimension that is not owned by a particular data cube, a cell of the dimension, or any other suitable data that relates to the multi-dimensional object 104 (e.g., a data cube).
Upon rendering the appropriate updates as a function of the commands (which themselves are a function of the user input to the interface component 102), a manipulation component 110 can receive the updated multi-dimensional object 104 by way of the execution engine 108. For instance, the commands executed by the execution engine 108 upon the multi-dimensional object 104 can be queries that extract certain data indexed in a particular manner, and the execution engine 108 can cause such extraction. The extracted data can then be delivered to the manipulation component 110 that can use an algorithm or series of algorithms to manipulate the data in accordance with the input received by the interface component 102. Furthermore, the manipulation component 110 can cause alterations in data, properties associated with data, or the like and then store such changes in the data store 106 in connection with the multi-dimensional object 104. In accordance with another aspect of the subject invention, the execution engine 108 can cause updating of the multi-dimensional object 104 and storage of such updates upon the data store 106. Thereafter, the manipulation component 110 can access the multi-dimensional object 104 directly (without utilizing the execution engine 108 as an intermediary). Thus, any suitable obtainment of the updated/altered multi-dimensional object 104 is contemplated by the inventors of the subject invention and intended to fall under the scope of the hereto-appended claims.
To provide context with respect to the system 100 (as well as systems/methodologies described infra), one exemplary utilization of the system 100 is provided herein. A user can implement the system 100 by requesting that an operation be performed upon the multi-dimensional object 104 (e.g., by initiating an application that facilitates updating the multi-dimensional object 104). The interface component 102 can provide a user with a list of questions and/or selectable actions, wherein the user employs input devices such as a keyboard, mouse, microphone, and the like to answer one or more of the questions and/or select one or more of the actions. This input is received by the interface component 102, and other more granular questions and/or selectable actions can be presented to the user. The process of soliciting and receiving increasingly granular input can be continued until the interface component 102 has obtained sufficient information to determine a user's desired output or until the user cancels the process. For instance, the interface component 102 can provide a user with questions relating to currency conversion, where type of conversion and rules relating thereto can be gleaned from user responses to questions and/or selected actions.
The interface component 102 can generate commands in accordance with user responses and/or selected actions and the execution engine 108 can receive these generated commands. Thereafter, the execution engine 108 can update/alter the multi-dimensional object 104 and/or extract data in a manner that accords with the received commands. The updated multi-dimensional object 104 and/or data relating thereto can then be received by the manipulation component 110, and such component 110 can apply algorithms that comport with the responses and/or selected actions input by the user in response to provided questions and/or selectable actions. Thus, for instance, the manipulation component 110 can manipulate extracted (updated) data from the multi-dimensional object 104 and/or the entirety of the multi-dimensional object 104 can be modified to create an output that is desirable to the user (e.g., as a function of the responses and/or the selected actions). Therefore, in accordance with the previously mentioned currency conversion example, the user can generate a customized output with respect to currency conversion without requiring intricate detail with respect to structure and content of the multi-dimensional object 104 and/or expert programming skills.
Turning now to
Upon receiving sufficient information (e.g., a lineage of questions/selectable actions has been traversed), the interface component 202 generates commands as a function of the received input, wherein the commands can be utilized to manipulate the multi-dimensional object 206 and/or extract information from the multi-dimensional object 206. The commands are received by an execution engine 210, and the execution engine 210 can notify the interface component 202 of receipt of such commands. Such an implementation of the system 200 can be beneficial if the execution engine 210 and the interface component 202 reside on disparate machines (e.g., the execution engine 210 is on a server while the interface component 202 is on a client). The execution engine 210 can then execute the commands against the multi-dimensional object 206 to modify such object 206 and/or extract data therefrom. For instance, properties relating to the multi-dimensional object 206 can be altered to modify an indexing thereof, dimensional indexing can be modified, objects relating to the multi-dimensional object 206 an be created, and the like.
A manipulation component 212 can access the modified/updated multi-dimensional object 206 and apply algorithms thereto to generate an output that accords with the input received by the interface component 202. Furthermore, the manipulation component 212 can directly access the multi-dimensional object 206 if a circumstance so calls, rather than accessing the multi-dimensional object 206 by way of the execution engine 210. The manipulation component 212 can thus update and/or modify the multi-dimensional object 206 by applying algorithms that correspond to the input received by the interface component 202 and solicited by the question/selectable action generating component 204. For example, if a user wished to output a currency conversion with certain rules, the manipulation component 212 can effectuate such rules upon the multi-dimensional object 206 being indexed in a desirable manner. Thus, the manipulation component 212 can provide a customized output as a function of the user input.
Now referring to
A context recognition component 308 can assist the question/selectable action generating component 304 in determining which questions/actions from the question list 306 to initially present to the user. For example, the context recognition component 308 can determine a user perspective/context with respect to a multi-dimensional object 310 within a data store 312. For example, if a user is currently viewing the multi-dimensional object with respect to accounting numbers when initiating the interface component 302, the context recognition component 308 will recognize the current view and inform the question/selectable action generating component 304 to provide questions/selectable actions to the user that relate to accounting (and not, for example, currency conversion or time-related sales analysis). Thus, the user will be provided with a list of questions/selectable actions relevant to an output desired by the user, and such user will not be presented with superfluous and undesirable questions/selectable actions. Accordingly, the user will not be confused and/or frustrated with a substantial amount of irrelevant information.
Upon determining an initial question or list of questions and/or action or list of actions, the interface component 302 can present such initial list to a user. The user can respond to a desired question and/or select a desired action, and thereafter (if necessary) the question/selectable action generating component 304 can present additional questions/actions to the user from the question list 306. The context recognition component 308 may not be necessary at this point, as the initial questions/actions can be associated with a chain of related questions/actions to present to the user. The interface component 302, after receiving sufficient information as a function of the questions/selectable actions, can generate commands to update the multi-dimensional object 310 to enable production of an output as desired by the user of the system 300. The commands can be received by an execution engine 314 that executes the commands against the multi-dimensional object 310 and updates such object 310 as a function of the responses to the questions/selected actions. A manipulation component 316 then manipulates the updated multi-dimensional object 310 to produce an output that is desired by a user of the system 300. For instance, a customized view of sales data with respect to time can be output by the manipulation component 316 and presented to the user of the system 300.
Turning now to
As the system 400 obtains input by way of soliciting information through a series of questions and/or selectable actions, the system 400 is desirably extensible given changing user/business needs. Accordingly, the system 400 includes an updating component 414 that receives updated questions, selectable actions, and underlying code to effectuate updating the multi-dimensional object 410 from a service provider 416. For instance, the service provider 416 can be communicatively coupled to the updating component 414 and inform the updating component 414 of questions, actions, and/or code that is available for utilization with the system 400. The updating component 414 can then update the question list 406 with additional questions/selectable actions supported by the system 400. In accordance with one aspect of the subject invention, users can be made aware of new/additional functionality of the system 400 and thereafter be provided with an opportunity to purchase such functionality. Any suitable updating system and/or method, however, is contemplated and intended to fall under the scope of the hereto-appended claims.
Upon receiving requisite input from the user (through responses to questions/selectable actions), the interface component 402 generates commands to update the multi-dimensional object 410. An execution engine 418 receives these commands and executes such commands against the multi-dimensional object 410. Thus, properties can be set, objects can be created, and the like to enable generation of a desired output. Moreover, the commands generated by the interface component 402 can be utilized as a query to extract desired information from the multi-dimensional object 410. This information can then be passed to a manipulation component 420 that utilizes algorithms to alter the received data and generate an output in accordance with the user responses. In accordance with another aspect of the subject invention, the execution engine 418, rather than simply retrieving information, can itself modify the multi-dimensional object 410 and store such modifications within the data store 412. Thereafter, the manipulation component 420, if necessary, can make further modifications to the multi-dimensional object (or data related thereto) and output such modification (if any) to the user.
Referring now to
With respect to the selection of initial questions/actions provided to the user 504, such selection can be provided by way of a question list 508 and aided through utilization of a machine-learning component 510 and a context recognition component 512. For instance, the context recognition component 512 can analyze the user's perspective of a multi-dimensional object (or data therein) and one or more questions from the question list 508 can be provided to the user 504 as a function of such analysis. The machine-learning component 510 can further assist in providing most-pertinent questions/selectable actions to a user. For instance, the machine learning component 510 can watch utilization of the system 500 over time and generate inferences with respect to questions/selectable actions that are to be provided to the user 504.
As used herein, the terms to “infer” or “inference” refer generally to the process of reasoning about or inferring states of a system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Thus, the question/selectable action generating component 506, with aid from the machine-learning component 510, can provide the user 504 with only pertinent questions/actions. In one example, the machine-learning component 510 can monitor the interface component 502 over time and notice patterns of action of the user 504 and/or other users that relate to such user (e.g., users in a substantially similar department of a business). Furthermore, the machine-learning component 510 can delete questions/selectable actions from the question list 508 if the user 504 has, in the recent past, selected such questions/actions (e.g., because it can be inferred that the user 504 will not want to repeat what's previously been done).
Moreover, sequence of questions/selectable actions can be provided to the user 504 with aid from the machine-learning component 510. For instance, the user 504 can, historically, traverse through dimensions of a data cube in a particular order when preparing to undertake a certain task or desiring to generate a specific output. The machine-learning component 510 can watch the user 504 and learn tendencies given disparate user contexts, and inform the question/selectable action generating component 506 to provide the user with a mot pertinent set and/or sequence of questions/actions. In another example, the user 504 can historically first request a currency conversion to be output from the system 500 followed by an analysis of currency converted over particular periods of time. Thus, the machine-learning component 510 can learn these tendencies and inform the question/selectable action generating component 506 to provide the user 504 with particular questions/actions in a certain sequence.
Upon receipt of sufficient information, the interface component 502 generates commands to modify a multi-dimensional object 514 in a manner that enables the system 500 to produce an output in accordance with the received information. In accordance with one aspect of the subject invention, the multi-dimensional object 514 can be a cube, a dimension owned by a cube, data relating to a cube and/or dimension, and the like. Furthermore, the multi-dimensional object 514 can be stored in a data store 516, which can be RAM, ROM, or any other suitable data storage devices and/or formats. An execution engine 518 receives the commands and utilizes such commands to update the multi-dimensional object 514 in accordance with the input provided by the user 504. In accordance with one aspect of the subject invention, the data store 516 that houses the multi-dimensional object 514 and the execution engine 518 can reside together upon a server 520 (or server system).
Upon updating the multi-dimensional object 514 (e.g., adding objects associated therewith, updating properties associated therewith, altering indexing of the multi-dimensional object, . . . ), data necessary to generate a desired output is delivered from the execution engine 518 to a manipulation component 522. The manipulating component 522 can apply algorithms against the data, format the data in a manner suitable for display, and the like. In accordance with another aspect of the subject invention, the manipulation component 522 can package the commands created by the interface component 506, data retrieved by the execution engine 518, and algorithms that acted upon the data to enable the user 504 to complete a substantially similar task at a later time without having to re-input information. This package of data (which can be stored, for example, as an object) can be stored within a data store 524. While the manipulation component 522 is illustrated as storing the packaged data within the data store 524, it is understood that the system 500 can be modified to cause the packaged data to be stored within the data store 516 upon the server 520. After the manipulation component 522 operates on the multi-dimensional object 514 and/or data extracted therefrom by the execution engine 518, it provides a customized output that accords to the responses to the questions/selectable actions to a presentation component 526. The presentation component 526, can be, for example, a graphical user interface (e.g., a computer screen), a printer, speakers, a projector, or any other suitable device that can be utilized to present the output to the user 504. Thus, utilizing the system 500 of the subject invention, the user 504 (not an expert in computer programming) can manipulate the multi-dimensional object 514 and data associated therewith and cause a customized output to be produced.
Now referring to
Now turning solely to
At 606, commands that alter a perspective of at least a portion of the multi-dimensional object are generated as a function of the responses/selections. For example, indexing of the multi-dimensional object can be altered. At 608, the commands are executed against the multi-dimensional object, thereby causing the at least portion of the multi-dimensional object to be altered. At 610, algorithms to execute against the altered multi-dimensional object (or a portion thereof) are selected as a function of the responses/selections to the questions/selectable actions. Thus, for instance, if the methodology 600 were utilized to perform a currency conversion, algorithms relating to currency rates could be applied against disparate currencies. At 612, algorithms are executed against at least the portion of the multi-dimensional object, thereby generating an output that is customized according to responses/selections to the provided questions/selectable actions.
Now turning to
At 706, input is received, wherein the input is user responses/selections to the questions/actions provided to such user. For example, the input can be received by way of keystrokes, voice input, or any other suitable input. At 708, a determination is made regarding whether a sufficient amount of information has been obtained to enable the multi-dimensional object to be updated according to the user's wishes. If there is insufficient information, then at 710 the list of questions/actions is updated as a function of the received responses. For instance, the list of questions/actions can be populated with more granular questions/actions than those previously responded to and/or selected. After the list has been updated, the user answers the questions and/or selects one or more actions, thereby enabling the multi-dimensional object update tool to receive additional user input at 706. The list of questions/actions can be updated and user input can be received until sufficient information is obtained to enable updating of the multi-dimensional object. Once sufficient information is received, at 712 the multi-dimensional object is updated as a function of the responses/selected actions. This updating of the multi-dimensional object enables a user to semi-automatically perform complex data arrangements and calculations to generate a desired output. For instance, customized output relating to currency conversion can be generated through utilization of the methodology 700.
Now Referring to
At 804, responses/selections in accordance with the presented questions/actions are received. In particular, the user can make selections and/or answer questions in a manner that enables generation of an output that is customized for a particular business application. At 806, at least a portion of a multi-dimensional object is altered as a function of the selected actions/responses. For instance, a data cube can be indexed according to the selected actions/responses. At 808, algorithms to apply to the altered multi-dimensional object are selected as a function of the responses/selected actions. For example, if currency conversion is desired, the algorithms can be a simple multiplication algorithm that multiplies a current currency by a particular rate. Other more involved and more complex algorithms are contemplated by the inventors and intended to fall under the scope of the hereto-appended claims. At 810, the commands utilized to alter the perspective are packaged with the algorithms employed at 808, thereby enabling a user to later cause a substantially similar output to be re-generated without having to first respond to a plurality of questions and/or select a plurality of actions. For instance, the commands and algorithms can be packaged in the form of a graphical object, which the user can subsequently select to initiate such commands/algorithms.
Referring now to
Now briefly referring to
Referring solely to
Moreover, some of the actions illustrated can be associated with various properties and availabilities. For instance, the addition of time intelligence can be available with respect to a cube and a dimension therein as well as be available in connection with a sourceless cube. In another example, account intelligence can be added with respect to a cube and/or dimension of a cube, as well as to a sourceless cube and a sourceless dimension. A table is provided below as to how context in which the listing of actions is available.
Referring briefly to
Turning now to
SUM(YTD(<Selected time hierarchy name>.Currentmember), <New Time Intelligence hierarchy name>. [Current of <Selected Time hierarchy>])
This command enables a user to view data in an accumulated view from the first day of the year until the current day. The other selectable actions include statements/commands/algorithms that enable data to be viewed accordingly. For instance, selecting “Rolling YTD” would enable data to be viewed from a day one year in the past to a current day. Further, multiple calculations can be selected from the field 1206, and a measure can be created and populated within a created or modified time-dimension as a function of such selected calculations.
In accordance with one aspect of the subject invention, measures (not shown) can be selected prior to (or after) a user choosing a desired calculation. For instance, due to constraints associated with a calculation engine, the measures can be divided into two disparate groups: physical measures and calculated measures. An exemplary listing of such divided measures is provided below:
Physical Measures Selected
To further the above example, various time-related calculations can be effectuated against selected measures. For instance, year-to-date calculations, six-month moving average calculations, year over year growth calculations, and year over year growth percentage calculations can be chosen from the field 1206 to operate over the selected measures (described above). To initiate the calculations, a member of a multi-dimensional structure (e.g., a data cube) can be created, named, and assigned a null value (so that such value can be modified at a later instance of time). Thereafter, defined calculations can be operated against the selected measures, and the measures created relating to the calculations can be populated.
In accordance with another aspect of the subject invention, the physical measures selected can be placed within a grouping, wherein calculations are limited to such grouping. Due to engine constraints, however, the selected calculated measures may be specified with respect to each calculation involving such measures (although the specification can be done automatically upon selection of the measures). Such separation of physical measures and calculated measures does not affect functionality, but rather only affects code underlying the exemplary user interface 1202. The aforementioned calculation relating to year-to-date calculations, effectuated in MDX against a particular dimension, hierarchy, and member, with respect to selected measures is provided below.
The “scope” statement selects all physical measures with respect to which the calculation is to be undertaken upon. Thereafter, a member ([Year to Date]) of a selected hierarchy ([Time Calculations]) of a dimension ([Time]) is written to with respect to the measures in the “scope” statement and selected calculated measures. An aggregation function is then utilized to obtain data from appropriate locations within the multi-dimensional structure to complete a year to date calculation. Results can then be stored in the specified member ([Year to Date]).
Another exemplary calculation (six month moving average) undertaken in MDX with respect to a data cube is provided herein to further illustrate an exemplary embodiment associated with the subject invention with respect to calculating a time dimension. It is understood, however, that this calculation is merely one manner to calculate a time dimension with respect to a defined calculation, and other means of performing and storing such calculation are contemplated.
End Scope;
For sake of brevity, additional exemplary calculations are not provided, but a structure of such calculations can be deduced from the above examples and known mathematics underlying such calculations.
Referring now to
As a further example, if the radio button 1304 is selected and an account dimension is located and selected, then a determination can be made regarding whether there are any restrictions associated with the statements (e.g., formula) to be applied to the account dimension. If there is such a restriction, then the following exemplary MDX statements can be added around the formula for each time view that is associated with a restriction.
Iif(<Account dim name>. Currentmember.Properties(<Account type attribute name>) IS
<Mapped Applyto Restriction 1> OR <Account dim name>.Currentmember.Properties(<Account type attribute name>) IS <Mapped Applyto 2> OR <Account dim name>. Currentmember.Properties(<Account type attribute name>) IS <Mapped Applyto restriction 3> . . . , FORMULA, <New Time intelligence hierarchy name>. [<DefaultTimeViewCalculatedMemberName>])
In particular, the system of the subject invention can read restrictions from an XML “ApplyTo” tag list, and map system-defined account types with a user defined account type. A lookup table or the like can be employed to perform this mapping, and a mapped user account type can be inserted into the exemplary MDX statement as FORMULA.
In another example, if specific individual members are selected by the user from the field 1310 by way of the radio button 1306, then the system can exclude unselected members prior to applying a formula as illustrated with respect to
Iif(Measures. Currentmember IS <First excluded measure> OR Measures. Currentmember IS <Second excluded measure> OR Measures. Currentmember IS <Next excluded measure> OR . . . , <New Time intelligence hierarchy name>.[<DefaultTimeViewCalculatedMemberName>], FORMULA)
Upon making the appropriate selections, one or more aspects of the subject invention can be employed to generate new time-related views. For instance, a time hierarchy can be built, wherein the hierarchy includes members representing one of the views selected by the user in addition to a selected or appropriate hierarchy. Upon selecting one or more measures from the field 1310 (or selecting one or more dimensions that include at least one measure), one or more calculations selected and described with respect to
Now turning briefly to
Turning now to
Now referring briefly to
Turning now to
Referring now to
Turning now to
Turning now to
Now referring to
Now referring to
Now referring to
Now turning to
Referring now to
Turning now to
Referring to
Turning now to
Now turning to
Turning now to
Now referring to
Turning to
In order to provide additional context for various aspects of the subject invention,
Generally, however, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular data types. The operating environment 4010 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Other well known computer systems, environments, and/or configurations that may be suitable for use with the invention include but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include the above systems or devices, and the like.
With reference to
The system bus 4018 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 8-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 4016 includes volatile memory 4020 and nonvolatile memory 4022. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 4012, such as during start-up, is stored in nonvolatile memory 4022. By way of illustration, and not limitation, nonvolatile memory 4022 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 4020 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
Computer 4012 also includes removable/nonremovable, volatile/nonvolatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 4012 through input device(s) 4036. Input devices 4036 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 4014 through the system bus 4018 via interface port(s) 4038. Interface port(s) 4038 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 4040 use some of the same type of ports as input device(s) 4036. Thus, for example, a USB port may be used to provide input to computer 4012, and to output information from computer 4012 to an output device 4040. Output adapter 4042 is provided to illustrate that there are some output devices 4040 like monitors, speakers, and printers among other output devices 4040 that require special adapters. The output adapters 4042 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 4040 and the system bus 4018. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 4044.
Computer 4012 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 4044. The remote computer(s) 4044 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 4012. For purposes of brevity, only a memory storage device 4046 is illustrated with remote computer(s) 4044. Remote computer(s) 4044 is logically connected to computer 4012 through a network interface 4048 and then physically connected via communication connection 4050. Network interface 4048 encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 4050 refers to the hardware/software employed to connect the network interface 4048 to the bus 4018. While communication connection 4050 is shown for illustrative clarity inside computer 4012, it can also be external to computer 4012. The hardware/software necessary for connection to the network interface 4048 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
What has been described above includes examples of the subject invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject invention are possible. Accordingly, the subject invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
This application claims the benefit of U.S. Provisional Application Ser. No. 60/586,644 filed on Jul. 9, 2004, and entitled SYSTEMS AND METHODS THAT FACILITATE SOLVING BUSINESS PROBLEMS, and is related to U.S. patent application Ser. No. ______, filed on Feb. 9, 2005. The entireties of these applications are incorporated herein by reference. This application is also related to U.S. patent application Ser. No. ______, filed on ______.
Number | Date | Country | |
---|---|---|---|
60586644 | Jul 2004 | US |